diff --git a/clang/lib/Basic/Targets/X86.cpp b/clang/lib/Basic/Targets/X86.cpp --- a/clang/lib/Basic/Targets/X86.cpp +++ b/clang/lib/Basic/Targets/X86.cpp @@ -802,7 +802,7 @@ if (HasAMXFP16) Builder.defineMacro("__AMX_FP16__"); if (HasAMXCOMPLEX) - Builder.defineMacro("__AMXCOMPLEX__"); + Builder.defineMacro("__AMX_COMPLEX__"); if (HasCMPCCXADD) Builder.defineMacro("__CMPCCXADD__"); if (HasRAOINT) diff --git a/clang/lib/Headers/immintrin.h b/clang/lib/Headers/immintrin.h --- a/clang/lib/Headers/immintrin.h +++ b/clang/lib/Headers/immintrin.h @@ -626,7 +626,7 @@ #endif #if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \ - defined(__AMXCOMPLEX__) + defined(__AMX_COMPLEX__) #include #endif diff --git a/clang/test/Preprocessor/predefined-arch-macros.c b/clang/test/Preprocessor/predefined-arch-macros.c --- a/clang/test/Preprocessor/predefined-arch-macros.c +++ b/clang/test/Preprocessor/predefined-arch-macros.c @@ -1798,6 +1798,7 @@ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GNR_M32 // CHECK_GNR_M32: #define __AES__ 1 // CHECK_GNR_M32: #define __AMX_BF16__ 1 +// CHECK_GNR_M32: #define __AMX_COMPLEX__ 1 // CHECK_GNR_M32: #define __AMX_FP16__ 1 // CHECK_GNR_M32: #define __AMX_INT8__ 1 // CHECK_GNR_M32: #define __AMX_TILE__ 1 @@ -1872,6 +1873,7 @@ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GNR_M64 // CHECK_GNR_M64: #define __AES__ 1 // CHECK_GNR_M64: #define __AMX_BF16__ 1 +// CHECK_GNR_M64: #define __AMX_COMPLEX__ 1 // CHECK_GNR_M64: #define __AMX_FP16__ 1 // CHECK_GNR_M64: #define __AMX_INT8__ 1 // CHECK_GNR_M64: #define __AMX_TILE__ 1 diff --git a/clang/test/Preprocessor/x86_target_features.c b/clang/test/Preprocessor/x86_target_features.c --- a/clang/test/Preprocessor/x86_target_features.c +++ b/clang/test/Preprocessor/x86_target_features.c @@ -562,14 +562,14 @@ // RUN: %clang -target x86_64-unknown-linux-gnu -march=x86-64 -mamx-complex -x c \ // RUN: -E -dM -o - %s | FileCheck -check-prefix=AMX-COMPLEX %s -// AMX-COMPLEX: #define __AMXCOMPLEX__ 1 +// AMX-COMPLEX: #define __AMX_COMPLEX__ 1 // RUN: %clang -target x86_64-unknown-linux-gnu -march=x86-64 -mno-amx-complex -x c \ // RUN: -E -dM -o - %s | FileCheck -check-prefix=NO-AMX-COMPLEX %s // RUN: %clang -target x86_64-unknown-linux-gnu -march=x86-64 -mamx-complex -mno-amx-tile \ // RUN: -x c -E -dM -o - %s | FileCheck -check-prefix=NO-AMX-COMPLEX %s -// NO-AMX-COMPLEX-NOT: #define __AMXCOMPLEX__ 1 +// NO-AMX-COMPLEX-NOT: #define __AMX_COMPLEX__ 1 // RUN: %clang -target i386-unknown-unknown -march=atom -mavxvnni -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVXVNNI %s diff --git a/llvm/lib/Target/X86/X86.td b/llvm/lib/Target/X86/X86.td --- a/llvm/lib/Target/X86/X86.td +++ b/llvm/lib/Target/X86/X86.td @@ -1054,7 +1054,8 @@ // Graniterapids list GNRAdditionalFeatures = [FeatureAMXFP16, - FeaturePREFETCHI]; + FeaturePREFETCHI, + FeatureAMXCOMPLEX]; list GNRFeatures = !listconcat(SPRFeatures, GNRAdditionalFeatures); diff --git a/llvm/lib/TargetParser/X86TargetParser.cpp b/llvm/lib/TargetParser/X86TargetParser.cpp --- a/llvm/lib/TargetParser/X86TargetParser.cpp +++ b/llvm/lib/TargetParser/X86TargetParser.cpp @@ -208,7 +208,8 @@ FeatureSERIALIZE | FeatureSHSTK | FeatureTSXLDTRK | FeatureUINTR | FeatureWAITPKG; constexpr FeatureBitset FeaturesGraniteRapids = - FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI; + FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI | + FeatureAMX_COMPLEX; // Intel Atom processors. // Bonnell has feature parity with Core2 and adds MOVBE.