2 Copyright (C) 2020-2024 Free Software Foundation, Inc.
4 This file is part of GCC.
6 GCC is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3, or (at your option)
11 GCC is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GCC; see the file COPYING3. If not see
18 <http://www.gnu.org/licenses/>. */
20 /* These are the target attribute strings for which a dispatcher is
21 available, from fold_builtin_cpu. */
22 struct _isa_names_table
24 const char *const name
;
25 const enum processor_features feature
;
26 const enum feature_priority priority
;
27 const char *const option
;
30 /* NB: isa_names_table is shared by i386-builtins.cc, driver-i386.cc and
31 gcc.target/i386/builtin_target.c. isa_names_table is a static const
32 array in i386-builtins.cc and driver-i386.cc. But it is a list of
33 assert statements in gcc.target/i386/builtin_target.c. */
35 #ifndef ISA_NAMES_TABLE_START
36 # define ISA_NAMES_TABLE_START \
37 static const struct _isa_names_table isa_names_table[] = {
40 #ifndef ISA_NAMES_TABLE_END
41 # define ISA_NAMES_TABLE_END };
44 #ifndef ISA_NAMES_TABLE_ENTRY
45 # define ISA_NAMES_TABLE_ENTRY(name, feature, priority, option) \
46 {name, feature, priority, option},
50 ISA_NAMES_TABLE_ENTRY("cmov", FEATURE_CMOV
, P_NONE
, NULL
)
51 ISA_NAMES_TABLE_ENTRY("mmx", FEATURE_MMX
, P_MMX
, "-mmmx")
52 ISA_NAMES_TABLE_ENTRY("popcnt", FEATURE_POPCNT
, P_POPCNT
, "-mpopcnt")
53 ISA_NAMES_TABLE_ENTRY("sse", FEATURE_SSE
, P_SSE
, "-msse")
54 ISA_NAMES_TABLE_ENTRY("sse2", FEATURE_SSE2
, P_SSE2
, "-msse2")
55 ISA_NAMES_TABLE_ENTRY("sse3", FEATURE_SSE3
, P_SSE3
, "-msse3")
56 ISA_NAMES_TABLE_ENTRY("ssse3", FEATURE_SSSE3
, P_SSSE3
, "-mssse3")
57 ISA_NAMES_TABLE_ENTRY("sse4.1", FEATURE_SSE4_1
, P_SSE4_1
, "-msse4.1")
58 ISA_NAMES_TABLE_ENTRY("sse4.2", FEATURE_SSE4_2
, P_SSE4_2
, "-msse4.2")
59 ISA_NAMES_TABLE_ENTRY("avx", FEATURE_AVX
, P_AVX
, "-mavx")
60 ISA_NAMES_TABLE_ENTRY("avx2", FEATURE_AVX2
, P_AVX2
, "-mavx2")
61 ISA_NAMES_TABLE_ENTRY("sse4a", FEATURE_SSE4_A
, P_SSE4_A
, "-msse4a")
62 ISA_NAMES_TABLE_ENTRY("fma4", FEATURE_FMA4
, P_FMA4
, "-mfma4")
63 ISA_NAMES_TABLE_ENTRY("xop", FEATURE_XOP
, P_XOP
, "-mxop")
64 ISA_NAMES_TABLE_ENTRY("fma", FEATURE_FMA
, P_FMA
, "-mfma")
65 ISA_NAMES_TABLE_ENTRY("avx512f", FEATURE_AVX512F
, P_AVX512F
,
67 ISA_NAMES_TABLE_ENTRY("bmi", FEATURE_BMI
, P_BMI
, "-mbmi")
68 ISA_NAMES_TABLE_ENTRY("bmi2", FEATURE_BMI2
, P_BMI2
, "-mbmi2")
69 ISA_NAMES_TABLE_ENTRY("aes", FEATURE_AES
, P_AES
, "-maes")
70 ISA_NAMES_TABLE_ENTRY("pclmul", FEATURE_PCLMUL
, P_PCLMUL
, "-mpclmul")
71 ISA_NAMES_TABLE_ENTRY("avx512vl", FEATURE_AVX512VL
, P_NONE
,
73 ISA_NAMES_TABLE_ENTRY("avx512bw", FEATURE_AVX512BW
, P_NONE
,
75 ISA_NAMES_TABLE_ENTRY("avx512dq", FEATURE_AVX512DQ
, P_NONE
,
77 ISA_NAMES_TABLE_ENTRY("avx512cd", FEATURE_AVX512CD
, P_NONE
,
79 ISA_NAMES_TABLE_ENTRY("avx512vbmi", FEATURE_AVX512VBMI
, P_NONE
,
81 ISA_NAMES_TABLE_ENTRY("avx512ifma", FEATURE_AVX512IFMA
, P_NONE
,
83 ISA_NAMES_TABLE_ENTRY("avx512vpopcntdq", FEATURE_AVX512VPOPCNTDQ
,
84 P_NONE
, "-mavx512vpopcntdq")
85 ISA_NAMES_TABLE_ENTRY("avx512vbmi2", FEATURE_AVX512VBMI2
, P_NONE
,
87 ISA_NAMES_TABLE_ENTRY("gfni", FEATURE_GFNI
, P_NONE
, "-mgfni")
88 ISA_NAMES_TABLE_ENTRY("vpclmulqdq", FEATURE_VPCLMULQDQ
, P_NONE
,
90 ISA_NAMES_TABLE_ENTRY("avx512vnni", FEATURE_AVX512VNNI
, P_NONE
,
92 ISA_NAMES_TABLE_ENTRY("avx512bitalg", FEATURE_AVX512BITALG
, P_NONE
,
94 ISA_NAMES_TABLE_ENTRY("avx512bf16", FEATURE_AVX512BF16
, P_NONE
,
96 ISA_NAMES_TABLE_ENTRY("avx512vp2intersect", FEATURE_AVX512VP2INTERSECT
,
97 P_NONE
, "-mavx512vp2intersect")
98 ISA_NAMES_TABLE_ENTRY("3dnow", FEATURE_3DNOW
, P_NONE
, "-m3dnow")
99 ISA_NAMES_TABLE_ENTRY("3dnowp", FEATURE_3DNOWP
, P_NONE
, NULL
)
100 ISA_NAMES_TABLE_ENTRY("adx", FEATURE_ADX
, P_NONE
, "-madx")
101 ISA_NAMES_TABLE_ENTRY("abm", FEATURE_ABM
, P_NONE
, "-mabm")
102 ISA_NAMES_TABLE_ENTRY("cldemote", FEATURE_CLDEMOTE
, P_NONE
,
104 ISA_NAMES_TABLE_ENTRY("clflushopt", FEATURE_CLFLUSHOPT
, P_NONE
,
106 ISA_NAMES_TABLE_ENTRY("clwb", FEATURE_CLWB
, P_NONE
, "-mclwb")
107 ISA_NAMES_TABLE_ENTRY("clzero", FEATURE_CLZERO
, P_NONE
, "-mclzero")
108 ISA_NAMES_TABLE_ENTRY("cmpxchg16b", FEATURE_CMPXCHG16B
, P_NONE
,
110 ISA_NAMES_TABLE_ENTRY("cmpxchg8b", FEATURE_CMPXCHG8B
, P_NONE
, NULL
)
111 ISA_NAMES_TABLE_ENTRY("enqcmd", FEATURE_ENQCMD
, P_NONE
, "-menqcmd")
112 ISA_NAMES_TABLE_ENTRY("f16c", FEATURE_F16C
, P_NONE
, "-mf16c")
113 ISA_NAMES_TABLE_ENTRY("fsgsbase", FEATURE_FSGSBASE
, P_NONE
,
115 ISA_NAMES_TABLE_ENTRY("fxsave", FEATURE_FXSAVE
, P_NONE
, "-mfxsr")
116 ISA_NAMES_TABLE_ENTRY("hle", FEATURE_HLE
, P_NONE
, "-mhle")
117 ISA_NAMES_TABLE_ENTRY("ibt", FEATURE_IBT
, P_NONE
, NULL
)
118 ISA_NAMES_TABLE_ENTRY("lahf_lm", FEATURE_LAHF_LM
, P_NONE
, "-msahf")
119 ISA_NAMES_TABLE_ENTRY("lm", FEATURE_LM
, P_NONE
, NULL
)
120 ISA_NAMES_TABLE_ENTRY("lwp", FEATURE_LWP
, P_NONE
, "-mlwp")
121 ISA_NAMES_TABLE_ENTRY("lzcnt", FEATURE_LZCNT
, P_NONE
, "-mlzcnt")
122 ISA_NAMES_TABLE_ENTRY("movbe", FEATURE_MOVBE
, P_NONE
, "-mmovbe")
123 ISA_NAMES_TABLE_ENTRY("movdir64b", FEATURE_MOVDIR64B
, P_NONE
,
125 ISA_NAMES_TABLE_ENTRY("movdiri", FEATURE_MOVDIRI
, P_NONE
, "-mmovdiri")
126 ISA_NAMES_TABLE_ENTRY("mwaitx", FEATURE_MWAITX
, P_NONE
, "-mmwaitx")
127 ISA_NAMES_TABLE_ENTRY("osxsave", FEATURE_OSXSAVE
, P_NONE
, NULL
)
128 ISA_NAMES_TABLE_ENTRY("pconfig", FEATURE_PCONFIG
, P_NONE
, "-mpconfig")
129 ISA_NAMES_TABLE_ENTRY("pku", FEATURE_PKU
, P_NONE
, "-mpku")
130 ISA_NAMES_TABLE_ENTRY("prfchw", FEATURE_PRFCHW
, P_NONE
, "-mprfchw")
131 ISA_NAMES_TABLE_ENTRY("ptwrite", FEATURE_PTWRITE
, P_NONE
, "-mptwrite")
132 ISA_NAMES_TABLE_ENTRY("rdpid", FEATURE_RDPID
, P_NONE
, "-mrdpid")
133 ISA_NAMES_TABLE_ENTRY("rdrnd", FEATURE_RDRND
, P_NONE
, "-mrdrnd")
134 ISA_NAMES_TABLE_ENTRY("rdseed", FEATURE_RDSEED
, P_NONE
, "-mrdseed")
135 ISA_NAMES_TABLE_ENTRY("rtm", FEATURE_RTM
, P_NONE
, "-mrtm")
136 ISA_NAMES_TABLE_ENTRY("serialize", FEATURE_SERIALIZE
, P_NONE
,
138 ISA_NAMES_TABLE_ENTRY("sgx", FEATURE_SGX
, P_NONE
, "-msgx")
139 ISA_NAMES_TABLE_ENTRY("sha", FEATURE_SHA
, P_NONE
, "-msha")
140 ISA_NAMES_TABLE_ENTRY("shstk", FEATURE_SHSTK
, P_NONE
, "-mshstk")
141 ISA_NAMES_TABLE_ENTRY("tbm", FEATURE_TBM
, P_NONE
, "-mtbm")
142 ISA_NAMES_TABLE_ENTRY("tsxldtrk", FEATURE_TSXLDTRK
, P_NONE
,
144 ISA_NAMES_TABLE_ENTRY("vaes", FEATURE_VAES
, P_NONE
, "-mvaes")
145 ISA_NAMES_TABLE_ENTRY("waitpkg", FEATURE_WAITPKG
, P_NONE
, "-mwaitpkg")
146 ISA_NAMES_TABLE_ENTRY("wbnoinvd", FEATURE_WBNOINVD
, P_NONE
,
148 ISA_NAMES_TABLE_ENTRY("xsave", FEATURE_XSAVE
, P_NONE
, "-mxsave")
149 ISA_NAMES_TABLE_ENTRY("xsavec", FEATURE_XSAVEC
, P_NONE
, "-mxsavec")
150 ISA_NAMES_TABLE_ENTRY("xsaveopt", FEATURE_XSAVEOPT
, P_NONE
,
152 ISA_NAMES_TABLE_ENTRY("xsaves", FEATURE_XSAVES
, P_NONE
, "-mxsaves")
153 ISA_NAMES_TABLE_ENTRY("amx-tile", FEATURE_AMX_TILE
, P_NONE
, "-mamx-tile")
154 ISA_NAMES_TABLE_ENTRY("amx-int8", FEATURE_AMX_INT8
, P_NONE
, "-mamx-int8")
155 ISA_NAMES_TABLE_ENTRY("amx-bf16", FEATURE_AMX_BF16
, P_NONE
, "-mamx-bf16")
156 ISA_NAMES_TABLE_ENTRY("uintr", FEATURE_UINTR
, P_NONE
, "-muintr")
157 ISA_NAMES_TABLE_ENTRY("hreset", FEATURE_HRESET
, P_NONE
, "-mhreset")
158 ISA_NAMES_TABLE_ENTRY("kl", FEATURE_KL
, P_NONE
, "-mkl")
159 ISA_NAMES_TABLE_ENTRY("aeskle", FEATURE_AESKLE
, P_NONE
, NULL
)
160 ISA_NAMES_TABLE_ENTRY("widekl", FEATURE_WIDEKL
, P_NONE
, "-mwidekl")
161 ISA_NAMES_TABLE_ENTRY("avxvnni", FEATURE_AVXVNNI
, P_NONE
, "-mavxvnni")
162 ISA_NAMES_TABLE_ENTRY("avx512fp16", FEATURE_AVX512FP16
, P_NONE
, "-mavx512fp16")
163 ISA_NAMES_TABLE_ENTRY("x86-64", FEATURE_X86_64_BASELINE
, P_X86_64_BASELINE
,
165 ISA_NAMES_TABLE_ENTRY("x86-64-v2", FEATURE_X86_64_V2
, P_X86_64_V2
, NULL
)
166 ISA_NAMES_TABLE_ENTRY("x86-64-v3", FEATURE_X86_64_V3
, P_X86_64_V3
, NULL
)
167 ISA_NAMES_TABLE_ENTRY("x86-64-v4", FEATURE_X86_64_V4
, P_X86_64_V4
, NULL
)
168 ISA_NAMES_TABLE_ENTRY("avxifma", FEATURE_AVXIFMA
, P_NONE
, "-mavxifma")
169 ISA_NAMES_TABLE_ENTRY("avxvnniint8", FEATURE_AVXVNNIINT8
,
170 P_NONE
, "-mavxvnniint8")
171 ISA_NAMES_TABLE_ENTRY("avxneconvert", FEATURE_AVXNECONVERT
,
172 P_NONE
, "-mavxneconvert")
173 ISA_NAMES_TABLE_ENTRY("cmpccxadd", FEATURE_CMPCCXADD
, P_NONE
, "-mcmpccxadd")
174 ISA_NAMES_TABLE_ENTRY("amx-fp16", FEATURE_AMX_FP16
, P_NONE
, "-mamx-fp16")
175 ISA_NAMES_TABLE_ENTRY("prefetchi", FEATURE_PREFETCHI
, P_NONE
, "-mprefetchi")
176 ISA_NAMES_TABLE_ENTRY("raoint", FEATURE_RAOINT
, P_NONE
, "-mraoint")
177 ISA_NAMES_TABLE_ENTRY("amx-complex", FEATURE_AMX_COMPLEX
,
178 P_NONE
, "-mamx-complex")
179 ISA_NAMES_TABLE_ENTRY("avxvnniint16", FEATURE_AVXVNNIINT16
,
180 P_NONE
, "-mavxvnniint16")
181 ISA_NAMES_TABLE_ENTRY("sm3", FEATURE_SM3
, P_NONE
, "-msm3")
182 ISA_NAMES_TABLE_ENTRY("sha512", FEATURE_SHA512
, P_NONE
, "-msha512")
183 ISA_NAMES_TABLE_ENTRY("sm4", FEATURE_SM4
, P_NONE
, "-msm4")
184 ISA_NAMES_TABLE_ENTRY("apxf", FEATURE_APX_F
, P_NONE
, "-mapxf")
185 ISA_NAMES_TABLE_ENTRY("usermsr", FEATURE_USER_MSR
, P_NONE
, "-musermsr")
186 ISA_NAMES_TABLE_ENTRY("avx10.1", FEATURE_AVX10_1_256
, P_NONE
, "-mavx10.1")
187 ISA_NAMES_TABLE_ENTRY("avx10.1-256", FEATURE_AVX10_1_256
, P_AVX10_1_256
, "-mavx10.1-256")
188 ISA_NAMES_TABLE_ENTRY("avx10.1-512", FEATURE_AVX10_1_512
, P_AVX10_1_512
, "-mavx10.1-512")
189 ISA_NAMES_TABLE_ENTRY("avx10.2", FEATURE_AVX10_2_256
, P_NONE
, "-mavx10.2")
190 ISA_NAMES_TABLE_ENTRY("avx10.2-256", FEATURE_AVX10_2_256
, P_NONE
, "-mavx10.2-256")
191 ISA_NAMES_TABLE_ENTRY("avx10.2-512", FEATURE_AVX10_2_512
, P_NONE
, "-mavx10.2-512")