[clang] 0dfc8e1 - [X86] Remove encoding value from the X86_FEATURE and X86_FEATURE_COMPAT macro. NFCI

Craig Topper via cfe-commits cfe-commits at lists.llvm.org
Mon Jun 22 11:47:08 PDT 2020


Author: Craig Topper
Date: 2020-06-22T11:46:21-07:00
New Revision: 0dfc8e1837e3e3ac06ab8c08fdc08b15e0ae1c2d

URL: https://github.com/llvm/llvm-project/commit/0dfc8e1837e3e3ac06ab8c08fdc08b15e0ae1c2d
DIFF: https://github.com/llvm/llvm-project/commit/0dfc8e1837e3e3ac06ab8c08fdc08b15e0ae1c2d.diff

LOG: [X86] Remove encoding value from the X86_FEATURE and X86_FEATURE_COMPAT macro. NFCI

This was orignally done so we could separate the compatibility
values and the llvm internal only features into a separate entries
in the feature array. This was needed when we explicitly had to
convert the feature into the proper 32-bit chunk at every reference
and we didn't want things moving around.

Now everything is in an array and we have helper funtions or macros
to convert encoding to index. So we renumbering is no longer an
issue.

Added: 
    

Modified: 
    clang/lib/Basic/Targets/X86.cpp
    clang/lib/CodeGen/CGBuiltin.cpp
    llvm/include/llvm/Support/X86TargetParser.def
    llvm/include/llvm/Support/X86TargetParser.h

Removed: 
    


