[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG6d23a3faa4e6: [X86] Support -march=graniterapids-d and update -march=graniterapids (authored by FreddyYe). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 Files: clang/docs/ReleaseNotes.rst clang/lib/Basic/Targets/X86.cpp clang/test/CodeGen/attr-cpuspecific-cpus.c clang/test/CodeGen/attr-target-mv.c clang/test/CodeGen/target-builtin-noerror.c clang/test/Driver/x86-march.c clang/test/Misc/target-invalid-cpu-note.c clang/test/Preprocessor/predefined-arch-macros.c compiler-rt/lib/builtins/cpu_model.c llvm/docs/ReleaseNotes.rst llvm/include/llvm/TargetParser/X86TargetParser.def llvm/include/llvm/TargetParser/X86TargetParser.h llvm/lib/Target/X86/X86.td llvm/lib/TargetParser/Host.cpp llvm/lib/TargetParser/X86TargetParser.cpp llvm/test/CodeGen/X86/cpus-intel.ll Index: llvm/test/CodeGen/X86/cpus-intel.ll === --- llvm/test/CodeGen/X86/cpus-intel.ll +++ llvm/test/CodeGen/X86/cpus-intel.ll @@ -30,6 +30,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=emeraldrapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=nocona 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty @@ -88,6 +89,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty define void @foo() { ret void Index: llvm/lib/TargetParser/X86TargetParser.cpp === --- llvm/lib/TargetParser/X86TargetParser.cpp +++ llvm/lib/TargetParser/X86TargetParser.cpp @@ -210,8 +210,7 @@ FeatureSERIALIZE | FeatureSHSTK | FeatureTSXLDTRK | FeatureUINTR | FeatureWAITPKG; constexpr FeatureBitset FeaturesGraniteRapids = -FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI | -FeatureAMX_COMPLEX; +FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI; // Intel Atom processors. // Bonnell has feature parity with Core2 and adds MOVBE. @@ -429,6 +428,9 @@ { {"grandridge"}, CK_Grandridge, FEATURE_AVX2, FeaturesGrandridge, 'p', false }, // Granite Rapids microarchitecture based processors. { {"graniterapids"}, CK_Graniterapids, FEATURE_AVX512BF16, FeaturesGraniteRapids, 'n', false }, + // Granite Rapids D microarchitecture based processors. + { {"graniterapids-d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, '\0', false }, + { {"graniterapids_d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, 'n', true }, // Emerald Rapids microarchitecture based processors. { {"emeraldrapids"}, CK_Emeraldrapids, FEATURE_AVX512BF16, FeaturesSapphireRapids, 'n', false }, // Knights Landing processor. Index: llvm/lib/TargetParser/Host.cpp === --- llvm/lib/TargetParser/Host.cpp +++ llvm/lib/TargetParser/Host.cpp @@ -833,13 +833,19 @@ break; // Graniterapids: -case 0xae: case 0xad: CPU = "graniterapids"; *Type = X86::INTEL_COREI7; *Subtype = X86::INTEL_COREI7_GRANITERAPIDS; break; +// Granite Rapids D: +case 0xae: + CPU = "graniterapids-d"; + *Type = X86::INTEL_COREI7; + *Subtype = X86::INTEL_COREI7_GRANITERAPIDS_D; + break; + // Icelake Xeon: case 0x6a: case 0x6c: Index: llvm/lib/Target/X86/X86.td === --- llvm/lib/Target/X86/X86.td +++ llvm/lib/Target/X86/X86.td @@ -1078,11 +1078,15 @@ // Graniterapids list GNRAdditionalFeatures =
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
FreddyYe updated this revision to Diff 543826. FreddyYe added a comment. rebase and fix typo Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 Files: clang/docs/ReleaseNotes.rst clang/lib/Basic/Targets/X86.cpp clang/test/CodeGen/attr-cpuspecific-cpus.c clang/test/CodeGen/attr-target-mv.c clang/test/CodeGen/target-builtin-noerror.c clang/test/Driver/x86-march.c clang/test/Misc/target-invalid-cpu-note.c clang/test/Preprocessor/predefined-arch-macros.c compiler-rt/lib/builtins/cpu_model.c llvm/docs/ReleaseNotes.rst llvm/include/llvm/TargetParser/X86TargetParser.def llvm/include/llvm/TargetParser/X86TargetParser.h llvm/lib/Target/X86/X86.td llvm/lib/TargetParser/Host.cpp llvm/lib/TargetParser/X86TargetParser.cpp llvm/test/CodeGen/X86/cpus-intel.ll Index: llvm/test/CodeGen/X86/cpus-intel.ll === --- llvm/test/CodeGen/X86/cpus-intel.ll +++ llvm/test/CodeGen/X86/cpus-intel.ll @@ -30,6 +30,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=emeraldrapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=nocona 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty @@ -88,6 +89,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty define void @foo() { ret void Index: llvm/lib/TargetParser/X86TargetParser.cpp === --- llvm/lib/TargetParser/X86TargetParser.cpp +++ llvm/lib/TargetParser/X86TargetParser.cpp @@ -210,8 +210,7 @@ FeatureSERIALIZE | FeatureSHSTK | FeatureTSXLDTRK | FeatureUINTR | FeatureWAITPKG; constexpr FeatureBitset FeaturesGraniteRapids = -FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI | -FeatureAMX_COMPLEX; +FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI; // Intel Atom processors. // Bonnell has feature parity with Core2 and adds MOVBE. @@ -429,6 +428,9 @@ { {"grandridge"}, CK_Grandridge, FEATURE_AVX2, FeaturesGrandridge, 'p', false }, // Granite Rapids microarchitecture based processors. { {"graniterapids"}, CK_Graniterapids, FEATURE_AVX512BF16, FeaturesGraniteRapids, 'n', false }, + // Granite Rapids D microarchitecture based processors. + { {"graniterapids-d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, '\0', false }, + { {"graniterapids_d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, 'n', true }, // Emerald Rapids microarchitecture based processors. { {"emeraldrapids"}, CK_Emeraldrapids, FEATURE_AVX512BF16, FeaturesSapphireRapids, 'n', false }, // Knights Landing processor. Index: llvm/lib/TargetParser/Host.cpp === --- llvm/lib/TargetParser/Host.cpp +++ llvm/lib/TargetParser/Host.cpp @@ -833,13 +833,19 @@ break; // Graniterapids: -case 0xae: case 0xad: CPU = "graniterapids"; *Type = X86::INTEL_COREI7; *Subtype = X86::INTEL_COREI7_GRANITERAPIDS; break; +// Granite Rapids D: +case 0xae: + CPU = "graniterapids-d"; + *Type = X86::INTEL_COREI7; + *Subtype = X86::INTEL_COREI7_GRANITERAPIDS_D; + break; + // Icelake Xeon: case 0x6a: case 0x6c: Index: llvm/lib/Target/X86/X86.td === --- llvm/lib/Target/X86/X86.td +++ llvm/lib/Target/X86/X86.td @@ -1078,11 +1078,15 @@ // Graniterapids list GNRAdditionalFeatures = [FeatureAMXFP16, - FeaturePREFETCHI, - FeatureAMXCOMPLEX]; +
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
FreddyYe updated this revision to Diff 543797. FreddyYe marked an inline comment as done. FreddyYe added a comment. address comment. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 Files: clang/docs/ReleaseNotes.rst clang/lib/Basic/Targets/X86.cpp clang/test/CodeGen/attr-cpuspecific-cpus.c clang/test/CodeGen/attr-target-mv.c clang/test/CodeGen/target-builtin-noerror.c clang/test/Driver/x86-march.c clang/test/Misc/target-invalid-cpu-note.c clang/test/Preprocessor/predefined-arch-macros.c compiler-rt/lib/builtins/cpu_model.c llvm/docs/ReleaseNotes.rst llvm/include/llvm/TargetParser/X86TargetParser.def llvm/include/llvm/TargetParser/X86TargetParser.h llvm/lib/Target/X86/X86.td llvm/lib/TargetParser/Host.cpp llvm/lib/TargetParser/X86TargetParser.cpp llvm/test/CodeGen/X86/cpus-intel.ll Index: llvm/test/CodeGen/X86/cpus-intel.ll === --- llvm/test/CodeGen/X86/cpus-intel.ll +++ llvm/test/CodeGen/X86/cpus-intel.ll @@ -30,6 +30,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=emeraldrapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=nocona 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty @@ -88,6 +89,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty define void @foo() { ret void Index: llvm/lib/TargetParser/X86TargetParser.cpp === --- llvm/lib/TargetParser/X86TargetParser.cpp +++ llvm/lib/TargetParser/X86TargetParser.cpp @@ -210,8 +210,7 @@ FeatureSERIALIZE | FeatureSHSTK | FeatureTSXLDTRK | FeatureUINTR | FeatureWAITPKG; constexpr FeatureBitset FeaturesGraniteRapids = -FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI | -FeatureAMX_COMPLEX; +FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI; // Intel Atom processors. // Bonnell has feature parity with Core2 and adds MOVBE. @@ -429,6 +428,9 @@ { {"grandridge"}, CK_Grandridge, FEATURE_AVX2, FeaturesGrandridge, 'p', false }, // Granite Rapids microarchitecture based processors. { {"graniterapids"}, CK_Graniterapids, FEATURE_AVX512BF16, FeaturesGraniteRapids, 'n', false }, + // Granite Rapids D microarchitecture based processors. + { {"graniterapids-d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, '\0', false }, + { {"graniterapids_d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, 'n', true }, // Emerald Rapids microarchitecture based processors. { {"emeraldrapids"}, CK_Emeraldrapids, FEATURE_AVX512BF16, FeaturesSapphireRapids, 'n', false }, // Knights Landing processor. Index: llvm/lib/TargetParser/Host.cpp === --- llvm/lib/TargetParser/Host.cpp +++ llvm/lib/TargetParser/Host.cpp @@ -833,13 +833,19 @@ break; // Graniterapids: -case 0xae: case 0xad: CPU = "graniterapids"; *Type = X86::INTEL_COREI7; *Subtype = X86::INTEL_COREI7_GRANITERAPIDS; break; +// Granite Rapids D: +case 0xae: + CPU = "graniterapids-d"; + *Type = X86::INTEL_COREI7; + *Subtype = X86::INTEL_COREI7_GRANITERAPIDS_D; + break; + // Icelake Xeon: case 0x6a: case 0x6c: Index: llvm/lib/Target/X86/X86.td === --- llvm/lib/Target/X86/X86.td +++ llvm/lib/Target/X86/X86.td @@ -1078,11 +1078,15 @@ // Graniterapids list GNRAdditionalFeatures = [FeatureAMXFP16, - FeaturePREFETCHI, -
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
skan accepted this revision. skan added a comment. LGTM Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
RKSimon accepted this revision. RKSimon added a comment. LGTM - cheers Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
pengfei accepted this revision. pengfei added a comment. This revision is now accepted and ready to land. LGTM, but please wait one or two days for other reviewers. Comment at: llvm/lib/TargetParser/X86TargetParser.cpp:430 // Granite Rapids microarchitecture based processors. - { {"graniterapids"}, CK_Graniterapids, FEATURE_AVX512BF16, FeaturesGraniteRapids, 'n', false }, + { {"graniterapids"}, CK_Graniterapids, FEATURE_AVX512BF16, FeaturesGraniteRapids , 'n', false }, + // Granite Rapids D microarchitecture based processors. Remove the space. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
FreddyYe added a comment. ping Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
FreddyYe updated this revision to Diff 543344. FreddyYe added a comment. Update cpu_specific required features. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 Files: clang/docs/ReleaseNotes.rst clang/lib/Basic/Targets/X86.cpp clang/test/CodeGen/attr-cpuspecific-cpus.c clang/test/CodeGen/attr-target-mv.c clang/test/CodeGen/target-builtin-noerror.c clang/test/Driver/x86-march.c clang/test/Misc/target-invalid-cpu-note.c clang/test/Preprocessor/predefined-arch-macros.c compiler-rt/lib/builtins/cpu_model.c llvm/docs/ReleaseNotes.rst llvm/include/llvm/TargetParser/X86TargetParser.def llvm/include/llvm/TargetParser/X86TargetParser.h llvm/lib/Target/X86/X86.td llvm/lib/TargetParser/Host.cpp llvm/lib/TargetParser/X86TargetParser.cpp llvm/test/CodeGen/X86/cpus-intel.ll Index: llvm/test/CodeGen/X86/cpus-intel.ll === --- llvm/test/CodeGen/X86/cpus-intel.ll +++ llvm/test/CodeGen/X86/cpus-intel.ll @@ -30,6 +30,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=emeraldrapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=nocona 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty @@ -88,6 +89,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty define void @foo() { ret void Index: llvm/lib/TargetParser/X86TargetParser.cpp === --- llvm/lib/TargetParser/X86TargetParser.cpp +++ llvm/lib/TargetParser/X86TargetParser.cpp @@ -210,8 +210,7 @@ FeatureSERIALIZE | FeatureSHSTK | FeatureTSXLDTRK | FeatureUINTR | FeatureWAITPKG; constexpr FeatureBitset FeaturesGraniteRapids = -FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI | -FeatureAMX_COMPLEX; +FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI; // Intel Atom processors. // Bonnell has feature parity with Core2 and adds MOVBE. @@ -428,7 +427,10 @@ // Grandridge microarchitecture based processors. { {"grandridge"}, CK_Grandridge, FEATURE_AVX2, FeaturesGrandridge, 'p', false }, // Granite Rapids microarchitecture based processors. - { {"graniterapids"}, CK_Graniterapids, FEATURE_AVX512BF16, FeaturesGraniteRapids, 'n', false }, + { {"graniterapids"}, CK_Graniterapids, FEATURE_AVX512BF16, FeaturesGraniteRapids , 'n', false }, + // Granite Rapids D microarchitecture based processors. + { {"graniterapids-d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, '\0', false }, + { {"graniterapids_d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, 'n', true }, // Emerald Rapids microarchitecture based processors. { {"emeraldrapids"}, CK_Emeraldrapids, FEATURE_AVX512BF16, FeaturesSapphireRapids, 'n', false }, // Knights Landing processor. Index: llvm/lib/TargetParser/Host.cpp === --- llvm/lib/TargetParser/Host.cpp +++ llvm/lib/TargetParser/Host.cpp @@ -833,13 +833,19 @@ break; // Graniterapids: -case 0xae: case 0xad: CPU = "graniterapids"; *Type = X86::INTEL_COREI7; *Subtype = X86::INTEL_COREI7_GRANITERAPIDS; break; +// Granite Rapids D: +case 0xae: + CPU = "graniterapids-d"; + *Type = X86::INTEL_COREI7; + *Subtype = X86::INTEL_COREI7_GRANITERAPIDS_D; + break; + // Icelake Xeon: case 0x6a: case 0x6c: Index: llvm/lib/Target/X86/X86.td === --- llvm/lib/Target/X86/X86.td +++ llvm/lib/Target/X86/X86.td @@ -1078,11 +1078,15 @@ // Graniterapids list GNRAdditionalFeatures
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
FreddyYe added inline comments. Comment at: llvm/lib/Target/X86/X86.td:1082 FeaturePREFETCHI, - FeatureSHA512, FeatureAMXCOMPLEX]; list GNRFeatures = FreddyYe wrote: > RKSimon wrote: > > RKSimon wrote: > > > If this was incorrect it needs to be removed in its own patch > > Doesn't the FeatureAMXCOMPLEX need to be on GNRDAdditionalFeatures and > > removed from GNRAdditionalFeatures? > Right. Fixed in > https://github.com/llvm/llvm-project/commit/5533fc10219747d1b312f8057edfb10d4d0fcd77 Sorry for mess here. Addressed. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
FreddyYe updated this revision to Diff 543342. FreddyYe marked 3 inline comments as done. FreddyYe added a comment. Rebase and address comments. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 Files: clang/docs/ReleaseNotes.rst clang/lib/Basic/Targets/X86.cpp clang/test/CodeGen/attr-cpuspecific-cpus.c clang/test/CodeGen/attr-target-mv.c clang/test/CodeGen/target-builtin-noerror.c clang/test/Driver/x86-march.c clang/test/Misc/target-invalid-cpu-note.c clang/test/Preprocessor/predefined-arch-macros.c compiler-rt/lib/builtins/cpu_model.c llvm/docs/ReleaseNotes.rst llvm/include/llvm/TargetParser/X86TargetParser.def llvm/include/llvm/TargetParser/X86TargetParser.h llvm/lib/Target/X86/X86.td llvm/lib/TargetParser/Host.cpp llvm/lib/TargetParser/X86TargetParser.cpp llvm/test/CodeGen/X86/cpus-intel.ll Index: llvm/test/CodeGen/X86/cpus-intel.ll === --- llvm/test/CodeGen/X86/cpus-intel.ll +++ llvm/test/CodeGen/X86/cpus-intel.ll @@ -30,6 +30,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=emeraldrapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=nocona 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty @@ -88,6 +89,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty define void @foo() { ret void Index: llvm/lib/TargetParser/X86TargetParser.cpp === --- llvm/lib/TargetParser/X86TargetParser.cpp +++ llvm/lib/TargetParser/X86TargetParser.cpp @@ -210,8 +210,7 @@ FeatureSERIALIZE | FeatureSHSTK | FeatureTSXLDTRK | FeatureUINTR | FeatureWAITPKG; constexpr FeatureBitset FeaturesGraniteRapids = -FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI | -FeatureAMX_COMPLEX; +FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI; // Intel Atom processors. // Bonnell has feature parity with Core2 and adds MOVBE. @@ -428,7 +427,10 @@ // Grandridge microarchitecture based processors. { {"grandridge"}, CK_Grandridge, FEATURE_AVX2, FeaturesGrandridge, 'p', false }, // Granite Rapids microarchitecture based processors. - { {"graniterapids"}, CK_Graniterapids, FEATURE_AVX512BF16, FeaturesGraniteRapids, 'n', false }, + { {"graniterapids"}, CK_Graniterapids, FEATURE_AVX512BF16, FeaturesGraniteRapids , 'n', false }, + // Granite Rapids D microarchitecture based processors. + { {"graniterapids-d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, 'n', false }, + { {"graniterapids_d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, 'n', true }, // Emerald Rapids microarchitecture based processors. { {"emeraldrapids"}, CK_Emeraldrapids, FEATURE_AVX512BF16, FeaturesSapphireRapids, 'n', false }, // Knights Landing processor. Index: llvm/lib/TargetParser/Host.cpp === --- llvm/lib/TargetParser/Host.cpp +++ llvm/lib/TargetParser/Host.cpp @@ -833,13 +833,19 @@ break; // Graniterapids: -case 0xae: case 0xad: CPU = "graniterapids"; *Type = X86::INTEL_COREI7; *Subtype = X86::INTEL_COREI7_GRANITERAPIDS; break; +// Granite Rapids D: +case 0xae: + CPU = "graniterapids-d"; + *Type = X86::INTEL_COREI7; + *Subtype = X86::INTEL_COREI7_GRANITERAPIDS_D; + break; + // Icelake Xeon: case 0x6a: case 0x6c: Index: llvm/lib/Target/X86/X86.td === --- llvm/lib/Target/X86/X86.td +++ llvm/lib/Target/X86/X86.td @@ -1078,11 +1078,15 @@ //
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
FreddyYe marked 2 inline comments as done. FreddyYe added inline comments. Comment at: llvm/lib/Target/X86/X86.td:1082 FeaturePREFETCHI, - FeatureSHA512, FeatureAMXCOMPLEX]; RKSimon wrote: > RKSimon wrote: > > If this was incorrect it needs to be removed in its own patch > Doesn't the FeatureAMXCOMPLEX need to be on GNRDAdditionalFeatures and > removed from GNRAdditionalFeatures? Right. Fixed in https://github.com/llvm/llvm-project/commit/5533fc10219747d1b312f8057edfb10d4d0fcd77 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
RKSimon added inline comments. Comment at: llvm/lib/Target/X86/X86.td:1082 FeaturePREFETCHI, - FeatureSHA512, FeatureAMXCOMPLEX]; If this was incorrect it needs to be removed in its own patch Comment at: llvm/lib/Target/X86/X86.td:1082 FeaturePREFETCHI, - FeatureSHA512, FeatureAMXCOMPLEX]; list GNRFeatures = RKSimon wrote: > If this was incorrect it needs to be removed in its own patch Doesn't the FeatureAMXCOMPLEX need to be on GNRDAdditionalFeatures and removed from GNRAdditionalFeatures? Comment at: llvm/lib/Target/X86/X86.td:1090 + list GNRDFeatures = +!listconcat(SPRFeatures, GNRDAdditionalFeatures); + Why not concat with GNRAdditionalFeatures ? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
FreddyYe marked 2 inline comments as done. FreddyYe added inline comments. Comment at: clang/test/Preprocessor/predefined-arch-macros.c:1925 // CHECK_GNR_M64: #define __AMX_BF16__ 1 -// CHECK_GNR_M64: #define __AMX_COMPLEX__ 1 +// CHECK_GNR_M64-NOT: #define __AMX_COMPLEX__ 1 +// CHECK_GNRD_M64: #define __AMX_COMPLEX__ 1 pengfei wrote: > FreddyYe wrote: > > RKSimon wrote: > > > Won't this fail on the graniterapids-d run? > > Whops, I didn't realize this problem before! But it indeed doesn't fail. > > Need to figure out why... > I'm guessing when using multi prefixes, it will try to match with the second > one if the first failed. It's common and easy to understand for positive > check but a bit confusing for negative one. I did some experiments and arrived at same guessing. It indeed worked here for graniterapids-d and checked each `#define` for it. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
pengfei added inline comments. Comment at: clang/test/Preprocessor/predefined-arch-macros.c:1925 // CHECK_GNR_M64: #define __AMX_BF16__ 1 -// CHECK_GNR_M64: #define __AMX_COMPLEX__ 1 +// CHECK_GNR_M64-NOT: #define __AMX_COMPLEX__ 1 +// CHECK_GNRD_M64: #define __AMX_COMPLEX__ 1 FreddyYe wrote: > RKSimon wrote: > > Won't this fail on the graniterapids-d run? > Whops, I didn't realize this problem before! But it indeed doesn't fail. Need > to figure out why... I'm guessing when using multi prefixes, it will try to match with the second one if the first failed. It's common and easy to understand for positive check but a bit confusing for negative one. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
FreddyYe marked an inline comment as done. FreddyYe added inline comments. Comment at: clang/test/Preprocessor/predefined-arch-macros.c:1925 // CHECK_GNR_M64: #define __AMX_BF16__ 1 -// CHECK_GNR_M64: #define __AMX_COMPLEX__ 1 +// CHECK_GNR_M64-NOT: #define __AMX_COMPLEX__ 1 +// CHECK_GNRD_M64: #define __AMX_COMPLEX__ 1 RKSimon wrote: > Won't this fail on the graniterapids-d run? Whops, I didn't realize this problem before! But it indeed doesn't fail. Need to figure out why... Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
RKSimon added inline comments. Comment at: clang/test/Preprocessor/predefined-arch-macros.c:1925 // CHECK_GNR_M64: #define __AMX_BF16__ 1 -// CHECK_GNR_M64: #define __AMX_COMPLEX__ 1 +// CHECK_GNR_M64-NOT: #define __AMX_COMPLEX__ 1 +// CHECK_GNRD_M64: #define __AMX_COMPLEX__ 1 Won't this fail on the graniterapids-d run? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
FreddyYe updated this revision to Diff 542446. FreddyYe marked an inline comment as done. FreddyYe added a comment. address comment. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 Files: clang/docs/ReleaseNotes.rst clang/lib/Basic/Targets/X86.cpp clang/test/CodeGen/attr-cpuspecific-cpus.c clang/test/CodeGen/attr-target-mv.c clang/test/CodeGen/target-builtin-noerror.c clang/test/Driver/x86-march.c clang/test/Misc/target-invalid-cpu-note.c clang/test/Preprocessor/predefined-arch-macros.c compiler-rt/lib/builtins/cpu_model.c llvm/docs/ReleaseNotes.rst llvm/include/llvm/TargetParser/X86TargetParser.def llvm/include/llvm/TargetParser/X86TargetParser.h llvm/lib/Target/X86/X86.td llvm/lib/TargetParser/Host.cpp llvm/lib/TargetParser/X86TargetParser.cpp llvm/test/CodeGen/X86/cpus-intel.ll Index: llvm/test/CodeGen/X86/cpus-intel.ll === --- llvm/test/CodeGen/X86/cpus-intel.ll +++ llvm/test/CodeGen/X86/cpus-intel.ll @@ -30,6 +30,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=emeraldrapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=nocona 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty @@ -88,6 +89,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty define void @foo() { ret void Index: llvm/lib/TargetParser/X86TargetParser.cpp === --- llvm/lib/TargetParser/X86TargetParser.cpp +++ llvm/lib/TargetParser/X86TargetParser.cpp @@ -210,8 +210,7 @@ FeatureSERIALIZE | FeatureSHSTK | FeatureTSXLDTRK | FeatureUINTR | FeatureWAITPKG; constexpr FeatureBitset FeaturesGraniteRapids = -FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI | -FeatureAMX_COMPLEX; +FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI; // Intel Atom processors. // Bonnell has feature parity with Core2 and adds MOVBE. @@ -428,7 +427,10 @@ // Grandridge microarchitecture based processors. { {"grandridge"}, CK_Grandridge, FEATURE_AVX2, FeaturesGrandridge, 'p', false }, // Granite Rapids microarchitecture based processors. - { {"graniterapids"}, CK_Graniterapids, FEATURE_AVX512BF16, FeaturesGraniteRapids, 'n', false }, + { {"graniterapids"}, CK_Graniterapids, FEATURE_AVX512BF16, FeaturesGraniteRapids , 'n', false }, + // Granite Rapids D microarchitecture based processors. + { {"graniterapids-d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, 'n', false }, + { {"graniterapids_d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, 'n', true }, // Emerald Rapids microarchitecture based processors. { {"emeraldrapids"}, CK_Emeraldrapids, FEATURE_AVX512BF16, FeaturesSapphireRapids, 'n', false }, // Knights Landing processor. Index: llvm/lib/TargetParser/Host.cpp === --- llvm/lib/TargetParser/Host.cpp +++ llvm/lib/TargetParser/Host.cpp @@ -833,13 +833,19 @@ break; // Graniterapids: -case 0xae: case 0xad: CPU = "graniterapids"; *Type = X86::INTEL_COREI7; *Subtype = X86::INTEL_COREI7_GRANITERAPIDS; break; +// Granite Rapids D: +case 0xae: + CPU = "graniterapids-d"; + *Type = X86::INTEL_COREI7; + *Subtype = X86::INTEL_COREI7_GRANITERAPIDS_D; + break; + // Icelake Xeon: case 0x6a: case 0x6c: Index: llvm/lib/Target/X86/X86.td === --- llvm/lib/Target/X86/X86.td +++ llvm/lib/Target/X86/X86.td @@ -1079,11 +1079,16 @@ // Graniterapids list
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
FreddyYe added inline comments. Comment at: clang/test/Preprocessor/predefined-arch-macros.c:1922 +// RUN: --target=x86_64 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GNRD_M64 // CHECK_GNR_M64: #define __AES__ 1 RKSimon wrote: > Maybe create a common CHECK_GNR_BASE prefix that you can check > graniterapids/graniterapids-d against - currently graniterapids-d is barely > testing anything Oh, it should be `-check-prefixes=CHECK_GNR_M64,CHECK_GNRD_M64` I did this before, like: https://github.com/llvm/llvm-project/blob/a2160dd34d56ea5440cbb805657bfee0e2228073/clang/test/Preprocessor/predefined-arch-macros.c#L370 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
RKSimon added inline comments. Comment at: clang/test/Preprocessor/predefined-arch-macros.c:1922 +// RUN: --target=x86_64 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GNRD_M64 // CHECK_GNR_M64: #define __AES__ 1 Maybe create a common CHECK_GNR_BASE prefix that you can check graniterapids/graniterapids-d against - currently graniterapids-d is barely testing anything Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
FreddyYe updated this revision to Diff 542360. FreddyYe added a comment. add clang releasenote Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155798/new/ https://reviews.llvm.org/D155798 Files: clang/docs/ReleaseNotes.rst clang/lib/Basic/Targets/X86.cpp clang/test/CodeGen/attr-cpuspecific-cpus.c clang/test/CodeGen/attr-target-mv.c clang/test/CodeGen/target-builtin-noerror.c clang/test/Driver/x86-march.c clang/test/Misc/target-invalid-cpu-note.c clang/test/Preprocessor/predefined-arch-macros.c compiler-rt/lib/builtins/cpu_model.c llvm/docs/ReleaseNotes.rst llvm/include/llvm/TargetParser/X86TargetParser.def llvm/include/llvm/TargetParser/X86TargetParser.h llvm/lib/Target/X86/X86.td llvm/lib/TargetParser/Host.cpp llvm/lib/TargetParser/X86TargetParser.cpp llvm/test/CodeGen/X86/cpus-intel.ll Index: llvm/test/CodeGen/X86/cpus-intel.ll === --- llvm/test/CodeGen/X86/cpus-intel.ll +++ llvm/test/CodeGen/X86/cpus-intel.ll @@ -30,6 +30,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=emeraldrapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=nocona 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty @@ -88,6 +89,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty define void @foo() { ret void Index: llvm/lib/TargetParser/X86TargetParser.cpp === --- llvm/lib/TargetParser/X86TargetParser.cpp +++ llvm/lib/TargetParser/X86TargetParser.cpp @@ -210,8 +210,7 @@ FeatureSERIALIZE | FeatureSHSTK | FeatureTSXLDTRK | FeatureUINTR | FeatureWAITPKG; constexpr FeatureBitset FeaturesGraniteRapids = -FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI | -FeatureAMX_COMPLEX; +FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI; // Intel Atom processors. // Bonnell has feature parity with Core2 and adds MOVBE. @@ -428,7 +427,10 @@ // Grandridge microarchitecture based processors. { {"grandridge"}, CK_Grandridge, FEATURE_AVX2, FeaturesGrandridge, 'p', false }, // Granite Rapids microarchitecture based processors. - { {"graniterapids"}, CK_Graniterapids, FEATURE_AVX512BF16, FeaturesGraniteRapids, 'n', false }, + { {"graniterapids"}, CK_Graniterapids, FEATURE_AVX512BF16, FeaturesGraniteRapids , 'n', false }, + // Granite Rapids D microarchitecture based processors. + { {"graniterapids-d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, 'n', false }, + { {"graniterapids_d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, 'n', true }, // Emerald Rapids microarchitecture based processors. { {"emeraldrapids"}, CK_Emeraldrapids, FEATURE_AVX512BF16, FeaturesSapphireRapids, 'n', false }, // Knights Landing processor. Index: llvm/lib/TargetParser/Host.cpp === --- llvm/lib/TargetParser/Host.cpp +++ llvm/lib/TargetParser/Host.cpp @@ -833,13 +833,19 @@ break; // Graniterapids: -case 0xae: case 0xad: CPU = "graniterapids"; *Type = X86::INTEL_COREI7; *Subtype = X86::INTEL_COREI7_GRANITERAPIDS; break; +// Granite Rapids D: +case 0xae: + CPU = "graniterapids-d"; + *Type = X86::INTEL_COREI7; + *Subtype = X86::INTEL_COREI7_GRANITERAPIDS_D; + break; + // Icelake Xeon: case 0x6a: case 0x6c: Index: llvm/lib/Target/X86/X86.td === --- llvm/lib/Target/X86/X86.td +++ llvm/lib/Target/X86/X86.td @@ -1079,11 +1079,16 @@ // Graniterapids list GNRAdditionalFeatures = [FeatureAMXFP16,
[PATCH] D155798: [X86] Support -march=graniterapids-d and update -march=graniterapids
FreddyYe created this revision. Herald added subscribers: Enna1, pengfei, hiraditya. Herald added a project: All. FreddyYe requested review of this revision. Herald added projects: clang, Sanitizers, LLVM. Herald added subscribers: llvm-commits, Sanitizers, cfe-commits. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D155798 Files: clang/lib/Basic/Targets/X86.cpp clang/test/CodeGen/attr-cpuspecific-cpus.c clang/test/CodeGen/attr-target-mv.c clang/test/CodeGen/target-builtin-noerror.c clang/test/Driver/x86-march.c clang/test/Misc/target-invalid-cpu-note.c clang/test/Preprocessor/predefined-arch-macros.c compiler-rt/lib/builtins/cpu_model.c llvm/docs/ReleaseNotes.rst llvm/include/llvm/TargetParser/X86TargetParser.def llvm/include/llvm/TargetParser/X86TargetParser.h llvm/lib/Target/X86/X86.td llvm/lib/TargetParser/Host.cpp llvm/lib/TargetParser/X86TargetParser.cpp llvm/test/CodeGen/X86/cpus-intel.ll Index: llvm/test/CodeGen/X86/cpus-intel.ll === --- llvm/test/CodeGen/X86/cpus-intel.ll +++ llvm/test/CodeGen/X86/cpus-intel.ll @@ -30,6 +30,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=emeraldrapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=nocona 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty @@ -88,6 +89,7 @@ ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=sierraforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=grandridge 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=graniterapids-d 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty define void @foo() { ret void Index: llvm/lib/TargetParser/X86TargetParser.cpp === --- llvm/lib/TargetParser/X86TargetParser.cpp +++ llvm/lib/TargetParser/X86TargetParser.cpp @@ -210,8 +210,7 @@ FeatureSERIALIZE | FeatureSHSTK | FeatureTSXLDTRK | FeatureUINTR | FeatureWAITPKG; constexpr FeatureBitset FeaturesGraniteRapids = -FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI | -FeatureAMX_COMPLEX; +FeaturesSapphireRapids | FeatureAMX_FP16 | FeaturePREFETCHI; // Intel Atom processors. // Bonnell has feature parity with Core2 and adds MOVBE. @@ -428,7 +427,10 @@ // Grandridge microarchitecture based processors. { {"grandridge"}, CK_Grandridge, FEATURE_AVX2, FeaturesGrandridge, 'p', false }, // Granite Rapids microarchitecture based processors. - { {"graniterapids"}, CK_Graniterapids, FEATURE_AVX512BF16, FeaturesGraniteRapids, 'n', false }, + { {"graniterapids"}, CK_Graniterapids, FEATURE_AVX512BF16, FeaturesGraniteRapids , 'n', false }, + // Granite Rapids D microarchitecture based processors. + { {"graniterapids-d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, 'n', false }, + { {"graniterapids_d"}, CK_GraniterapidsD, FEATURE_AVX512BF16, FeaturesGraniteRapids | FeatureAMX_COMPLEX, 'n', true }, // Emerald Rapids microarchitecture based processors. { {"emeraldrapids"}, CK_Emeraldrapids, FEATURE_AVX512BF16, FeaturesSapphireRapids, 'n', false }, // Knights Landing processor. Index: llvm/lib/TargetParser/Host.cpp === --- llvm/lib/TargetParser/Host.cpp +++ llvm/lib/TargetParser/Host.cpp @@ -833,13 +833,19 @@ break; // Graniterapids: -case 0xae: case 0xad: CPU = "graniterapids"; *Type = X86::INTEL_COREI7; *Subtype = X86::INTEL_COREI7_GRANITERAPIDS; break; +// Granite Rapids D: +case 0xae: + CPU = "graniterapids-d"; + *Type = X86::INTEL_COREI7; + *Subtype = X86::INTEL_COREI7_GRANITERAPIDS_D; + break; + // Icelake Xeon: case 0x6a: case 0x6c: Index: llvm/lib/Target/X86/X86.td === --- llvm/lib/Target/X86/X86.td +++ llvm/lib/Target/X86/X86.td @@ -1079,11