10#error "Never use <amxavx512intrin.h> directly; include <immintrin.h> instead."
13#ifndef __AMX_AVX512INTRIN_H
14#define __AMX_AVX512INTRIN_H
15#if defined(__x86_64__) && defined(__SSE2__)
17#define __DEFAULT_FN_ATTRS_AVX512 \
18 __attribute__((__always_inline__, __nodebug__, \
19 __target__("amx-avx512,avx10.2"), __min_vector_width__(512)))
55#define _tile_cvtrowd2ps(tsrc, row) __builtin_ia32_tcvtrowd2ps(tsrc, row)
91#define _tile_cvtrowd2psi(tsrc, imm8) __builtin_ia32_tcvtrowd2psi(tsrc, imm8)
129#define _tile_cvtrowps2bf16h(tsrc, row) \
130 __builtin_ia32_tcvtrowps2bf16h(tsrc, row)
168#define _tile_cvtrowps2bf16hi(tsrc, imm8) \
169 __builtin_ia32_tcvtrowps2bf16hi(tsrc, imm8)
207#define _tile_cvtrowps2bf16l(tsrc, row) \
208 __builtin_ia32_tcvtrowps2bf16l(tsrc, row)
246#define _tile_cvtrowps2bf16li(tsrc, imm8) \
247 __builtin_ia32_tcvtrowps2bf16li(tsrc, imm8)
285#define _tile_cvtrowps2phh(tsrc, row) __builtin_ia32_tcvtrowps2phh(tsrc, row)
323#define _tile_cvtrowps2phhi(tsrc, imm8) \
324 __builtin_ia32_tcvtrowps2phhi(tsrc, imm8)
362#define _tile_cvtrowps2phl(tsrc, row) __builtin_ia32_tcvtrowps2phl(tsrc, row)
400#define _tile_cvtrowps2phli(tsrc, imm8) \
401 __builtin_ia32_tcvtrowps2phli(tsrc, imm8)
436#define _tile_movrow(a, b) ((__m512i)__builtin_ia32_tilemovrow(a, b))
471#define _tile_movrowi(a, b) ((__m512i)__builtin_ia32_tilemovrowi(a, b))
475static __inline__ __m512 __DEFAULT_FN_ATTRS_AVX512 _tile_cvtrowd2ps_internal(
476 unsigned short m,
unsigned short n, _tile1024i src,
unsigned u) {
477 return __builtin_ia32_tcvtrowd2ps_internal(m, n, src, u);
480static __inline__ __m512bh __DEFAULT_FN_ATTRS_AVX512
481_tile_cvtrowps2bf16h_internal(
unsigned short m,
unsigned short n,
482 _tile1024i src,
unsigned u) {
483 return __builtin_ia32_tcvtrowps2bf16h_internal(m, n, src, u);
486static __inline__ __m512bh __DEFAULT_FN_ATTRS_AVX512
487_tile_cvtrowps2bf16l_internal(
unsigned short m,
unsigned short n,
488 _tile1024i src,
unsigned u) {
489 return __builtin_ia32_tcvtrowps2bf16l_internal(m, n, src, u);
492static __inline__ __m512h __DEFAULT_FN_ATTRS_AVX512 _tile_cvtrowps2phh_internal(
493 unsigned short m,
unsigned short n, _tile1024i src,
unsigned u) {
494 return __builtin_ia32_tcvtrowps2phh_internal(m, n, src, u);
497static __inline__ __m512h __DEFAULT_FN_ATTRS_AVX512 _tile_cvtrowps2phl_internal(
498 unsigned short m,
unsigned short n, _tile1024i src,
unsigned u) {
499 return __builtin_ia32_tcvtrowps2phl_internal(m, n, src, u);
502static __inline__ __m512i __DEFAULT_FN_ATTRS_AVX512 _tile_movrow_internal(
503 unsigned short m,
unsigned short n, _tile1024i src,
unsigned u) {
504 return (__m512i)__builtin_ia32_tilemovrow_internal(m, n, src, u);
522__DEFAULT_FN_ATTRS_AVX512
523static __m512 __tile_cvtrowd2ps(__tile1024i src0,
unsigned src1) {
524 return _tile_cvtrowd2ps_internal(src0.row, src0.col, src0.tile, src1);
541__DEFAULT_FN_ATTRS_AVX512
542static __m512bh __tile_cvtrowps2bf16h(__tile1024i src0,
unsigned src1) {
543 return _tile_cvtrowps2bf16h_internal(src0.row, src0.col, src0.tile, src1);
560__DEFAULT_FN_ATTRS_AVX512
561static __m512bh __tile_cvtrowps2bf16l(__tile1024i src0,
unsigned src1) {
562 return _tile_cvtrowps2bf16l_internal(src0.row, src0.col, src0.tile, src1);
579__DEFAULT_FN_ATTRS_AVX512
580static __m512h __tile_cvtrowps2phh(__tile1024i src0,
unsigned src1) {
581 return _tile_cvtrowps2phh_internal(src0.row, src0.col, src0.tile, src1);
598__DEFAULT_FN_ATTRS_AVX512
599static __m512h __tile_cvtrowps2phl(__tile1024i src0,
unsigned src1) {
600 return _tile_cvtrowps2phl_internal(src0.row, src0.col, src0.tile, src1);
616__DEFAULT_FN_ATTRS_AVX512
617static __m512i __tile_movrow(__tile1024i src0,
unsigned src1) {
618 return (__m512i)_tile_movrow_internal(src0.row, src0.col, src0.tile, src1);