Skip to content

Commit 58a17e1

Browse files
authored
[X86][AMX] Support AMX-AVX512 (#114070)
1 parent b9dd602 commit 58a17e1

31 files changed

+1567
-12
lines changed

clang/docs/ReleaseNotes.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -723,6 +723,7 @@ X86 Support
723723
* Supported intrinsics of ``_mm(256|512)_(mask(z))_loadrs_epi(8|16|32|64)``.
724724
- Support ISA of ``AMX-FP8``.
725725
- Support ISA of ``AMX-TRANSPOSE``.
726+
- Support ISA of ``AMX-AVX512``.
726727

727728
Arm and AArch64 Support
728729
^^^^^^^^^^^^^^^^^^^^^^^

clang/include/clang/Basic/BuiltinsX86_64.def

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,12 @@ TARGET_BUILTIN(__builtin_ia32_t2rpntlvwz0t1_internal, "vUsUsUsV256i*V256i*vC*z",
133133
TARGET_BUILTIN(__builtin_ia32_t2rpntlvwz1_internal, "vUsUsUsV256i*V256i*vC*z", "n", "amx-transpose")
134134
TARGET_BUILTIN(__builtin_ia32_t2rpntlvwz1t1_internal, "vUsUsUsV256i*V256i*vC*z", "n", "amx-transpose")
135135
TARGET_BUILTIN(__builtin_ia32_ttransposed_internal, "V256iUsUsV256i", "n", "amx-transpose")
136+
TARGET_BUILTIN(__builtin_ia32_tcvtrowd2ps_internal, "V16fUsUsV256iUi", "n", "amx-avx512,avx10.2-512")
137+
TARGET_BUILTIN(__builtin_ia32_tcvtrowps2pbf16h_internal, "V32yUsUsV256iUi", "n", "amx-avx512,avx10.2-512")
138+
TARGET_BUILTIN(__builtin_ia32_tcvtrowps2pbf16l_internal, "V32yUsUsV256iUi", "n", "amx-avx512,avx10.2-512")
139+
TARGET_BUILTIN(__builtin_ia32_tcvtrowps2phh_internal, "V32xUsUsV256iUi", "n", "amx-avx512,avx10.2-512")
140+
TARGET_BUILTIN(__builtin_ia32_tcvtrowps2phl_internal, "V32xUsUsV256iUi", "n", "amx-avx512,avx10.2-512")
141+
TARGET_BUILTIN(__builtin_ia32_tilemovrow_internal, "V16iUsUsV256iUi", "n", "amx-avx512,avx10.2-512")
136142
// AMX
137143
TARGET_BUILTIN(__builtin_ia32_tile_loadconfig, "vvC*", "n", "amx-tile")
138144
TARGET_BUILTIN(__builtin_ia32_tile_storeconfig, "vvC*", "n", "amx-tile")
@@ -159,6 +165,13 @@ TARGET_BUILTIN(__builtin_ia32_t2rpntlvwz1, "vIUcvC*z", "n", "amx-transpose")
159165
TARGET_BUILTIN(__builtin_ia32_t2rpntlvwz1t1, "vIUcvC*z", "n","amx-transpose")
160166
TARGET_BUILTIN(__builtin_ia32_ttransposed, "vIUcIUc", "n", "amx-transpose")
161167

168+
TARGET_BUILTIN(__builtin_ia32_tcvtrowd2ps, "V16fIUcUi", "n", "amx-avx512,avx10.2-512")
169+
TARGET_BUILTIN(__builtin_ia32_tcvtrowps2pbf16h, "V32yIUcUi", "n", "amx-avx512,avx10.2-512")
170+
TARGET_BUILTIN(__builtin_ia32_tcvtrowps2pbf16l, "V32yIUcUi", "n", "amx-avx512,avx10.2-512")
171+
TARGET_BUILTIN(__builtin_ia32_tcvtrowps2phh, "V32xIUcUi", "n", "amx-avx512,avx10.2-512")
172+
TARGET_BUILTIN(__builtin_ia32_tcvtrowps2phl, "V32xIUcUi", "n", "amx-avx512,avx10.2-512")
173+
TARGET_BUILTIN(__builtin_ia32_tilemovrow, "V16iIUcUi", "n", "amx-avx512,avx10.2-512")
174+
162175
TARGET_BUILTIN(__builtin_ia32_prefetchi, "vvC*Ui", "nc", "prefetchi")
163176
TARGET_BUILTIN(__builtin_ia32_cmpccxadd32, "Siv*SiSiIi", "n", "cmpccxadd")
164177
TARGET_BUILTIN(__builtin_ia32_cmpccxadd64, "SLLiSLLi*SLLiSLLiIi", "n", "cmpccxadd")

clang/include/clang/Driver/Options.td

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6285,6 +6285,8 @@ def mno_80387 : Flag<["-"], "mno-80387">, Alias<mno_x87>;
62856285
def mno_fp_ret_in_387 : Flag<["-"], "mno-fp-ret-in-387">, Alias<mno_x87>;
62866286
def mmmx : Flag<["-"], "mmmx">, Group<m_x86_Features_Group>;
62876287
def mno_mmx : Flag<["-"], "mno-mmx">, Group<m_x86_Features_Group>;
6288+
def mamx_avx512 : Flag<["-"], "mamx-avx512">, Group<m_x86_Features_Group>;
6289+
def mno_amx_avx512 : Flag<["-"], "mno-amx-avx512">, Group<m_x86_Features_Group>;
62886290
def mamx_bf16 : Flag<["-"], "mamx-bf16">, Group<m_x86_Features_Group>;
62896291
def mno_amx_bf16 : Flag<["-"], "mno-amx-bf16">, Group<m_x86_Features_Group>;
62906292
def mamx_complex : Flag<["-"], "mamx-complex">, Group<m_x86_Features_Group>;

clang/lib/Basic/Targets/X86.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,8 @@ bool X86TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
432432
HasAMXFP8 = true;
433433
} else if (Feature == "+amx-transpose") {
434434
HasAMXTRANSPOSE = true;
435+
} else if (Feature == "+amx-avx512") {
436+
HasAMXAVX512 = true;
435437
} else if (Feature == "+cmpccxadd") {
436438
HasCMPCCXADD = true;
437439
} else if (Feature == "+raoint") {
@@ -955,6 +957,8 @@ void X86TargetInfo::getTargetDefines(const LangOptions &Opts,
955957
Builder.defineMacro("__AMX_FP8__");
956958
if (HasAMXTRANSPOSE)
957959
Builder.defineMacro("__AMX_TRANSPOSE__");
960+
if (HasAMXAVX512)
961+
Builder.defineMacro("__AMX_AVX512__");
958962
if (HasCMPCCXADD)
959963
Builder.defineMacro("__CMPCCXADD__");
960964
if (HasRAOINT)
@@ -1080,6 +1084,7 @@ bool X86TargetInfo::isValidFeatureName(StringRef Name) const {
10801084
return llvm::StringSwitch<bool>(Name)
10811085
.Case("adx", true)
10821086
.Case("aes", true)
1087+
.Case("amx-avx512", true)
10831088
.Case("amx-bf16", true)
10841089
.Case("amx-complex", true)
10851090
.Case("amx-fp16", true)
@@ -1200,6 +1205,7 @@ bool X86TargetInfo::hasFeature(StringRef Feature) const {
12001205
return llvm::StringSwitch<bool>(Feature)
12011206
.Case("adx", HasADX)
12021207
.Case("aes", HasAES)
1208+
.Case("amx-avx512", HasAMXAVX512)
12031209
.Case("amx-bf16", HasAMXBF16)
12041210
.Case("amx-complex", HasAMXCOMPLEX)
12051211
.Case("amx-fp16", HasAMXFP16)

clang/lib/Basic/Targets/X86.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ class LLVM_LIBRARY_VISIBILITY X86TargetInfo : public TargetInfo {
159159
bool HasAMXCOMPLEX = false;
160160
bool HasAMXFP8 = false;
161161
bool HasAMXTRANSPOSE = false;
162+
bool HasAMXAVX512 = false;
162163
bool HasSERIALIZE = false;
163164
bool HasTSXLDTRK = false;
164165
bool HasUSERMSR = false;

clang/lib/Headers/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ set(x86_files
146146
adcintrin.h
147147
adxintrin.h
148148
ammintrin.h
149+
amxavx512intrin.h
149150
amxcomplexintrin.h
150151
amxfp16intrin.h
151152
amxfp8intrin.h

0 commit comments

Comments
 (0)