################################################################################
diff  --git a/clang/lib/Basic/Targets/X86.cpp b/clang/lib/Basic/Targets/X86.cpp
index 0092c52b2b23..a0eaf6d1faab 100644
--- a/clang/lib/Basic/Targets/X86.cpp
+++ b/clang/lib/Basic/Targets/X86.cpp
@@ -1518,14 +1518,14 @@ bool X86TargetInfo::hasFeature(StringRef Feature) const {
 // X86TargetInfo::hasFeature for a somewhat comprehensive list).
 bool X86TargetInfo::validateCpuSupports(StringRef FeatureStr) const {
   return llvm::StringSwitch<bool>(FeatureStr)
-#define X86_FEATURE_COMPAT(VAL, ENUM, STR) .Case(STR, true)
+#define X86_FEATURE_COMPAT(ENUM, STR) .Case(STR, true)
 #include "llvm/Support/X86TargetParser.def"
       .Default(false);
 }
 
 static llvm::X86::ProcessorFeatures getFeature(StringRef Name) {
   return llvm::StringSwitch<llvm::X86::ProcessorFeatures>(Name)
-#define X86_FEATURE_COMPAT(VAL, ENUM, STR) .Case(STR, llvm::X86::ENUM)
+#define X86_FEATURE_COMPAT(ENUM, STR) .Case(STR, llvm::X86::ENUM)
 #include "llvm/Support/X86TargetParser.def"
       ;
   // Note, this function should only be used after ensuring the value is

diff  --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp
index 8213ed8a39e1..32e43c295d23 100644
--- a/clang/lib/CodeGen/CGBuiltin.cpp
+++ b/clang/lib/CodeGen/CGBuiltin.cpp
@@ -11662,7 +11662,7 @@ CodeGenFunction::GetX86CpuSupportsMask(ArrayRef<StringRef> FeatureStrs) {
   for (const StringRef &FeatureStr : FeatureStrs) {
     unsigned Feature =
         StringSwitch<unsigned>(FeatureStr)
-#define X86_FEATURE_COMPAT(VAL, ENUM, STR) .Case(STR, VAL)
+#define X86_FEATURE_COMPAT(ENUM, STR) .Case(STR, llvm::X86::ENUM)
 #include "llvm/Support/X86TargetParser.def"
         ;
     FeaturesMask |= (1ULL << Feature);

diff  --git a/llvm/include/llvm/Support/X86TargetParser.def b/llvm/include/llvm/Support/X86TargetParser.def
index 3c2614b33bf3..e228cef760bc 100644
--- a/llvm/include/llvm/Support/X86TargetParser.def
+++ b/llvm/include/llvm/Support/X86TargetParser.def
@@ -125,56 +125,57 @@ X86_CPU_SUBTYPE       ("geode",          AMDPENTIUM_GEODE)
 
 // This macro is used for cpu types present in compiler-rt/libgcc.
 #ifndef X86_FEATURE_COMPAT
-#define X86_FEATURE_COMPAT(VAL, ENUM, STR) X86_FEATURE(VAL, ENUM)
+#define X86_FEATURE_COMPAT(ENUM, STR) X86_FEATURE(ENUM)
 #endif
 
 #ifndef X86_FEATURE
-#define X86_FEATURE(VAL, ENUM)
+#define X86_FEATURE(ENUM)
 #endif
-X86_FEATURE_COMPAT( 0, FEATURE_CMOV,            "cmov")
-X86_FEATURE_COMPAT( 1, FEATURE_MMX,             "mmx")
-X86_FEATURE_COMPAT( 2, FEATURE_POPCNT,          "popcnt")
-X86_FEATURE_COMPAT( 3, FEATURE_SSE,             "sse")
-X86_FEATURE_COMPAT( 4, FEATURE_SSE2,            "sse2")
-X86_FEATURE_COMPAT( 5, FEATURE_SSE3,            "sse3")
-X86_FEATURE_COMPAT( 6, FEATURE_SSSE3,           "ssse3")
-X86_FEATURE_COMPAT( 7, FEATURE_SSE4_1,          "sse4.1")
-X86_FEATURE_COMPAT( 8, FEATURE_SSE4_2,          "sse4.2")
-X86_FEATURE_COMPAT( 9, FEATURE_AVX,             "avx")
-X86_FEATURE_COMPAT(10, FEATURE_AVX2,            "avx2")
-X86_FEATURE_COMPAT(11, FEATURE_SSE4_A,          "sse4a")
-X86_FEATURE_COMPAT(12, FEATURE_FMA4,            "fma4")
-X86_FEATURE_COMPAT(13, FEATURE_XOP,             "xop")
-X86_FEATURE_COMPAT(14, FEATURE_FMA,             "fma")
-X86_FEATURE_COMPAT(15, FEATURE_AVX512F,         "avx512f")
-X86_FEATURE_COMPAT(16, FEATURE_BMI,             "bmi")
-X86_FEATURE_COMPAT(17, FEATURE_BMI2,            "bmi2")
-X86_FEATURE_COMPAT(18, FEATURE_AES,             "aes")
-X86_FEATURE_COMPAT(19, FEATURE_PCLMUL,          "pclmul")
-X86_FEATURE_COMPAT(20, FEATURE_AVX512VL,        "avx512vl")
-X86_FEATURE_COMPAT(21, FEATURE_AVX512BW,        "avx512bw")
-X86_FEATURE_COMPAT(22, FEATURE_AVX512DQ,        "avx512dq")
-X86_FEATURE_COMPAT(23, FEATURE_AVX512CD,        "avx512cd")
-X86_FEATURE_COMPAT(24, FEATURE_AVX512ER,        "avx512er")
-X86_FEATURE_COMPAT(25, FEATURE_AVX512PF,        "avx512pf")
-X86_FEATURE_COMPAT(26, FEATURE_AVX512VBMI,      "avx512vbmi")
-X86_FEATURE_COMPAT(27, FEATURE_AVX512IFMA,      "avx512ifma")
-X86_FEATURE_COMPAT(28, FEATURE_AVX5124VNNIW,    "avx5124vnniw")
-X86_FEATURE_COMPAT(29, FEATURE_AVX5124FMAPS,    "avx5124fmaps")
-X86_FEATURE_COMPAT(30, FEATURE_AVX512VPOPCNTDQ, "avx512vpopcntdq")
-X86_FEATURE_COMPAT(31, FEATURE_AVX512VBMI2,     "avx512vbmi2")
-X86_FEATURE_COMPAT(32, FEATURE_GFNI,            "gfni")
-X86_FEATURE_COMPAT(33, FEATURE_VPCLMULQDQ,      "vpclmulqdq")
-X86_FEATURE_COMPAT(34, FEATURE_AVX512VNNI,      "avx512vnni")
-X86_FEATURE_COMPAT(35, FEATURE_AVX512BITALG,    "avx512bitalg")
-X86_FEATURE_COMPAT(36, FEATURE_AVX512BF16,      "avx512bf16")
-X86_FEATURE_COMPAT(37, FEATURE_AVX512VP2INTERSECT, "avx512vp2intersect")
+
+X86_FEATURE_COMPAT(FEATURE_CMOV,            "cmov")
+X86_FEATURE_COMPAT(FEATURE_MMX,             "mmx")
+X86_FEATURE_COMPAT(FEATURE_POPCNT,          "popcnt")
+X86_FEATURE_COMPAT(FEATURE_SSE,             "sse")
+X86_FEATURE_COMPAT(FEATURE_SSE2,            "sse2")
+X86_FEATURE_COMPAT(FEATURE_SSE3,            "sse3")
+X86_FEATURE_COMPAT(FEATURE_SSSE3,           "ssse3")
+X86_FEATURE_COMPAT(FEATURE_SSE4_1,          "sse4.1")
+X86_FEATURE_COMPAT(FEATURE_SSE4_2,          "sse4.2")
+X86_FEATURE_COMPAT(FEATURE_AVX,             "avx")
+X86_FEATURE_COMPAT(FEATURE_AVX2,            "avx2")
+X86_FEATURE_COMPAT(FEATURE_SSE4_A,          "sse4a")
+X86_FEATURE_COMPAT(FEATURE_FMA4,            "fma4")
+X86_FEATURE_COMPAT(FEATURE_XOP,             "xop")
+X86_FEATURE_COMPAT(FEATURE_FMA,             "fma")
+X86_FEATURE_COMPAT(FEATURE_AVX512F,         "avx512f")
+X86_FEATURE_COMPAT(FEATURE_BMI,             "bmi")
+X86_FEATURE_COMPAT(FEATURE_BMI2,            "bmi2")
+X86_FEATURE_COMPAT(FEATURE_AES,             "aes")
+X86_FEATURE_COMPAT(FEATURE_PCLMUL,          "pclmul")
+X86_FEATURE_COMPAT(FEATURE_AVX512VL,        "avx512vl")
+X86_FEATURE_COMPAT(FEATURE_AVX512BW,        "avx512bw")
+X86_FEATURE_COMPAT(FEATURE_AVX512DQ,        "avx512dq")
+X86_FEATURE_COMPAT(FEATURE_AVX512CD,        "avx512cd")
+X86_FEATURE_COMPAT(FEATURE_AVX512ER,        "avx512er")
+X86_FEATURE_COMPAT(FEATURE_AVX512PF,        "avx512pf")
+X86_FEATURE_COMPAT(FEATURE_AVX512VBMI,      "avx512vbmi")
+X86_FEATURE_COMPAT(FEATURE_AVX512IFMA,      "avx512ifma")
+X86_FEATURE_COMPAT(FEATURE_AVX5124VNNIW,    "avx5124vnniw")
+X86_FEATURE_COMPAT(FEATURE_AVX5124FMAPS,    "avx5124fmaps")
+X86_FEATURE_COMPAT(FEATURE_AVX512VPOPCNTDQ, "avx512vpopcntdq")
+X86_FEATURE_COMPAT(FEATURE_AVX512VBMI2,     "avx512vbmi2")
+X86_FEATURE_COMPAT(FEATURE_GFNI,            "gfni")
+X86_FEATURE_COMPAT(FEATURE_VPCLMULQDQ,      "vpclmulqdq")
+X86_FEATURE_COMPAT(FEATURE_AVX512VNNI,      "avx512vnni")
+X86_FEATURE_COMPAT(FEATURE_AVX512BITALG,    "avx512bitalg")
+X86_FEATURE_COMPAT(FEATURE_AVX512BF16,      "avx512bf16")
+X86_FEATURE_COMPAT(FEATURE_AVX512VP2INTERSECT, "avx512vp2intersect")
 // Features below here are not in libgcc/compiler-rt.
-X86_FEATURE       (64, FEATURE_MOVBE)
-X86_FEATURE       (65, FEATURE_ADX)
-X86_FEATURE       (66, FEATURE_EM64T)
-X86_FEATURE       (67, FEATURE_CLFLUSHOPT)
-X86_FEATURE       (68, FEATURE_SHA)
+X86_FEATURE       (FEATURE_MOVBE)
+X86_FEATURE       (FEATURE_ADX)
+X86_FEATURE       (FEATURE_EM64T)
+X86_FEATURE       (FEATURE_CLFLUSHOPT)
+X86_FEATURE       (FEATURE_SHA)
 #undef X86_FEATURE_COMPAT
 #undef X86_FEATURE
 

diff  --git a/llvm/include/llvm/Support/X86TargetParser.h b/llvm/include/llvm/Support/X86TargetParser.h
index e357d11a6615..79cb0af4ed06 100644
--- a/llvm/include/llvm/Support/X86TargetParser.h
+++ b/llvm/include/llvm/Support/X86TargetParser.h
@@ -53,8 +53,8 @@ enum ProcessorSubtypes : unsigned {
 // This should be kept in sync with libcc/compiler-rt as it should be used
 // by clang as a proxy for what's in libgcc/compiler-rt.
 enum ProcessorFeatures {
-#define X86_FEATURE(VAL, ENUM) \
-  ENUM = VAL,
+#define X86_FEATURE(ENUM) \
+  ENUM,
 #include "llvm/Support/X86TargetParser.def"
   CPU_FEATURE_MAX
 };


        


More information about the cfe-commits mailing list