Skip to content

Commit aa4069e

Browse files
authored
Revert "[X86] Remove knl/knm specific ISAs supports (#92883)" (#93123)
This reverts commit 282d2ab.
1 parent 282d2ab commit aa4069e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+1626
-118
lines changed

clang/docs/ReleaseNotes.rst

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -801,8 +801,6 @@ AMDGPU Support
801801
X86 Support
802802
^^^^^^^^^^^
803803

804-
- Remove knl/knm specific ISA supports: AVX512PF, AVX512ER, PREFETCHWT1
805-
806804
Arm and AArch64 Support
807805
^^^^^^^^^^^^^^^^^^^^^^^
808806

clang/include/clang/Basic/BuiltinsX86.def

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -832,11 +832,23 @@ TARGET_BUILTIN(__builtin_ia32_rsqrt14ss_mask, "V4fV4fV4fV4fUc", "ncV:128:", "avx
832832
TARGET_BUILTIN(__builtin_ia32_rsqrt14pd512_mask, "V8dV8dV8dUc", "ncV:512:", "avx512f,evex512")
833833
TARGET_BUILTIN(__builtin_ia32_rsqrt14ps512_mask, "V16fV16fV16fUs", "ncV:512:", "avx512f,evex512")
834834

835+
TARGET_BUILTIN(__builtin_ia32_rsqrt28sd_round_mask, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512er")
836+
TARGET_BUILTIN(__builtin_ia32_rsqrt28ss_round_mask, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512er")
837+
TARGET_BUILTIN(__builtin_ia32_rsqrt28pd_mask, "V8dV8dV8dUcIi", "ncV:512:", "avx512er,evex512")
838+
TARGET_BUILTIN(__builtin_ia32_rsqrt28ps_mask, "V16fV16fV16fUsIi", "ncV:512:", "avx512er,evex512")
839+
835840
TARGET_BUILTIN(__builtin_ia32_rcp14sd_mask, "V2dV2dV2dV2dUc", "ncV:128:", "avx512f")
836841
TARGET_BUILTIN(__builtin_ia32_rcp14ss_mask, "V4fV4fV4fV4fUc", "ncV:128:", "avx512f")
837842
TARGET_BUILTIN(__builtin_ia32_rcp14pd512_mask, "V8dV8dV8dUc", "ncV:512:", "avx512f,evex512")
838843
TARGET_BUILTIN(__builtin_ia32_rcp14ps512_mask, "V16fV16fV16fUs", "ncV:512:", "avx512f,evex512")
839844

845+
TARGET_BUILTIN(__builtin_ia32_rcp28sd_round_mask, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512er")
846+
TARGET_BUILTIN(__builtin_ia32_rcp28ss_round_mask, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512er")
847+
TARGET_BUILTIN(__builtin_ia32_rcp28pd_mask, "V8dV8dV8dUcIi", "ncV:512:", "avx512er,evex512")
848+
TARGET_BUILTIN(__builtin_ia32_rcp28ps_mask, "V16fV16fV16fUsIi", "ncV:512:", "avx512er,evex512")
849+
TARGET_BUILTIN(__builtin_ia32_exp2pd_mask, "V8dV8dV8dUcIi", "ncV:512:", "avx512er,evex512")
850+
TARGET_BUILTIN(__builtin_ia32_exp2ps_mask, "V16fV16fV16fUsIi", "ncV:512:", "avx512er,evex512")
851+
840852
TARGET_BUILTIN(__builtin_ia32_cvttps2dq512_mask, "V16iV16fV16iUsIi", "ncV:512:", "avx512f,evex512")
841853
TARGET_BUILTIN(__builtin_ia32_cvttps2udq512_mask, "V16iV16fV16iUsIi", "ncV:512:", "avx512f,evex512")
842854
TARGET_BUILTIN(__builtin_ia32_cvttpd2dq512_mask, "V8iV8dV8iUcIi", "ncV:512:", "avx512f,evex512")
@@ -948,6 +960,15 @@ TARGET_BUILTIN(__builtin_ia32_scattersiv16si, "vv*UsV16iV16iIi", "nV:512:", "avx
948960
TARGET_BUILTIN(__builtin_ia32_scatterdiv8di, "vv*UcV8OiV8OiIi", "nV:512:", "avx512f,evex512")
949961
TARGET_BUILTIN(__builtin_ia32_scatterdiv16si, "vv*UcV8OiV8iIi", "nV:512:", "avx512f,evex512")
950962

963+
TARGET_BUILTIN(__builtin_ia32_gatherpfdpd, "vUcV8ivC*IiIi", "nV:512:", "avx512pf,evex512")
964+
TARGET_BUILTIN(__builtin_ia32_gatherpfdps, "vUsV16ivC*IiIi", "nV:512:", "avx512pf,evex512")
965+
TARGET_BUILTIN(__builtin_ia32_gatherpfqpd, "vUcV8OivC*IiIi", "nV:512:", "avx512pf,evex512")
966+
TARGET_BUILTIN(__builtin_ia32_gatherpfqps, "vUcV8OivC*IiIi", "nV:512:", "avx512pf,evex512")
967+
TARGET_BUILTIN(__builtin_ia32_scatterpfdpd, "vUcV8iv*IiIi", "nV:512:", "avx512pf,evex512")
968+
TARGET_BUILTIN(__builtin_ia32_scatterpfdps, "vUsV16iv*IiIi", "nV:512:", "avx512pf,evex512")
969+
TARGET_BUILTIN(__builtin_ia32_scatterpfqpd, "vUcV8Oiv*IiIi", "nV:512:", "avx512pf,evex512")
970+
TARGET_BUILTIN(__builtin_ia32_scatterpfqps, "vUcV8Oiv*IiIi", "nV:512:", "avx512pf,evex512")
971+
951972
TARGET_BUILTIN(__builtin_ia32_knotqi, "UcUc", "nc", "avx512dq")
952973
TARGET_BUILTIN(__builtin_ia32_knothi, "UsUs", "nc", "avx512f")
953974
TARGET_BUILTIN(__builtin_ia32_knotsi, "UiUi", "nc", "avx512bw")

clang/include/clang/Basic/DiagnosticCommonKinds.td

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,9 @@ def warn_invalid_feature_combination : Warning<
361361
def warn_target_unrecognized_env : Warning<
362362
"mismatch between architecture and environment in target triple '%0'; did you mean '%1'?">,
363363
InGroup<InvalidCommandLineArgument>;
364+
def warn_knl_knm_isa_support_removed : Warning<
365+
"KNL, KNM related Intel Xeon Phi CPU's specific ISA's supports will be removed in LLVM 19.">,
366+
InGroup<DiagGroup<"knl-knm-isa-support-removed">>;
364367
def err_target_unsupported_abi_with_fpu : Error<
365368
"'%0' ABI is not supported with FPU">;
366369

clang/include/clang/Driver/Options.td

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6111,10 +6111,14 @@ def mavx512cd : Flag<["-"], "mavx512cd">, Group<m_x86_Features_Group>;
61116111
def mno_avx512cd : Flag<["-"], "mno-avx512cd">, Group<m_x86_Features_Group>;
61126112
def mavx512dq : Flag<["-"], "mavx512dq">, Group<m_x86_Features_Group>;
61136113
def mno_avx512dq : Flag<["-"], "mno-avx512dq">, Group<m_x86_Features_Group>;
6114+
def mavx512er : Flag<["-"], "mavx512er">, Group<m_x86_Features_Group>;
6115+
def mno_avx512er : Flag<["-"], "mno-avx512er">, Group<m_x86_Features_Group>;
61146116
def mavx512fp16 : Flag<["-"], "mavx512fp16">, Group<m_x86_Features_Group>;
61156117
def mno_avx512fp16 : Flag<["-"], "mno-avx512fp16">, Group<m_x86_Features_Group>;
61166118
def mavx512ifma : Flag<["-"], "mavx512ifma">, Group<m_x86_Features_Group>;
61176119
def mno_avx512ifma : Flag<["-"], "mno-avx512ifma">, Group<m_x86_Features_Group>;
6120+
def mavx512pf : Flag<["-"], "mavx512pf">, Group<m_x86_Features_Group>;
6121+
def mno_avx512pf : Flag<["-"], "mno-avx512pf">, Group<m_x86_Features_Group>;
61186122
def mavx512vbmi : Flag<["-"], "mavx512vbmi">, Group<m_x86_Features_Group>;
61196123
def mno_avx512vbmi : Flag<["-"], "mno-avx512vbmi">, Group<m_x86_Features_Group>;
61206124
def mavx512vbmi2 : Flag<["-"], "mavx512vbmi2">, Group<m_x86_Features_Group>;
@@ -6205,6 +6209,8 @@ def mpopcnt : Flag<["-"], "mpopcnt">, Group<m_x86_Features_Group>;
62056209
def mno_popcnt : Flag<["-"], "mno-popcnt">, Group<m_x86_Features_Group>;
62066210
def mprefetchi : Flag<["-"], "mprefetchi">, Group<m_x86_Features_Group>;
62076211
def mno_prefetchi : Flag<["-"], "mno-prefetchi">, Group<m_x86_Features_Group>;
6212+
def mprefetchwt1 : Flag<["-"], "mprefetchwt1">, Group<m_x86_Features_Group>;
6213+
def mno_prefetchwt1 : Flag<["-"], "mno-prefetchwt1">, Group<m_x86_Features_Group>;
62086214
def mprfchw : Flag<["-"], "mprfchw">, Group<m_x86_Features_Group>;
62096215
def mno_prfchw : Flag<["-"], "mno-prfchw">, Group<m_x86_Features_Group>;
62106216
def mptwrite : Flag<["-"], "mptwrite">, Group<m_x86_Features_Group>;

clang/lib/Basic/Targets/X86.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,9 +310,15 @@ bool X86TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
310310
HasAVX512VNNI = true;
311311
} else if (Feature == "+avx512bf16") {
312312
HasAVX512BF16 = true;
313+
} else if (Feature == "+avx512er") {
314+
HasAVX512ER = true;
315+
Diags.Report(diag::warn_knl_knm_isa_support_removed);
313316
} else if (Feature == "+avx512fp16") {
314317
HasAVX512FP16 = true;
315318
HasLegalHalfType = true;
319+
} else if (Feature == "+avx512pf") {
320+
HasAVX512PF = true;
321+
Diags.Report(diag::warn_knl_knm_isa_support_removed);
316322
} else if (Feature == "+avx512dq") {
317323
HasAVX512DQ = true;
318324
} else if (Feature == "+avx512bitalg") {
@@ -369,6 +375,9 @@ bool X86TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
369375
HasWBNOINVD = true;
370376
} else if (Feature == "+prefetchi") {
371377
HasPREFETCHI = true;
378+
} else if (Feature == "+prefetchwt1") {
379+
HasPREFETCHWT1 = true;
380+
Diags.Report(diag::warn_knl_knm_isa_support_removed);
372381
} else if (Feature == "+clzero") {
373382
HasCLZERO = true;
374383
} else if (Feature == "+cldemote") {
@@ -831,8 +840,12 @@ void X86TargetInfo::getTargetDefines(const LangOptions &Opts,
831840
Builder.defineMacro("__AVX512VNNI__");
832841
if (HasAVX512BF16)
833842
Builder.defineMacro("__AVX512BF16__");
843+
if (HasAVX512ER)
844+
Builder.defineMacro("__AVX512ER__");
834845
if (HasAVX512FP16)
835846
Builder.defineMacro("__AVX512FP16__");
847+
if (HasAVX512PF)
848+
Builder.defineMacro("__AVX512PF__");
836849
if (HasAVX512DQ)
837850
Builder.defineMacro("__AVX512DQ__");
838851
if (HasAVX512BITALG)
@@ -884,6 +897,8 @@ void X86TargetInfo::getTargetDefines(const LangOptions &Opts,
884897
Builder.defineMacro("__SM4__");
885898
if (HasPREFETCHI)
886899
Builder.defineMacro("__PREFETCHI__");
900+
if (HasPREFETCHWT1)
901+
Builder.defineMacro("__PREFETCHWT1__");
887902
if (HasCLZERO)
888903
Builder.defineMacro("__CLZERO__");
889904
if (HasKL)
@@ -1069,7 +1084,9 @@ bool X86TargetInfo::isValidFeatureName(StringRef Name) const {
10691084
.Case("avx512vpopcntdq", true)
10701085
.Case("avx512vnni", true)
10711086
.Case("avx512bf16", true)
1087+
.Case("avx512er", true)
10721088
.Case("avx512fp16", true)
1089+
.Case("avx512pf", true)
10731090
.Case("avx512dq", true)
10741091
.Case("avx512bitalg", true)
10751092
.Case("avx512bw", true)
@@ -1117,6 +1134,7 @@ bool X86TargetInfo::isValidFeatureName(StringRef Name) const {
11171134
.Case("pku", true)
11181135
.Case("popcnt", true)
11191136
.Case("prefetchi", true)
1137+
.Case("prefetchwt1", true)
11201138
.Case("prfchw", true)
11211139
.Case("ptwrite", true)
11221140
.Case("raoint", true)
@@ -1183,7 +1201,9 @@ bool X86TargetInfo::hasFeature(StringRef Feature) const {
11831201
.Case("avx512vpopcntdq", HasAVX512VPOPCNTDQ)
11841202
.Case("avx512vnni", HasAVX512VNNI)
11851203
.Case("avx512bf16", HasAVX512BF16)
1204+
.Case("avx512er", HasAVX512ER)
11861205
.Case("avx512fp16", HasAVX512FP16)
1206+
.Case("avx512pf", HasAVX512PF)
11871207
.Case("avx512dq", HasAVX512DQ)
11881208
.Case("avx512bitalg", HasAVX512BITALG)
11891209
.Case("avx512bw", HasAVX512BW)
@@ -1233,6 +1253,7 @@ bool X86TargetInfo::hasFeature(StringRef Feature) const {
12331253
.Case("pku", HasPKU)
12341254
.Case("popcnt", HasPOPCNT)
12351255
.Case("prefetchi", HasPREFETCHI)
1256+
.Case("prefetchwt1", HasPREFETCHWT1)
12361257
.Case("prfchw", HasPRFCHW)
12371258
.Case("ptwrite", HasPTWRITE)
12381259
.Case("raoint", HasRAOINT)

clang/lib/Basic/Targets/X86.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ class LLVM_LIBRARY_VISIBILITY X86TargetInfo : public TargetInfo {
103103
bool HasAVX512VNNI = false;
104104
bool HasAVX512FP16 = false;
105105
bool HasAVX512BF16 = false;
106+
bool HasAVX512ER = false;
107+
bool HasAVX512PF = false;
106108
bool HasAVX512DQ = false;
107109
bool HasAVX512BITALG = false;
108110
bool HasAVX512BW = false;
@@ -134,6 +136,7 @@ class LLVM_LIBRARY_VISIBILITY X86TargetInfo : public TargetInfo {
134136
bool HasCLWB = false;
135137
bool HasMOVBE = false;
136138
bool HasPREFETCHI = false;
139+
bool HasPREFETCHWT1 = false;
137140
bool HasRDPID = false;
138141
bool HasRDPRU = false;
139142
bool HasRetpolineExternalThunk = false;

clang/lib/Headers/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,10 +153,12 @@ set(x86_files
153153
avx512bwintrin.h
154154
avx512cdintrin.h
155155
avx512dqintrin.h
156+
avx512erintrin.h
156157
avx512fintrin.h
157158
avx512fp16intrin.h
158159
avx512ifmaintrin.h
159160
avx512ifmavlintrin.h
161+
avx512pfintrin.h
160162
avx512vbmi2intrin.h
161163
avx512vbmiintrin.h
162164
avx512vbmivlintrin.h

0 commit comments

Comments
 (0)