]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/clang/include/clang/Basic/X86Target.def
zfs: merge openzfs/zfs@508fff0e4 (zfs-2.1-release) into stable/13
[FreeBSD/FreeBSD.git] / contrib / llvm-project / clang / include / clang / Basic / X86Target.def
1 //===--- X86Target.def - X86 Feature/Processor Database ---------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file defines the X86-specific Features and Processors, as used by
10 // the X86 Targets.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #ifndef FEATURE
15 #define FEATURE(ENUM)
16 #endif
17
18 #ifndef CPU_SPECIFIC
19 #define CPU_SPECIFIC(NAME, MANGLING, FEATURES)
20 #endif
21
22 #ifndef CPU_SPECIFIC_ALIAS
23 #define CPU_SPECIFIC_ALIAS(NEW_NAME, NAME)
24 #endif
25
26 // List of CPU Supports features in order.  These need to remain in the order
27 // required by attribute 'target' checking.  Note that not all are supported/
28 // prioritized by GCC, so synchronization with GCC's implementation may require
29 // changing some existing values.
30 FEATURE(FEATURE_CMOV)
31 FEATURE(FEATURE_MMX)
32 FEATURE(FEATURE_SSE)
33 FEATURE(FEATURE_SSE2)
34 FEATURE(FEATURE_SSE3)
35 FEATURE(FEATURE_SSSE3)
36 FEATURE(FEATURE_SSE4_A)
37 FEATURE(FEATURE_SSE4_1)
38 FEATURE(FEATURE_SSE4_2)
39 FEATURE(FEATURE_POPCNT)
40 FEATURE(FEATURE_AES)
41 FEATURE(FEATURE_PCLMUL)
42 FEATURE(FEATURE_AVX)
43 FEATURE(FEATURE_BMI)
44 FEATURE(FEATURE_FMA4)
45 FEATURE(FEATURE_XOP)
46 FEATURE(FEATURE_FMA)
47 FEATURE(FEATURE_BMI2)
48 FEATURE(FEATURE_AVX2)
49 FEATURE(FEATURE_AVX512F)
50 FEATURE(FEATURE_AVX512VL)
51 FEATURE(FEATURE_AVX512BW)
52 FEATURE(FEATURE_AVX512DQ)
53 FEATURE(FEATURE_AVX512CD)
54 FEATURE(FEATURE_AVX512ER)
55 FEATURE(FEATURE_AVX512PF)
56 FEATURE(FEATURE_AVX512VBMI)
57 FEATURE(FEATURE_AVX512IFMA)
58 FEATURE(FEATURE_AVX5124VNNIW)
59 FEATURE(FEATURE_AVX5124FMAPS)
60 FEATURE(FEATURE_AVX512VPOPCNTDQ)
61 FEATURE(FEATURE_AVX512VBMI2)
62 FEATURE(FEATURE_GFNI)
63 FEATURE(FEATURE_VPCLMULQDQ)
64 FEATURE(FEATURE_AVX512VNNI)
65 FEATURE(FEATURE_AVX512BITALG)
66 FEATURE(FEATURE_AVX512BF16)
67 FEATURE(FEATURE_AVX512VP2INTERSECT)
68
69
70 // FIXME: When commented out features are supported in LLVM, enable them here.
71 CPU_SPECIFIC("generic", 'A', "")
72 CPU_SPECIFIC("pentium", 'B', "")
73 CPU_SPECIFIC("pentium_pro", 'C', "+cmov")
74 CPU_SPECIFIC("pentium_mmx", 'D', "+mmx")
75 CPU_SPECIFIC("pentium_ii", 'E', "+cmov,+mmx")
76 CPU_SPECIFIC("pentium_iii", 'H', "+cmov,+mmx,+sse")
77 CPU_SPECIFIC_ALIAS("pentium_iii_no_xmm_regs", "pentium_iii")
78 CPU_SPECIFIC("pentium_4", 'J', "+cmov,+mmx,+sse,+sse2")
79 CPU_SPECIFIC("pentium_m", 'K', "+cmov,+mmx,+sse,+sse2")
80 CPU_SPECIFIC("pentium_4_sse3", 'L', "+cmov,+mmx,+sse,+sse2,+sse3")
81 CPU_SPECIFIC("core_2_duo_ssse3", 'M', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3")
82 CPU_SPECIFIC("core_2_duo_sse4_1", 'N', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1")
83 CPU_SPECIFIC("atom", 'O', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+movbe")
84 CPU_SPECIFIC("atom_sse4_2", 'c', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt")
85 CPU_SPECIFIC("core_i7_sse4_2", 'P', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt")
86 CPU_SPECIFIC("core_aes_pclmulqdq", 'Q', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt")
87 CPU_SPECIFIC("atom_sse4_2_movbe", 'd', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt")
88 CPU_SPECIFIC("goldmont", 'i', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt")
89 CPU_SPECIFIC("sandybridge", 'R', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt,+avx")
90 CPU_SPECIFIC_ALIAS("core_2nd_gen_avx", "sandybridge")
91 CPU_SPECIFIC("ivybridge", 'S', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt,+f16c,+avx")
92 CPU_SPECIFIC_ALIAS("core_3rd_gen_avx", "ivybridge")
93 CPU_SPECIFIC("haswell", 'V', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2")
94 CPU_SPECIFIC_ALIAS("core_4th_gen_avx", "haswell")
95 CPU_SPECIFIC("core_4th_gen_avx_tsx", 'W', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2")
96 CPU_SPECIFIC("broadwell", 'X', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2,+adx")
97 CPU_SPECIFIC_ALIAS("core_5th_gen_avx", "broadwell")
98 CPU_SPECIFIC("core_5th_gen_avx_tsx", 'Y', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2,+adx")
99 CPU_SPECIFIC("knl", 'Z', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2,+avx512f,+adx,+avx512er,+avx512pf,+avx512cd")
100 CPU_SPECIFIC_ALIAS("mic_avx512", "knl")
101 CPU_SPECIFIC("skylake", 'b', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2,+adx,+mpx")
102 CPU_SPECIFIC( "skylake_avx512", 'a', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2,+avx512dq,+avx512f,+adx,+avx512cd,+avx512bw,+avx512vl,+clwb")
103 CPU_SPECIFIC("cannonlake", 'e', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2,+avx512dq,+avx512f,+adx,+avx512ifma,+avx512cd,+avx512bw,+avx512vl,+avx512vbmi")
104 CPU_SPECIFIC("knm", 'j', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2,+avx512f,+adx,+avx512er,+avx512pf,+avx512cd,+avx5124fmaps,+avx5124vnniw,+avx512vpopcntdq")
105
106 #undef CPU_SPECIFIC_ALIAS
107 #undef CPU_SPECIFIC
108 #undef PROC_64_BIT
109 #undef PROC_32_BIT
110 #undef FEATURE