[PATCH] D135937: [WIP][X86] Support -march=raptorlake, meteorlake
FreddyYe updated this revision to Diff 472203. FreddyYe marked 7 inline comments as done. FreddyYe added a comment. Address comments and update to align with gcc. See my latest comments. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135937/new/ https://reviews.llvm.org/D135937 Files: clang/docs/ReleaseNotes.rst clang/lib/Basic/Targets/X86.cpp clang/test/Driver/x86-march.c clang/test/Misc/target-invalid-cpu-note.c clang/test/Preprocessor/predefined-arch-macros.c llvm/docs/ReleaseNotes.rst llvm/include/llvm/Support/X86TargetParser.h llvm/lib/Support/Host.cpp llvm/lib/Support/X86TargetParser.cpp llvm/lib/Target/X86/X86.td 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 @@ -17,6 +17,8 @@ ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=yonah 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=prescott 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=lakemont 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=raptorlake 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=meteorlake 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 ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=core2 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty @@ -52,6 +54,8 @@ ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=tremont 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=knl 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=knm 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=raptorlake 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=meteorlake 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty define void @foo() { ret void Index: llvm/lib/Target/X86/X86.td === --- llvm/lib/Target/X86/X86.td +++ llvm/lib/Target/X86/X86.td @@ -1499,6 +1499,10 @@ ProcessorFeatures.SPRFeatures, ProcessorFeatures.SPRTuning>; def : ProcModel<"alderlake", AlderlakePModel, ProcessorFeatures.ADLFeatures, ProcessorFeatures.ADLTuning>; +def : ProcModel<"raptorlake", AlderlakePModel, +ProcessorFeatures.ADLFeatures, ProcessorFeatures.ADLTuning>; +def : ProcModel<"meteorlake", AlderlakePModel, +ProcessorFeatures.ADLFeatures, ProcessorFeatures.ADLTuning>; // AMD CPUs. Index: llvm/lib/Support/X86TargetParser.cpp === --- llvm/lib/Support/X86TargetParser.cpp +++ llvm/lib/Support/X86TargetParser.cpp @@ -370,6 +370,10 @@ { {"sapphirerapids"}, CK_SapphireRapids, FEATURE_AVX512BF16, FeaturesSapphireRapids }, // Alderlake microarchitecture based processors. { {"alderlake"}, CK_Alderlake, FEATURE_AVX2, FeaturesAlderlake }, + // Raptorlake microarchitecture based processors. + { {"raptorlake"}, CK_Raptorlake, FEATURE_AVX2, FeaturesAlderlake }, + // Meteorlake microarchitecture based processors. + { {"meteorlake"}, CK_Meteorlake, FEATURE_AVX2, FeaturesAlderlake }, // Knights Landing processor. { {"knl"}, CK_KNL, FEATURE_AVX512F, FeaturesKNL }, // Knights Mill processor. Index: llvm/lib/Support/Host.cpp === --- llvm/lib/Support/Host.cpp +++ llvm/lib/Support/Host.cpp @@ -815,6 +815,12 @@ // Alderlake: case 0x97: case 0x9a: +// Raptorlake: +case 0xb7: +// Meteorlake: +case 0xb5: +case 0xaa: +case 0xac: CPU = "alderlake"; *Type = X86::INTEL_COREI7; *Subtype = X86::INTEL_COREI7_ALDERLAKE; Index: llvm/include/llvm/Support/X86TargetParser.h === --- llvm/include/llvm/Support/X86TargetParser.h +++ llvm/include/llvm/Support/X86TargetParser.h @@ -104,6 +104,8 @@ CK_Tigerlake, CK_SapphireRapids, CK_Alderlake, + CK_Raptorlake, + CK_Meteorlake, CK_KNL, CK_KNM, CK_Lakemont, Index: llvm/docs/ReleaseNotes.rst
[PATCH] D135937: [WIP][X86] Support -march=raptorlake, meteorlake
FreddyYe updated this revision to Diff 471938. FreddyYe marked an inline comment as done. FreddyYe added a comment. Rebase. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135937/new/ https://reviews.llvm.org/D135937 Files: clang/docs/ReleaseNotes.rst clang/lib/Basic/Targets/X86.cpp 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/Support/X86TargetParser.def llvm/include/llvm/Support/X86TargetParser.h llvm/lib/Support/Host.cpp llvm/lib/Support/X86TargetParser.cpp llvm/lib/Target/X86/X86.td 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 @@ -17,6 +17,8 @@ ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=yonah 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=prescott 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=lakemont 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=raptorlake 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=meteorlake 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 ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=core2 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty @@ -52,6 +54,8 @@ ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=tremont 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=knl 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=knm 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=raptorlake 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=meteorlake 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty define void @foo() { ret void Index: llvm/lib/Target/X86/X86.td === --- llvm/lib/Target/X86/X86.td +++ llvm/lib/Target/X86/X86.td @@ -1499,6 +1499,10 @@ ProcessorFeatures.SPRFeatures, ProcessorFeatures.SPRTuning>; def : ProcModel<"alderlake", AlderlakePModel, ProcessorFeatures.ADLFeatures, ProcessorFeatures.ADLTuning>; +def : ProcModel<"raptorlake", AlderlakePModel, +ProcessorFeatures.ADLFeatures, ProcessorFeatures.ADLTuning>; +def : ProcModel<"meteorlake", AlderlakePModel, +ProcessorFeatures.ADLFeatures, ProcessorFeatures.ADLTuning>; // AMD CPUs. Index: llvm/lib/Support/X86TargetParser.cpp === --- llvm/lib/Support/X86TargetParser.cpp +++ llvm/lib/Support/X86TargetParser.cpp @@ -370,6 +370,10 @@ { {"sapphirerapids"}, CK_SapphireRapids, FEATURE_AVX512BF16, FeaturesSapphireRapids }, // Alderlake microarchitecture based processors. { {"alderlake"}, CK_Alderlake, FEATURE_AVX2, FeaturesAlderlake }, + // Raptorlake microarchitecture based processors. + { {"raptorlake"}, CK_Raptorlake, FEATURE_AVX2, FeaturesAlderlake }, + // Meteorlake microarchitecture based processors. + { {"meteorlake"}, CK_Meteorlake, FEATURE_AVX2, FeaturesAlderlake }, // Knights Landing processor. { {"knl"}, CK_KNL, FEATURE_AVX512F, FeaturesKNL }, // Knights Mill processor. Index: llvm/lib/Support/Host.cpp === --- llvm/lib/Support/Host.cpp +++ llvm/lib/Support/Host.cpp @@ -820,6 +820,21 @@ *Subtype = X86::INTEL_COREI7_ALDERLAKE; break; +// Raptorlake: +case 0xb7: + CPU = "raptorlake"; + *Type = X86::INTEL_COREI7; + *Subtype = X86::INTEL_COREI7_RAPTORLAKE; + break; + +// Meteorlake: +case 0xb5: +case 0xaa: +case 0xac: + CPU = "meteorlake"; + *Type = X86::INTEL_COREI7; + *Subtype = X86::INTEL_COREI7_METEORLAKE; + // Icelake Xeon: case 0x6a: case 0x6c: Index: llvm/include/llvm/Support/X86TargetParser.h === ---
[PATCH] D135937: [WIP][X86] Support -march=raptorlake, meteorlake
skan added inline comments. Comment at: compiler-rt/lib/builtins/cpu_model.c:111 + ZHAOXIN_FAM7H_LUJIAZUI, + INTEL_COREI7_RAPTORLAKE, + INTEL_COREI7_METEORLAKE, I see. But if possible, could we split "ZHAOXIN_FAM7H_LUJIAZUI" to another patch? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135937/new/ https://reviews.llvm.org/D135937 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D135937: [WIP][X86] Support -march=raptorlake, meteorlake
MaskRay added inline comments. Comment at: clang/test/Driver/x86-march.c:120 +// RUN: | FileCheck %s -check-prefix=meteorlake +// meteorlake: "-target-cpu" "meteorlake" // RKSimon wrote: > Move these after alderlake instead of the old atom cores? And use `--target=` for new tests. `-target ` is legacy. Comment at: compiler-rt/lib/builtins/cpu_model.c:478 + *Type = INTEL_COREI7; + *Subtype = INTEL_COREI7_METEORLAKE; + fallthrough? Comment at: llvm/docs/ReleaseNotes.rst:133 -- +- Support ``-mcpu=raptorlake`` +- Support ``-mcpu=meteorlake`` -mcpu=xxx and -mcpu=yyy are now supported. Comment at: llvm/lib/Support/Host.cpp:836 + *Type = X86::INTEL_COREI7; + *Subtype = X86::INTEL_COREI7_METEORLAKE; + fallthrough? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135937/new/ https://reviews.llvm.org/D135937 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits