================
@@ -121,168 +121,162 @@ X86_CPU_SUBTYPE_ALIAS(INTEL_COREI7_PANTHERLAKE, 
"wildcatlake")
 #undef X86_CPU_SUBTYPE_ALIAS
 #undef X86_CPU_SUBTYPE
 
-// This macro is used for cpu types present in compiler-rt/libgcc. The third
-// parameter PRIORITY is as required by the attribute 'target' checking. Note
-// that not all are supported/prioritized by GCC, so synchronization with GCC's
-// implementation may require changing some existing values.
-//
-// We cannot just re-sort the list though because its order is dictated by the
-// order of bits in CodeGenFunction::GetX86CpuSupportsMask.
-// We cannot re-adjust the position of X86_FEATURE_COMPAT at the whole list.
+// X86_FEATURE_COMPAT is used for cpu types present in compiler-rt/libgcc (i.e.
+// types we can multiversion on). The third parameter PRIORITY is required
+// by the attribute 'target' checking.
+
+// Order of bits has to match what's implemented in compiler-rt/libgcc. That's 
what the
+// ABI_VALUE is for - CodeGenFunction::GetX86CpuSupportsMask uses it.
 #ifndef X86_FEATURE_COMPAT
-#define X86_FEATURE_COMPAT(ENUM, STR, PRIORITY) X86_FEATURE(ENUM, STR)
+#define X86_FEATURE_COMPAT(ENUM, STR, PRIORITY, ABI_VALUE) X86_FEATURE(ENUM, 
STR)
 #endif
 
 #ifndef X86_FEATURE
 #define X86_FEATURE(ENUM, STR)
 #endif
 
 #ifndef X86_MICROARCH_LEVEL
-#define X86_MICROARCH_LEVEL(ENUM, STR, PRIORITY)
+#define X86_MICROARCH_LEVEL(ENUM, STR, PRIORITY, ABI_VALUE)
 #endif
 
-X86_FEATURE_COMPAT(CMOV,            "cmov",                  0)
-X86_FEATURE_COMPAT(MMX,             "mmx",                   1)
-X86_FEATURE_COMPAT(POPCNT,          "popcnt",                9)
-X86_FEATURE_COMPAT(SSE,             "sse",                   2)
-X86_FEATURE_COMPAT(SSE2,            "sse2",                  3)
-X86_FEATURE_COMPAT(SSE3,            "sse3",                  4)
-X86_FEATURE_COMPAT(SSSE3,           "ssse3",                 5)
-X86_FEATURE_COMPAT(SSE4_1,          "sse4.1",                7)
-X86_FEATURE_COMPAT(SSE4_2,          "sse4.2",                8)
-X86_FEATURE_COMPAT(AVX,             "avx",                   12)
-X86_FEATURE_COMPAT(AVX2,            "avx2",                  18)
-X86_FEATURE_COMPAT(SSE4_A,          "sse4a",                 6)
-X86_FEATURE_COMPAT(FMA4,            "fma4",                  14)
-X86_FEATURE_COMPAT(XOP,             "xop",                   15)
-X86_FEATURE_COMPAT(FMA,             "fma",                   16)
-X86_FEATURE_COMPAT(AVX512F,         "avx512f",               19)
-X86_FEATURE_COMPAT(BMI,             "bmi",                   13)
-X86_FEATURE_COMPAT(BMI2,            "bmi2",                  17)
-X86_FEATURE_COMPAT(AES,             "aes",                   10)
-X86_FEATURE_COMPAT(PCLMUL,          "pclmul",                11)
-X86_FEATURE_COMPAT(AVX512VL,        "avx512vl",              20)
-X86_FEATURE_COMPAT(AVX512BW,        "avx512bw",              21)
-X86_FEATURE_COMPAT(AVX512DQ,        "avx512dq",              22)
-X86_FEATURE_COMPAT(AVX512CD,        "avx512cd",              23)
+X86_FEATURE_COMPAT(CMOV,            "cmov",                  0,   0)
+X86_FEATURE_COMPAT(MMX,             "mmx",                   1,   1)
+X86_FEATURE_COMPAT(POPCNT,          "popcnt",                9,   2)
+X86_FEATURE_COMPAT(SSE,             "sse",                   2,   3)
+X86_FEATURE_COMPAT(SSE2,            "sse2",                  3,   4)
+X86_FEATURE_COMPAT(SSE3,            "sse3",                  4,   5)
+X86_FEATURE_COMPAT(SSSE3,           "ssse3",                 5,   6)
+X86_FEATURE_COMPAT(SSE4_1,          "sse4.1",                7,   7)
+X86_FEATURE_COMPAT(SSE4_2,          "sse4.2",                8,   8)
+X86_FEATURE_COMPAT(AVX,             "avx",                   12,  9)
+X86_FEATURE_COMPAT(AVX2,            "avx2",                  18, 10)
+X86_FEATURE_COMPAT(SSE4_A,          "sse4a",                 6,  11)
+X86_FEATURE_COMPAT(FMA4,            "fma4",                  14, 12)
+X86_FEATURE_COMPAT(XOP,             "xop",                   15, 13)
+X86_FEATURE_COMPAT(FMA,             "fma",                   16, 14)
+X86_FEATURE_COMPAT(AVX512F,         "avx512f",               19, 15)
+X86_FEATURE_COMPAT(BMI,             "bmi",                   13, 16)
+X86_FEATURE_COMPAT(BMI2,            "bmi2",                  17, 17)
+X86_FEATURE_COMPAT(AES,             "aes",                   10, 18)
+X86_FEATURE_COMPAT(PCLMUL,          "pclmul",                11, 19)
+X86_FEATURE_COMPAT(AVX512VL,        "avx512vl",              20, 20)
+X86_FEATURE_COMPAT(AVX512BW,        "avx512bw",              21, 21)
+X86_FEATURE_COMPAT(AVX512DQ,        "avx512dq",              22, 22)
+X86_FEATURE_COMPAT(AVX512CD,        "avx512cd",              23, 23)
 X86_FEATURE       (NF,              "nf")
 X86_FEATURE       (CF,              "cf")
-X86_FEATURE_COMPAT(AVX512VBMI,      "avx512vbmi",            24)
-X86_FEATURE_COMPAT(AVX512IFMA,      "avx512ifma",            25)
-X86_FEATURE_COMPAT(AVX5124VNNIW,    "avx5124vnniw",          26)
-X86_FEATURE_COMPAT(AVX5124FMAPS,    "avx5124fmaps",          27)
-X86_FEATURE_COMPAT(AVX512VPOPCNTDQ, "avx512vpopcntdq",       28)
-X86_FEATURE_COMPAT(AVX512VBMI2,     "avx512vbmi2",           29)
-X86_FEATURE_COMPAT(GFNI,            "gfni",                  30)
-X86_FEATURE_COMPAT(VPCLMULQDQ,      "vpclmulqdq",            31)
-X86_FEATURE_COMPAT(AVX512VNNI,      "avx512vnni",            32)
-X86_FEATURE_COMPAT(AVX512BITALG,    "avx512bitalg",          33)
-X86_FEATURE_COMPAT(AVX512BF16,      "avx512bf16",            34)
-X86_FEATURE_COMPAT(AVX512VP2INTERSECT, "avx512vp2intersect", 35)
+X86_FEATURE_COMPAT(AVX512VBMI,      "avx512vbmi",            24, 26)
+X86_FEATURE_COMPAT(AVX512IFMA,      "avx512ifma",            25, 27)
+X86_FEATURE(AVX5124VNNIW,    "avx5124vnniw")
+X86_FEATURE(AVX5124FMAPS,    "avx5124fmaps")
+X86_FEATURE_COMPAT(AVX512VPOPCNTDQ, "avx512vpopcntdq",       26, 30)
+X86_FEATURE_COMPAT(AVX512VBMI2,     "avx512vbmi2",           27, 31)
+X86_FEATURE_COMPAT(GFNI,            "gfni",                  28, 32)
+X86_FEATURE_COMPAT(VPCLMULQDQ,      "vpclmulqdq",            29, 33)
+X86_FEATURE_COMPAT(AVX512VNNI,      "avx512vnni",            30, 34)
+X86_FEATURE_COMPAT(AVX512BITALG,    "avx512bitalg",          31, 35)
+X86_FEATURE_COMPAT(AVX512BF16,      "avx512bf16",            32, 36)
+X86_FEATURE_COMPAT(AVX512VP2INTERSECT, "avx512vp2intersect", 33, 37)
----------------
mikolaj-pirog wrote:

I agree, done

https://github.com/llvm/llvm-project/pull/168750
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to