authorgravatar for lgustaf1@binghamton.eduLayne Gustafson <lgustaf1@binghamton.edu> 2019-12-20 20:07:29-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-19 20:53:19-05:00
logc8f1e0d6d8f3ccfa952e9612903783baa9b2c12f
treebf2d3b89fb8475715caa14d5e2b3cffcf85b3a92
parentc131e50ea7ea0fb95d188c3d0f71ef77bcc96952
signaturelock-open Commit is signed but in an unrecognized format.

Remove llvm_name from features


16 files changed, 3246 insertions(+), 4072 deletions(-)

lib/std/target.zig-1
...@@ -861,7 +861,6 @@ pub const x86 = @import("target/x86.zig");...@@ -861,7 +861,6 @@ pub const x86 = @import("target/x86.zig");
861pub const Feature = struct {861pub const Feature = struct {
862 name: []const u8,862 name: []const u8,
863 description: []const u8,863 description: []const u8,
864 llvm_name: []const u8,
865864
866 subfeatures: []*const Feature,865 subfeatures: []*const Feature,
867};866};
lib/std/target/aarch64.zig+418-571
...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_aes = Feature{4pub const feature_aes = Feature{
5 .name = "aes",5 .name = "aes",
6 .description = "Enable AES support",6 .description = "Enable AES support",
7 .llvm_name = "aes",
8 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
9 &feature_fpArmv8,8 &feature_fpArmv8,
10 },9 },
...@@ -13,7 +12,6 @@ pub const feature_aes = Feature{...@@ -13,7 +12,6 @@ pub const feature_aes = Feature{
13pub const feature_am = Feature{12pub const feature_am = Feature{
14 .name = "am",13 .name = "am",
15 .description = "Enable v8.4-A Activity Monitors extension",14 .description = "Enable v8.4-A Activity Monitors extension",
16 .llvm_name = "am",
17 .subfeatures = &[_]*const Feature {15 .subfeatures = &[_]*const Feature {
18 },16 },
19};17};
...@@ -21,7 +19,6 @@ pub const feature_am = Feature{...@@ -21,7 +19,6 @@ pub const feature_am = Feature{
21pub const feature_aggressiveFma = Feature{19pub const feature_aggressiveFma = Feature{
22 .name = "aggressive-fma",20 .name = "aggressive-fma",
23 .description = "Enable Aggressive FMA for floating-point.",21 .description = "Enable Aggressive FMA for floating-point.",
24 .llvm_name = "aggressive-fma",
25 .subfeatures = &[_]*const Feature {22 .subfeatures = &[_]*const Feature {
26 },23 },
27};24};
...@@ -29,7 +26,6 @@ pub const feature_aggressiveFma = Feature{...@@ -29,7 +26,6 @@ pub const feature_aggressiveFma = Feature{
29pub const feature_altnzcv = Feature{26pub const feature_altnzcv = Feature{
30 .name = "altnzcv",27 .name = "altnzcv",
31 .description = "Enable alternative NZCV format for floating point comparisons",28 .description = "Enable alternative NZCV format for floating point comparisons",
32 .llvm_name = "altnzcv",
33 .subfeatures = &[_]*const Feature {29 .subfeatures = &[_]*const Feature {
34 },30 },
35};31};
...@@ -37,7 +33,6 @@ pub const feature_altnzcv = Feature{...@@ -37,7 +33,6 @@ pub const feature_altnzcv = Feature{
37pub const feature_alternateSextloadCvtF32Pattern = Feature{33pub const feature_alternateSextloadCvtF32Pattern = Feature{
38 .name = "alternate-sextload-cvt-f32-pattern",34 .name = "alternate-sextload-cvt-f32-pattern",
39 .description = "Use alternative pattern for sextload convert to f32",35 .description = "Use alternative pattern for sextload convert to f32",
40 .llvm_name = "alternate-sextload-cvt-f32-pattern",
41 .subfeatures = &[_]*const Feature {36 .subfeatures = &[_]*const Feature {
42 },37 },
43};38};
...@@ -45,7 +40,6 @@ pub const feature_alternateSextloadCvtF32Pattern = Feature{...@@ -45,7 +40,6 @@ pub const feature_alternateSextloadCvtF32Pattern = Feature{
45pub const feature_arithBccFusion = Feature{40pub const feature_arithBccFusion = Feature{
46 .name = "arith-bcc-fusion",41 .name = "arith-bcc-fusion",
47 .description = "CPU fuses arithmetic+bcc operations",42 .description = "CPU fuses arithmetic+bcc operations",
48 .llvm_name = "arith-bcc-fusion",
49 .subfeatures = &[_]*const Feature {43 .subfeatures = &[_]*const Feature {
50 },44 },
51};45};
...@@ -53,7 +47,6 @@ pub const feature_arithBccFusion = Feature{...@@ -53,7 +47,6 @@ pub const feature_arithBccFusion = Feature{
53pub const feature_arithCbzFusion = Feature{47pub const feature_arithCbzFusion = Feature{
54 .name = "arith-cbz-fusion",48 .name = "arith-cbz-fusion",
55 .description = "CPU fuses arithmetic + cbz/cbnz operations",49 .description = "CPU fuses arithmetic + cbz/cbnz operations",
56 .llvm_name = "arith-cbz-fusion",
57 .subfeatures = &[_]*const Feature {50 .subfeatures = &[_]*const Feature {
58 },51 },
59};52};
...@@ -61,7 +54,6 @@ pub const feature_arithCbzFusion = Feature{...@@ -61,7 +54,6 @@ pub const feature_arithCbzFusion = Feature{
61pub const feature_balanceFpOps = Feature{54pub const feature_balanceFpOps = Feature{
62 .name = "balance-fp-ops",55 .name = "balance-fp-ops",
63 .description = "balance mix of odd and even D-registers for fp multiply(-accumulate) ops",56 .description = "balance mix of odd and even D-registers for fp multiply(-accumulate) ops",
64 .llvm_name = "balance-fp-ops",
65 .subfeatures = &[_]*const Feature {57 .subfeatures = &[_]*const Feature {
66 },58 },
67};59};
...@@ -69,7 +61,6 @@ pub const feature_balanceFpOps = Feature{...@@ -69,7 +61,6 @@ pub const feature_balanceFpOps = Feature{
69pub const feature_bti = Feature{61pub const feature_bti = Feature{
70 .name = "bti",62 .name = "bti",
71 .description = "Enable Branch Target Identification",63 .description = "Enable Branch Target Identification",
72 .llvm_name = "bti",
73 .subfeatures = &[_]*const Feature {64 .subfeatures = &[_]*const Feature {
74 },65 },
75};66};
...@@ -77,7 +68,6 @@ pub const feature_bti = Feature{...@@ -77,7 +68,6 @@ pub const feature_bti = Feature{
77pub const feature_ccidx = Feature{68pub const feature_ccidx = Feature{
78 .name = "ccidx",69 .name = "ccidx",
79 .description = "Enable v8.3-A Extend of the CCSIDR number of sets",70 .description = "Enable v8.3-A Extend of the CCSIDR number of sets",
80 .llvm_name = "ccidx",
81 .subfeatures = &[_]*const Feature {71 .subfeatures = &[_]*const Feature {
82 },72 },
83};73};
...@@ -85,7 +75,6 @@ pub const feature_ccidx = Feature{...@@ -85,7 +75,6 @@ pub const feature_ccidx = Feature{
85pub const feature_ccpp = Feature{75pub const feature_ccpp = Feature{
86 .name = "ccpp",76 .name = "ccpp",
87 .description = "Enable v8.2 data Cache Clean to Point of Persistence",77 .description = "Enable v8.2 data Cache Clean to Point of Persistence",
88 .llvm_name = "ccpp",
89 .subfeatures = &[_]*const Feature {78 .subfeatures = &[_]*const Feature {
90 },79 },
91};80};
...@@ -93,7 +82,6 @@ pub const feature_ccpp = Feature{...@@ -93,7 +82,6 @@ pub const feature_ccpp = Feature{
93pub const feature_crc = Feature{82pub const feature_crc = Feature{
94 .name = "crc",83 .name = "crc",
95 .description = "Enable ARMv8 CRC-32 checksum instructions",84 .description = "Enable ARMv8 CRC-32 checksum instructions",
96 .llvm_name = "crc",
97 .subfeatures = &[_]*const Feature {85 .subfeatures = &[_]*const Feature {
98 },86 },
99};87};
...@@ -101,7 +89,6 @@ pub const feature_crc = Feature{...@@ -101,7 +89,6 @@ pub const feature_crc = Feature{
101pub const feature_ccdp = Feature{89pub const feature_ccdp = Feature{
102 .name = "ccdp",90 .name = "ccdp",
103 .description = "Enable v8.5 Cache Clean to Point of Deep Persistence",91 .description = "Enable v8.5 Cache Clean to Point of Deep Persistence",
104 .llvm_name = "ccdp",
105 .subfeatures = &[_]*const Feature {92 .subfeatures = &[_]*const Feature {
106 },93 },
107};94};
...@@ -109,7 +96,6 @@ pub const feature_ccdp = Feature{...@@ -109,7 +96,6 @@ pub const feature_ccdp = Feature{
109pub const feature_callSavedX8 = Feature{96pub const feature_callSavedX8 = Feature{
110 .name = "call-saved-x8",97 .name = "call-saved-x8",
111 .description = "Make X8 callee saved.",98 .description = "Make X8 callee saved.",
112 .llvm_name = "call-saved-x8",
113 .subfeatures = &[_]*const Feature {99 .subfeatures = &[_]*const Feature {
114 },100 },
115};101};
...@@ -117,7 +103,6 @@ pub const feature_callSavedX8 = Feature{...@@ -117,7 +103,6 @@ pub const feature_callSavedX8 = Feature{
117pub const feature_callSavedX9 = Feature{103pub const feature_callSavedX9 = Feature{
118 .name = "call-saved-x9",104 .name = "call-saved-x9",
119 .description = "Make X9 callee saved.",105 .description = "Make X9 callee saved.",
120 .llvm_name = "call-saved-x9",
121 .subfeatures = &[_]*const Feature {106 .subfeatures = &[_]*const Feature {
122 },107 },
123};108};
...@@ -125,7 +110,6 @@ pub const feature_callSavedX9 = Feature{...@@ -125,7 +110,6 @@ pub const feature_callSavedX9 = Feature{
125pub const feature_callSavedX10 = Feature{110pub const feature_callSavedX10 = Feature{
126 .name = "call-saved-x10",111 .name = "call-saved-x10",
127 .description = "Make X10 callee saved.",112 .description = "Make X10 callee saved.",
128 .llvm_name = "call-saved-x10",
129 .subfeatures = &[_]*const Feature {113 .subfeatures = &[_]*const Feature {
130 },114 },
131};115};
...@@ -133,7 +117,6 @@ pub const feature_callSavedX10 = Feature{...@@ -133,7 +117,6 @@ pub const feature_callSavedX10 = Feature{
133pub const feature_callSavedX11 = Feature{117pub const feature_callSavedX11 = Feature{
134 .name = "call-saved-x11",118 .name = "call-saved-x11",
135 .description = "Make X11 callee saved.",119 .description = "Make X11 callee saved.",
136 .llvm_name = "call-saved-x11",
137 .subfeatures = &[_]*const Feature {120 .subfeatures = &[_]*const Feature {
138 },121 },
139};122};
...@@ -141,7 +124,6 @@ pub const feature_callSavedX11 = Feature{...@@ -141,7 +124,6 @@ pub const feature_callSavedX11 = Feature{
141pub const feature_callSavedX12 = Feature{124pub const feature_callSavedX12 = Feature{
142 .name = "call-saved-x12",125 .name = "call-saved-x12",
143 .description = "Make X12 callee saved.",126 .description = "Make X12 callee saved.",
144 .llvm_name = "call-saved-x12",
145 .subfeatures = &[_]*const Feature {127 .subfeatures = &[_]*const Feature {
146 },128 },
147};129};
...@@ -149,7 +131,6 @@ pub const feature_callSavedX12 = Feature{...@@ -149,7 +131,6 @@ pub const feature_callSavedX12 = Feature{
149pub const feature_callSavedX13 = Feature{131pub const feature_callSavedX13 = Feature{
150 .name = "call-saved-x13",132 .name = "call-saved-x13",
151 .description = "Make X13 callee saved.",133 .description = "Make X13 callee saved.",
152 .llvm_name = "call-saved-x13",
153 .subfeatures = &[_]*const Feature {134 .subfeatures = &[_]*const Feature {
154 },135 },
155};136};
...@@ -157,7 +138,6 @@ pub const feature_callSavedX13 = Feature{...@@ -157,7 +138,6 @@ pub const feature_callSavedX13 = Feature{
157pub const feature_callSavedX14 = Feature{138pub const feature_callSavedX14 = Feature{
158 .name = "call-saved-x14",139 .name = "call-saved-x14",
159 .description = "Make X14 callee saved.",140 .description = "Make X14 callee saved.",
160 .llvm_name = "call-saved-x14",
161 .subfeatures = &[_]*const Feature {141 .subfeatures = &[_]*const Feature {
162 },142 },
163};143};
...@@ -165,7 +145,6 @@ pub const feature_callSavedX14 = Feature{...@@ -165,7 +145,6 @@ pub const feature_callSavedX14 = Feature{
165pub const feature_callSavedX15 = Feature{145pub const feature_callSavedX15 = Feature{
166 .name = "call-saved-x15",146 .name = "call-saved-x15",
167 .description = "Make X15 callee saved.",147 .description = "Make X15 callee saved.",
168 .llvm_name = "call-saved-x15",
169 .subfeatures = &[_]*const Feature {148 .subfeatures = &[_]*const Feature {
170 },149 },
171};150};
...@@ -173,7 +152,6 @@ pub const feature_callSavedX15 = Feature{...@@ -173,7 +152,6 @@ pub const feature_callSavedX15 = Feature{
173pub const feature_callSavedX18 = Feature{152pub const feature_callSavedX18 = Feature{
174 .name = "call-saved-x18",153 .name = "call-saved-x18",
175 .description = "Make X18 callee saved.",154 .description = "Make X18 callee saved.",
176 .llvm_name = "call-saved-x18",
177 .subfeatures = &[_]*const Feature {155 .subfeatures = &[_]*const Feature {
178 },156 },
179};157};
...@@ -181,7 +159,6 @@ pub const feature_callSavedX18 = Feature{...@@ -181,7 +159,6 @@ pub const feature_callSavedX18 = Feature{
181pub const feature_complxnum = Feature{159pub const feature_complxnum = Feature{
182 .name = "complxnum",160 .name = "complxnum",
183 .description = "Enable v8.3-A Floating-point complex number support",161 .description = "Enable v8.3-A Floating-point complex number support",
184 .llvm_name = "complxnum",
185 .subfeatures = &[_]*const Feature {162 .subfeatures = &[_]*const Feature {
186 &feature_fpArmv8,163 &feature_fpArmv8,
187 },164 },
...@@ -190,7 +167,6 @@ pub const feature_complxnum = Feature{...@@ -190,7 +167,6 @@ pub const feature_complxnum = Feature{
190pub const feature_crypto = Feature{167pub const feature_crypto = Feature{
191 .name = "crypto",168 .name = "crypto",
192 .description = "Enable cryptographic instructions",169 .description = "Enable cryptographic instructions",
193 .llvm_name = "crypto",
194 .subfeatures = &[_]*const Feature {170 .subfeatures = &[_]*const Feature {
195 &feature_fpArmv8,171 &feature_fpArmv8,
196 },172 },
...@@ -199,7 +175,6 @@ pub const feature_crypto = Feature{...@@ -199,7 +175,6 @@ pub const feature_crypto = Feature{
199pub const feature_customCheapAsMove = Feature{175pub const feature_customCheapAsMove = Feature{
200 .name = "custom-cheap-as-move",176 .name = "custom-cheap-as-move",
201 .description = "Use custom handling of cheap instructions",177 .description = "Use custom handling of cheap instructions",
202 .llvm_name = "custom-cheap-as-move",
203 .subfeatures = &[_]*const Feature {178 .subfeatures = &[_]*const Feature {
204 },179 },
205};180};
...@@ -207,7 +182,6 @@ pub const feature_customCheapAsMove = Feature{...@@ -207,7 +182,6 @@ pub const feature_customCheapAsMove = Feature{
207pub const feature_dit = Feature{182pub const feature_dit = Feature{
208 .name = "dit",183 .name = "dit",
209 .description = "Enable v8.4-A Data Independent Timing instructions",184 .description = "Enable v8.4-A Data Independent Timing instructions",
210 .llvm_name = "dit",
211 .subfeatures = &[_]*const Feature {185 .subfeatures = &[_]*const Feature {
212 },186 },
213};187};
...@@ -215,7 +189,6 @@ pub const feature_dit = Feature{...@@ -215,7 +189,6 @@ pub const feature_dit = Feature{
215pub const feature_disableLatencySchedHeuristic = Feature{189pub const feature_disableLatencySchedHeuristic = Feature{
216 .name = "disable-latency-sched-heuristic",190 .name = "disable-latency-sched-heuristic",
217 .description = "Disable latency scheduling heuristic",191 .description = "Disable latency scheduling heuristic",
218 .llvm_name = "disable-latency-sched-heuristic",
219 .subfeatures = &[_]*const Feature {192 .subfeatures = &[_]*const Feature {
220 },193 },
221};194};
...@@ -223,7 +196,6 @@ pub const feature_disableLatencySchedHeuristic = Feature{...@@ -223,7 +196,6 @@ pub const feature_disableLatencySchedHeuristic = Feature{
223pub const feature_dotprod = Feature{196pub const feature_dotprod = Feature{
224 .name = "dotprod",197 .name = "dotprod",
225 .description = "Enable dot product support",198 .description = "Enable dot product support",
226 .llvm_name = "dotprod",
227 .subfeatures = &[_]*const Feature {199 .subfeatures = &[_]*const Feature {
228 },200 },
229};201};
...@@ -231,7 +203,6 @@ pub const feature_dotprod = Feature{...@@ -231,7 +203,6 @@ pub const feature_dotprod = Feature{
231pub const feature_ete = Feature{203pub const feature_ete = Feature{
232 .name = "ete",204 .name = "ete",
233 .description = "Enable Embedded Trace Extension",205 .description = "Enable Embedded Trace Extension",
234 .llvm_name = "ete",
235 .subfeatures = &[_]*const Feature {206 .subfeatures = &[_]*const Feature {
236 &feature_trbe,207 &feature_trbe,
237 },208 },
...@@ -240,7 +211,6 @@ pub const feature_ete = Feature{...@@ -240,7 +211,6 @@ pub const feature_ete = Feature{
240pub const feature_exynosCheapAsMove = Feature{211pub const feature_exynosCheapAsMove = Feature{
241 .name = "exynos-cheap-as-move",212 .name = "exynos-cheap-as-move",
242 .description = "Use Exynos specific handling of cheap instructions",213 .description = "Use Exynos specific handling of cheap instructions",
243 .llvm_name = "exynos-cheap-as-move",
244 .subfeatures = &[_]*const Feature {214 .subfeatures = &[_]*const Feature {
245 &feature_customCheapAsMove,215 &feature_customCheapAsMove,
246 },216 },
...@@ -249,7 +219,6 @@ pub const feature_exynosCheapAsMove = Feature{...@@ -249,7 +219,6 @@ pub const feature_exynosCheapAsMove = Feature{
249pub const feature_fmi = Feature{219pub const feature_fmi = Feature{
250 .name = "fmi",220 .name = "fmi",
251 .description = "Enable v8.4-A Flag Manipulation Instructions",221 .description = "Enable v8.4-A Flag Manipulation Instructions",
252 .llvm_name = "fmi",
253 .subfeatures = &[_]*const Feature {222 .subfeatures = &[_]*const Feature {
254 },223 },
255};224};
...@@ -257,7 +226,6 @@ pub const feature_fmi = Feature{...@@ -257,7 +226,6 @@ pub const feature_fmi = Feature{
257pub const feature_fp16fml = Feature{226pub const feature_fp16fml = Feature{
258 .name = "fp16fml",227 .name = "fp16fml",
259 .description = "Enable FP16 FML instructions",228 .description = "Enable FP16 FML instructions",
260 .llvm_name = "fp16fml",
261 .subfeatures = &[_]*const Feature {229 .subfeatures = &[_]*const Feature {
262 &feature_fpArmv8,230 &feature_fpArmv8,
263 },231 },
...@@ -266,7 +234,6 @@ pub const feature_fp16fml = Feature{...@@ -266,7 +234,6 @@ pub const feature_fp16fml = Feature{
266pub const feature_fpArmv8 = Feature{234pub const feature_fpArmv8 = Feature{
267 .name = "fp-armv8",235 .name = "fp-armv8",
268 .description = "Enable ARMv8 FP",236 .description = "Enable ARMv8 FP",
269 .llvm_name = "fp-armv8",
270 .subfeatures = &[_]*const Feature {237 .subfeatures = &[_]*const Feature {
271 },238 },
272};239};
...@@ -274,7 +241,6 @@ pub const feature_fpArmv8 = Feature{...@@ -274,7 +241,6 @@ pub const feature_fpArmv8 = Feature{
274pub const feature_fptoint = Feature{241pub const feature_fptoint = Feature{
275 .name = "fptoint",242 .name = "fptoint",
276 .description = "Enable FRInt[32|64][Z|X] instructions that round a floating-point number to an integer (in FP format) forcing it to fit into a 32- or 64-bit int",243 .description = "Enable FRInt[32|64][Z|X] instructions that round a floating-point number to an integer (in FP format) forcing it to fit into a 32- or 64-bit int",
277 .llvm_name = "fptoint",
278 .subfeatures = &[_]*const Feature {244 .subfeatures = &[_]*const Feature {
279 },245 },
280};246};
...@@ -282,7 +248,6 @@ pub const feature_fptoint = Feature{...@@ -282,7 +248,6 @@ pub const feature_fptoint = Feature{
282pub const feature_force32bitJumpTables = Feature{248pub const feature_force32bitJumpTables = Feature{
283 .name = "force-32bit-jump-tables",249 .name = "force-32bit-jump-tables",
284 .description = "Force jump table entries to be 32-bits wide except at MinSize",250 .description = "Force jump table entries to be 32-bits wide except at MinSize",
285 .llvm_name = "force-32bit-jump-tables",
286 .subfeatures = &[_]*const Feature {251 .subfeatures = &[_]*const Feature {
287 },252 },
288};253};
...@@ -290,7 +255,6 @@ pub const feature_force32bitJumpTables = Feature{...@@ -290,7 +255,6 @@ pub const feature_force32bitJumpTables = Feature{
290pub const feature_fullfp16 = Feature{255pub const feature_fullfp16 = Feature{
291 .name = "fullfp16",256 .name = "fullfp16",
292 .description = "Full FP16",257 .description = "Full FP16",
293 .llvm_name = "fullfp16",
294 .subfeatures = &[_]*const Feature {258 .subfeatures = &[_]*const Feature {
295 &feature_fpArmv8,259 &feature_fpArmv8,
296 },260 },
...@@ -299,7 +263,6 @@ pub const feature_fullfp16 = Feature{...@@ -299,7 +263,6 @@ pub const feature_fullfp16 = Feature{
299pub const feature_fuseAes = Feature{263pub const feature_fuseAes = Feature{
300 .name = "fuse-aes",264 .name = "fuse-aes",
301 .description = "CPU fuses AES crypto operations",265 .description = "CPU fuses AES crypto operations",
302 .llvm_name = "fuse-aes",
303 .subfeatures = &[_]*const Feature {266 .subfeatures = &[_]*const Feature {
304 },267 },
305};268};
...@@ -307,7 +270,6 @@ pub const feature_fuseAes = Feature{...@@ -307,7 +270,6 @@ pub const feature_fuseAes = Feature{
307pub const feature_fuseAddress = Feature{270pub const feature_fuseAddress = Feature{
308 .name = "fuse-address",271 .name = "fuse-address",
309 .description = "CPU fuses address generation and memory operations",272 .description = "CPU fuses address generation and memory operations",
310 .llvm_name = "fuse-address",
311 .subfeatures = &[_]*const Feature {273 .subfeatures = &[_]*const Feature {
312 },274 },
313};275};
...@@ -315,7 +277,6 @@ pub const feature_fuseAddress = Feature{...@@ -315,7 +277,6 @@ pub const feature_fuseAddress = Feature{
315pub const feature_fuseArithLogic = Feature{277pub const feature_fuseArithLogic = Feature{
316 .name = "fuse-arith-logic",278 .name = "fuse-arith-logic",
317 .description = "CPU fuses arithmetic and logic operations",279 .description = "CPU fuses arithmetic and logic operations",
318 .llvm_name = "fuse-arith-logic",
319 .subfeatures = &[_]*const Feature {280 .subfeatures = &[_]*const Feature {
320 },281 },
321};282};
...@@ -323,7 +284,6 @@ pub const feature_fuseArithLogic = Feature{...@@ -323,7 +284,6 @@ pub const feature_fuseArithLogic = Feature{
323pub const feature_fuseCsel = Feature{284pub const feature_fuseCsel = Feature{
324 .name = "fuse-csel",285 .name = "fuse-csel",
325 .description = "CPU fuses conditional select operations",286 .description = "CPU fuses conditional select operations",
326 .llvm_name = "fuse-csel",
327 .subfeatures = &[_]*const Feature {287 .subfeatures = &[_]*const Feature {
328 },288 },
329};289};
...@@ -331,7 +291,6 @@ pub const feature_fuseCsel = Feature{...@@ -331,7 +291,6 @@ pub const feature_fuseCsel = Feature{
331pub const feature_fuseCryptoEor = Feature{291pub const feature_fuseCryptoEor = Feature{
332 .name = "fuse-crypto-eor",292 .name = "fuse-crypto-eor",
333 .description = "CPU fuses AES/PMULL and EOR operations",293 .description = "CPU fuses AES/PMULL and EOR operations",
334 .llvm_name = "fuse-crypto-eor",
335 .subfeatures = &[_]*const Feature {294 .subfeatures = &[_]*const Feature {
336 },295 },
337};296};
...@@ -339,7 +298,6 @@ pub const feature_fuseCryptoEor = Feature{...@@ -339,7 +298,6 @@ pub const feature_fuseCryptoEor = Feature{
339pub const feature_fuseLiterals = Feature{298pub const feature_fuseLiterals = Feature{
340 .name = "fuse-literals",299 .name = "fuse-literals",
341 .description = "CPU fuses literal generation operations",300 .description = "CPU fuses literal generation operations",
342 .llvm_name = "fuse-literals",
343 .subfeatures = &[_]*const Feature {301 .subfeatures = &[_]*const Feature {
344 },302 },
345};303};
...@@ -347,7 +305,6 @@ pub const feature_fuseLiterals = Feature{...@@ -347,7 +305,6 @@ pub const feature_fuseLiterals = Feature{
347pub const feature_jsconv = Feature{305pub const feature_jsconv = Feature{
348 .name = "jsconv",306 .name = "jsconv",
349 .description = "Enable v8.3-A JavaScript FP conversion enchancement",307 .description = "Enable v8.3-A JavaScript FP conversion enchancement",
350 .llvm_name = "jsconv",
351 .subfeatures = &[_]*const Feature {308 .subfeatures = &[_]*const Feature {
352 &feature_fpArmv8,309 &feature_fpArmv8,
353 },310 },
...@@ -356,7 +313,6 @@ pub const feature_jsconv = Feature{...@@ -356,7 +313,6 @@ pub const feature_jsconv = Feature{
356pub const feature_lor = Feature{313pub const feature_lor = Feature{
357 .name = "lor",314 .name = "lor",
358 .description = "Enables ARM v8.1 Limited Ordering Regions extension",315 .description = "Enables ARM v8.1 Limited Ordering Regions extension",
359 .llvm_name = "lor",
360 .subfeatures = &[_]*const Feature {316 .subfeatures = &[_]*const Feature {
361 },317 },
362};318};
...@@ -364,7 +320,6 @@ pub const feature_lor = Feature{...@@ -364,7 +320,6 @@ pub const feature_lor = Feature{
364pub const feature_lse = Feature{320pub const feature_lse = Feature{
365 .name = "lse",321 .name = "lse",
366 .description = "Enable ARMv8.1 Large System Extension (LSE) atomic instructions",322 .description = "Enable ARMv8.1 Large System Extension (LSE) atomic instructions",
367 .llvm_name = "lse",
368 .subfeatures = &[_]*const Feature {323 .subfeatures = &[_]*const Feature {
369 },324 },
370};325};
...@@ -372,7 +327,6 @@ pub const feature_lse = Feature{...@@ -372,7 +327,6 @@ pub const feature_lse = Feature{
372pub const feature_lslFast = Feature{327pub const feature_lslFast = Feature{
373 .name = "lsl-fast",328 .name = "lsl-fast",
374 .description = "CPU has a fastpath logical shift of up to 3 places",329 .description = "CPU has a fastpath logical shift of up to 3 places",
375 .llvm_name = "lsl-fast",
376 .subfeatures = &[_]*const Feature {330 .subfeatures = &[_]*const Feature {
377 },331 },
378};332};
...@@ -380,7 +334,6 @@ pub const feature_lslFast = Feature{...@@ -380,7 +334,6 @@ pub const feature_lslFast = Feature{
380pub const feature_mpam = Feature{334pub const feature_mpam = Feature{
381 .name = "mpam",335 .name = "mpam",
382 .description = "Enable v8.4-A Memory system Partitioning and Monitoring extension",336 .description = "Enable v8.4-A Memory system Partitioning and Monitoring extension",
383 .llvm_name = "mpam",
384 .subfeatures = &[_]*const Feature {337 .subfeatures = &[_]*const Feature {
385 },338 },
386};339};
...@@ -388,7 +341,6 @@ pub const feature_mpam = Feature{...@@ -388,7 +341,6 @@ pub const feature_mpam = Feature{
388pub const feature_mte = Feature{341pub const feature_mte = Feature{
389 .name = "mte",342 .name = "mte",
390 .description = "Enable Memory Tagging Extension",343 .description = "Enable Memory Tagging Extension",
391 .llvm_name = "mte",
392 .subfeatures = &[_]*const Feature {344 .subfeatures = &[_]*const Feature {
393 },345 },
394};346};
...@@ -396,7 +348,6 @@ pub const feature_mte = Feature{...@@ -396,7 +348,6 @@ pub const feature_mte = Feature{
396pub const feature_neon = Feature{348pub const feature_neon = Feature{
397 .name = "neon",349 .name = "neon",
398 .description = "Enable Advanced SIMD instructions",350 .description = "Enable Advanced SIMD instructions",
399 .llvm_name = "neon",
400 .subfeatures = &[_]*const Feature {351 .subfeatures = &[_]*const Feature {
401 &feature_fpArmv8,352 &feature_fpArmv8,
402 },353 },
...@@ -405,7 +356,6 @@ pub const feature_neon = Feature{...@@ -405,7 +356,6 @@ pub const feature_neon = Feature{
405pub const feature_nv = Feature{356pub const feature_nv = Feature{
406 .name = "nv",357 .name = "nv",
407 .description = "Enable v8.4-A Nested Virtualization Enchancement",358 .description = "Enable v8.4-A Nested Virtualization Enchancement",
408 .llvm_name = "nv",
409 .subfeatures = &[_]*const Feature {359 .subfeatures = &[_]*const Feature {
410 },360 },
411};361};
...@@ -413,7 +363,6 @@ pub const feature_nv = Feature{...@@ -413,7 +363,6 @@ pub const feature_nv = Feature{
413pub const feature_noNegImmediates = Feature{363pub const feature_noNegImmediates = Feature{
414 .name = "no-neg-immediates",364 .name = "no-neg-immediates",
415 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",365 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",
416 .llvm_name = "no-neg-immediates",
417 .subfeatures = &[_]*const Feature {366 .subfeatures = &[_]*const Feature {
418 },367 },
419};368};
...@@ -421,7 +370,6 @@ pub const feature_noNegImmediates = Feature{...@@ -421,7 +370,6 @@ pub const feature_noNegImmediates = Feature{
421pub const feature_pa = Feature{370pub const feature_pa = Feature{
422 .name = "pa",371 .name = "pa",
423 .description = "Enable v8.3-A Pointer Authentication enchancement",372 .description = "Enable v8.3-A Pointer Authentication enchancement",
424 .llvm_name = "pa",
425 .subfeatures = &[_]*const Feature {373 .subfeatures = &[_]*const Feature {
426 },374 },
427};375};
...@@ -429,7 +377,6 @@ pub const feature_pa = Feature{...@@ -429,7 +377,6 @@ pub const feature_pa = Feature{
429pub const feature_pan = Feature{377pub const feature_pan = Feature{
430 .name = "pan",378 .name = "pan",
431 .description = "Enables ARM v8.1 Privileged Access-Never extension",379 .description = "Enables ARM v8.1 Privileged Access-Never extension",
432 .llvm_name = "pan",
433 .subfeatures = &[_]*const Feature {380 .subfeatures = &[_]*const Feature {
434 },381 },
435};382};
...@@ -437,7 +384,6 @@ pub const feature_pan = Feature{...@@ -437,7 +384,6 @@ pub const feature_pan = Feature{
437pub const feature_panRwv = Feature{384pub const feature_panRwv = Feature{
438 .name = "pan-rwv",385 .name = "pan-rwv",
439 .description = "Enable v8.2 PAN s1e1R and s1e1W Variants",386 .description = "Enable v8.2 PAN s1e1R and s1e1W Variants",
440 .llvm_name = "pan-rwv",
441 .subfeatures = &[_]*const Feature {387 .subfeatures = &[_]*const Feature {
442 &feature_pan,388 &feature_pan,
443 },389 },
...@@ -446,7 +392,6 @@ pub const feature_panRwv = Feature{...@@ -446,7 +392,6 @@ pub const feature_panRwv = Feature{
446pub const feature_perfmon = Feature{392pub const feature_perfmon = Feature{
447 .name = "perfmon",393 .name = "perfmon",
448 .description = "Enable ARMv8 PMUv3 Performance Monitors extension",394 .description = "Enable ARMv8 PMUv3 Performance Monitors extension",
449 .llvm_name = "perfmon",
450 .subfeatures = &[_]*const Feature {395 .subfeatures = &[_]*const Feature {
451 },396 },
452};397};
...@@ -454,7 +399,6 @@ pub const feature_perfmon = Feature{...@@ -454,7 +399,6 @@ pub const feature_perfmon = Feature{
454pub const feature_usePostraScheduler = Feature{399pub const feature_usePostraScheduler = Feature{
455 .name = "use-postra-scheduler",400 .name = "use-postra-scheduler",
456 .description = "Schedule again after register allocation",401 .description = "Schedule again after register allocation",
457 .llvm_name = "use-postra-scheduler",
458 .subfeatures = &[_]*const Feature {402 .subfeatures = &[_]*const Feature {
459 },403 },
460};404};
...@@ -462,7 +406,6 @@ pub const feature_usePostraScheduler = Feature{...@@ -462,7 +406,6 @@ pub const feature_usePostraScheduler = Feature{
462pub const feature_predres = Feature{406pub const feature_predres = Feature{
463 .name = "predres",407 .name = "predres",
464 .description = "Enable v8.5a execution and data prediction invalidation instructions",408 .description = "Enable v8.5a execution and data prediction invalidation instructions",
465 .llvm_name = "predres",
466 .subfeatures = &[_]*const Feature {409 .subfeatures = &[_]*const Feature {
467 },410 },
468};411};
...@@ -470,7 +413,6 @@ pub const feature_predres = Feature{...@@ -470,7 +413,6 @@ pub const feature_predres = Feature{
470pub const feature_predictableSelectExpensive = Feature{413pub const feature_predictableSelectExpensive = Feature{
471 .name = "predictable-select-expensive",414 .name = "predictable-select-expensive",
472 .description = "Prefer likely predicted branches over selects",415 .description = "Prefer likely predicted branches over selects",
473 .llvm_name = "predictable-select-expensive",
474 .subfeatures = &[_]*const Feature {416 .subfeatures = &[_]*const Feature {
475 },417 },
476};418};
...@@ -478,7 +420,6 @@ pub const feature_predictableSelectExpensive = Feature{...@@ -478,7 +420,6 @@ pub const feature_predictableSelectExpensive = Feature{
478pub const feature_uaops = Feature{420pub const feature_uaops = Feature{
479 .name = "uaops",421 .name = "uaops",
480 .description = "Enable v8.2 UAO PState",422 .description = "Enable v8.2 UAO PState",
481 .llvm_name = "uaops",
482 .subfeatures = &[_]*const Feature {423 .subfeatures = &[_]*const Feature {
483 },424 },
484};425};
...@@ -486,7 +427,6 @@ pub const feature_uaops = Feature{...@@ -486,7 +427,6 @@ pub const feature_uaops = Feature{
486pub const feature_ras = Feature{427pub const feature_ras = Feature{
487 .name = "ras",428 .name = "ras",
488 .description = "Enable ARMv8 Reliability, Availability and Serviceability Extensions",429 .description = "Enable ARMv8 Reliability, Availability and Serviceability Extensions",
489 .llvm_name = "ras",
490 .subfeatures = &[_]*const Feature {430 .subfeatures = &[_]*const Feature {
491 },431 },
492};432};
...@@ -494,7 +434,6 @@ pub const feature_ras = Feature{...@@ -494,7 +434,6 @@ pub const feature_ras = Feature{
494pub const feature_rasv8_4 = Feature{434pub const feature_rasv8_4 = Feature{
495 .name = "rasv8_4",435 .name = "rasv8_4",
496 .description = "Enable v8.4-A Reliability, Availability and Serviceability extension",436 .description = "Enable v8.4-A Reliability, Availability and Serviceability extension",
497 .llvm_name = "rasv8_4",
498 .subfeatures = &[_]*const Feature {437 .subfeatures = &[_]*const Feature {
499 &feature_ras,438 &feature_ras,
500 },439 },
...@@ -503,7 +442,6 @@ pub const feature_rasv8_4 = Feature{...@@ -503,7 +442,6 @@ pub const feature_rasv8_4 = Feature{
503pub const feature_rcpc = Feature{442pub const feature_rcpc = Feature{
504 .name = "rcpc",443 .name = "rcpc",
505 .description = "Enable support for RCPC extension",444 .description = "Enable support for RCPC extension",
506 .llvm_name = "rcpc",
507 .subfeatures = &[_]*const Feature {445 .subfeatures = &[_]*const Feature {
508 },446 },
509};447};
...@@ -511,7 +449,6 @@ pub const feature_rcpc = Feature{...@@ -511,7 +449,6 @@ pub const feature_rcpc = Feature{
511pub const feature_rcpcImmo = Feature{449pub const feature_rcpcImmo = Feature{
512 .name = "rcpc-immo",450 .name = "rcpc-immo",
513 .description = "Enable v8.4-A RCPC instructions with Immediate Offsets",451 .description = "Enable v8.4-A RCPC instructions with Immediate Offsets",
514 .llvm_name = "rcpc-immo",
515 .subfeatures = &[_]*const Feature {452 .subfeatures = &[_]*const Feature {
516 &feature_rcpc,453 &feature_rcpc,
517 },454 },
...@@ -520,7 +457,6 @@ pub const feature_rcpcImmo = Feature{...@@ -520,7 +457,6 @@ pub const feature_rcpcImmo = Feature{
520pub const feature_rdm = Feature{457pub const feature_rdm = Feature{
521 .name = "rdm",458 .name = "rdm",
522 .description = "Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions",459 .description = "Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions",
523 .llvm_name = "rdm",
524 .subfeatures = &[_]*const Feature {460 .subfeatures = &[_]*const Feature {
525 },461 },
526};462};
...@@ -528,7 +464,6 @@ pub const feature_rdm = Feature{...@@ -528,7 +464,6 @@ pub const feature_rdm = Feature{
528pub const feature_rand = Feature{464pub const feature_rand = Feature{
529 .name = "rand",465 .name = "rand",
530 .description = "Enable Random Number generation instructions",466 .description = "Enable Random Number generation instructions",
531 .llvm_name = "rand",
532 .subfeatures = &[_]*const Feature {467 .subfeatures = &[_]*const Feature {
533 },468 },
534};469};
...@@ -536,7 +471,6 @@ pub const feature_rand = Feature{...@@ -536,7 +471,6 @@ pub const feature_rand = Feature{
536pub const feature_reserveX1 = Feature{471pub const feature_reserveX1 = Feature{
537 .name = "reserve-x1",472 .name = "reserve-x1",
538 .description = "Reserve X1, making it unavailable as a GPR",473 .description = "Reserve X1, making it unavailable as a GPR",
539 .llvm_name = "reserve-x1",
540 .subfeatures = &[_]*const Feature {474 .subfeatures = &[_]*const Feature {
541 },475 },
542};476};
...@@ -544,7 +478,6 @@ pub const feature_reserveX1 = Feature{...@@ -544,7 +478,6 @@ pub const feature_reserveX1 = Feature{
544pub const feature_reserveX2 = Feature{478pub const feature_reserveX2 = Feature{
545 .name = "reserve-x2",479 .name = "reserve-x2",
546 .description = "Reserve X2, making it unavailable as a GPR",480 .description = "Reserve X2, making it unavailable as a GPR",
547 .llvm_name = "reserve-x2",
548 .subfeatures = &[_]*const Feature {481 .subfeatures = &[_]*const Feature {
549 },482 },
550};483};
...@@ -552,7 +485,6 @@ pub const feature_reserveX2 = Feature{...@@ -552,7 +485,6 @@ pub const feature_reserveX2 = Feature{
552pub const feature_reserveX3 = Feature{485pub const feature_reserveX3 = Feature{
553 .name = "reserve-x3",486 .name = "reserve-x3",
554 .description = "Reserve X3, making it unavailable as a GPR",487 .description = "Reserve X3, making it unavailable as a GPR",
555 .llvm_name = "reserve-x3",
556 .subfeatures = &[_]*const Feature {488 .subfeatures = &[_]*const Feature {
557 },489 },
558};490};
...@@ -560,7 +492,6 @@ pub const feature_reserveX3 = Feature{...@@ -560,7 +492,6 @@ pub const feature_reserveX3 = Feature{
560pub const feature_reserveX4 = Feature{492pub const feature_reserveX4 = Feature{
561 .name = "reserve-x4",493 .name = "reserve-x4",
562 .description = "Reserve X4, making it unavailable as a GPR",494 .description = "Reserve X4, making it unavailable as a GPR",
563 .llvm_name = "reserve-x4",
564 .subfeatures = &[_]*const Feature {495 .subfeatures = &[_]*const Feature {
565 },496 },
566};497};
...@@ -568,7 +499,6 @@ pub const feature_reserveX4 = Feature{...@@ -568,7 +499,6 @@ pub const feature_reserveX4 = Feature{
568pub const feature_reserveX5 = Feature{499pub const feature_reserveX5 = Feature{
569 .name = "reserve-x5",500 .name = "reserve-x5",
570 .description = "Reserve X5, making it unavailable as a GPR",501 .description = "Reserve X5, making it unavailable as a GPR",
571 .llvm_name = "reserve-x5",
572 .subfeatures = &[_]*const Feature {502 .subfeatures = &[_]*const Feature {
573 },503 },
574};504};
...@@ -576,7 +506,6 @@ pub const feature_reserveX5 = Feature{...@@ -576,7 +506,6 @@ pub const feature_reserveX5 = Feature{
576pub const feature_reserveX6 = Feature{506pub const feature_reserveX6 = Feature{
577 .name = "reserve-x6",507 .name = "reserve-x6",
578 .description = "Reserve X6, making it unavailable as a GPR",508 .description = "Reserve X6, making it unavailable as a GPR",
579 .llvm_name = "reserve-x6",
580 .subfeatures = &[_]*const Feature {509 .subfeatures = &[_]*const Feature {
581 },510 },
582};511};
...@@ -584,7 +513,6 @@ pub const feature_reserveX6 = Feature{...@@ -584,7 +513,6 @@ pub const feature_reserveX6 = Feature{
584pub const feature_reserveX7 = Feature{513pub const feature_reserveX7 = Feature{
585 .name = "reserve-x7",514 .name = "reserve-x7",
586 .description = "Reserve X7, making it unavailable as a GPR",515 .description = "Reserve X7, making it unavailable as a GPR",
587 .llvm_name = "reserve-x7",
588 .subfeatures = &[_]*const Feature {516 .subfeatures = &[_]*const Feature {
589 },517 },
590};518};
...@@ -592,7 +520,6 @@ pub const feature_reserveX7 = Feature{...@@ -592,7 +520,6 @@ pub const feature_reserveX7 = Feature{
592pub const feature_reserveX9 = Feature{520pub const feature_reserveX9 = Feature{
593 .name = "reserve-x9",521 .name = "reserve-x9",
594 .description = "Reserve X9, making it unavailable as a GPR",522 .description = "Reserve X9, making it unavailable as a GPR",
595 .llvm_name = "reserve-x9",
596 .subfeatures = &[_]*const Feature {523 .subfeatures = &[_]*const Feature {
597 },524 },
598};525};
...@@ -600,7 +527,6 @@ pub const feature_reserveX9 = Feature{...@@ -600,7 +527,6 @@ pub const feature_reserveX9 = Feature{
600pub const feature_reserveX10 = Feature{527pub const feature_reserveX10 = Feature{
601 .name = "reserve-x10",528 .name = "reserve-x10",
602 .description = "Reserve X10, making it unavailable as a GPR",529 .description = "Reserve X10, making it unavailable as a GPR",
603 .llvm_name = "reserve-x10",
604 .subfeatures = &[_]*const Feature {530 .subfeatures = &[_]*const Feature {
605 },531 },
606};532};
...@@ -608,7 +534,6 @@ pub const feature_reserveX10 = Feature{...@@ -608,7 +534,6 @@ pub const feature_reserveX10 = Feature{
608pub const feature_reserveX11 = Feature{534pub const feature_reserveX11 = Feature{
609 .name = "reserve-x11",535 .name = "reserve-x11",
610 .description = "Reserve X11, making it unavailable as a GPR",536 .description = "Reserve X11, making it unavailable as a GPR",
611 .llvm_name = "reserve-x11",
612 .subfeatures = &[_]*const Feature {537 .subfeatures = &[_]*const Feature {
613 },538 },
614};539};
...@@ -616,7 +541,6 @@ pub const feature_reserveX11 = Feature{...@@ -616,7 +541,6 @@ pub const feature_reserveX11 = Feature{
616pub const feature_reserveX12 = Feature{541pub const feature_reserveX12 = Feature{
617 .name = "reserve-x12",542 .name = "reserve-x12",
618 .description = "Reserve X12, making it unavailable as a GPR",543 .description = "Reserve X12, making it unavailable as a GPR",
619 .llvm_name = "reserve-x12",
620 .subfeatures = &[_]*const Feature {544 .subfeatures = &[_]*const Feature {
621 },545 },
622};546};
...@@ -624,7 +548,6 @@ pub const feature_reserveX12 = Feature{...@@ -624,7 +548,6 @@ pub const feature_reserveX12 = Feature{
624pub const feature_reserveX13 = Feature{548pub const feature_reserveX13 = Feature{
625 .name = "reserve-x13",549 .name = "reserve-x13",
626 .description = "Reserve X13, making it unavailable as a GPR",550 .description = "Reserve X13, making it unavailable as a GPR",
627 .llvm_name = "reserve-x13",
628 .subfeatures = &[_]*const Feature {551 .subfeatures = &[_]*const Feature {
629 },552 },
630};553};
...@@ -632,7 +555,6 @@ pub const feature_reserveX13 = Feature{...@@ -632,7 +555,6 @@ pub const feature_reserveX13 = Feature{
632pub const feature_reserveX14 = Feature{555pub const feature_reserveX14 = Feature{
633 .name = "reserve-x14",556 .name = "reserve-x14",
634 .description = "Reserve X14, making it unavailable as a GPR",557 .description = "Reserve X14, making it unavailable as a GPR",
635 .llvm_name = "reserve-x14",
636 .subfeatures = &[_]*const Feature {558 .subfeatures = &[_]*const Feature {
637 },559 },
638};560};
...@@ -640,7 +562,6 @@ pub const feature_reserveX14 = Feature{...@@ -640,7 +562,6 @@ pub const feature_reserveX14 = Feature{
640pub const feature_reserveX15 = Feature{562pub const feature_reserveX15 = Feature{
641 .name = "reserve-x15",563 .name = "reserve-x15",
642 .description = "Reserve X15, making it unavailable as a GPR",564 .description = "Reserve X15, making it unavailable as a GPR",
643 .llvm_name = "reserve-x15",
644 .subfeatures = &[_]*const Feature {565 .subfeatures = &[_]*const Feature {
645 },566 },
646};567};
...@@ -648,7 +569,6 @@ pub const feature_reserveX15 = Feature{...@@ -648,7 +569,6 @@ pub const feature_reserveX15 = Feature{
648pub const feature_reserveX18 = Feature{569pub const feature_reserveX18 = Feature{
649 .name = "reserve-x18",570 .name = "reserve-x18",
650 .description = "Reserve X18, making it unavailable as a GPR",571 .description = "Reserve X18, making it unavailable as a GPR",
651 .llvm_name = "reserve-x18",
652 .subfeatures = &[_]*const Feature {572 .subfeatures = &[_]*const Feature {
653 },573 },
654};574};
...@@ -656,7 +576,6 @@ pub const feature_reserveX18 = Feature{...@@ -656,7 +576,6 @@ pub const feature_reserveX18 = Feature{
656pub const feature_reserveX20 = Feature{576pub const feature_reserveX20 = Feature{
657 .name = "reserve-x20",577 .name = "reserve-x20",
658 .description = "Reserve X20, making it unavailable as a GPR",578 .description = "Reserve X20, making it unavailable as a GPR",
659 .llvm_name = "reserve-x20",
660 .subfeatures = &[_]*const Feature {579 .subfeatures = &[_]*const Feature {
661 },580 },
662};581};
...@@ -664,7 +583,6 @@ pub const feature_reserveX20 = Feature{...@@ -664,7 +583,6 @@ pub const feature_reserveX20 = Feature{
664pub const feature_reserveX21 = Feature{583pub const feature_reserveX21 = Feature{
665 .name = "reserve-x21",584 .name = "reserve-x21",
666 .description = "Reserve X21, making it unavailable as a GPR",585 .description = "Reserve X21, making it unavailable as a GPR",
667 .llvm_name = "reserve-x21",
668 .subfeatures = &[_]*const Feature {586 .subfeatures = &[_]*const Feature {
669 },587 },
670};588};
...@@ -672,7 +590,6 @@ pub const feature_reserveX21 = Feature{...@@ -672,7 +590,6 @@ pub const feature_reserveX21 = Feature{
672pub const feature_reserveX22 = Feature{590pub const feature_reserveX22 = Feature{
673 .name = "reserve-x22",591 .name = "reserve-x22",
674 .description = "Reserve X22, making it unavailable as a GPR",592 .description = "Reserve X22, making it unavailable as a GPR",
675 .llvm_name = "reserve-x22",
676 .subfeatures = &[_]*const Feature {593 .subfeatures = &[_]*const Feature {
677 },594 },
678};595};
...@@ -680,7 +597,6 @@ pub const feature_reserveX22 = Feature{...@@ -680,7 +597,6 @@ pub const feature_reserveX22 = Feature{
680pub const feature_reserveX23 = Feature{597pub const feature_reserveX23 = Feature{
681 .name = "reserve-x23",598 .name = "reserve-x23",
682 .description = "Reserve X23, making it unavailable as a GPR",599 .description = "Reserve X23, making it unavailable as a GPR",
683 .llvm_name = "reserve-x23",
684 .subfeatures = &[_]*const Feature {600 .subfeatures = &[_]*const Feature {
685 },601 },
686};602};
...@@ -688,7 +604,6 @@ pub const feature_reserveX23 = Feature{...@@ -688,7 +604,6 @@ pub const feature_reserveX23 = Feature{
688pub const feature_reserveX24 = Feature{604pub const feature_reserveX24 = Feature{
689 .name = "reserve-x24",605 .name = "reserve-x24",
690 .description = "Reserve X24, making it unavailable as a GPR",606 .description = "Reserve X24, making it unavailable as a GPR",
691 .llvm_name = "reserve-x24",
692 .subfeatures = &[_]*const Feature {607 .subfeatures = &[_]*const Feature {
693 },608 },
694};609};
...@@ -696,7 +611,6 @@ pub const feature_reserveX24 = Feature{...@@ -696,7 +611,6 @@ pub const feature_reserveX24 = Feature{
696pub const feature_reserveX25 = Feature{611pub const feature_reserveX25 = Feature{
697 .name = "reserve-x25",612 .name = "reserve-x25",
698 .description = "Reserve X25, making it unavailable as a GPR",613 .description = "Reserve X25, making it unavailable as a GPR",
699 .llvm_name = "reserve-x25",
700 .subfeatures = &[_]*const Feature {614 .subfeatures = &[_]*const Feature {
701 },615 },
702};616};
...@@ -704,7 +618,6 @@ pub const feature_reserveX25 = Feature{...@@ -704,7 +618,6 @@ pub const feature_reserveX25 = Feature{
704pub const feature_reserveX26 = Feature{618pub const feature_reserveX26 = Feature{
705 .name = "reserve-x26",619 .name = "reserve-x26",
706 .description = "Reserve X26, making it unavailable as a GPR",620 .description = "Reserve X26, making it unavailable as a GPR",
707 .llvm_name = "reserve-x26",
708 .subfeatures = &[_]*const Feature {621 .subfeatures = &[_]*const Feature {
709 },622 },
710};623};
...@@ -712,7 +625,6 @@ pub const feature_reserveX26 = Feature{...@@ -712,7 +625,6 @@ pub const feature_reserveX26 = Feature{
712pub const feature_reserveX27 = Feature{625pub const feature_reserveX27 = Feature{
713 .name = "reserve-x27",626 .name = "reserve-x27",
714 .description = "Reserve X27, making it unavailable as a GPR",627 .description = "Reserve X27, making it unavailable as a GPR",
715 .llvm_name = "reserve-x27",
716 .subfeatures = &[_]*const Feature {628 .subfeatures = &[_]*const Feature {
717 },629 },
718};630};
...@@ -720,7 +632,6 @@ pub const feature_reserveX27 = Feature{...@@ -720,7 +632,6 @@ pub const feature_reserveX27 = Feature{
720pub const feature_reserveX28 = Feature{632pub const feature_reserveX28 = Feature{
721 .name = "reserve-x28",633 .name = "reserve-x28",
722 .description = "Reserve X28, making it unavailable as a GPR",634 .description = "Reserve X28, making it unavailable as a GPR",
723 .llvm_name = "reserve-x28",
724 .subfeatures = &[_]*const Feature {635 .subfeatures = &[_]*const Feature {
725 },636 },
726};637};
...@@ -728,7 +639,6 @@ pub const feature_reserveX28 = Feature{...@@ -728,7 +639,6 @@ pub const feature_reserveX28 = Feature{
728pub const feature_sb = Feature{639pub const feature_sb = Feature{
729 .name = "sb",640 .name = "sb",
730 .description = "Enable v8.5 Speculation Barrier",641 .description = "Enable v8.5 Speculation Barrier",
731 .llvm_name = "sb",
732 .subfeatures = &[_]*const Feature {642 .subfeatures = &[_]*const Feature {
733 },643 },
734};644};
...@@ -736,7 +646,6 @@ pub const feature_sb = Feature{...@@ -736,7 +646,6 @@ pub const feature_sb = Feature{
736pub const feature_sel2 = Feature{646pub const feature_sel2 = Feature{
737 .name = "sel2",647 .name = "sel2",
738 .description = "Enable v8.4-A Secure Exception Level 2 extension",648 .description = "Enable v8.4-A Secure Exception Level 2 extension",
739 .llvm_name = "sel2",
740 .subfeatures = &[_]*const Feature {649 .subfeatures = &[_]*const Feature {
741 },650 },
742};651};
...@@ -744,7 +653,6 @@ pub const feature_sel2 = Feature{...@@ -744,7 +653,6 @@ pub const feature_sel2 = Feature{
744pub const feature_sha2 = Feature{653pub const feature_sha2 = Feature{
745 .name = "sha2",654 .name = "sha2",
746 .description = "Enable SHA1 and SHA256 support",655 .description = "Enable SHA1 and SHA256 support",
747 .llvm_name = "sha2",
748 .subfeatures = &[_]*const Feature {656 .subfeatures = &[_]*const Feature {
749 &feature_fpArmv8,657 &feature_fpArmv8,
750 },658 },
...@@ -753,7 +661,6 @@ pub const feature_sha2 = Feature{...@@ -753,7 +661,6 @@ pub const feature_sha2 = Feature{
753pub const feature_sha3 = Feature{661pub const feature_sha3 = Feature{
754 .name = "sha3",662 .name = "sha3",
755 .description = "Enable SHA512 and SHA3 support",663 .description = "Enable SHA512 and SHA3 support",
756 .llvm_name = "sha3",
757 .subfeatures = &[_]*const Feature {664 .subfeatures = &[_]*const Feature {
758 &feature_fpArmv8,665 &feature_fpArmv8,
759 },666 },
...@@ -762,7 +669,6 @@ pub const feature_sha3 = Feature{...@@ -762,7 +669,6 @@ pub const feature_sha3 = Feature{
762pub const feature_sm4 = Feature{669pub const feature_sm4 = Feature{
763 .name = "sm4",670 .name = "sm4",
764 .description = "Enable SM3 and SM4 support",671 .description = "Enable SM3 and SM4 support",
765 .llvm_name = "sm4",
766 .subfeatures = &[_]*const Feature {672 .subfeatures = &[_]*const Feature {
767 &feature_fpArmv8,673 &feature_fpArmv8,
768 },674 },
...@@ -771,7 +677,6 @@ pub const feature_sm4 = Feature{...@@ -771,7 +677,6 @@ pub const feature_sm4 = Feature{
771pub const feature_spe = Feature{677pub const feature_spe = Feature{
772 .name = "spe",678 .name = "spe",
773 .description = "Enable Statistical Profiling extension",679 .description = "Enable Statistical Profiling extension",
774 .llvm_name = "spe",
775 .subfeatures = &[_]*const Feature {680 .subfeatures = &[_]*const Feature {
776 },681 },
777};682};
...@@ -779,7 +684,6 @@ pub const feature_spe = Feature{...@@ -779,7 +684,6 @@ pub const feature_spe = Feature{
779pub const feature_ssbs = Feature{684pub const feature_ssbs = Feature{
780 .name = "ssbs",685 .name = "ssbs",
781 .description = "Enable Speculative Store Bypass Safe bit",686 .description = "Enable Speculative Store Bypass Safe bit",
782 .llvm_name = "ssbs",
783 .subfeatures = &[_]*const Feature {687 .subfeatures = &[_]*const Feature {
784 },688 },
785};689};
...@@ -787,7 +691,6 @@ pub const feature_ssbs = Feature{...@@ -787,7 +691,6 @@ pub const feature_ssbs = Feature{
787pub const feature_sve = Feature{691pub const feature_sve = Feature{
788 .name = "sve",692 .name = "sve",
789 .description = "Enable Scalable Vector Extension (SVE) instructions",693 .description = "Enable Scalable Vector Extension (SVE) instructions",
790 .llvm_name = "sve",
791 .subfeatures = &[_]*const Feature {694 .subfeatures = &[_]*const Feature {
792 },695 },
793};696};
...@@ -795,7 +698,6 @@ pub const feature_sve = Feature{...@@ -795,7 +698,6 @@ pub const feature_sve = Feature{
795pub const feature_sve2 = Feature{698pub const feature_sve2 = Feature{
796 .name = "sve2",699 .name = "sve2",
797 .description = "Enable Scalable Vector Extension 2 (SVE2) instructions",700 .description = "Enable Scalable Vector Extension 2 (SVE2) instructions",
798 .llvm_name = "sve2",
799 .subfeatures = &[_]*const Feature {701 .subfeatures = &[_]*const Feature {
800 &feature_sve,702 &feature_sve,
801 },703 },
...@@ -804,7 +706,6 @@ pub const feature_sve2 = Feature{...@@ -804,7 +706,6 @@ pub const feature_sve2 = Feature{
804pub const feature_sve2Aes = Feature{706pub const feature_sve2Aes = Feature{
805 .name = "sve2-aes",707 .name = "sve2-aes",
806 .description = "Enable AES SVE2 instructions",708 .description = "Enable AES SVE2 instructions",
807 .llvm_name = "sve2-aes",
808 .subfeatures = &[_]*const Feature {709 .subfeatures = &[_]*const Feature {
809 &feature_fpArmv8,710 &feature_fpArmv8,
810 &feature_sve,711 &feature_sve,
...@@ -814,7 +715,6 @@ pub const feature_sve2Aes = Feature{...@@ -814,7 +715,6 @@ pub const feature_sve2Aes = Feature{
814pub const feature_sve2Bitperm = Feature{715pub const feature_sve2Bitperm = Feature{
815 .name = "sve2-bitperm",716 .name = "sve2-bitperm",
816 .description = "Enable bit permutation SVE2 instructions",717 .description = "Enable bit permutation SVE2 instructions",
817 .llvm_name = "sve2-bitperm",
818 .subfeatures = &[_]*const Feature {718 .subfeatures = &[_]*const Feature {
819 &feature_sve,719 &feature_sve,
820 },720 },
...@@ -823,7 +723,6 @@ pub const feature_sve2Bitperm = Feature{...@@ -823,7 +723,6 @@ pub const feature_sve2Bitperm = Feature{
823pub const feature_sve2Sha3 = Feature{723pub const feature_sve2Sha3 = Feature{
824 .name = "sve2-sha3",724 .name = "sve2-sha3",
825 .description = "Enable SHA3 SVE2 instructions",725 .description = "Enable SHA3 SVE2 instructions",
826 .llvm_name = "sve2-sha3",
827 .subfeatures = &[_]*const Feature {726 .subfeatures = &[_]*const Feature {
828 &feature_fpArmv8,727 &feature_fpArmv8,
829 &feature_sve,728 &feature_sve,
...@@ -833,7 +732,6 @@ pub const feature_sve2Sha3 = Feature{...@@ -833,7 +732,6 @@ pub const feature_sve2Sha3 = Feature{
833pub const feature_sve2Sm4 = Feature{732pub const feature_sve2Sm4 = Feature{
834 .name = "sve2-sm4",733 .name = "sve2-sm4",
835 .description = "Enable SM4 SVE2 instructions",734 .description = "Enable SM4 SVE2 instructions",
836 .llvm_name = "sve2-sm4",
837 .subfeatures = &[_]*const Feature {735 .subfeatures = &[_]*const Feature {
838 &feature_fpArmv8,736 &feature_fpArmv8,
839 &feature_sve,737 &feature_sve,
...@@ -843,7 +741,6 @@ pub const feature_sve2Sm4 = Feature{...@@ -843,7 +741,6 @@ pub const feature_sve2Sm4 = Feature{
843pub const feature_slowMisaligned128store = Feature{741pub const feature_slowMisaligned128store = Feature{
844 .name = "slow-misaligned-128store",742 .name = "slow-misaligned-128store",
845 .description = "Misaligned 128 bit stores are slow",743 .description = "Misaligned 128 bit stores are slow",
846 .llvm_name = "slow-misaligned-128store",
847 .subfeatures = &[_]*const Feature {744 .subfeatures = &[_]*const Feature {
848 },745 },
849};746};
...@@ -851,7 +748,6 @@ pub const feature_slowMisaligned128store = Feature{...@@ -851,7 +748,6 @@ pub const feature_slowMisaligned128store = Feature{
851pub const feature_slowPaired128 = Feature{748pub const feature_slowPaired128 = Feature{
852 .name = "slow-paired-128",749 .name = "slow-paired-128",
853 .description = "Paired 128 bit loads and stores are slow",750 .description = "Paired 128 bit loads and stores are slow",
854 .llvm_name = "slow-paired-128",
855 .subfeatures = &[_]*const Feature {751 .subfeatures = &[_]*const Feature {
856 },752 },
857};753};
...@@ -859,7 +755,6 @@ pub const feature_slowPaired128 = Feature{...@@ -859,7 +755,6 @@ pub const feature_slowPaired128 = Feature{
859pub const feature_slowStrqroStore = Feature{755pub const feature_slowStrqroStore = Feature{
860 .name = "slow-strqro-store",756 .name = "slow-strqro-store",
861 .description = "STR of Q register with register offset is slow",757 .description = "STR of Q register with register offset is slow",
862 .llvm_name = "slow-strqro-store",
863 .subfeatures = &[_]*const Feature {758 .subfeatures = &[_]*const Feature {
864 },759 },
865};760};
...@@ -867,7 +762,6 @@ pub const feature_slowStrqroStore = Feature{...@@ -867,7 +762,6 @@ pub const feature_slowStrqroStore = Feature{
867pub const feature_specrestrict = Feature{762pub const feature_specrestrict = Feature{
868 .name = "specrestrict",763 .name = "specrestrict",
869 .description = "Enable architectural speculation restriction",764 .description = "Enable architectural speculation restriction",
870 .llvm_name = "specrestrict",
871 .subfeatures = &[_]*const Feature {765 .subfeatures = &[_]*const Feature {
872 },766 },
873};767};
...@@ -875,7 +769,6 @@ pub const feature_specrestrict = Feature{...@@ -875,7 +769,6 @@ pub const feature_specrestrict = Feature{
875pub const feature_strictAlign = Feature{769pub const feature_strictAlign = Feature{
876 .name = "strict-align",770 .name = "strict-align",
877 .description = "Disallow all unaligned memory access",771 .description = "Disallow all unaligned memory access",
878 .llvm_name = "strict-align",
879 .subfeatures = &[_]*const Feature {772 .subfeatures = &[_]*const Feature {
880 },773 },
881};774};
...@@ -883,7 +776,6 @@ pub const feature_strictAlign = Feature{...@@ -883,7 +776,6 @@ pub const feature_strictAlign = Feature{
883pub const feature_tlbRmi = Feature{776pub const feature_tlbRmi = Feature{
884 .name = "tlb-rmi",777 .name = "tlb-rmi",
885 .description = "Enable v8.4-A TLB Range and Maintenance Instructions",778 .description = "Enable v8.4-A TLB Range and Maintenance Instructions",
886 .llvm_name = "tlb-rmi",
887 .subfeatures = &[_]*const Feature {779 .subfeatures = &[_]*const Feature {
888 },780 },
889};781};
...@@ -891,7 +783,6 @@ pub const feature_tlbRmi = Feature{...@@ -891,7 +783,6 @@ pub const feature_tlbRmi = Feature{
891pub const feature_tme = Feature{783pub const feature_tme = Feature{
892 .name = "tme",784 .name = "tme",
893 .description = "Enable Transactional Memory Extension",785 .description = "Enable Transactional Memory Extension",
894 .llvm_name = "tme",
895 .subfeatures = &[_]*const Feature {786 .subfeatures = &[_]*const Feature {
896 },787 },
897};788};
...@@ -899,7 +790,6 @@ pub const feature_tme = Feature{...@@ -899,7 +790,6 @@ pub const feature_tme = Feature{
899pub const feature_tracev84 = Feature{790pub const feature_tracev84 = Feature{
900 .name = "tracev8.4",791 .name = "tracev8.4",
901 .description = "Enable v8.4-A Trace extension",792 .description = "Enable v8.4-A Trace extension",
902 .llvm_name = "tracev8.4",
903 .subfeatures = &[_]*const Feature {793 .subfeatures = &[_]*const Feature {
904 },794 },
905};795};
...@@ -907,7 +797,6 @@ pub const feature_tracev84 = Feature{...@@ -907,7 +797,6 @@ pub const feature_tracev84 = Feature{
907pub const feature_trbe = Feature{797pub const feature_trbe = Feature{
908 .name = "trbe",798 .name = "trbe",
909 .description = "Enable Trace Buffer Extension",799 .description = "Enable Trace Buffer Extension",
910 .llvm_name = "trbe",
911 .subfeatures = &[_]*const Feature {800 .subfeatures = &[_]*const Feature {
912 },801 },
913};802};
...@@ -915,7 +804,6 @@ pub const feature_trbe = Feature{...@@ -915,7 +804,6 @@ pub const feature_trbe = Feature{
915pub const feature_taggedGlobals = Feature{804pub const feature_taggedGlobals = Feature{
916 .name = "tagged-globals",805 .name = "tagged-globals",
917 .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits",806 .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits",
918 .llvm_name = "tagged-globals",
919 .subfeatures = &[_]*const Feature {807 .subfeatures = &[_]*const Feature {
920 },808 },
921};809};
...@@ -923,7 +811,6 @@ pub const feature_taggedGlobals = Feature{...@@ -923,7 +811,6 @@ pub const feature_taggedGlobals = Feature{
923pub const feature_useAa = Feature{811pub const feature_useAa = Feature{
924 .name = "use-aa",812 .name = "use-aa",
925 .description = "Use alias analysis during codegen",813 .description = "Use alias analysis during codegen",
926 .llvm_name = "use-aa",
927 .subfeatures = &[_]*const Feature {814 .subfeatures = &[_]*const Feature {
928 },815 },
929};816};
...@@ -931,7 +818,6 @@ pub const feature_useAa = Feature{...@@ -931,7 +818,6 @@ pub const feature_useAa = Feature{
931pub const feature_tpidrEl1 = Feature{818pub const feature_tpidrEl1 = Feature{
932 .name = "tpidr-el1",819 .name = "tpidr-el1",
933 .description = "Permit use of TPIDR_EL1 for the TLS base",820 .description = "Permit use of TPIDR_EL1 for the TLS base",
934 .llvm_name = "tpidr-el1",
935 .subfeatures = &[_]*const Feature {821 .subfeatures = &[_]*const Feature {
936 },822 },
937};823};
...@@ -939,7 +825,6 @@ pub const feature_tpidrEl1 = Feature{...@@ -939,7 +825,6 @@ pub const feature_tpidrEl1 = Feature{
939pub const feature_tpidrEl2 = Feature{825pub const feature_tpidrEl2 = Feature{
940 .name = "tpidr-el2",826 .name = "tpidr-el2",
941 .description = "Permit use of TPIDR_EL2 for the TLS base",827 .description = "Permit use of TPIDR_EL2 for the TLS base",
942 .llvm_name = "tpidr-el2",
943 .subfeatures = &[_]*const Feature {828 .subfeatures = &[_]*const Feature {
944 },829 },
945};830};
...@@ -947,7 +832,6 @@ pub const feature_tpidrEl2 = Feature{...@@ -947,7 +832,6 @@ pub const feature_tpidrEl2 = Feature{
947pub const feature_tpidrEl3 = Feature{832pub const feature_tpidrEl3 = Feature{
948 .name = "tpidr-el3",833 .name = "tpidr-el3",
949 .description = "Permit use of TPIDR_EL3 for the TLS base",834 .description = "Permit use of TPIDR_EL3 for the TLS base",
950 .llvm_name = "tpidr-el3",
951 .subfeatures = &[_]*const Feature {835 .subfeatures = &[_]*const Feature {
952 },836 },
953};837};
...@@ -955,7 +839,6 @@ pub const feature_tpidrEl3 = Feature{...@@ -955,7 +839,6 @@ pub const feature_tpidrEl3 = Feature{
955pub const feature_useReciprocalSquareRoot = Feature{839pub const feature_useReciprocalSquareRoot = Feature{
956 .name = "use-reciprocal-square-root",840 .name = "use-reciprocal-square-root",
957 .description = "Use the reciprocal square root approximation",841 .description = "Use the reciprocal square root approximation",
958 .llvm_name = "use-reciprocal-square-root",
959 .subfeatures = &[_]*const Feature {842 .subfeatures = &[_]*const Feature {
960 },843 },
961};844};
...@@ -963,7 +846,6 @@ pub const feature_useReciprocalSquareRoot = Feature{...@@ -963,7 +846,6 @@ pub const feature_useReciprocalSquareRoot = Feature{
963pub const feature_vh = Feature{846pub const feature_vh = Feature{
964 .name = "vh",847 .name = "vh",
965 .description = "Enables ARM v8.1 Virtual Host extension",848 .description = "Enables ARM v8.1 Virtual Host extension",
966 .llvm_name = "vh",
967 .subfeatures = &[_]*const Feature {849 .subfeatures = &[_]*const Feature {
968 },850 },
969};851};
...@@ -971,7 +853,6 @@ pub const feature_vh = Feature{...@@ -971,7 +853,6 @@ pub const feature_vh = Feature{
971pub const feature_zcm = Feature{853pub const feature_zcm = Feature{
972 .name = "zcm",854 .name = "zcm",
973 .description = "Has zero-cycle register moves",855 .description = "Has zero-cycle register moves",
974 .llvm_name = "zcm",
975 .subfeatures = &[_]*const Feature {856 .subfeatures = &[_]*const Feature {
976 },857 },
977};858};
...@@ -979,7 +860,6 @@ pub const feature_zcm = Feature{...@@ -979,7 +860,6 @@ pub const feature_zcm = Feature{
979pub const feature_zcz = Feature{860pub const feature_zcz = Feature{
980 .name = "zcz",861 .name = "zcz",
981 .description = "Has zero-cycle zeroing instructions",862 .description = "Has zero-cycle zeroing instructions",
982 .llvm_name = "zcz",
983 .subfeatures = &[_]*const Feature {863 .subfeatures = &[_]*const Feature {
984 &feature_zczGp,864 &feature_zczGp,
985 &feature_zczFp,865 &feature_zczFp,
...@@ -989,7 +869,6 @@ pub const feature_zcz = Feature{...@@ -989,7 +869,6 @@ pub const feature_zcz = Feature{
989pub const feature_zczFp = Feature{869pub const feature_zczFp = Feature{
990 .name = "zcz-fp",870 .name = "zcz-fp",
991 .description = "Has zero-cycle zeroing instructions for FP registers",871 .description = "Has zero-cycle zeroing instructions for FP registers",
992 .llvm_name = "zcz-fp",
993 .subfeatures = &[_]*const Feature {872 .subfeatures = &[_]*const Feature {
994 },873 },
995};874};
...@@ -997,7 +876,6 @@ pub const feature_zczFp = Feature{...@@ -997,7 +876,6 @@ pub const feature_zczFp = Feature{
997pub const feature_zczFpWorkaround = Feature{876pub const feature_zczFpWorkaround = Feature{
998 .name = "zcz-fp-workaround",877 .name = "zcz-fp-workaround",
999 .description = "The zero-cycle floating-point zeroing instruction has a bug",878 .description = "The zero-cycle floating-point zeroing instruction has a bug",
1000 .llvm_name = "zcz-fp-workaround",
1001 .subfeatures = &[_]*const Feature {879 .subfeatures = &[_]*const Feature {
1002 },880 },
1003};881};
...@@ -1005,7 +883,6 @@ pub const feature_zczFpWorkaround = Feature{...@@ -1005,7 +883,6 @@ pub const feature_zczFpWorkaround = Feature{
1005pub const feature_zczGp = Feature{883pub const feature_zczGp = Feature{
1006 .name = "zcz-gp",884 .name = "zcz-gp",
1007 .description = "Has zero-cycle zeroing instructions for generic registers",885 .description = "Has zero-cycle zeroing instructions for generic registers",
1008 .llvm_name = "zcz-gp",
1009 .subfeatures = &[_]*const Feature {886 .subfeatures = &[_]*const Feature {
1010 },887 },
1011};888};
...@@ -1013,127 +890,121 @@ pub const feature_zczGp = Feature{...@@ -1013,127 +890,121 @@ pub const feature_zczGp = Feature{
1013pub const feature_v81a = Feature{890pub const feature_v81a = Feature{
1014 .name = "v8.1a",891 .name = "v8.1a",
1015 .description = "Support ARM v8.1a instructions",892 .description = "Support ARM v8.1a instructions",
1016 .llvm_name = "v8.1a",
1017 .subfeatures = &[_]*const Feature {893 .subfeatures = &[_]*const Feature {
1018 &feature_rdm,
1019 &feature_lse,
1020 &feature_lor,894 &feature_lor,
1021 &feature_crc,
1022 &feature_pan,895 &feature_pan,
896 &feature_lse,
897 &feature_rdm,
1023 &feature_vh,898 &feature_vh,
899 &feature_crc,
1024 },900 },
1025};901};
1026902
1027pub const feature_v82a = Feature{903pub const feature_v82a = Feature{
1028 .name = "v8.2a",904 .name = "v8.2a",
1029 .description = "Support ARM v8.2a instructions",905 .description = "Support ARM v8.2a instructions",
1030 .llvm_name = "v8.2a",
1031 .subfeatures = &[_]*const Feature {906 .subfeatures = &[_]*const Feature {
1032 &feature_rdm,
1033 &feature_ccpp,907 &feature_ccpp,
908 &feature_lor,
909 &feature_pan,
1034 &feature_lse,910 &feature_lse,
911 &feature_rdm,
912 &feature_vh,
1035 &feature_ras,913 &feature_ras,
1036 &feature_lor,
1037 &feature_crc,914 &feature_crc,
1038 &feature_pan,
1039 &feature_uaops,915 &feature_uaops,
1040 &feature_vh,
1041 },916 },
1042};917};
1043918
1044pub const feature_v83a = Feature{919pub const feature_v83a = Feature{
1045 .name = "v8.3a",920 .name = "v8.3a",
1046 .description = "Support ARM v8.3a instructions",921 .description = "Support ARM v8.3a instructions",
1047 .llvm_name = "v8.3a",
1048 .subfeatures = &[_]*const Feature {922 .subfeatures = &[_]*const Feature {
1049 &feature_rdm,
1050 &feature_pa,
1051 &feature_ccpp,923 &feature_ccpp,
1052 &feature_uaops,
1053 &feature_lse,
1054 &feature_fpArmv8,
1055 &feature_ras,
1056 &feature_lor,924 &feature_lor,
1057 &feature_pan,925 &feature_pan,
1058 &feature_crc,926 &feature_lse,
927 &feature_rdm,
928 &feature_ras,
929 &feature_vh,
930 &feature_fpArmv8,
931 &feature_uaops,
1059 &feature_rcpc,932 &feature_rcpc,
1060 &feature_ccidx,933 &feature_ccidx,
1061 &feature_vh,934 &feature_crc,
935 &feature_pa,
1062 },936 },
1063};937};
1064938
1065pub const feature_v84a = Feature{939pub const feature_v84a = Feature{
1066 .name = "v8.4a",940 .name = "v8.4a",
1067 .description = "Support ARM v8.4a instructions",941 .description = "Support ARM v8.4a instructions",
1068 .llvm_name = "v8.4a",
1069 .subfeatures = &[_]*const Feature {942 .subfeatures = &[_]*const Feature {
1070 &feature_am,
1071 &feature_nv,
1072 &feature_ccpp,943 &feature_ccpp,
944 &feature_lor,
1073 &feature_dotprod,945 &feature_dotprod,
946 &feature_fpArmv8,
947 &feature_crc,
948 &feature_fmi,
949 &feature_tracev84,
950 &feature_tlbRmi,
951 &feature_rdm,
952 &feature_ccidx,
953 &feature_mpam,
954 &feature_pan,
1074 &feature_lse,955 &feature_lse,
1075 &feature_rcpc,956 &feature_rcpc,
1076 &feature_uaops,957 &feature_uaops,
1077 &feature_ccidx,958 &feature_sel2,
1078 &feature_vh,959 &feature_nv,
1079 &feature_tracev84,960 &feature_am,
1080 &feature_rdm,
1081 &feature_fpArmv8,
1082 &feature_dit,961 &feature_dit,
1083 &feature_mpam,962 &feature_vh,
1084 &feature_ras,963 &feature_ras,
1085 &feature_tlbRmi,
1086 &feature_fmi,
1087 &feature_crc,
1088 &feature_pa,964 &feature_pa,
1089 &feature_sel2,
1090 &feature_lor,
1091 &feature_pan,
1092 },965 },
1093};966};
1094967
1095pub const feature_v85a = Feature{968pub const feature_v85a = Feature{
1096 .name = "v8.5a",969 .name = "v8.5a",
1097 .description = "Support ARM v8.5a instructions",970 .description = "Support ARM v8.5a instructions",
1098 .llvm_name = "v8.5a",
1099 .subfeatures = &[_]*const Feature {971 .subfeatures = &[_]*const Feature {
1100 &feature_am,
1101 &feature_nv,
1102 &feature_specrestrict,
1103 &feature_ccpp,972 &feature_ccpp,
973 &feature_lor,
1104 &feature_dotprod,974 &feature_dotprod,
1105 &feature_lse,975 &feature_fpArmv8,
1106 &feature_ccdp,976 &feature_ssbs,
977 &feature_crc,
978 &feature_fmi,
979 &feature_bti,
980 &feature_tracev84,
981 &feature_tlbRmi,
982 &feature_fptoint,
983 &feature_rdm,
1107 &feature_sb,984 &feature_sb,
1108 &feature_rcpc,
1109 &feature_ccidx,985 &feature_ccidx,
986 &feature_mpam,
987 &feature_pan,
988 &feature_lse,
989 &feature_predres,
990 &feature_rcpc,
1110 &feature_uaops,991 &feature_uaops,
992 &feature_sel2,
993 &feature_nv,
994 &feature_am,
995 &feature_dit,
996 &feature_specrestrict,
1111 &feature_vh,997 &feature_vh,
1112 &feature_altnzcv,998 &feature_altnzcv,
1113 &feature_tracev84,
1114 &feature_rdm,
1115 &feature_ssbs,
1116 &feature_fpArmv8,
1117 &feature_dit,
1118 &feature_mpam,
1119 &feature_ras,999 &feature_ras,
1120 &feature_tlbRmi,1000 &feature_ccdp,
1121 &feature_fmi,
1122 &feature_crc,
1123 &feature_predres,
1124 &feature_pa,1001 &feature_pa,
1125 &feature_sel2,
1126 &feature_lor,
1127 &feature_fptoint,
1128 &feature_bti,
1129 &feature_pan,
1130 },1002 },
1131};1003};
11321004
1133pub const feature_a35 = Feature{1005pub const feature_a35 = Feature{
1134 .name = "a35",1006 .name = "a35",
1135 .description = "Cortex-A35 ARM processors",1007 .description = "Cortex-A35 ARM processors",
1136 .llvm_name = "a35",
1137 .subfeatures = &[_]*const Feature {1008 .subfeatures = &[_]*const Feature {
1138 &feature_fpArmv8,1009 &feature_fpArmv8,
1139 &feature_perfmon,1010 &feature_perfmon,
...@@ -1144,15 +1015,14 @@ pub const feature_a35 = Feature{...@@ -1144,15 +1015,14 @@ pub const feature_a35 = Feature{
1144pub const feature_a53 = Feature{1015pub const feature_a53 = Feature{
1145 .name = "a53",1016 .name = "a53",
1146 .description = "Cortex-A53 ARM processors",1017 .description = "Cortex-A53 ARM processors",
1147 .llvm_name = "a53",
1148 .subfeatures = &[_]*const Feature {1018 .subfeatures = &[_]*const Feature {
1149 &feature_usePostraScheduler,1019 &feature_useAa,
1150 &feature_customCheapAsMove,
1151 &feature_fuseAes,
1152 &feature_balanceFpOps,1020 &feature_balanceFpOps,
1153 &feature_fpArmv8,1021 &feature_fuseAes,
1022 &feature_usePostraScheduler,
1154 &feature_perfmon,1023 &feature_perfmon,
1155 &feature_useAa,1024 &feature_fpArmv8,
1025 &feature_customCheapAsMove,
1156 &feature_crc,1026 &feature_crc,
1157 },1027 },
1158};1028};
...@@ -1160,38 +1030,36 @@ pub const feature_a53 = Feature{...@@ -1160,38 +1030,36 @@ pub const feature_a53 = Feature{
1160pub const feature_a55 = Feature{1030pub const feature_a55 = Feature{
1161 .name = "a55",1031 .name = "a55",
1162 .description = "Cortex-A55 ARM processors",1032 .description = "Cortex-A55 ARM processors",
1163 .llvm_name = "a55",
1164 .subfeatures = &[_]*const Feature {1033 .subfeatures = &[_]*const Feature {
1165 &feature_rdm,
1166 &feature_fuseAes,1034 &feature_fuseAes,
1167 &feature_ccpp,1035 &feature_ccpp,
1168 &feature_lse,
1169 &feature_fpArmv8,
1170 &feature_perfmon,
1171 &feature_ras,
1172 &feature_dotprod,
1173 &feature_lor,1036 &feature_lor,
1037 &feature_dotprod,
1038 &feature_perfmon,
1174 &feature_pan,1039 &feature_pan,
1175 &feature_crc,1040 &feature_lse,
1176 &feature_rcpc,1041 &feature_rdm,
1177 &feature_uaops,1042 &feature_ras,
1178 &feature_vh,1043 &feature_vh,
1044 &feature_fpArmv8,
1045 &feature_uaops,
1046 &feature_rcpc,
1047 &feature_crc,
1179 },1048 },
1180};1049};
11811050
1182pub const feature_a57 = Feature{1051pub const feature_a57 = Feature{
1183 .name = "a57",1052 .name = "a57",
1184 .description = "Cortex-A57 ARM processors",1053 .description = "Cortex-A57 ARM processors",
1185 .llvm_name = "a57",
1186 .subfeatures = &[_]*const Feature {1054 .subfeatures = &[_]*const Feature {
1187 &feature_usePostraScheduler,1055 &feature_fuseLiterals,
1188 &feature_customCheapAsMove,
1189 &feature_fuseAes,
1190 &feature_balanceFpOps,1056 &feature_balanceFpOps,
1191 &feature_fpArmv8,
1192 &feature_perfmon,
1193 &feature_predictableSelectExpensive,1057 &feature_predictableSelectExpensive,
1194 &feature_fuseLiterals,1058 &feature_fuseAes,
1059 &feature_usePostraScheduler,
1060 &feature_perfmon,
1061 &feature_fpArmv8,
1062 &feature_customCheapAsMove,
1195 &feature_crc,1063 &feature_crc,
1196 },1064 },
1197};1065};
...@@ -1199,352 +1067,335 @@ pub const feature_a57 = Feature{...@@ -1199,352 +1067,335 @@ pub const feature_a57 = Feature{
1199pub const feature_a65 = Feature{1067pub const feature_a65 = Feature{
1200 .name = "a65",1068 .name = "a65",
1201 .description = "Cortex-A65 ARM processors",1069 .description = "Cortex-A65 ARM processors",
1202 .llvm_name = "a65",
1203 .subfeatures = &[_]*const Feature {1070 .subfeatures = &[_]*const Feature {
1204 &feature_rdm,1071 &feature_rcpc,
1205 &feature_ccpp,1072 &feature_ccpp,
1206 &feature_lse,
1207 &feature_fpArmv8,
1208 &feature_ras,
1209 &feature_dotprod,
1210 &feature_lor,1073 &feature_lor,
1074 &feature_dotprod,
1211 &feature_pan,1075 &feature_pan,
1212 &feature_crc,1076 &feature_lse,
1213 &feature_rcpc,1077 &feature_rdm,
1214 &feature_uaops,
1215 &feature_vh,1078 &feature_vh,
1079 &feature_fpArmv8,
1080 &feature_uaops,
1081 &feature_ras,
1216 &feature_ssbs,1082 &feature_ssbs,
1083 &feature_crc,
1217 },1084 },
1218};1085};
12191086
1220pub const feature_a72 = Feature{1087pub const feature_a72 = Feature{
1221 .name = "a72",1088 .name = "a72",
1222 .description = "Cortex-A72 ARM processors",1089 .description = "Cortex-A72 ARM processors",
1223 .llvm_name = "a72",
1224 .subfeatures = &[_]*const Feature {1090 .subfeatures = &[_]*const Feature {
1225 &feature_fpArmv8,1091 &feature_fpArmv8,
1226 &feature_perfmon,
1227 &feature_crc,
1228 &feature_fuseAes,1092 &feature_fuseAes,
1093 &feature_crc,
1094 &feature_perfmon,
1229 },1095 },
1230};1096};
12311097
1232pub const feature_a73 = Feature{1098pub const feature_a73 = Feature{
1233 .name = "a73",1099 .name = "a73",
1234 .description = "Cortex-A73 ARM processors",1100 .description = "Cortex-A73 ARM processors",
1235 .llvm_name = "a73",
1236 .subfeatures = &[_]*const Feature {1101 .subfeatures = &[_]*const Feature {
1237 &feature_fpArmv8,1102 &feature_fpArmv8,
1238 &feature_perfmon,
1239 &feature_crc,
1240 &feature_fuseAes,1103 &feature_fuseAes,
1104 &feature_crc,
1105 &feature_perfmon,
1241 },1106 },
1242};1107};
12431108
1244pub const feature_a75 = Feature{1109pub const feature_a75 = Feature{
1245 .name = "a75",1110 .name = "a75",
1246 .description = "Cortex-A75 ARM processors",1111 .description = "Cortex-A75 ARM processors",
1247 .llvm_name = "a75",
1248 .subfeatures = &[_]*const Feature {1112 .subfeatures = &[_]*const Feature {
1249 &feature_rdm,
1250 &feature_fuseAes,1113 &feature_fuseAes,
1251 &feature_ccpp,1114 &feature_ccpp,
1252 &feature_lse,
1253 &feature_fpArmv8,
1254 &feature_perfmon,
1255 &feature_ras,
1256 &feature_dotprod,
1257 &feature_lor,1115 &feature_lor,
1116 &feature_dotprod,
1117 &feature_perfmon,
1258 &feature_pan,1118 &feature_pan,
1259 &feature_crc,1119 &feature_lse,
1260 &feature_rcpc,1120 &feature_rdm,
1261 &feature_uaops,1121 &feature_ras,
1262 &feature_vh,1122 &feature_vh,
1123 &feature_fpArmv8,
1124 &feature_uaops,
1125 &feature_rcpc,
1126 &feature_crc,
1263 },1127 },
1264};1128};
12651129
1266pub const feature_a76 = Feature{1130pub const feature_a76 = Feature{
1267 .name = "a76",1131 .name = "a76",
1268 .description = "Cortex-A76 ARM processors",1132 .description = "Cortex-A76 ARM processors",
1269 .llvm_name = "a76",
1270 .subfeatures = &[_]*const Feature {1133 .subfeatures = &[_]*const Feature {
1271 &feature_rdm,
1272 &feature_ccpp,1134 &feature_ccpp,
1273 &feature_lse,
1274 &feature_fpArmv8,
1275 &feature_ras,
1276 &feature_dotprod,
1277 &feature_lor,1135 &feature_lor,
1136 &feature_dotprod,
1278 &feature_pan,1137 &feature_pan,
1279 &feature_crc,1138 &feature_lse,
1280 &feature_rcpc,1139 &feature_rdm,
1281 &feature_uaops,1140 &feature_ras,
1282 &feature_vh,1141 &feature_vh,
1142 &feature_fpArmv8,
1143 &feature_uaops,
1144 &feature_rcpc,
1283 &feature_ssbs,1145 &feature_ssbs,
1146 &feature_crc,
1284 },1147 },
1285};1148};
12861149
1287pub const feature_cyclone = Feature{1150pub const feature_cyclone = Feature{
1288 .name = "cyclone",1151 .name = "cyclone",
1289 .description = "Cyclone",1152 .description = "Cyclone",
1290 .llvm_name = "cyclone",
1291 .subfeatures = &[_]*const Feature {1153 .subfeatures = &[_]*const Feature {
1292 &feature_zczGp,
1293 &feature_arithBccFusion,
1294 &feature_fuseAes,
1295 &feature_zczFp,
1296 &feature_zczFpWorkaround,1154 &feature_zczFpWorkaround,
1297 &feature_fpArmv8,1155 &feature_fuseAes,
1298 &feature_perfmon,
1299 &feature_disableLatencySchedHeuristic,
1300 &feature_zcm,1156 &feature_zcm,
1301 &feature_arithCbzFusion,1157 &feature_arithCbzFusion,
1302 &feature_fuseCryptoEor,1158 &feature_perfmon,
1303 &feature_alternateSextloadCvtF32Pattern,1159 &feature_alternateSextloadCvtF32Pattern,
1160 &feature_arithBccFusion,
1161 &feature_disableLatencySchedHeuristic,
1162 &feature_zczGp,
1163 &feature_fuseCryptoEor,
1164 &feature_fpArmv8,
1165 &feature_zczFp,
1304 },1166 },
1305};1167};
13061168
1307pub const feature_exynosm1 = Feature{1169pub const feature_exynosm1 = Feature{
1308 .name = "exynosm1",1170 .name = "exynosm1",
1309 .description = "Samsung Exynos-M1 processors",1171 .description = "Samsung Exynos-M1 processors",
1310 .llvm_name = "exynosm1",
1311 .subfeatures = &[_]*const Feature {1172 .subfeatures = &[_]*const Feature {
1173 &feature_useReciprocalSquareRoot,
1174 &feature_fuseAes,
1312 &feature_usePostraScheduler,1175 &feature_usePostraScheduler,
1313 &feature_slowMisaligned128store,1176 &feature_slowMisaligned128store,
1314 &feature_customCheapAsMove,
1315 &feature_fuseAes,
1316 &feature_zczFp,
1317 &feature_fpArmv8,
1318 &feature_perfmon,1177 &feature_perfmon,
1319 &feature_slowPaired128,1178 &feature_fpArmv8,
1320 &feature_useReciprocalSquareRoot,1179 &feature_customCheapAsMove,
1321 &feature_force32bitJumpTables,1180 &feature_force32bitJumpTables,
1181 &feature_zczFp,
1322 &feature_crc,1182 &feature_crc,
1183 &feature_slowPaired128,
1323 },1184 },
1324};1185};
13251186
1326pub const feature_exynosm2 = Feature{1187pub const feature_exynosm2 = Feature{
1327 .name = "exynosm2",1188 .name = "exynosm2",
1328 .description = "Samsung Exynos-M2 processors",1189 .description = "Samsung Exynos-M2 processors",
1329 .llvm_name = "exynosm2",
1330 .subfeatures = &[_]*const Feature {1190 .subfeatures = &[_]*const Feature {
1191 &feature_fuseAes,
1331 &feature_usePostraScheduler,1192 &feature_usePostraScheduler,
1332 &feature_slowMisaligned128store,1193 &feature_slowMisaligned128store,
1333 &feature_customCheapAsMove,
1334 &feature_fuseAes,
1335 &feature_zczFp,
1336 &feature_fpArmv8,
1337 &feature_perfmon,1194 &feature_perfmon,
1338 &feature_slowPaired128,1195 &feature_fpArmv8,
1196 &feature_customCheapAsMove,
1339 &feature_force32bitJumpTables,1197 &feature_force32bitJumpTables,
1198 &feature_zczFp,
1340 &feature_crc,1199 &feature_crc,
1200 &feature_slowPaired128,
1341 },1201 },
1342};1202};
13431203
1344pub const feature_exynosm3 = Feature{1204pub const feature_exynosm3 = Feature{
1345 .name = "exynosm3",1205 .name = "exynosm3",
1346 .description = "Samsung Exynos-M3 processors",1206 .description = "Samsung Exynos-M3 processors",
1347 .llvm_name = "exynosm3",
1348 .subfeatures = &[_]*const Feature {1207 .subfeatures = &[_]*const Feature {
1349 &feature_usePostraScheduler,1208 &feature_fuseLiterals,
1350 &feature_customCheapAsMove,1209 &feature_predictableSelectExpensive,
1351 &feature_fuseAes,1210 &feature_fuseAes,
1352 &feature_fuseAddress,1211 &feature_fuseAddress,
1353 &feature_zczFp,1212 &feature_fuseCsel,
1354 &feature_fpArmv8,1213 &feature_usePostraScheduler,
1355 &feature_perfmon,1214 &feature_perfmon,
1356 &feature_predictableSelectExpensive,1215 &feature_fpArmv8,
1357 &feature_fuseLiterals,1216 &feature_customCheapAsMove,
1217 &feature_lslFast,
1358 &feature_force32bitJumpTables,1218 &feature_force32bitJumpTables,
1219 &feature_zczFp,
1359 &feature_crc,1220 &feature_crc,
1360 &feature_lslFast,
1361 &feature_fuseCsel,
1362 },1221 },
1363};1222};
13641223
1365pub const feature_exynosm4 = Feature{1224pub const feature_exynosm4 = Feature{
1366 .name = "exynosm4",1225 .name = "exynosm4",
1367 .description = "Samsung Exynos-M4 processors",1226 .description = "Samsung Exynos-M4 processors",
1368 .llvm_name = "exynosm4",
1369 .subfeatures = &[_]*const Feature {1227 .subfeatures = &[_]*const Feature {
1228 &feature_fuseLiterals,
1229 &feature_fuseAes,
1370 &feature_ccpp,1230 &feature_ccpp,
1371 &feature_perfmon,1231 &feature_lor,
1372 &feature_dotprod,1232 &feature_dotprod,
1373 &feature_fuseArithLogic,1233 &feature_fpArmv8,
1374 &feature_force32bitJumpTables,
1375 &feature_lslFast,
1376 &feature_zczGp,
1377 &feature_customCheapAsMove,1234 &feature_customCheapAsMove,
1378 &feature_fuseAes,1235 &feature_lslFast,
1236 &feature_crc,
1379 &feature_fuseAddress,1237 &feature_fuseAddress,
1380 &feature_lse,
1381 &feature_arithCbzFusion,1238 &feature_arithCbzFusion,
1382 &feature_uaops,1239 &feature_perfmon,
1240 &feature_arithBccFusion,
1241 &feature_zczGp,
1242 &feature_rdm,
1243 &feature_force32bitJumpTables,
1244 &feature_pan,
1245 &feature_lse,
1383 &feature_fuseCsel,1246 &feature_fuseCsel,
1247 &feature_uaops,
1248 &feature_fuseArithLogic,
1249 &feature_usePostraScheduler,
1384 &feature_vh,1250 &feature_vh,
1385 &feature_rdm,
1386 &feature_fpArmv8,
1387 &feature_ras,1251 &feature_ras,
1388 &feature_fuseLiterals,
1389 &feature_crc,
1390 &feature_usePostraScheduler,
1391 &feature_arithBccFusion,
1392 &feature_zczFp,1252 &feature_zczFp,
1393 &feature_lor,
1394 &feature_pan,
1395 },1253 },
1396};1254};
13971255
1398pub const feature_falkor = Feature{1256pub const feature_falkor = Feature{
1399 .name = "falkor",1257 .name = "falkor",
1400 .description = "Qualcomm Falkor processors",1258 .description = "Qualcomm Falkor processors",
1401 .llvm_name = "falkor",
1402 .subfeatures = &[_]*const Feature {1259 .subfeatures = &[_]*const Feature {
1403 &feature_rdm,1260 &feature_predictableSelectExpensive,
1404 &feature_usePostraScheduler,1261 &feature_usePostraScheduler,
1405 &feature_zczGp,1262 &feature_perfmon,
1406 &feature_slowStrqroStore,1263 &feature_slowStrqroStore,
1264 &feature_rdm,
1265 &feature_zczGp,
1266 &feature_fpArmv8,
1407 &feature_customCheapAsMove,1267 &feature_customCheapAsMove,
1268 &feature_lslFast,
1408 &feature_zczFp,1269 &feature_zczFp,
1409 &feature_fpArmv8,
1410 &feature_perfmon,
1411 &feature_predictableSelectExpensive,
1412 &feature_crc,1270 &feature_crc,
1413 &feature_lslFast,
1414 },1271 },
1415};1272};
14161273
1417pub const feature_kryo = Feature{1274pub const feature_kryo = Feature{
1418 .name = "kryo",1275 .name = "kryo",
1419 .description = "Qualcomm Kryo processors",1276 .description = "Qualcomm Kryo processors",
1420 .llvm_name = "kryo",
1421 .subfeatures = &[_]*const Feature {1277 .subfeatures = &[_]*const Feature {
1278 &feature_predictableSelectExpensive,
1422 &feature_usePostraScheduler,1279 &feature_usePostraScheduler,
1280 &feature_perfmon,
1423 &feature_zczGp,1281 &feature_zczGp,
1282 &feature_fpArmv8,
1424 &feature_customCheapAsMove,1283 &feature_customCheapAsMove,
1284 &feature_lslFast,
1425 &feature_zczFp,1285 &feature_zczFp,
1426 &feature_fpArmv8,
1427 &feature_perfmon,
1428 &feature_predictableSelectExpensive,
1429 &feature_crc,1286 &feature_crc,
1430 &feature_lslFast,
1431 },1287 },
1432};1288};
14331289
1434pub const feature_neoversee1 = Feature{1290pub const feature_neoversee1 = Feature{
1435 .name = "neoversee1",1291 .name = "neoversee1",
1436 .description = "Neoverse E1 ARM processors",1292 .description = "Neoverse E1 ARM processors",
1437 .llvm_name = "neoversee1",
1438 .subfeatures = &[_]*const Feature {1293 .subfeatures = &[_]*const Feature {
1439 &feature_rdm,
1440 &feature_ccpp,1294 &feature_ccpp,
1441 &feature_lse,
1442 &feature_fpArmv8,
1443 &feature_ras,
1444 &feature_dotprod,
1445 &feature_lor,1295 &feature_lor,
1296 &feature_dotprod,
1446 &feature_pan,1297 &feature_pan,
1447 &feature_crc,1298 &feature_lse,
1448 &feature_rcpc,1299 &feature_rdm,
1449 &feature_uaops,1300 &feature_ras,
1450 &feature_vh,1301 &feature_vh,
1302 &feature_fpArmv8,
1303 &feature_uaops,
1304 &feature_rcpc,
1451 &feature_ssbs,1305 &feature_ssbs,
1306 &feature_crc,
1452 },1307 },
1453};1308};
14541309
1455pub const feature_neoversen1 = Feature{1310pub const feature_neoversen1 = Feature{
1456 .name = "neoversen1",1311 .name = "neoversen1",
1457 .description = "Neoverse N1 ARM processors",1312 .description = "Neoverse N1 ARM processors",
1458 .llvm_name = "neoversen1",
1459 .subfeatures = &[_]*const Feature {1313 .subfeatures = &[_]*const Feature {
1460 &feature_rdm,
1461 &feature_ccpp,1314 &feature_ccpp,
1462 &feature_lse,
1463 &feature_fpArmv8,
1464 &feature_ras,
1465 &feature_dotprod,
1466 &feature_lor,1315 &feature_lor,
1467 &feature_spe,1316 &feature_dotprod,
1468 &feature_pan,1317 &feature_spe,
1469 &feature_crc,1318 &feature_pan,
1470 &feature_rcpc,1319 &feature_lse,
1471 &feature_uaops,1320 &feature_rdm,
1321 &feature_ras,
1472 &feature_vh,1322 &feature_vh,
1323 &feature_fpArmv8,
1324 &feature_uaops,
1325 &feature_rcpc,
1473 &feature_ssbs,1326 &feature_ssbs,
1327 &feature_crc,
1474 },1328 },
1475};1329};
14761330
1477pub const feature_saphira = Feature{1331pub const feature_saphira = Feature{
1478 .name = "saphira",1332 .name = "saphira",
1479 .description = "Qualcomm Saphira processors",1333 .description = "Qualcomm Saphira processors",
1480 .llvm_name = "saphira",
1481 .subfeatures = &[_]*const Feature {1334 .subfeatures = &[_]*const Feature {
1482 &feature_am,
1483 &feature_nv,
1484 &feature_ccpp,1335 &feature_ccpp,
1485 &feature_predictableSelectExpensive,1336 &feature_lor,
1486 &feature_perfmon,
1487 &feature_dotprod,1337 &feature_dotprod,
1488 &feature_spe,1338 &feature_fpArmv8,
1339 &feature_customCheapAsMove,
1489 &feature_lslFast,1340 &feature_lslFast,
1341 &feature_crc,
1342 &feature_fmi,
1343 &feature_predictableSelectExpensive,
1344 &feature_tracev84,
1345 &feature_tlbRmi,
1346 &feature_perfmon,
1490 &feature_zczGp,1347 &feature_zczGp,
1491 &feature_customCheapAsMove,1348 &feature_rdm,
1349 &feature_ccidx,
1350 &feature_mpam,
1351 &feature_pan,
1492 &feature_lse,1352 &feature_lse,
1493 &feature_rcpc,1353 &feature_rcpc,
1494 &feature_uaops,1354 &feature_uaops,
1495 &feature_ccidx,1355 &feature_sel2,
1496 &feature_vh,1356 &feature_usePostraScheduler,
1497 &feature_tracev84,1357 &feature_nv,
1498 &feature_rdm,1358 &feature_am,
1499 &feature_fpArmv8,1359 &feature_spe,
1500 &feature_dit,1360 &feature_dit,
1501 &feature_mpam,1361 &feature_vh,
1502 &feature_ras,1362 &feature_ras,
1503 &feature_tlbRmi,
1504 &feature_fmi,
1505 &feature_crc,
1506 &feature_usePostraScheduler,
1507 &feature_pa,
1508 &feature_zczFp,1363 &feature_zczFp,
1509 &feature_sel2,1364 &feature_pa,
1510 &feature_lor,
1511 &feature_pan,
1512 },1365 },
1513};1366};
15141367
1515pub const feature_tsv110 = Feature{1368pub const feature_tsv110 = Feature{
1516 .name = "tsv110",1369 .name = "tsv110",
1517 .description = "HiSilicon TS-V110 processors",1370 .description = "HiSilicon TS-V110 processors",
1518 .llvm_name = "tsv110",
1519 .subfeatures = &[_]*const Feature {1371 .subfeatures = &[_]*const Feature {
1520 &feature_rdm,
1521 &feature_usePostraScheduler,
1522 &feature_customCheapAsMove,
1523 &feature_fuseAes,1372 &feature_fuseAes,
1373 &feature_usePostraScheduler,
1524 &feature_ccpp,1374 &feature_ccpp,
1525 &feature_lse,
1526 &feature_fpArmv8,
1527 &feature_perfmon,
1528 &feature_ras,
1529 &feature_dotprod,
1530 &feature_lor,1375 &feature_lor,
1376 &feature_dotprod,
1377 &feature_uaops,
1378 &feature_perfmon,
1531 &feature_spe,1379 &feature_spe,
1532 &feature_crc,
1533 &feature_pan,1380 &feature_pan,
1534 &feature_uaops,1381 &feature_lse,
1382 &feature_rdm,
1535 &feature_vh,1383 &feature_vh,
1384 &feature_fpArmv8,
1385 &feature_customCheapAsMove,
1386 &feature_ras,
1387 &feature_crc,
1536 },1388 },
1537};1389};
15381390
1539pub const feature_thunderx = Feature{1391pub const feature_thunderx = Feature{
1540 .name = "thunderx",1392 .name = "thunderx",
1541 .description = "Cavium ThunderX processors",1393 .description = "Cavium ThunderX processors",
1542 .llvm_name = "thunderx",
1543 .subfeatures = &[_]*const Feature {1394 .subfeatures = &[_]*const Feature {
1544 &feature_usePostraScheduler,
1545 &feature_predictableSelectExpensive,1395 &feature_predictableSelectExpensive,
1546 &feature_fpArmv8,1396 &feature_usePostraScheduler,
1547 &feature_perfmon,1397 &feature_perfmon,
1398 &feature_fpArmv8,
1548 &feature_crc,1399 &feature_crc,
1549 },1400 },
1550};1401};
...@@ -1552,31 +1403,29 @@ pub const feature_thunderx = Feature{...@@ -1552,31 +1403,29 @@ pub const feature_thunderx = Feature{
1552pub const feature_thunderx2t99 = Feature{1403pub const feature_thunderx2t99 = Feature{
1553 .name = "thunderx2t99",1404 .name = "thunderx2t99",
1554 .description = "Cavium ThunderX2 processors",1405 .description = "Cavium ThunderX2 processors",
1555 .llvm_name = "thunderx2t99",
1556 .subfeatures = &[_]*const Feature {1406 .subfeatures = &[_]*const Feature {
1557 &feature_rdm,
1558 &feature_usePostraScheduler,
1559 &feature_arithBccFusion,
1560 &feature_lse,
1561 &feature_fpArmv8,
1562 &feature_predictableSelectExpensive,1407 &feature_predictableSelectExpensive,
1408 &feature_usePostraScheduler,
1563 &feature_lor,1409 &feature_lor,
1564 &feature_crc,1410 &feature_lse,
1565 &feature_pan,1411 &feature_pan,
1412 &feature_arithBccFusion,
1413 &feature_rdm,
1566 &feature_aggressiveFma,1414 &feature_aggressiveFma,
1567 &feature_vh,1415 &feature_vh,
1416 &feature_fpArmv8,
1417 &feature_crc,
1568 },1418 },
1569};1419};
15701420
1571pub const feature_thunderxt81 = Feature{1421pub const feature_thunderxt81 = Feature{
1572 .name = "thunderxt81",1422 .name = "thunderxt81",
1573 .description = "Cavium ThunderX processors",1423 .description = "Cavium ThunderX processors",
1574 .llvm_name = "thunderxt81",
1575 .subfeatures = &[_]*const Feature {1424 .subfeatures = &[_]*const Feature {
1576 &feature_usePostraScheduler,
1577 &feature_predictableSelectExpensive,1425 &feature_predictableSelectExpensive,
1578 &feature_fpArmv8,1426 &feature_usePostraScheduler,
1579 &feature_perfmon,1427 &feature_perfmon,
1428 &feature_fpArmv8,
1580 &feature_crc,1429 &feature_crc,
1581 },1430 },
1582};1431};
...@@ -1584,12 +1433,11 @@ pub const feature_thunderxt81 = Feature{...@@ -1584,12 +1433,11 @@ pub const feature_thunderxt81 = Feature{
1584pub const feature_thunderxt83 = Feature{1433pub const feature_thunderxt83 = Feature{
1585 .name = "thunderxt83",1434 .name = "thunderxt83",
1586 .description = "Cavium ThunderX processors",1435 .description = "Cavium ThunderX processors",
1587 .llvm_name = "thunderxt83",
1588 .subfeatures = &[_]*const Feature {1436 .subfeatures = &[_]*const Feature {
1589 &feature_usePostraScheduler,
1590 &feature_predictableSelectExpensive,1437 &feature_predictableSelectExpensive,
1591 &feature_fpArmv8,1438 &feature_usePostraScheduler,
1592 &feature_perfmon,1439 &feature_perfmon,
1440 &feature_fpArmv8,
1593 &feature_crc,1441 &feature_crc,
1594 },1442 },
1595};1443};
...@@ -1597,12 +1445,11 @@ pub const feature_thunderxt83 = Feature{...@@ -1597,12 +1445,11 @@ pub const feature_thunderxt83 = Feature{
1597pub const feature_thunderxt88 = Feature{1445pub const feature_thunderxt88 = Feature{
1598 .name = "thunderxt88",1446 .name = "thunderxt88",
1599 .description = "Cavium ThunderX processors",1447 .description = "Cavium ThunderX processors",
1600 .llvm_name = "thunderxt88",
1601 .subfeatures = &[_]*const Feature {1448 .subfeatures = &[_]*const Feature {
1602 &feature_usePostraScheduler,
1603 &feature_predictableSelectExpensive,1449 &feature_predictableSelectExpensive,
1604 &feature_fpArmv8,1450 &feature_usePostraScheduler,
1605 &feature_perfmon,1451 &feature_perfmon,
1452 &feature_fpArmv8,
1606 &feature_crc,1453 &feature_crc,
1607 },1454 },
1608};1455};
...@@ -1767,18 +1614,18 @@ pub const cpu_appleLatest = Cpu{...@@ -1767,18 +1614,18 @@ pub const cpu_appleLatest = Cpu{
1767 .name = "apple-latest",1614 .name = "apple-latest",
1768 .llvm_name = "apple-latest",1615 .llvm_name = "apple-latest",
1769 .subfeatures = &[_]*const Feature {1616 .subfeatures = &[_]*const Feature {
1770 &feature_zczGp,
1771 &feature_arithBccFusion,
1772 &feature_fuseAes,
1773 &feature_zczFp,
1774 &feature_zczFpWorkaround,1617 &feature_zczFpWorkaround,
1775 &feature_fpArmv8,1618 &feature_fuseAes,
1776 &feature_perfmon,
1777 &feature_disableLatencySchedHeuristic,
1778 &feature_zcm,1619 &feature_zcm,
1779 &feature_arithCbzFusion,1620 &feature_arithCbzFusion,
1780 &feature_fuseCryptoEor,1621 &feature_perfmon,
1781 &feature_alternateSextloadCvtF32Pattern,1622 &feature_alternateSextloadCvtF32Pattern,
1623 &feature_arithBccFusion,
1624 &feature_disableLatencySchedHeuristic,
1625 &feature_zczGp,
1626 &feature_fuseCryptoEor,
1627 &feature_fpArmv8,
1628 &feature_zczFp,
1782 &feature_cyclone,1629 &feature_cyclone,
1783 },1630 },
1784};1631};
...@@ -1798,13 +1645,13 @@ pub const cpu_cortexA53 = Cpu{...@@ -1798,13 +1645,13 @@ pub const cpu_cortexA53 = Cpu{
1798 .name = "cortex-a53",1645 .name = "cortex-a53",
1799 .llvm_name = "cortex-a53",1646 .llvm_name = "cortex-a53",
1800 .subfeatures = &[_]*const Feature {1647 .subfeatures = &[_]*const Feature {
1801 &feature_usePostraScheduler,1648 &feature_useAa,
1802 &feature_customCheapAsMove,
1803 &feature_fuseAes,
1804 &feature_balanceFpOps,1649 &feature_balanceFpOps,
1805 &feature_fpArmv8,1650 &feature_fuseAes,
1651 &feature_usePostraScheduler,
1806 &feature_perfmon,1652 &feature_perfmon,
1807 &feature_useAa,1653 &feature_fpArmv8,
1654 &feature_customCheapAsMove,
1808 &feature_crc,1655 &feature_crc,
1809 &feature_a53,1656 &feature_a53,
1810 },1657 },
...@@ -1814,20 +1661,20 @@ pub const cpu_cortexA55 = Cpu{...@@ -1814,20 +1661,20 @@ pub const cpu_cortexA55 = Cpu{
1814 .name = "cortex-a55",1661 .name = "cortex-a55",
1815 .llvm_name = "cortex-a55",1662 .llvm_name = "cortex-a55",
1816 .subfeatures = &[_]*const Feature {1663 .subfeatures = &[_]*const Feature {
1817 &feature_rdm,
1818 &feature_fuseAes,1664 &feature_fuseAes,
1819 &feature_ccpp,1665 &feature_ccpp,
1820 &feature_lse,
1821 &feature_fpArmv8,
1822 &feature_perfmon,
1823 &feature_ras,
1824 &feature_dotprod,
1825 &feature_lor,1666 &feature_lor,
1667 &feature_dotprod,
1668 &feature_perfmon,
1826 &feature_pan,1669 &feature_pan,
1827 &feature_crc,1670 &feature_lse,
1828 &feature_rcpc,1671 &feature_rdm,
1829 &feature_uaops,1672 &feature_ras,
1830 &feature_vh,1673 &feature_vh,
1674 &feature_fpArmv8,
1675 &feature_uaops,
1676 &feature_rcpc,
1677 &feature_crc,
1831 &feature_a55,1678 &feature_a55,
1832 },1679 },
1833};1680};
...@@ -1836,14 +1683,14 @@ pub const cpu_cortexA57 = Cpu{...@@ -1836,14 +1683,14 @@ pub const cpu_cortexA57 = Cpu{
1836 .name = "cortex-a57",1683 .name = "cortex-a57",
1837 .llvm_name = "cortex-a57",1684 .llvm_name = "cortex-a57",
1838 .subfeatures = &[_]*const Feature {1685 .subfeatures = &[_]*const Feature {
1839 &feature_usePostraScheduler,1686 &feature_fuseLiterals,
1840 &feature_customCheapAsMove,
1841 &feature_fuseAes,
1842 &feature_balanceFpOps,1687 &feature_balanceFpOps,
1843 &feature_fpArmv8,
1844 &feature_perfmon,
1845 &feature_predictableSelectExpensive,1688 &feature_predictableSelectExpensive,
1846 &feature_fuseLiterals,1689 &feature_fuseAes,
1690 &feature_usePostraScheduler,
1691 &feature_perfmon,
1692 &feature_fpArmv8,
1693 &feature_customCheapAsMove,
1847 &feature_crc,1694 &feature_crc,
1848 &feature_a57,1695 &feature_a57,
1849 },1696 },
...@@ -1853,19 +1700,19 @@ pub const cpu_cortexA65 = Cpu{...@@ -1853,19 +1700,19 @@ pub const cpu_cortexA65 = Cpu{
1853 .name = "cortex-a65",1700 .name = "cortex-a65",
1854 .llvm_name = "cortex-a65",1701 .llvm_name = "cortex-a65",
1855 .subfeatures = &[_]*const Feature {1702 .subfeatures = &[_]*const Feature {
1856 &feature_rdm,1703 &feature_rcpc,
1857 &feature_ccpp,1704 &feature_ccpp,
1858 &feature_lse,
1859 &feature_fpArmv8,
1860 &feature_ras,
1861 &feature_dotprod,
1862 &feature_lor,1705 &feature_lor,
1706 &feature_dotprod,
1863 &feature_pan,1707 &feature_pan,
1864 &feature_crc,1708 &feature_lse,
1865 &feature_rcpc,1709 &feature_rdm,
1866 &feature_uaops,
1867 &feature_vh,1710 &feature_vh,
1711 &feature_fpArmv8,
1712 &feature_uaops,
1713 &feature_ras,
1868 &feature_ssbs,1714 &feature_ssbs,
1715 &feature_crc,
1869 &feature_a65,1716 &feature_a65,
1870 },1717 },
1871};1718};
...@@ -1874,19 +1721,19 @@ pub const cpu_cortexA65ae = Cpu{...@@ -1874,19 +1721,19 @@ pub const cpu_cortexA65ae = Cpu{
1874 .name = "cortex-a65ae",1721 .name = "cortex-a65ae",
1875 .llvm_name = "cortex-a65ae",1722 .llvm_name = "cortex-a65ae",
1876 .subfeatures = &[_]*const Feature {1723 .subfeatures = &[_]*const Feature {
1877 &feature_rdm,1724 &feature_rcpc,
1878 &feature_ccpp,1725 &feature_ccpp,
1879 &feature_lse,
1880 &feature_fpArmv8,
1881 &feature_ras,
1882 &feature_dotprod,
1883 &feature_lor,1726 &feature_lor,
1727 &feature_dotprod,
1884 &feature_pan,1728 &feature_pan,
1885 &feature_crc,1729 &feature_lse,
1886 &feature_rcpc,1730 &feature_rdm,
1887 &feature_uaops,
1888 &feature_vh,1731 &feature_vh,
1732 &feature_fpArmv8,
1733 &feature_uaops,
1734 &feature_ras,
1889 &feature_ssbs,1735 &feature_ssbs,
1736 &feature_crc,
1890 &feature_a65,1737 &feature_a65,
1891 },1738 },
1892};1739};
...@@ -1896,9 +1743,9 @@ pub const cpu_cortexA72 = Cpu{...@@ -1896,9 +1743,9 @@ pub const cpu_cortexA72 = Cpu{
1896 .llvm_name = "cortex-a72",1743 .llvm_name = "cortex-a72",
1897 .subfeatures = &[_]*const Feature {1744 .subfeatures = &[_]*const Feature {
1898 &feature_fpArmv8,1745 &feature_fpArmv8,
1899 &feature_perfmon,
1900 &feature_crc,
1901 &feature_fuseAes,1746 &feature_fuseAes,
1747 &feature_crc,
1748 &feature_perfmon,
1902 &feature_a72,1749 &feature_a72,
1903 },1750 },
1904};1751};
...@@ -1908,9 +1755,9 @@ pub const cpu_cortexA73 = Cpu{...@@ -1908,9 +1755,9 @@ pub const cpu_cortexA73 = Cpu{
1908 .llvm_name = "cortex-a73",1755 .llvm_name = "cortex-a73",
1909 .subfeatures = &[_]*const Feature {1756 .subfeatures = &[_]*const Feature {
1910 &feature_fpArmv8,1757 &feature_fpArmv8,
1911 &feature_perfmon,
1912 &feature_crc,
1913 &feature_fuseAes,1758 &feature_fuseAes,
1759 &feature_crc,
1760 &feature_perfmon,
1914 &feature_a73,1761 &feature_a73,
1915 },1762 },
1916};1763};
...@@ -1919,20 +1766,20 @@ pub const cpu_cortexA75 = Cpu{...@@ -1919,20 +1766,20 @@ pub const cpu_cortexA75 = Cpu{
1919 .name = "cortex-a75",1766 .name = "cortex-a75",
1920 .llvm_name = "cortex-a75",1767 .llvm_name = "cortex-a75",
1921 .subfeatures = &[_]*const Feature {1768 .subfeatures = &[_]*const Feature {
1922 &feature_rdm,
1923 &feature_fuseAes,1769 &feature_fuseAes,
1924 &feature_ccpp,1770 &feature_ccpp,
1925 &feature_lse,
1926 &feature_fpArmv8,
1927 &feature_perfmon,
1928 &feature_ras,
1929 &feature_dotprod,
1930 &feature_lor,1771 &feature_lor,
1772 &feature_dotprod,
1773 &feature_perfmon,
1931 &feature_pan,1774 &feature_pan,
1932 &feature_crc,1775 &feature_lse,
1933 &feature_rcpc,1776 &feature_rdm,
1934 &feature_uaops,1777 &feature_ras,
1935 &feature_vh,1778 &feature_vh,
1779 &feature_fpArmv8,
1780 &feature_uaops,
1781 &feature_rcpc,
1782 &feature_crc,
1936 &feature_a75,1783 &feature_a75,
1937 },1784 },
1938};1785};
...@@ -1941,19 +1788,19 @@ pub const cpu_cortexA76 = Cpu{...@@ -1941,19 +1788,19 @@ pub const cpu_cortexA76 = Cpu{
1941 .name = "cortex-a76",1788 .name = "cortex-a76",
1942 .llvm_name = "cortex-a76",1789 .llvm_name = "cortex-a76",
1943 .subfeatures = &[_]*const Feature {1790 .subfeatures = &[_]*const Feature {
1944 &feature_rdm,
1945 &feature_ccpp,1791 &feature_ccpp,
1946 &feature_lse,
1947 &feature_fpArmv8,
1948 &feature_ras,
1949 &feature_dotprod,
1950 &feature_lor,1792 &feature_lor,
1793 &feature_dotprod,
1951 &feature_pan,1794 &feature_pan,
1952 &feature_crc,1795 &feature_lse,
1953 &feature_rcpc,1796 &feature_rdm,
1954 &feature_uaops,1797 &feature_ras,
1955 &feature_vh,1798 &feature_vh,
1799 &feature_fpArmv8,
1800 &feature_uaops,
1801 &feature_rcpc,
1956 &feature_ssbs,1802 &feature_ssbs,
1803 &feature_crc,
1957 &feature_a76,1804 &feature_a76,
1958 },1805 },
1959};1806};
...@@ -1962,39 +1809,39 @@ pub const cpu_cortexA76ae = Cpu{...@@ -1962,39 +1809,39 @@ pub const cpu_cortexA76ae = Cpu{
1962 .name = "cortex-a76ae",1809 .name = "cortex-a76ae",
1963 .llvm_name = "cortex-a76ae",1810 .llvm_name = "cortex-a76ae",
1964 .subfeatures = &[_]*const Feature {1811 .subfeatures = &[_]*const Feature {
1965 &feature_rdm,
1966 &feature_ccpp,1812 &feature_ccpp,
1967 &feature_lse,
1968 &feature_fpArmv8,
1969 &feature_ras,
1970 &feature_dotprod,
1971 &feature_lor,1813 &feature_lor,
1814 &feature_dotprod,
1972 &feature_pan,1815 &feature_pan,
1973 &feature_crc,1816 &feature_lse,
1974 &feature_rcpc,1817 &feature_rdm,
1975 &feature_uaops,1818 &feature_ras,
1976 &feature_vh,1819 &feature_vh,
1820 &feature_fpArmv8,
1821 &feature_uaops,
1822 &feature_rcpc,
1977 &feature_ssbs,1823 &feature_ssbs,
1824 &feature_crc,
1978 &feature_a76,1825 &feature_a76,
1979 },1826 },
1980};1827};
19811828
1982pub const cpu_cyclone = Cpu{1829pub const cpu_cyclone = Cpu{
1983 .name = "cyclone",1830 .name = "cyclone",
1984 .llvm_name = "cyclone",1831 .llvm_name = "cyclone",
1985 .subfeatures = &[_]*const Feature {1832 .subfeatures = &[_]*const Feature {
1986 &feature_zczGp,
1987 &feature_arithBccFusion,
1988 &feature_fuseAes,
1989 &feature_zczFp,
1990 &feature_zczFpWorkaround,1833 &feature_zczFpWorkaround,
1991 &feature_fpArmv8,1834 &feature_fuseAes,
1992 &feature_perfmon,
1993 &feature_disableLatencySchedHeuristic,
1994 &feature_zcm,1835 &feature_zcm,
1995 &feature_arithCbzFusion,1836 &feature_arithCbzFusion,
1996 &feature_fuseCryptoEor,1837 &feature_perfmon,
1997 &feature_alternateSextloadCvtF32Pattern,1838 &feature_alternateSextloadCvtF32Pattern,
1839 &feature_arithBccFusion,
1840 &feature_disableLatencySchedHeuristic,
1841 &feature_zczGp,
1842 &feature_fuseCryptoEor,
1843 &feature_fpArmv8,
1844 &feature_zczFp,
1998 &feature_cyclone,1845 &feature_cyclone,
1999 },1846 },
2000};1847};
...@@ -2003,17 +1850,17 @@ pub const cpu_exynosM1 = Cpu{...@@ -2003,17 +1850,17 @@ pub const cpu_exynosM1 = Cpu{
2003 .name = "exynos-m1",1850 .name = "exynos-m1",
2004 .llvm_name = "exynos-m1",1851 .llvm_name = "exynos-m1",
2005 .subfeatures = &[_]*const Feature {1852 .subfeatures = &[_]*const Feature {
1853 &feature_useReciprocalSquareRoot,
1854 &feature_fuseAes,
2006 &feature_usePostraScheduler,1855 &feature_usePostraScheduler,
2007 &feature_slowMisaligned128store,1856 &feature_slowMisaligned128store,
2008 &feature_customCheapAsMove,
2009 &feature_fuseAes,
2010 &feature_zczFp,
2011 &feature_fpArmv8,
2012 &feature_perfmon,1857 &feature_perfmon,
2013 &feature_slowPaired128,1858 &feature_fpArmv8,
2014 &feature_useReciprocalSquareRoot,1859 &feature_customCheapAsMove,
2015 &feature_force32bitJumpTables,1860 &feature_force32bitJumpTables,
1861 &feature_zczFp,
2016 &feature_crc,1862 &feature_crc,
1863 &feature_slowPaired128,
2017 &feature_exynosm1,1864 &feature_exynosm1,
2018 },1865 },
2019};1866};
...@@ -2022,16 +1869,16 @@ pub const cpu_exynosM2 = Cpu{...@@ -2022,16 +1869,16 @@ pub const cpu_exynosM2 = Cpu{
2022 .name = "exynos-m2",1869 .name = "exynos-m2",
2023 .llvm_name = "exynos-m2",1870 .llvm_name = "exynos-m2",
2024 .subfeatures = &[_]*const Feature {1871 .subfeatures = &[_]*const Feature {
1872 &feature_fuseAes,
2025 &feature_usePostraScheduler,1873 &feature_usePostraScheduler,
2026 &feature_slowMisaligned128store,1874 &feature_slowMisaligned128store,
2027 &feature_customCheapAsMove,
2028 &feature_fuseAes,
2029 &feature_zczFp,
2030 &feature_fpArmv8,
2031 &feature_perfmon,1875 &feature_perfmon,
2032 &feature_slowPaired128,1876 &feature_fpArmv8,
1877 &feature_customCheapAsMove,
2033 &feature_force32bitJumpTables,1878 &feature_force32bitJumpTables,
1879 &feature_zczFp,
2034 &feature_crc,1880 &feature_crc,
1881 &feature_slowPaired128,
2035 &feature_exynosm2,1882 &feature_exynosm2,
2036 },1883 },
2037};1884};
...@@ -2040,19 +1887,19 @@ pub const cpu_exynosM3 = Cpu{...@@ -2040,19 +1887,19 @@ pub const cpu_exynosM3 = Cpu{
2040 .name = "exynos-m3",1887 .name = "exynos-m3",
2041 .llvm_name = "exynos-m3",1888 .llvm_name = "exynos-m3",
2042 .subfeatures = &[_]*const Feature {1889 .subfeatures = &[_]*const Feature {
2043 &feature_usePostraScheduler,1890 &feature_fuseLiterals,
2044 &feature_customCheapAsMove,1891 &feature_predictableSelectExpensive,
2045 &feature_fuseAes,1892 &feature_fuseAes,
2046 &feature_fuseAddress,1893 &feature_fuseAddress,
2047 &feature_zczFp,1894 &feature_fuseCsel,
2048 &feature_fpArmv8,1895 &feature_usePostraScheduler,
2049 &feature_perfmon,1896 &feature_perfmon,
2050 &feature_predictableSelectExpensive,1897 &feature_fpArmv8,
2051 &feature_fuseLiterals,1898 &feature_customCheapAsMove,
1899 &feature_lslFast,
2052 &feature_force32bitJumpTables,1900 &feature_force32bitJumpTables,
1901 &feature_zczFp,
2053 &feature_crc,1902 &feature_crc,
2054 &feature_lslFast,
2055 &feature_fuseCsel,
2056 &feature_exynosm3,1903 &feature_exynosm3,
2057 },1904 },
2058};1905};
...@@ -2061,31 +1908,31 @@ pub const cpu_exynosM4 = Cpu{...@@ -2061,31 +1908,31 @@ pub const cpu_exynosM4 = Cpu{
2061 .name = "exynos-m4",1908 .name = "exynos-m4",
2062 .llvm_name = "exynos-m4",1909 .llvm_name = "exynos-m4",
2063 .subfeatures = &[_]*const Feature {1910 .subfeatures = &[_]*const Feature {
1911 &feature_fuseLiterals,
1912 &feature_fuseAes,
2064 &feature_ccpp,1913 &feature_ccpp,
2065 &feature_perfmon,1914 &feature_lor,
2066 &feature_dotprod,1915 &feature_dotprod,
2067 &feature_fuseArithLogic,1916 &feature_fpArmv8,
2068 &feature_force32bitJumpTables,
2069 &feature_lslFast,
2070 &feature_zczGp,
2071 &feature_customCheapAsMove,1917 &feature_customCheapAsMove,
2072 &feature_fuseAes,1918 &feature_lslFast,
1919 &feature_crc,
2073 &feature_fuseAddress,1920 &feature_fuseAddress,
2074 &feature_lse,
2075 &feature_arithCbzFusion,1921 &feature_arithCbzFusion,
2076 &feature_uaops,1922 &feature_perfmon,
1923 &feature_arithBccFusion,
1924 &feature_zczGp,
1925 &feature_rdm,
1926 &feature_force32bitJumpTables,
1927 &feature_pan,
1928 &feature_lse,
2077 &feature_fuseCsel,1929 &feature_fuseCsel,
1930 &feature_uaops,
1931 &feature_fuseArithLogic,
1932 &feature_usePostraScheduler,
2078 &feature_vh,1933 &feature_vh,
2079 &feature_rdm,
2080 &feature_fpArmv8,
2081 &feature_ras,1934 &feature_ras,
2082 &feature_fuseLiterals,
2083 &feature_crc,
2084 &feature_usePostraScheduler,
2085 &feature_arithBccFusion,
2086 &feature_zczFp,1935 &feature_zczFp,
2087 &feature_lor,
2088 &feature_pan,
2089 &feature_exynosm4,1936 &feature_exynosm4,
2090 },1937 },
2091};1938};
...@@ -2094,31 +1941,31 @@ pub const cpu_exynosM5 = Cpu{...@@ -2094,31 +1941,31 @@ pub const cpu_exynosM5 = Cpu{
2094 .name = "exynos-m5",1941 .name = "exynos-m5",
2095 .llvm_name = "exynos-m5",1942 .llvm_name = "exynos-m5",
2096 .subfeatures = &[_]*const Feature {1943 .subfeatures = &[_]*const Feature {
1944 &feature_fuseLiterals,
1945 &feature_fuseAes,
2097 &feature_ccpp,1946 &feature_ccpp,
2098 &feature_perfmon,1947 &feature_lor,
2099 &feature_dotprod,1948 &feature_dotprod,
2100 &feature_fuseArithLogic,1949 &feature_fpArmv8,
2101 &feature_force32bitJumpTables,
2102 &feature_lslFast,
2103 &feature_zczGp,
2104 &feature_customCheapAsMove,1950 &feature_customCheapAsMove,
2105 &feature_fuseAes,1951 &feature_lslFast,
1952 &feature_crc,
2106 &feature_fuseAddress,1953 &feature_fuseAddress,
2107 &feature_lse,
2108 &feature_arithCbzFusion,1954 &feature_arithCbzFusion,
2109 &feature_uaops,1955 &feature_perfmon,
1956 &feature_arithBccFusion,
1957 &feature_zczGp,
1958 &feature_rdm,
1959 &feature_force32bitJumpTables,
1960 &feature_pan,
1961 &feature_lse,
2110 &feature_fuseCsel,1962 &feature_fuseCsel,
1963 &feature_uaops,
1964 &feature_fuseArithLogic,
1965 &feature_usePostraScheduler,
2111 &feature_vh,1966 &feature_vh,
2112 &feature_rdm,
2113 &feature_fpArmv8,
2114 &feature_ras,1967 &feature_ras,
2115 &feature_fuseLiterals,
2116 &feature_crc,
2117 &feature_usePostraScheduler,
2118 &feature_arithBccFusion,
2119 &feature_zczFp,1968 &feature_zczFp,
2120 &feature_lor,
2121 &feature_pan,
2122 &feature_exynosm4,1969 &feature_exynosm4,
2123 },1970 },
2124};1971};
...@@ -2127,17 +1974,17 @@ pub const cpu_falkor = Cpu{...@@ -2127,17 +1974,17 @@ pub const cpu_falkor = Cpu{
2127 .name = "falkor",1974 .name = "falkor",
2128 .llvm_name = "falkor",1975 .llvm_name = "falkor",
2129 .subfeatures = &[_]*const Feature {1976 .subfeatures = &[_]*const Feature {
2130 &feature_rdm,1977 &feature_predictableSelectExpensive,
2131 &feature_usePostraScheduler,1978 &feature_usePostraScheduler,
2132 &feature_zczGp,1979 &feature_perfmon,
2133 &feature_slowStrqroStore,1980 &feature_slowStrqroStore,
1981 &feature_rdm,
1982 &feature_zczGp,
1983 &feature_fpArmv8,
2134 &feature_customCheapAsMove,1984 &feature_customCheapAsMove,
1985 &feature_lslFast,
2135 &feature_zczFp,1986 &feature_zczFp,
2136 &feature_fpArmv8,
2137 &feature_perfmon,
2138 &feature_predictableSelectExpensive,
2139 &feature_crc,1987 &feature_crc,
2140 &feature_lslFast,
2141 &feature_falkor,1988 &feature_falkor,
2142 },1989 },
2143};1990};
...@@ -2160,15 +2007,15 @@ pub const cpu_kryo = Cpu{...@@ -2160,15 +2007,15 @@ pub const cpu_kryo = Cpu{
2160 .name = "kryo",2007 .name = "kryo",
2161 .llvm_name = "kryo",2008 .llvm_name = "kryo",
2162 .subfeatures = &[_]*const Feature {2009 .subfeatures = &[_]*const Feature {
2010 &feature_predictableSelectExpensive,
2163 &feature_usePostraScheduler,2011 &feature_usePostraScheduler,
2012 &feature_perfmon,
2164 &feature_zczGp,2013 &feature_zczGp,
2014 &feature_fpArmv8,
2165 &feature_customCheapAsMove,2015 &feature_customCheapAsMove,
2016 &feature_lslFast,
2166 &feature_zczFp,2017 &feature_zczFp,
2167 &feature_fpArmv8,
2168 &feature_perfmon,
2169 &feature_predictableSelectExpensive,
2170 &feature_crc,2018 &feature_crc,
2171 &feature_lslFast,
2172 &feature_kryo,2019 &feature_kryo,
2173 },2020 },
2174};2021};
...@@ -2177,19 +2024,19 @@ pub const cpu_neoverseE1 = Cpu{...@@ -2177,19 +2024,19 @@ pub const cpu_neoverseE1 = Cpu{
2177 .name = "neoverse-e1",2024 .name = "neoverse-e1",
2178 .llvm_name = "neoverse-e1",2025 .llvm_name = "neoverse-e1",
2179 .subfeatures = &[_]*const Feature {2026 .subfeatures = &[_]*const Feature {
2180 &feature_rdm,
2181 &feature_ccpp,2027 &feature_ccpp,
2182 &feature_lse,
2183 &feature_fpArmv8,
2184 &feature_ras,
2185 &feature_dotprod,
2186 &feature_lor,2028 &feature_lor,
2029 &feature_dotprod,
2187 &feature_pan,2030 &feature_pan,
2188 &feature_crc,2031 &feature_lse,
2189 &feature_rcpc,2032 &feature_rdm,
2190 &feature_uaops,2033 &feature_ras,
2191 &feature_vh,2034 &feature_vh,
2035 &feature_fpArmv8,
2036 &feature_uaops,
2037 &feature_rcpc,
2192 &feature_ssbs,2038 &feature_ssbs,
2039 &feature_crc,
2193 &feature_neoversee1,2040 &feature_neoversee1,
2194 },2041 },
2195};2042};
...@@ -2198,20 +2045,20 @@ pub const cpu_neoverseN1 = Cpu{...@@ -2198,20 +2045,20 @@ pub const cpu_neoverseN1 = Cpu{
2198 .name = "neoverse-n1",2045 .name = "neoverse-n1",
2199 .llvm_name = "neoverse-n1",2046 .llvm_name = "neoverse-n1",
2200 .subfeatures = &[_]*const Feature {2047 .subfeatures = &[_]*const Feature {
2201 &feature_rdm,
2202 &feature_ccpp,2048 &feature_ccpp,
2203 &feature_lse,
2204 &feature_fpArmv8,
2205 &feature_ras,
2206 &feature_dotprod,
2207 &feature_lor,2049 &feature_lor,
2050 &feature_dotprod,
2208 &feature_spe,2051 &feature_spe,
2209 &feature_pan,2052 &feature_pan,
2210 &feature_crc,2053 &feature_lse,
2211 &feature_rcpc,2054 &feature_rdm,
2212 &feature_uaops,2055 &feature_ras,
2213 &feature_vh,2056 &feature_vh,
2057 &feature_fpArmv8,
2058 &feature_uaops,
2059 &feature_rcpc,
2214 &feature_ssbs,2060 &feature_ssbs,
2061 &feature_crc,
2215 &feature_neoversen1,2062 &feature_neoversen1,
2216 },2063 },
2217};2064};
...@@ -2220,36 +2067,36 @@ pub const cpu_saphira = Cpu{...@@ -2220,36 +2067,36 @@ pub const cpu_saphira = Cpu{
2220 .name = "saphira",2067 .name = "saphira",
2221 .llvm_name = "saphira",2068 .llvm_name = "saphira",
2222 .subfeatures = &[_]*const Feature {2069 .subfeatures = &[_]*const Feature {
2223 &feature_am,
2224 &feature_nv,
2225 &feature_ccpp,2070 &feature_ccpp,
2226 &feature_predictableSelectExpensive,2071 &feature_lor,
2227 &feature_perfmon,
2228 &feature_dotprod,2072 &feature_dotprod,
2229 &feature_spe,2073 &feature_fpArmv8,
2074 &feature_customCheapAsMove,
2230 &feature_lslFast,2075 &feature_lslFast,
2076 &feature_crc,
2077 &feature_fmi,
2078 &feature_predictableSelectExpensive,
2079 &feature_tracev84,
2080 &feature_tlbRmi,
2081 &feature_perfmon,
2231 &feature_zczGp,2082 &feature_zczGp,
2232 &feature_customCheapAsMove,2083 &feature_rdm,
2084 &feature_ccidx,
2085 &feature_mpam,
2086 &feature_pan,
2233 &feature_lse,2087 &feature_lse,
2234 &feature_rcpc,2088 &feature_rcpc,
2235 &feature_uaops,2089 &feature_uaops,
2236 &feature_ccidx,2090 &feature_sel2,
2237 &feature_vh,2091 &feature_usePostraScheduler,
2238 &feature_tracev84,2092 &feature_nv,
2239 &feature_rdm,2093 &feature_am,
2240 &feature_fpArmv8,2094 &feature_spe,
2241 &feature_dit,2095 &feature_dit,
2242 &feature_mpam,2096 &feature_vh,
2243 &feature_ras,2097 &feature_ras,
2244 &feature_tlbRmi,
2245 &feature_fmi,
2246 &feature_crc,
2247 &feature_usePostraScheduler,
2248 &feature_pa,
2249 &feature_zczFp,2098 &feature_zczFp,
2250 &feature_sel2,2099 &feature_pa,
2251 &feature_lor,
2252 &feature_pan,
2253 &feature_saphira,2100 &feature_saphira,
2254 },2101 },
2255};2102};
...@@ -2258,10 +2105,10 @@ pub const cpu_thunderx = Cpu{...@@ -2258,10 +2105,10 @@ pub const cpu_thunderx = Cpu{
2258 .name = "thunderx",2105 .name = "thunderx",
2259 .llvm_name = "thunderx",2106 .llvm_name = "thunderx",
2260 .subfeatures = &[_]*const Feature {2107 .subfeatures = &[_]*const Feature {
2261 &feature_usePostraScheduler,
2262 &feature_predictableSelectExpensive,2108 &feature_predictableSelectExpensive,
2263 &feature_fpArmv8,2109 &feature_usePostraScheduler,
2264 &feature_perfmon,2110 &feature_perfmon,
2111 &feature_fpArmv8,
2265 &feature_crc,2112 &feature_crc,
2266 &feature_thunderx,2113 &feature_thunderx,
2267 },2114 },
...@@ -2271,17 +2118,17 @@ pub const cpu_thunderx2t99 = Cpu{...@@ -2271,17 +2118,17 @@ pub const cpu_thunderx2t99 = Cpu{
2271 .name = "thunderx2t99",2118 .name = "thunderx2t99",
2272 .llvm_name = "thunderx2t99",2119 .llvm_name = "thunderx2t99",
2273 .subfeatures = &[_]*const Feature {2120 .subfeatures = &[_]*const Feature {
2274 &feature_rdm,
2275 &feature_usePostraScheduler,
2276 &feature_arithBccFusion,
2277 &feature_lse,
2278 &feature_fpArmv8,
2279 &feature_predictableSelectExpensive,2121 &feature_predictableSelectExpensive,
2122 &feature_usePostraScheduler,
2280 &feature_lor,2123 &feature_lor,
2281 &feature_crc,2124 &feature_lse,
2282 &feature_pan,2125 &feature_pan,
2126 &feature_arithBccFusion,
2127 &feature_rdm,
2283 &feature_aggressiveFma,2128 &feature_aggressiveFma,
2284 &feature_vh,2129 &feature_vh,
2130 &feature_fpArmv8,
2131 &feature_crc,
2285 &feature_thunderx2t99,2132 &feature_thunderx2t99,
2286 },2133 },
2287};2134};
...@@ -2290,10 +2137,10 @@ pub const cpu_thunderxt81 = Cpu{...@@ -2290,10 +2137,10 @@ pub const cpu_thunderxt81 = Cpu{
2290 .name = "thunderxt81",2137 .name = "thunderxt81",
2291 .llvm_name = "thunderxt81",2138 .llvm_name = "thunderxt81",
2292 .subfeatures = &[_]*const Feature {2139 .subfeatures = &[_]*const Feature {
2293 &feature_usePostraScheduler,
2294 &feature_predictableSelectExpensive,2140 &feature_predictableSelectExpensive,
2295 &feature_fpArmv8,2141 &feature_usePostraScheduler,
2296 &feature_perfmon,2142 &feature_perfmon,
2143 &feature_fpArmv8,
2297 &feature_crc,2144 &feature_crc,
2298 &feature_thunderxt81,2145 &feature_thunderxt81,
2299 },2146 },
...@@ -2303,10 +2150,10 @@ pub const cpu_thunderxt83 = Cpu{...@@ -2303,10 +2150,10 @@ pub const cpu_thunderxt83 = Cpu{
2303 .name = "thunderxt83",2150 .name = "thunderxt83",
2304 .llvm_name = "thunderxt83",2151 .llvm_name = "thunderxt83",
2305 .subfeatures = &[_]*const Feature {2152 .subfeatures = &[_]*const Feature {
2306 &feature_usePostraScheduler,
2307 &feature_predictableSelectExpensive,2153 &feature_predictableSelectExpensive,
2308 &feature_fpArmv8,2154 &feature_usePostraScheduler,
2309 &feature_perfmon,2155 &feature_perfmon,
2156 &feature_fpArmv8,
2310 &feature_crc,2157 &feature_crc,
2311 &feature_thunderxt83,2158 &feature_thunderxt83,
2312 },2159 },
...@@ -2316,10 +2163,10 @@ pub const cpu_thunderxt88 = Cpu{...@@ -2316,10 +2163,10 @@ pub const cpu_thunderxt88 = Cpu{
2316 .name = "thunderxt88",2163 .name = "thunderxt88",
2317 .llvm_name = "thunderxt88",2164 .llvm_name = "thunderxt88",
2318 .subfeatures = &[_]*const Feature {2165 .subfeatures = &[_]*const Feature {
2319 &feature_usePostraScheduler,
2320 &feature_predictableSelectExpensive,2166 &feature_predictableSelectExpensive,
2321 &feature_fpArmv8,2167 &feature_usePostraScheduler,
2322 &feature_perfmon,2168 &feature_perfmon,
2169 &feature_fpArmv8,
2323 &feature_crc,2170 &feature_crc,
2324 &feature_thunderxt88,2171 &feature_thunderxt88,
2325 },2172 },
...@@ -2329,22 +2176,22 @@ pub const cpu_tsv110 = Cpu{...@@ -2329,22 +2176,22 @@ pub const cpu_tsv110 = Cpu{
2329 .name = "tsv110",2176 .name = "tsv110",
2330 .llvm_name = "tsv110",2177 .llvm_name = "tsv110",
2331 .subfeatures = &[_]*const Feature {2178 .subfeatures = &[_]*const Feature {
2332 &feature_rdm,
2333 &feature_usePostraScheduler,
2334 &feature_customCheapAsMove,
2335 &feature_fuseAes,2179 &feature_fuseAes,
2180 &feature_usePostraScheduler,
2336 &feature_ccpp,2181 &feature_ccpp,
2337 &feature_lse,
2338 &feature_fpArmv8,
2339 &feature_perfmon,
2340 &feature_ras,
2341 &feature_dotprod,
2342 &feature_lor,2182 &feature_lor,
2183 &feature_dotprod,
2184 &feature_uaops,
2185 &feature_perfmon,
2343 &feature_spe,2186 &feature_spe,
2344 &feature_crc,
2345 &feature_pan,2187 &feature_pan,
2346 &feature_uaops,2188 &feature_lse,
2189 &feature_rdm,
2347 &feature_vh,2190 &feature_vh,
2191 &feature_fpArmv8,
2192 &feature_customCheapAsMove,
2193 &feature_ras,
2194 &feature_crc,
2348 &feature_tsv110,2195 &feature_tsv110,
2349 },2196 },
2350};2197};
lib/std/target/amdgpu.zig+541-649
...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_BitInsts16 = Feature{4pub const feature_BitInsts16 = Feature{
5 .name = "16-bit-insts",5 .name = "16-bit-insts",
6 .description = "Has i16/f16 instructions",6 .description = "Has i16/f16 instructions",
7 .llvm_name = "16-bit-insts",
8 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
9 },8 },
10};9};
...@@ -12,7 +11,6 @@ pub const feature_BitInsts16 = Feature{...@@ -12,7 +11,6 @@ pub const feature_BitInsts16 = Feature{
12pub const feature_addNoCarryInsts = Feature{11pub const feature_addNoCarryInsts = Feature{
13 .name = "add-no-carry-insts",12 .name = "add-no-carry-insts",
14 .description = "Have VALU add/sub instructions without carry out",13 .description = "Have VALU add/sub instructions without carry out",
15 .llvm_name = "add-no-carry-insts",
16 .subfeatures = &[_]*const Feature {14 .subfeatures = &[_]*const Feature {
17 },15 },
18};16};
...@@ -20,7 +18,6 @@ pub const feature_addNoCarryInsts = Feature{...@@ -20,7 +18,6 @@ pub const feature_addNoCarryInsts = Feature{
20pub const feature_apertureRegs = Feature{18pub const feature_apertureRegs = Feature{
21 .name = "aperture-regs",19 .name = "aperture-regs",
22 .description = "Has Memory Aperture Base and Size Registers",20 .description = "Has Memory Aperture Base and Size Registers",
23 .llvm_name = "aperture-regs",
24 .subfeatures = &[_]*const Feature {21 .subfeatures = &[_]*const Feature {
25 },22 },
26};23};
...@@ -28,7 +25,6 @@ pub const feature_apertureRegs = Feature{...@@ -28,7 +25,6 @@ pub const feature_apertureRegs = Feature{
28pub const feature_atomicFaddInsts = Feature{25pub const feature_atomicFaddInsts = Feature{
29 .name = "atomic-fadd-insts",26 .name = "atomic-fadd-insts",
30 .description = "Has buffer_atomic_add_f32, buffer_atomic_pk_add_f16, global_atomic_add_f32, global_atomic_pk_add_f16 instructions",27 .description = "Has buffer_atomic_add_f32, buffer_atomic_pk_add_f16, global_atomic_add_f32, global_atomic_pk_add_f16 instructions",
31 .llvm_name = "atomic-fadd-insts",
32 .subfeatures = &[_]*const Feature {28 .subfeatures = &[_]*const Feature {
33 },29 },
34};30};
...@@ -36,7 +32,6 @@ pub const feature_atomicFaddInsts = Feature{...@@ -36,7 +32,6 @@ pub const feature_atomicFaddInsts = Feature{
36pub const feature_autoWaitcntBeforeBarrier = Feature{32pub const feature_autoWaitcntBeforeBarrier = Feature{
37 .name = "auto-waitcnt-before-barrier",33 .name = "auto-waitcnt-before-barrier",
38 .description = "Hardware automatically inserts waitcnt before barrier",34 .description = "Hardware automatically inserts waitcnt before barrier",
39 .llvm_name = "auto-waitcnt-before-barrier",
40 .subfeatures = &[_]*const Feature {35 .subfeatures = &[_]*const Feature {
41 },36 },
42};37};
...@@ -44,7 +39,6 @@ pub const feature_autoWaitcntBeforeBarrier = Feature{...@@ -44,7 +39,6 @@ pub const feature_autoWaitcntBeforeBarrier = Feature{
44pub const feature_ciInsts = Feature{39pub const feature_ciInsts = Feature{
45 .name = "ci-insts",40 .name = "ci-insts",
46 .description = "Additional instructions for CI+",41 .description = "Additional instructions for CI+",
47 .llvm_name = "ci-insts",
48 .subfeatures = &[_]*const Feature {42 .subfeatures = &[_]*const Feature {
49 },43 },
50};44};
...@@ -52,7 +46,6 @@ pub const feature_ciInsts = Feature{...@@ -52,7 +46,6 @@ pub const feature_ciInsts = Feature{
52pub const feature_codeObjectV3 = Feature{46pub const feature_codeObjectV3 = Feature{
53 .name = "code-object-v3",47 .name = "code-object-v3",
54 .description = "Generate code object version 3",48 .description = "Generate code object version 3",
55 .llvm_name = "code-object-v3",
56 .subfeatures = &[_]*const Feature {49 .subfeatures = &[_]*const Feature {
57 },50 },
58};51};
...@@ -60,7 +53,6 @@ pub const feature_codeObjectV3 = Feature{...@@ -60,7 +53,6 @@ pub const feature_codeObjectV3 = Feature{
60pub const feature_cumode = Feature{53pub const feature_cumode = Feature{
61 .name = "cumode",54 .name = "cumode",
62 .description = "Enable CU wavefront execution mode",55 .description = "Enable CU wavefront execution mode",
63 .llvm_name = "cumode",
64 .subfeatures = &[_]*const Feature {56 .subfeatures = &[_]*const Feature {
65 },57 },
66};58};
...@@ -68,7 +60,6 @@ pub const feature_cumode = Feature{...@@ -68,7 +60,6 @@ pub const feature_cumode = Feature{
68pub const feature_dlInsts = Feature{60pub const feature_dlInsts = Feature{
69 .name = "dl-insts",61 .name = "dl-insts",
70 .description = "Has v_fmac_f32 and v_xnor_b32 instructions",62 .description = "Has v_fmac_f32 and v_xnor_b32 instructions",
71 .llvm_name = "dl-insts",
72 .subfeatures = &[_]*const Feature {63 .subfeatures = &[_]*const Feature {
73 },64 },
74};65};
...@@ -76,7 +67,6 @@ pub const feature_dlInsts = Feature{...@@ -76,7 +67,6 @@ pub const feature_dlInsts = Feature{
76pub const feature_dpp = Feature{67pub const feature_dpp = Feature{
77 .name = "dpp",68 .name = "dpp",
78 .description = "Support DPP (Data Parallel Primitives) extension",69 .description = "Support DPP (Data Parallel Primitives) extension",
79 .llvm_name = "dpp",
80 .subfeatures = &[_]*const Feature {70 .subfeatures = &[_]*const Feature {
81 },71 },
82};72};
...@@ -84,7 +74,6 @@ pub const feature_dpp = Feature{...@@ -84,7 +74,6 @@ pub const feature_dpp = Feature{
84pub const feature_dpp8 = Feature{74pub const feature_dpp8 = Feature{
85 .name = "dpp8",75 .name = "dpp8",
86 .description = "Support DPP8 (Data Parallel Primitives) extension",76 .description = "Support DPP8 (Data Parallel Primitives) extension",
87 .llvm_name = "dpp8",
88 .subfeatures = &[_]*const Feature {77 .subfeatures = &[_]*const Feature {
89 },78 },
90};79};
...@@ -92,7 +81,6 @@ pub const feature_dpp8 = Feature{...@@ -92,7 +81,6 @@ pub const feature_dpp8 = Feature{
92pub const feature_noSramEccSupport = Feature{81pub const feature_noSramEccSupport = Feature{
93 .name = "no-sram-ecc-support",82 .name = "no-sram-ecc-support",
94 .description = "Hardware does not support SRAM ECC",83 .description = "Hardware does not support SRAM ECC",
95 .llvm_name = "no-sram-ecc-support",
96 .subfeatures = &[_]*const Feature {84 .subfeatures = &[_]*const Feature {
97 },85 },
98};86};
...@@ -100,7 +88,6 @@ pub const feature_noSramEccSupport = Feature{...@@ -100,7 +88,6 @@ pub const feature_noSramEccSupport = Feature{
100pub const feature_noXnackSupport = Feature{88pub const feature_noXnackSupport = Feature{
101 .name = "no-xnack-support",89 .name = "no-xnack-support",
102 .description = "Hardware does not support XNACK",90 .description = "Hardware does not support XNACK",
103 .llvm_name = "no-xnack-support",
104 .subfeatures = &[_]*const Feature {91 .subfeatures = &[_]*const Feature {
105 },92 },
106};93};
...@@ -108,7 +95,6 @@ pub const feature_noXnackSupport = Feature{...@@ -108,7 +95,6 @@ pub const feature_noXnackSupport = Feature{
108pub const feature_dot1Insts = Feature{95pub const feature_dot1Insts = Feature{
109 .name = "dot1-insts",96 .name = "dot1-insts",
110 .description = "Has v_dot4_i32_i8 and v_dot8_i32_i4 instructions",97 .description = "Has v_dot4_i32_i8 and v_dot8_i32_i4 instructions",
111 .llvm_name = "dot1-insts",
112 .subfeatures = &[_]*const Feature {98 .subfeatures = &[_]*const Feature {
113 },99 },
114};100};
...@@ -116,7 +102,6 @@ pub const feature_dot1Insts = Feature{...@@ -116,7 +102,6 @@ pub const feature_dot1Insts = Feature{
116pub const feature_dot2Insts = Feature{102pub const feature_dot2Insts = Feature{
117 .name = "dot2-insts",103 .name = "dot2-insts",
118 .description = "Has v_dot2_f32_f16, v_dot2_i32_i16, v_dot2_u32_u16, v_dot4_u32_u8, v_dot8_u32_u4 instructions",104 .description = "Has v_dot2_f32_f16, v_dot2_i32_i16, v_dot2_u32_u16, v_dot4_u32_u8, v_dot8_u32_u4 instructions",
119 .llvm_name = "dot2-insts",
120 .subfeatures = &[_]*const Feature {105 .subfeatures = &[_]*const Feature {
121 },106 },
122};107};
...@@ -124,7 +109,6 @@ pub const feature_dot2Insts = Feature{...@@ -124,7 +109,6 @@ pub const feature_dot2Insts = Feature{
124pub const feature_dot3Insts = Feature{109pub const feature_dot3Insts = Feature{
125 .name = "dot3-insts",110 .name = "dot3-insts",
126 .description = "Has v_dot8c_i32_i4 instruction",111 .description = "Has v_dot8c_i32_i4 instruction",
127 .llvm_name = "dot3-insts",
128 .subfeatures = &[_]*const Feature {112 .subfeatures = &[_]*const Feature {
129 },113 },
130};114};
...@@ -132,7 +116,6 @@ pub const feature_dot3Insts = Feature{...@@ -132,7 +116,6 @@ pub const feature_dot3Insts = Feature{
132pub const feature_dot4Insts = Feature{116pub const feature_dot4Insts = Feature{
133 .name = "dot4-insts",117 .name = "dot4-insts",
134 .description = "Has v_dot2c_i32_i16 instruction",118 .description = "Has v_dot2c_i32_i16 instruction",
135 .llvm_name = "dot4-insts",
136 .subfeatures = &[_]*const Feature {119 .subfeatures = &[_]*const Feature {
137 },120 },
138};121};
...@@ -140,7 +123,6 @@ pub const feature_dot4Insts = Feature{...@@ -140,7 +123,6 @@ pub const feature_dot4Insts = Feature{
140pub const feature_dot5Insts = Feature{123pub const feature_dot5Insts = Feature{
141 .name = "dot5-insts",124 .name = "dot5-insts",
142 .description = "Has v_dot2c_f32_f16 instruction",125 .description = "Has v_dot2c_f32_f16 instruction",
143 .llvm_name = "dot5-insts",
144 .subfeatures = &[_]*const Feature {126 .subfeatures = &[_]*const Feature {
145 },127 },
146};128};
...@@ -148,7 +130,6 @@ pub const feature_dot5Insts = Feature{...@@ -148,7 +130,6 @@ pub const feature_dot5Insts = Feature{
148pub const feature_dot6Insts = Feature{130pub const feature_dot6Insts = Feature{
149 .name = "dot6-insts",131 .name = "dot6-insts",
150 .description = "Has v_dot4c_i32_i8 instruction",132 .description = "Has v_dot4c_i32_i8 instruction",
151 .llvm_name = "dot6-insts",
152 .subfeatures = &[_]*const Feature {133 .subfeatures = &[_]*const Feature {
153 },134 },
154};135};
...@@ -156,7 +137,6 @@ pub const feature_dot6Insts = Feature{...@@ -156,7 +137,6 @@ pub const feature_dot6Insts = Feature{
156pub const feature_DumpCode = Feature{137pub const feature_DumpCode = Feature{
157 .name = "DumpCode",138 .name = "DumpCode",
158 .description = "Dump MachineInstrs in the CodeEmitter",139 .description = "Dump MachineInstrs in the CodeEmitter",
159 .llvm_name = "DumpCode",
160 .subfeatures = &[_]*const Feature {140 .subfeatures = &[_]*const Feature {
161 },141 },
162};142};
...@@ -164,7 +144,6 @@ pub const feature_DumpCode = Feature{...@@ -164,7 +144,6 @@ pub const feature_DumpCode = Feature{
164pub const feature_dumpcode = Feature{144pub const feature_dumpcode = Feature{
165 .name = "dumpcode",145 .name = "dumpcode",
166 .description = "Dump MachineInstrs in the CodeEmitter",146 .description = "Dump MachineInstrs in the CodeEmitter",
167 .llvm_name = "dumpcode",
168 .subfeatures = &[_]*const Feature {147 .subfeatures = &[_]*const Feature {
169 },148 },
170};149};
...@@ -172,7 +151,6 @@ pub const feature_dumpcode = Feature{...@@ -172,7 +151,6 @@ pub const feature_dumpcode = Feature{
172pub const feature_enableDs128 = Feature{151pub const feature_enableDs128 = Feature{
173 .name = "enable-ds128",152 .name = "enable-ds128",
174 .description = "Use ds_{read|write}_b128",153 .description = "Use ds_{read|write}_b128",
175 .llvm_name = "enable-ds128",
176 .subfeatures = &[_]*const Feature {154 .subfeatures = &[_]*const Feature {
177 },155 },
178};156};
...@@ -180,7 +158,6 @@ pub const feature_enableDs128 = Feature{...@@ -180,7 +158,6 @@ pub const feature_enableDs128 = Feature{
180pub const feature_loadStoreOpt = Feature{158pub const feature_loadStoreOpt = Feature{
181 .name = "load-store-opt",159 .name = "load-store-opt",
182 .description = "Enable SI load/store optimizer pass",160 .description = "Enable SI load/store optimizer pass",
183 .llvm_name = "load-store-opt",
184 .subfeatures = &[_]*const Feature {161 .subfeatures = &[_]*const Feature {
185 },162 },
186};163};
...@@ -188,7 +165,6 @@ pub const feature_loadStoreOpt = Feature{...@@ -188,7 +165,6 @@ pub const feature_loadStoreOpt = Feature{
188pub const feature_enablePrtStrictNull = Feature{165pub const feature_enablePrtStrictNull = Feature{
189 .name = "enable-prt-strict-null",166 .name = "enable-prt-strict-null",
190 .description = "Enable zeroing of result registers for sparse texture fetches",167 .description = "Enable zeroing of result registers for sparse texture fetches",
191 .llvm_name = "enable-prt-strict-null",
192 .subfeatures = &[_]*const Feature {168 .subfeatures = &[_]*const Feature {
193 },169 },
194};170};
...@@ -196,7 +172,6 @@ pub const feature_enablePrtStrictNull = Feature{...@@ -196,7 +172,6 @@ pub const feature_enablePrtStrictNull = Feature{
196pub const feature_siScheduler = Feature{172pub const feature_siScheduler = Feature{
197 .name = "si-scheduler",173 .name = "si-scheduler",
198 .description = "Enable SI Machine Scheduler",174 .description = "Enable SI Machine Scheduler",
199 .llvm_name = "si-scheduler",
200 .subfeatures = &[_]*const Feature {175 .subfeatures = &[_]*const Feature {
201 },176 },
202};177};
...@@ -204,7 +179,6 @@ pub const feature_siScheduler = Feature{...@@ -204,7 +179,6 @@ pub const feature_siScheduler = Feature{
204pub const feature_unsafeDsOffsetFolding = Feature{179pub const feature_unsafeDsOffsetFolding = Feature{
205 .name = "unsafe-ds-offset-folding",180 .name = "unsafe-ds-offset-folding",
206 .description = "Force using DS instruction immediate offsets on SI",181 .description = "Force using DS instruction immediate offsets on SI",
207 .llvm_name = "unsafe-ds-offset-folding",
208 .subfeatures = &[_]*const Feature {182 .subfeatures = &[_]*const Feature {
209 },183 },
210};184};
...@@ -212,7 +186,6 @@ pub const feature_unsafeDsOffsetFolding = Feature{...@@ -212,7 +186,6 @@ pub const feature_unsafeDsOffsetFolding = Feature{
212pub const feature_fmaf = Feature{186pub const feature_fmaf = Feature{
213 .name = "fmaf",187 .name = "fmaf",
214 .description = "Enable single precision FMA (not as fast as mul+add, but fused)",188 .description = "Enable single precision FMA (not as fast as mul+add, but fused)",
215 .llvm_name = "fmaf",
216 .subfeatures = &[_]*const Feature {189 .subfeatures = &[_]*const Feature {
217 },190 },
218};191};
...@@ -220,7 +193,6 @@ pub const feature_fmaf = Feature{...@@ -220,7 +193,6 @@ pub const feature_fmaf = Feature{
220pub const feature_fp16Denormals = Feature{193pub const feature_fp16Denormals = Feature{
221 .name = "fp16-denormals",194 .name = "fp16-denormals",
222 .description = "Enable half precision denormal handling",195 .description = "Enable half precision denormal handling",
223 .llvm_name = "fp16-denormals",
224 .subfeatures = &[_]*const Feature {196 .subfeatures = &[_]*const Feature {
225 &feature_fp64,197 &feature_fp64,
226 },198 },
...@@ -229,7 +201,6 @@ pub const feature_fp16Denormals = Feature{...@@ -229,7 +201,6 @@ pub const feature_fp16Denormals = Feature{
229pub const feature_fp32Denormals = Feature{201pub const feature_fp32Denormals = Feature{
230 .name = "fp32-denormals",202 .name = "fp32-denormals",
231 .description = "Enable single precision denormal handling",203 .description = "Enable single precision denormal handling",
232 .llvm_name = "fp32-denormals",
233 .subfeatures = &[_]*const Feature {204 .subfeatures = &[_]*const Feature {
234 },205 },
235};206};
...@@ -237,7 +208,6 @@ pub const feature_fp32Denormals = Feature{...@@ -237,7 +208,6 @@ pub const feature_fp32Denormals = Feature{
237pub const feature_fp64 = Feature{208pub const feature_fp64 = Feature{
238 .name = "fp64",209 .name = "fp64",
239 .description = "Enable double precision operations",210 .description = "Enable double precision operations",
240 .llvm_name = "fp64",
241 .subfeatures = &[_]*const Feature {211 .subfeatures = &[_]*const Feature {
242 },212 },
243};213};
...@@ -245,7 +215,6 @@ pub const feature_fp64 = Feature{...@@ -245,7 +215,6 @@ pub const feature_fp64 = Feature{
245pub const feature_fp64Denormals = Feature{215pub const feature_fp64Denormals = Feature{
246 .name = "fp64-denormals",216 .name = "fp64-denormals",
247 .description = "Enable double and half precision denormal handling",217 .description = "Enable double and half precision denormal handling",
248 .llvm_name = "fp64-denormals",
249 .subfeatures = &[_]*const Feature {218 .subfeatures = &[_]*const Feature {
250 &feature_fp64,219 &feature_fp64,
251 },220 },
...@@ -254,7 +223,6 @@ pub const feature_fp64Denormals = Feature{...@@ -254,7 +223,6 @@ pub const feature_fp64Denormals = Feature{
254pub const feature_fp64Fp16Denormals = Feature{223pub const feature_fp64Fp16Denormals = Feature{
255 .name = "fp64-fp16-denormals",224 .name = "fp64-fp16-denormals",
256 .description = "Enable double and half precision denormal handling",225 .description = "Enable double and half precision denormal handling",
257 .llvm_name = "fp64-fp16-denormals",
258 .subfeatures = &[_]*const Feature {226 .subfeatures = &[_]*const Feature {
259 &feature_fp64,227 &feature_fp64,
260 },228 },
...@@ -263,7 +231,6 @@ pub const feature_fp64Fp16Denormals = Feature{...@@ -263,7 +231,6 @@ pub const feature_fp64Fp16Denormals = Feature{
263pub const feature_fpExceptions = Feature{231pub const feature_fpExceptions = Feature{
264 .name = "fp-exceptions",232 .name = "fp-exceptions",
265 .description = "Enable floating point exceptions",233 .description = "Enable floating point exceptions",
266 .llvm_name = "fp-exceptions",
267 .subfeatures = &[_]*const Feature {234 .subfeatures = &[_]*const Feature {
268 },235 },
269};236};
...@@ -271,7 +238,6 @@ pub const feature_fpExceptions = Feature{...@@ -271,7 +238,6 @@ pub const feature_fpExceptions = Feature{
271pub const feature_fastFmaf = Feature{238pub const feature_fastFmaf = Feature{
272 .name = "fast-fmaf",239 .name = "fast-fmaf",
273 .description = "Assuming f32 fma is at least as fast as mul + add",240 .description = "Assuming f32 fma is at least as fast as mul + add",
274 .llvm_name = "fast-fmaf",
275 .subfeatures = &[_]*const Feature {241 .subfeatures = &[_]*const Feature {
276 },242 },
277};243};
...@@ -279,7 +245,6 @@ pub const feature_fastFmaf = Feature{...@@ -279,7 +245,6 @@ pub const feature_fastFmaf = Feature{
279pub const feature_flatAddressSpace = Feature{245pub const feature_flatAddressSpace = Feature{
280 .name = "flat-address-space",246 .name = "flat-address-space",
281 .description = "Support flat address space",247 .description = "Support flat address space",
282 .llvm_name = "flat-address-space",
283 .subfeatures = &[_]*const Feature {248 .subfeatures = &[_]*const Feature {
284 },249 },
285};250};
...@@ -287,7 +252,6 @@ pub const feature_flatAddressSpace = Feature{...@@ -287,7 +252,6 @@ pub const feature_flatAddressSpace = Feature{
287pub const feature_flatForGlobal = Feature{252pub const feature_flatForGlobal = Feature{
288 .name = "flat-for-global",253 .name = "flat-for-global",
289 .description = "Force to generate flat instruction for global",254 .description = "Force to generate flat instruction for global",
290 .llvm_name = "flat-for-global",
291 .subfeatures = &[_]*const Feature {255 .subfeatures = &[_]*const Feature {
292 },256 },
293};257};
...@@ -295,7 +259,6 @@ pub const feature_flatForGlobal = Feature{...@@ -295,7 +259,6 @@ pub const feature_flatForGlobal = Feature{
295pub const feature_flatGlobalInsts = Feature{259pub const feature_flatGlobalInsts = Feature{
296 .name = "flat-global-insts",260 .name = "flat-global-insts",
297 .description = "Have global_* flat memory instructions",261 .description = "Have global_* flat memory instructions",
298 .llvm_name = "flat-global-insts",
299 .subfeatures = &[_]*const Feature {262 .subfeatures = &[_]*const Feature {
300 },263 },
301};264};
...@@ -303,7 +266,6 @@ pub const feature_flatGlobalInsts = Feature{...@@ -303,7 +266,6 @@ pub const feature_flatGlobalInsts = Feature{
303pub const feature_flatInstOffsets = Feature{266pub const feature_flatInstOffsets = Feature{
304 .name = "flat-inst-offsets",267 .name = "flat-inst-offsets",
305 .description = "Flat instructions have immediate offset addressing mode",268 .description = "Flat instructions have immediate offset addressing mode",
306 .llvm_name = "flat-inst-offsets",
307 .subfeatures = &[_]*const Feature {269 .subfeatures = &[_]*const Feature {
308 },270 },
309};271};
...@@ -311,7 +273,6 @@ pub const feature_flatInstOffsets = Feature{...@@ -311,7 +273,6 @@ pub const feature_flatInstOffsets = Feature{
311pub const feature_flatScratchInsts = Feature{273pub const feature_flatScratchInsts = Feature{
312 .name = "flat-scratch-insts",274 .name = "flat-scratch-insts",
313 .description = "Have scratch_* flat memory instructions",275 .description = "Have scratch_* flat memory instructions",
314 .llvm_name = "flat-scratch-insts",
315 .subfeatures = &[_]*const Feature {276 .subfeatures = &[_]*const Feature {
316 },277 },
317};278};
...@@ -319,7 +280,6 @@ pub const feature_flatScratchInsts = Feature{...@@ -319,7 +280,6 @@ pub const feature_flatScratchInsts = Feature{
319pub const feature_flatSegmentOffsetBug = Feature{280pub const feature_flatSegmentOffsetBug = Feature{
320 .name = "flat-segment-offset-bug",281 .name = "flat-segment-offset-bug",
321 .description = "GFX10 bug, inst_offset ignored in flat segment",282 .description = "GFX10 bug, inst_offset ignored in flat segment",
322 .llvm_name = "flat-segment-offset-bug",
323 .subfeatures = &[_]*const Feature {283 .subfeatures = &[_]*const Feature {
324 },284 },
325};285};
...@@ -327,7 +287,6 @@ pub const feature_flatSegmentOffsetBug = Feature{...@@ -327,7 +287,6 @@ pub const feature_flatSegmentOffsetBug = Feature{
327pub const feature_fmaMixInsts = Feature{287pub const feature_fmaMixInsts = Feature{
328 .name = "fma-mix-insts",288 .name = "fma-mix-insts",
329 .description = "Has v_fma_mix_f32, v_fma_mixlo_f16, v_fma_mixhi_f16 instructions",289 .description = "Has v_fma_mix_f32, v_fma_mixlo_f16, v_fma_mixhi_f16 instructions",
330 .llvm_name = "fma-mix-insts",
331 .subfeatures = &[_]*const Feature {290 .subfeatures = &[_]*const Feature {
332 },291 },
333};292};
...@@ -335,7 +294,6 @@ pub const feature_fmaMixInsts = Feature{...@@ -335,7 +294,6 @@ pub const feature_fmaMixInsts = Feature{
335pub const feature_gcn3Encoding = Feature{294pub const feature_gcn3Encoding = Feature{
336 .name = "gcn3-encoding",295 .name = "gcn3-encoding",
337 .description = "Encoding format for VI",296 .description = "Encoding format for VI",
338 .llvm_name = "gcn3-encoding",
339 .subfeatures = &[_]*const Feature {297 .subfeatures = &[_]*const Feature {
340 },298 },
341};299};
...@@ -343,7 +301,6 @@ pub const feature_gcn3Encoding = Feature{...@@ -343,7 +301,6 @@ pub const feature_gcn3Encoding = Feature{
343pub const feature_gfx7Gfx8Gfx9Insts = Feature{301pub const feature_gfx7Gfx8Gfx9Insts = Feature{
344 .name = "gfx7-gfx8-gfx9-insts",302 .name = "gfx7-gfx8-gfx9-insts",
345 .description = "Instructions shared in GFX7, GFX8, GFX9",303 .description = "Instructions shared in GFX7, GFX8, GFX9",
346 .llvm_name = "gfx7-gfx8-gfx9-insts",
347 .subfeatures = &[_]*const Feature {304 .subfeatures = &[_]*const Feature {
348 },305 },
349};306};
...@@ -351,7 +308,6 @@ pub const feature_gfx7Gfx8Gfx9Insts = Feature{...@@ -351,7 +308,6 @@ pub const feature_gfx7Gfx8Gfx9Insts = Feature{
351pub const feature_gfx8Insts = Feature{308pub const feature_gfx8Insts = Feature{
352 .name = "gfx8-insts",309 .name = "gfx8-insts",
353 .description = "Additional instructions for GFX8+",310 .description = "Additional instructions for GFX8+",
354 .llvm_name = "gfx8-insts",
355 .subfeatures = &[_]*const Feature {311 .subfeatures = &[_]*const Feature {
356 },312 },
357};313};
...@@ -359,45 +315,43 @@ pub const feature_gfx8Insts = Feature{...@@ -359,45 +315,43 @@ pub const feature_gfx8Insts = Feature{
359pub const feature_gfx9 = Feature{315pub const feature_gfx9 = Feature{
360 .name = "gfx9",316 .name = "gfx9",
361 .description = "GFX9 GPU generation",317 .description = "GFX9 GPU generation",
362 .llvm_name = "gfx9",
363 .subfeatures = &[_]*const Feature {318 .subfeatures = &[_]*const Feature {
364 &feature_gfx9Insts,319 &feature_fp64,
320 &feature_vop3p,
321 &feature_sMemrealtime,
322 &feature_gfx8Insts,
323 &feature_dpp,
324 &feature_sdwaSdst,
365 &feature_ciInsts,325 &feature_ciInsts,
366 &feature_sdwa,326 &feature_apertureRegs,
367 &feature_localmemorysize65536,
368 &feature_scalarStores,327 &feature_scalarStores,
369 &feature_sdwaScalar,328 &feature_intClampInsts,
370 &feature_sdwaSdst,
371 &feature_gcn3Encoding,329 &feature_gcn3Encoding,
372 &feature_apertureRegs,
373 &feature_flatScratchInsts,330 &feature_flatScratchInsts,
374 &feature_r128A16,331 &feature_gfx7Gfx8Gfx9Insts,
375 &feature_flatAddressSpace,
376 &feature_dpp,
377 &feature_addNoCarryInsts,
378 &feature_inv2piInlineImm,
379 &feature_fp64,
380 &feature_BitInsts16,
381 &feature_vgprIndexMode,
382 &feature_wavefrontsize64,332 &feature_wavefrontsize64,
383 &feature_gfx8Insts,
384 &feature_flatGlobalInsts,
385 &feature_scalarFlatScratchInsts,
386 &feature_scalarAtomics,333 &feature_scalarAtomics,
387 &feature_flatInstOffsets,334 &feature_sdwaScalar,
388 &feature_gfx7Gfx8Gfx9Insts,
389 &feature_vop3p,
390 &feature_sMemrealtime,
391 &feature_intClampInsts,
392 &feature_fastFmaf,335 &feature_fastFmaf,
336 &feature_vgprIndexMode,
337 &feature_scalarFlatScratchInsts,
338 &feature_sdwa,
393 &feature_sdwaOmod,339 &feature_sdwaOmod,
340 &feature_localmemorysize65536,
341 &feature_flatAddressSpace,
342 &feature_addNoCarryInsts,
343 &feature_flatInstOffsets,
344 &feature_inv2piInlineImm,
345 &feature_gfx9Insts,
346 &feature_flatGlobalInsts,
347 &feature_BitInsts16,
348 &feature_r128A16,
394 },349 },
395};350};
396351
397pub const feature_gfx9Insts = Feature{352pub const feature_gfx9Insts = Feature{
398 .name = "gfx9-insts",353 .name = "gfx9-insts",
399 .description = "Additional instructions for GFX9+",354 .description = "Additional instructions for GFX9+",
400 .llvm_name = "gfx9-insts",
401 .subfeatures = &[_]*const Feature {355 .subfeatures = &[_]*const Feature {
402 },356 },
403};357};
...@@ -405,49 +359,47 @@ pub const feature_gfx9Insts = Feature{...@@ -405,49 +359,47 @@ pub const feature_gfx9Insts = Feature{
405pub const feature_gfx10 = Feature{359pub const feature_gfx10 = Feature{
406 .name = "gfx10",360 .name = "gfx10",
407 .description = "GFX10 GPU generation",361 .description = "GFX10 GPU generation",
408 .llvm_name = "gfx10",
409 .subfeatures = &[_]*const Feature {362 .subfeatures = &[_]*const Feature {
410 &feature_movrel,363 &feature_registerBanking,
411 &feature_gfx9Insts,364 &feature_fp64,
412 &feature_ciInsts,365 &feature_vop3p,
413 &feature_noSramEccSupport,366 &feature_sMemrealtime,
414 &feature_noSdstCmpx,367 &feature_gfx8Insts,
415 &feature_fmaMixInsts,368 &feature_dpp,
416 &feature_sdwa,
417 &feature_localmemorysize65536,
418 &feature_sdwaScalar,
419 &feature_sdwaSdst,369 &feature_sdwaSdst,
370 &feature_ciInsts,
420 &feature_apertureRegs,371 &feature_apertureRegs,
372 &feature_intClampInsts,
421 &feature_flatScratchInsts,373 &feature_flatScratchInsts,
374 &feature_sdwaScalar,
375 &feature_fastFmaf,
376 &feature_pkFmacF16Inst,
422 &feature_vscnt,377 &feature_vscnt,
423 &feature_noDataDepHazard,378 &feature_movrel,
379 &feature_fmaMixInsts,
380 &feature_noSramEccSupport,
381 &feature_sdwa,
382 &feature_sdwaOmod,
383 &feature_vop3Literal,
384 &feature_dpp8,
385 &feature_gfx10Insts,
386 &feature_localmemorysize65536,
387 &feature_mimgR128,
424 &feature_flatAddressSpace,388 &feature_flatAddressSpace,
425 &feature_dpp,
426 &feature_addNoCarryInsts,389 &feature_addNoCarryInsts,
390 &feature_noDataDepHazard,
391 &feature_flatInstOffsets,
427 &feature_inv2piInlineImm,392 &feature_inv2piInlineImm,
428 &feature_fp64,393 &feature_gfx9Insts,
429 &feature_dpp8,
430 &feature_BitInsts16,
431 &feature_registerBanking,
432 &feature_gfx8Insts,
433 &feature_flatGlobalInsts,394 &feature_flatGlobalInsts,
434 &feature_flatInstOffsets,395 &feature_BitInsts16,
435 &feature_pkFmacF16Inst,396 &feature_noSdstCmpx,
436 &feature_vop3p,
437 &feature_mimgR128,
438 &feature_intClampInsts,
439 &feature_sMemrealtime,
440 &feature_fastFmaf,
441 &feature_vop3Literal,
442 &feature_sdwaOmod,
443 &feature_gfx10Insts,
444 },397 },
445};398};
446399
447pub const feature_gfx10Insts = Feature{400pub const feature_gfx10Insts = Feature{
448 .name = "gfx10-insts",401 .name = "gfx10-insts",
449 .description = "Additional instructions for GFX10+",402 .description = "Additional instructions for GFX10+",
450 .llvm_name = "gfx10-insts",
451 .subfeatures = &[_]*const Feature {403 .subfeatures = &[_]*const Feature {
452 },404 },
453};405};
...@@ -455,7 +407,6 @@ pub const feature_gfx10Insts = Feature{...@@ -455,7 +407,6 @@ pub const feature_gfx10Insts = Feature{
455pub const feature_instFwdPrefetchBug = Feature{407pub const feature_instFwdPrefetchBug = Feature{
456 .name = "inst-fwd-prefetch-bug",408 .name = "inst-fwd-prefetch-bug",
457 .description = "S_INST_PREFETCH instruction causes shader to hang",409 .description = "S_INST_PREFETCH instruction causes shader to hang",
458 .llvm_name = "inst-fwd-prefetch-bug",
459 .subfeatures = &[_]*const Feature {410 .subfeatures = &[_]*const Feature {
460 },411 },
461};412};
...@@ -463,7 +414,6 @@ pub const feature_instFwdPrefetchBug = Feature{...@@ -463,7 +414,6 @@ pub const feature_instFwdPrefetchBug = Feature{
463pub const feature_intClampInsts = Feature{414pub const feature_intClampInsts = Feature{
464 .name = "int-clamp-insts",415 .name = "int-clamp-insts",
465 .description = "Support clamp for integer destination",416 .description = "Support clamp for integer destination",
466 .llvm_name = "int-clamp-insts",
467 .subfeatures = &[_]*const Feature {417 .subfeatures = &[_]*const Feature {
468 },418 },
469};419};
...@@ -471,7 +421,6 @@ pub const feature_intClampInsts = Feature{...@@ -471,7 +421,6 @@ pub const feature_intClampInsts = Feature{
471pub const feature_inv2piInlineImm = Feature{421pub const feature_inv2piInlineImm = Feature{
472 .name = "inv-2pi-inline-imm",422 .name = "inv-2pi-inline-imm",
473 .description = "Has 1 / (2 * pi) as inline immediate",423 .description = "Has 1 / (2 * pi) as inline immediate",
474 .llvm_name = "inv-2pi-inline-imm",
475 .subfeatures = &[_]*const Feature {424 .subfeatures = &[_]*const Feature {
476 },425 },
477};426};
...@@ -479,7 +428,6 @@ pub const feature_inv2piInlineImm = Feature{...@@ -479,7 +428,6 @@ pub const feature_inv2piInlineImm = Feature{
479pub const feature_ldsbankcount16 = Feature{428pub const feature_ldsbankcount16 = Feature{
480 .name = "ldsbankcount16",429 .name = "ldsbankcount16",
481 .description = "The number of LDS banks per compute unit.",430 .description = "The number of LDS banks per compute unit.",
482 .llvm_name = "ldsbankcount16",
483 .subfeatures = &[_]*const Feature {431 .subfeatures = &[_]*const Feature {
484 },432 },
485};433};
...@@ -487,7 +435,6 @@ pub const feature_ldsbankcount16 = Feature{...@@ -487,7 +435,6 @@ pub const feature_ldsbankcount16 = Feature{
487pub const feature_ldsbankcount32 = Feature{435pub const feature_ldsbankcount32 = Feature{
488 .name = "ldsbankcount32",436 .name = "ldsbankcount32",
489 .description = "The number of LDS banks per compute unit.",437 .description = "The number of LDS banks per compute unit.",
490 .llvm_name = "ldsbankcount32",
491 .subfeatures = &[_]*const Feature {438 .subfeatures = &[_]*const Feature {
492 },439 },
493};440};
...@@ -495,7 +442,6 @@ pub const feature_ldsbankcount32 = Feature{...@@ -495,7 +442,6 @@ pub const feature_ldsbankcount32 = Feature{
495pub const feature_ldsBranchVmemWarHazard = Feature{442pub const feature_ldsBranchVmemWarHazard = Feature{
496 .name = "lds-branch-vmem-war-hazard",443 .name = "lds-branch-vmem-war-hazard",
497 .description = "Switching between LDS and VMEM-tex not waiting VM_VSRC=0",444 .description = "Switching between LDS and VMEM-tex not waiting VM_VSRC=0",
498 .llvm_name = "lds-branch-vmem-war-hazard",
499 .subfeatures = &[_]*const Feature {445 .subfeatures = &[_]*const Feature {
500 },446 },
501};447};
...@@ -503,7 +449,6 @@ pub const feature_ldsBranchVmemWarHazard = Feature{...@@ -503,7 +449,6 @@ pub const feature_ldsBranchVmemWarHazard = Feature{
503pub const feature_ldsMisalignedBug = Feature{449pub const feature_ldsMisalignedBug = Feature{
504 .name = "lds-misaligned-bug",450 .name = "lds-misaligned-bug",
505 .description = "Some GFX10 bug with misaligned multi-dword LDS access in WGP mode",451 .description = "Some GFX10 bug with misaligned multi-dword LDS access in WGP mode",
506 .llvm_name = "lds-misaligned-bug",
507 .subfeatures = &[_]*const Feature {452 .subfeatures = &[_]*const Feature {
508 },453 },
509};454};
...@@ -511,7 +456,6 @@ pub const feature_ldsMisalignedBug = Feature{...@@ -511,7 +456,6 @@ pub const feature_ldsMisalignedBug = Feature{
511pub const feature_localmemorysize0 = Feature{456pub const feature_localmemorysize0 = Feature{
512 .name = "localmemorysize0",457 .name = "localmemorysize0",
513 .description = "The size of local memory in bytes",458 .description = "The size of local memory in bytes",
514 .llvm_name = "localmemorysize0",
515 .subfeatures = &[_]*const Feature {459 .subfeatures = &[_]*const Feature {
516 },460 },
517};461};
...@@ -519,7 +463,6 @@ pub const feature_localmemorysize0 = Feature{...@@ -519,7 +463,6 @@ pub const feature_localmemorysize0 = Feature{
519pub const feature_localmemorysize32768 = Feature{463pub const feature_localmemorysize32768 = Feature{
520 .name = "localmemorysize32768",464 .name = "localmemorysize32768",
521 .description = "The size of local memory in bytes",465 .description = "The size of local memory in bytes",
522 .llvm_name = "localmemorysize32768",
523 .subfeatures = &[_]*const Feature {466 .subfeatures = &[_]*const Feature {
524 },467 },
525};468};
...@@ -527,7 +470,6 @@ pub const feature_localmemorysize32768 = Feature{...@@ -527,7 +470,6 @@ pub const feature_localmemorysize32768 = Feature{
527pub const feature_localmemorysize65536 = Feature{470pub const feature_localmemorysize65536 = Feature{
528 .name = "localmemorysize65536",471 .name = "localmemorysize65536",
529 .description = "The size of local memory in bytes",472 .description = "The size of local memory in bytes",
530 .llvm_name = "localmemorysize65536",
531 .subfeatures = &[_]*const Feature {473 .subfeatures = &[_]*const Feature {
532 },474 },
533};475};
...@@ -535,7 +477,6 @@ pub const feature_localmemorysize65536 = Feature{...@@ -535,7 +477,6 @@ pub const feature_localmemorysize65536 = Feature{
535pub const feature_maiInsts = Feature{477pub const feature_maiInsts = Feature{
536 .name = "mai-insts",478 .name = "mai-insts",
537 .description = "Has mAI instructions",479 .description = "Has mAI instructions",
538 .llvm_name = "mai-insts",
539 .subfeatures = &[_]*const Feature {480 .subfeatures = &[_]*const Feature {
540 },481 },
541};482};
...@@ -543,7 +484,6 @@ pub const feature_maiInsts = Feature{...@@ -543,7 +484,6 @@ pub const feature_maiInsts = Feature{
543pub const feature_mfmaInlineLiteralBug = Feature{484pub const feature_mfmaInlineLiteralBug = Feature{
544 .name = "mfma-inline-literal-bug",485 .name = "mfma-inline-literal-bug",
545 .description = "MFMA cannot use inline literal as SrcC",486 .description = "MFMA cannot use inline literal as SrcC",
546 .llvm_name = "mfma-inline-literal-bug",
547 .subfeatures = &[_]*const Feature {487 .subfeatures = &[_]*const Feature {
548 },488 },
549};489};
...@@ -551,7 +491,6 @@ pub const feature_mfmaInlineLiteralBug = Feature{...@@ -551,7 +491,6 @@ pub const feature_mfmaInlineLiteralBug = Feature{
551pub const feature_mimgR128 = Feature{491pub const feature_mimgR128 = Feature{
552 .name = "mimg-r128",492 .name = "mimg-r128",
553 .description = "Support 128-bit texture resources",493 .description = "Support 128-bit texture resources",
554 .llvm_name = "mimg-r128",
555 .subfeatures = &[_]*const Feature {494 .subfeatures = &[_]*const Feature {
556 },495 },
557};496};
...@@ -559,7 +498,6 @@ pub const feature_mimgR128 = Feature{...@@ -559,7 +498,6 @@ pub const feature_mimgR128 = Feature{
559pub const feature_madMixInsts = Feature{498pub const feature_madMixInsts = Feature{
560 .name = "mad-mix-insts",499 .name = "mad-mix-insts",
561 .description = "Has v_mad_mix_f32, v_mad_mixlo_f16, v_mad_mixhi_f16 instructions",500 .description = "Has v_mad_mix_f32, v_mad_mixlo_f16, v_mad_mixhi_f16 instructions",
562 .llvm_name = "mad-mix-insts",
563 .subfeatures = &[_]*const Feature {501 .subfeatures = &[_]*const Feature {
564 },502 },
565};503};
...@@ -567,7 +505,6 @@ pub const feature_madMixInsts = Feature{...@@ -567,7 +505,6 @@ pub const feature_madMixInsts = Feature{
567pub const feature_maxPrivateElementSize4 = Feature{505pub const feature_maxPrivateElementSize4 = Feature{
568 .name = "max-private-element-size-4",506 .name = "max-private-element-size-4",
569 .description = "Maximum private access size may be 4",507 .description = "Maximum private access size may be 4",
570 .llvm_name = "max-private-element-size-4",
571 .subfeatures = &[_]*const Feature {508 .subfeatures = &[_]*const Feature {
572 },509 },
573};510};
...@@ -575,7 +512,6 @@ pub const feature_maxPrivateElementSize4 = Feature{...@@ -575,7 +512,6 @@ pub const feature_maxPrivateElementSize4 = Feature{
575pub const feature_maxPrivateElementSize8 = Feature{512pub const feature_maxPrivateElementSize8 = Feature{
576 .name = "max-private-element-size-8",513 .name = "max-private-element-size-8",
577 .description = "Maximum private access size may be 8",514 .description = "Maximum private access size may be 8",
578 .llvm_name = "max-private-element-size-8",
579 .subfeatures = &[_]*const Feature {515 .subfeatures = &[_]*const Feature {
580 },516 },
581};517};
...@@ -583,7 +519,6 @@ pub const feature_maxPrivateElementSize8 = Feature{...@@ -583,7 +519,6 @@ pub const feature_maxPrivateElementSize8 = Feature{
583pub const feature_maxPrivateElementSize16 = Feature{519pub const feature_maxPrivateElementSize16 = Feature{
584 .name = "max-private-element-size-16",520 .name = "max-private-element-size-16",
585 .description = "Maximum private access size may be 16",521 .description = "Maximum private access size may be 16",
586 .llvm_name = "max-private-element-size-16",
587 .subfeatures = &[_]*const Feature {522 .subfeatures = &[_]*const Feature {
588 },523 },
589};524};
...@@ -591,7 +526,6 @@ pub const feature_maxPrivateElementSize16 = Feature{...@@ -591,7 +526,6 @@ pub const feature_maxPrivateElementSize16 = Feature{
591pub const feature_movrel = Feature{526pub const feature_movrel = Feature{
592 .name = "movrel",527 .name = "movrel",
593 .description = "Has v_movrel*_b32 instructions",528 .description = "Has v_movrel*_b32 instructions",
594 .llvm_name = "movrel",
595 .subfeatures = &[_]*const Feature {529 .subfeatures = &[_]*const Feature {
596 },530 },
597};531};
...@@ -599,7 +533,6 @@ pub const feature_movrel = Feature{...@@ -599,7 +533,6 @@ pub const feature_movrel = Feature{
599pub const feature_nsaEncoding = Feature{533pub const feature_nsaEncoding = Feature{
600 .name = "nsa-encoding",534 .name = "nsa-encoding",
601 .description = "Support NSA encoding for image instructions",535 .description = "Support NSA encoding for image instructions",
602 .llvm_name = "nsa-encoding",
603 .subfeatures = &[_]*const Feature {536 .subfeatures = &[_]*const Feature {
604 },537 },
605};538};
...@@ -607,7 +540,6 @@ pub const feature_nsaEncoding = Feature{...@@ -607,7 +540,6 @@ pub const feature_nsaEncoding = Feature{
607pub const feature_nsaToVmemBug = Feature{540pub const feature_nsaToVmemBug = Feature{
608 .name = "nsa-to-vmem-bug",541 .name = "nsa-to-vmem-bug",
609 .description = "MIMG-NSA followed by VMEM fail if EXEC_LO or EXEC_HI equals zero",542 .description = "MIMG-NSA followed by VMEM fail if EXEC_LO or EXEC_HI equals zero",
610 .llvm_name = "nsa-to-vmem-bug",
611 .subfeatures = &[_]*const Feature {543 .subfeatures = &[_]*const Feature {
612 },544 },
613};545};
...@@ -615,7 +547,6 @@ pub const feature_nsaToVmemBug = Feature{...@@ -615,7 +547,6 @@ pub const feature_nsaToVmemBug = Feature{
615pub const feature_noDataDepHazard = Feature{547pub const feature_noDataDepHazard = Feature{
616 .name = "no-data-dep-hazard",548 .name = "no-data-dep-hazard",
617 .description = "Does not need SW waitstates",549 .description = "Does not need SW waitstates",
618 .llvm_name = "no-data-dep-hazard",
619 .subfeatures = &[_]*const Feature {550 .subfeatures = &[_]*const Feature {
620 },551 },
621};552};
...@@ -623,7 +554,6 @@ pub const feature_noDataDepHazard = Feature{...@@ -623,7 +554,6 @@ pub const feature_noDataDepHazard = Feature{
623pub const feature_noSdstCmpx = Feature{554pub const feature_noSdstCmpx = Feature{
624 .name = "no-sdst-cmpx",555 .name = "no-sdst-cmpx",
625 .description = "V_CMPX does not write VCC/SGPR in addition to EXEC",556 .description = "V_CMPX does not write VCC/SGPR in addition to EXEC",
626 .llvm_name = "no-sdst-cmpx",
627 .subfeatures = &[_]*const Feature {557 .subfeatures = &[_]*const Feature {
628 },558 },
629};559};
...@@ -631,7 +561,6 @@ pub const feature_noSdstCmpx = Feature{...@@ -631,7 +561,6 @@ pub const feature_noSdstCmpx = Feature{
631pub const feature_offset3fBug = Feature{561pub const feature_offset3fBug = Feature{
632 .name = "offset-3f-bug",562 .name = "offset-3f-bug",
633 .description = "Branch offset of 3f hardware bug",563 .description = "Branch offset of 3f hardware bug",
634 .llvm_name = "offset-3f-bug",
635 .subfeatures = &[_]*const Feature {564 .subfeatures = &[_]*const Feature {
636 },565 },
637};566};
...@@ -639,7 +568,6 @@ pub const feature_offset3fBug = Feature{...@@ -639,7 +568,6 @@ pub const feature_offset3fBug = Feature{
639pub const feature_pkFmacF16Inst = Feature{568pub const feature_pkFmacF16Inst = Feature{
640 .name = "pk-fmac-f16-inst",569 .name = "pk-fmac-f16-inst",
641 .description = "Has v_pk_fmac_f16 instruction",570 .description = "Has v_pk_fmac_f16 instruction",
642 .llvm_name = "pk-fmac-f16-inst",
643 .subfeatures = &[_]*const Feature {571 .subfeatures = &[_]*const Feature {
644 },572 },
645};573};
...@@ -647,7 +575,6 @@ pub const feature_pkFmacF16Inst = Feature{...@@ -647,7 +575,6 @@ pub const feature_pkFmacF16Inst = Feature{
647pub const feature_promoteAlloca = Feature{575pub const feature_promoteAlloca = Feature{
648 .name = "promote-alloca",576 .name = "promote-alloca",
649 .description = "Enable promote alloca pass",577 .description = "Enable promote alloca pass",
650 .llvm_name = "promote-alloca",
651 .subfeatures = &[_]*const Feature {578 .subfeatures = &[_]*const Feature {
652 },579 },
653};580};
...@@ -655,7 +582,6 @@ pub const feature_promoteAlloca = Feature{...@@ -655,7 +582,6 @@ pub const feature_promoteAlloca = Feature{
655pub const feature_r128A16 = Feature{582pub const feature_r128A16 = Feature{
656 .name = "r128-a16",583 .name = "r128-a16",
657 .description = "Support 16 bit coordindates/gradients/lod/clamp/mip types on gfx9",584 .description = "Support 16 bit coordindates/gradients/lod/clamp/mip types on gfx9",
658 .llvm_name = "r128-a16",
659 .subfeatures = &[_]*const Feature {585 .subfeatures = &[_]*const Feature {
660 },586 },
661};587};
...@@ -663,7 +589,6 @@ pub const feature_r128A16 = Feature{...@@ -663,7 +589,6 @@ pub const feature_r128A16 = Feature{
663pub const feature_registerBanking = Feature{589pub const feature_registerBanking = Feature{
664 .name = "register-banking",590 .name = "register-banking",
665 .description = "Has register banking",591 .description = "Has register banking",
666 .llvm_name = "register-banking",
667 .subfeatures = &[_]*const Feature {592 .subfeatures = &[_]*const Feature {
668 },593 },
669};594};
...@@ -671,7 +596,6 @@ pub const feature_registerBanking = Feature{...@@ -671,7 +596,6 @@ pub const feature_registerBanking = Feature{
671pub const feature_sdwa = Feature{596pub const feature_sdwa = Feature{
672 .name = "sdwa",597 .name = "sdwa",
673 .description = "Support SDWA (Sub-DWORD Addressing) extension",598 .description = "Support SDWA (Sub-DWORD Addressing) extension",
674 .llvm_name = "sdwa",
675 .subfeatures = &[_]*const Feature {599 .subfeatures = &[_]*const Feature {
676 },600 },
677};601};
...@@ -679,7 +603,6 @@ pub const feature_sdwa = Feature{...@@ -679,7 +603,6 @@ pub const feature_sdwa = Feature{
679pub const feature_sdwaMav = Feature{603pub const feature_sdwaMav = Feature{
680 .name = "sdwa-mav",604 .name = "sdwa-mav",
681 .description = "Support v_mac_f32/f16 with SDWA (Sub-DWORD Addressing) extension",605 .description = "Support v_mac_f32/f16 with SDWA (Sub-DWORD Addressing) extension",
682 .llvm_name = "sdwa-mav",
683 .subfeatures = &[_]*const Feature {606 .subfeatures = &[_]*const Feature {
684 },607 },
685};608};
...@@ -687,7 +610,6 @@ pub const feature_sdwaMav = Feature{...@@ -687,7 +610,6 @@ pub const feature_sdwaMav = Feature{
687pub const feature_sdwaOmod = Feature{610pub const feature_sdwaOmod = Feature{
688 .name = "sdwa-omod",611 .name = "sdwa-omod",
689 .description = "Support OMod with SDWA (Sub-DWORD Addressing) extension",612 .description = "Support OMod with SDWA (Sub-DWORD Addressing) extension",
690 .llvm_name = "sdwa-omod",
691 .subfeatures = &[_]*const Feature {613 .subfeatures = &[_]*const Feature {
692 },614 },
693};615};
...@@ -695,7 +617,6 @@ pub const feature_sdwaOmod = Feature{...@@ -695,7 +617,6 @@ pub const feature_sdwaOmod = Feature{
695pub const feature_sdwaOutModsVopc = Feature{617pub const feature_sdwaOutModsVopc = Feature{
696 .name = "sdwa-out-mods-vopc",618 .name = "sdwa-out-mods-vopc",
697 .description = "Support clamp for VOPC with SDWA (Sub-DWORD Addressing) extension",619 .description = "Support clamp for VOPC with SDWA (Sub-DWORD Addressing) extension",
698 .llvm_name = "sdwa-out-mods-vopc",
699 .subfeatures = &[_]*const Feature {620 .subfeatures = &[_]*const Feature {
700 },621 },
701};622};
...@@ -703,7 +624,6 @@ pub const feature_sdwaOutModsVopc = Feature{...@@ -703,7 +624,6 @@ pub const feature_sdwaOutModsVopc = Feature{
703pub const feature_sdwaScalar = Feature{624pub const feature_sdwaScalar = Feature{
704 .name = "sdwa-scalar",625 .name = "sdwa-scalar",
705 .description = "Support scalar register with SDWA (Sub-DWORD Addressing) extension",626 .description = "Support scalar register with SDWA (Sub-DWORD Addressing) extension",
706 .llvm_name = "sdwa-scalar",
707 .subfeatures = &[_]*const Feature {627 .subfeatures = &[_]*const Feature {
708 },628 },
709};629};
...@@ -711,7 +631,6 @@ pub const feature_sdwaScalar = Feature{...@@ -711,7 +631,6 @@ pub const feature_sdwaScalar = Feature{
711pub const feature_sdwaSdst = Feature{631pub const feature_sdwaSdst = Feature{
712 .name = "sdwa-sdst",632 .name = "sdwa-sdst",
713 .description = "Support scalar dst for VOPC with SDWA (Sub-DWORD Addressing) extension",633 .description = "Support scalar dst for VOPC with SDWA (Sub-DWORD Addressing) extension",
714 .llvm_name = "sdwa-sdst",
715 .subfeatures = &[_]*const Feature {634 .subfeatures = &[_]*const Feature {
716 },635 },
717};636};
...@@ -719,7 +638,6 @@ pub const feature_sdwaSdst = Feature{...@@ -719,7 +638,6 @@ pub const feature_sdwaSdst = Feature{
719pub const feature_sgprInitBug = Feature{638pub const feature_sgprInitBug = Feature{
720 .name = "sgpr-init-bug",639 .name = "sgpr-init-bug",
721 .description = "VI SGPR initialization bug requiring a fixed SGPR allocation size",640 .description = "VI SGPR initialization bug requiring a fixed SGPR allocation size",
722 .llvm_name = "sgpr-init-bug",
723 .subfeatures = &[_]*const Feature {641 .subfeatures = &[_]*const Feature {
724 },642 },
725};643};
...@@ -727,7 +645,6 @@ pub const feature_sgprInitBug = Feature{...@@ -727,7 +645,6 @@ pub const feature_sgprInitBug = Feature{
727pub const feature_smemToVectorWriteHazard = Feature{645pub const feature_smemToVectorWriteHazard = Feature{
728 .name = "smem-to-vector-write-hazard",646 .name = "smem-to-vector-write-hazard",
729 .description = "s_load_dword followed by v_cmp page faults",647 .description = "s_load_dword followed by v_cmp page faults",
730 .llvm_name = "smem-to-vector-write-hazard",
731 .subfeatures = &[_]*const Feature {648 .subfeatures = &[_]*const Feature {
732 },649 },
733};650};
...@@ -735,7 +652,6 @@ pub const feature_smemToVectorWriteHazard = Feature{...@@ -735,7 +652,6 @@ pub const feature_smemToVectorWriteHazard = Feature{
735pub const feature_sMemrealtime = Feature{652pub const feature_sMemrealtime = Feature{
736 .name = "s-memrealtime",653 .name = "s-memrealtime",
737 .description = "Has s_memrealtime instruction",654 .description = "Has s_memrealtime instruction",
738 .llvm_name = "s-memrealtime",
739 .subfeatures = &[_]*const Feature {655 .subfeatures = &[_]*const Feature {
740 },656 },
741};657};
...@@ -743,7 +659,6 @@ pub const feature_sMemrealtime = Feature{...@@ -743,7 +659,6 @@ pub const feature_sMemrealtime = Feature{
743pub const feature_sramEcc = Feature{659pub const feature_sramEcc = Feature{
744 .name = "sram-ecc",660 .name = "sram-ecc",
745 .description = "Enable SRAM ECC",661 .description = "Enable SRAM ECC",
746 .llvm_name = "sram-ecc",
747 .subfeatures = &[_]*const Feature {662 .subfeatures = &[_]*const Feature {
748 },663 },
749};664};
...@@ -751,7 +666,6 @@ pub const feature_sramEcc = Feature{...@@ -751,7 +666,6 @@ pub const feature_sramEcc = Feature{
751pub const feature_scalarAtomics = Feature{666pub const feature_scalarAtomics = Feature{
752 .name = "scalar-atomics",667 .name = "scalar-atomics",
753 .description = "Has atomic scalar memory instructions",668 .description = "Has atomic scalar memory instructions",
754 .llvm_name = "scalar-atomics",
755 .subfeatures = &[_]*const Feature {669 .subfeatures = &[_]*const Feature {
756 },670 },
757};671};
...@@ -759,7 +673,6 @@ pub const feature_scalarAtomics = Feature{...@@ -759,7 +673,6 @@ pub const feature_scalarAtomics = Feature{
759pub const feature_scalarFlatScratchInsts = Feature{673pub const feature_scalarFlatScratchInsts = Feature{
760 .name = "scalar-flat-scratch-insts",674 .name = "scalar-flat-scratch-insts",
761 .description = "Have s_scratch_* flat memory instructions",675 .description = "Have s_scratch_* flat memory instructions",
762 .llvm_name = "scalar-flat-scratch-insts",
763 .subfeatures = &[_]*const Feature {676 .subfeatures = &[_]*const Feature {
764 },677 },
765};678};
...@@ -767,7 +680,6 @@ pub const feature_scalarFlatScratchInsts = Feature{...@@ -767,7 +680,6 @@ pub const feature_scalarFlatScratchInsts = Feature{
767pub const feature_scalarStores = Feature{680pub const feature_scalarStores = Feature{
768 .name = "scalar-stores",681 .name = "scalar-stores",
769 .description = "Has store scalar memory instructions",682 .description = "Has store scalar memory instructions",
770 .llvm_name = "scalar-stores",
771 .subfeatures = &[_]*const Feature {683 .subfeatures = &[_]*const Feature {
772 },684 },
773};685};
...@@ -775,42 +687,39 @@ pub const feature_scalarStores = Feature{...@@ -775,42 +687,39 @@ pub const feature_scalarStores = Feature{
775pub const feature_seaIslands = Feature{687pub const feature_seaIslands = Feature{
776 .name = "sea-islands",688 .name = "sea-islands",
777 .description = "SEA_ISLANDS GPU generation",689 .description = "SEA_ISLANDS GPU generation",
778 .llvm_name = "sea-islands",
779 .subfeatures = &[_]*const Feature {690 .subfeatures = &[_]*const Feature {
780 &feature_gfx7Gfx8Gfx9Insts,
781 &feature_mimgR128,
782 &feature_localmemorysize65536,
783 &feature_movrel,
784 &feature_trigReducedRange,691 &feature_trigReducedRange,
785 &feature_wavefrontsize64,
786 &feature_flatAddressSpace,
787 &feature_ciInsts,
788 &feature_noSramEccSupport,692 &feature_noSramEccSupport,
789 &feature_fp64,693 &feature_fp64,
694 &feature_movrel,
695 &feature_ciInsts,
696 &feature_localmemorysize65536,
697 &feature_mimgR128,
698 &feature_wavefrontsize64,
699 &feature_flatAddressSpace,
700 &feature_gfx7Gfx8Gfx9Insts,
790 },701 },
791};702};
792703
793pub const feature_southernIslands = Feature{704pub const feature_southernIslands = Feature{
794 .name = "southern-islands",705 .name = "southern-islands",
795 .description = "SOUTHERN_ISLANDS GPU generation",706 .description = "SOUTHERN_ISLANDS GPU generation",
796 .llvm_name = "southern-islands",
797 .subfeatures = &[_]*const Feature {707 .subfeatures = &[_]*const Feature {
798 &feature_mimgR128,
799 &feature_movrel,
800 &feature_localmemorysize32768,708 &feature_localmemorysize32768,
801 &feature_trigReducedRange,709 &feature_trigReducedRange,
802 &feature_ldsbankcount32,
803 &feature_wavefrontsize64,
804 &feature_noSramEccSupport,710 &feature_noSramEccSupport,
805 &feature_noXnackSupport,
806 &feature_fp64,711 &feature_fp64,
712 &feature_movrel,
713 &feature_ldsbankcount32,
714 &feature_noXnackSupport,
715 &feature_mimgR128,
716 &feature_wavefrontsize64,
807 },717 },
808};718};
809719
810pub const feature_trapHandler = Feature{720pub const feature_trapHandler = Feature{
811 .name = "trap-handler",721 .name = "trap-handler",
812 .description = "Trap handler support",722 .description = "Trap handler support",
813 .llvm_name = "trap-handler",
814 .subfeatures = &[_]*const Feature {723 .subfeatures = &[_]*const Feature {
815 },724 },
816};725};
...@@ -818,7 +727,6 @@ pub const feature_trapHandler = Feature{...@@ -818,7 +727,6 @@ pub const feature_trapHandler = Feature{
818pub const feature_trigReducedRange = Feature{727pub const feature_trigReducedRange = Feature{
819 .name = "trig-reduced-range",728 .name = "trig-reduced-range",
820 .description = "Requires use of fract on arguments to trig instructions",729 .description = "Requires use of fract on arguments to trig instructions",
821 .llvm_name = "trig-reduced-range",
822 .subfeatures = &[_]*const Feature {730 .subfeatures = &[_]*const Feature {
823 },731 },
824};732};
...@@ -826,7 +734,6 @@ pub const feature_trigReducedRange = Feature{...@@ -826,7 +734,6 @@ pub const feature_trigReducedRange = Feature{
826pub const feature_unalignedBufferAccess = Feature{734pub const feature_unalignedBufferAccess = Feature{
827 .name = "unaligned-buffer-access",735 .name = "unaligned-buffer-access",
828 .description = "Support unaligned global loads and stores",736 .description = "Support unaligned global loads and stores",
829 .llvm_name = "unaligned-buffer-access",
830 .subfeatures = &[_]*const Feature {737 .subfeatures = &[_]*const Feature {
831 },738 },
832};739};
...@@ -834,7 +741,6 @@ pub const feature_unalignedBufferAccess = Feature{...@@ -834,7 +741,6 @@ pub const feature_unalignedBufferAccess = Feature{
834pub const feature_unalignedScratchAccess = Feature{741pub const feature_unalignedScratchAccess = Feature{
835 .name = "unaligned-scratch-access",742 .name = "unaligned-scratch-access",
836 .description = "Support unaligned scratch loads and stores",743 .description = "Support unaligned scratch loads and stores",
837 .llvm_name = "unaligned-scratch-access",
838 .subfeatures = &[_]*const Feature {744 .subfeatures = &[_]*const Feature {
839 },745 },
840};746};
...@@ -842,7 +748,6 @@ pub const feature_unalignedScratchAccess = Feature{...@@ -842,7 +748,6 @@ pub const feature_unalignedScratchAccess = Feature{
842pub const feature_unpackedD16Vmem = Feature{748pub const feature_unpackedD16Vmem = Feature{
843 .name = "unpacked-d16-vmem",749 .name = "unpacked-d16-vmem",
844 .description = "Has unpacked d16 vmem instructions",750 .description = "Has unpacked d16 vmem instructions",
845 .llvm_name = "unpacked-d16-vmem",
846 .subfeatures = &[_]*const Feature {751 .subfeatures = &[_]*const Feature {
847 },752 },
848};753};
...@@ -850,7 +755,6 @@ pub const feature_unpackedD16Vmem = Feature{...@@ -850,7 +755,6 @@ pub const feature_unpackedD16Vmem = Feature{
850pub const feature_vgprIndexMode = Feature{755pub const feature_vgprIndexMode = Feature{
851 .name = "vgpr-index-mode",756 .name = "vgpr-index-mode",
852 .description = "Has VGPR mode register indexing",757 .description = "Has VGPR mode register indexing",
853 .llvm_name = "vgpr-index-mode",
854 .subfeatures = &[_]*const Feature {758 .subfeatures = &[_]*const Feature {
855 },759 },
856};760};
...@@ -858,7 +762,6 @@ pub const feature_vgprIndexMode = Feature{...@@ -858,7 +762,6 @@ pub const feature_vgprIndexMode = Feature{
858pub const feature_vmemToScalarWriteHazard = Feature{762pub const feature_vmemToScalarWriteHazard = Feature{
859 .name = "vmem-to-scalar-write-hazard",763 .name = "vmem-to-scalar-write-hazard",
860 .description = "VMEM instruction followed by scalar writing to EXEC mask, M0 or SGPR leads to incorrect execution.",764 .description = "VMEM instruction followed by scalar writing to EXEC mask, M0 or SGPR leads to incorrect execution.",
861 .llvm_name = "vmem-to-scalar-write-hazard",
862 .subfeatures = &[_]*const Feature {765 .subfeatures = &[_]*const Feature {
863 },766 },
864};767};
...@@ -866,7 +769,6 @@ pub const feature_vmemToScalarWriteHazard = Feature{...@@ -866,7 +769,6 @@ pub const feature_vmemToScalarWriteHazard = Feature{
866pub const feature_vop3Literal = Feature{769pub const feature_vop3Literal = Feature{
867 .name = "vop3-literal",770 .name = "vop3-literal",
868 .description = "Can use one literal in VOP3",771 .description = "Can use one literal in VOP3",
869 .llvm_name = "vop3-literal",
870 .subfeatures = &[_]*const Feature {772 .subfeatures = &[_]*const Feature {
871 },773 },
872};774};
...@@ -874,7 +776,6 @@ pub const feature_vop3Literal = Feature{...@@ -874,7 +776,6 @@ pub const feature_vop3Literal = Feature{
874pub const feature_vop3p = Feature{776pub const feature_vop3p = Feature{
875 .name = "vop3p",777 .name = "vop3p",
876 .description = "Has VOP3P packed instructions",778 .description = "Has VOP3P packed instructions",
877 .llvm_name = "vop3p",
878 .subfeatures = &[_]*const Feature {779 .subfeatures = &[_]*const Feature {
879 },780 },
880};781};
...@@ -882,7 +783,6 @@ pub const feature_vop3p = Feature{...@@ -882,7 +783,6 @@ pub const feature_vop3p = Feature{
882pub const feature_vcmpxExecWarHazard = Feature{783pub const feature_vcmpxExecWarHazard = Feature{
883 .name = "vcmpx-exec-war-hazard",784 .name = "vcmpx-exec-war-hazard",
884 .description = "V_CMPX WAR hazard on EXEC (V_CMPX issue ONLY)",785 .description = "V_CMPX WAR hazard on EXEC (V_CMPX issue ONLY)",
885 .llvm_name = "vcmpx-exec-war-hazard",
886 .subfeatures = &[_]*const Feature {786 .subfeatures = &[_]*const Feature {
887 },787 },
888};788};
...@@ -890,7 +790,6 @@ pub const feature_vcmpxExecWarHazard = Feature{...@@ -890,7 +790,6 @@ pub const feature_vcmpxExecWarHazard = Feature{
890pub const feature_vcmpxPermlaneHazard = Feature{790pub const feature_vcmpxPermlaneHazard = Feature{
891 .name = "vcmpx-permlane-hazard",791 .name = "vcmpx-permlane-hazard",
892 .description = "TODO: describe me",792 .description = "TODO: describe me",
893 .llvm_name = "vcmpx-permlane-hazard",
894 .subfeatures = &[_]*const Feature {793 .subfeatures = &[_]*const Feature {
895 },794 },
896};795};
...@@ -898,37 +797,35 @@ pub const feature_vcmpxPermlaneHazard = Feature{...@@ -898,37 +797,35 @@ pub const feature_vcmpxPermlaneHazard = Feature{
898pub const feature_volcanicIslands = Feature{797pub const feature_volcanicIslands = Feature{
899 .name = "volcanic-islands",798 .name = "volcanic-islands",
900 .description = "VOLCANIC_ISLANDS GPU generation",799 .description = "VOLCANIC_ISLANDS GPU generation",
901 .llvm_name = "volcanic-islands",
902 .subfeatures = &[_]*const Feature {800 .subfeatures = &[_]*const Feature {
903 &feature_movrel,801 &feature_fp64,
802 &feature_sMemrealtime,
803 &feature_gfx8Insts,
804 &feature_dpp,
904 &feature_ciInsts,805 &feature_ciInsts,
806 &feature_scalarStores,
807 &feature_intClampInsts,
808 &feature_gcn3Encoding,
809 &feature_gfx7Gfx8Gfx9Insts,
810 &feature_wavefrontsize64,
811 &feature_movrel,
812 &feature_vgprIndexMode,
813 &feature_trigReducedRange,
905 &feature_noSramEccSupport,814 &feature_noSramEccSupport,
906 &feature_sdwa,815 &feature_sdwa,
816 &feature_sdwaMav,
817 &feature_sdwaOutModsVopc,
907 &feature_localmemorysize65536,818 &feature_localmemorysize65536,
908 &feature_scalarStores,819 &feature_mimgR128,
909 &feature_gcn3Encoding,
910 &feature_flatAddressSpace,820 &feature_flatAddressSpace,
911 &feature_dpp,
912 &feature_inv2piInlineImm,821 &feature_inv2piInlineImm,
913 &feature_fp64,
914 &feature_BitInsts16,822 &feature_BitInsts16,
915 &feature_trigReducedRange,
916 &feature_vgprIndexMode,
917 &feature_wavefrontsize64,
918 &feature_gfx8Insts,
919 &feature_gfx7Gfx8Gfx9Insts,
920 &feature_mimgR128,
921 &feature_intClampInsts,
922 &feature_sMemrealtime,
923 &feature_sdwaMav,
924 &feature_sdwaOutModsVopc,
925 },823 },
926};824};
927825
928pub const feature_vscnt = Feature{826pub const feature_vscnt = Feature{
929 .name = "vscnt",827 .name = "vscnt",
930 .description = "Has separate store vscnt counter",828 .description = "Has separate store vscnt counter",
931 .llvm_name = "vscnt",
932 .subfeatures = &[_]*const Feature {829 .subfeatures = &[_]*const Feature {
933 },830 },
934};831};
...@@ -936,7 +833,6 @@ pub const feature_vscnt = Feature{...@@ -936,7 +833,6 @@ pub const feature_vscnt = Feature{
936pub const feature_wavefrontsize16 = Feature{833pub const feature_wavefrontsize16 = Feature{
937 .name = "wavefrontsize16",834 .name = "wavefrontsize16",
938 .description = "The number of threads per wavefront",835 .description = "The number of threads per wavefront",
939 .llvm_name = "wavefrontsize16",
940 .subfeatures = &[_]*const Feature {836 .subfeatures = &[_]*const Feature {
941 },837 },
942};838};
...@@ -944,7 +840,6 @@ pub const feature_wavefrontsize16 = Feature{...@@ -944,7 +840,6 @@ pub const feature_wavefrontsize16 = Feature{
944pub const feature_wavefrontsize32 = Feature{840pub const feature_wavefrontsize32 = Feature{
945 .name = "wavefrontsize32",841 .name = "wavefrontsize32",
946 .description = "The number of threads per wavefront",842 .description = "The number of threads per wavefront",
947 .llvm_name = "wavefrontsize32",
948 .subfeatures = &[_]*const Feature {843 .subfeatures = &[_]*const Feature {
949 },844 },
950};845};
...@@ -952,7 +847,6 @@ pub const feature_wavefrontsize32 = Feature{...@@ -952,7 +847,6 @@ pub const feature_wavefrontsize32 = Feature{
952pub const feature_wavefrontsize64 = Feature{847pub const feature_wavefrontsize64 = Feature{
953 .name = "wavefrontsize64",848 .name = "wavefrontsize64",
954 .description = "The number of threads per wavefront",849 .description = "The number of threads per wavefront",
955 .llvm_name = "wavefrontsize64",
956 .subfeatures = &[_]*const Feature {850 .subfeatures = &[_]*const Feature {
957 },851 },
958};852};
...@@ -960,7 +854,6 @@ pub const feature_wavefrontsize64 = Feature{...@@ -960,7 +854,6 @@ pub const feature_wavefrontsize64 = Feature{
960pub const feature_xnack = Feature{854pub const feature_xnack = Feature{
961 .name = "xnack",855 .name = "xnack",
962 .description = "Enable XNACK support",856 .description = "Enable XNACK support",
963 .llvm_name = "xnack",
964 .subfeatures = &[_]*const Feature {857 .subfeatures = &[_]*const Feature {
965 },858 },
966};859};
...@@ -968,7 +861,6 @@ pub const feature_xnack = Feature{...@@ -968,7 +861,6 @@ pub const feature_xnack = Feature{
968pub const feature_halfRate64Ops = Feature{861pub const feature_halfRate64Ops = Feature{
969 .name = "half-rate-64-ops",862 .name = "half-rate-64-ops",
970 .description = "Most fp64 instructions are half rate instead of quarter",863 .description = "Most fp64 instructions are half rate instead of quarter",
971 .llvm_name = "half-rate-64-ops",
972 .subfeatures = &[_]*const Feature {864 .subfeatures = &[_]*const Feature {
973 },865 },
974};866};
...@@ -1091,16 +983,16 @@ pub const cpu_bonaire = Cpu{...@@ -1091,16 +983,16 @@ pub const cpu_bonaire = Cpu{
1091 &feature_codeObjectV3,983 &feature_codeObjectV3,
1092 &feature_noXnackSupport,984 &feature_noXnackSupport,
1093 &feature_ldsbankcount32,985 &feature_ldsbankcount32,
1094 &feature_gfx7Gfx8Gfx9Insts,
1095 &feature_mimgR128,
1096 &feature_localmemorysize65536,
1097 &feature_movrel,
1098 &feature_trigReducedRange,986 &feature_trigReducedRange,
1099 &feature_wavefrontsize64,
1100 &feature_flatAddressSpace,
1101 &feature_ciInsts,
1102 &feature_noSramEccSupport,987 &feature_noSramEccSupport,
1103 &feature_fp64,988 &feature_fp64,
989 &feature_movrel,
990 &feature_ciInsts,
991 &feature_localmemorysize65536,
992 &feature_mimgR128,
993 &feature_wavefrontsize64,
994 &feature_flatAddressSpace,
995 &feature_gfx7Gfx8Gfx9Insts,
1104 &feature_seaIslands,996 &feature_seaIslands,
1105 },997 },
1106};998};
...@@ -1113,28 +1005,28 @@ pub const cpu_carrizo = Cpu{...@@ -1113,28 +1005,28 @@ pub const cpu_carrizo = Cpu{
1113 &feature_fastFmaf,1005 &feature_fastFmaf,
1114 &feature_ldsbankcount32,1006 &feature_ldsbankcount32,
1115 &feature_unpackedD16Vmem,1007 &feature_unpackedD16Vmem,
1116 &feature_movrel,1008 &feature_fp64,
1009 &feature_sMemrealtime,
1010 &feature_gfx8Insts,
1011 &feature_dpp,
1117 &feature_ciInsts,1012 &feature_ciInsts,
1013 &feature_scalarStores,
1014 &feature_intClampInsts,
1015 &feature_gcn3Encoding,
1016 &feature_gfx7Gfx8Gfx9Insts,
1017 &feature_wavefrontsize64,
1018 &feature_movrel,
1019 &feature_vgprIndexMode,
1020 &feature_trigReducedRange,
1118 &feature_noSramEccSupport,1021 &feature_noSramEccSupport,
1119 &feature_sdwa,1022 &feature_sdwa,
1023 &feature_sdwaMav,
1024 &feature_sdwaOutModsVopc,
1120 &feature_localmemorysize65536,1025 &feature_localmemorysize65536,
1121 &feature_scalarStores,1026 &feature_mimgR128,
1122 &feature_gcn3Encoding,
1123 &feature_flatAddressSpace,1027 &feature_flatAddressSpace,
1124 &feature_dpp,
1125 &feature_inv2piInlineImm,1028 &feature_inv2piInlineImm,
1126 &feature_fp64,
1127 &feature_BitInsts16,1029 &feature_BitInsts16,
1128 &feature_trigReducedRange,
1129 &feature_vgprIndexMode,
1130 &feature_wavefrontsize64,
1131 &feature_gfx8Insts,
1132 &feature_gfx7Gfx8Gfx9Insts,
1133 &feature_mimgR128,
1134 &feature_intClampInsts,
1135 &feature_sMemrealtime,
1136 &feature_sdwaMav,
1137 &feature_sdwaOutModsVopc,
1138 &feature_volcanicIslands,1030 &feature_volcanicIslands,
1139 &feature_xnack,1031 &feature_xnack,
1140 &feature_halfRate64Ops,1032 &feature_halfRate64Ops,
...@@ -1149,28 +1041,28 @@ pub const cpu_fiji = Cpu{...@@ -1149,28 +1041,28 @@ pub const cpu_fiji = Cpu{
1149 &feature_noXnackSupport,1041 &feature_noXnackSupport,
1150 &feature_ldsbankcount32,1042 &feature_ldsbankcount32,
1151 &feature_unpackedD16Vmem,1043 &feature_unpackedD16Vmem,
1152 &feature_movrel,1044 &feature_fp64,
1045 &feature_sMemrealtime,
1046 &feature_gfx8Insts,
1047 &feature_dpp,
1153 &feature_ciInsts,1048 &feature_ciInsts,
1049 &feature_scalarStores,
1050 &feature_intClampInsts,
1051 &feature_gcn3Encoding,
1052 &feature_gfx7Gfx8Gfx9Insts,
1053 &feature_wavefrontsize64,
1054 &feature_movrel,
1055 &feature_vgprIndexMode,
1056 &feature_trigReducedRange,
1154 &feature_noSramEccSupport,1057 &feature_noSramEccSupport,
1155 &feature_sdwa,1058 &feature_sdwa,
1059 &feature_sdwaMav,
1060 &feature_sdwaOutModsVopc,
1156 &feature_localmemorysize65536,1061 &feature_localmemorysize65536,
1157 &feature_scalarStores,1062 &feature_mimgR128,
1158 &feature_gcn3Encoding,
1159 &feature_flatAddressSpace,1063 &feature_flatAddressSpace,
1160 &feature_dpp,
1161 &feature_inv2piInlineImm,1064 &feature_inv2piInlineImm,
1162 &feature_fp64,
1163 &feature_BitInsts16,1065 &feature_BitInsts16,
1164 &feature_trigReducedRange,
1165 &feature_vgprIndexMode,
1166 &feature_wavefrontsize64,
1167 &feature_gfx8Insts,
1168 &feature_gfx7Gfx8Gfx9Insts,
1169 &feature_mimgR128,
1170 &feature_intClampInsts,
1171 &feature_sMemrealtime,
1172 &feature_sdwaMav,
1173 &feature_sdwaOutModsVopc,
1174 &feature_volcanicIslands,1066 &feature_volcanicIslands,
1175 },1067 },
1176};1068};
...@@ -1200,40 +1092,40 @@ pub const cpu_gfx1010 = Cpu{...@@ -1200,40 +1092,40 @@ pub const cpu_gfx1010 = Cpu{
1200 &feature_dlInsts,1092 &feature_dlInsts,
1201 &feature_noXnackSupport,1093 &feature_noXnackSupport,
1202 &feature_flatSegmentOffsetBug,1094 &feature_flatSegmentOffsetBug,
1203 &feature_movrel,1095 &feature_registerBanking,
1204 &feature_gfx9Insts,1096 &feature_fp64,
1205 &feature_ciInsts,1097 &feature_vop3p,
1206 &feature_noSramEccSupport,1098 &feature_sMemrealtime,
1207 &feature_noSdstCmpx,1099 &feature_gfx8Insts,
1208 &feature_fmaMixInsts,1100 &feature_dpp,
1209 &feature_sdwa,
1210 &feature_localmemorysize65536,
1211 &feature_sdwaScalar,
1212 &feature_sdwaSdst,1101 &feature_sdwaSdst,
1102 &feature_ciInsts,
1213 &feature_apertureRegs,1103 &feature_apertureRegs,
1104 &feature_intClampInsts,
1214 &feature_flatScratchInsts,1105 &feature_flatScratchInsts,
1106 &feature_sdwaScalar,
1107 &feature_fastFmaf,
1108 &feature_pkFmacF16Inst,
1215 &feature_vscnt,1109 &feature_vscnt,
1216 &feature_noDataDepHazard,1110 &feature_movrel,
1111 &feature_fmaMixInsts,
1112 &feature_noSramEccSupport,
1113 &feature_sdwa,
1114 &feature_sdwaOmod,
1115 &feature_vop3Literal,
1116 &feature_dpp8,
1117 &feature_gfx10Insts,
1118 &feature_localmemorysize65536,
1119 &feature_mimgR128,
1217 &feature_flatAddressSpace,1120 &feature_flatAddressSpace,
1218 &feature_dpp,
1219 &feature_addNoCarryInsts,1121 &feature_addNoCarryInsts,
1122 &feature_noDataDepHazard,
1123 &feature_flatInstOffsets,
1220 &feature_inv2piInlineImm,1124 &feature_inv2piInlineImm,
1221 &feature_fp64,1125 &feature_gfx9Insts,
1222 &feature_dpp8,
1223 &feature_BitInsts16,
1224 &feature_registerBanking,
1225 &feature_gfx8Insts,
1226 &feature_flatGlobalInsts,1126 &feature_flatGlobalInsts,
1227 &feature_flatInstOffsets,1127 &feature_BitInsts16,
1228 &feature_pkFmacF16Inst,1128 &feature_noSdstCmpx,
1229 &feature_vop3p,
1230 &feature_mimgR128,
1231 &feature_intClampInsts,
1232 &feature_sMemrealtime,
1233 &feature_fastFmaf,
1234 &feature_vop3Literal,
1235 &feature_sdwaOmod,
1236 &feature_gfx10Insts,
1237 &feature_gfx10,1129 &feature_gfx10,
1238 &feature_instFwdPrefetchBug,1130 &feature_instFwdPrefetchBug,
1239 &feature_ldsbankcount32,1131 &feature_ldsbankcount32,
...@@ -1265,40 +1157,40 @@ pub const cpu_gfx1011 = Cpu{...@@ -1265,40 +1157,40 @@ pub const cpu_gfx1011 = Cpu{
1265 &feature_dot5Insts,1157 &feature_dot5Insts,
1266 &feature_dot6Insts,1158 &feature_dot6Insts,
1267 &feature_flatSegmentOffsetBug,1159 &feature_flatSegmentOffsetBug,
1268 &feature_movrel,1160 &feature_registerBanking,
1269 &feature_gfx9Insts,1161 &feature_fp64,
1270 &feature_ciInsts,1162 &feature_vop3p,
1271 &feature_noSramEccSupport,1163 &feature_sMemrealtime,
1272 &feature_noSdstCmpx,1164 &feature_gfx8Insts,
1273 &feature_fmaMixInsts,1165 &feature_dpp,
1274 &feature_sdwa,
1275 &feature_localmemorysize65536,
1276 &feature_sdwaScalar,
1277 &feature_sdwaSdst,1166 &feature_sdwaSdst,
1167 &feature_ciInsts,
1278 &feature_apertureRegs,1168 &feature_apertureRegs,
1169 &feature_intClampInsts,
1279 &feature_flatScratchInsts,1170 &feature_flatScratchInsts,
1171 &feature_sdwaScalar,
1172 &feature_fastFmaf,
1173 &feature_pkFmacF16Inst,
1280 &feature_vscnt,1174 &feature_vscnt,
1281 &feature_noDataDepHazard,1175 &feature_movrel,
1176 &feature_fmaMixInsts,
1177 &feature_noSramEccSupport,
1178 &feature_sdwa,
1179 &feature_sdwaOmod,
1180 &feature_vop3Literal,
1181 &feature_dpp8,
1182 &feature_gfx10Insts,
1183 &feature_localmemorysize65536,
1184 &feature_mimgR128,
1282 &feature_flatAddressSpace,1185 &feature_flatAddressSpace,
1283 &feature_dpp,
1284 &feature_addNoCarryInsts,1186 &feature_addNoCarryInsts,
1187 &feature_noDataDepHazard,
1188 &feature_flatInstOffsets,
1285 &feature_inv2piInlineImm,1189 &feature_inv2piInlineImm,
1286 &feature_fp64,1190 &feature_gfx9Insts,
1287 &feature_dpp8,
1288 &feature_BitInsts16,
1289 &feature_registerBanking,
1290 &feature_gfx8Insts,
1291 &feature_flatGlobalInsts,1191 &feature_flatGlobalInsts,
1292 &feature_flatInstOffsets,1192 &feature_BitInsts16,
1293 &feature_pkFmacF16Inst,1193 &feature_noSdstCmpx,
1294 &feature_vop3p,
1295 &feature_mimgR128,
1296 &feature_intClampInsts,
1297 &feature_sMemrealtime,
1298 &feature_fastFmaf,
1299 &feature_vop3Literal,
1300 &feature_sdwaOmod,
1301 &feature_gfx10Insts,
1302 &feature_gfx10,1194 &feature_gfx10,
1303 &feature_instFwdPrefetchBug,1195 &feature_instFwdPrefetchBug,
1304 &feature_ldsbankcount32,1196 &feature_ldsbankcount32,
...@@ -1329,40 +1221,40 @@ pub const cpu_gfx1012 = Cpu{...@@ -1329,40 +1221,40 @@ pub const cpu_gfx1012 = Cpu{
1329 &feature_dot5Insts,1221 &feature_dot5Insts,
1330 &feature_dot6Insts,1222 &feature_dot6Insts,
1331 &feature_flatSegmentOffsetBug,1223 &feature_flatSegmentOffsetBug,
1332 &feature_movrel,1224 &feature_registerBanking,
1333 &feature_gfx9Insts,1225 &feature_fp64,
1334 &feature_ciInsts,1226 &feature_vop3p,
1335 &feature_noSramEccSupport,1227 &feature_sMemrealtime,
1336 &feature_noSdstCmpx,1228 &feature_gfx8Insts,
1337 &feature_fmaMixInsts,1229 &feature_dpp,
1338 &feature_sdwa,
1339 &feature_localmemorysize65536,
1340 &feature_sdwaScalar,
1341 &feature_sdwaSdst,1230 &feature_sdwaSdst,
1231 &feature_ciInsts,
1342 &feature_apertureRegs,1232 &feature_apertureRegs,
1233 &feature_intClampInsts,
1343 &feature_flatScratchInsts,1234 &feature_flatScratchInsts,
1235 &feature_sdwaScalar,
1236 &feature_fastFmaf,
1237 &feature_pkFmacF16Inst,
1344 &feature_vscnt,1238 &feature_vscnt,
1345 &feature_noDataDepHazard,1239 &feature_movrel,
1240 &feature_fmaMixInsts,
1241 &feature_noSramEccSupport,
1242 &feature_sdwa,
1243 &feature_sdwaOmod,
1244 &feature_vop3Literal,
1245 &feature_dpp8,
1246 &feature_gfx10Insts,
1247 &feature_localmemorysize65536,
1248 &feature_mimgR128,
1346 &feature_flatAddressSpace,1249 &feature_flatAddressSpace,
1347 &feature_dpp,
1348 &feature_addNoCarryInsts,1250 &feature_addNoCarryInsts,
1251 &feature_noDataDepHazard,
1252 &feature_flatInstOffsets,
1349 &feature_inv2piInlineImm,1253 &feature_inv2piInlineImm,
1350 &feature_fp64,1254 &feature_gfx9Insts,
1351 &feature_dpp8,
1352 &feature_BitInsts16,
1353 &feature_registerBanking,
1354 &feature_gfx8Insts,
1355 &feature_flatGlobalInsts,1255 &feature_flatGlobalInsts,
1356 &feature_flatInstOffsets,1256 &feature_BitInsts16,
1357 &feature_pkFmacF16Inst,1257 &feature_noSdstCmpx,
1358 &feature_vop3p,
1359 &feature_mimgR128,
1360 &feature_intClampInsts,
1361 &feature_sMemrealtime,
1362 &feature_fastFmaf,
1363 &feature_vop3Literal,
1364 &feature_sdwaOmod,
1365 &feature_gfx10Insts,
1366 &feature_gfx10,1258 &feature_gfx10,
1367 &feature_instFwdPrefetchBug,1259 &feature_instFwdPrefetchBug,
1368 &feature_ldsbankcount32,1260 &feature_ldsbankcount32,
...@@ -1390,13 +1282,13 @@ pub const cpu_gfx600 = Cpu{...@@ -1390,13 +1282,13 @@ pub const cpu_gfx600 = Cpu{
1390 &feature_noXnackSupport,1282 &feature_noXnackSupport,
1391 &feature_fastFmaf,1283 &feature_fastFmaf,
1392 &feature_ldsbankcount32,1284 &feature_ldsbankcount32,
1393 &feature_mimgR128,
1394 &feature_movrel,
1395 &feature_localmemorysize32768,1285 &feature_localmemorysize32768,
1396 &feature_trigReducedRange,1286 &feature_trigReducedRange,
1397 &feature_wavefrontsize64,
1398 &feature_noSramEccSupport,1287 &feature_noSramEccSupport,
1399 &feature_fp64,1288 &feature_fp64,
1289 &feature_movrel,
1290 &feature_mimgR128,
1291 &feature_wavefrontsize64,
1400 &feature_southernIslands,1292 &feature_southernIslands,
1401 &feature_halfRate64Ops,1293 &feature_halfRate64Ops,
1402 },1294 },
...@@ -1409,13 +1301,13 @@ pub const cpu_gfx601 = Cpu{...@@ -1409,13 +1301,13 @@ pub const cpu_gfx601 = Cpu{
1409 &feature_codeObjectV3,1301 &feature_codeObjectV3,
1410 &feature_noXnackSupport,1302 &feature_noXnackSupport,
1411 &feature_ldsbankcount32,1303 &feature_ldsbankcount32,
1412 &feature_mimgR128,
1413 &feature_movrel,
1414 &feature_localmemorysize32768,1304 &feature_localmemorysize32768,
1415 &feature_trigReducedRange,1305 &feature_trigReducedRange,
1416 &feature_wavefrontsize64,
1417 &feature_noSramEccSupport,1306 &feature_noSramEccSupport,
1418 &feature_fp64,1307 &feature_fp64,
1308 &feature_movrel,
1309 &feature_mimgR128,
1310 &feature_wavefrontsize64,
1419 &feature_southernIslands,1311 &feature_southernIslands,
1420 },1312 },
1421};1313};
...@@ -1427,16 +1319,16 @@ pub const cpu_gfx700 = Cpu{...@@ -1427,16 +1319,16 @@ pub const cpu_gfx700 = Cpu{
1427 &feature_codeObjectV3,1319 &feature_codeObjectV3,
1428 &feature_noXnackSupport,1320 &feature_noXnackSupport,
1429 &feature_ldsbankcount32,1321 &feature_ldsbankcount32,
1430 &feature_gfx7Gfx8Gfx9Insts,
1431 &feature_mimgR128,
1432 &feature_localmemorysize65536,
1433 &feature_movrel,
1434 &feature_trigReducedRange,1322 &feature_trigReducedRange,
1435 &feature_wavefrontsize64,
1436 &feature_flatAddressSpace,
1437 &feature_ciInsts,
1438 &feature_noSramEccSupport,1323 &feature_noSramEccSupport,
1439 &feature_fp64,1324 &feature_fp64,
1325 &feature_movrel,
1326 &feature_ciInsts,
1327 &feature_localmemorysize65536,
1328 &feature_mimgR128,
1329 &feature_wavefrontsize64,
1330 &feature_flatAddressSpace,
1331 &feature_gfx7Gfx8Gfx9Insts,
1440 &feature_seaIslands,1332 &feature_seaIslands,
1441 },1333 },
1442};1334};
...@@ -1449,16 +1341,16 @@ pub const cpu_gfx701 = Cpu{...@@ -1449,16 +1341,16 @@ pub const cpu_gfx701 = Cpu{
1449 &feature_noXnackSupport,1341 &feature_noXnackSupport,
1450 &feature_fastFmaf,1342 &feature_fastFmaf,
1451 &feature_ldsbankcount32,1343 &feature_ldsbankcount32,
1452 &feature_gfx7Gfx8Gfx9Insts,
1453 &feature_mimgR128,
1454 &feature_localmemorysize65536,
1455 &feature_movrel,
1456 &feature_trigReducedRange,1344 &feature_trigReducedRange,
1457 &feature_wavefrontsize64,
1458 &feature_flatAddressSpace,
1459 &feature_ciInsts,
1460 &feature_noSramEccSupport,1345 &feature_noSramEccSupport,
1461 &feature_fp64,1346 &feature_fp64,
1347 &feature_movrel,
1348 &feature_ciInsts,
1349 &feature_localmemorysize65536,
1350 &feature_mimgR128,
1351 &feature_wavefrontsize64,
1352 &feature_flatAddressSpace,
1353 &feature_gfx7Gfx8Gfx9Insts,
1462 &feature_seaIslands,1354 &feature_seaIslands,
1463 &feature_halfRate64Ops,1355 &feature_halfRate64Ops,
1464 },1356 },
...@@ -1472,16 +1364,16 @@ pub const cpu_gfx702 = Cpu{...@@ -1472,16 +1364,16 @@ pub const cpu_gfx702 = Cpu{
1472 &feature_noXnackSupport,1364 &feature_noXnackSupport,
1473 &feature_fastFmaf,1365 &feature_fastFmaf,
1474 &feature_ldsbankcount16,1366 &feature_ldsbankcount16,
1475 &feature_gfx7Gfx8Gfx9Insts,
1476 &feature_mimgR128,
1477 &feature_localmemorysize65536,
1478 &feature_movrel,
1479 &feature_trigReducedRange,1367 &feature_trigReducedRange,
1480 &feature_wavefrontsize64,
1481 &feature_flatAddressSpace,
1482 &feature_ciInsts,
1483 &feature_noSramEccSupport,1368 &feature_noSramEccSupport,
1484 &feature_fp64,1369 &feature_fp64,
1370 &feature_movrel,
1371 &feature_ciInsts,
1372 &feature_localmemorysize65536,
1373 &feature_mimgR128,
1374 &feature_wavefrontsize64,
1375 &feature_flatAddressSpace,
1376 &feature_gfx7Gfx8Gfx9Insts,
1485 &feature_seaIslands,1377 &feature_seaIslands,
1486 },1378 },
1487};1379};
...@@ -1493,16 +1385,16 @@ pub const cpu_gfx703 = Cpu{...@@ -1493,16 +1385,16 @@ pub const cpu_gfx703 = Cpu{
1493 &feature_codeObjectV3,1385 &feature_codeObjectV3,
1494 &feature_noXnackSupport,1386 &feature_noXnackSupport,
1495 &feature_ldsbankcount16,1387 &feature_ldsbankcount16,
1496 &feature_gfx7Gfx8Gfx9Insts,
1497 &feature_mimgR128,
1498 &feature_localmemorysize65536,
1499 &feature_movrel,
1500 &feature_trigReducedRange,1388 &feature_trigReducedRange,
1501 &feature_wavefrontsize64,
1502 &feature_flatAddressSpace,
1503 &feature_ciInsts,
1504 &feature_noSramEccSupport,1389 &feature_noSramEccSupport,
1505 &feature_fp64,1390 &feature_fp64,
1391 &feature_movrel,
1392 &feature_ciInsts,
1393 &feature_localmemorysize65536,
1394 &feature_mimgR128,
1395 &feature_wavefrontsize64,
1396 &feature_flatAddressSpace,
1397 &feature_gfx7Gfx8Gfx9Insts,
1506 &feature_seaIslands,1398 &feature_seaIslands,
1507 },1399 },
1508};1400};
...@@ -1514,16 +1406,16 @@ pub const cpu_gfx704 = Cpu{...@@ -1514,16 +1406,16 @@ pub const cpu_gfx704 = Cpu{
1514 &feature_codeObjectV3,1406 &feature_codeObjectV3,
1515 &feature_noXnackSupport,1407 &feature_noXnackSupport,
1516 &feature_ldsbankcount32,1408 &feature_ldsbankcount32,
1517 &feature_gfx7Gfx8Gfx9Insts,
1518 &feature_mimgR128,
1519 &feature_localmemorysize65536,
1520 &feature_movrel,
1521 &feature_trigReducedRange,1409 &feature_trigReducedRange,
1522 &feature_wavefrontsize64,
1523 &feature_flatAddressSpace,
1524 &feature_ciInsts,
1525 &feature_noSramEccSupport,1410 &feature_noSramEccSupport,
1526 &feature_fp64,1411 &feature_fp64,
1412 &feature_movrel,
1413 &feature_ciInsts,
1414 &feature_localmemorysize65536,
1415 &feature_mimgR128,
1416 &feature_wavefrontsize64,
1417 &feature_flatAddressSpace,
1418 &feature_gfx7Gfx8Gfx9Insts,
1527 &feature_seaIslands,1419 &feature_seaIslands,
1528 },1420 },
1529};1421};
...@@ -1536,28 +1428,28 @@ pub const cpu_gfx801 = Cpu{...@@ -1536,28 +1428,28 @@ pub const cpu_gfx801 = Cpu{
1536 &feature_fastFmaf,1428 &feature_fastFmaf,
1537 &feature_ldsbankcount32,1429 &feature_ldsbankcount32,
1538 &feature_unpackedD16Vmem,1430 &feature_unpackedD16Vmem,
1539 &feature_movrel,1431 &feature_fp64,
1432 &feature_sMemrealtime,
1433 &feature_gfx8Insts,
1434 &feature_dpp,
1540 &feature_ciInsts,1435 &feature_ciInsts,
1436 &feature_scalarStores,
1437 &feature_intClampInsts,
1438 &feature_gcn3Encoding,
1439 &feature_gfx7Gfx8Gfx9Insts,
1440 &feature_wavefrontsize64,
1441 &feature_movrel,
1442 &feature_vgprIndexMode,
1443 &feature_trigReducedRange,
1541 &feature_noSramEccSupport,1444 &feature_noSramEccSupport,
1542 &feature_sdwa,1445 &feature_sdwa,
1446 &feature_sdwaMav,
1447 &feature_sdwaOutModsVopc,
1543 &feature_localmemorysize65536,1448 &feature_localmemorysize65536,
1544 &feature_scalarStores,1449 &feature_mimgR128,
1545 &feature_gcn3Encoding,
1546 &feature_flatAddressSpace,1450 &feature_flatAddressSpace,
1547 &feature_dpp,
1548 &feature_inv2piInlineImm,1451 &feature_inv2piInlineImm,
1549 &feature_fp64,
1550 &feature_BitInsts16,1452 &feature_BitInsts16,
1551 &feature_trigReducedRange,
1552 &feature_vgprIndexMode,
1553 &feature_wavefrontsize64,
1554 &feature_gfx8Insts,
1555 &feature_gfx7Gfx8Gfx9Insts,
1556 &feature_mimgR128,
1557 &feature_intClampInsts,
1558 &feature_sMemrealtime,
1559 &feature_sdwaMav,
1560 &feature_sdwaOutModsVopc,
1561 &feature_volcanicIslands,1453 &feature_volcanicIslands,
1562 &feature_xnack,1454 &feature_xnack,
1563 &feature_halfRate64Ops,1455 &feature_halfRate64Ops,
...@@ -1573,28 +1465,28 @@ pub const cpu_gfx802 = Cpu{...@@ -1573,28 +1465,28 @@ pub const cpu_gfx802 = Cpu{
1573 &feature_ldsbankcount32,1465 &feature_ldsbankcount32,
1574 &feature_sgprInitBug,1466 &feature_sgprInitBug,
1575 &feature_unpackedD16Vmem,1467 &feature_unpackedD16Vmem,
1576 &feature_movrel,1468 &feature_fp64,
1469 &feature_sMemrealtime,
1470 &feature_gfx8Insts,
1471 &feature_dpp,
1577 &feature_ciInsts,1472 &feature_ciInsts,
1473 &feature_scalarStores,
1474 &feature_intClampInsts,
1475 &feature_gcn3Encoding,
1476 &feature_gfx7Gfx8Gfx9Insts,
1477 &feature_wavefrontsize64,
1478 &feature_movrel,
1479 &feature_vgprIndexMode,
1480 &feature_trigReducedRange,
1578 &feature_noSramEccSupport,1481 &feature_noSramEccSupport,
1579 &feature_sdwa,1482 &feature_sdwa,
1483 &feature_sdwaMav,
1484 &feature_sdwaOutModsVopc,
1580 &feature_localmemorysize65536,1485 &feature_localmemorysize65536,
1581 &feature_scalarStores,1486 &feature_mimgR128,
1582 &feature_gcn3Encoding,
1583 &feature_flatAddressSpace,1487 &feature_flatAddressSpace,
1584 &feature_dpp,
1585 &feature_inv2piInlineImm,1488 &feature_inv2piInlineImm,
1586 &feature_fp64,
1587 &feature_BitInsts16,1489 &feature_BitInsts16,
1588 &feature_trigReducedRange,
1589 &feature_vgprIndexMode,
1590 &feature_wavefrontsize64,
1591 &feature_gfx8Insts,
1592 &feature_gfx7Gfx8Gfx9Insts,
1593 &feature_mimgR128,
1594 &feature_intClampInsts,
1595 &feature_sMemrealtime,
1596 &feature_sdwaMav,
1597 &feature_sdwaOutModsVopc,
1598 &feature_volcanicIslands,1490 &feature_volcanicIslands,
1599 },1491 },
1600};1492};
...@@ -1607,28 +1499,28 @@ pub const cpu_gfx803 = Cpu{...@@ -1607,28 +1499,28 @@ pub const cpu_gfx803 = Cpu{
1607 &feature_noXnackSupport,1499 &feature_noXnackSupport,
1608 &feature_ldsbankcount32,1500 &feature_ldsbankcount32,
1609 &feature_unpackedD16Vmem,1501 &feature_unpackedD16Vmem,
1610 &feature_movrel,1502 &feature_fp64,
1503 &feature_sMemrealtime,
1504 &feature_gfx8Insts,
1505 &feature_dpp,
1611 &feature_ciInsts,1506 &feature_ciInsts,
1507 &feature_scalarStores,
1508 &feature_intClampInsts,
1509 &feature_gcn3Encoding,
1510 &feature_gfx7Gfx8Gfx9Insts,
1511 &feature_wavefrontsize64,
1512 &feature_movrel,
1513 &feature_vgprIndexMode,
1514 &feature_trigReducedRange,
1612 &feature_noSramEccSupport,1515 &feature_noSramEccSupport,
1613 &feature_sdwa,1516 &feature_sdwa,
1517 &feature_sdwaMav,
1518 &feature_sdwaOutModsVopc,
1614 &feature_localmemorysize65536,1519 &feature_localmemorysize65536,
1615 &feature_scalarStores,1520 &feature_mimgR128,
1616 &feature_gcn3Encoding,
1617 &feature_flatAddressSpace,1521 &feature_flatAddressSpace,
1618 &feature_dpp,
1619 &feature_inv2piInlineImm,1522 &feature_inv2piInlineImm,
1620 &feature_fp64,
1621 &feature_BitInsts16,1523 &feature_BitInsts16,
1622 &feature_trigReducedRange,
1623 &feature_vgprIndexMode,
1624 &feature_wavefrontsize64,
1625 &feature_gfx8Insts,
1626 &feature_gfx7Gfx8Gfx9Insts,
1627 &feature_mimgR128,
1628 &feature_intClampInsts,
1629 &feature_sMemrealtime,
1630 &feature_sdwaMav,
1631 &feature_sdwaOutModsVopc,
1632 &feature_volcanicIslands,1524 &feature_volcanicIslands,
1633 },1525 },
1634};1526};
...@@ -1639,28 +1531,28 @@ pub const cpu_gfx810 = Cpu{...@@ -1639,28 +1531,28 @@ pub const cpu_gfx810 = Cpu{
1639 .subfeatures = &[_]*const Feature {1531 .subfeatures = &[_]*const Feature {
1640 &feature_codeObjectV3,1532 &feature_codeObjectV3,
1641 &feature_ldsbankcount16,1533 &feature_ldsbankcount16,
1642 &feature_movrel,1534 &feature_fp64,
1535 &feature_sMemrealtime,
1536 &feature_gfx8Insts,
1537 &feature_dpp,
1643 &feature_ciInsts,1538 &feature_ciInsts,
1539 &feature_scalarStores,
1540 &feature_intClampInsts,
1541 &feature_gcn3Encoding,
1542 &feature_gfx7Gfx8Gfx9Insts,
1543 &feature_wavefrontsize64,
1544 &feature_movrel,
1545 &feature_vgprIndexMode,
1546 &feature_trigReducedRange,
1644 &feature_noSramEccSupport,1547 &feature_noSramEccSupport,
1645 &feature_sdwa,1548 &feature_sdwa,
1549 &feature_sdwaMav,
1550 &feature_sdwaOutModsVopc,
1646 &feature_localmemorysize65536,1551 &feature_localmemorysize65536,
1647 &feature_scalarStores,1552 &feature_mimgR128,
1648 &feature_gcn3Encoding,
1649 &feature_flatAddressSpace,1553 &feature_flatAddressSpace,
1650 &feature_dpp,
1651 &feature_inv2piInlineImm,1554 &feature_inv2piInlineImm,
1652 &feature_fp64,
1653 &feature_BitInsts16,1555 &feature_BitInsts16,
1654 &feature_trigReducedRange,
1655 &feature_vgprIndexMode,
1656 &feature_wavefrontsize64,
1657 &feature_gfx8Insts,
1658 &feature_gfx7Gfx8Gfx9Insts,
1659 &feature_mimgR128,
1660 &feature_intClampInsts,
1661 &feature_sMemrealtime,
1662 &feature_sdwaMav,
1663 &feature_sdwaOutModsVopc,
1664 &feature_volcanicIslands,1556 &feature_volcanicIslands,
1665 &feature_xnack,1557 &feature_xnack,
1666 },1558 },
...@@ -1673,36 +1565,36 @@ pub const cpu_gfx900 = Cpu{...@@ -1673,36 +1565,36 @@ pub const cpu_gfx900 = Cpu{
1673 &feature_codeObjectV3,1565 &feature_codeObjectV3,
1674 &feature_noSramEccSupport,1566 &feature_noSramEccSupport,
1675 &feature_noXnackSupport,1567 &feature_noXnackSupport,
1676 &feature_gfx9Insts,1568 &feature_fp64,
1569 &feature_vop3p,
1570 &feature_sMemrealtime,
1571 &feature_gfx8Insts,
1572 &feature_dpp,
1573 &feature_sdwaSdst,
1677 &feature_ciInsts,1574 &feature_ciInsts,
1678 &feature_sdwa,1575 &feature_apertureRegs,
1679 &feature_localmemorysize65536,
1680 &feature_scalarStores,1576 &feature_scalarStores,
1681 &feature_sdwaScalar,1577 &feature_intClampInsts,
1682 &feature_sdwaSdst,
1683 &feature_gcn3Encoding,1578 &feature_gcn3Encoding,
1684 &feature_apertureRegs,
1685 &feature_flatScratchInsts,1579 &feature_flatScratchInsts,
1686 &feature_r128A16,1580 &feature_gfx7Gfx8Gfx9Insts,
1687 &feature_flatAddressSpace,
1688 &feature_dpp,
1689 &feature_addNoCarryInsts,
1690 &feature_inv2piInlineImm,
1691 &feature_fp64,
1692 &feature_BitInsts16,
1693 &feature_vgprIndexMode,
1694 &feature_wavefrontsize64,1581 &feature_wavefrontsize64,
1695 &feature_gfx8Insts,
1696 &feature_flatGlobalInsts,
1697 &feature_scalarFlatScratchInsts,
1698 &feature_scalarAtomics,1582 &feature_scalarAtomics,
1699 &feature_flatInstOffsets,1583 &feature_sdwaScalar,
1700 &feature_gfx7Gfx8Gfx9Insts,
1701 &feature_vop3p,
1702 &feature_sMemrealtime,
1703 &feature_intClampInsts,
1704 &feature_fastFmaf,1584 &feature_fastFmaf,
1585 &feature_vgprIndexMode,
1586 &feature_scalarFlatScratchInsts,
1587 &feature_sdwa,
1705 &feature_sdwaOmod,1588 &feature_sdwaOmod,
1589 &feature_localmemorysize65536,
1590 &feature_flatAddressSpace,
1591 &feature_addNoCarryInsts,
1592 &feature_flatInstOffsets,
1593 &feature_inv2piInlineImm,
1594 &feature_gfx9Insts,
1595 &feature_flatGlobalInsts,
1596 &feature_BitInsts16,
1597 &feature_r128A16,
1706 &feature_gfx9,1598 &feature_gfx9,
1707 &feature_ldsbankcount32,1599 &feature_ldsbankcount32,
1708 &feature_madMixInsts,1600 &feature_madMixInsts,
...@@ -1715,36 +1607,36 @@ pub const cpu_gfx902 = Cpu{...@@ -1715,36 +1607,36 @@ pub const cpu_gfx902 = Cpu{
1715 .subfeatures = &[_]*const Feature {1607 .subfeatures = &[_]*const Feature {
1716 &feature_codeObjectV3,1608 &feature_codeObjectV3,
1717 &feature_noSramEccSupport,1609 &feature_noSramEccSupport,
1718 &feature_gfx9Insts,1610 &feature_fp64,
1611 &feature_vop3p,
1612 &feature_sMemrealtime,
1613 &feature_gfx8Insts,
1614 &feature_dpp,
1615 &feature_sdwaSdst,
1719 &feature_ciInsts,1616 &feature_ciInsts,
1720 &feature_sdwa,1617 &feature_apertureRegs,
1721 &feature_localmemorysize65536,
1722 &feature_scalarStores,1618 &feature_scalarStores,
1723 &feature_sdwaScalar,1619 &feature_intClampInsts,
1724 &feature_sdwaSdst,
1725 &feature_gcn3Encoding,1620 &feature_gcn3Encoding,
1726 &feature_apertureRegs,
1727 &feature_flatScratchInsts,1621 &feature_flatScratchInsts,
1728 &feature_r128A16,1622 &feature_gfx7Gfx8Gfx9Insts,
1729 &feature_flatAddressSpace,
1730 &feature_dpp,
1731 &feature_addNoCarryInsts,
1732 &feature_inv2piInlineImm,
1733 &feature_fp64,
1734 &feature_BitInsts16,
1735 &feature_vgprIndexMode,
1736 &feature_wavefrontsize64,1623 &feature_wavefrontsize64,
1737 &feature_gfx8Insts,
1738 &feature_flatGlobalInsts,
1739 &feature_scalarFlatScratchInsts,
1740 &feature_scalarAtomics,1624 &feature_scalarAtomics,
1741 &feature_flatInstOffsets,1625 &feature_sdwaScalar,
1742 &feature_gfx7Gfx8Gfx9Insts,
1743 &feature_vop3p,
1744 &feature_sMemrealtime,
1745 &feature_intClampInsts,
1746 &feature_fastFmaf,1626 &feature_fastFmaf,
1627 &feature_vgprIndexMode,
1628 &feature_scalarFlatScratchInsts,
1629 &feature_sdwa,
1747 &feature_sdwaOmod,1630 &feature_sdwaOmod,
1631 &feature_localmemorysize65536,
1632 &feature_flatAddressSpace,
1633 &feature_addNoCarryInsts,
1634 &feature_flatInstOffsets,
1635 &feature_inv2piInlineImm,
1636 &feature_gfx9Insts,
1637 &feature_flatGlobalInsts,
1638 &feature_BitInsts16,
1639 &feature_r128A16,
1748 &feature_gfx9,1640 &feature_gfx9,
1749 &feature_ldsbankcount32,1641 &feature_ldsbankcount32,
1750 &feature_madMixInsts,1642 &feature_madMixInsts,
...@@ -1760,36 +1652,36 @@ pub const cpu_gfx904 = Cpu{...@@ -1760,36 +1652,36 @@ pub const cpu_gfx904 = Cpu{
1760 &feature_noSramEccSupport,1652 &feature_noSramEccSupport,
1761 &feature_noXnackSupport,1653 &feature_noXnackSupport,
1762 &feature_fmaMixInsts,1654 &feature_fmaMixInsts,
1763 &feature_gfx9Insts,1655 &feature_fp64,
1656 &feature_vop3p,
1657 &feature_sMemrealtime,
1658 &feature_gfx8Insts,
1659 &feature_dpp,
1660 &feature_sdwaSdst,
1764 &feature_ciInsts,1661 &feature_ciInsts,
1765 &feature_sdwa,1662 &feature_apertureRegs,
1766 &feature_localmemorysize65536,
1767 &feature_scalarStores,1663 &feature_scalarStores,
1768 &feature_sdwaScalar,1664 &feature_intClampInsts,
1769 &feature_sdwaSdst,
1770 &feature_gcn3Encoding,1665 &feature_gcn3Encoding,
1771 &feature_apertureRegs,
1772 &feature_flatScratchInsts,1666 &feature_flatScratchInsts,
1773 &feature_r128A16,1667 &feature_gfx7Gfx8Gfx9Insts,
1774 &feature_flatAddressSpace,
1775 &feature_dpp,
1776 &feature_addNoCarryInsts,
1777 &feature_inv2piInlineImm,
1778 &feature_fp64,
1779 &feature_BitInsts16,
1780 &feature_vgprIndexMode,
1781 &feature_wavefrontsize64,1668 &feature_wavefrontsize64,
1782 &feature_gfx8Insts,
1783 &feature_flatGlobalInsts,
1784 &feature_scalarFlatScratchInsts,
1785 &feature_scalarAtomics,1669 &feature_scalarAtomics,
1786 &feature_flatInstOffsets,1670 &feature_sdwaScalar,
1787 &feature_gfx7Gfx8Gfx9Insts,
1788 &feature_vop3p,
1789 &feature_sMemrealtime,
1790 &feature_intClampInsts,
1791 &feature_fastFmaf,1671 &feature_fastFmaf,
1672 &feature_vgprIndexMode,
1673 &feature_scalarFlatScratchInsts,
1674 &feature_sdwa,
1792 &feature_sdwaOmod,1675 &feature_sdwaOmod,
1676 &feature_localmemorysize65536,
1677 &feature_flatAddressSpace,
1678 &feature_addNoCarryInsts,
1679 &feature_flatInstOffsets,
1680 &feature_inv2piInlineImm,
1681 &feature_gfx9Insts,
1682 &feature_flatGlobalInsts,
1683 &feature_BitInsts16,
1684 &feature_r128A16,
1793 &feature_gfx9,1685 &feature_gfx9,
1794 &feature_ldsbankcount32,1686 &feature_ldsbankcount32,
1795 },1687 },
...@@ -1805,36 +1697,36 @@ pub const cpu_gfx906 = Cpu{...@@ -1805,36 +1697,36 @@ pub const cpu_gfx906 = Cpu{
1805 &feature_dot1Insts,1697 &feature_dot1Insts,
1806 &feature_dot2Insts,1698 &feature_dot2Insts,
1807 &feature_fmaMixInsts,1699 &feature_fmaMixInsts,
1808 &feature_gfx9Insts,1700 &feature_fp64,
1701 &feature_vop3p,
1702 &feature_sMemrealtime,
1703 &feature_gfx8Insts,
1704 &feature_dpp,
1705 &feature_sdwaSdst,
1809 &feature_ciInsts,1706 &feature_ciInsts,
1810 &feature_sdwa,1707 &feature_apertureRegs,
1811 &feature_localmemorysize65536,
1812 &feature_scalarStores,1708 &feature_scalarStores,
1813 &feature_sdwaScalar,1709 &feature_intClampInsts,
1814 &feature_sdwaSdst,
1815 &feature_gcn3Encoding,1710 &feature_gcn3Encoding,
1816 &feature_apertureRegs,
1817 &feature_flatScratchInsts,1711 &feature_flatScratchInsts,
1818 &feature_r128A16,1712 &feature_gfx7Gfx8Gfx9Insts,
1819 &feature_flatAddressSpace,
1820 &feature_dpp,
1821 &feature_addNoCarryInsts,
1822 &feature_inv2piInlineImm,
1823 &feature_fp64,
1824 &feature_BitInsts16,
1825 &feature_vgprIndexMode,
1826 &feature_wavefrontsize64,1713 &feature_wavefrontsize64,
1827 &feature_gfx8Insts,
1828 &feature_flatGlobalInsts,
1829 &feature_scalarFlatScratchInsts,
1830 &feature_scalarAtomics,1714 &feature_scalarAtomics,
1831 &feature_flatInstOffsets,1715 &feature_sdwaScalar,
1832 &feature_gfx7Gfx8Gfx9Insts,
1833 &feature_vop3p,
1834 &feature_sMemrealtime,
1835 &feature_intClampInsts,
1836 &feature_fastFmaf,1716 &feature_fastFmaf,
1717 &feature_vgprIndexMode,
1718 &feature_scalarFlatScratchInsts,
1719 &feature_sdwa,
1837 &feature_sdwaOmod,1720 &feature_sdwaOmod,
1721 &feature_localmemorysize65536,
1722 &feature_flatAddressSpace,
1723 &feature_addNoCarryInsts,
1724 &feature_flatInstOffsets,
1725 &feature_inv2piInlineImm,
1726 &feature_gfx9Insts,
1727 &feature_flatGlobalInsts,
1728 &feature_BitInsts16,
1729 &feature_r128A16,
1838 &feature_gfx9,1730 &feature_gfx9,
1839 &feature_ldsbankcount32,1731 &feature_ldsbankcount32,
1840 &feature_halfRate64Ops,1732 &feature_halfRate64Ops,
...@@ -1855,36 +1747,36 @@ pub const cpu_gfx908 = Cpu{...@@ -1855,36 +1747,36 @@ pub const cpu_gfx908 = Cpu{
1855 &feature_dot5Insts,1747 &feature_dot5Insts,
1856 &feature_dot6Insts,1748 &feature_dot6Insts,
1857 &feature_fmaMixInsts,1749 &feature_fmaMixInsts,
1858 &feature_gfx9Insts,1750 &feature_fp64,
1751 &feature_vop3p,
1752 &feature_sMemrealtime,
1753 &feature_gfx8Insts,
1754 &feature_dpp,
1755 &feature_sdwaSdst,
1859 &feature_ciInsts,1756 &feature_ciInsts,
1860 &feature_sdwa,1757 &feature_apertureRegs,
1861 &feature_localmemorysize65536,
1862 &feature_scalarStores,1758 &feature_scalarStores,
1863 &feature_sdwaScalar,1759 &feature_intClampInsts,
1864 &feature_sdwaSdst,
1865 &feature_gcn3Encoding,1760 &feature_gcn3Encoding,
1866 &feature_apertureRegs,
1867 &feature_flatScratchInsts,1761 &feature_flatScratchInsts,
1868 &feature_r128A16,1762 &feature_gfx7Gfx8Gfx9Insts,
1869 &feature_flatAddressSpace,
1870 &feature_dpp,
1871 &feature_addNoCarryInsts,
1872 &feature_inv2piInlineImm,
1873 &feature_fp64,
1874 &feature_BitInsts16,
1875 &feature_vgprIndexMode,
1876 &feature_wavefrontsize64,1763 &feature_wavefrontsize64,
1877 &feature_gfx8Insts,
1878 &feature_flatGlobalInsts,
1879 &feature_scalarFlatScratchInsts,
1880 &feature_scalarAtomics,1764 &feature_scalarAtomics,
1881 &feature_flatInstOffsets,1765 &feature_sdwaScalar,
1882 &feature_gfx7Gfx8Gfx9Insts,
1883 &feature_vop3p,
1884 &feature_sMemrealtime,
1885 &feature_intClampInsts,
1886 &feature_fastFmaf,1766 &feature_fastFmaf,
1767 &feature_vgprIndexMode,
1768 &feature_scalarFlatScratchInsts,
1769 &feature_sdwa,
1887 &feature_sdwaOmod,1770 &feature_sdwaOmod,
1771 &feature_localmemorysize65536,
1772 &feature_flatAddressSpace,
1773 &feature_addNoCarryInsts,
1774 &feature_flatInstOffsets,
1775 &feature_inv2piInlineImm,
1776 &feature_gfx9Insts,
1777 &feature_flatGlobalInsts,
1778 &feature_BitInsts16,
1779 &feature_r128A16,
1888 &feature_gfx9,1780 &feature_gfx9,
1889 &feature_ldsbankcount32,1781 &feature_ldsbankcount32,
1890 &feature_maiInsts,1782 &feature_maiInsts,
...@@ -1900,36 +1792,36 @@ pub const cpu_gfx909 = Cpu{...@@ -1900,36 +1792,36 @@ pub const cpu_gfx909 = Cpu{
1900 .llvm_name = "gfx909",1792 .llvm_name = "gfx909",
1901 .subfeatures = &[_]*const Feature {1793 .subfeatures = &[_]*const Feature {
1902 &feature_codeObjectV3,1794 &feature_codeObjectV3,
1903 &feature_gfx9Insts,1795 &feature_fp64,
1796 &feature_vop3p,
1797 &feature_sMemrealtime,
1798 &feature_gfx8Insts,
1799 &feature_dpp,
1800 &feature_sdwaSdst,
1904 &feature_ciInsts,1801 &feature_ciInsts,
1905 &feature_sdwa,1802 &feature_apertureRegs,
1906 &feature_localmemorysize65536,
1907 &feature_scalarStores,1803 &feature_scalarStores,
1908 &feature_sdwaScalar,1804 &feature_intClampInsts,
1909 &feature_sdwaSdst,
1910 &feature_gcn3Encoding,1805 &feature_gcn3Encoding,
1911 &feature_apertureRegs,
1912 &feature_flatScratchInsts,1806 &feature_flatScratchInsts,
1913 &feature_r128A16,1807 &feature_gfx7Gfx8Gfx9Insts,
1808 &feature_wavefrontsize64,
1809 &feature_scalarAtomics,
1810 &feature_sdwaScalar,
1811 &feature_fastFmaf,
1812 &feature_vgprIndexMode,
1813 &feature_scalarFlatScratchInsts,
1814 &feature_sdwa,
1815 &feature_sdwaOmod,
1816 &feature_localmemorysize65536,
1914 &feature_flatAddressSpace,1817 &feature_flatAddressSpace,
1915 &feature_dpp,
1916 &feature_addNoCarryInsts,1818 &feature_addNoCarryInsts,
1819 &feature_flatInstOffsets,
1917 &feature_inv2piInlineImm,1820 &feature_inv2piInlineImm,
1918 &feature_fp64,1821 &feature_gfx9Insts,
1919 &feature_BitInsts16,
1920 &feature_vgprIndexMode,
1921 &feature_wavefrontsize64,
1922 &feature_gfx8Insts,
1923 &feature_flatGlobalInsts,1822 &feature_flatGlobalInsts,
1924 &feature_scalarFlatScratchInsts,1823 &feature_BitInsts16,
1925 &feature_scalarAtomics,1824 &feature_r128A16,
1926 &feature_flatInstOffsets,
1927 &feature_gfx7Gfx8Gfx9Insts,
1928 &feature_vop3p,
1929 &feature_sMemrealtime,
1930 &feature_intClampInsts,
1931 &feature_fastFmaf,
1932 &feature_sdwaOmod,
1933 &feature_gfx9,1825 &feature_gfx9,
1934 &feature_ldsbankcount32,1826 &feature_ldsbankcount32,
1935 &feature_madMixInsts,1827 &feature_madMixInsts,
...@@ -1944,13 +1836,13 @@ pub const cpu_hainan = Cpu{...@@ -1944,13 +1836,13 @@ pub const cpu_hainan = Cpu{
1944 &feature_codeObjectV3,1836 &feature_codeObjectV3,
1945 &feature_noXnackSupport,1837 &feature_noXnackSupport,
1946 &feature_ldsbankcount32,1838 &feature_ldsbankcount32,
1947 &feature_mimgR128,
1948 &feature_movrel,
1949 &feature_localmemorysize32768,1839 &feature_localmemorysize32768,
1950 &feature_trigReducedRange,1840 &feature_trigReducedRange,
1951 &feature_wavefrontsize64,
1952 &feature_noSramEccSupport,1841 &feature_noSramEccSupport,
1953 &feature_fp64,1842 &feature_fp64,
1843 &feature_movrel,
1844 &feature_mimgR128,
1845 &feature_wavefrontsize64,
1954 &feature_southernIslands,1846 &feature_southernIslands,
1955 },1847 },
1956};1848};
...@@ -1963,16 +1855,16 @@ pub const cpu_hawaii = Cpu{...@@ -1963,16 +1855,16 @@ pub const cpu_hawaii = Cpu{
1963 &feature_noXnackSupport,1855 &feature_noXnackSupport,
1964 &feature_fastFmaf,1856 &feature_fastFmaf,
1965 &feature_ldsbankcount32,1857 &feature_ldsbankcount32,
1966 &feature_gfx7Gfx8Gfx9Insts,
1967 &feature_mimgR128,
1968 &feature_localmemorysize65536,
1969 &feature_movrel,
1970 &feature_trigReducedRange,1858 &feature_trigReducedRange,
1971 &feature_wavefrontsize64,
1972 &feature_flatAddressSpace,
1973 &feature_ciInsts,
1974 &feature_noSramEccSupport,1859 &feature_noSramEccSupport,
1975 &feature_fp64,1860 &feature_fp64,
1861 &feature_movrel,
1862 &feature_ciInsts,
1863 &feature_localmemorysize65536,
1864 &feature_mimgR128,
1865 &feature_wavefrontsize64,
1866 &feature_flatAddressSpace,
1867 &feature_gfx7Gfx8Gfx9Insts,
1976 &feature_seaIslands,1868 &feature_seaIslands,
1977 &feature_halfRate64Ops,1869 &feature_halfRate64Ops,
1978 },1870 },
...@@ -1987,28 +1879,28 @@ pub const cpu_iceland = Cpu{...@@ -1987,28 +1879,28 @@ pub const cpu_iceland = Cpu{
1987 &feature_ldsbankcount32,1879 &feature_ldsbankcount32,
1988 &feature_sgprInitBug,1880 &feature_sgprInitBug,
1989 &feature_unpackedD16Vmem,1881 &feature_unpackedD16Vmem,
1990 &feature_movrel,1882 &feature_fp64,
1883 &feature_sMemrealtime,
1884 &feature_gfx8Insts,
1885 &feature_dpp,
1991 &feature_ciInsts,1886 &feature_ciInsts,
1887 &feature_scalarStores,
1888 &feature_intClampInsts,
1889 &feature_gcn3Encoding,
1890 &feature_gfx7Gfx8Gfx9Insts,
1891 &feature_wavefrontsize64,
1892 &feature_movrel,
1893 &feature_vgprIndexMode,
1894 &feature_trigReducedRange,
1992 &feature_noSramEccSupport,1895 &feature_noSramEccSupport,
1993 &feature_sdwa,1896 &feature_sdwa,
1897 &feature_sdwaMav,
1898 &feature_sdwaOutModsVopc,
1994 &feature_localmemorysize65536,1899 &feature_localmemorysize65536,
1995 &feature_scalarStores,1900 &feature_mimgR128,
1996 &feature_gcn3Encoding,
1997 &feature_flatAddressSpace,1901 &feature_flatAddressSpace,
1998 &feature_dpp,
1999 &feature_inv2piInlineImm,1902 &feature_inv2piInlineImm,
2000 &feature_fp64,
2001 &feature_BitInsts16,1903 &feature_BitInsts16,
2002 &feature_trigReducedRange,
2003 &feature_vgprIndexMode,
2004 &feature_wavefrontsize64,
2005 &feature_gfx8Insts,
2006 &feature_gfx7Gfx8Gfx9Insts,
2007 &feature_mimgR128,
2008 &feature_intClampInsts,
2009 &feature_sMemrealtime,
2010 &feature_sdwaMav,
2011 &feature_sdwaOutModsVopc,
2012 &feature_volcanicIslands,1904 &feature_volcanicIslands,
2013 },1905 },
2014};1906};
...@@ -2020,16 +1912,16 @@ pub const cpu_kabini = Cpu{...@@ -2020,16 +1912,16 @@ pub const cpu_kabini = Cpu{
2020 &feature_codeObjectV3,1912 &feature_codeObjectV3,
2021 &feature_noXnackSupport,1913 &feature_noXnackSupport,
2022 &feature_ldsbankcount16,1914 &feature_ldsbankcount16,
2023 &feature_gfx7Gfx8Gfx9Insts,
2024 &feature_mimgR128,
2025 &feature_localmemorysize65536,
2026 &feature_movrel,
2027 &feature_trigReducedRange,1915 &feature_trigReducedRange,
2028 &feature_wavefrontsize64,
2029 &feature_flatAddressSpace,
2030 &feature_ciInsts,
2031 &feature_noSramEccSupport,1916 &feature_noSramEccSupport,
2032 &feature_fp64,1917 &feature_fp64,
1918 &feature_movrel,
1919 &feature_ciInsts,
1920 &feature_localmemorysize65536,
1921 &feature_mimgR128,
1922 &feature_wavefrontsize64,
1923 &feature_flatAddressSpace,
1924 &feature_gfx7Gfx8Gfx9Insts,
2033 &feature_seaIslands,1925 &feature_seaIslands,
2034 },1926 },
2035};1927};
...@@ -2041,16 +1933,16 @@ pub const cpu_kaveri = Cpu{...@@ -2041,16 +1933,16 @@ pub const cpu_kaveri = Cpu{
2041 &feature_codeObjectV3,1933 &feature_codeObjectV3,
2042 &feature_noXnackSupport,1934 &feature_noXnackSupport,
2043 &feature_ldsbankcount32,1935 &feature_ldsbankcount32,
2044 &feature_gfx7Gfx8Gfx9Insts,
2045 &feature_mimgR128,
2046 &feature_localmemorysize65536,
2047 &feature_movrel,
2048 &feature_trigReducedRange,1936 &feature_trigReducedRange,
2049 &feature_wavefrontsize64,
2050 &feature_flatAddressSpace,
2051 &feature_ciInsts,
2052 &feature_noSramEccSupport,1937 &feature_noSramEccSupport,
2053 &feature_fp64,1938 &feature_fp64,
1939 &feature_movrel,
1940 &feature_ciInsts,
1941 &feature_localmemorysize65536,
1942 &feature_mimgR128,
1943 &feature_wavefrontsize64,
1944 &feature_flatAddressSpace,
1945 &feature_gfx7Gfx8Gfx9Insts,
2054 &feature_seaIslands,1946 &feature_seaIslands,
2055 },1947 },
2056};1948};
...@@ -2062,16 +1954,16 @@ pub const cpu_mullins = Cpu{...@@ -2062,16 +1954,16 @@ pub const cpu_mullins = Cpu{
2062 &feature_codeObjectV3,1954 &feature_codeObjectV3,
2063 &feature_noXnackSupport,1955 &feature_noXnackSupport,
2064 &feature_ldsbankcount16,1956 &feature_ldsbankcount16,
2065 &feature_gfx7Gfx8Gfx9Insts,
2066 &feature_mimgR128,
2067 &feature_localmemorysize65536,
2068 &feature_movrel,
2069 &feature_trigReducedRange,1957 &feature_trigReducedRange,
2070 &feature_wavefrontsize64,
2071 &feature_flatAddressSpace,
2072 &feature_ciInsts,
2073 &feature_noSramEccSupport,1958 &feature_noSramEccSupport,
2074 &feature_fp64,1959 &feature_fp64,
1960 &feature_movrel,
1961 &feature_ciInsts,
1962 &feature_localmemorysize65536,
1963 &feature_mimgR128,
1964 &feature_wavefrontsize64,
1965 &feature_flatAddressSpace,
1966 &feature_gfx7Gfx8Gfx9Insts,
2075 &feature_seaIslands,1967 &feature_seaIslands,
2076 },1968 },
2077};1969};
...@@ -2083,13 +1975,13 @@ pub const cpu_oland = Cpu{...@@ -2083,13 +1975,13 @@ pub const cpu_oland = Cpu{
2083 &feature_codeObjectV3,1975 &feature_codeObjectV3,
2084 &feature_noXnackSupport,1976 &feature_noXnackSupport,
2085 &feature_ldsbankcount32,1977 &feature_ldsbankcount32,
2086 &feature_mimgR128,
2087 &feature_movrel,
2088 &feature_localmemorysize32768,1978 &feature_localmemorysize32768,
2089 &feature_trigReducedRange,1979 &feature_trigReducedRange,
2090 &feature_wavefrontsize64,
2091 &feature_noSramEccSupport,1980 &feature_noSramEccSupport,
2092 &feature_fp64,1981 &feature_fp64,
1982 &feature_movrel,
1983 &feature_mimgR128,
1984 &feature_wavefrontsize64,
2093 &feature_southernIslands,1985 &feature_southernIslands,
2094 },1986 },
2095};1987};
...@@ -2101,13 +1993,13 @@ pub const cpu_pitcairn = Cpu{...@@ -2101,13 +1993,13 @@ pub const cpu_pitcairn = Cpu{
2101 &feature_codeObjectV3,1993 &feature_codeObjectV3,
2102 &feature_noXnackSupport,1994 &feature_noXnackSupport,
2103 &feature_ldsbankcount32,1995 &feature_ldsbankcount32,
2104 &feature_mimgR128,
2105 &feature_movrel,
2106 &feature_localmemorysize32768,1996 &feature_localmemorysize32768,
2107 &feature_trigReducedRange,1997 &feature_trigReducedRange,
2108 &feature_wavefrontsize64,
2109 &feature_noSramEccSupport,1998 &feature_noSramEccSupport,
2110 &feature_fp64,1999 &feature_fp64,
2000 &feature_movrel,
2001 &feature_mimgR128,
2002 &feature_wavefrontsize64,
2111 &feature_southernIslands,2003 &feature_southernIslands,
2112 },2004 },
2113};2005};
...@@ -2120,28 +2012,28 @@ pub const cpu_polaris10 = Cpu{...@@ -2120,28 +2012,28 @@ pub const cpu_polaris10 = Cpu{
2120 &feature_noXnackSupport,2012 &feature_noXnackSupport,
2121 &feature_ldsbankcount32,2013 &feature_ldsbankcount32,
2122 &feature_unpackedD16Vmem,2014 &feature_unpackedD16Vmem,
2123 &feature_movrel,2015 &feature_fp64,
2016 &feature_sMemrealtime,
2017 &feature_gfx8Insts,
2018 &feature_dpp,
2124 &feature_ciInsts,2019 &feature_ciInsts,
2020 &feature_scalarStores,
2021 &feature_intClampInsts,
2022 &feature_gcn3Encoding,
2023 &feature_gfx7Gfx8Gfx9Insts,
2024 &feature_wavefrontsize64,
2025 &feature_movrel,
2026 &feature_vgprIndexMode,
2027 &feature_trigReducedRange,
2125 &feature_noSramEccSupport,2028 &feature_noSramEccSupport,
2126 &feature_sdwa,2029 &feature_sdwa,
2030 &feature_sdwaMav,
2031 &feature_sdwaOutModsVopc,
2127 &feature_localmemorysize65536,2032 &feature_localmemorysize65536,
2128 &feature_scalarStores,2033 &feature_mimgR128,
2129 &feature_gcn3Encoding,
2130 &feature_flatAddressSpace,2034 &feature_flatAddressSpace,
2131 &feature_dpp,
2132 &feature_inv2piInlineImm,2035 &feature_inv2piInlineImm,
2133 &feature_fp64,
2134 &feature_BitInsts16,2036 &feature_BitInsts16,
2135 &feature_trigReducedRange,
2136 &feature_vgprIndexMode,
2137 &feature_wavefrontsize64,
2138 &feature_gfx8Insts,
2139 &feature_gfx7Gfx8Gfx9Insts,
2140 &feature_mimgR128,
2141 &feature_intClampInsts,
2142 &feature_sMemrealtime,
2143 &feature_sdwaMav,
2144 &feature_sdwaOutModsVopc,
2145 &feature_volcanicIslands,2037 &feature_volcanicIslands,
2146 },2038 },
2147};2039};
...@@ -2154,28 +2046,28 @@ pub const cpu_polaris11 = Cpu{...@@ -2154,28 +2046,28 @@ pub const cpu_polaris11 = Cpu{
2154 &feature_noXnackSupport,2046 &feature_noXnackSupport,
2155 &feature_ldsbankcount32,2047 &feature_ldsbankcount32,
2156 &feature_unpackedD16Vmem,2048 &feature_unpackedD16Vmem,
2157 &feature_movrel,2049 &feature_fp64,
2050 &feature_sMemrealtime,
2051 &feature_gfx8Insts,
2052 &feature_dpp,
2158 &feature_ciInsts,2053 &feature_ciInsts,
2054 &feature_scalarStores,
2055 &feature_intClampInsts,
2056 &feature_gcn3Encoding,
2057 &feature_gfx7Gfx8Gfx9Insts,
2058 &feature_wavefrontsize64,
2059 &feature_movrel,
2060 &feature_vgprIndexMode,
2061 &feature_trigReducedRange,
2159 &feature_noSramEccSupport,2062 &feature_noSramEccSupport,
2160 &feature_sdwa,2063 &feature_sdwa,
2064 &feature_sdwaMav,
2065 &feature_sdwaOutModsVopc,
2161 &feature_localmemorysize65536,2066 &feature_localmemorysize65536,
2162 &feature_scalarStores,2067 &feature_mimgR128,
2163 &feature_gcn3Encoding,
2164 &feature_flatAddressSpace,2068 &feature_flatAddressSpace,
2165 &feature_dpp,
2166 &feature_inv2piInlineImm,2069 &feature_inv2piInlineImm,
2167 &feature_fp64,
2168 &feature_BitInsts16,2070 &feature_BitInsts16,
2169 &feature_trigReducedRange,
2170 &feature_vgprIndexMode,
2171 &feature_wavefrontsize64,
2172 &feature_gfx8Insts,
2173 &feature_gfx7Gfx8Gfx9Insts,
2174 &feature_mimgR128,
2175 &feature_intClampInsts,
2176 &feature_sMemrealtime,
2177 &feature_sdwaMav,
2178 &feature_sdwaOutModsVopc,
2179 &feature_volcanicIslands,2071 &feature_volcanicIslands,
2180 },2072 },
2181};2073};
...@@ -2186,28 +2078,28 @@ pub const cpu_stoney = Cpu{...@@ -2186,28 +2078,28 @@ pub const cpu_stoney = Cpu{
2186 .subfeatures = &[_]*const Feature {2078 .subfeatures = &[_]*const Feature {
2187 &feature_codeObjectV3,2079 &feature_codeObjectV3,
2188 &feature_ldsbankcount16,2080 &feature_ldsbankcount16,
2189 &feature_movrel,2081 &feature_fp64,
2082 &feature_sMemrealtime,
2083 &feature_gfx8Insts,
2084 &feature_dpp,
2190 &feature_ciInsts,2085 &feature_ciInsts,
2086 &feature_scalarStores,
2087 &feature_intClampInsts,
2088 &feature_gcn3Encoding,
2089 &feature_gfx7Gfx8Gfx9Insts,
2090 &feature_wavefrontsize64,
2091 &feature_movrel,
2092 &feature_vgprIndexMode,
2093 &feature_trigReducedRange,
2191 &feature_noSramEccSupport,2094 &feature_noSramEccSupport,
2192 &feature_sdwa,2095 &feature_sdwa,
2096 &feature_sdwaMav,
2097 &feature_sdwaOutModsVopc,
2193 &feature_localmemorysize65536,2098 &feature_localmemorysize65536,
2194 &feature_scalarStores,2099 &feature_mimgR128,
2195 &feature_gcn3Encoding,
2196 &feature_flatAddressSpace,2100 &feature_flatAddressSpace,
2197 &feature_dpp,
2198 &feature_inv2piInlineImm,2101 &feature_inv2piInlineImm,
2199 &feature_fp64,
2200 &feature_BitInsts16,2102 &feature_BitInsts16,
2201 &feature_trigReducedRange,
2202 &feature_vgprIndexMode,
2203 &feature_wavefrontsize64,
2204 &feature_gfx8Insts,
2205 &feature_gfx7Gfx8Gfx9Insts,
2206 &feature_mimgR128,
2207 &feature_intClampInsts,
2208 &feature_sMemrealtime,
2209 &feature_sdwaMav,
2210 &feature_sdwaOutModsVopc,
2211 &feature_volcanicIslands,2103 &feature_volcanicIslands,
2212 &feature_xnack,2104 &feature_xnack,
2213 },2105 },
...@@ -2221,13 +2113,13 @@ pub const cpu_tahiti = Cpu{...@@ -2221,13 +2113,13 @@ pub const cpu_tahiti = Cpu{
2221 &feature_noXnackSupport,2113 &feature_noXnackSupport,
2222 &feature_fastFmaf,2114 &feature_fastFmaf,
2223 &feature_ldsbankcount32,2115 &feature_ldsbankcount32,
2224 &feature_mimgR128,
2225 &feature_movrel,
2226 &feature_localmemorysize32768,2116 &feature_localmemorysize32768,
2227 &feature_trigReducedRange,2117 &feature_trigReducedRange,
2228 &feature_wavefrontsize64,
2229 &feature_noSramEccSupport,2118 &feature_noSramEccSupport,
2230 &feature_fp64,2119 &feature_fp64,
2120 &feature_movrel,
2121 &feature_mimgR128,
2122 &feature_wavefrontsize64,
2231 &feature_southernIslands,2123 &feature_southernIslands,
2232 &feature_halfRate64Ops,2124 &feature_halfRate64Ops,
2233 },2125 },
...@@ -2242,28 +2134,28 @@ pub const cpu_tonga = Cpu{...@@ -2242,28 +2134,28 @@ pub const cpu_tonga = Cpu{
2242 &feature_ldsbankcount32,2134 &feature_ldsbankcount32,
2243 &feature_sgprInitBug,2135 &feature_sgprInitBug,
2244 &feature_unpackedD16Vmem,2136 &feature_unpackedD16Vmem,
2245 &feature_movrel,2137 &feature_fp64,
2138 &feature_sMemrealtime,
2139 &feature_gfx8Insts,
2140 &feature_dpp,
2246 &feature_ciInsts,2141 &feature_ciInsts,
2142 &feature_scalarStores,
2143 &feature_intClampInsts,
2144 &feature_gcn3Encoding,
2145 &feature_gfx7Gfx8Gfx9Insts,
2146 &feature_wavefrontsize64,
2147 &feature_movrel,
2148 &feature_vgprIndexMode,
2149 &feature_trigReducedRange,
2247 &feature_noSramEccSupport,2150 &feature_noSramEccSupport,
2248 &feature_sdwa,2151 &feature_sdwa,
2152 &feature_sdwaMav,
2153 &feature_sdwaOutModsVopc,
2249 &feature_localmemorysize65536,2154 &feature_localmemorysize65536,
2250 &feature_scalarStores,2155 &feature_mimgR128,
2251 &feature_gcn3Encoding,
2252 &feature_flatAddressSpace,2156 &feature_flatAddressSpace,
2253 &feature_dpp,
2254 &feature_inv2piInlineImm,2157 &feature_inv2piInlineImm,
2255 &feature_fp64,
2256 &feature_BitInsts16,2158 &feature_BitInsts16,
2257 &feature_trigReducedRange,
2258 &feature_vgprIndexMode,
2259 &feature_wavefrontsize64,
2260 &feature_gfx8Insts,
2261 &feature_gfx7Gfx8Gfx9Insts,
2262 &feature_mimgR128,
2263 &feature_intClampInsts,
2264 &feature_sMemrealtime,
2265 &feature_sdwaMav,
2266 &feature_sdwaOutModsVopc,
2267 &feature_volcanicIslands,2159 &feature_volcanicIslands,
2268 },2160 },
2269};2161};
...@@ -2275,13 +2167,13 @@ pub const cpu_verde = Cpu{...@@ -2275,13 +2167,13 @@ pub const cpu_verde = Cpu{
2275 &feature_codeObjectV3,2167 &feature_codeObjectV3,
2276 &feature_noXnackSupport,2168 &feature_noXnackSupport,
2277 &feature_ldsbankcount32,2169 &feature_ldsbankcount32,
2278 &feature_mimgR128,
2279 &feature_movrel,
2280 &feature_localmemorysize32768,2170 &feature_localmemorysize32768,
2281 &feature_trigReducedRange,2171 &feature_trigReducedRange,
2282 &feature_wavefrontsize64,
2283 &feature_noSramEccSupport,2172 &feature_noSramEccSupport,
2284 &feature_fp64,2173 &feature_fp64,
2174 &feature_movrel,
2175 &feature_mimgR128,
2176 &feature_wavefrontsize64,
2285 &feature_southernIslands,2177 &feature_southernIslands,
2286 },2178 },
2287};2179};
lib/std/target/arm.zig+568-743
...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_armv2 = Feature{4pub const feature_armv2 = Feature{
5 .name = "armv2",5 .name = "armv2",
6 .description = "ARMv2 architecture",6 .description = "ARMv2 architecture",
7 .llvm_name = "armv2",
8 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
9 },8 },
10};9};
...@@ -12,7 +11,6 @@ pub const feature_armv2 = Feature{...@@ -12,7 +11,6 @@ pub const feature_armv2 = Feature{
12pub const feature_armv2a = Feature{11pub const feature_armv2a = Feature{
13 .name = "armv2a",12 .name = "armv2a",
14 .description = "ARMv2a architecture",13 .description = "ARMv2a architecture",
15 .llvm_name = "armv2a",
16 .subfeatures = &[_]*const Feature {14 .subfeatures = &[_]*const Feature {
17 },15 },
18};16};
...@@ -20,7 +18,6 @@ pub const feature_armv2a = Feature{...@@ -20,7 +18,6 @@ pub const feature_armv2a = Feature{
20pub const feature_armv3 = Feature{18pub const feature_armv3 = Feature{
21 .name = "armv3",19 .name = "armv3",
22 .description = "ARMv3 architecture",20 .description = "ARMv3 architecture",
23 .llvm_name = "armv3",
24 .subfeatures = &[_]*const Feature {21 .subfeatures = &[_]*const Feature {
25 },22 },
26};23};
...@@ -28,7 +25,6 @@ pub const feature_armv3 = Feature{...@@ -28,7 +25,6 @@ pub const feature_armv3 = Feature{
28pub const feature_armv3m = Feature{25pub const feature_armv3m = Feature{
29 .name = "armv3m",26 .name = "armv3m",
30 .description = "ARMv3m architecture",27 .description = "ARMv3m architecture",
31 .llvm_name = "armv3m",
32 .subfeatures = &[_]*const Feature {28 .subfeatures = &[_]*const Feature {
33 },29 },
34};30};
...@@ -36,7 +32,6 @@ pub const feature_armv3m = Feature{...@@ -36,7 +32,6 @@ pub const feature_armv3m = Feature{
36pub const feature_armv4 = Feature{32pub const feature_armv4 = Feature{
37 .name = "armv4",33 .name = "armv4",
38 .description = "ARMv4 architecture",34 .description = "ARMv4 architecture",
39 .llvm_name = "armv4",
40 .subfeatures = &[_]*const Feature {35 .subfeatures = &[_]*const Feature {
41 },36 },
42};37};
...@@ -44,7 +39,6 @@ pub const feature_armv4 = Feature{...@@ -44,7 +39,6 @@ pub const feature_armv4 = Feature{
44pub const feature_armv4t = Feature{39pub const feature_armv4t = Feature{
45 .name = "armv4t",40 .name = "armv4t",
46 .description = "ARMv4t architecture",41 .description = "ARMv4t architecture",
47 .llvm_name = "armv4t",
48 .subfeatures = &[_]*const Feature {42 .subfeatures = &[_]*const Feature {
49 &feature_v4t,43 &feature_v4t,
50 },44 },
...@@ -53,7 +47,6 @@ pub const feature_armv4t = Feature{...@@ -53,7 +47,6 @@ pub const feature_armv4t = Feature{
53pub const feature_armv5t = Feature{47pub const feature_armv5t = Feature{
54 .name = "armv5t",48 .name = "armv5t",
55 .description = "ARMv5t architecture",49 .description = "ARMv5t architecture",
56 .llvm_name = "armv5t",
57 .subfeatures = &[_]*const Feature {50 .subfeatures = &[_]*const Feature {
58 &feature_v4t,51 &feature_v4t,
59 },52 },
...@@ -62,7 +55,6 @@ pub const feature_armv5t = Feature{...@@ -62,7 +55,6 @@ pub const feature_armv5t = Feature{
62pub const feature_armv5te = Feature{55pub const feature_armv5te = Feature{
63 .name = "armv5te",56 .name = "armv5te",
64 .description = "ARMv5te architecture",57 .description = "ARMv5te architecture",
65 .llvm_name = "armv5te",
66 .subfeatures = &[_]*const Feature {58 .subfeatures = &[_]*const Feature {
67 &feature_v4t,59 &feature_v4t,
68 },60 },
...@@ -71,7 +63,6 @@ pub const feature_armv5te = Feature{...@@ -71,7 +63,6 @@ pub const feature_armv5te = Feature{
71pub const feature_armv5tej = Feature{63pub const feature_armv5tej = Feature{
72 .name = "armv5tej",64 .name = "armv5tej",
73 .description = "ARMv5tej architecture",65 .description = "ARMv5tej architecture",
74 .llvm_name = "armv5tej",
75 .subfeatures = &[_]*const Feature {66 .subfeatures = &[_]*const Feature {
76 &feature_v4t,67 &feature_v4t,
77 },68 },
...@@ -80,7 +71,6 @@ pub const feature_armv5tej = Feature{...@@ -80,7 +71,6 @@ pub const feature_armv5tej = Feature{
80pub const feature_armv6 = Feature{71pub const feature_armv6 = Feature{
81 .name = "armv6",72 .name = "armv6",
82 .description = "ARMv6 architecture",73 .description = "ARMv6 architecture",
83 .llvm_name = "armv6",
84 .subfeatures = &[_]*const Feature {74 .subfeatures = &[_]*const Feature {
85 &feature_v4t,75 &feature_v4t,
86 &feature_dsp,76 &feature_dsp,
...@@ -90,7 +80,6 @@ pub const feature_armv6 = Feature{...@@ -90,7 +80,6 @@ pub const feature_armv6 = Feature{
90pub const feature_armv6j = Feature{80pub const feature_armv6j = Feature{
91 .name = "armv6j",81 .name = "armv6j",
92 .description = "ARMv7a architecture",82 .description = "ARMv7a architecture",
93 .llvm_name = "armv6j",
94 .subfeatures = &[_]*const Feature {83 .subfeatures = &[_]*const Feature {
95 &feature_v4t,84 &feature_v4t,
96 &feature_dsp,85 &feature_dsp,
...@@ -100,7 +89,6 @@ pub const feature_armv6j = Feature{...@@ -100,7 +89,6 @@ pub const feature_armv6j = Feature{
100pub const feature_armv6k = Feature{89pub const feature_armv6k = Feature{
101 .name = "armv6k",90 .name = "armv6k",
102 .description = "ARMv6k architecture",91 .description = "ARMv6k architecture",
103 .llvm_name = "armv6k",
104 .subfeatures = &[_]*const Feature {92 .subfeatures = &[_]*const Feature {
105 &feature_v4t,93 &feature_v4t,
106 },94 },
...@@ -109,7 +97,6 @@ pub const feature_armv6k = Feature{...@@ -109,7 +97,6 @@ pub const feature_armv6k = Feature{
109pub const feature_armv6kz = Feature{97pub const feature_armv6kz = Feature{
110 .name = "armv6kz",98 .name = "armv6kz",
111 .description = "ARMv6kz architecture",99 .description = "ARMv6kz architecture",
112 .llvm_name = "armv6kz",
113 .subfeatures = &[_]*const Feature {100 .subfeatures = &[_]*const Feature {
114 &feature_v4t,101 &feature_v4t,
115 &feature_trustzone,102 &feature_trustzone,
...@@ -119,400 +106,379 @@ pub const feature_armv6kz = Feature{...@@ -119,400 +106,379 @@ pub const feature_armv6kz = Feature{
119pub const feature_armv6M = Feature{106pub const feature_armv6M = Feature{
120 .name = "armv6-m",107 .name = "armv6-m",
121 .description = "ARMv6m architecture",108 .description = "ARMv6m architecture",
122 .llvm_name = "armv6-m",
123 .subfeatures = &[_]*const Feature {109 .subfeatures = &[_]*const Feature {
124 &feature_db,110 &feature_db,
125 &feature_thumbMode,
126 &feature_mclass,111 &feature_mclass,
112 &feature_thumbMode,
113 &feature_strictAlign,
127 &feature_noarm,114 &feature_noarm,
128 &feature_v4t,115 &feature_v4t,
129 &feature_strictAlign,
130 },116 },
131};117};
132118
133pub const feature_armv6sM = Feature{119pub const feature_armv6sM = Feature{
134 .name = "armv6s-m",120 .name = "armv6s-m",
135 .description = "ARMv6sm architecture",121 .description = "ARMv6sm architecture",
136 .llvm_name = "armv6s-m",
137 .subfeatures = &[_]*const Feature {122 .subfeatures = &[_]*const Feature {
138 &feature_db,123 &feature_db,
139 &feature_thumbMode,
140 &feature_mclass,124 &feature_mclass,
125 &feature_thumbMode,
126 &feature_strictAlign,
141 &feature_noarm,127 &feature_noarm,
142 &feature_v4t,128 &feature_v4t,
143 &feature_strictAlign,
144 },129 },
145};130};
146131
147pub const feature_armv6t2 = Feature{132pub const feature_armv6t2 = Feature{
148 .name = "armv6t2",133 .name = "armv6t2",
149 .description = "ARMv6t2 architecture",134 .description = "ARMv6t2 architecture",
150 .llvm_name = "armv6t2",
151 .subfeatures = &[_]*const Feature {135 .subfeatures = &[_]*const Feature {
152 &feature_v4t,
153 &feature_dsp,
154 &feature_thumb2,136 &feature_thumb2,
137 &feature_dsp,
138 &feature_v4t,
155 },139 },
156};140};
157141
158pub const feature_armv7A = Feature{142pub const feature_armv7A = Feature{
159 .name = "armv7-a",143 .name = "armv7-a",
160 .description = "ARMv7a architecture",144 .description = "ARMv7a architecture",
161 .llvm_name = "armv7-a",
162 .subfeatures = &[_]*const Feature {145 .subfeatures = &[_]*const Feature {
163 &feature_perfmon,
164 &feature_v7clrex,
165 &feature_db,146 &feature_db,
147 &feature_dsp,
148 &feature_fpregs,
166 &feature_thumb2,149 &feature_thumb2,
150 &feature_v7clrex,
151 &feature_aclass,
152 &feature_perfmon,
167 &feature_v4t,153 &feature_v4t,
168 &feature_d32,154 &feature_d32,
169 &feature_aclass,
170 &feature_dsp,
171 &feature_fpregs,
172 },155 },
173};156};
174157
175pub const feature_armv7eM = Feature{158pub const feature_armv7eM = Feature{
176 .name = "armv7e-m",159 .name = "armv7e-m",
177 .description = "ARMv7em architecture",160 .description = "ARMv7em architecture",
178 .llvm_name = "armv7e-m",
179 .subfeatures = &[_]*const Feature {161 .subfeatures = &[_]*const Feature {
180 &feature_perfmon,
181 &feature_v7clrex,
182 &feature_db,162 &feature_db,
183 &feature_thumb2,
184 &feature_mclass,163 &feature_mclass,
164 &feature_hwdiv,
165 &feature_dsp,
185 &feature_thumbMode,166 &feature_thumbMode,
167 &feature_thumb2,
168 &feature_v7clrex,
169 &feature_perfmon,
186 &feature_noarm,170 &feature_noarm,
187 &feature_v4t,171 &feature_v4t,
188 &feature_dsp,
189 &feature_hwdiv,
190 },172 },
191};173};
192174
193pub const feature_armv7k = Feature{175pub const feature_armv7k = Feature{
194 .name = "armv7k",176 .name = "armv7k",
195 .description = "ARMv7a architecture",177 .description = "ARMv7a architecture",
196 .llvm_name = "armv7k",
197 .subfeatures = &[_]*const Feature {178 .subfeatures = &[_]*const Feature {
198 &feature_v7clrex,
199 &feature_db,179 &feature_db,
200 &feature_thumb2,
201 &feature_v4t,
202 &feature_d32,
203 &feature_dsp,180 &feature_dsp,
181 &feature_fpregs,
182 &feature_thumb2,
183 &feature_v7clrex,
204 &feature_aclass,184 &feature_aclass,
205 &feature_perfmon,185 &feature_perfmon,
206 &feature_fpregs,186 &feature_v4t,
187 &feature_d32,
207 },188 },
208};189};
209190
210pub const feature_armv7M = Feature{191pub const feature_armv7M = Feature{
211 .name = "armv7-m",192 .name = "armv7-m",
212 .description = "ARMv7m architecture",193 .description = "ARMv7m architecture",
213 .llvm_name = "armv7-m",
214 .subfeatures = &[_]*const Feature {194 .subfeatures = &[_]*const Feature {
215 &feature_v7clrex,
216 &feature_db,195 &feature_db,
217 &feature_thumb2,
218 &feature_mclass,196 &feature_mclass,
197 &feature_hwdiv,
219 &feature_thumbMode,198 &feature_thumbMode,
199 &feature_thumb2,
200 &feature_v7clrex,
201 &feature_perfmon,
220 &feature_noarm,202 &feature_noarm,
221 &feature_v4t,203 &feature_v4t,
222 &feature_perfmon,
223 &feature_hwdiv,
224 },204 },
225};205};
226206
227pub const feature_armv7R = Feature{207pub const feature_armv7R = Feature{
228 .name = "armv7-r",208 .name = "armv7-r",
229 .description = "ARMv7r architecture",209 .description = "ARMv7r architecture",
230 .llvm_name = "armv7-r",
231 .subfeatures = &[_]*const Feature {210 .subfeatures = &[_]*const Feature {
232 &feature_perfmon,
233 &feature_v7clrex,
234 &feature_db,211 &feature_db,
235 &feature_thumb2,
236 &feature_v4t,
237 &feature_dsp,212 &feature_dsp,
238 &feature_hwdiv,213 &feature_hwdiv,
239 &feature_rclass,214 &feature_rclass,
215 &feature_thumb2,
216 &feature_v7clrex,
217 &feature_perfmon,
218 &feature_v4t,
240 },219 },
241};220};
242221
243pub const feature_armv7s = Feature{222pub const feature_armv7s = Feature{
244 .name = "armv7s",223 .name = "armv7s",
245 .description = "ARMv7a architecture",224 .description = "ARMv7a architecture",
246 .llvm_name = "armv7s",
247 .subfeatures = &[_]*const Feature {225 .subfeatures = &[_]*const Feature {
248 &feature_v7clrex,
249 &feature_db,226 &feature_db,
250 &feature_thumb2,
251 &feature_v4t,
252 &feature_d32,
253 &feature_dsp,227 &feature_dsp,
228 &feature_fpregs,
229 &feature_thumb2,
230 &feature_v7clrex,
254 &feature_aclass,231 &feature_aclass,
255 &feature_perfmon,232 &feature_perfmon,
256 &feature_fpregs,233 &feature_v4t,
234 &feature_d32,
257 },235 },
258};236};
259237
260pub const feature_armv7ve = Feature{238pub const feature_armv7ve = Feature{
261 .name = "armv7ve",239 .name = "armv7ve",
262 .description = "ARMv7ve architecture",240 .description = "ARMv7ve architecture",
263 .llvm_name = "armv7ve",
264 .subfeatures = &[_]*const Feature {241 .subfeatures = &[_]*const Feature {
265 &feature_mp,242 &feature_db,
266 &feature_perfmon,243 &feature_dsp,
244 &feature_hwdivArm,
267 &feature_hwdiv,245 &feature_hwdiv,
268 &feature_trustzone,246 &feature_trustzone,
269 &feature_v7clrex,247 &feature_fpregs,
270 &feature_db,
271 &feature_thumb2,248 &feature_thumb2,
249 &feature_v7clrex,
250 &feature_aclass,
251 &feature_mp,
252 &feature_perfmon,
272 &feature_v4t,253 &feature_v4t,
273 &feature_d32,254 &feature_d32,
274 &feature_aclass,
275 &feature_hwdivArm,
276 &feature_dsp,
277 &feature_fpregs,
278 },255 },
279};256};
280257
281pub const feature_armv8A = Feature{258pub const feature_armv8A = Feature{
282 .name = "armv8-a",259 .name = "armv8-a",
283 .description = "ARMv8a architecture",260 .description = "ARMv8a architecture",
284 .llvm_name = "armv8-a",
285 .subfeatures = &[_]*const Feature {261 .subfeatures = &[_]*const Feature {
286 &feature_mp,262 &feature_db,
287 &feature_acquireRelease,263 &feature_dsp,
288 &feature_perfmon,264 &feature_hwdivArm,
289 &feature_hwdiv,265 &feature_hwdiv,
290 &feature_trustzone,266 &feature_trustzone,
291 &feature_v7clrex,267 &feature_fpregs,
292 &feature_db,
293 &feature_thumb2,
294 &feature_fp16,
295 &feature_v4t,268 &feature_v4t,
296 &feature_d32,269 &feature_thumb2,
270 &feature_v7clrex,
297 &feature_aclass,271 &feature_aclass,
298 &feature_hwdivArm,
299 &feature_crc,272 &feature_crc,
300 &feature_dsp,273 &feature_mp,
301 &feature_fpregs,274 &feature_acquireRelease,
275 &feature_fp16,
276 &feature_perfmon,
277 &feature_d32,
302 },278 },
303};279};
304280
305pub const feature_armv8Mbase = Feature{281pub const feature_armv8Mbase = Feature{
306 .name = "armv8-m.base",282 .name = "armv8-m.base",
307 .description = "ARMv8mBaseline architecture",283 .description = "ARMv8mBaseline architecture",
308 .llvm_name = "armv8-m.base",
309 .subfeatures = &[_]*const Feature {284 .subfeatures = &[_]*const Feature {
310 &feature_acquireRelease,
311 &feature_v7clrex,
312 &feature_db,285 &feature_db,
313 &feature_msecext8,
314 &feature_thumbMode,
315 &feature_mclass,286 &feature_mclass,
287 &feature_hwdiv,
288 &feature_thumbMode,
289 &feature_strictAlign,
290 &feature_v7clrex,
291 &feature_msecext8,
292 &feature_acquireRelease,
316 &feature_noarm,293 &feature_noarm,
317 &feature_v4t,294 &feature_v4t,
318 &feature_strictAlign,
319 &feature_hwdiv,
320 },295 },
321};296};
322297
323pub const feature_armv8Mmain = Feature{298pub const feature_armv8Mmain = Feature{
324 .name = "armv8-m.main",299 .name = "armv8-m.main",
325 .description = "ARMv8mMainline architecture",300 .description = "ARMv8mMainline architecture",
326 .llvm_name = "armv8-m.main",
327 .subfeatures = &[_]*const Feature {301 .subfeatures = &[_]*const Feature {
328 &feature_acquireRelease,
329 &feature_v7clrex,
330 &feature_db,302 &feature_db,
331 &feature_msecext8,
332 &feature_thumb2,
333 &feature_mclass,303 &feature_mclass,
304 &feature_hwdiv,
334 &feature_thumbMode,305 &feature_thumbMode,
306 &feature_thumb2,
307 &feature_v7clrex,
308 &feature_msecext8,
309 &feature_acquireRelease,
310 &feature_perfmon,
335 &feature_noarm,311 &feature_noarm,
336 &feature_v4t,312 &feature_v4t,
337 &feature_perfmon,
338 &feature_hwdiv,
339 },313 },
340};314};
341315
342pub const feature_armv8R = Feature{316pub const feature_armv8R = Feature{
343 .name = "armv8-r",317 .name = "armv8-r",
344 .description = "ARMv8r architecture",318 .description = "ARMv8r architecture",
345 .llvm_name = "armv8-r",
346 .subfeatures = &[_]*const Feature {319 .subfeatures = &[_]*const Feature {
347 &feature_mp,
348 &feature_acquireRelease,
349 &feature_perfmon,
350 &feature_hwdiv,
351 &feature_v7clrex,
352 &feature_db,320 &feature_db,
353 &feature_thumb2,321 &feature_dsp,
354 &feature_fp16,322 &feature_hwdivArm,
323 &feature_hwdiv,
324 &feature_rclass,
325 &feature_fpregs,
355 &feature_v4t,326 &feature_v4t,
356 &feature_d32,
357 &feature_dfb,327 &feature_dfb,
358 &feature_hwdivArm,328 &feature_thumb2,
329 &feature_v7clrex,
330 &feature_perfmon,
359 &feature_crc,331 &feature_crc,
360 &feature_dsp,332 &feature_mp,
361 &feature_fpregs,333 &feature_acquireRelease,
362 &feature_rclass,334 &feature_fp16,
335 &feature_d32,
363 },336 },
364};337};
365338
366pub const feature_armv81A = Feature{339pub const feature_armv81A = Feature{
367 .name = "armv8.1-a",340 .name = "armv8.1-a",
368 .description = "ARMv81a architecture",341 .description = "ARMv81a architecture",
369 .llvm_name = "armv8.1-a",
370 .subfeatures = &[_]*const Feature {342 .subfeatures = &[_]*const Feature {
371 &feature_mp,343 &feature_db,
372 &feature_acquireRelease,344 &feature_dsp,
373 &feature_perfmon,345 &feature_hwdivArm,
374 &feature_hwdiv,346 &feature_hwdiv,
375 &feature_trustzone,347 &feature_trustzone,
376 &feature_v7clrex,348 &feature_fpregs,
377 &feature_db,
378 &feature_thumb2,
379 &feature_fp16,
380 &feature_v4t,349 &feature_v4t,
381 &feature_d32,350 &feature_thumb2,
351 &feature_v7clrex,
382 &feature_aclass,352 &feature_aclass,
383 &feature_hwdivArm,
384 &feature_crc,353 &feature_crc,
385 &feature_dsp,354 &feature_mp,
386 &feature_fpregs,355 &feature_acquireRelease,
356 &feature_fp16,
357 &feature_perfmon,
358 &feature_d32,
387 },359 },
388};360};
389361
390pub const feature_armv81Mmain = Feature{362pub const feature_armv81Mmain = Feature{
391 .name = "armv8.1-m.main",363 .name = "armv8.1-m.main",
392 .description = "ARMv81mMainline architecture",364 .description = "ARMv81mMainline architecture",
393 .llvm_name = "armv8.1-m.main",
394 .subfeatures = &[_]*const Feature {365 .subfeatures = &[_]*const Feature {
395 &feature_acquireRelease,
396 &feature_lob,
397 &feature_v7clrex,
398 &feature_db,366 &feature_db,
399 &feature_msecext8,
400 &feature_thumb2,
401 &feature_mclass,367 &feature_mclass,
368 &feature_hwdiv,
369 &feature_lob,
370 &feature_thumbMode,
371 &feature_thumb2,
402 &feature_ras,372 &feature_ras,
373 &feature_v7clrex,
374 &feature_msecext8,
375 &feature_acquireRelease,
376 &feature_perfmon,
403 &feature_noarm,377 &feature_noarm,
404 &feature_v4t,378 &feature_v4t,
405 &feature_thumbMode,
406 &feature_perfmon,
407 &feature_hwdiv,
408 },379 },
409};380};
410381
411pub const feature_armv82A = Feature{382pub const feature_armv82A = Feature{
412 .name = "armv8.2-a",383 .name = "armv8.2-a",
413 .description = "ARMv82a architecture",384 .description = "ARMv82a architecture",
414 .llvm_name = "armv8.2-a",
415 .subfeatures = &[_]*const Feature {385 .subfeatures = &[_]*const Feature {
416 &feature_mp,386 &feature_db,
417 &feature_acquireRelease,387 &feature_dsp,
418 &feature_perfmon,388 &feature_hwdivArm,
419 &feature_hwdiv,389 &feature_hwdiv,
420 &feature_trustzone,390 &feature_trustzone,
421 &feature_v7clrex,391 &feature_fpregs,
422 &feature_db,392 &feature_v4t,
423 &feature_thumb2,393 &feature_thumb2,
424 &feature_ras,394 &feature_ras,
425 &feature_fp16,395 &feature_v7clrex,
426 &feature_v4t,
427 &feature_d32,
428 &feature_aclass,396 &feature_aclass,
429 &feature_hwdivArm,
430 &feature_crc,397 &feature_crc,
431 &feature_dsp,398 &feature_mp,
432 &feature_fpregs,399 &feature_acquireRelease,
400 &feature_fp16,
401 &feature_perfmon,
402 &feature_d32,
433 },403 },
434};404};
435405
436pub const feature_armv83A = Feature{406pub const feature_armv83A = Feature{
437 .name = "armv8.3-a",407 .name = "armv8.3-a",
438 .description = "ARMv83a architecture",408 .description = "ARMv83a architecture",
439 .llvm_name = "armv8.3-a",
440 .subfeatures = &[_]*const Feature {409 .subfeatures = &[_]*const Feature {
441 &feature_mp,410 &feature_db,
442 &feature_acquireRelease,411 &feature_dsp,
443 &feature_perfmon,412 &feature_hwdivArm,
444 &feature_hwdiv,413 &feature_hwdiv,
445 &feature_trustzone,414 &feature_trustzone,
446 &feature_v7clrex,415 &feature_fpregs,
447 &feature_db,416 &feature_v4t,
448 &feature_thumb2,417 &feature_thumb2,
449 &feature_ras,418 &feature_ras,
450 &feature_fp16,419 &feature_v7clrex,
451 &feature_v4t,
452 &feature_d32,
453 &feature_aclass,420 &feature_aclass,
454 &feature_hwdivArm,
455 &feature_crc,421 &feature_crc,
456 &feature_dsp,422 &feature_mp,
457 &feature_fpregs,423 &feature_acquireRelease,
424 &feature_fp16,
425 &feature_perfmon,
426 &feature_d32,
458 },427 },
459};428};
460429
461pub const feature_armv84A = Feature{430pub const feature_armv84A = Feature{
462 .name = "armv8.4-a",431 .name = "armv8.4-a",
463 .description = "ARMv84a architecture",432 .description = "ARMv84a architecture",
464 .llvm_name = "armv8.4-a",
465 .subfeatures = &[_]*const Feature {433 .subfeatures = &[_]*const Feature {
466 &feature_mp,434 &feature_db,
467 &feature_acquireRelease,435 &feature_dsp,
468 &feature_perfmon,436 &feature_hwdivArm,
469 &feature_hwdiv,437 &feature_hwdiv,
470 &feature_trustzone,438 &feature_trustzone,
471 &feature_v7clrex,439 &feature_fpregs,
472 &feature_db,440 &feature_v4t,
473 &feature_thumb2,441 &feature_thumb2,
474 &feature_ras,442 &feature_ras,
475 &feature_fp16,443 &feature_v7clrex,
476 &feature_v4t,
477 &feature_d32,
478 &feature_aclass,444 &feature_aclass,
479 &feature_hwdivArm,
480 &feature_crc,445 &feature_crc,
481 &feature_dsp,446 &feature_mp,
482 &feature_fpregs,447 &feature_acquireRelease,
448 &feature_fp16,
449 &feature_perfmon,
450 &feature_d32,
483 },451 },
484};452};
485453
486pub const feature_armv85A = Feature{454pub const feature_armv85A = Feature{
487 .name = "armv8.5-a",455 .name = "armv8.5-a",
488 .description = "ARMv85a architecture",456 .description = "ARMv85a architecture",
489 .llvm_name = "armv8.5-a",
490 .subfeatures = &[_]*const Feature {457 .subfeatures = &[_]*const Feature {
491 &feature_mp,458 &feature_db,
492 &feature_acquireRelease,459 &feature_dsp,
493 &feature_perfmon,460 &feature_hwdivArm,
494 &feature_hwdiv,461 &feature_hwdiv,
495 &feature_trustzone,462 &feature_trustzone,
496 &feature_v7clrex,463 &feature_fpregs,
497 &feature_db,464 &feature_v4t,
498 &feature_thumb2,465 &feature_thumb2,
499 &feature_ras,466 &feature_ras,
500 &feature_fp16,
501 &feature_v4t,
502 &feature_d32,
503 &feature_aclass,
504 &feature_hwdivArm,
505 &feature_sb,467 &feature_sb,
468 &feature_aclass,
506 &feature_crc,469 &feature_crc,
507 &feature_dsp,470 &feature_mp,
508 &feature_fpregs,471 &feature_v7clrex,
472 &feature_fp16,
473 &feature_acquireRelease,
474 &feature_d32,
475 &feature_perfmon,
509 },476 },
510};477};
511478
512pub const feature_msecext8 = Feature{479pub const feature_msecext8 = Feature{
513 .name = "8msecext",480 .name = "8msecext",
514 .description = "Enable support for ARMv8-M Security Extensions",481 .description = "Enable support for ARMv8-M Security Extensions",
515 .llvm_name = "8msecext",
516 .subfeatures = &[_]*const Feature {482 .subfeatures = &[_]*const Feature {
517 },483 },
518};484};
...@@ -520,7 +486,6 @@ pub const feature_msecext8 = Feature{...@@ -520,7 +486,6 @@ pub const feature_msecext8 = Feature{
520pub const feature_aclass = Feature{486pub const feature_aclass = Feature{
521 .name = "aclass",487 .name = "aclass",
522 .description = "Is application profile ('A' series)",488 .description = "Is application profile ('A' series)",
523 .llvm_name = "aclass",
524 .subfeatures = &[_]*const Feature {489 .subfeatures = &[_]*const Feature {
525 },490 },
526};491};
...@@ -528,17 +493,15 @@ pub const feature_aclass = Feature{...@@ -528,17 +493,15 @@ pub const feature_aclass = Feature{
528pub const feature_aes = Feature{493pub const feature_aes = Feature{
529 .name = "aes",494 .name = "aes",
530 .description = "Enable AES support",495 .description = "Enable AES support",
531 .llvm_name = "aes",
532 .subfeatures = &[_]*const Feature {496 .subfeatures = &[_]*const Feature {
533 &feature_d32,
534 &feature_fpregs,497 &feature_fpregs,
498 &feature_d32,
535 },499 },
536};500};
537501
538pub const feature_acquireRelease = Feature{502pub const feature_acquireRelease = Feature{
539 .name = "acquire-release",503 .name = "acquire-release",
540 .description = "Has v8 acquire/release (lda/ldaex etc) instructions",504 .description = "Has v8 acquire/release (lda/ldaex etc) instructions",
541 .llvm_name = "acquire-release",
542 .subfeatures = &[_]*const Feature {505 .subfeatures = &[_]*const Feature {
543 },506 },
544};507};
...@@ -546,7 +509,6 @@ pub const feature_acquireRelease = Feature{...@@ -546,7 +509,6 @@ pub const feature_acquireRelease = Feature{
546pub const feature_avoidMovsShop = Feature{509pub const feature_avoidMovsShop = Feature{
547 .name = "avoid-movs-shop",510 .name = "avoid-movs-shop",
548 .description = "Avoid movs instructions with shifter operand",511 .description = "Avoid movs instructions with shifter operand",
549 .llvm_name = "avoid-movs-shop",
550 .subfeatures = &[_]*const Feature {512 .subfeatures = &[_]*const Feature {
551 },513 },
552};514};
...@@ -554,7 +516,6 @@ pub const feature_avoidMovsShop = Feature{...@@ -554,7 +516,6 @@ pub const feature_avoidMovsShop = Feature{
554pub const feature_avoidPartialCpsr = Feature{516pub const feature_avoidPartialCpsr = Feature{
555 .name = "avoid-partial-cpsr",517 .name = "avoid-partial-cpsr",
556 .description = "Avoid CPSR partial update for OOO execution",518 .description = "Avoid CPSR partial update for OOO execution",
557 .llvm_name = "avoid-partial-cpsr",
558 .subfeatures = &[_]*const Feature {519 .subfeatures = &[_]*const Feature {
559 },520 },
560};521};
...@@ -562,7 +523,6 @@ pub const feature_avoidPartialCpsr = Feature{...@@ -562,7 +523,6 @@ pub const feature_avoidPartialCpsr = Feature{
562pub const feature_crc = Feature{523pub const feature_crc = Feature{
563 .name = "crc",524 .name = "crc",
564 .description = "Enable support for CRC instructions",525 .description = "Enable support for CRC instructions",
565 .llvm_name = "crc",
566 .subfeatures = &[_]*const Feature {526 .subfeatures = &[_]*const Feature {
567 },527 },
568};528};
...@@ -570,7 +530,6 @@ pub const feature_crc = Feature{...@@ -570,7 +530,6 @@ pub const feature_crc = Feature{
570pub const feature_cheapPredicableCpsr = Feature{530pub const feature_cheapPredicableCpsr = Feature{
571 .name = "cheap-predicable-cpsr",531 .name = "cheap-predicable-cpsr",
572 .description = "Disable +1 predication cost for instructions updating CPSR",532 .description = "Disable +1 predication cost for instructions updating CPSR",
573 .llvm_name = "cheap-predicable-cpsr",
574 .subfeatures = &[_]*const Feature {533 .subfeatures = &[_]*const Feature {
575 },534 },
576};535};
...@@ -578,7 +537,6 @@ pub const feature_cheapPredicableCpsr = Feature{...@@ -578,7 +537,6 @@ pub const feature_cheapPredicableCpsr = Feature{
578pub const feature_vldnAlign = Feature{537pub const feature_vldnAlign = Feature{
579 .name = "vldn-align",538 .name = "vldn-align",
580 .description = "Check for VLDn unaligned access",539 .description = "Check for VLDn unaligned access",
581 .llvm_name = "vldn-align",
582 .subfeatures = &[_]*const Feature {540 .subfeatures = &[_]*const Feature {
583 },541 },
584};542};
...@@ -586,17 +544,15 @@ pub const feature_vldnAlign = Feature{...@@ -586,17 +544,15 @@ pub const feature_vldnAlign = Feature{
586pub const feature_crypto = Feature{544pub const feature_crypto = Feature{
587 .name = "crypto",545 .name = "crypto",
588 .description = "Enable support for Cryptography extensions",546 .description = "Enable support for Cryptography extensions",
589 .llvm_name = "crypto",
590 .subfeatures = &[_]*const Feature {547 .subfeatures = &[_]*const Feature {
591 &feature_d32,
592 &feature_fpregs,548 &feature_fpregs,
549 &feature_d32,
593 },550 },
594};551};
595552
596pub const feature_d32 = Feature{553pub const feature_d32 = Feature{
597 .name = "d32",554 .name = "d32",
598 .description = "Extend FP to 32 double registers",555 .description = "Extend FP to 32 double registers",
599 .llvm_name = "d32",
600 .subfeatures = &[_]*const Feature {556 .subfeatures = &[_]*const Feature {
601 },557 },
602};558};
...@@ -604,7 +560,6 @@ pub const feature_d32 = Feature{...@@ -604,7 +560,6 @@ pub const feature_d32 = Feature{
604pub const feature_db = Feature{560pub const feature_db = Feature{
605 .name = "db",561 .name = "db",
606 .description = "Has data barrier (dmb/dsb) instructions",562 .description = "Has data barrier (dmb/dsb) instructions",
607 .llvm_name = "db",
608 .subfeatures = &[_]*const Feature {563 .subfeatures = &[_]*const Feature {
609 },564 },
610};565};
...@@ -612,7 +567,6 @@ pub const feature_db = Feature{...@@ -612,7 +567,6 @@ pub const feature_db = Feature{
612pub const feature_dfb = Feature{567pub const feature_dfb = Feature{
613 .name = "dfb",568 .name = "dfb",
614 .description = "Has full data barrier (dfb) instruction",569 .description = "Has full data barrier (dfb) instruction",
615 .llvm_name = "dfb",
616 .subfeatures = &[_]*const Feature {570 .subfeatures = &[_]*const Feature {
617 },571 },
618};572};
...@@ -620,7 +574,6 @@ pub const feature_dfb = Feature{...@@ -620,7 +574,6 @@ pub const feature_dfb = Feature{
620pub const feature_dsp = Feature{574pub const feature_dsp = Feature{
621 .name = "dsp",575 .name = "dsp",
622 .description = "Supports DSP instructions in ARM and/or Thumb2",576 .description = "Supports DSP instructions in ARM and/or Thumb2",
623 .llvm_name = "dsp",
624 .subfeatures = &[_]*const Feature {577 .subfeatures = &[_]*const Feature {
625 },578 },
626};579};
...@@ -628,7 +581,6 @@ pub const feature_dsp = Feature{...@@ -628,7 +581,6 @@ pub const feature_dsp = Feature{
628pub const feature_dontWidenVmovs = Feature{581pub const feature_dontWidenVmovs = Feature{
629 .name = "dont-widen-vmovs",582 .name = "dont-widen-vmovs",
630 .description = "Don't widen VMOVS to VMOVD",583 .description = "Don't widen VMOVS to VMOVD",
631 .llvm_name = "dont-widen-vmovs",
632 .subfeatures = &[_]*const Feature {584 .subfeatures = &[_]*const Feature {
633 },585 },
634};586};
...@@ -636,17 +588,15 @@ pub const feature_dontWidenVmovs = Feature{...@@ -636,17 +588,15 @@ pub const feature_dontWidenVmovs = Feature{
636pub const feature_dotprod = Feature{588pub const feature_dotprod = Feature{
637 .name = "dotprod",589 .name = "dotprod",
638 .description = "Enable support for dot product instructions",590 .description = "Enable support for dot product instructions",
639 .llvm_name = "dotprod",
640 .subfeatures = &[_]*const Feature {591 .subfeatures = &[_]*const Feature {
641 &feature_d32,
642 &feature_fpregs,592 &feature_fpregs,
593 &feature_d32,
643 },594 },
644};595};
645596
646pub const feature_executeOnly = Feature{597pub const feature_executeOnly = Feature{
647 .name = "execute-only",598 .name = "execute-only",
648 .description = "Enable the generation of execute only code.",599 .description = "Enable the generation of execute only code.",
649 .llvm_name = "execute-only",
650 .subfeatures = &[_]*const Feature {600 .subfeatures = &[_]*const Feature {
651 },601 },
652};602};
...@@ -654,7 +604,6 @@ pub const feature_executeOnly = Feature{...@@ -654,7 +604,6 @@ pub const feature_executeOnly = Feature{
654pub const feature_expandFpMlx = Feature{604pub const feature_expandFpMlx = Feature{
655 .name = "expand-fp-mlx",605 .name = "expand-fp-mlx",
656 .description = "Expand VFP/NEON MLA/MLS instructions",606 .description = "Expand VFP/NEON MLA/MLS instructions",
657 .llvm_name = "expand-fp-mlx",
658 .subfeatures = &[_]*const Feature {607 .subfeatures = &[_]*const Feature {
659 },608 },
660};609};
...@@ -662,7 +611,6 @@ pub const feature_expandFpMlx = Feature{...@@ -662,7 +611,6 @@ pub const feature_expandFpMlx = Feature{
662pub const feature_fp16 = Feature{611pub const feature_fp16 = Feature{
663 .name = "fp16",612 .name = "fp16",
664 .description = "Enable half-precision floating point",613 .description = "Enable half-precision floating point",
665 .llvm_name = "fp16",
666 .subfeatures = &[_]*const Feature {614 .subfeatures = &[_]*const Feature {
667 },615 },
668};616};
...@@ -670,7 +618,6 @@ pub const feature_fp16 = Feature{...@@ -670,7 +618,6 @@ pub const feature_fp16 = Feature{
670pub const feature_fp16fml = Feature{618pub const feature_fp16fml = Feature{
671 .name = "fp16fml",619 .name = "fp16fml",
672 .description = "Enable full half-precision floating point fml instructions",620 .description = "Enable full half-precision floating point fml instructions",
673 .llvm_name = "fp16fml",
674 .subfeatures = &[_]*const Feature {621 .subfeatures = &[_]*const Feature {
675 &feature_fp16,622 &feature_fp16,
676 &feature_fpregs,623 &feature_fpregs,
...@@ -680,7 +627,6 @@ pub const feature_fp16fml = Feature{...@@ -680,7 +627,6 @@ pub const feature_fp16fml = Feature{
680pub const feature_fp64 = Feature{627pub const feature_fp64 = Feature{
681 .name = "fp64",628 .name = "fp64",
682 .description = "Floating point unit supports double precision",629 .description = "Floating point unit supports double precision",
683 .llvm_name = "fp64",
684 .subfeatures = &[_]*const Feature {630 .subfeatures = &[_]*const Feature {
685 &feature_fpregs,631 &feature_fpregs,
686 },632 },
...@@ -689,7 +635,6 @@ pub const feature_fp64 = Feature{...@@ -689,7 +635,6 @@ pub const feature_fp64 = Feature{
689pub const feature_fpao = Feature{635pub const feature_fpao = Feature{
690 .name = "fpao",636 .name = "fpao",
691 .description = "Enable fast computation of positive address offsets",637 .description = "Enable fast computation of positive address offsets",
692 .llvm_name = "fpao",
693 .subfeatures = &[_]*const Feature {638 .subfeatures = &[_]*const Feature {
694 },639 },
695};640};
...@@ -697,28 +642,25 @@ pub const feature_fpao = Feature{...@@ -697,28 +642,25 @@ pub const feature_fpao = Feature{
697pub const feature_fpArmv8 = Feature{642pub const feature_fpArmv8 = Feature{
698 .name = "fp-armv8",643 .name = "fp-armv8",
699 .description = "Enable ARMv8 FP",644 .description = "Enable ARMv8 FP",
700 .llvm_name = "fp-armv8",
701 .subfeatures = &[_]*const Feature {645 .subfeatures = &[_]*const Feature {
702 &feature_fp16,
703 &feature_d32,
704 &feature_fpregs,646 &feature_fpregs,
647 &feature_d32,
648 &feature_fp16,
705 },649 },
706};650};
707651
708pub const feature_fpArmv8d16 = Feature{652pub const feature_fpArmv8d16 = Feature{
709 .name = "fp-armv8d16",653 .name = "fp-armv8d16",
710 .description = "Enable ARMv8 FP with only 16 d-registers",654 .description = "Enable ARMv8 FP with only 16 d-registers",
711 .llvm_name = "fp-armv8d16",
712 .subfeatures = &[_]*const Feature {655 .subfeatures = &[_]*const Feature {
713 &feature_fp16,
714 &feature_fpregs,656 &feature_fpregs,
657 &feature_fp16,
715 },658 },
716};659};
717660
718pub const feature_fpArmv8d16sp = Feature{661pub const feature_fpArmv8d16sp = Feature{
719 .name = "fp-armv8d16sp",662 .name = "fp-armv8d16sp",
720 .description = "Enable ARMv8 FP with only 16 d-registers and no double precision",663 .description = "Enable ARMv8 FP with only 16 d-registers and no double precision",
721 .llvm_name = "fp-armv8d16sp",
722 .subfeatures = &[_]*const Feature {664 .subfeatures = &[_]*const Feature {
723 &feature_fp16,665 &feature_fp16,
724 &feature_fpregs,666 &feature_fpregs,
...@@ -728,7 +670,6 @@ pub const feature_fpArmv8d16sp = Feature{...@@ -728,7 +670,6 @@ pub const feature_fpArmv8d16sp = Feature{
728pub const feature_fpArmv8sp = Feature{670pub const feature_fpArmv8sp = Feature{
729 .name = "fp-armv8sp",671 .name = "fp-armv8sp",
730 .description = "Enable ARMv8 FP with no double precision",672 .description = "Enable ARMv8 FP with no double precision",
731 .llvm_name = "fp-armv8sp",
732 .subfeatures = &[_]*const Feature {673 .subfeatures = &[_]*const Feature {
733 &feature_fp16,674 &feature_fp16,
734 &feature_d32,675 &feature_d32,
...@@ -739,7 +680,6 @@ pub const feature_fpArmv8sp = Feature{...@@ -739,7 +680,6 @@ pub const feature_fpArmv8sp = Feature{
739pub const feature_fpregs = Feature{680pub const feature_fpregs = Feature{
740 .name = "fpregs",681 .name = "fpregs",
741 .description = "Enable FP registers",682 .description = "Enable FP registers",
742 .llvm_name = "fpregs",
743 .subfeatures = &[_]*const Feature {683 .subfeatures = &[_]*const Feature {
744 },684 },
745};685};
...@@ -747,7 +687,6 @@ pub const feature_fpregs = Feature{...@@ -747,7 +687,6 @@ pub const feature_fpregs = Feature{
747pub const feature_fpregs16 = Feature{687pub const feature_fpregs16 = Feature{
748 .name = "fpregs16",688 .name = "fpregs16",
749 .description = "Enable 16-bit FP registers",689 .description = "Enable 16-bit FP registers",
750 .llvm_name = "fpregs16",
751 .subfeatures = &[_]*const Feature {690 .subfeatures = &[_]*const Feature {
752 &feature_fpregs,691 &feature_fpregs,
753 },692 },
...@@ -756,7 +695,6 @@ pub const feature_fpregs16 = Feature{...@@ -756,7 +695,6 @@ pub const feature_fpregs16 = Feature{
756pub const feature_fpregs64 = Feature{695pub const feature_fpregs64 = Feature{
757 .name = "fpregs64",696 .name = "fpregs64",
758 .description = "Enable 64-bit FP registers",697 .description = "Enable 64-bit FP registers",
759 .llvm_name = "fpregs64",
760 .subfeatures = &[_]*const Feature {698 .subfeatures = &[_]*const Feature {
761 &feature_fpregs,699 &feature_fpregs,
762 },700 },
...@@ -765,7 +703,6 @@ pub const feature_fpregs64 = Feature{...@@ -765,7 +703,6 @@ pub const feature_fpregs64 = Feature{
765pub const feature_fullfp16 = Feature{703pub const feature_fullfp16 = Feature{
766 .name = "fullfp16",704 .name = "fullfp16",
767 .description = "Enable full half-precision floating point",705 .description = "Enable full half-precision floating point",
768 .llvm_name = "fullfp16",
769 .subfeatures = &[_]*const Feature {706 .subfeatures = &[_]*const Feature {
770 &feature_fp16,707 &feature_fp16,
771 &feature_fpregs,708 &feature_fpregs,
...@@ -775,7 +712,6 @@ pub const feature_fullfp16 = Feature{...@@ -775,7 +712,6 @@ pub const feature_fullfp16 = Feature{
775pub const feature_fuseAes = Feature{712pub const feature_fuseAes = Feature{
776 .name = "fuse-aes",713 .name = "fuse-aes",
777 .description = "CPU fuses AES crypto operations",714 .description = "CPU fuses AES crypto operations",
778 .llvm_name = "fuse-aes",
779 .subfeatures = &[_]*const Feature {715 .subfeatures = &[_]*const Feature {
780 },716 },
781};717};
...@@ -783,7 +719,6 @@ pub const feature_fuseAes = Feature{...@@ -783,7 +719,6 @@ pub const feature_fuseAes = Feature{
783pub const feature_fuseLiterals = Feature{719pub const feature_fuseLiterals = Feature{
784 .name = "fuse-literals",720 .name = "fuse-literals",
785 .description = "CPU fuses literal generation operations",721 .description = "CPU fuses literal generation operations",
786 .llvm_name = "fuse-literals",
787 .subfeatures = &[_]*const Feature {722 .subfeatures = &[_]*const Feature {
788 },723 },
789};724};
...@@ -791,7 +726,6 @@ pub const feature_fuseLiterals = Feature{...@@ -791,7 +726,6 @@ pub const feature_fuseLiterals = Feature{
791pub const feature_hwdivArm = Feature{726pub const feature_hwdivArm = Feature{
792 .name = "hwdiv-arm",727 .name = "hwdiv-arm",
793 .description = "Enable divide instructions in ARM mode",728 .description = "Enable divide instructions in ARM mode",
794 .llvm_name = "hwdiv-arm",
795 .subfeatures = &[_]*const Feature {729 .subfeatures = &[_]*const Feature {
796 },730 },
797};731};
...@@ -799,7 +733,6 @@ pub const feature_hwdivArm = Feature{...@@ -799,7 +733,6 @@ pub const feature_hwdivArm = Feature{
799pub const feature_hwdiv = Feature{733pub const feature_hwdiv = Feature{
800 .name = "hwdiv",734 .name = "hwdiv",
801 .description = "Enable divide instructions in Thumb",735 .description = "Enable divide instructions in Thumb",
802 .llvm_name = "hwdiv",
803 .subfeatures = &[_]*const Feature {736 .subfeatures = &[_]*const Feature {
804 },737 },
805};738};
...@@ -807,7 +740,6 @@ pub const feature_hwdiv = Feature{...@@ -807,7 +740,6 @@ pub const feature_hwdiv = Feature{
807pub const feature_noBranchPredictor = Feature{740pub const feature_noBranchPredictor = Feature{
808 .name = "no-branch-predictor",741 .name = "no-branch-predictor",
809 .description = "Has no branch predictor",742 .description = "Has no branch predictor",
810 .llvm_name = "no-branch-predictor",
811 .subfeatures = &[_]*const Feature {743 .subfeatures = &[_]*const Feature {
812 },744 },
813};745};
...@@ -815,7 +747,6 @@ pub const feature_noBranchPredictor = Feature{...@@ -815,7 +747,6 @@ pub const feature_noBranchPredictor = Feature{
815pub const feature_retAddrStack = Feature{747pub const feature_retAddrStack = Feature{
816 .name = "ret-addr-stack",748 .name = "ret-addr-stack",
817 .description = "Has return address stack",749 .description = "Has return address stack",
818 .llvm_name = "ret-addr-stack",
819 .subfeatures = &[_]*const Feature {750 .subfeatures = &[_]*const Feature {
820 },751 },
821};752};
...@@ -823,7 +754,6 @@ pub const feature_retAddrStack = Feature{...@@ -823,7 +754,6 @@ pub const feature_retAddrStack = Feature{
823pub const feature_slowfpvmlx = Feature{754pub const feature_slowfpvmlx = Feature{
824 .name = "slowfpvmlx",755 .name = "slowfpvmlx",
825 .description = "Disable VFP / NEON MAC instructions",756 .description = "Disable VFP / NEON MAC instructions",
826 .llvm_name = "slowfpvmlx",
827 .subfeatures = &[_]*const Feature {757 .subfeatures = &[_]*const Feature {
828 },758 },
829};759};
...@@ -831,7 +761,6 @@ pub const feature_slowfpvmlx = Feature{...@@ -831,7 +761,6 @@ pub const feature_slowfpvmlx = Feature{
831pub const feature_vmlxHazards = Feature{761pub const feature_vmlxHazards = Feature{
832 .name = "vmlx-hazards",762 .name = "vmlx-hazards",
833 .description = "Has VMLx hazards",763 .description = "Has VMLx hazards",
834 .llvm_name = "vmlx-hazards",
835 .subfeatures = &[_]*const Feature {764 .subfeatures = &[_]*const Feature {
836 },765 },
837};766};
...@@ -839,7 +768,6 @@ pub const feature_vmlxHazards = Feature{...@@ -839,7 +768,6 @@ pub const feature_vmlxHazards = Feature{
839pub const feature_lob = Feature{768pub const feature_lob = Feature{
840 .name = "lob",769 .name = "lob",
841 .description = "Enable Low Overhead Branch extensions",770 .description = "Enable Low Overhead Branch extensions",
842 .llvm_name = "lob",
843 .subfeatures = &[_]*const Feature {771 .subfeatures = &[_]*const Feature {
844 },772 },
845};773};
...@@ -847,7 +775,6 @@ pub const feature_lob = Feature{...@@ -847,7 +775,6 @@ pub const feature_lob = Feature{
847pub const feature_longCalls = Feature{775pub const feature_longCalls = Feature{
848 .name = "long-calls",776 .name = "long-calls",
849 .description = "Generate calls via indirect call instructions",777 .description = "Generate calls via indirect call instructions",
850 .llvm_name = "long-calls",
851 .subfeatures = &[_]*const Feature {778 .subfeatures = &[_]*const Feature {
852 },779 },
853};780};
...@@ -855,7 +782,6 @@ pub const feature_longCalls = Feature{...@@ -855,7 +782,6 @@ pub const feature_longCalls = Feature{
855pub const feature_mclass = Feature{782pub const feature_mclass = Feature{
856 .name = "mclass",783 .name = "mclass",
857 .description = "Is microcontroller profile ('M' series)",784 .description = "Is microcontroller profile ('M' series)",
858 .llvm_name = "mclass",
859 .subfeatures = &[_]*const Feature {785 .subfeatures = &[_]*const Feature {
860 },786 },
861};787};
...@@ -863,7 +789,6 @@ pub const feature_mclass = Feature{...@@ -863,7 +789,6 @@ pub const feature_mclass = Feature{
863pub const feature_mp = Feature{789pub const feature_mp = Feature{
864 .name = "mp",790 .name = "mp",
865 .description = "Supports Multiprocessing extension",791 .description = "Supports Multiprocessing extension",
866 .llvm_name = "mp",
867 .subfeatures = &[_]*const Feature {792 .subfeatures = &[_]*const Feature {
868 },793 },
869};794};
...@@ -871,7 +796,6 @@ pub const feature_mp = Feature{...@@ -871,7 +796,6 @@ pub const feature_mp = Feature{
871pub const feature_mve1beat = Feature{796pub const feature_mve1beat = Feature{
872 .name = "mve1beat",797 .name = "mve1beat",
873 .description = "Model MVE instructions as a 1 beat per tick architecture",798 .description = "Model MVE instructions as a 1 beat per tick architecture",
874 .llvm_name = "mve1beat",
875 .subfeatures = &[_]*const Feature {799 .subfeatures = &[_]*const Feature {
876 },800 },
877};801};
...@@ -879,7 +803,6 @@ pub const feature_mve1beat = Feature{...@@ -879,7 +803,6 @@ pub const feature_mve1beat = Feature{
879pub const feature_mve2beat = Feature{803pub const feature_mve2beat = Feature{
880 .name = "mve2beat",804 .name = "mve2beat",
881 .description = "Model MVE instructions as a 2 beats per tick architecture",805 .description = "Model MVE instructions as a 2 beats per tick architecture",
882 .llvm_name = "mve2beat",
883 .subfeatures = &[_]*const Feature {806 .subfeatures = &[_]*const Feature {
884 },807 },
885};808};
...@@ -887,7 +810,6 @@ pub const feature_mve2beat = Feature{...@@ -887,7 +810,6 @@ pub const feature_mve2beat = Feature{
887pub const feature_mve4beat = Feature{810pub const feature_mve4beat = Feature{
888 .name = "mve4beat",811 .name = "mve4beat",
889 .description = "Model MVE instructions as a 4 beats per tick architecture",812 .description = "Model MVE instructions as a 4 beats per tick architecture",
890 .llvm_name = "mve4beat",
891 .subfeatures = &[_]*const Feature {813 .subfeatures = &[_]*const Feature {
892 },814 },
893};815};
...@@ -895,7 +817,6 @@ pub const feature_mve4beat = Feature{...@@ -895,7 +817,6 @@ pub const feature_mve4beat = Feature{
895pub const feature_muxedUnits = Feature{817pub const feature_muxedUnits = Feature{
896 .name = "muxed-units",818 .name = "muxed-units",
897 .description = "Has muxed AGU and NEON/FPU",819 .description = "Has muxed AGU and NEON/FPU",
898 .llvm_name = "muxed-units",
899 .subfeatures = &[_]*const Feature {820 .subfeatures = &[_]*const Feature {
900 },821 },
901};822};
...@@ -903,17 +824,15 @@ pub const feature_muxedUnits = Feature{...@@ -903,17 +824,15 @@ pub const feature_muxedUnits = Feature{
903pub const feature_neon = Feature{824pub const feature_neon = Feature{
904 .name = "neon",825 .name = "neon",
905 .description = "Enable NEON instructions",826 .description = "Enable NEON instructions",
906 .llvm_name = "neon",
907 .subfeatures = &[_]*const Feature {827 .subfeatures = &[_]*const Feature {
908 &feature_d32,
909 &feature_fpregs,828 &feature_fpregs,
829 &feature_d32,
910 },830 },
911};831};
912832
913pub const feature_neonfp = Feature{833pub const feature_neonfp = Feature{
914 .name = "neonfp",834 .name = "neonfp",
915 .description = "Use NEON for single precision FP",835 .description = "Use NEON for single precision FP",
916 .llvm_name = "neonfp",
917 .subfeatures = &[_]*const Feature {836 .subfeatures = &[_]*const Feature {
918 },837 },
919};838};
...@@ -921,7 +840,6 @@ pub const feature_neonfp = Feature{...@@ -921,7 +840,6 @@ pub const feature_neonfp = Feature{
921pub const feature_neonFpmovs = Feature{840pub const feature_neonFpmovs = Feature{
922 .name = "neon-fpmovs",841 .name = "neon-fpmovs",
923 .description = "Convert VMOVSR, VMOVRS, VMOVS to NEON",842 .description = "Convert VMOVSR, VMOVRS, VMOVS to NEON",
924 .llvm_name = "neon-fpmovs",
925 .subfeatures = &[_]*const Feature {843 .subfeatures = &[_]*const Feature {
926 },844 },
927};845};
...@@ -929,7 +847,6 @@ pub const feature_neonFpmovs = Feature{...@@ -929,7 +847,6 @@ pub const feature_neonFpmovs = Feature{
929pub const feature_naclTrap = Feature{847pub const feature_naclTrap = Feature{
930 .name = "nacl-trap",848 .name = "nacl-trap",
931 .description = "NaCl trap",849 .description = "NaCl trap",
932 .llvm_name = "nacl-trap",
933 .subfeatures = &[_]*const Feature {850 .subfeatures = &[_]*const Feature {
934 },851 },
935};852};
...@@ -937,7 +854,6 @@ pub const feature_naclTrap = Feature{...@@ -937,7 +854,6 @@ pub const feature_naclTrap = Feature{
937pub const feature_noarm = Feature{854pub const feature_noarm = Feature{
938 .name = "noarm",855 .name = "noarm",
939 .description = "Does not support ARM mode execution",856 .description = "Does not support ARM mode execution",
940 .llvm_name = "noarm",
941 .subfeatures = &[_]*const Feature {857 .subfeatures = &[_]*const Feature {
942 },858 },
943};859};
...@@ -945,7 +861,6 @@ pub const feature_noarm = Feature{...@@ -945,7 +861,6 @@ pub const feature_noarm = Feature{
945pub const feature_noMovt = Feature{861pub const feature_noMovt = Feature{
946 .name = "no-movt",862 .name = "no-movt",
947 .description = "Don't use movt/movw pairs for 32-bit imms",863 .description = "Don't use movt/movw pairs for 32-bit imms",
948 .llvm_name = "no-movt",
949 .subfeatures = &[_]*const Feature {864 .subfeatures = &[_]*const Feature {
950 },865 },
951};866};
...@@ -953,7 +868,6 @@ pub const feature_noMovt = Feature{...@@ -953,7 +868,6 @@ pub const feature_noMovt = Feature{
953pub const feature_noNegImmediates = Feature{868pub const feature_noNegImmediates = Feature{
954 .name = "no-neg-immediates",869 .name = "no-neg-immediates",
955 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",870 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",
956 .llvm_name = "no-neg-immediates",
957 .subfeatures = &[_]*const Feature {871 .subfeatures = &[_]*const Feature {
958 },872 },
959};873};
...@@ -961,7 +875,6 @@ pub const feature_noNegImmediates = Feature{...@@ -961,7 +875,6 @@ pub const feature_noNegImmediates = Feature{
961pub const feature_disablePostraScheduler = Feature{875pub const feature_disablePostraScheduler = Feature{
962 .name = "disable-postra-scheduler",876 .name = "disable-postra-scheduler",
963 .description = "Don't schedule again after register allocation",877 .description = "Don't schedule again after register allocation",
964 .llvm_name = "disable-postra-scheduler",
965 .subfeatures = &[_]*const Feature {878 .subfeatures = &[_]*const Feature {
966 },879 },
967};880};
...@@ -969,7 +882,6 @@ pub const feature_disablePostraScheduler = Feature{...@@ -969,7 +882,6 @@ pub const feature_disablePostraScheduler = Feature{
969pub const feature_nonpipelinedVfp = Feature{882pub const feature_nonpipelinedVfp = Feature{
970 .name = "nonpipelined-vfp",883 .name = "nonpipelined-vfp",
971 .description = "VFP instructions are not pipelined",884 .description = "VFP instructions are not pipelined",
972 .llvm_name = "nonpipelined-vfp",
973 .subfeatures = &[_]*const Feature {885 .subfeatures = &[_]*const Feature {
974 },886 },
975};887};
...@@ -977,7 +889,6 @@ pub const feature_nonpipelinedVfp = Feature{...@@ -977,7 +889,6 @@ pub const feature_nonpipelinedVfp = Feature{
977pub const feature_perfmon = Feature{889pub const feature_perfmon = Feature{
978 .name = "perfmon",890 .name = "perfmon",
979 .description = "Enable support for Performance Monitor extensions",891 .description = "Enable support for Performance Monitor extensions",
980 .llvm_name = "perfmon",
981 .subfeatures = &[_]*const Feature {892 .subfeatures = &[_]*const Feature {
982 },893 },
983};894};
...@@ -985,7 +896,6 @@ pub const feature_perfmon = Feature{...@@ -985,7 +896,6 @@ pub const feature_perfmon = Feature{
985pub const feature_bit32 = Feature{896pub const feature_bit32 = Feature{
986 .name = "32bit",897 .name = "32bit",
987 .description = "Prefer 32-bit Thumb instrs",898 .description = "Prefer 32-bit Thumb instrs",
988 .llvm_name = "32bit",
989 .subfeatures = &[_]*const Feature {899 .subfeatures = &[_]*const Feature {
990 },900 },
991};901};
...@@ -993,7 +903,6 @@ pub const feature_bit32 = Feature{...@@ -993,7 +903,6 @@ pub const feature_bit32 = Feature{
993pub const feature_preferIshst = Feature{903pub const feature_preferIshst = Feature{
994 .name = "prefer-ishst",904 .name = "prefer-ishst",
995 .description = "Prefer ISHST barriers",905 .description = "Prefer ISHST barriers",
996 .llvm_name = "prefer-ishst",
997 .subfeatures = &[_]*const Feature {906 .subfeatures = &[_]*const Feature {
998 },907 },
999};908};
...@@ -1001,7 +910,6 @@ pub const feature_preferIshst = Feature{...@@ -1001,7 +910,6 @@ pub const feature_preferIshst = Feature{
1001pub const feature_loopAlign = Feature{910pub const feature_loopAlign = Feature{
1002 .name = "loop-align",911 .name = "loop-align",
1003 .description = "Prefer 32-bit alignment for loops",912 .description = "Prefer 32-bit alignment for loops",
1004 .llvm_name = "loop-align",
1005 .subfeatures = &[_]*const Feature {913 .subfeatures = &[_]*const Feature {
1006 },914 },
1007};915};
...@@ -1009,7 +917,6 @@ pub const feature_loopAlign = Feature{...@@ -1009,7 +917,6 @@ pub const feature_loopAlign = Feature{
1009pub const feature_preferVmovsr = Feature{917pub const feature_preferVmovsr = Feature{
1010 .name = "prefer-vmovsr",918 .name = "prefer-vmovsr",
1011 .description = "Prefer VMOVSR",919 .description = "Prefer VMOVSR",
1012 .llvm_name = "prefer-vmovsr",
1013 .subfeatures = &[_]*const Feature {920 .subfeatures = &[_]*const Feature {
1014 },921 },
1015};922};
...@@ -1017,7 +924,6 @@ pub const feature_preferVmovsr = Feature{...@@ -1017,7 +924,6 @@ pub const feature_preferVmovsr = Feature{
1017pub const feature_profUnpr = Feature{924pub const feature_profUnpr = Feature{
1018 .name = "prof-unpr",925 .name = "prof-unpr",
1019 .description = "Is profitable to unpredicate",926 .description = "Is profitable to unpredicate",
1020 .llvm_name = "prof-unpr",
1021 .subfeatures = &[_]*const Feature {927 .subfeatures = &[_]*const Feature {
1022 },928 },
1023};929};
...@@ -1025,7 +931,6 @@ pub const feature_profUnpr = Feature{...@@ -1025,7 +931,6 @@ pub const feature_profUnpr = Feature{
1025pub const feature_ras = Feature{931pub const feature_ras = Feature{
1026 .name = "ras",932 .name = "ras",
1027 .description = "Enable Reliability, Availability and Serviceability extensions",933 .description = "Enable Reliability, Availability and Serviceability extensions",
1028 .llvm_name = "ras",
1029 .subfeatures = &[_]*const Feature {934 .subfeatures = &[_]*const Feature {
1030 },935 },
1031};936};
...@@ -1033,7 +938,6 @@ pub const feature_ras = Feature{...@@ -1033,7 +938,6 @@ pub const feature_ras = Feature{
1033pub const feature_rclass = Feature{938pub const feature_rclass = Feature{
1034 .name = "rclass",939 .name = "rclass",
1035 .description = "Is realtime profile ('R' series)",940 .description = "Is realtime profile ('R' series)",
1036 .llvm_name = "rclass",
1037 .subfeatures = &[_]*const Feature {941 .subfeatures = &[_]*const Feature {
1038 },942 },
1039};943};
...@@ -1041,7 +945,6 @@ pub const feature_rclass = Feature{...@@ -1041,7 +945,6 @@ pub const feature_rclass = Feature{
1041pub const feature_readTpHard = Feature{945pub const feature_readTpHard = Feature{
1042 .name = "read-tp-hard",946 .name = "read-tp-hard",
1043 .description = "Reading thread pointer from register",947 .description = "Reading thread pointer from register",
1044 .llvm_name = "read-tp-hard",
1045 .subfeatures = &[_]*const Feature {948 .subfeatures = &[_]*const Feature {
1046 },949 },
1047};950};
...@@ -1049,7 +952,6 @@ pub const feature_readTpHard = Feature{...@@ -1049,7 +952,6 @@ pub const feature_readTpHard = Feature{
1049pub const feature_reserveR9 = Feature{952pub const feature_reserveR9 = Feature{
1050 .name = "reserve-r9",953 .name = "reserve-r9",
1051 .description = "Reserve R9, making it unavailable as GPR",954 .description = "Reserve R9, making it unavailable as GPR",
1052 .llvm_name = "reserve-r9",
1053 .subfeatures = &[_]*const Feature {955 .subfeatures = &[_]*const Feature {
1054 },956 },
1055};957};
...@@ -1057,7 +959,6 @@ pub const feature_reserveR9 = Feature{...@@ -1057,7 +959,6 @@ pub const feature_reserveR9 = Feature{
1057pub const feature_sb = Feature{959pub const feature_sb = Feature{
1058 .name = "sb",960 .name = "sb",
1059 .description = "Enable v8.5a Speculation Barrier",961 .description = "Enable v8.5a Speculation Barrier",
1060 .llvm_name = "sb",
1061 .subfeatures = &[_]*const Feature {962 .subfeatures = &[_]*const Feature {
1062 },963 },
1063};964};
...@@ -1065,17 +966,15 @@ pub const feature_sb = Feature{...@@ -1065,17 +966,15 @@ pub const feature_sb = Feature{
1065pub const feature_sha2 = Feature{966pub const feature_sha2 = Feature{
1066 .name = "sha2",967 .name = "sha2",
1067 .description = "Enable SHA1 and SHA256 support",968 .description = "Enable SHA1 and SHA256 support",
1068 .llvm_name = "sha2",
1069 .subfeatures = &[_]*const Feature {969 .subfeatures = &[_]*const Feature {
1070 &feature_d32,
1071 &feature_fpregs,970 &feature_fpregs,
971 &feature_d32,
1072 },972 },
1073};973};
1074974
1075pub const feature_slowFpBrcc = Feature{975pub const feature_slowFpBrcc = Feature{
1076 .name = "slow-fp-brcc",976 .name = "slow-fp-brcc",
1077 .description = "FP compare + branch is slow",977 .description = "FP compare + branch is slow",
1078 .llvm_name = "slow-fp-brcc",
1079 .subfeatures = &[_]*const Feature {978 .subfeatures = &[_]*const Feature {
1080 },979 },
1081};980};
...@@ -1083,7 +982,6 @@ pub const feature_slowFpBrcc = Feature{...@@ -1083,7 +982,6 @@ pub const feature_slowFpBrcc = Feature{
1083pub const feature_slowLoadDSubreg = Feature{982pub const feature_slowLoadDSubreg = Feature{
1084 .name = "slow-load-D-subreg",983 .name = "slow-load-D-subreg",
1085 .description = "Loading into D subregs is slow",984 .description = "Loading into D subregs is slow",
1086 .llvm_name = "slow-load-D-subreg",
1087 .subfeatures = &[_]*const Feature {985 .subfeatures = &[_]*const Feature {
1088 },986 },
1089};987};
...@@ -1091,7 +989,6 @@ pub const feature_slowLoadDSubreg = Feature{...@@ -1091,7 +989,6 @@ pub const feature_slowLoadDSubreg = Feature{
1091pub const feature_slowOddReg = Feature{989pub const feature_slowOddReg = Feature{
1092 .name = "slow-odd-reg",990 .name = "slow-odd-reg",
1093 .description = "VLDM/VSTM starting with an odd register is slow",991 .description = "VLDM/VSTM starting with an odd register is slow",
1094 .llvm_name = "slow-odd-reg",
1095 .subfeatures = &[_]*const Feature {992 .subfeatures = &[_]*const Feature {
1096 },993 },
1097};994};
...@@ -1099,7 +996,6 @@ pub const feature_slowOddReg = Feature{...@@ -1099,7 +996,6 @@ pub const feature_slowOddReg = Feature{
1099pub const feature_slowVdup32 = Feature{996pub const feature_slowVdup32 = Feature{
1100 .name = "slow-vdup32",997 .name = "slow-vdup32",
1101 .description = "Has slow VDUP32 - prefer VMOV",998 .description = "Has slow VDUP32 - prefer VMOV",
1102 .llvm_name = "slow-vdup32",
1103 .subfeatures = &[_]*const Feature {999 .subfeatures = &[_]*const Feature {
1104 },1000 },
1105};1001};
...@@ -1107,7 +1003,6 @@ pub const feature_slowVdup32 = Feature{...@@ -1107,7 +1003,6 @@ pub const feature_slowVdup32 = Feature{
1107pub const feature_slowVgetlni32 = Feature{1003pub const feature_slowVgetlni32 = Feature{
1108 .name = "slow-vgetlni32",1004 .name = "slow-vgetlni32",
1109 .description = "Has slow VGETLNi32 - prefer VMOV",1005 .description = "Has slow VGETLNi32 - prefer VMOV",
1110 .llvm_name = "slow-vgetlni32",
1111 .subfeatures = &[_]*const Feature {1006 .subfeatures = &[_]*const Feature {
1112 },1007 },
1113};1008};
...@@ -1115,7 +1010,6 @@ pub const feature_slowVgetlni32 = Feature{...@@ -1115,7 +1010,6 @@ pub const feature_slowVgetlni32 = Feature{
1115pub const feature_splatVfpNeon = Feature{1010pub const feature_splatVfpNeon = Feature{
1116 .name = "splat-vfp-neon",1011 .name = "splat-vfp-neon",
1117 .description = "Splat register from VFP to NEON",1012 .description = "Splat register from VFP to NEON",
1118 .llvm_name = "splat-vfp-neon",
1119 .subfeatures = &[_]*const Feature {1013 .subfeatures = &[_]*const Feature {
1120 &feature_dontWidenVmovs,1014 &feature_dontWidenVmovs,
1121 },1015 },
...@@ -1124,7 +1018,6 @@ pub const feature_splatVfpNeon = Feature{...@@ -1124,7 +1018,6 @@ pub const feature_splatVfpNeon = Feature{
1124pub const feature_strictAlign = Feature{1018pub const feature_strictAlign = Feature{
1125 .name = "strict-align",1019 .name = "strict-align",
1126 .description = "Disallow all unaligned memory access",1020 .description = "Disallow all unaligned memory access",
1127 .llvm_name = "strict-align",
1128 .subfeatures = &[_]*const Feature {1021 .subfeatures = &[_]*const Feature {
1129 },1022 },
1130};1023};
...@@ -1132,7 +1025,6 @@ pub const feature_strictAlign = Feature{...@@ -1132,7 +1025,6 @@ pub const feature_strictAlign = Feature{
1132pub const feature_thumb2 = Feature{1025pub const feature_thumb2 = Feature{
1133 .name = "thumb2",1026 .name = "thumb2",
1134 .description = "Enable Thumb2 instructions",1027 .description = "Enable Thumb2 instructions",
1135 .llvm_name = "thumb2",
1136 .subfeatures = &[_]*const Feature {1028 .subfeatures = &[_]*const Feature {
1137 },1029 },
1138};1030};
...@@ -1140,7 +1032,6 @@ pub const feature_thumb2 = Feature{...@@ -1140,7 +1032,6 @@ pub const feature_thumb2 = Feature{
1140pub const feature_trustzone = Feature{1032pub const feature_trustzone = Feature{
1141 .name = "trustzone",1033 .name = "trustzone",
1142 .description = "Enable support for TrustZone security extensions",1034 .description = "Enable support for TrustZone security extensions",
1143 .llvm_name = "trustzone",
1144 .subfeatures = &[_]*const Feature {1035 .subfeatures = &[_]*const Feature {
1145 },1036 },
1146};1037};
...@@ -1148,7 +1039,6 @@ pub const feature_trustzone = Feature{...@@ -1148,7 +1039,6 @@ pub const feature_trustzone = Feature{
1148pub const feature_useAa = Feature{1039pub const feature_useAa = Feature{
1149 .name = "use-aa",1040 .name = "use-aa",
1150 .description = "Use alias analysis during codegen",1041 .description = "Use alias analysis during codegen",
1151 .llvm_name = "use-aa",
1152 .subfeatures = &[_]*const Feature {1042 .subfeatures = &[_]*const Feature {
1153 },1043 },
1154};1044};
...@@ -1156,7 +1046,6 @@ pub const feature_useAa = Feature{...@@ -1156,7 +1046,6 @@ pub const feature_useAa = Feature{
1156pub const feature_useMisched = Feature{1046pub const feature_useMisched = Feature{
1157 .name = "use-misched",1047 .name = "use-misched",
1158 .description = "Use the MachineScheduler",1048 .description = "Use the MachineScheduler",
1159 .llvm_name = "use-misched",
1160 .subfeatures = &[_]*const Feature {1049 .subfeatures = &[_]*const Feature {
1161 },1050 },
1162};1051};
...@@ -1164,7 +1053,6 @@ pub const feature_useMisched = Feature{...@@ -1164,7 +1053,6 @@ pub const feature_useMisched = Feature{
1164pub const feature_wideStrideVfp = Feature{1053pub const feature_wideStrideVfp = Feature{
1165 .name = "wide-stride-vfp",1054 .name = "wide-stride-vfp",
1166 .description = "Use a wide stride when allocating VFP registers",1055 .description = "Use a wide stride when allocating VFP registers",
1167 .llvm_name = "wide-stride-vfp",
1168 .subfeatures = &[_]*const Feature {1056 .subfeatures = &[_]*const Feature {
1169 },1057 },
1170};1058};
...@@ -1172,7 +1060,6 @@ pub const feature_wideStrideVfp = Feature{...@@ -1172,7 +1060,6 @@ pub const feature_wideStrideVfp = Feature{
1172pub const feature_v7clrex = Feature{1060pub const feature_v7clrex = Feature{
1173 .name = "v7clrex",1061 .name = "v7clrex",
1174 .description = "Has v7 clrex instruction",1062 .description = "Has v7 clrex instruction",
1175 .llvm_name = "v7clrex",
1176 .subfeatures = &[_]*const Feature {1063 .subfeatures = &[_]*const Feature {
1177 },1064 },
1178};1065};
...@@ -1180,7 +1067,6 @@ pub const feature_v7clrex = Feature{...@@ -1180,7 +1067,6 @@ pub const feature_v7clrex = Feature{
1180pub const feature_vfp2 = Feature{1067pub const feature_vfp2 = Feature{
1181 .name = "vfp2",1068 .name = "vfp2",
1182 .description = "Enable VFP2 instructions",1069 .description = "Enable VFP2 instructions",
1183 .llvm_name = "vfp2",
1184 .subfeatures = &[_]*const Feature {1070 .subfeatures = &[_]*const Feature {
1185 &feature_fpregs,1071 &feature_fpregs,
1186 },1072 },
...@@ -1189,7 +1075,6 @@ pub const feature_vfp2 = Feature{...@@ -1189,7 +1075,6 @@ pub const feature_vfp2 = Feature{
1189pub const feature_vfp2sp = Feature{1075pub const feature_vfp2sp = Feature{
1190 .name = "vfp2sp",1076 .name = "vfp2sp",
1191 .description = "Enable VFP2 instructions with no double precision",1077 .description = "Enable VFP2 instructions with no double precision",
1192 .llvm_name = "vfp2sp",
1193 .subfeatures = &[_]*const Feature {1078 .subfeatures = &[_]*const Feature {
1194 &feature_fpregs,1079 &feature_fpregs,
1195 },1080 },
...@@ -1198,17 +1083,15 @@ pub const feature_vfp2sp = Feature{...@@ -1198,17 +1083,15 @@ pub const feature_vfp2sp = Feature{
1198pub const feature_vfp3 = Feature{1083pub const feature_vfp3 = Feature{
1199 .name = "vfp3",1084 .name = "vfp3",
1200 .description = "Enable VFP3 instructions",1085 .description = "Enable VFP3 instructions",
1201 .llvm_name = "vfp3",
1202 .subfeatures = &[_]*const Feature {1086 .subfeatures = &[_]*const Feature {
1203 &feature_d32,
1204 &feature_fpregs,1087 &feature_fpregs,
1088 &feature_d32,
1205 },1089 },
1206};1090};
12071091
1208pub const feature_vfp3d16 = Feature{1092pub const feature_vfp3d16 = Feature{
1209 .name = "vfp3d16",1093 .name = "vfp3d16",
1210 .description = "Enable VFP3 instructions with only 16 d-registers",1094 .description = "Enable VFP3 instructions with only 16 d-registers",
1211 .llvm_name = "vfp3d16",
1212 .subfeatures = &[_]*const Feature {1095 .subfeatures = &[_]*const Feature {
1213 &feature_fpregs,1096 &feature_fpregs,
1214 },1097 },
...@@ -1217,7 +1100,6 @@ pub const feature_vfp3d16 = Feature{...@@ -1217,7 +1100,6 @@ pub const feature_vfp3d16 = Feature{
1217pub const feature_vfp3d16sp = Feature{1100pub const feature_vfp3d16sp = Feature{
1218 .name = "vfp3d16sp",1101 .name = "vfp3d16sp",
1219 .description = "Enable VFP3 instructions with only 16 d-registers and no double precision",1102 .description = "Enable VFP3 instructions with only 16 d-registers and no double precision",
1220 .llvm_name = "vfp3d16sp",
1221 .subfeatures = &[_]*const Feature {1103 .subfeatures = &[_]*const Feature {
1222 &feature_fpregs,1104 &feature_fpregs,
1223 },1105 },
...@@ -1226,17 +1108,15 @@ pub const feature_vfp3d16sp = Feature{...@@ -1226,17 +1108,15 @@ pub const feature_vfp3d16sp = Feature{
1226pub const feature_vfp3sp = Feature{1108pub const feature_vfp3sp = Feature{
1227 .name = "vfp3sp",1109 .name = "vfp3sp",
1228 .description = "Enable VFP3 instructions with no double precision",1110 .description = "Enable VFP3 instructions with no double precision",
1229 .llvm_name = "vfp3sp",
1230 .subfeatures = &[_]*const Feature {1111 .subfeatures = &[_]*const Feature {
1231 &feature_d32,
1232 &feature_fpregs,1112 &feature_fpregs,
1113 &feature_d32,
1233 },1114 },
1234};1115};
12351116
1236pub const feature_vfp4 = Feature{1117pub const feature_vfp4 = Feature{
1237 .name = "vfp4",1118 .name = "vfp4",
1238 .description = "Enable VFP4 instructions",1119 .description = "Enable VFP4 instructions",
1239 .llvm_name = "vfp4",
1240 .subfeatures = &[_]*const Feature {1120 .subfeatures = &[_]*const Feature {
1241 &feature_fp16,1121 &feature_fp16,
1242 &feature_d32,1122 &feature_d32,
...@@ -1247,7 +1127,6 @@ pub const feature_vfp4 = Feature{...@@ -1247,7 +1127,6 @@ pub const feature_vfp4 = Feature{
1247pub const feature_vfp4d16 = Feature{1127pub const feature_vfp4d16 = Feature{
1248 .name = "vfp4d16",1128 .name = "vfp4d16",
1249 .description = "Enable VFP4 instructions with only 16 d-registers",1129 .description = "Enable VFP4 instructions with only 16 d-registers",
1250 .llvm_name = "vfp4d16",
1251 .subfeatures = &[_]*const Feature {1130 .subfeatures = &[_]*const Feature {
1252 &feature_fp16,1131 &feature_fp16,
1253 &feature_fpregs,1132 &feature_fpregs,
...@@ -1257,7 +1136,6 @@ pub const feature_vfp4d16 = Feature{...@@ -1257,7 +1136,6 @@ pub const feature_vfp4d16 = Feature{
1257pub const feature_vfp4d16sp = Feature{1136pub const feature_vfp4d16sp = Feature{
1258 .name = "vfp4d16sp",1137 .name = "vfp4d16sp",
1259 .description = "Enable VFP4 instructions with only 16 d-registers and no double precision",1138 .description = "Enable VFP4 instructions with only 16 d-registers and no double precision",
1260 .llvm_name = "vfp4d16sp",
1261 .subfeatures = &[_]*const Feature {1139 .subfeatures = &[_]*const Feature {
1262 &feature_fp16,1140 &feature_fp16,
1263 &feature_fpregs,1141 &feature_fpregs,
...@@ -1267,7 +1145,6 @@ pub const feature_vfp4d16sp = Feature{...@@ -1267,7 +1145,6 @@ pub const feature_vfp4d16sp = Feature{
1267pub const feature_vfp4sp = Feature{1145pub const feature_vfp4sp = Feature{
1268 .name = "vfp4sp",1146 .name = "vfp4sp",
1269 .description = "Enable VFP4 instructions with no double precision",1147 .description = "Enable VFP4 instructions with no double precision",
1270 .llvm_name = "vfp4sp",
1271 .subfeatures = &[_]*const Feature {1148 .subfeatures = &[_]*const Feature {
1272 &feature_fp16,1149 &feature_fp16,
1273 &feature_d32,1150 &feature_d32,
...@@ -1278,7 +1155,6 @@ pub const feature_vfp4sp = Feature{...@@ -1278,7 +1155,6 @@ pub const feature_vfp4sp = Feature{
1278pub const feature_vmlxForwarding = Feature{1155pub const feature_vmlxForwarding = Feature{
1279 .name = "vmlx-forwarding",1156 .name = "vmlx-forwarding",
1280 .description = "Has multiplier accumulator forwarding",1157 .description = "Has multiplier accumulator forwarding",
1281 .llvm_name = "vmlx-forwarding",
1282 .subfeatures = &[_]*const Feature {1158 .subfeatures = &[_]*const Feature {
1283 },1159 },
1284};1160};
...@@ -1286,17 +1162,15 @@ pub const feature_vmlxForwarding = Feature{...@@ -1286,17 +1162,15 @@ pub const feature_vmlxForwarding = Feature{
1286pub const feature_virtualization = Feature{1162pub const feature_virtualization = Feature{
1287 .name = "virtualization",1163 .name = "virtualization",
1288 .description = "Supports Virtualization extension",1164 .description = "Supports Virtualization extension",
1289 .llvm_name = "virtualization",
1290 .subfeatures = &[_]*const Feature {1165 .subfeatures = &[_]*const Feature {
1291 &feature_hwdiv,
1292 &feature_hwdivArm,1166 &feature_hwdivArm,
1167 &feature_hwdiv,
1293 },1168 },
1294};1169};
12951170
1296pub const feature_zcz = Feature{1171pub const feature_zcz = Feature{
1297 .name = "zcz",1172 .name = "zcz",
1298 .description = "Has zero-cycle zeroing instructions",1173 .description = "Has zero-cycle zeroing instructions",
1299 .llvm_name = "zcz",
1300 .subfeatures = &[_]*const Feature {1174 .subfeatures = &[_]*const Feature {
1301 },1175 },
1302};1176};
...@@ -1304,36 +1178,33 @@ pub const feature_zcz = Feature{...@@ -1304,36 +1178,33 @@ pub const feature_zcz = Feature{
1304pub const feature_mvefp = Feature{1178pub const feature_mvefp = Feature{
1305 .name = "mve.fp",1179 .name = "mve.fp",
1306 .description = "Support M-Class Vector Extension with integer and floating ops",1180 .description = "Support M-Class Vector Extension with integer and floating ops",
1307 .llvm_name = "mve.fp",
1308 .subfeatures = &[_]*const Feature {1181 .subfeatures = &[_]*const Feature {
1309 &feature_v7clrex,
1310 &feature_thumb2,
1311 &feature_fp16,
1312 &feature_v4t,
1313 &feature_dsp,1182 &feature_dsp,
1314 &feature_perfmon,
1315 &feature_fpregs,1183 &feature_fpregs,
1184 &feature_v4t,
1185 &feature_thumb2,
1186 &feature_v7clrex,
1187 &feature_perfmon,
1188 &feature_fp16,
1316 },1189 },
1317};1190};
13181191
1319pub const feature_mve = Feature{1192pub const feature_mve = Feature{
1320 .name = "mve",1193 .name = "mve",
1321 .description = "Support M-Class Vector Extension with integer ops",1194 .description = "Support M-Class Vector Extension with integer ops",
1322 .llvm_name = "mve",
1323 .subfeatures = &[_]*const Feature {1195 .subfeatures = &[_]*const Feature {
1324 &feature_perfmon,
1325 &feature_v7clrex,
1326 &feature_thumb2,
1327 &feature_v4t,
1328 &feature_dsp,1196 &feature_dsp,
1329 &feature_fpregs,1197 &feature_fpregs,
1198 &feature_thumb2,
1199 &feature_v7clrex,
1200 &feature_perfmon,
1201 &feature_v4t,
1330 },1202 },
1331};1203};
13321204
1333pub const feature_v4t = Feature{1205pub const feature_v4t = Feature{
1334 .name = "v4t",1206 .name = "v4t",
1335 .description = "Support ARM v4T instructions",1207 .description = "Support ARM v4T instructions",
1336 .llvm_name = "v4t",
1337 .subfeatures = &[_]*const Feature {1208 .subfeatures = &[_]*const Feature {
1338 },1209 },
1339};1210};
...@@ -1341,7 +1212,6 @@ pub const feature_v4t = Feature{...@@ -1341,7 +1212,6 @@ pub const feature_v4t = Feature{
1341pub const feature_v5te = Feature{1212pub const feature_v5te = Feature{
1342 .name = "v5te",1213 .name = "v5te",
1343 .description = "Support ARM v5TE, v5TEj, and v5TExp instructions",1214 .description = "Support ARM v5TE, v5TEj, and v5TExp instructions",
1344 .llvm_name = "v5te",
1345 .subfeatures = &[_]*const Feature {1215 .subfeatures = &[_]*const Feature {
1346 &feature_v4t,1216 &feature_v4t,
1347 },1217 },
...@@ -1350,7 +1220,6 @@ pub const feature_v5te = Feature{...@@ -1350,7 +1220,6 @@ pub const feature_v5te = Feature{
1350pub const feature_v5t = Feature{1220pub const feature_v5t = Feature{
1351 .name = "v5t",1221 .name = "v5t",
1352 .description = "Support ARM v5T instructions",1222 .description = "Support ARM v5T instructions",
1353 .llvm_name = "v5t",
1354 .subfeatures = &[_]*const Feature {1223 .subfeatures = &[_]*const Feature {
1355 &feature_v4t,1224 &feature_v4t,
1356 },1225 },
...@@ -1359,7 +1228,6 @@ pub const feature_v5t = Feature{...@@ -1359,7 +1228,6 @@ pub const feature_v5t = Feature{
1359pub const feature_v6k = Feature{1228pub const feature_v6k = Feature{
1360 .name = "v6k",1229 .name = "v6k",
1361 .description = "Support ARM v6k instructions",1230 .description = "Support ARM v6k instructions",
1362 .llvm_name = "v6k",
1363 .subfeatures = &[_]*const Feature {1231 .subfeatures = &[_]*const Feature {
1364 &feature_v4t,1232 &feature_v4t,
1365 },1233 },
...@@ -1368,7 +1236,6 @@ pub const feature_v6k = Feature{...@@ -1368,7 +1236,6 @@ pub const feature_v6k = Feature{
1368pub const feature_v6m = Feature{1236pub const feature_v6m = Feature{
1369 .name = "v6m",1237 .name = "v6m",
1370 .description = "Support ARM v6M instructions",1238 .description = "Support ARM v6M instructions",
1371 .llvm_name = "v6m",
1372 .subfeatures = &[_]*const Feature {1239 .subfeatures = &[_]*const Feature {
1373 &feature_v4t,1240 &feature_v4t,
1374 },1241 },
...@@ -1377,7 +1244,6 @@ pub const feature_v6m = Feature{...@@ -1377,7 +1244,6 @@ pub const feature_v6m = Feature{
1377pub const feature_v6 = Feature{1244pub const feature_v6 = Feature{
1378 .name = "v6",1245 .name = "v6",
1379 .description = "Support ARM v6 instructions",1246 .description = "Support ARM v6 instructions",
1380 .llvm_name = "v6",
1381 .subfeatures = &[_]*const Feature {1247 .subfeatures = &[_]*const Feature {
1382 &feature_v4t,1248 &feature_v4t,
1383 },1249 },
...@@ -1386,29 +1252,26 @@ pub const feature_v6 = Feature{...@@ -1386,29 +1252,26 @@ pub const feature_v6 = Feature{
1386pub const feature_v6t2 = Feature{1252pub const feature_v6t2 = Feature{
1387 .name = "v6t2",1253 .name = "v6t2",
1388 .description = "Support ARM v6t2 instructions",1254 .description = "Support ARM v6t2 instructions",
1389 .llvm_name = "v6t2",
1390 .subfeatures = &[_]*const Feature {1255 .subfeatures = &[_]*const Feature {
1391 &feature_v4t,
1392 &feature_thumb2,1256 &feature_thumb2,
1257 &feature_v4t,
1393 },1258 },
1394};1259};
13951260
1396pub const feature_v7 = Feature{1261pub const feature_v7 = Feature{
1397 .name = "v7",1262 .name = "v7",
1398 .description = "Support ARM v7 instructions",1263 .description = "Support ARM v7 instructions",
1399 .llvm_name = "v7",
1400 .subfeatures = &[_]*const Feature {1264 .subfeatures = &[_]*const Feature {
1401 &feature_v4t,1265 &feature_thumb2,
1402 &feature_v7clrex,1266 &feature_v7clrex,
1267 &feature_v4t,
1403 &feature_perfmon,1268 &feature_perfmon,
1404 &feature_thumb2,
1405 },1269 },
1406};1270};
14071271
1408pub const feature_v8m = Feature{1272pub const feature_v8m = Feature{
1409 .name = "v8m",1273 .name = "v8m",
1410 .description = "Support ARM v8M Baseline instructions",1274 .description = "Support ARM v8M Baseline instructions",
1411 .llvm_name = "v8m",
1412 .subfeatures = &[_]*const Feature {1275 .subfeatures = &[_]*const Feature {
1413 &feature_v4t,1276 &feature_v4t,
1414 },1277 },
...@@ -1417,114 +1280,105 @@ pub const feature_v8m = Feature{...@@ -1417,114 +1280,105 @@ pub const feature_v8m = Feature{
1417pub const feature_v8mmain = Feature{1280pub const feature_v8mmain = Feature{
1418 .name = "v8m.main",1281 .name = "v8m.main",
1419 .description = "Support ARM v8M Mainline instructions",1282 .description = "Support ARM v8M Mainline instructions",
1420 .llvm_name = "v8m.main",
1421 .subfeatures = &[_]*const Feature {1283 .subfeatures = &[_]*const Feature {
1284 &feature_thumb2,
1285 &feature_v7clrex,
1422 &feature_v4t,1286 &feature_v4t,
1423 &feature_perfmon,1287 &feature_perfmon,
1424 &feature_v7clrex,
1425 &feature_thumb2,
1426 },1288 },
1427};1289};
14281290
1429pub const feature_v8 = Feature{1291pub const feature_v8 = Feature{
1430 .name = "v8",1292 .name = "v8",
1431 .description = "Support ARM v8 instructions",1293 .description = "Support ARM v8 instructions",
1432 .llvm_name = "v8",
1433 .subfeatures = &[_]*const Feature {1294 .subfeatures = &[_]*const Feature {
1434 &feature_acquireRelease,
1435 &feature_v7clrex,
1436 &feature_thumb2,1295 &feature_thumb2,
1437 &feature_v4t,1296 &feature_v7clrex,
1297 &feature_acquireRelease,
1438 &feature_perfmon,1298 &feature_perfmon,
1299 &feature_v4t,
1439 },1300 },
1440};1301};
14411302
1442pub const feature_v81mmain = Feature{1303pub const feature_v81mmain = Feature{
1443 .name = "v8.1m.main",1304 .name = "v8.1m.main",
1444 .description = "Support ARM v8-1M Mainline instructions",1305 .description = "Support ARM v8-1M Mainline instructions",
1445 .llvm_name = "v8.1m.main",
1446 .subfeatures = &[_]*const Feature {1306 .subfeatures = &[_]*const Feature {
1447 &feature_v4t,1307 &feature_thumb2,
1448 &feature_v7clrex,1308 &feature_v7clrex,
1309 &feature_v4t,
1449 &feature_perfmon,1310 &feature_perfmon,
1450 &feature_thumb2,
1451 },1311 },
1452};1312};
14531313
1454pub const feature_v81a = Feature{1314pub const feature_v81a = Feature{
1455 .name = "v8.1a",1315 .name = "v8.1a",
1456 .description = "Support ARM v8.1a instructions",1316 .description = "Support ARM v8.1a instructions",
1457 .llvm_name = "v8.1a",
1458 .subfeatures = &[_]*const Feature {1317 .subfeatures = &[_]*const Feature {
1459 &feature_acquireRelease,
1460 &feature_v7clrex,
1461 &feature_thumb2,1318 &feature_thumb2,
1462 &feature_v4t,1319 &feature_v7clrex,
1320 &feature_acquireRelease,
1463 &feature_perfmon,1321 &feature_perfmon,
1322 &feature_v4t,
1464 },1323 },
1465};1324};
14661325
1467pub const feature_v82a = Feature{1326pub const feature_v82a = Feature{
1468 .name = "v8.2a",1327 .name = "v8.2a",
1469 .description = "Support ARM v8.2a instructions",1328 .description = "Support ARM v8.2a instructions",
1470 .llvm_name = "v8.2a",
1471 .subfeatures = &[_]*const Feature {1329 .subfeatures = &[_]*const Feature {
1472 &feature_acquireRelease,
1473 &feature_v7clrex,
1474 &feature_thumb2,1330 &feature_thumb2,
1475 &feature_v4t,1331 &feature_v7clrex,
1332 &feature_acquireRelease,
1476 &feature_perfmon,1333 &feature_perfmon,
1334 &feature_v4t,
1477 },1335 },
1478};1336};
14791337
1480pub const feature_v83a = Feature{1338pub const feature_v83a = Feature{
1481 .name = "v8.3a",1339 .name = "v8.3a",
1482 .description = "Support ARM v8.3a instructions",1340 .description = "Support ARM v8.3a instructions",
1483 .llvm_name = "v8.3a",
1484 .subfeatures = &[_]*const Feature {1341 .subfeatures = &[_]*const Feature {
1485 &feature_acquireRelease,
1486 &feature_v7clrex,
1487 &feature_thumb2,1342 &feature_thumb2,
1488 &feature_v4t,1343 &feature_v7clrex,
1344 &feature_acquireRelease,
1489 &feature_perfmon,1345 &feature_perfmon,
1346 &feature_v4t,
1490 },1347 },
1491};1348};
14921349
1493pub const feature_v84a = Feature{1350pub const feature_v84a = Feature{
1494 .name = "v8.4a",1351 .name = "v8.4a",
1495 .description = "Support ARM v8.4a instructions",1352 .description = "Support ARM v8.4a instructions",
1496 .llvm_name = "v8.4a",
1497 .subfeatures = &[_]*const Feature {1353 .subfeatures = &[_]*const Feature {
1498 &feature_acquireRelease,1354 &feature_fpregs,
1499 &feature_v7clrex,
1500 &feature_thumb2,1355 &feature_thumb2,
1356 &feature_v7clrex,
1357 &feature_acquireRelease,
1358 &feature_perfmon,
1501 &feature_v4t,1359 &feature_v4t,
1502 &feature_d32,1360 &feature_d32,
1503 &feature_perfmon,
1504 &feature_fpregs,
1505 },1361 },
1506};1362};
15071363
1508pub const feature_v85a = Feature{1364pub const feature_v85a = Feature{
1509 .name = "v8.5a",1365 .name = "v8.5a",
1510 .description = "Support ARM v8.5a instructions",1366 .description = "Support ARM v8.5a instructions",
1511 .llvm_name = "v8.5a",
1512 .subfeatures = &[_]*const Feature {1367 .subfeatures = &[_]*const Feature {
1513 &feature_acquireRelease,1368 &feature_fpregs,
1514 &feature_v7clrex,
1515 &feature_thumb2,1369 &feature_thumb2,
1516 &feature_v4t,
1517 &feature_d32,
1518 &feature_sb,1370 &feature_sb,
1371 &feature_v7clrex,
1372 &feature_acquireRelease,
1519 &feature_perfmon,1373 &feature_perfmon,
1520 &feature_fpregs,1374 &feature_v4t,
1375 &feature_d32,
1521 },1376 },
1522};1377};
15231378
1524pub const feature_iwmmxt = Feature{1379pub const feature_iwmmxt = Feature{
1525 .name = "iwmmxt",1380 .name = "iwmmxt",
1526 .description = "ARMv5te architecture",1381 .description = "ARMv5te architecture",
1527 .llvm_name = "iwmmxt",
1528 .subfeatures = &[_]*const Feature {1382 .subfeatures = &[_]*const Feature {
1529 &feature_v4t,1383 &feature_v4t,
1530 },1384 },
...@@ -1533,7 +1387,6 @@ pub const feature_iwmmxt = Feature{...@@ -1533,7 +1387,6 @@ pub const feature_iwmmxt = Feature{
1533pub const feature_iwmmxt2 = Feature{1387pub const feature_iwmmxt2 = Feature{
1534 .name = "iwmmxt2",1388 .name = "iwmmxt2",
1535 .description = "ARMv5te architecture",1389 .description = "ARMv5te architecture",
1536 .llvm_name = "iwmmxt2",
1537 .subfeatures = &[_]*const Feature {1390 .subfeatures = &[_]*const Feature {
1538 &feature_v4t,1391 &feature_v4t,
1539 },1392 },
...@@ -1542,7 +1395,6 @@ pub const feature_iwmmxt2 = Feature{...@@ -1542,7 +1395,6 @@ pub const feature_iwmmxt2 = Feature{
1542pub const feature_softFloat = Feature{1395pub const feature_softFloat = Feature{
1543 .name = "soft-float",1396 .name = "soft-float",
1544 .description = "Use software floating point features.",1397 .description = "Use software floating point features.",
1545 .llvm_name = "soft-float",
1546 .subfeatures = &[_]*const Feature {1398 .subfeatures = &[_]*const Feature {
1547 },1399 },
1548};1400};
...@@ -1550,7 +1402,6 @@ pub const feature_softFloat = Feature{...@@ -1550,7 +1402,6 @@ pub const feature_softFloat = Feature{
1550pub const feature_thumbMode = Feature{1402pub const feature_thumbMode = Feature{
1551 .name = "thumb-mode",1403 .name = "thumb-mode",
1552 .description = "Thumb mode",1404 .description = "Thumb mode",
1553 .llvm_name = "thumb-mode",
1554 .subfeatures = &[_]*const Feature {1405 .subfeatures = &[_]*const Feature {
1555 },1406 },
1556};1407};
...@@ -1558,7 +1409,6 @@ pub const feature_thumbMode = Feature{...@@ -1558,7 +1409,6 @@ pub const feature_thumbMode = Feature{
1558pub const feature_a5 = Feature{1409pub const feature_a5 = Feature{
1559 .name = "a5",1410 .name = "a5",
1560 .description = "Cortex-A5 ARM processors",1411 .description = "Cortex-A5 ARM processors",
1561 .llvm_name = "a5",
1562 .subfeatures = &[_]*const Feature {1412 .subfeatures = &[_]*const Feature {
1563 },1413 },
1564};1414};
...@@ -1566,7 +1416,6 @@ pub const feature_a5 = Feature{...@@ -1566,7 +1416,6 @@ pub const feature_a5 = Feature{
1566pub const feature_a7 = Feature{1416pub const feature_a7 = Feature{
1567 .name = "a7",1417 .name = "a7",
1568 .description = "Cortex-A7 ARM processors",1418 .description = "Cortex-A7 ARM processors",
1569 .llvm_name = "a7",
1570 .subfeatures = &[_]*const Feature {1419 .subfeatures = &[_]*const Feature {
1571 },1420 },
1572};1421};
...@@ -1574,7 +1423,6 @@ pub const feature_a7 = Feature{...@@ -1574,7 +1423,6 @@ pub const feature_a7 = Feature{
1574pub const feature_a8 = Feature{1423pub const feature_a8 = Feature{
1575 .name = "a8",1424 .name = "a8",
1576 .description = "Cortex-A8 ARM processors",1425 .description = "Cortex-A8 ARM processors",
1577 .llvm_name = "a8",
1578 .subfeatures = &[_]*const Feature {1426 .subfeatures = &[_]*const Feature {
1579 },1427 },
1580};1428};
...@@ -1582,7 +1430,6 @@ pub const feature_a8 = Feature{...@@ -1582,7 +1430,6 @@ pub const feature_a8 = Feature{
1582pub const feature_a9 = Feature{1430pub const feature_a9 = Feature{
1583 .name = "a9",1431 .name = "a9",
1584 .description = "Cortex-A9 ARM processors",1432 .description = "Cortex-A9 ARM processors",
1585 .llvm_name = "a9",
1586 .subfeatures = &[_]*const Feature {1433 .subfeatures = &[_]*const Feature {
1587 },1434 },
1588};1435};
...@@ -1590,7 +1437,6 @@ pub const feature_a9 = Feature{...@@ -1590,7 +1437,6 @@ pub const feature_a9 = Feature{
1590pub const feature_a12 = Feature{1437pub const feature_a12 = Feature{
1591 .name = "a12",1438 .name = "a12",
1592 .description = "Cortex-A12 ARM processors",1439 .description = "Cortex-A12 ARM processors",
1593 .llvm_name = "a12",
1594 .subfeatures = &[_]*const Feature {1440 .subfeatures = &[_]*const Feature {
1595 },1441 },
1596};1442};
...@@ -1598,7 +1444,6 @@ pub const feature_a12 = Feature{...@@ -1598,7 +1444,6 @@ pub const feature_a12 = Feature{
1598pub const feature_a15 = Feature{1444pub const feature_a15 = Feature{
1599 .name = "a15",1445 .name = "a15",
1600 .description = "Cortex-A15 ARM processors",1446 .description = "Cortex-A15 ARM processors",
1601 .llvm_name = "a15",
1602 .subfeatures = &[_]*const Feature {1447 .subfeatures = &[_]*const Feature {
1603 },1448 },
1604};1449};
...@@ -1606,7 +1451,6 @@ pub const feature_a15 = Feature{...@@ -1606,7 +1451,6 @@ pub const feature_a15 = Feature{
1606pub const feature_a17 = Feature{1451pub const feature_a17 = Feature{
1607 .name = "a17",1452 .name = "a17",
1608 .description = "Cortex-A17 ARM processors",1453 .description = "Cortex-A17 ARM processors",
1609 .llvm_name = "a17",
1610 .subfeatures = &[_]*const Feature {1454 .subfeatures = &[_]*const Feature {
1611 },1455 },
1612};1456};
...@@ -1614,7 +1458,6 @@ pub const feature_a17 = Feature{...@@ -1614,7 +1458,6 @@ pub const feature_a17 = Feature{
1614pub const feature_a32 = Feature{1458pub const feature_a32 = Feature{
1615 .name = "a32",1459 .name = "a32",
1616 .description = "Cortex-A32 ARM processors",1460 .description = "Cortex-A32 ARM processors",
1617 .llvm_name = "a32",
1618 .subfeatures = &[_]*const Feature {1461 .subfeatures = &[_]*const Feature {
1619 },1462 },
1620};1463};
...@@ -1622,7 +1465,6 @@ pub const feature_a32 = Feature{...@@ -1622,7 +1465,6 @@ pub const feature_a32 = Feature{
1622pub const feature_a35 = Feature{1465pub const feature_a35 = Feature{
1623 .name = "a35",1466 .name = "a35",
1624 .description = "Cortex-A35 ARM processors",1467 .description = "Cortex-A35 ARM processors",
1625 .llvm_name = "a35",
1626 .subfeatures = &[_]*const Feature {1468 .subfeatures = &[_]*const Feature {
1627 },1469 },
1628};1470};
...@@ -1630,7 +1472,6 @@ pub const feature_a35 = Feature{...@@ -1630,7 +1472,6 @@ pub const feature_a35 = Feature{
1630pub const feature_a53 = Feature{1472pub const feature_a53 = Feature{
1631 .name = "a53",1473 .name = "a53",
1632 .description = "Cortex-A53 ARM processors",1474 .description = "Cortex-A53 ARM processors",
1633 .llvm_name = "a53",
1634 .subfeatures = &[_]*const Feature {1475 .subfeatures = &[_]*const Feature {
1635 },1476 },
1636};1477};
...@@ -1638,7 +1479,6 @@ pub const feature_a53 = Feature{...@@ -1638,7 +1479,6 @@ pub const feature_a53 = Feature{
1638pub const feature_a55 = Feature{1479pub const feature_a55 = Feature{
1639 .name = "a55",1480 .name = "a55",
1640 .description = "Cortex-A55 ARM processors",1481 .description = "Cortex-A55 ARM processors",
1641 .llvm_name = "a55",
1642 .subfeatures = &[_]*const Feature {1482 .subfeatures = &[_]*const Feature {
1643 },1483 },
1644};1484};
...@@ -1646,7 +1486,6 @@ pub const feature_a55 = Feature{...@@ -1646,7 +1486,6 @@ pub const feature_a55 = Feature{
1646pub const feature_a57 = Feature{1486pub const feature_a57 = Feature{
1647 .name = "a57",1487 .name = "a57",
1648 .description = "Cortex-A57 ARM processors",1488 .description = "Cortex-A57 ARM processors",
1649 .llvm_name = "a57",
1650 .subfeatures = &[_]*const Feature {1489 .subfeatures = &[_]*const Feature {
1651 },1490 },
1652};1491};
...@@ -1654,7 +1493,6 @@ pub const feature_a57 = Feature{...@@ -1654,7 +1493,6 @@ pub const feature_a57 = Feature{
1654pub const feature_a72 = Feature{1493pub const feature_a72 = Feature{
1655 .name = "a72",1494 .name = "a72",
1656 .description = "Cortex-A72 ARM processors",1495 .description = "Cortex-A72 ARM processors",
1657 .llvm_name = "a72",
1658 .subfeatures = &[_]*const Feature {1496 .subfeatures = &[_]*const Feature {
1659 },1497 },
1660};1498};
...@@ -1662,7 +1500,6 @@ pub const feature_a72 = Feature{...@@ -1662,7 +1500,6 @@ pub const feature_a72 = Feature{
1662pub const feature_a73 = Feature{1500pub const feature_a73 = Feature{
1663 .name = "a73",1501 .name = "a73",
1664 .description = "Cortex-A73 ARM processors",1502 .description = "Cortex-A73 ARM processors",
1665 .llvm_name = "a73",
1666 .subfeatures = &[_]*const Feature {1503 .subfeatures = &[_]*const Feature {
1667 },1504 },
1668};1505};
...@@ -1670,7 +1507,6 @@ pub const feature_a73 = Feature{...@@ -1670,7 +1507,6 @@ pub const feature_a73 = Feature{
1670pub const feature_a75 = Feature{1507pub const feature_a75 = Feature{
1671 .name = "a75",1508 .name = "a75",
1672 .description = "Cortex-A75 ARM processors",1509 .description = "Cortex-A75 ARM processors",
1673 .llvm_name = "a75",
1674 .subfeatures = &[_]*const Feature {1510 .subfeatures = &[_]*const Feature {
1675 },1511 },
1676};1512};
...@@ -1678,7 +1514,6 @@ pub const feature_a75 = Feature{...@@ -1678,7 +1514,6 @@ pub const feature_a75 = Feature{
1678pub const feature_a76 = Feature{1514pub const feature_a76 = Feature{
1679 .name = "a76",1515 .name = "a76",
1680 .description = "Cortex-A76 ARM processors",1516 .description = "Cortex-A76 ARM processors",
1681 .llvm_name = "a76",
1682 .subfeatures = &[_]*const Feature {1517 .subfeatures = &[_]*const Feature {
1683 },1518 },
1684};1519};
...@@ -1686,33 +1521,31 @@ pub const feature_a76 = Feature{...@@ -1686,33 +1521,31 @@ pub const feature_a76 = Feature{
1686pub const feature_exynos = Feature{1521pub const feature_exynos = Feature{
1687 .name = "exynos",1522 .name = "exynos",
1688 .description = "Samsung Exynos processors",1523 .description = "Samsung Exynos processors",
1689 .llvm_name = "exynos",
1690 .subfeatures = &[_]*const Feature {1524 .subfeatures = &[_]*const Feature {
1691 &feature_slowFpBrcc,1525 &feature_useAa,
1692 &feature_slowfpvmlx,1526 &feature_hwdivArm,
1527 &feature_zcz,
1693 &feature_hwdiv,1528 &feature_hwdiv,
1529 &feature_expandFpMlx,
1694 &feature_slowVdup32,1530 &feature_slowVdup32,
1695 &feature_wideStrideVfp,1531 &feature_fpregs,
1696 &feature_fuseAes,
1697 &feature_slowVgetlni32,1532 &feature_slowVgetlni32,
1698 &feature_zcz,
1699 &feature_profUnpr,1533 &feature_profUnpr,
1700 &feature_d32,1534 &feature_wideStrideVfp,
1701 &feature_hwdivArm,
1702 &feature_retAddrStack,1535 &feature_retAddrStack,
1536 &feature_fuseAes,
1537 &feature_fuseLiterals,
1703 &feature_crc,1538 &feature_crc,
1704 &feature_expandFpMlx,1539 &feature_slowfpvmlx,
1705 &feature_useAa,1540 &feature_slowFpBrcc,
1706 &feature_dontWidenVmovs,1541 &feature_dontWidenVmovs,
1707 &feature_fpregs,1542 &feature_d32,
1708 &feature_fuseLiterals,
1709 },1543 },
1710};1544};
17111545
1712pub const feature_krait = Feature{1546pub const feature_krait = Feature{
1713 .name = "krait",1547 .name = "krait",
1714 .description = "Qualcomm Krait processors",1548 .description = "Qualcomm Krait processors",
1715 .llvm_name = "krait",
1716 .subfeatures = &[_]*const Feature {1549 .subfeatures = &[_]*const Feature {
1717 },1550 },
1718};1551};
...@@ -1720,7 +1553,6 @@ pub const feature_krait = Feature{...@@ -1720,7 +1553,6 @@ pub const feature_krait = Feature{
1720pub const feature_kryo = Feature{1553pub const feature_kryo = Feature{
1721 .name = "kryo",1554 .name = "kryo",
1722 .description = "Qualcomm Kryo processors",1555 .description = "Qualcomm Kryo processors",
1723 .llvm_name = "kryo",
1724 .subfeatures = &[_]*const Feature {1556 .subfeatures = &[_]*const Feature {
1725 },1557 },
1726};1558};
...@@ -1728,7 +1560,6 @@ pub const feature_kryo = Feature{...@@ -1728,7 +1560,6 @@ pub const feature_kryo = Feature{
1728pub const feature_m3 = Feature{1560pub const feature_m3 = Feature{
1729 .name = "m3",1561 .name = "m3",
1730 .description = "Cortex-M3 ARM processors",1562 .description = "Cortex-M3 ARM processors",
1731 .llvm_name = "m3",
1732 .subfeatures = &[_]*const Feature {1563 .subfeatures = &[_]*const Feature {
1733 },1564 },
1734};1565};
...@@ -1736,7 +1567,6 @@ pub const feature_m3 = Feature{...@@ -1736,7 +1567,6 @@ pub const feature_m3 = Feature{
1736pub const feature_r4 = Feature{1567pub const feature_r4 = Feature{
1737 .name = "r4",1568 .name = "r4",
1738 .description = "Cortex-R4 ARM processors",1569 .description = "Cortex-R4 ARM processors",
1739 .llvm_name = "r4",
1740 .subfeatures = &[_]*const Feature {1570 .subfeatures = &[_]*const Feature {
1741 },1571 },
1742};1572};
...@@ -1744,7 +1574,6 @@ pub const feature_r4 = Feature{...@@ -1744,7 +1574,6 @@ pub const feature_r4 = Feature{
1744pub const feature_r5 = Feature{1574pub const feature_r5 = Feature{
1745 .name = "r5",1575 .name = "r5",
1746 .description = "Cortex-R5 ARM processors",1576 .description = "Cortex-R5 ARM processors",
1747 .llvm_name = "r5",
1748 .subfeatures = &[_]*const Feature {1577 .subfeatures = &[_]*const Feature {
1749 },1578 },
1750};1579};
...@@ -1752,7 +1581,6 @@ pub const feature_r5 = Feature{...@@ -1752,7 +1581,6 @@ pub const feature_r5 = Feature{
1752pub const feature_r7 = Feature{1581pub const feature_r7 = Feature{
1753 .name = "r7",1582 .name = "r7",
1754 .description = "Cortex-R7 ARM processors",1583 .description = "Cortex-R7 ARM processors",
1755 .llvm_name = "r7",
1756 .subfeatures = &[_]*const Feature {1584 .subfeatures = &[_]*const Feature {
1757 },1585 },
1758};1586};
...@@ -1760,7 +1588,6 @@ pub const feature_r7 = Feature{...@@ -1760,7 +1588,6 @@ pub const feature_r7 = Feature{
1760pub const feature_r52 = Feature{1588pub const feature_r52 = Feature{
1761 .name = "r52",1589 .name = "r52",
1762 .description = "Cortex-R52 ARM processors",1590 .description = "Cortex-R52 ARM processors",
1763 .llvm_name = "r52",
1764 .subfeatures = &[_]*const Feature {1591 .subfeatures = &[_]*const Feature {
1765 },1592 },
1766};1593};
...@@ -1768,7 +1595,6 @@ pub const feature_r52 = Feature{...@@ -1768,7 +1595,6 @@ pub const feature_r52 = Feature{
1768pub const feature_swift = Feature{1595pub const feature_swift = Feature{
1769 .name = "swift",1596 .name = "swift",
1770 .description = "Swift ARM processors",1597 .description = "Swift ARM processors",
1771 .llvm_name = "swift",
1772 .subfeatures = &[_]*const Feature {1598 .subfeatures = &[_]*const Feature {
1773 },1599 },
1774};1600};
...@@ -1776,7 +1602,6 @@ pub const feature_swift = Feature{...@@ -1776,7 +1602,6 @@ pub const feature_swift = Feature{
1776pub const feature_xscale = Feature{1602pub const feature_xscale = Feature{
1777 .name = "xscale",1603 .name = "xscale",
1778 .description = "ARMv5te architecture",1604 .description = "ARMv5te architecture",
1779 .llvm_name = "xscale",
1780 .subfeatures = &[_]*const Feature {1605 .subfeatures = &[_]*const Feature {
1781 &feature_v4t,1606 &feature_v4t,
1782 },1607 },
...@@ -2032,9 +1857,9 @@ pub const cpu_arm1156t2S = Cpu{...@@ -2032,9 +1857,9 @@ pub const cpu_arm1156t2S = Cpu{
2032 .name = "arm1156t2-s",1857 .name = "arm1156t2-s",
2033 .llvm_name = "arm1156t2-s",1858 .llvm_name = "arm1156t2-s",
2034 .subfeatures = &[_]*const Feature {1859 .subfeatures = &[_]*const Feature {
2035 &feature_v4t,
2036 &feature_dsp,
2037 &feature_thumb2,1860 &feature_thumb2,
1861 &feature_dsp,
1862 &feature_v4t,
2038 &feature_armv6t2,1863 &feature_armv6t2,
2039 },1864 },
2040};1865};
...@@ -2043,9 +1868,9 @@ pub const cpu_arm1156t2fS = Cpu{...@@ -2043,9 +1868,9 @@ pub const cpu_arm1156t2fS = Cpu{
2043 .name = "arm1156t2f-s",1868 .name = "arm1156t2f-s",
2044 .llvm_name = "arm1156t2f-s",1869 .llvm_name = "arm1156t2f-s",
2045 .subfeatures = &[_]*const Feature {1870 .subfeatures = &[_]*const Feature {
2046 &feature_v4t,
2047 &feature_dsp,
2048 &feature_thumb2,1871 &feature_thumb2,
1872 &feature_dsp,
1873 &feature_v4t,
2049 &feature_armv6t2,1874 &feature_armv6t2,
2050 &feature_slowfpvmlx,1875 &feature_slowfpvmlx,
2051 &feature_fpregs,1876 &feature_fpregs,
...@@ -2241,15 +2066,15 @@ pub const cpu_cortexA12 = Cpu{...@@ -2241,15 +2066,15 @@ pub const cpu_cortexA12 = Cpu{
2241 .name = "cortex-a12",2066 .name = "cortex-a12",
2242 .llvm_name = "cortex-a12",2067 .llvm_name = "cortex-a12",
2243 .subfeatures = &[_]*const Feature {2068 .subfeatures = &[_]*const Feature {
2244 &feature_perfmon,
2245 &feature_v7clrex,
2246 &feature_db,2069 &feature_db,
2070 &feature_dsp,
2071 &feature_fpregs,
2247 &feature_thumb2,2072 &feature_thumb2,
2073 &feature_v7clrex,
2074 &feature_aclass,
2075 &feature_perfmon,
2248 &feature_v4t,2076 &feature_v4t,
2249 &feature_d32,2077 &feature_d32,
2250 &feature_aclass,
2251 &feature_dsp,
2252 &feature_fpregs,
2253 &feature_armv7A,2078 &feature_armv7A,
2254 &feature_avoidPartialCpsr,2079 &feature_avoidPartialCpsr,
2255 &feature_retAddrStack,2080 &feature_retAddrStack,
...@@ -2258,8 +2083,8 @@ pub const cpu_cortexA12 = Cpu{...@@ -2258,8 +2083,8 @@ pub const cpu_cortexA12 = Cpu{
2258 &feature_fp16,2083 &feature_fp16,
2259 &feature_vfp4,2084 &feature_vfp4,
2260 &feature_vmlxForwarding,2085 &feature_vmlxForwarding,
2261 &feature_hwdiv,
2262 &feature_hwdivArm,2086 &feature_hwdivArm,
2087 &feature_hwdiv,
2263 &feature_virtualization,2088 &feature_virtualization,
2264 &feature_a12,2089 &feature_a12,
2265 },2090 },
...@@ -2269,15 +2094,15 @@ pub const cpu_cortexA15 = Cpu{...@@ -2269,15 +2094,15 @@ pub const cpu_cortexA15 = Cpu{
2269 .name = "cortex-a15",2094 .name = "cortex-a15",
2270 .llvm_name = "cortex-a15",2095 .llvm_name = "cortex-a15",
2271 .subfeatures = &[_]*const Feature {2096 .subfeatures = &[_]*const Feature {
2272 &feature_perfmon,
2273 &feature_v7clrex,
2274 &feature_db,2097 &feature_db,
2098 &feature_dsp,
2099 &feature_fpregs,
2275 &feature_thumb2,2100 &feature_thumb2,
2101 &feature_v7clrex,
2102 &feature_aclass,
2103 &feature_perfmon,
2276 &feature_v4t,2104 &feature_v4t,
2277 &feature_d32,2105 &feature_d32,
2278 &feature_aclass,
2279 &feature_dsp,
2280 &feature_fpregs,
2281 &feature_armv7A,2106 &feature_armv7A,
2282 &feature_avoidPartialCpsr,2107 &feature_avoidPartialCpsr,
2283 &feature_vldnAlign,2108 &feature_vldnAlign,
...@@ -2289,8 +2114,8 @@ pub const cpu_cortexA15 = Cpu{...@@ -2289,8 +2114,8 @@ pub const cpu_cortexA15 = Cpu{
2289 &feature_trustzone,2114 &feature_trustzone,
2290 &feature_fp16,2115 &feature_fp16,
2291 &feature_vfp4,2116 &feature_vfp4,
2292 &feature_hwdiv,
2293 &feature_hwdivArm,2117 &feature_hwdivArm,
2118 &feature_hwdiv,
2294 &feature_virtualization,2119 &feature_virtualization,
2295 &feature_a15,2120 &feature_a15,
2296 },2121 },
...@@ -2300,15 +2125,15 @@ pub const cpu_cortexA17 = Cpu{...@@ -2300,15 +2125,15 @@ pub const cpu_cortexA17 = Cpu{
2300 .name = "cortex-a17",2125 .name = "cortex-a17",
2301 .llvm_name = "cortex-a17",2126 .llvm_name = "cortex-a17",
2302 .subfeatures = &[_]*const Feature {2127 .subfeatures = &[_]*const Feature {
2303 &feature_perfmon,
2304 &feature_v7clrex,
2305 &feature_db,2128 &feature_db,
2129 &feature_dsp,
2130 &feature_fpregs,
2306 &feature_thumb2,2131 &feature_thumb2,
2132 &feature_v7clrex,
2133 &feature_aclass,
2134 &feature_perfmon,
2307 &feature_v4t,2135 &feature_v4t,
2308 &feature_d32,2136 &feature_d32,
2309 &feature_aclass,
2310 &feature_dsp,
2311 &feature_fpregs,
2312 &feature_armv7A,2137 &feature_armv7A,
2313 &feature_avoidPartialCpsr,2138 &feature_avoidPartialCpsr,
2314 &feature_retAddrStack,2139 &feature_retAddrStack,
...@@ -2317,8 +2142,8 @@ pub const cpu_cortexA17 = Cpu{...@@ -2317,8 +2142,8 @@ pub const cpu_cortexA17 = Cpu{
2317 &feature_fp16,2142 &feature_fp16,
2318 &feature_vfp4,2143 &feature_vfp4,
2319 &feature_vmlxForwarding,2144 &feature_vmlxForwarding,
2320 &feature_hwdiv,
2321 &feature_hwdivArm,2145 &feature_hwdivArm,
2146 &feature_hwdiv,
2322 &feature_virtualization,2147 &feature_virtualization,
2323 &feature_a17,2148 &feature_a17,
2324 },2149 },
...@@ -2328,22 +2153,22 @@ pub const cpu_cortexA32 = Cpu{...@@ -2328,22 +2153,22 @@ pub const cpu_cortexA32 = Cpu{
2328 .name = "cortex-a32",2153 .name = "cortex-a32",
2329 .llvm_name = "cortex-a32",2154 .llvm_name = "cortex-a32",
2330 .subfeatures = &[_]*const Feature {2155 .subfeatures = &[_]*const Feature {
2331 &feature_mp,2156 &feature_db,
2332 &feature_acquireRelease,2157 &feature_dsp,
2333 &feature_perfmon,2158 &feature_hwdivArm,
2334 &feature_hwdiv,2159 &feature_hwdiv,
2335 &feature_trustzone,2160 &feature_trustzone,
2336 &feature_v7clrex,2161 &feature_fpregs,
2337 &feature_db,
2338 &feature_thumb2,
2339 &feature_fp16,
2340 &feature_v4t,2162 &feature_v4t,
2341 &feature_d32,2163 &feature_thumb2,
2164 &feature_v7clrex,
2342 &feature_aclass,2165 &feature_aclass,
2343 &feature_hwdivArm,
2344 &feature_crc,2166 &feature_crc,
2345 &feature_dsp,2167 &feature_mp,
2346 &feature_fpregs,2168 &feature_acquireRelease,
2169 &feature_fp16,
2170 &feature_perfmon,
2171 &feature_d32,
2347 &feature_armv8A,2172 &feature_armv8A,
2348 &feature_crypto,2173 &feature_crypto,
2349 },2174 },
...@@ -2353,22 +2178,22 @@ pub const cpu_cortexA35 = Cpu{...@@ -2353,22 +2178,22 @@ pub const cpu_cortexA35 = Cpu{
2353 .name = "cortex-a35",2178 .name = "cortex-a35",
2354 .llvm_name = "cortex-a35",2179 .llvm_name = "cortex-a35",
2355 .subfeatures = &[_]*const Feature {2180 .subfeatures = &[_]*const Feature {
2356 &feature_mp,2181 &feature_db,
2357 &feature_acquireRelease,2182 &feature_dsp,
2358 &feature_perfmon,2183 &feature_hwdivArm,
2359 &feature_hwdiv,2184 &feature_hwdiv,
2360 &feature_trustzone,2185 &feature_trustzone,
2361 &feature_v7clrex,2186 &feature_fpregs,
2362 &feature_db,
2363 &feature_thumb2,
2364 &feature_fp16,
2365 &feature_v4t,2187 &feature_v4t,
2366 &feature_d32,2188 &feature_thumb2,
2189 &feature_v7clrex,
2367 &feature_aclass,2190 &feature_aclass,
2368 &feature_hwdivArm,
2369 &feature_crc,2191 &feature_crc,
2370 &feature_dsp,2192 &feature_mp,
2371 &feature_fpregs,2193 &feature_acquireRelease,
2194 &feature_fp16,
2195 &feature_perfmon,
2196 &feature_d32,
2372 &feature_armv8A,2197 &feature_armv8A,
2373 &feature_crypto,2198 &feature_crypto,
2374 &feature_a35,2199 &feature_a35,
...@@ -2379,15 +2204,15 @@ pub const cpu_cortexA5 = Cpu{...@@ -2379,15 +2204,15 @@ pub const cpu_cortexA5 = Cpu{
2379 .name = "cortex-a5",2204 .name = "cortex-a5",
2380 .llvm_name = "cortex-a5",2205 .llvm_name = "cortex-a5",
2381 .subfeatures = &[_]*const Feature {2206 .subfeatures = &[_]*const Feature {
2382 &feature_perfmon,
2383 &feature_v7clrex,
2384 &feature_db,2207 &feature_db,
2208 &feature_dsp,
2209 &feature_fpregs,
2385 &feature_thumb2,2210 &feature_thumb2,
2211 &feature_v7clrex,
2212 &feature_aclass,
2213 &feature_perfmon,
2386 &feature_v4t,2214 &feature_v4t,
2387 &feature_d32,2215 &feature_d32,
2388 &feature_aclass,
2389 &feature_dsp,
2390 &feature_fpregs,
2391 &feature_armv7A,2216 &feature_armv7A,
2392 &feature_retAddrStack,2217 &feature_retAddrStack,
2393 &feature_slowfpvmlx,2218 &feature_slowfpvmlx,
...@@ -2405,22 +2230,22 @@ pub const cpu_cortexA53 = Cpu{...@@ -2405,22 +2230,22 @@ pub const cpu_cortexA53 = Cpu{
2405 .name = "cortex-a53",2230 .name = "cortex-a53",
2406 .llvm_name = "cortex-a53",2231 .llvm_name = "cortex-a53",
2407 .subfeatures = &[_]*const Feature {2232 .subfeatures = &[_]*const Feature {
2408 &feature_mp,2233 &feature_db,
2409 &feature_acquireRelease,2234 &feature_dsp,
2410 &feature_perfmon,2235 &feature_hwdivArm,
2411 &feature_hwdiv,2236 &feature_hwdiv,
2412 &feature_trustzone,2237 &feature_trustzone,
2413 &feature_v7clrex,2238 &feature_fpregs,
2414 &feature_db,
2415 &feature_thumb2,
2416 &feature_fp16,
2417 &feature_v4t,2239 &feature_v4t,
2418 &feature_d32,2240 &feature_thumb2,
2241 &feature_v7clrex,
2419 &feature_aclass,2242 &feature_aclass,
2420 &feature_hwdivArm,
2421 &feature_crc,2243 &feature_crc,
2422 &feature_dsp,2244 &feature_mp,
2423 &feature_fpregs,2245 &feature_acquireRelease,
2246 &feature_fp16,
2247 &feature_perfmon,
2248 &feature_d32,
2424 &feature_armv8A,2249 &feature_armv8A,
2425 &feature_crypto,2250 &feature_crypto,
2426 &feature_fpao,2251 &feature_fpao,
...@@ -2432,23 +2257,23 @@ pub const cpu_cortexA55 = Cpu{...@@ -2432,23 +2257,23 @@ pub const cpu_cortexA55 = Cpu{
2432 .name = "cortex-a55",2257 .name = "cortex-a55",
2433 .llvm_name = "cortex-a55",2258 .llvm_name = "cortex-a55",
2434 .subfeatures = &[_]*const Feature {2259 .subfeatures = &[_]*const Feature {
2435 &feature_mp,2260 &feature_db,
2436 &feature_acquireRelease,2261 &feature_dsp,
2437 &feature_perfmon,2262 &feature_hwdivArm,
2438 &feature_hwdiv,2263 &feature_hwdiv,
2439 &feature_trustzone,2264 &feature_trustzone,
2440 &feature_v7clrex,2265 &feature_fpregs,
2441 &feature_db,2266 &feature_v4t,
2442 &feature_thumb2,2267 &feature_thumb2,
2443 &feature_ras,2268 &feature_ras,
2444 &feature_fp16,2269 &feature_v7clrex,
2445 &feature_v4t,
2446 &feature_d32,
2447 &feature_aclass,2270 &feature_aclass,
2448 &feature_hwdivArm,
2449 &feature_crc,2271 &feature_crc,
2450 &feature_dsp,2272 &feature_mp,
2451 &feature_fpregs,2273 &feature_acquireRelease,
2274 &feature_fp16,
2275 &feature_perfmon,
2276 &feature_d32,
2452 &feature_armv82A,2277 &feature_armv82A,
2453 &feature_dotprod,2278 &feature_dotprod,
2454 &feature_a55,2279 &feature_a55,
...@@ -2459,22 +2284,22 @@ pub const cpu_cortexA57 = Cpu{...@@ -2459,22 +2284,22 @@ pub const cpu_cortexA57 = Cpu{
2459 .name = "cortex-a57",2284 .name = "cortex-a57",
2460 .llvm_name = "cortex-a57",2285 .llvm_name = "cortex-a57",
2461 .subfeatures = &[_]*const Feature {2286 .subfeatures = &[_]*const Feature {
2462 &feature_mp,2287 &feature_db,
2463 &feature_acquireRelease,2288 &feature_dsp,
2464 &feature_perfmon,2289 &feature_hwdivArm,
2465 &feature_hwdiv,2290 &feature_hwdiv,
2466 &feature_trustzone,2291 &feature_trustzone,
2467 &feature_v7clrex,2292 &feature_fpregs,
2468 &feature_db,
2469 &feature_thumb2,
2470 &feature_fp16,
2471 &feature_v4t,2293 &feature_v4t,
2472 &feature_d32,2294 &feature_thumb2,
2295 &feature_v7clrex,
2473 &feature_aclass,2296 &feature_aclass,
2474 &feature_hwdivArm,
2475 &feature_crc,2297 &feature_crc,
2476 &feature_dsp,2298 &feature_mp,
2477 &feature_fpregs,2299 &feature_acquireRelease,
2300 &feature_fp16,
2301 &feature_perfmon,
2302 &feature_d32,
2478 &feature_armv8A,2303 &feature_armv8A,
2479 &feature_avoidPartialCpsr,2304 &feature_avoidPartialCpsr,
2480 &feature_cheapPredicableCpsr,2305 &feature_cheapPredicableCpsr,
...@@ -2488,15 +2313,15 @@ pub const cpu_cortexA7 = Cpu{...@@ -2488,15 +2313,15 @@ pub const cpu_cortexA7 = Cpu{
2488 .name = "cortex-a7",2313 .name = "cortex-a7",
2489 .llvm_name = "cortex-a7",2314 .llvm_name = "cortex-a7",
2490 .subfeatures = &[_]*const Feature {2315 .subfeatures = &[_]*const Feature {
2491 &feature_perfmon,
2492 &feature_v7clrex,
2493 &feature_db,2316 &feature_db,
2317 &feature_dsp,
2318 &feature_fpregs,
2494 &feature_thumb2,2319 &feature_thumb2,
2320 &feature_v7clrex,
2321 &feature_aclass,
2322 &feature_perfmon,
2495 &feature_v4t,2323 &feature_v4t,
2496 &feature_d32,2324 &feature_d32,
2497 &feature_aclass,
2498 &feature_dsp,
2499 &feature_fpregs,
2500 &feature_armv7A,2325 &feature_armv7A,
2501 &feature_retAddrStack,2326 &feature_retAddrStack,
2502 &feature_slowfpvmlx,2327 &feature_slowfpvmlx,
...@@ -2507,8 +2332,8 @@ pub const cpu_cortexA7 = Cpu{...@@ -2507,8 +2332,8 @@ pub const cpu_cortexA7 = Cpu{
2507 &feature_fp16,2332 &feature_fp16,
2508 &feature_vfp4,2333 &feature_vfp4,
2509 &feature_vmlxForwarding,2334 &feature_vmlxForwarding,
2510 &feature_hwdiv,
2511 &feature_hwdivArm,2335 &feature_hwdivArm,
2336 &feature_hwdiv,
2512 &feature_virtualization,2337 &feature_virtualization,
2513 &feature_a7,2338 &feature_a7,
2514 },2339 },
...@@ -2518,22 +2343,22 @@ pub const cpu_cortexA72 = Cpu{...@@ -2518,22 +2343,22 @@ pub const cpu_cortexA72 = Cpu{
2518 .name = "cortex-a72",2343 .name = "cortex-a72",
2519 .llvm_name = "cortex-a72",2344 .llvm_name = "cortex-a72",
2520 .subfeatures = &[_]*const Feature {2345 .subfeatures = &[_]*const Feature {
2521 &feature_mp,2346 &feature_db,
2522 &feature_acquireRelease,2347 &feature_dsp,
2523 &feature_perfmon,2348 &feature_hwdivArm,
2524 &feature_hwdiv,2349 &feature_hwdiv,
2525 &feature_trustzone,2350 &feature_trustzone,
2526 &feature_v7clrex,2351 &feature_fpregs,
2527 &feature_db,
2528 &feature_thumb2,
2529 &feature_fp16,
2530 &feature_v4t,2352 &feature_v4t,
2531 &feature_d32,2353 &feature_thumb2,
2354 &feature_v7clrex,
2532 &feature_aclass,2355 &feature_aclass,
2533 &feature_hwdivArm,
2534 &feature_crc,2356 &feature_crc,
2535 &feature_dsp,2357 &feature_mp,
2536 &feature_fpregs,2358 &feature_acquireRelease,
2359 &feature_fp16,
2360 &feature_perfmon,
2361 &feature_d32,
2537 &feature_armv8A,2362 &feature_armv8A,
2538 &feature_crypto,2363 &feature_crypto,
2539 &feature_a72,2364 &feature_a72,
...@@ -2544,22 +2369,22 @@ pub const cpu_cortexA73 = Cpu{...@@ -2544,22 +2369,22 @@ pub const cpu_cortexA73 = Cpu{
2544 .name = "cortex-a73",2369 .name = "cortex-a73",
2545 .llvm_name = "cortex-a73",2370 .llvm_name = "cortex-a73",
2546 .subfeatures = &[_]*const Feature {2371 .subfeatures = &[_]*const Feature {
2547 &feature_mp,2372 &feature_db,
2548 &feature_acquireRelease,2373 &feature_dsp,
2549 &feature_perfmon,2374 &feature_hwdivArm,
2550 &feature_hwdiv,2375 &feature_hwdiv,
2551 &feature_trustzone,2376 &feature_trustzone,
2552 &feature_v7clrex,2377 &feature_fpregs,
2553 &feature_db,
2554 &feature_thumb2,
2555 &feature_fp16,
2556 &feature_v4t,2378 &feature_v4t,
2557 &feature_d32,2379 &feature_thumb2,
2380 &feature_v7clrex,
2558 &feature_aclass,2381 &feature_aclass,
2559 &feature_hwdivArm,
2560 &feature_crc,2382 &feature_crc,
2561 &feature_dsp,2383 &feature_mp,
2562 &feature_fpregs,2384 &feature_acquireRelease,
2385 &feature_fp16,
2386 &feature_perfmon,
2387 &feature_d32,
2563 &feature_armv8A,2388 &feature_armv8A,
2564 &feature_crypto,2389 &feature_crypto,
2565 &feature_a73,2390 &feature_a73,
...@@ -2570,23 +2395,23 @@ pub const cpu_cortexA75 = Cpu{...@@ -2570,23 +2395,23 @@ pub const cpu_cortexA75 = Cpu{
2570 .name = "cortex-a75",2395 .name = "cortex-a75",
2571 .llvm_name = "cortex-a75",2396 .llvm_name = "cortex-a75",
2572 .subfeatures = &[_]*const Feature {2397 .subfeatures = &[_]*const Feature {
2573 &feature_mp,2398 &feature_db,
2574 &feature_acquireRelease,2399 &feature_dsp,
2575 &feature_perfmon,2400 &feature_hwdivArm,
2576 &feature_hwdiv,2401 &feature_hwdiv,
2577 &feature_trustzone,2402 &feature_trustzone,
2578 &feature_v7clrex,2403 &feature_fpregs,
2579 &feature_db,2404 &feature_v4t,
2580 &feature_thumb2,2405 &feature_thumb2,
2581 &feature_ras,2406 &feature_ras,
2582 &feature_fp16,2407 &feature_v7clrex,
2583 &feature_v4t,
2584 &feature_d32,
2585 &feature_aclass,2408 &feature_aclass,
2586 &feature_hwdivArm,
2587 &feature_crc,2409 &feature_crc,
2588 &feature_dsp,2410 &feature_mp,
2589 &feature_fpregs,2411 &feature_acquireRelease,
2412 &feature_fp16,
2413 &feature_perfmon,
2414 &feature_d32,
2590 &feature_armv82A,2415 &feature_armv82A,
2591 &feature_dotprod,2416 &feature_dotprod,
2592 &feature_a75,2417 &feature_a75,
...@@ -2597,23 +2422,23 @@ pub const cpu_cortexA76 = Cpu{...@@ -2597,23 +2422,23 @@ pub const cpu_cortexA76 = Cpu{
2597 .name = "cortex-a76",2422 .name = "cortex-a76",
2598 .llvm_name = "cortex-a76",2423 .llvm_name = "cortex-a76",
2599 .subfeatures = &[_]*const Feature {2424 .subfeatures = &[_]*const Feature {
2600 &feature_mp,2425 &feature_db,
2601 &feature_acquireRelease,2426 &feature_dsp,
2602 &feature_perfmon,2427 &feature_hwdivArm,
2603 &feature_hwdiv,2428 &feature_hwdiv,
2604 &feature_trustzone,2429 &feature_trustzone,
2605 &feature_v7clrex,2430 &feature_fpregs,
2606 &feature_db,2431 &feature_v4t,
2607 &feature_thumb2,2432 &feature_thumb2,
2608 &feature_ras,2433 &feature_ras,
2609 &feature_fp16,2434 &feature_v7clrex,
2610 &feature_v4t,
2611 &feature_d32,
2612 &feature_aclass,2435 &feature_aclass,
2613 &feature_hwdivArm,
2614 &feature_crc,2436 &feature_crc,
2615 &feature_dsp,2437 &feature_mp,
2616 &feature_fpregs,2438 &feature_acquireRelease,
2439 &feature_fp16,
2440 &feature_perfmon,
2441 &feature_d32,
2617 &feature_armv82A,2442 &feature_armv82A,
2618 &feature_crypto,2443 &feature_crypto,
2619 &feature_dotprod,2444 &feature_dotprod,
...@@ -2626,23 +2451,23 @@ pub const cpu_cortexA76ae = Cpu{...@@ -2626,23 +2451,23 @@ pub const cpu_cortexA76ae = Cpu{
2626 .name = "cortex-a76ae",2451 .name = "cortex-a76ae",
2627 .llvm_name = "cortex-a76ae",2452 .llvm_name = "cortex-a76ae",
2628 .subfeatures = &[_]*const Feature {2453 .subfeatures = &[_]*const Feature {
2629 &feature_mp,2454 &feature_db,
2630 &feature_acquireRelease,2455 &feature_dsp,
2631 &feature_perfmon,2456 &feature_hwdivArm,
2632 &feature_hwdiv,2457 &feature_hwdiv,
2633 &feature_trustzone,2458 &feature_trustzone,
2634 &feature_v7clrex,2459 &feature_fpregs,
2635 &feature_db,2460 &feature_v4t,
2636 &feature_thumb2,2461 &feature_thumb2,
2637 &feature_ras,2462 &feature_ras,
2638 &feature_fp16,2463 &feature_v7clrex,
2639 &feature_v4t,
2640 &feature_d32,
2641 &feature_aclass,2464 &feature_aclass,
2642 &feature_hwdivArm,
2643 &feature_crc,2465 &feature_crc,
2644 &feature_dsp,2466 &feature_mp,
2645 &feature_fpregs,2467 &feature_acquireRelease,
2468 &feature_fp16,
2469 &feature_perfmon,
2470 &feature_d32,
2646 &feature_armv82A,2471 &feature_armv82A,
2647 &feature_crypto,2472 &feature_crypto,
2648 &feature_dotprod,2473 &feature_dotprod,
...@@ -2655,15 +2480,15 @@ pub const cpu_cortexA8 = Cpu{...@@ -2655,15 +2480,15 @@ pub const cpu_cortexA8 = Cpu{
2655 .name = "cortex-a8",2480 .name = "cortex-a8",
2656 .llvm_name = "cortex-a8",2481 .llvm_name = "cortex-a8",
2657 .subfeatures = &[_]*const Feature {2482 .subfeatures = &[_]*const Feature {
2658 &feature_perfmon,
2659 &feature_v7clrex,
2660 &feature_db,2483 &feature_db,
2484 &feature_dsp,
2485 &feature_fpregs,
2661 &feature_thumb2,2486 &feature_thumb2,
2487 &feature_v7clrex,
2488 &feature_aclass,
2489 &feature_perfmon,
2662 &feature_v4t,2490 &feature_v4t,
2663 &feature_d32,2491 &feature_d32,
2664 &feature_aclass,
2665 &feature_dsp,
2666 &feature_fpregs,
2667 &feature_armv7A,2492 &feature_armv7A,
2668 &feature_retAddrStack,2493 &feature_retAddrStack,
2669 &feature_slowfpvmlx,2494 &feature_slowfpvmlx,
...@@ -2680,15 +2505,15 @@ pub const cpu_cortexA9 = Cpu{...@@ -2680,15 +2505,15 @@ pub const cpu_cortexA9 = Cpu{
2680 .name = "cortex-a9",2505 .name = "cortex-a9",
2681 .llvm_name = "cortex-a9",2506 .llvm_name = "cortex-a9",
2682 .subfeatures = &[_]*const Feature {2507 .subfeatures = &[_]*const Feature {
2683 &feature_perfmon,
2684 &feature_v7clrex,
2685 &feature_db,2508 &feature_db,
2509 &feature_dsp,
2510 &feature_fpregs,
2686 &feature_thumb2,2511 &feature_thumb2,
2512 &feature_v7clrex,
2513 &feature_aclass,
2514 &feature_perfmon,
2687 &feature_v4t,2515 &feature_v4t,
2688 &feature_d32,2516 &feature_d32,
2689 &feature_aclass,
2690 &feature_dsp,
2691 &feature_fpregs,
2692 &feature_armv7A,2517 &feature_armv7A,
2693 &feature_avoidPartialCpsr,2518 &feature_avoidPartialCpsr,
2694 &feature_vldnAlign,2519 &feature_vldnAlign,
...@@ -2711,11 +2536,11 @@ pub const cpu_cortexM0 = Cpu{...@@ -2711,11 +2536,11 @@ pub const cpu_cortexM0 = Cpu{
2711 .llvm_name = "cortex-m0",2536 .llvm_name = "cortex-m0",
2712 .subfeatures = &[_]*const Feature {2537 .subfeatures = &[_]*const Feature {
2713 &feature_db,2538 &feature_db,
2714 &feature_thumbMode,
2715 &feature_mclass,2539 &feature_mclass,
2540 &feature_thumbMode,
2541 &feature_strictAlign,
2716 &feature_noarm,2542 &feature_noarm,
2717 &feature_v4t,2543 &feature_v4t,
2718 &feature_strictAlign,
2719 &feature_armv6M,2544 &feature_armv6M,
2720 },2545 },
2721};2546};
...@@ -2725,11 +2550,11 @@ pub const cpu_cortexM0plus = Cpu{...@@ -2725,11 +2550,11 @@ pub const cpu_cortexM0plus = Cpu{
2725 .llvm_name = "cortex-m0plus",2550 .llvm_name = "cortex-m0plus",
2726 .subfeatures = &[_]*const Feature {2551 .subfeatures = &[_]*const Feature {
2727 &feature_db,2552 &feature_db,
2728 &feature_thumbMode,
2729 &feature_mclass,2553 &feature_mclass,
2554 &feature_thumbMode,
2555 &feature_strictAlign,
2730 &feature_noarm,2556 &feature_noarm,
2731 &feature_v4t,2557 &feature_v4t,
2732 &feature_strictAlign,
2733 &feature_armv6M,2558 &feature_armv6M,
2734 },2559 },
2735};2560};
...@@ -2739,11 +2564,11 @@ pub const cpu_cortexM1 = Cpu{...@@ -2739,11 +2564,11 @@ pub const cpu_cortexM1 = Cpu{
2739 .llvm_name = "cortex-m1",2564 .llvm_name = "cortex-m1",
2740 .subfeatures = &[_]*const Feature {2565 .subfeatures = &[_]*const Feature {
2741 &feature_db,2566 &feature_db,
2742 &feature_thumbMode,
2743 &feature_mclass,2567 &feature_mclass,
2568 &feature_thumbMode,
2569 &feature_strictAlign,
2744 &feature_noarm,2570 &feature_noarm,
2745 &feature_v4t,2571 &feature_v4t,
2746 &feature_strictAlign,
2747 &feature_armv6M,2572 &feature_armv6M,
2748 },2573 },
2749};2574};
...@@ -2752,16 +2577,16 @@ pub const cpu_cortexM23 = Cpu{...@@ -2752,16 +2577,16 @@ pub const cpu_cortexM23 = Cpu{
2752 .name = "cortex-m23",2577 .name = "cortex-m23",
2753 .llvm_name = "cortex-m23",2578 .llvm_name = "cortex-m23",
2754 .subfeatures = &[_]*const Feature {2579 .subfeatures = &[_]*const Feature {
2755 &feature_acquireRelease,
2756 &feature_v7clrex,
2757 &feature_db,2580 &feature_db,
2758 &feature_msecext8,
2759 &feature_thumbMode,
2760 &feature_mclass,2581 &feature_mclass,
2582 &feature_hwdiv,
2583 &feature_thumbMode,
2584 &feature_strictAlign,
2585 &feature_v7clrex,
2586 &feature_msecext8,
2587 &feature_acquireRelease,
2761 &feature_noarm,2588 &feature_noarm,
2762 &feature_v4t,2589 &feature_v4t,
2763 &feature_strictAlign,
2764 &feature_hwdiv,
2765 &feature_armv8Mbase,2590 &feature_armv8Mbase,
2766 &feature_noMovt,2591 &feature_noMovt,
2767 },2592 },
...@@ -2771,15 +2596,15 @@ pub const cpu_cortexM3 = Cpu{...@@ -2771,15 +2596,15 @@ pub const cpu_cortexM3 = Cpu{
2771 .name = "cortex-m3",2596 .name = "cortex-m3",
2772 .llvm_name = "cortex-m3",2597 .llvm_name = "cortex-m3",
2773 .subfeatures = &[_]*const Feature {2598 .subfeatures = &[_]*const Feature {
2774 &feature_v7clrex,
2775 &feature_db,2599 &feature_db,
2776 &feature_thumb2,
2777 &feature_mclass,2600 &feature_mclass,
2601 &feature_hwdiv,
2778 &feature_thumbMode,2602 &feature_thumbMode,
2603 &feature_thumb2,
2604 &feature_v7clrex,
2605 &feature_perfmon,
2779 &feature_noarm,2606 &feature_noarm,
2780 &feature_v4t,2607 &feature_v4t,
2781 &feature_perfmon,
2782 &feature_hwdiv,
2783 &feature_armv7M,2608 &feature_armv7M,
2784 &feature_noBranchPredictor,2609 &feature_noBranchPredictor,
2785 &feature_loopAlign,2610 &feature_loopAlign,
...@@ -2793,17 +2618,17 @@ pub const cpu_cortexM33 = Cpu{...@@ -2793,17 +2618,17 @@ pub const cpu_cortexM33 = Cpu{
2793 .name = "cortex-m33",2618 .name = "cortex-m33",
2794 .llvm_name = "cortex-m33",2619 .llvm_name = "cortex-m33",
2795 .subfeatures = &[_]*const Feature {2620 .subfeatures = &[_]*const Feature {
2796 &feature_acquireRelease,
2797 &feature_v7clrex,
2798 &feature_db,2621 &feature_db,
2799 &feature_msecext8,
2800 &feature_thumb2,
2801 &feature_mclass,2622 &feature_mclass,
2623 &feature_hwdiv,
2802 &feature_thumbMode,2624 &feature_thumbMode,
2625 &feature_thumb2,
2626 &feature_v7clrex,
2627 &feature_msecext8,
2628 &feature_acquireRelease,
2629 &feature_perfmon,
2803 &feature_noarm,2630 &feature_noarm,
2804 &feature_v4t,2631 &feature_v4t,
2805 &feature_perfmon,
2806 &feature_hwdiv,
2807 &feature_armv8Mmain,2632 &feature_armv8Mmain,
2808 &feature_dsp,2633 &feature_dsp,
2809 &feature_fp16,2634 &feature_fp16,
...@@ -2821,17 +2646,17 @@ pub const cpu_cortexM35p = Cpu{...@@ -2821,17 +2646,17 @@ pub const cpu_cortexM35p = Cpu{
2821 .name = "cortex-m35p",2646 .name = "cortex-m35p",
2822 .llvm_name = "cortex-m35p",2647 .llvm_name = "cortex-m35p",
2823 .subfeatures = &[_]*const Feature {2648 .subfeatures = &[_]*const Feature {
2824 &feature_acquireRelease,
2825 &feature_v7clrex,
2826 &feature_db,2649 &feature_db,
2827 &feature_msecext8,
2828 &feature_thumb2,
2829 &feature_mclass,2650 &feature_mclass,
2651 &feature_hwdiv,
2830 &feature_thumbMode,2652 &feature_thumbMode,
2653 &feature_thumb2,
2654 &feature_v7clrex,
2655 &feature_msecext8,
2656 &feature_acquireRelease,
2657 &feature_perfmon,
2831 &feature_noarm,2658 &feature_noarm,
2832 &feature_v4t,2659 &feature_v4t,
2833 &feature_perfmon,
2834 &feature_hwdiv,
2835 &feature_armv8Mmain,2660 &feature_armv8Mmain,
2836 &feature_dsp,2661 &feature_dsp,
2837 &feature_fp16,2662 &feature_fp16,
...@@ -2849,16 +2674,16 @@ pub const cpu_cortexM4 = Cpu{...@@ -2849,16 +2674,16 @@ pub const cpu_cortexM4 = Cpu{
2849 .name = "cortex-m4",2674 .name = "cortex-m4",
2850 .llvm_name = "cortex-m4",2675 .llvm_name = "cortex-m4",
2851 .subfeatures = &[_]*const Feature {2676 .subfeatures = &[_]*const Feature {
2852 &feature_perfmon,
2853 &feature_v7clrex,
2854 &feature_db,2677 &feature_db,
2855 &feature_thumb2,
2856 &feature_mclass,2678 &feature_mclass,
2679 &feature_hwdiv,
2680 &feature_dsp,
2857 &feature_thumbMode,2681 &feature_thumbMode,
2682 &feature_thumb2,
2683 &feature_v7clrex,
2684 &feature_perfmon,
2858 &feature_noarm,2685 &feature_noarm,
2859 &feature_v4t,2686 &feature_v4t,
2860 &feature_dsp,
2861 &feature_hwdiv,
2862 &feature_armv7eM,2687 &feature_armv7eM,
2863 &feature_noBranchPredictor,2688 &feature_noBranchPredictor,
2864 &feature_slowfpvmlx,2689 &feature_slowfpvmlx,
...@@ -2875,19 +2700,19 @@ pub const cpu_cortexM7 = Cpu{...@@ -2875,19 +2700,19 @@ pub const cpu_cortexM7 = Cpu{
2875 .name = "cortex-m7",2700 .name = "cortex-m7",
2876 .llvm_name = "cortex-m7",2701 .llvm_name = "cortex-m7",
2877 .subfeatures = &[_]*const Feature {2702 .subfeatures = &[_]*const Feature {
2878 &feature_perfmon,
2879 &feature_v7clrex,
2880 &feature_db,2703 &feature_db,
2881 &feature_thumb2,
2882 &feature_mclass,2704 &feature_mclass,
2705 &feature_hwdiv,
2706 &feature_dsp,
2883 &feature_thumbMode,2707 &feature_thumbMode,
2708 &feature_thumb2,
2709 &feature_v7clrex,
2710 &feature_perfmon,
2884 &feature_noarm,2711 &feature_noarm,
2885 &feature_v4t,2712 &feature_v4t,
2886 &feature_dsp,
2887 &feature_hwdiv,
2888 &feature_armv7eM,2713 &feature_armv7eM,
2889 &feature_fp16,
2890 &feature_fpregs,2714 &feature_fpregs,
2715 &feature_fp16,
2891 &feature_fpArmv8d16,2716 &feature_fpArmv8d16,
2892 },2717 },
2893};2718};
...@@ -2896,14 +2721,14 @@ pub const cpu_cortexR4 = Cpu{...@@ -2896,14 +2721,14 @@ pub const cpu_cortexR4 = Cpu{
2896 .name = "cortex-r4",2721 .name = "cortex-r4",
2897 .llvm_name = "cortex-r4",2722 .llvm_name = "cortex-r4",
2898 .subfeatures = &[_]*const Feature {2723 .subfeatures = &[_]*const Feature {
2899 &feature_perfmon,
2900 &feature_v7clrex,
2901 &feature_db,2724 &feature_db,
2902 &feature_thumb2,
2903 &feature_v4t,
2904 &feature_dsp,2725 &feature_dsp,
2905 &feature_hwdiv,2726 &feature_hwdiv,
2906 &feature_rclass,2727 &feature_rclass,
2728 &feature_thumb2,
2729 &feature_v7clrex,
2730 &feature_perfmon,
2731 &feature_v4t,
2907 &feature_armv7R,2732 &feature_armv7R,
2908 &feature_avoidPartialCpsr,2733 &feature_avoidPartialCpsr,
2909 &feature_retAddrStack,2734 &feature_retAddrStack,
...@@ -2915,14 +2740,14 @@ pub const cpu_cortexR4f = Cpu{...@@ -2915,14 +2740,14 @@ pub const cpu_cortexR4f = Cpu{
2915 .name = "cortex-r4f",2740 .name = "cortex-r4f",
2916 .llvm_name = "cortex-r4f",2741 .llvm_name = "cortex-r4f",
2917 .subfeatures = &[_]*const Feature {2742 .subfeatures = &[_]*const Feature {
2918 &feature_perfmon,
2919 &feature_v7clrex,
2920 &feature_db,2743 &feature_db,
2921 &feature_thumb2,
2922 &feature_v4t,
2923 &feature_dsp,2744 &feature_dsp,
2924 &feature_hwdiv,2745 &feature_hwdiv,
2925 &feature_rclass,2746 &feature_rclass,
2747 &feature_thumb2,
2748 &feature_v7clrex,
2749 &feature_perfmon,
2750 &feature_v4t,
2926 &feature_armv7R,2751 &feature_armv7R,
2927 &feature_avoidPartialCpsr,2752 &feature_avoidPartialCpsr,
2928 &feature_retAddrStack,2753 &feature_retAddrStack,
...@@ -2938,14 +2763,14 @@ pub const cpu_cortexR5 = Cpu{...@@ -2938,14 +2763,14 @@ pub const cpu_cortexR5 = Cpu{
2938 .name = "cortex-r5",2763 .name = "cortex-r5",
2939 .llvm_name = "cortex-r5",2764 .llvm_name = "cortex-r5",
2940 .subfeatures = &[_]*const Feature {2765 .subfeatures = &[_]*const Feature {
2941 &feature_perfmon,
2942 &feature_v7clrex,
2943 &feature_db,2766 &feature_db,
2944 &feature_thumb2,
2945 &feature_v4t,
2946 &feature_dsp,2767 &feature_dsp,
2947 &feature_hwdiv,2768 &feature_hwdiv,
2948 &feature_rclass,2769 &feature_rclass,
2770 &feature_thumb2,
2771 &feature_v7clrex,
2772 &feature_perfmon,
2773 &feature_v4t,
2949 &feature_armv7R,2774 &feature_armv7R,
2950 &feature_avoidPartialCpsr,2775 &feature_avoidPartialCpsr,
2951 &feature_hwdivArm,2776 &feature_hwdivArm,
...@@ -2962,22 +2787,22 @@ pub const cpu_cortexR52 = Cpu{...@@ -2962,22 +2787,22 @@ pub const cpu_cortexR52 = Cpu{
2962 .name = "cortex-r52",2787 .name = "cortex-r52",
2963 .llvm_name = "cortex-r52",2788 .llvm_name = "cortex-r52",
2964 .subfeatures = &[_]*const Feature {2789 .subfeatures = &[_]*const Feature {
2965 &feature_mp,
2966 &feature_acquireRelease,
2967 &feature_perfmon,
2968 &feature_hwdiv,
2969 &feature_v7clrex,
2970 &feature_db,2790 &feature_db,
2971 &feature_thumb2,2791 &feature_dsp,
2972 &feature_fp16,2792 &feature_hwdivArm,
2793 &feature_hwdiv,
2794 &feature_rclass,
2795 &feature_fpregs,
2973 &feature_v4t,2796 &feature_v4t,
2974 &feature_d32,
2975 &feature_dfb,2797 &feature_dfb,
2976 &feature_hwdivArm,2798 &feature_thumb2,
2799 &feature_v7clrex,
2800 &feature_perfmon,
2977 &feature_crc,2801 &feature_crc,
2978 &feature_dsp,2802 &feature_mp,
2979 &feature_fpregs,2803 &feature_acquireRelease,
2980 &feature_rclass,2804 &feature_fp16,
2805 &feature_d32,
2981 &feature_armv8R,2806 &feature_armv8R,
2982 &feature_fpao,2807 &feature_fpao,
2983 &feature_useAa,2808 &feature_useAa,
...@@ -2990,14 +2815,14 @@ pub const cpu_cortexR7 = Cpu{...@@ -2990,14 +2815,14 @@ pub const cpu_cortexR7 = Cpu{
2990 .name = "cortex-r7",2815 .name = "cortex-r7",
2991 .llvm_name = "cortex-r7",2816 .llvm_name = "cortex-r7",
2992 .subfeatures = &[_]*const Feature {2817 .subfeatures = &[_]*const Feature {
2993 &feature_perfmon,
2994 &feature_v7clrex,
2995 &feature_db,2818 &feature_db,
2996 &feature_thumb2,
2997 &feature_v4t,
2998 &feature_dsp,2819 &feature_dsp,
2999 &feature_hwdiv,2820 &feature_hwdiv,
3000 &feature_rclass,2821 &feature_rclass,
2822 &feature_thumb2,
2823 &feature_v7clrex,
2824 &feature_perfmon,
2825 &feature_v4t,
3001 &feature_armv7R,2826 &feature_armv7R,
3002 &feature_avoidPartialCpsr,2827 &feature_avoidPartialCpsr,
3003 &feature_fp16,2828 &feature_fp16,
...@@ -3016,14 +2841,14 @@ pub const cpu_cortexR8 = Cpu{...@@ -3016,14 +2841,14 @@ pub const cpu_cortexR8 = Cpu{
3016 .name = "cortex-r8",2841 .name = "cortex-r8",
3017 .llvm_name = "cortex-r8",2842 .llvm_name = "cortex-r8",
3018 .subfeatures = &[_]*const Feature {2843 .subfeatures = &[_]*const Feature {
3019 &feature_perfmon,
3020 &feature_v7clrex,
3021 &feature_db,2844 &feature_db,
3022 &feature_thumb2,
3023 &feature_v4t,
3024 &feature_dsp,2845 &feature_dsp,
3025 &feature_hwdiv,2846 &feature_hwdiv,
3026 &feature_rclass,2847 &feature_rclass,
2848 &feature_thumb2,
2849 &feature_v7clrex,
2850 &feature_perfmon,
2851 &feature_v4t,
3027 &feature_armv7R,2852 &feature_armv7R,
3028 &feature_avoidPartialCpsr,2853 &feature_avoidPartialCpsr,
3029 &feature_fp16,2854 &feature_fp16,
...@@ -3041,22 +2866,22 @@ pub const cpu_cyclone = Cpu{...@@ -3041,22 +2866,22 @@ pub const cpu_cyclone = Cpu{
3041 .name = "cyclone",2866 .name = "cyclone",
3042 .llvm_name = "cyclone",2867 .llvm_name = "cyclone",
3043 .subfeatures = &[_]*const Feature {2868 .subfeatures = &[_]*const Feature {
3044 &feature_mp,2869 &feature_db,
3045 &feature_acquireRelease,2870 &feature_dsp,
3046 &feature_perfmon,2871 &feature_hwdivArm,
3047 &feature_hwdiv,2872 &feature_hwdiv,
3048 &feature_trustzone,2873 &feature_trustzone,
3049 &feature_v7clrex,2874 &feature_fpregs,
3050 &feature_db,
3051 &feature_thumb2,
3052 &feature_fp16,
3053 &feature_v4t,2875 &feature_v4t,
3054 &feature_d32,2876 &feature_thumb2,
2877 &feature_v7clrex,
3055 &feature_aclass,2878 &feature_aclass,
3056 &feature_hwdivArm,
3057 &feature_crc,2879 &feature_crc,
3058 &feature_dsp,2880 &feature_mp,
3059 &feature_fpregs,2881 &feature_acquireRelease,
2882 &feature_fp16,
2883 &feature_perfmon,
2884 &feature_d32,
3060 &feature_armv8A,2885 &feature_armv8A,
3061 &feature_avoidMovsShop,2886 &feature_avoidMovsShop,
3062 &feature_avoidPartialCpsr,2887 &feature_avoidPartialCpsr,
...@@ -3085,36 +2910,36 @@ pub const cpu_exynosM1 = Cpu{...@@ -3085,36 +2910,36 @@ pub const cpu_exynosM1 = Cpu{
3085 .name = "exynos-m1",2910 .name = "exynos-m1",
3086 .llvm_name = "exynos-m1",2911 .llvm_name = "exynos-m1",
3087 .subfeatures = &[_]*const Feature {2912 .subfeatures = &[_]*const Feature {
3088 &feature_mp,2913 &feature_db,
3089 &feature_acquireRelease,2914 &feature_dsp,
3090 &feature_perfmon,2915 &feature_hwdivArm,
3091 &feature_hwdiv,2916 &feature_hwdiv,
3092 &feature_trustzone,2917 &feature_trustzone,
3093 &feature_v7clrex,2918 &feature_fpregs,
3094 &feature_db,
3095 &feature_thumb2,
3096 &feature_fp16,
3097 &feature_v4t,2919 &feature_v4t,
3098 &feature_d32,2920 &feature_thumb2,
2921 &feature_v7clrex,
3099 &feature_aclass,2922 &feature_aclass,
3100 &feature_hwdivArm,
3101 &feature_crc,2923 &feature_crc,
3102 &feature_dsp,2924 &feature_mp,
3103 &feature_fpregs,2925 &feature_acquireRelease,
2926 &feature_fp16,
2927 &feature_perfmon,
2928 &feature_d32,
3104 &feature_armv8A,2929 &feature_armv8A,
3105 &feature_slowFpBrcc,2930 &feature_useAa,
3106 &feature_slowfpvmlx,2931 &feature_zcz,
2932 &feature_expandFpMlx,
3107 &feature_slowVdup32,2933 &feature_slowVdup32,
3108 &feature_wideStrideVfp,
3109 &feature_fuseAes,
3110 &feature_slowVgetlni32,2934 &feature_slowVgetlni32,
3111 &feature_zcz,
3112 &feature_profUnpr,2935 &feature_profUnpr,
2936 &feature_wideStrideVfp,
3113 &feature_retAddrStack,2937 &feature_retAddrStack,
3114 &feature_expandFpMlx,2938 &feature_fuseAes,
3115 &feature_useAa,
3116 &feature_dontWidenVmovs,
3117 &feature_fuseLiterals,2939 &feature_fuseLiterals,
2940 &feature_slowfpvmlx,
2941 &feature_slowFpBrcc,
2942 &feature_dontWidenVmovs,
3118 &feature_exynos,2943 &feature_exynos,
3119 },2944 },
3120};2945};
...@@ -3123,36 +2948,36 @@ pub const cpu_exynosM2 = Cpu{...@@ -3123,36 +2948,36 @@ pub const cpu_exynosM2 = Cpu{
3123 .name = "exynos-m2",2948 .name = "exynos-m2",
3124 .llvm_name = "exynos-m2",2949 .llvm_name = "exynos-m2",
3125 .subfeatures = &[_]*const Feature {2950 .subfeatures = &[_]*const Feature {
3126 &feature_mp,2951 &feature_db,
3127 &feature_acquireRelease,2952 &feature_dsp,
3128 &feature_perfmon,2953 &feature_hwdivArm,
3129 &feature_hwdiv,2954 &feature_hwdiv,
3130 &feature_trustzone,2955 &feature_trustzone,
3131 &feature_v7clrex,2956 &feature_fpregs,
3132 &feature_db,
3133 &feature_thumb2,
3134 &feature_fp16,
3135 &feature_v4t,2957 &feature_v4t,
3136 &feature_d32,2958 &feature_thumb2,
2959 &feature_v7clrex,
3137 &feature_aclass,2960 &feature_aclass,
3138 &feature_hwdivArm,
3139 &feature_crc,2961 &feature_crc,
3140 &feature_dsp,2962 &feature_mp,
3141 &feature_fpregs,2963 &feature_acquireRelease,
2964 &feature_fp16,
2965 &feature_perfmon,
2966 &feature_d32,
3142 &feature_armv8A,2967 &feature_armv8A,
3143 &feature_slowFpBrcc,2968 &feature_useAa,
3144 &feature_slowfpvmlx,2969 &feature_zcz,
2970 &feature_expandFpMlx,
3145 &feature_slowVdup32,2971 &feature_slowVdup32,
3146 &feature_wideStrideVfp,
3147 &feature_fuseAes,
3148 &feature_slowVgetlni32,2972 &feature_slowVgetlni32,
3149 &feature_zcz,
3150 &feature_profUnpr,2973 &feature_profUnpr,
2974 &feature_wideStrideVfp,
3151 &feature_retAddrStack,2975 &feature_retAddrStack,
3152 &feature_expandFpMlx,2976 &feature_fuseAes,
3153 &feature_useAa,
3154 &feature_dontWidenVmovs,
3155 &feature_fuseLiterals,2977 &feature_fuseLiterals,
2978 &feature_slowfpvmlx,
2979 &feature_slowFpBrcc,
2980 &feature_dontWidenVmovs,
3156 &feature_exynos,2981 &feature_exynos,
3157 },2982 },
3158};2983};
...@@ -3161,36 +2986,36 @@ pub const cpu_exynosM3 = Cpu{...@@ -3161,36 +2986,36 @@ pub const cpu_exynosM3 = Cpu{
3161 .name = "exynos-m3",2986 .name = "exynos-m3",
3162 .llvm_name = "exynos-m3",2987 .llvm_name = "exynos-m3",
3163 .subfeatures = &[_]*const Feature {2988 .subfeatures = &[_]*const Feature {
3164 &feature_mp,2989 &feature_db,
3165 &feature_acquireRelease,2990 &feature_dsp,
3166 &feature_perfmon,2991 &feature_hwdivArm,
3167 &feature_hwdiv,2992 &feature_hwdiv,
3168 &feature_trustzone,2993 &feature_trustzone,
3169 &feature_v7clrex,2994 &feature_fpregs,
3170 &feature_db,
3171 &feature_thumb2,
3172 &feature_fp16,
3173 &feature_v4t,2995 &feature_v4t,
3174 &feature_d32,2996 &feature_thumb2,
2997 &feature_v7clrex,
3175 &feature_aclass,2998 &feature_aclass,
3176 &feature_hwdivArm,
3177 &feature_crc,2999 &feature_crc,
3178 &feature_dsp,3000 &feature_mp,
3179 &feature_fpregs,3001 &feature_acquireRelease,
3002 &feature_fp16,
3003 &feature_perfmon,
3004 &feature_d32,
3180 &feature_armv8A,3005 &feature_armv8A,
3181 &feature_slowFpBrcc,3006 &feature_useAa,
3182 &feature_slowfpvmlx,3007 &feature_zcz,
3008 &feature_expandFpMlx,
3183 &feature_slowVdup32,3009 &feature_slowVdup32,
3184 &feature_wideStrideVfp,
3185 &feature_fuseAes,
3186 &feature_slowVgetlni32,3010 &feature_slowVgetlni32,
3187 &feature_zcz,
3188 &feature_profUnpr,3011 &feature_profUnpr,
3012 &feature_wideStrideVfp,
3189 &feature_retAddrStack,3013 &feature_retAddrStack,
3190 &feature_expandFpMlx,3014 &feature_fuseAes,
3191 &feature_useAa,
3192 &feature_dontWidenVmovs,
3193 &feature_fuseLiterals,3015 &feature_fuseLiterals,
3016 &feature_slowfpvmlx,
3017 &feature_slowFpBrcc,
3018 &feature_dontWidenVmovs,
3194 &feature_exynos,3019 &feature_exynos,
3195 },3020 },
3196};3021};
...@@ -3199,39 +3024,39 @@ pub const cpu_exynosM4 = Cpu{...@@ -3199,39 +3024,39 @@ pub const cpu_exynosM4 = Cpu{
3199 .name = "exynos-m4",3024 .name = "exynos-m4",
3200 .llvm_name = "exynos-m4",3025 .llvm_name = "exynos-m4",
3201 .subfeatures = &[_]*const Feature {3026 .subfeatures = &[_]*const Feature {
3202 &feature_mp,3027 &feature_db,
3203 &feature_acquireRelease,3028 &feature_dsp,
3204 &feature_perfmon,3029 &feature_hwdivArm,
3205 &feature_hwdiv,3030 &feature_hwdiv,
3206 &feature_trustzone,3031 &feature_trustzone,
3207 &feature_v7clrex,3032 &feature_fpregs,
3208 &feature_db,3033 &feature_v4t,
3209 &feature_thumb2,3034 &feature_thumb2,
3210 &feature_ras,3035 &feature_ras,
3211 &feature_fp16,3036 &feature_v7clrex,
3212 &feature_v4t,
3213 &feature_d32,
3214 &feature_aclass,3037 &feature_aclass,
3215 &feature_hwdivArm,
3216 &feature_crc,3038 &feature_crc,
3217 &feature_dsp,3039 &feature_mp,
3218 &feature_fpregs,3040 &feature_acquireRelease,
3041 &feature_fp16,
3042 &feature_perfmon,
3043 &feature_d32,
3219 &feature_armv82A,3044 &feature_armv82A,
3220 &feature_dotprod,3045 &feature_dotprod,
3221 &feature_fullfp16,3046 &feature_fullfp16,
3222 &feature_slowFpBrcc,3047 &feature_useAa,
3223 &feature_slowfpvmlx,3048 &feature_zcz,
3049 &feature_expandFpMlx,
3224 &feature_slowVdup32,3050 &feature_slowVdup32,
3225 &feature_wideStrideVfp,
3226 &feature_fuseAes,
3227 &feature_slowVgetlni32,3051 &feature_slowVgetlni32,
3228 &feature_zcz,
3229 &feature_profUnpr,3052 &feature_profUnpr,
3053 &feature_wideStrideVfp,
3230 &feature_retAddrStack,3054 &feature_retAddrStack,
3231 &feature_expandFpMlx,3055 &feature_fuseAes,
3232 &feature_useAa,
3233 &feature_dontWidenVmovs,
3234 &feature_fuseLiterals,3056 &feature_fuseLiterals,
3057 &feature_slowfpvmlx,
3058 &feature_slowFpBrcc,
3059 &feature_dontWidenVmovs,
3235 &feature_exynos,3060 &feature_exynos,
3236 },3061 },
3237};3062};
...@@ -3240,39 +3065,39 @@ pub const cpu_exynosM5 = Cpu{...@@ -3240,39 +3065,39 @@ pub const cpu_exynosM5 = Cpu{
3240 .name = "exynos-m5",3065 .name = "exynos-m5",
3241 .llvm_name = "exynos-m5",3066 .llvm_name = "exynos-m5",
3242 .subfeatures = &[_]*const Feature {3067 .subfeatures = &[_]*const Feature {
3243 &feature_mp,3068 &feature_db,
3244 &feature_acquireRelease,3069 &feature_dsp,
3245 &feature_perfmon,3070 &feature_hwdivArm,
3246 &feature_hwdiv,3071 &feature_hwdiv,
3247 &feature_trustzone,3072 &feature_trustzone,
3248 &feature_v7clrex,3073 &feature_fpregs,
3249 &feature_db,3074 &feature_v4t,
3250 &feature_thumb2,3075 &feature_thumb2,
3251 &feature_ras,3076 &feature_ras,
3252 &feature_fp16,3077 &feature_v7clrex,
3253 &feature_v4t,
3254 &feature_d32,
3255 &feature_aclass,3078 &feature_aclass,
3256 &feature_hwdivArm,
3257 &feature_crc,3079 &feature_crc,
3258 &feature_dsp,3080 &feature_mp,
3259 &feature_fpregs,3081 &feature_acquireRelease,
3082 &feature_fp16,
3083 &feature_perfmon,
3084 &feature_d32,
3260 &feature_armv82A,3085 &feature_armv82A,
3261 &feature_dotprod,3086 &feature_dotprod,
3262 &feature_fullfp16,3087 &feature_fullfp16,
3263 &feature_slowFpBrcc,3088 &feature_useAa,
3264 &feature_slowfpvmlx,3089 &feature_zcz,
3090 &feature_expandFpMlx,
3265 &feature_slowVdup32,3091 &feature_slowVdup32,
3266 &feature_wideStrideVfp,
3267 &feature_fuseAes,
3268 &feature_slowVgetlni32,3092 &feature_slowVgetlni32,
3269 &feature_zcz,
3270 &feature_profUnpr,3093 &feature_profUnpr,
3094 &feature_wideStrideVfp,
3271 &feature_retAddrStack,3095 &feature_retAddrStack,
3272 &feature_expandFpMlx,3096 &feature_fuseAes,
3273 &feature_useAa,
3274 &feature_dontWidenVmovs,
3275 &feature_fuseLiterals,3097 &feature_fuseLiterals,
3098 &feature_slowfpvmlx,
3099 &feature_slowFpBrcc,
3100 &feature_dontWidenVmovs,
3276 &feature_exynos,3101 &feature_exynos,
3277 },3102 },
3278};3103};
...@@ -3297,15 +3122,15 @@ pub const cpu_krait = Cpu{...@@ -3297,15 +3122,15 @@ pub const cpu_krait = Cpu{
3297 .name = "krait",3122 .name = "krait",
3298 .llvm_name = "krait",3123 .llvm_name = "krait",
3299 .subfeatures = &[_]*const Feature {3124 .subfeatures = &[_]*const Feature {
3300 &feature_perfmon,
3301 &feature_v7clrex,
3302 &feature_db,3125 &feature_db,
3126 &feature_dsp,
3127 &feature_fpregs,
3303 &feature_thumb2,3128 &feature_thumb2,
3129 &feature_v7clrex,
3130 &feature_aclass,
3131 &feature_perfmon,
3304 &feature_v4t,3132 &feature_v4t,
3305 &feature_d32,3133 &feature_d32,
3306 &feature_aclass,
3307 &feature_dsp,
3308 &feature_fpregs,
3309 &feature_armv7A,3134 &feature_armv7A,
3310 &feature_avoidPartialCpsr,3135 &feature_avoidPartialCpsr,
3311 &feature_vldnAlign,3136 &feature_vldnAlign,
...@@ -3324,22 +3149,22 @@ pub const cpu_kryo = Cpu{...@@ -3324,22 +3149,22 @@ pub const cpu_kryo = Cpu{
3324 .name = "kryo",3149 .name = "kryo",
3325 .llvm_name = "kryo",3150 .llvm_name = "kryo",
3326 .subfeatures = &[_]*const Feature {3151 .subfeatures = &[_]*const Feature {
3327 &feature_mp,3152 &feature_db,
3328 &feature_acquireRelease,3153 &feature_dsp,
3329 &feature_perfmon,3154 &feature_hwdivArm,
3330 &feature_hwdiv,3155 &feature_hwdiv,
3331 &feature_trustzone,3156 &feature_trustzone,
3332 &feature_v7clrex,3157 &feature_fpregs,
3333 &feature_db,
3334 &feature_thumb2,
3335 &feature_fp16,
3336 &feature_v4t,3158 &feature_v4t,
3337 &feature_d32,3159 &feature_thumb2,
3160 &feature_v7clrex,
3338 &feature_aclass,3161 &feature_aclass,
3339 &feature_hwdivArm,
3340 &feature_crc,3162 &feature_crc,
3341 &feature_dsp,3163 &feature_mp,
3342 &feature_fpregs,3164 &feature_acquireRelease,
3165 &feature_fp16,
3166 &feature_perfmon,
3167 &feature_d32,
3343 &feature_armv8A,3168 &feature_armv8A,
3344 &feature_crypto,3169 &feature_crypto,
3345 &feature_kryo,3170 &feature_kryo,
...@@ -3371,23 +3196,23 @@ pub const cpu_neoverseN1 = Cpu{...@@ -3371,23 +3196,23 @@ pub const cpu_neoverseN1 = Cpu{
3371 .name = "neoverse-n1",3196 .name = "neoverse-n1",
3372 .llvm_name = "neoverse-n1",3197 .llvm_name = "neoverse-n1",
3373 .subfeatures = &[_]*const Feature {3198 .subfeatures = &[_]*const Feature {
3374 &feature_mp,3199 &feature_db,
3375 &feature_acquireRelease,3200 &feature_dsp,
3376 &feature_perfmon,3201 &feature_hwdivArm,
3377 &feature_hwdiv,3202 &feature_hwdiv,
3378 &feature_trustzone,3203 &feature_trustzone,
3379 &feature_v7clrex,3204 &feature_fpregs,
3380 &feature_db,3205 &feature_v4t,
3381 &feature_thumb2,3206 &feature_thumb2,
3382 &feature_ras,3207 &feature_ras,
3383 &feature_fp16,3208 &feature_v7clrex,
3384 &feature_v4t,
3385 &feature_d32,
3386 &feature_aclass,3209 &feature_aclass,
3387 &feature_hwdivArm,
3388 &feature_crc,3210 &feature_crc,
3389 &feature_dsp,3211 &feature_mp,
3390 &feature_fpregs,3212 &feature_acquireRelease,
3213 &feature_fp16,
3214 &feature_perfmon,
3215 &feature_d32,
3391 &feature_armv82A,3216 &feature_armv82A,
3392 &feature_crypto,3217 &feature_crypto,
3393 &feature_dotprod,3218 &feature_dotprod,
...@@ -3399,11 +3224,11 @@ pub const cpu_sc000 = Cpu{...@@ -3399,11 +3224,11 @@ pub const cpu_sc000 = Cpu{
3399 .llvm_name = "sc000",3224 .llvm_name = "sc000",
3400 .subfeatures = &[_]*const Feature {3225 .subfeatures = &[_]*const Feature {
3401 &feature_db,3226 &feature_db,
3402 &feature_thumbMode,
3403 &feature_mclass,3227 &feature_mclass,
3228 &feature_thumbMode,
3229 &feature_strictAlign,
3404 &feature_noarm,3230 &feature_noarm,
3405 &feature_v4t,3231 &feature_v4t,
3406 &feature_strictAlign,
3407 &feature_armv6M,3232 &feature_armv6M,
3408 },3233 },
3409};3234};
...@@ -3412,15 +3237,15 @@ pub const cpu_sc300 = Cpu{...@@ -3412,15 +3237,15 @@ pub const cpu_sc300 = Cpu{
3412 .name = "sc300",3237 .name = "sc300",
3413 .llvm_name = "sc300",3238 .llvm_name = "sc300",
3414 .subfeatures = &[_]*const Feature {3239 .subfeatures = &[_]*const Feature {
3415 &feature_v7clrex,
3416 &feature_db,3240 &feature_db,
3417 &feature_thumb2,
3418 &feature_mclass,3241 &feature_mclass,
3242 &feature_hwdiv,
3419 &feature_thumbMode,3243 &feature_thumbMode,
3244 &feature_thumb2,
3245 &feature_v7clrex,
3246 &feature_perfmon,
3420 &feature_noarm,3247 &feature_noarm,
3421 &feature_v4t,3248 &feature_v4t,
3422 &feature_perfmon,
3423 &feature_hwdiv,
3424 &feature_armv7M,3249 &feature_armv7M,
3425 &feature_noBranchPredictor,3250 &feature_noBranchPredictor,
3426 &feature_useAa,3251 &feature_useAa,
...@@ -3465,15 +3290,15 @@ pub const cpu_swift = Cpu{...@@ -3465,15 +3290,15 @@ pub const cpu_swift = Cpu{
3465 .name = "swift",3290 .name = "swift",
3466 .llvm_name = "swift",3291 .llvm_name = "swift",
3467 .subfeatures = &[_]*const Feature {3292 .subfeatures = &[_]*const Feature {
3468 &feature_perfmon,
3469 &feature_v7clrex,
3470 &feature_db,3293 &feature_db,
3294 &feature_dsp,
3295 &feature_fpregs,
3471 &feature_thumb2,3296 &feature_thumb2,
3297 &feature_v7clrex,
3298 &feature_aclass,
3299 &feature_perfmon,
3472 &feature_v4t,3300 &feature_v4t,
3473 &feature_d32,3301 &feature_d32,
3474 &feature_aclass,
3475 &feature_dsp,
3476 &feature_fpregs,
3477 &feature_armv7A,3302 &feature_armv7A,
3478 &feature_avoidMovsShop,3303 &feature_avoidMovsShop,
3479 &feature_avoidPartialCpsr,3304 &feature_avoidPartialCpsr,
lib/std/target/avr.zig+1596-1629
...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_avr0 = Feature{4pub const feature_avr0 = Feature{
5 .name = "avr0",5 .name = "avr0",
6 .description = "The device is a part of the avr0 family",6 .description = "The device is a part of the avr0 family",
7 .llvm_name = "avr0",
8 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
9 },8 },
10};9};
...@@ -12,234 +11,220 @@ pub const feature_avr0 = Feature{...@@ -12,234 +11,220 @@ pub const feature_avr0 = Feature{
12pub const feature_avr1 = Feature{11pub const feature_avr1 = Feature{
13 .name = "avr1",12 .name = "avr1",
14 .description = "The device is a part of the avr1 family",13 .description = "The device is a part of the avr1 family",
15 .llvm_name = "avr1",
16 .subfeatures = &[_]*const Feature {14 .subfeatures = &[_]*const Feature {
17 &feature_avr0,
18 &feature_lpm,15 &feature_lpm,
16 &feature_avr0,
19 },17 },
20};18};
2119
22pub const feature_avr2 = Feature{20pub const feature_avr2 = Feature{
23 .name = "avr2",21 .name = "avr2",
24 .description = "The device is a part of the avr2 family",22 .description = "The device is a part of the avr2 family",
25 .llvm_name = "avr2",
26 .subfeatures = &[_]*const Feature {23 .subfeatures = &[_]*const Feature {
27 &feature_ijmpcall,24 &feature_ijmpcall,
28 &feature_sram,25 &feature_sram,
29 &feature_avr0,
30 &feature_lpm,
31 &feature_addsubiw,26 &feature_addsubiw,
27 &feature_lpm,
28 &feature_avr0,
32 },29 },
33};30};
3431
35pub const feature_avr3 = Feature{32pub const feature_avr3 = Feature{
36 .name = "avr3",33 .name = "avr3",
37 .description = "The device is a part of the avr3 family",34 .description = "The device is a part of the avr3 family",
38 .llvm_name = "avr3",
39 .subfeatures = &[_]*const Feature {35 .subfeatures = &[_]*const Feature {
40 &feature_ijmpcall,36 &feature_ijmpcall,
41 &feature_jmpcall,37 &feature_jmpcall,
42 &feature_sram,38 &feature_sram,
43 &feature_avr0,
44 &feature_lpm,
45 &feature_addsubiw,39 &feature_addsubiw,
40 &feature_lpm,
41 &feature_avr0,
46 },42 },
47};43};
4844
49pub const feature_avr4 = Feature{45pub const feature_avr4 = Feature{
50 .name = "avr4",46 .name = "avr4",
51 .description = "The device is a part of the avr4 family",47 .description = "The device is a part of the avr4 family",
52 .llvm_name = "avr4",
53 .subfeatures = &[_]*const Feature {48 .subfeatures = &[_]*const Feature {
49 &feature_spm,
54 &feature_lpmx,50 &feature_lpmx,
55 &feature_ijmpcall,51 &feature_ijmpcall,
56 &feature_movw,
57 &feature_sram,52 &feature_sram,
53 &feature_addsubiw,
58 &feature_mul,54 &feature_mul,
59 &feature_avr0,
60 &feature_lpm,
61 &feature_break,55 &feature_break,
62 &feature_spm,56 &feature_lpm,
63 &feature_addsubiw,57 &feature_avr0,
58 &feature_movw,
64 },59 },
65};60};
6661
67pub const feature_avr5 = Feature{62pub const feature_avr5 = Feature{
68 .name = "avr5",63 .name = "avr5",
69 .description = "The device is a part of the avr5 family",64 .description = "The device is a part of the avr5 family",
70 .llvm_name = "avr5",
71 .subfeatures = &[_]*const Feature {65 .subfeatures = &[_]*const Feature {
66 &feature_spm,
72 &feature_lpmx,67 &feature_lpmx,
73 &feature_jmpcall,
74 &feature_ijmpcall,68 &feature_ijmpcall,
75 &feature_movw,69 &feature_jmpcall,
76 &feature_sram,70 &feature_sram,
71 &feature_addsubiw,
77 &feature_mul,72 &feature_mul,
78 &feature_avr0,
79 &feature_lpm,
80 &feature_break,73 &feature_break,
81 &feature_spm,74 &feature_lpm,
82 &feature_addsubiw,75 &feature_avr0,
76 &feature_movw,
83 },77 },
84};78};
8579
86pub const feature_avr6 = Feature{80pub const feature_avr6 = Feature{
87 .name = "avr6",81 .name = "avr6",
88 .description = "The device is a part of the avr6 family",82 .description = "The device is a part of the avr6 family",
89 .llvm_name = "avr6",
90 .subfeatures = &[_]*const Feature {83 .subfeatures = &[_]*const Feature {
84 &feature_spm,
91 &feature_lpmx,85 &feature_lpmx,
92 &feature_jmpcall,
93 &feature_ijmpcall,86 &feature_ijmpcall,
94 &feature_movw,87 &feature_jmpcall,
95 &feature_sram,88 &feature_sram,
89 &feature_addsubiw,
90 &feature_elpm,
96 &feature_mul,91 &feature_mul,
97 &feature_avr0,
98 &feature_lpm,
99 &feature_break,92 &feature_break,
100 &feature_spm,93 &feature_lpm,
101 &feature_elpmx,94 &feature_elpmx,
102 &feature_elpm,95 &feature_avr0,
103 &feature_addsubiw,96 &feature_movw,
104 },97 },
105};98};
10699
107pub const feature_avr25 = Feature{100pub const feature_avr25 = Feature{
108 .name = "avr25",101 .name = "avr25",
109 .description = "The device is a part of the avr25 family",102 .description = "The device is a part of the avr25 family",
110 .llvm_name = "avr25",
111 .subfeatures = &[_]*const Feature {103 .subfeatures = &[_]*const Feature {
104 &feature_spm,
112 &feature_lpmx,105 &feature_lpmx,
113 &feature_ijmpcall,106 &feature_ijmpcall,
114 &feature_movw,
115 &feature_sram,107 &feature_sram,
116 &feature_avr0,
117 &feature_lpm,
118 &feature_break,
119 &feature_spm,
120 &feature_addsubiw,108 &feature_addsubiw,
109 &feature_break,
110 &feature_lpm,
111 &feature_avr0,
112 &feature_movw,
121 },113 },
122};114};
123115
124pub const feature_avr31 = Feature{116pub const feature_avr31 = Feature{
125 .name = "avr31",117 .name = "avr31",
126 .description = "The device is a part of the avr31 family",118 .description = "The device is a part of the avr31 family",
127 .llvm_name = "avr31",
128 .subfeatures = &[_]*const Feature {119 .subfeatures = &[_]*const Feature {
129 &feature_jmpcall,
130 &feature_ijmpcall,120 &feature_ijmpcall,
121 &feature_jmpcall,
131 &feature_sram,122 &feature_sram,
132 &feature_avr0,
133 &feature_lpm,
134 &feature_elpm,
135 &feature_addsubiw,123 &feature_addsubiw,
124 &feature_elpm,
125 &feature_lpm,
126 &feature_avr0,
136 },127 },
137};128};
138129
139pub const feature_avr35 = Feature{130pub const feature_avr35 = Feature{
140 .name = "avr35",131 .name = "avr35",
141 .description = "The device is a part of the avr35 family",132 .description = "The device is a part of the avr35 family",
142 .llvm_name = "avr35",
143 .subfeatures = &[_]*const Feature {133 .subfeatures = &[_]*const Feature {
134 &feature_spm,
144 &feature_lpmx,135 &feature_lpmx,
145 &feature_jmpcall,
146 &feature_ijmpcall,136 &feature_ijmpcall,
147 &feature_movw,137 &feature_jmpcall,
148 &feature_sram,138 &feature_sram,
149 &feature_avr0,
150 &feature_lpm,
151 &feature_break,
152 &feature_spm,
153 &feature_addsubiw,139 &feature_addsubiw,
140 &feature_break,
141 &feature_lpm,
142 &feature_avr0,
143 &feature_movw,
154 },144 },
155};145};
156146
157pub const feature_avr51 = Feature{147pub const feature_avr51 = Feature{
158 .name = "avr51",148 .name = "avr51",
159 .description = "The device is a part of the avr51 family",149 .description = "The device is a part of the avr51 family",
160 .llvm_name = "avr51",
161 .subfeatures = &[_]*const Feature {150 .subfeatures = &[_]*const Feature {
151 &feature_spm,
162 &feature_lpmx,152 &feature_lpmx,
163 &feature_ijmpcall,153 &feature_ijmpcall,
164 &feature_jmpcall,154 &feature_jmpcall,
165 &feature_movw,
166 &feature_sram,155 &feature_sram,
156 &feature_addsubiw,
157 &feature_elpm,
167 &feature_mul,158 &feature_mul,
168 &feature_avr0,
169 &feature_lpm,
170 &feature_break,159 &feature_break,
171 &feature_spm,160 &feature_lpm,
172 &feature_elpmx,161 &feature_elpmx,
173 &feature_elpm,162 &feature_avr0,
174 &feature_addsubiw,163 &feature_movw,
175 },164 },
176};165};
177166
178pub const feature_avrtiny = Feature{167pub const feature_avrtiny = Feature{
179 .name = "avrtiny",168 .name = "avrtiny",
180 .description = "The device is a part of the avrtiny family",169 .description = "The device is a part of the avrtiny family",
181 .llvm_name = "avrtiny",
182 .subfeatures = &[_]*const Feature {170 .subfeatures = &[_]*const Feature {
183 &feature_tinyencoding,171 &feature_avr0,
184 &feature_sram,172 &feature_sram,
173 &feature_tinyencoding,
185 &feature_break,174 &feature_break,
186 &feature_avr0,
187 },175 },
188};176};
189177
190pub const feature_xmega = Feature{178pub const feature_xmega = Feature{
191 .name = "xmega",179 .name = "xmega",
192 .description = "The device is a part of the xmega family",180 .description = "The device is a part of the xmega family",
193 .llvm_name = "xmega",
194 .subfeatures = &[_]*const Feature {181 .subfeatures = &[_]*const Feature {
182 &feature_spm,
195 &feature_lpmx,183 &feature_lpmx,
196 &feature_jmpcall,184 &feature_des,
197 &feature_ijmpcall,185 &feature_ijmpcall,
198 &feature_movw,186 &feature_jmpcall,
199 &feature_sram,187 &feature_sram,
200 &feature_mul,188 &feature_addsubiw,
201 &feature_avr0,189 &feature_elpm,
202 &feature_spmx,
203 &feature_lpm,
204 &feature_eijmpcall,190 &feature_eijmpcall,
191 &feature_mul,
205 &feature_break,192 &feature_break,
206 &feature_spm,193 &feature_lpm,
207 &feature_elpmx,194 &feature_elpmx,
208 &feature_elpm,195 &feature_avr0,
209 &feature_addsubiw,196 &feature_movw,
210 &feature_des,197 &feature_spmx,
211 },198 },
212};199};
213200
214pub const feature_xmegau = Feature{201pub const feature_xmegau = Feature{
215 .name = "xmegau",202 .name = "xmegau",
216 .description = "The device is a part of the xmegau family",203 .description = "The device is a part of the xmegau family",
217 .llvm_name = "xmegau",
218 .subfeatures = &[_]*const Feature {204 .subfeatures = &[_]*const Feature {
205 &feature_spm,
219 &feature_lpmx,206 &feature_lpmx,
207 &feature_des,
220 &feature_ijmpcall,208 &feature_ijmpcall,
221 &feature_jmpcall,209 &feature_jmpcall,
222 &feature_movw,
223 &feature_sram,210 &feature_sram,
224 &feature_mul,
225 &feature_avr0,
226 &feature_spmx,
227 &feature_lpm,
228 &feature_rmw,211 &feature_rmw,
212 &feature_addsubiw,
213 &feature_elpm,
229 &feature_eijmpcall,214 &feature_eijmpcall,
215 &feature_mul,
230 &feature_break,216 &feature_break,
231 &feature_spm,217 &feature_lpm,
232 &feature_elpmx,218 &feature_elpmx,
233 &feature_elpm,219 &feature_avr0,
234 &feature_addsubiw,220 &feature_movw,
235 &feature_des,221 &feature_spmx,
236 },222 },
237};223};
238224
239pub const feature_addsubiw = Feature{225pub const feature_addsubiw = Feature{
240 .name = "addsubiw",226 .name = "addsubiw",
241 .description = "Enable 16-bit register-immediate addition and subtraction instructions",227 .description = "Enable 16-bit register-immediate addition and subtraction instructions",
242 .llvm_name = "addsubiw",
243 .subfeatures = &[_]*const Feature {228 .subfeatures = &[_]*const Feature {
244 },229 },
245};230};
...@@ -247,7 +232,6 @@ pub const feature_addsubiw = Feature{...@@ -247,7 +232,6 @@ pub const feature_addsubiw = Feature{
247pub const feature_break = Feature{232pub const feature_break = Feature{
248 .name = "break",233 .name = "break",
249 .description = "The device supports the `BREAK` debugging instruction",234 .description = "The device supports the `BREAK` debugging instruction",
250 .llvm_name = "break",
251 .subfeatures = &[_]*const Feature {235 .subfeatures = &[_]*const Feature {
252 },236 },
253};237};
...@@ -255,7 +239,6 @@ pub const feature_break = Feature{...@@ -255,7 +239,6 @@ pub const feature_break = Feature{
255pub const feature_des = Feature{239pub const feature_des = Feature{
256 .name = "des",240 .name = "des",
257 .description = "The device supports the `DES k` encryption instruction",241 .description = "The device supports the `DES k` encryption instruction",
258 .llvm_name = "des",
259 .subfeatures = &[_]*const Feature {242 .subfeatures = &[_]*const Feature {
260 },243 },
261};244};
...@@ -263,7 +246,6 @@ pub const feature_des = Feature{...@@ -263,7 +246,6 @@ pub const feature_des = Feature{
263pub const feature_eijmpcall = Feature{246pub const feature_eijmpcall = Feature{
264 .name = "eijmpcall",247 .name = "eijmpcall",
265 .description = "The device supports the `EIJMP`/`EICALL` instructions",248 .description = "The device supports the `EIJMP`/`EICALL` instructions",
266 .llvm_name = "eijmpcall",
267 .subfeatures = &[_]*const Feature {249 .subfeatures = &[_]*const Feature {
268 },250 },
269};251};
...@@ -271,7 +253,6 @@ pub const feature_eijmpcall = Feature{...@@ -271,7 +253,6 @@ pub const feature_eijmpcall = Feature{
271pub const feature_elpm = Feature{253pub const feature_elpm = Feature{
272 .name = "elpm",254 .name = "elpm",
273 .description = "The device supports the ELPM instruction",255 .description = "The device supports the ELPM instruction",
274 .llvm_name = "elpm",
275 .subfeatures = &[_]*const Feature {256 .subfeatures = &[_]*const Feature {
276 },257 },
277};258};
...@@ -279,7 +260,6 @@ pub const feature_elpm = Feature{...@@ -279,7 +260,6 @@ pub const feature_elpm = Feature{
279pub const feature_elpmx = Feature{260pub const feature_elpmx = Feature{
280 .name = "elpmx",261 .name = "elpmx",
281 .description = "The device supports the `ELPM Rd, Z[+]` instructions",262 .description = "The device supports the `ELPM Rd, Z[+]` instructions",
282 .llvm_name = "elpmx",
283 .subfeatures = &[_]*const Feature {263 .subfeatures = &[_]*const Feature {
284 },264 },
285};265};
...@@ -287,7 +267,6 @@ pub const feature_elpmx = Feature{...@@ -287,7 +267,6 @@ pub const feature_elpmx = Feature{
287pub const feature_ijmpcall = Feature{267pub const feature_ijmpcall = Feature{
288 .name = "ijmpcall",268 .name = "ijmpcall",
289 .description = "The device supports `IJMP`/`ICALL`instructions",269 .description = "The device supports `IJMP`/`ICALL`instructions",
290 .llvm_name = "ijmpcall",
291 .subfeatures = &[_]*const Feature {270 .subfeatures = &[_]*const Feature {
292 },271 },
293};272};
...@@ -295,7 +274,6 @@ pub const feature_ijmpcall = Feature{...@@ -295,7 +274,6 @@ pub const feature_ijmpcall = Feature{
295pub const feature_jmpcall = Feature{274pub const feature_jmpcall = Feature{
296 .name = "jmpcall",275 .name = "jmpcall",
297 .description = "The device supports the `JMP` and `CALL` instructions",276 .description = "The device supports the `JMP` and `CALL` instructions",
298 .llvm_name = "jmpcall",
299 .subfeatures = &[_]*const Feature {277 .subfeatures = &[_]*const Feature {
300 },278 },
301};279};
...@@ -303,7 +281,6 @@ pub const feature_jmpcall = Feature{...@@ -303,7 +281,6 @@ pub const feature_jmpcall = Feature{
303pub const feature_lpm = Feature{281pub const feature_lpm = Feature{
304 .name = "lpm",282 .name = "lpm",
305 .description = "The device supports the `LPM` instruction",283 .description = "The device supports the `LPM` instruction",
306 .llvm_name = "lpm",
307 .subfeatures = &[_]*const Feature {284 .subfeatures = &[_]*const Feature {
308 },285 },
309};286};
...@@ -311,7 +288,6 @@ pub const feature_lpm = Feature{...@@ -311,7 +288,6 @@ pub const feature_lpm = Feature{
311pub const feature_lpmx = Feature{288pub const feature_lpmx = Feature{
312 .name = "lpmx",289 .name = "lpmx",
313 .description = "The device supports the `LPM Rd, Z[+]` instruction",290 .description = "The device supports the `LPM Rd, Z[+]` instruction",
314 .llvm_name = "lpmx",
315 .subfeatures = &[_]*const Feature {291 .subfeatures = &[_]*const Feature {
316 },292 },
317};293};
...@@ -319,7 +295,6 @@ pub const feature_lpmx = Feature{...@@ -319,7 +295,6 @@ pub const feature_lpmx = Feature{
319pub const feature_movw = Feature{295pub const feature_movw = Feature{
320 .name = "movw",296 .name = "movw",
321 .description = "The device supports the 16-bit MOVW instruction",297 .description = "The device supports the 16-bit MOVW instruction",
322 .llvm_name = "movw",
323 .subfeatures = &[_]*const Feature {298 .subfeatures = &[_]*const Feature {
324 },299 },
325};300};
...@@ -327,7 +302,6 @@ pub const feature_movw = Feature{...@@ -327,7 +302,6 @@ pub const feature_movw = Feature{
327pub const feature_mul = Feature{302pub const feature_mul = Feature{
328 .name = "mul",303 .name = "mul",
329 .description = "The device supports the multiplication instructions",304 .description = "The device supports the multiplication instructions",
330 .llvm_name = "mul",
331 .subfeatures = &[_]*const Feature {305 .subfeatures = &[_]*const Feature {
332 },306 },
333};307};
...@@ -335,7 +309,6 @@ pub const feature_mul = Feature{...@@ -335,7 +309,6 @@ pub const feature_mul = Feature{
335pub const feature_rmw = Feature{309pub const feature_rmw = Feature{
336 .name = "rmw",310 .name = "rmw",
337 .description = "The device supports the read-write-modify instructions: XCH, LAS, LAC, LAT",311 .description = "The device supports the read-write-modify instructions: XCH, LAS, LAC, LAT",
338 .llvm_name = "rmw",
339 .subfeatures = &[_]*const Feature {312 .subfeatures = &[_]*const Feature {
340 },313 },
341};314};
...@@ -343,7 +316,6 @@ pub const feature_rmw = Feature{...@@ -343,7 +316,6 @@ pub const feature_rmw = Feature{
343pub const feature_spm = Feature{316pub const feature_spm = Feature{
344 .name = "spm",317 .name = "spm",
345 .description = "The device supports the `SPM` instruction",318 .description = "The device supports the `SPM` instruction",
346 .llvm_name = "spm",
347 .subfeatures = &[_]*const Feature {319 .subfeatures = &[_]*const Feature {
348 },320 },
349};321};
...@@ -351,7 +323,6 @@ pub const feature_spm = Feature{...@@ -351,7 +323,6 @@ pub const feature_spm = Feature{
351pub const feature_spmx = Feature{323pub const feature_spmx = Feature{
352 .name = "spmx",324 .name = "spmx",
353 .description = "The device supports the `SPM Z+` instruction",325 .description = "The device supports the `SPM Z+` instruction",
354 .llvm_name = "spmx",
355 .subfeatures = &[_]*const Feature {326 .subfeatures = &[_]*const Feature {
356 },327 },
357};328};
...@@ -359,7 +330,6 @@ pub const feature_spmx = Feature{...@@ -359,7 +330,6 @@ pub const feature_spmx = Feature{
359pub const feature_sram = Feature{330pub const feature_sram = Feature{
360 .name = "sram",331 .name = "sram",
361 .description = "The device has random access memory",332 .description = "The device has random access memory",
362 .llvm_name = "sram",
363 .subfeatures = &[_]*const Feature {333 .subfeatures = &[_]*const Feature {
364 },334 },
365};335};
...@@ -367,31 +337,29 @@ pub const feature_sram = Feature{...@@ -367,31 +337,29 @@ pub const feature_sram = Feature{
367pub const feature_special = Feature{337pub const feature_special = Feature{
368 .name = "special",338 .name = "special",
369 .description = "Enable use of the entire instruction set - used for debugging",339 .description = "Enable use of the entire instruction set - used for debugging",
370 .llvm_name = "special",
371 .subfeatures = &[_]*const Feature {340 .subfeatures = &[_]*const Feature {
341 &feature_spm,
372 &feature_lpmx,342 &feature_lpmx,
343 &feature_des,
373 &feature_ijmpcall,344 &feature_ijmpcall,
374 &feature_jmpcall,345 &feature_jmpcall,
375 &feature_movw,
376 &feature_sram,
377 &feature_mul,
378 &feature_rmw,346 &feature_rmw,
379 &feature_spmx,347 &feature_sram,
380 &feature_lpm,
381 &feature_eijmpcall,
382 &feature_break,
383 &feature_spm,
384 &feature_elpmx,
385 &feature_elpm,348 &feature_elpm,
386 &feature_addsubiw,349 &feature_addsubiw,
387 &feature_des,350 &feature_eijmpcall,
351 &feature_elpmx,
352 &feature_break,
353 &feature_lpm,
354 &feature_mul,
355 &feature_movw,
356 &feature_spmx,
388 },357 },
389};358};
390359
391pub const feature_smallstack = Feature{360pub const feature_smallstack = Feature{
392 .name = "smallstack",361 .name = "smallstack",
393 .description = "The device has an 8-bit stack pointer",362 .description = "The device has an 8-bit stack pointer",
394 .llvm_name = "smallstack",
395 .subfeatures = &[_]*const Feature {363 .subfeatures = &[_]*const Feature {
396 },364 },
397};365};
...@@ -399,7 +367,6 @@ pub const feature_smallstack = Feature{...@@ -399,7 +367,6 @@ pub const feature_smallstack = Feature{
399pub const feature_tinyencoding = Feature{367pub const feature_tinyencoding = Feature{
400 .name = "tinyencoding",368 .name = "tinyencoding",
401 .description = "The device has Tiny core specific instruction encodings",369 .description = "The device has Tiny core specific instruction encodings",
402 .llvm_name = "tinyencoding",
403 .subfeatures = &[_]*const Feature {370 .subfeatures = &[_]*const Feature {
404 },371 },
405};372};
...@@ -444,13 +411,13 @@ pub const cpu_at43usb320 = Cpu{...@@ -444,13 +411,13 @@ pub const cpu_at43usb320 = Cpu{
444 .name = "at43usb320",411 .name = "at43usb320",
445 .llvm_name = "at43usb320",412 .llvm_name = "at43usb320",
446 .subfeatures = &[_]*const Feature {413 .subfeatures = &[_]*const Feature {
447 &feature_jmpcall,
448 &feature_ijmpcall,414 &feature_ijmpcall,
415 &feature_jmpcall,
449 &feature_sram,416 &feature_sram,
450 &feature_avr0,
451 &feature_lpm,
452 &feature_elpm,
453 &feature_addsubiw,417 &feature_addsubiw,
418 &feature_elpm,
419 &feature_lpm,
420 &feature_avr0,
454 &feature_avr31,421 &feature_avr31,
455 },422 },
456};423};
...@@ -462,9 +429,9 @@ pub const cpu_at43usb355 = Cpu{...@@ -462,9 +429,9 @@ pub const cpu_at43usb355 = Cpu{
462 &feature_ijmpcall,429 &feature_ijmpcall,
463 &feature_jmpcall,430 &feature_jmpcall,
464 &feature_sram,431 &feature_sram,
465 &feature_avr0,
466 &feature_lpm,
467 &feature_addsubiw,432 &feature_addsubiw,
433 &feature_lpm,
434 &feature_avr0,
468 &feature_avr3,435 &feature_avr3,
469 },436 },
470};437};
...@@ -476,9 +443,9 @@ pub const cpu_at76c711 = Cpu{...@@ -476,9 +443,9 @@ pub const cpu_at76c711 = Cpu{
476 &feature_ijmpcall,443 &feature_ijmpcall,
477 &feature_jmpcall,444 &feature_jmpcall,
478 &feature_sram,445 &feature_sram,
479 &feature_avr0,
480 &feature_lpm,
481 &feature_addsubiw,446 &feature_addsubiw,
447 &feature_lpm,
448 &feature_avr0,
482 &feature_avr3,449 &feature_avr3,
483 },450 },
484};451};
...@@ -489,9 +456,9 @@ pub const cpu_at86rf401 = Cpu{...@@ -489,9 +456,9 @@ pub const cpu_at86rf401 = Cpu{
489 .subfeatures = &[_]*const Feature {456 .subfeatures = &[_]*const Feature {
490 &feature_ijmpcall,457 &feature_ijmpcall,
491 &feature_sram,458 &feature_sram,
492 &feature_avr0,
493 &feature_lpm,
494 &feature_addsubiw,459 &feature_addsubiw,
460 &feature_lpm,
461 &feature_avr0,
495 &feature_avr2,462 &feature_avr2,
496 &feature_lpmx,463 &feature_lpmx,
497 &feature_movw,464 &feature_movw,
...@@ -504,9 +471,9 @@ pub const cpu_at90c8534 = Cpu{...@@ -504,9 +471,9 @@ pub const cpu_at90c8534 = Cpu{
504 .subfeatures = &[_]*const Feature {471 .subfeatures = &[_]*const Feature {
505 &feature_ijmpcall,472 &feature_ijmpcall,
506 &feature_sram,473 &feature_sram,
507 &feature_avr0,
508 &feature_lpm,
509 &feature_addsubiw,474 &feature_addsubiw,
475 &feature_lpm,
476 &feature_avr0,
510 &feature_avr2,477 &feature_avr2,
511 },478 },
512};479};
...@@ -515,19 +482,19 @@ pub const cpu_at90can128 = Cpu{...@@ -515,19 +482,19 @@ pub const cpu_at90can128 = Cpu{
515 .name = "at90can128",482 .name = "at90can128",
516 .llvm_name = "at90can128",483 .llvm_name = "at90can128",
517 .subfeatures = &[_]*const Feature {484 .subfeatures = &[_]*const Feature {
485 &feature_spm,
518 &feature_lpmx,486 &feature_lpmx,
519 &feature_ijmpcall,487 &feature_ijmpcall,
520 &feature_jmpcall,488 &feature_jmpcall,
521 &feature_movw,
522 &feature_sram,489 &feature_sram,
490 &feature_addsubiw,
491 &feature_elpm,
523 &feature_mul,492 &feature_mul,
524 &feature_avr0,
525 &feature_lpm,
526 &feature_break,493 &feature_break,
527 &feature_spm,494 &feature_lpm,
528 &feature_elpmx,495 &feature_elpmx,
529 &feature_elpm,496 &feature_avr0,
530 &feature_addsubiw,497 &feature_movw,
531 &feature_avr51,498 &feature_avr51,
532 },499 },
533};500};
...@@ -536,17 +503,17 @@ pub const cpu_at90can32 = Cpu{...@@ -536,17 +503,17 @@ pub const cpu_at90can32 = Cpu{
536 .name = "at90can32",503 .name = "at90can32",
537 .llvm_name = "at90can32",504 .llvm_name = "at90can32",
538 .subfeatures = &[_]*const Feature {505 .subfeatures = &[_]*const Feature {
506 &feature_spm,
539 &feature_lpmx,507 &feature_lpmx,
540 &feature_jmpcall,
541 &feature_ijmpcall,508 &feature_ijmpcall,
542 &feature_movw,509 &feature_jmpcall,
543 &feature_sram,510 &feature_sram,
511 &feature_addsubiw,
544 &feature_mul,512 &feature_mul,
545 &feature_avr0,
546 &feature_lpm,
547 &feature_break,513 &feature_break,
548 &feature_spm,514 &feature_lpm,
549 &feature_addsubiw,515 &feature_avr0,
516 &feature_movw,
550 &feature_avr5,517 &feature_avr5,
551 },518 },
552};519};
...@@ -555,17 +522,17 @@ pub const cpu_at90can64 = Cpu{...@@ -555,17 +522,17 @@ pub const cpu_at90can64 = Cpu{
555 .name = "at90can64",522 .name = "at90can64",
556 .llvm_name = "at90can64",523 .llvm_name = "at90can64",
557 .subfeatures = &[_]*const Feature {524 .subfeatures = &[_]*const Feature {
525 &feature_spm,
558 &feature_lpmx,526 &feature_lpmx,
559 &feature_jmpcall,
560 &feature_ijmpcall,527 &feature_ijmpcall,
561 &feature_movw,528 &feature_jmpcall,
562 &feature_sram,529 &feature_sram,
530 &feature_addsubiw,
563 &feature_mul,531 &feature_mul,
564 &feature_avr0,
565 &feature_lpm,
566 &feature_break,532 &feature_break,
567 &feature_spm,533 &feature_lpm,
568 &feature_addsubiw,534 &feature_avr0,
535 &feature_movw,
569 &feature_avr5,536 &feature_avr5,
570 },537 },
571};538};
...@@ -574,16 +541,16 @@ pub const cpu_at90pwm1 = Cpu{...@@ -574,16 +541,16 @@ pub const cpu_at90pwm1 = Cpu{
574 .name = "at90pwm1",541 .name = "at90pwm1",
575 .llvm_name = "at90pwm1",542 .llvm_name = "at90pwm1",
576 .subfeatures = &[_]*const Feature {543 .subfeatures = &[_]*const Feature {
544 &feature_spm,
577 &feature_lpmx,545 &feature_lpmx,
578 &feature_ijmpcall,546 &feature_ijmpcall,
579 &feature_movw,
580 &feature_sram,547 &feature_sram,
548 &feature_addsubiw,
581 &feature_mul,549 &feature_mul,
582 &feature_avr0,
583 &feature_lpm,
584 &feature_break,550 &feature_break,
585 &feature_spm,551 &feature_lpm,
586 &feature_addsubiw,552 &feature_avr0,
553 &feature_movw,
587 &feature_avr4,554 &feature_avr4,
588 },555 },
589};556};
...@@ -592,17 +559,17 @@ pub const cpu_at90pwm161 = Cpu{...@@ -592,17 +559,17 @@ pub const cpu_at90pwm161 = Cpu{
592 .name = "at90pwm161",559 .name = "at90pwm161",
593 .llvm_name = "at90pwm161",560 .llvm_name = "at90pwm161",
594 .subfeatures = &[_]*const Feature {561 .subfeatures = &[_]*const Feature {
562 &feature_spm,
595 &feature_lpmx,563 &feature_lpmx,
596 &feature_jmpcall,
597 &feature_ijmpcall,564 &feature_ijmpcall,
598 &feature_movw,565 &feature_jmpcall,
599 &feature_sram,566 &feature_sram,
567 &feature_addsubiw,
600 &feature_mul,568 &feature_mul,
601 &feature_avr0,
602 &feature_lpm,
603 &feature_break,569 &feature_break,
604 &feature_spm,570 &feature_lpm,
605 &feature_addsubiw,571 &feature_avr0,
572 &feature_movw,
606 &feature_avr5,573 &feature_avr5,
607 },574 },
608};575};
...@@ -611,16 +578,16 @@ pub const cpu_at90pwm2 = Cpu{...@@ -611,16 +578,16 @@ pub const cpu_at90pwm2 = Cpu{
611 .name = "at90pwm2",578 .name = "at90pwm2",
612 .llvm_name = "at90pwm2",579 .llvm_name = "at90pwm2",
613 .subfeatures = &[_]*const Feature {580 .subfeatures = &[_]*const Feature {
581 &feature_spm,
614 &feature_lpmx,582 &feature_lpmx,
615 &feature_ijmpcall,583 &feature_ijmpcall,
616 &feature_movw,
617 &feature_sram,584 &feature_sram,
585 &feature_addsubiw,
618 &feature_mul,586 &feature_mul,
619 &feature_avr0,
620 &feature_lpm,
621 &feature_break,587 &feature_break,
622 &feature_spm,588 &feature_lpm,
623 &feature_addsubiw,589 &feature_avr0,
590 &feature_movw,
624 &feature_avr4,591 &feature_avr4,
625 },592 },
626};593};
...@@ -629,17 +596,17 @@ pub const cpu_at90pwm216 = Cpu{...@@ -629,17 +596,17 @@ pub const cpu_at90pwm216 = Cpu{
629 .name = "at90pwm216",596 .name = "at90pwm216",
630 .llvm_name = "at90pwm216",597 .llvm_name = "at90pwm216",
631 .subfeatures = &[_]*const Feature {598 .subfeatures = &[_]*const Feature {
599 &feature_spm,
632 &feature_lpmx,600 &feature_lpmx,
633 &feature_jmpcall,
634 &feature_ijmpcall,601 &feature_ijmpcall,
635 &feature_movw,602 &feature_jmpcall,
636 &feature_sram,603 &feature_sram,
604 &feature_addsubiw,
637 &feature_mul,605 &feature_mul,
638 &feature_avr0,
639 &feature_lpm,
640 &feature_break,606 &feature_break,
641 &feature_spm,607 &feature_lpm,
642 &feature_addsubiw,608 &feature_avr0,
609 &feature_movw,
643 &feature_avr5,610 &feature_avr5,
644 },611 },
645};612};
...@@ -648,16 +615,16 @@ pub const cpu_at90pwm2b = Cpu{...@@ -648,16 +615,16 @@ pub const cpu_at90pwm2b = Cpu{
648 .name = "at90pwm2b",615 .name = "at90pwm2b",
649 .llvm_name = "at90pwm2b",616 .llvm_name = "at90pwm2b",
650 .subfeatures = &[_]*const Feature {617 .subfeatures = &[_]*const Feature {
618 &feature_spm,
651 &feature_lpmx,619 &feature_lpmx,
652 &feature_ijmpcall,620 &feature_ijmpcall,
653 &feature_movw,
654 &feature_sram,621 &feature_sram,
622 &feature_addsubiw,
655 &feature_mul,623 &feature_mul,
656 &feature_avr0,
657 &feature_lpm,
658 &feature_break,624 &feature_break,
659 &feature_spm,625 &feature_lpm,
660 &feature_addsubiw,626 &feature_avr0,
627 &feature_movw,
661 &feature_avr4,628 &feature_avr4,
662 },629 },
663};630};
...@@ -666,16 +633,16 @@ pub const cpu_at90pwm3 = Cpu{...@@ -666,16 +633,16 @@ pub const cpu_at90pwm3 = Cpu{
666 .name = "at90pwm3",633 .name = "at90pwm3",
667 .llvm_name = "at90pwm3",634 .llvm_name = "at90pwm3",
668 .subfeatures = &[_]*const Feature {635 .subfeatures = &[_]*const Feature {
636 &feature_spm,
669 &feature_lpmx,637 &feature_lpmx,
670 &feature_ijmpcall,638 &feature_ijmpcall,
671 &feature_movw,
672 &feature_sram,639 &feature_sram,
640 &feature_addsubiw,
673 &feature_mul,641 &feature_mul,
674 &feature_avr0,
675 &feature_lpm,
676 &feature_break,642 &feature_break,
677 &feature_spm,643 &feature_lpm,
678 &feature_addsubiw,644 &feature_avr0,
645 &feature_movw,
679 &feature_avr4,646 &feature_avr4,
680 },647 },
681};648};
...@@ -684,17 +651,17 @@ pub const cpu_at90pwm316 = Cpu{...@@ -684,17 +651,17 @@ pub const cpu_at90pwm316 = Cpu{
684 .name = "at90pwm316",651 .name = "at90pwm316",
685 .llvm_name = "at90pwm316",652 .llvm_name = "at90pwm316",
686 .subfeatures = &[_]*const Feature {653 .subfeatures = &[_]*const Feature {
654 &feature_spm,
687 &feature_lpmx,655 &feature_lpmx,
688 &feature_jmpcall,
689 &feature_ijmpcall,656 &feature_ijmpcall,
690 &feature_movw,657 &feature_jmpcall,
691 &feature_sram,658 &feature_sram,
659 &feature_addsubiw,
692 &feature_mul,660 &feature_mul,
693 &feature_avr0,
694 &feature_lpm,
695 &feature_break,661 &feature_break,
696 &feature_spm,662 &feature_lpm,
697 &feature_addsubiw,663 &feature_avr0,
664 &feature_movw,
698 &feature_avr5,665 &feature_avr5,
699 },666 },
700};667};
...@@ -703,16 +670,16 @@ pub const cpu_at90pwm3b = Cpu{...@@ -703,16 +670,16 @@ pub const cpu_at90pwm3b = Cpu{
703 .name = "at90pwm3b",670 .name = "at90pwm3b",
704 .llvm_name = "at90pwm3b",671 .llvm_name = "at90pwm3b",
705 .subfeatures = &[_]*const Feature {672 .subfeatures = &[_]*const Feature {
673 &feature_spm,
706 &feature_lpmx,674 &feature_lpmx,
707 &feature_ijmpcall,675 &feature_ijmpcall,
708 &feature_movw,
709 &feature_sram,676 &feature_sram,
677 &feature_addsubiw,
710 &feature_mul,678 &feature_mul,
711 &feature_avr0,
712 &feature_lpm,
713 &feature_break,679 &feature_break,
714 &feature_spm,680 &feature_lpm,
715 &feature_addsubiw,681 &feature_avr0,
682 &feature_movw,
716 &feature_avr4,683 &feature_avr4,
717 },684 },
718};685};
...@@ -721,16 +688,16 @@ pub const cpu_at90pwm81 = Cpu{...@@ -721,16 +688,16 @@ pub const cpu_at90pwm81 = Cpu{
721 .name = "at90pwm81",688 .name = "at90pwm81",
722 .llvm_name = "at90pwm81",689 .llvm_name = "at90pwm81",
723 .subfeatures = &[_]*const Feature {690 .subfeatures = &[_]*const Feature {
691 &feature_spm,
724 &feature_lpmx,692 &feature_lpmx,
725 &feature_ijmpcall,693 &feature_ijmpcall,
726 &feature_movw,
727 &feature_sram,694 &feature_sram,
695 &feature_addsubiw,
728 &feature_mul,696 &feature_mul,
729 &feature_avr0,
730 &feature_lpm,
731 &feature_break,697 &feature_break,
732 &feature_spm,698 &feature_lpm,
733 &feature_addsubiw,699 &feature_avr0,
700 &feature_movw,
734 &feature_avr4,701 &feature_avr4,
735 },702 },
736};703};
...@@ -749,9 +716,9 @@ pub const cpu_at90s2313 = Cpu{...@@ -749,9 +716,9 @@ pub const cpu_at90s2313 = Cpu{
749 .subfeatures = &[_]*const Feature {716 .subfeatures = &[_]*const Feature {
750 &feature_ijmpcall,717 &feature_ijmpcall,
751 &feature_sram,718 &feature_sram,
752 &feature_avr0,
753 &feature_lpm,
754 &feature_addsubiw,719 &feature_addsubiw,
720 &feature_lpm,
721 &feature_avr0,
755 &feature_avr2,722 &feature_avr2,
756 },723 },
757};724};
...@@ -762,9 +729,9 @@ pub const cpu_at90s2323 = Cpu{...@@ -762,9 +729,9 @@ pub const cpu_at90s2323 = Cpu{
762 .subfeatures = &[_]*const Feature {729 .subfeatures = &[_]*const Feature {
763 &feature_ijmpcall,730 &feature_ijmpcall,
764 &feature_sram,731 &feature_sram,
765 &feature_avr0,
766 &feature_lpm,
767 &feature_addsubiw,732 &feature_addsubiw,
733 &feature_lpm,
734 &feature_avr0,
768 &feature_avr2,735 &feature_avr2,
769 },736 },
770};737};
...@@ -775,9 +742,9 @@ pub const cpu_at90s2333 = Cpu{...@@ -775,9 +742,9 @@ pub const cpu_at90s2333 = Cpu{
775 .subfeatures = &[_]*const Feature {742 .subfeatures = &[_]*const Feature {
776 &feature_ijmpcall,743 &feature_ijmpcall,
777 &feature_sram,744 &feature_sram,
778 &feature_avr0,
779 &feature_lpm,
780 &feature_addsubiw,745 &feature_addsubiw,
746 &feature_lpm,
747 &feature_avr0,
781 &feature_avr2,748 &feature_avr2,
782 },749 },
783};750};
...@@ -788,9 +755,9 @@ pub const cpu_at90s2343 = Cpu{...@@ -788,9 +755,9 @@ pub const cpu_at90s2343 = Cpu{
788 .subfeatures = &[_]*const Feature {755 .subfeatures = &[_]*const Feature {
789 &feature_ijmpcall,756 &feature_ijmpcall,
790 &feature_sram,757 &feature_sram,
791 &feature_avr0,
792 &feature_lpm,
793 &feature_addsubiw,758 &feature_addsubiw,
759 &feature_lpm,
760 &feature_avr0,
794 &feature_avr2,761 &feature_avr2,
795 },762 },
796};763};
...@@ -801,9 +768,9 @@ pub const cpu_at90s4414 = Cpu{...@@ -801,9 +768,9 @@ pub const cpu_at90s4414 = Cpu{
801 .subfeatures = &[_]*const Feature {768 .subfeatures = &[_]*const Feature {
802 &feature_ijmpcall,769 &feature_ijmpcall,
803 &feature_sram,770 &feature_sram,
804 &feature_avr0,
805 &feature_lpm,
806 &feature_addsubiw,771 &feature_addsubiw,
772 &feature_lpm,
773 &feature_avr0,
807 &feature_avr2,774 &feature_avr2,
808 },775 },
809};776};
...@@ -814,9 +781,9 @@ pub const cpu_at90s4433 = Cpu{...@@ -814,9 +781,9 @@ pub const cpu_at90s4433 = Cpu{
814 .subfeatures = &[_]*const Feature {781 .subfeatures = &[_]*const Feature {
815 &feature_ijmpcall,782 &feature_ijmpcall,
816 &feature_sram,783 &feature_sram,
817 &feature_avr0,
818 &feature_lpm,
819 &feature_addsubiw,784 &feature_addsubiw,
785 &feature_lpm,
786 &feature_avr0,
820 &feature_avr2,787 &feature_avr2,
821 },788 },
822};789};
...@@ -827,9 +794,9 @@ pub const cpu_at90s4434 = Cpu{...@@ -827,9 +794,9 @@ pub const cpu_at90s4434 = Cpu{
827 .subfeatures = &[_]*const Feature {794 .subfeatures = &[_]*const Feature {
828 &feature_ijmpcall,795 &feature_ijmpcall,
829 &feature_sram,796 &feature_sram,
830 &feature_avr0,
831 &feature_lpm,
832 &feature_addsubiw,797 &feature_addsubiw,
798 &feature_lpm,
799 &feature_avr0,
833 &feature_avr2,800 &feature_avr2,
834 },801 },
835};802};
...@@ -840,9 +807,9 @@ pub const cpu_at90s8515 = Cpu{...@@ -840,9 +807,9 @@ pub const cpu_at90s8515 = Cpu{
840 .subfeatures = &[_]*const Feature {807 .subfeatures = &[_]*const Feature {
841 &feature_ijmpcall,808 &feature_ijmpcall,
842 &feature_sram,809 &feature_sram,
843 &feature_avr0,
844 &feature_lpm,
845 &feature_addsubiw,810 &feature_addsubiw,
811 &feature_lpm,
812 &feature_avr0,
846 &feature_avr2,813 &feature_avr2,
847 },814 },
848};815};
...@@ -853,9 +820,9 @@ pub const cpu_at90s8535 = Cpu{...@@ -853,9 +820,9 @@ pub const cpu_at90s8535 = Cpu{
853 .subfeatures = &[_]*const Feature {820 .subfeatures = &[_]*const Feature {
854 &feature_ijmpcall,821 &feature_ijmpcall,
855 &feature_sram,822 &feature_sram,
856 &feature_avr0,
857 &feature_lpm,
858 &feature_addsubiw,823 &feature_addsubiw,
824 &feature_lpm,
825 &feature_avr0,
859 &feature_avr2,826 &feature_avr2,
860 },827 },
861};828};
...@@ -864,17 +831,17 @@ pub const cpu_at90scr100 = Cpu{...@@ -864,17 +831,17 @@ pub const cpu_at90scr100 = Cpu{
864 .name = "at90scr100",831 .name = "at90scr100",
865 .llvm_name = "at90scr100",832 .llvm_name = "at90scr100",
866 .subfeatures = &[_]*const Feature {833 .subfeatures = &[_]*const Feature {
834 &feature_spm,
867 &feature_lpmx,835 &feature_lpmx,
868 &feature_jmpcall,
869 &feature_ijmpcall,836 &feature_ijmpcall,
870 &feature_movw,837 &feature_jmpcall,
871 &feature_sram,838 &feature_sram,
839 &feature_addsubiw,
872 &feature_mul,840 &feature_mul,
873 &feature_avr0,
874 &feature_lpm,
875 &feature_break,841 &feature_break,
876 &feature_spm,842 &feature_lpm,
877 &feature_addsubiw,843 &feature_avr0,
844 &feature_movw,
878 &feature_avr5,845 &feature_avr5,
879 },846 },
880};847};
...@@ -883,19 +850,19 @@ pub const cpu_at90usb1286 = Cpu{...@@ -883,19 +850,19 @@ pub const cpu_at90usb1286 = Cpu{
883 .name = "at90usb1286",850 .name = "at90usb1286",
884 .llvm_name = "at90usb1286",851 .llvm_name = "at90usb1286",
885 .subfeatures = &[_]*const Feature {852 .subfeatures = &[_]*const Feature {
853 &feature_spm,
886 &feature_lpmx,854 &feature_lpmx,
887 &feature_ijmpcall,855 &feature_ijmpcall,
888 &feature_jmpcall,856 &feature_jmpcall,
889 &feature_movw,
890 &feature_sram,857 &feature_sram,
858 &feature_addsubiw,
859 &feature_elpm,
891 &feature_mul,860 &feature_mul,
892 &feature_avr0,
893 &feature_lpm,
894 &feature_break,861 &feature_break,
895 &feature_spm,862 &feature_lpm,
896 &feature_elpmx,863 &feature_elpmx,
897 &feature_elpm,864 &feature_avr0,
898 &feature_addsubiw,865 &feature_movw,
899 &feature_avr51,866 &feature_avr51,
900 },867 },
901};868};
...@@ -904,19 +871,19 @@ pub const cpu_at90usb1287 = Cpu{...@@ -904,19 +871,19 @@ pub const cpu_at90usb1287 = Cpu{
904 .name = "at90usb1287",871 .name = "at90usb1287",
905 .llvm_name = "at90usb1287",872 .llvm_name = "at90usb1287",
906 .subfeatures = &[_]*const Feature {873 .subfeatures = &[_]*const Feature {
874 &feature_spm,
907 &feature_lpmx,875 &feature_lpmx,
908 &feature_ijmpcall,876 &feature_ijmpcall,
909 &feature_jmpcall,877 &feature_jmpcall,
910 &feature_movw,
911 &feature_sram,878 &feature_sram,
879 &feature_addsubiw,
880 &feature_elpm,
912 &feature_mul,881 &feature_mul,
913 &feature_avr0,
914 &feature_lpm,
915 &feature_break,882 &feature_break,
916 &feature_spm,883 &feature_lpm,
917 &feature_elpmx,884 &feature_elpmx,
918 &feature_elpm,885 &feature_avr0,
919 &feature_addsubiw,886 &feature_movw,
920 &feature_avr51,887 &feature_avr51,
921 },888 },
922};889};
...@@ -925,16 +892,16 @@ pub const cpu_at90usb162 = Cpu{...@@ -925,16 +892,16 @@ pub const cpu_at90usb162 = Cpu{
925 .name = "at90usb162",892 .name = "at90usb162",
926 .llvm_name = "at90usb162",893 .llvm_name = "at90usb162",
927 .subfeatures = &[_]*const Feature {894 .subfeatures = &[_]*const Feature {
895 &feature_spm,
928 &feature_lpmx,896 &feature_lpmx,
929 &feature_jmpcall,
930 &feature_ijmpcall,897 &feature_ijmpcall,
931 &feature_movw,898 &feature_jmpcall,
932 &feature_sram,899 &feature_sram,
933 &feature_avr0,
934 &feature_lpm,
935 &feature_break,
936 &feature_spm,
937 &feature_addsubiw,900 &feature_addsubiw,
901 &feature_break,
902 &feature_lpm,
903 &feature_avr0,
904 &feature_movw,
938 &feature_avr35,905 &feature_avr35,
939 },906 },
940};907};
...@@ -943,17 +910,17 @@ pub const cpu_at90usb646 = Cpu{...@@ -943,17 +910,17 @@ pub const cpu_at90usb646 = Cpu{
943 .name = "at90usb646",910 .name = "at90usb646",
944 .llvm_name = "at90usb646",911 .llvm_name = "at90usb646",
945 .subfeatures = &[_]*const Feature {912 .subfeatures = &[_]*const Feature {
913 &feature_spm,
946 &feature_lpmx,914 &feature_lpmx,
947 &feature_jmpcall,
948 &feature_ijmpcall,915 &feature_ijmpcall,
949 &feature_movw,916 &feature_jmpcall,
950 &feature_sram,917 &feature_sram,
918 &feature_addsubiw,
951 &feature_mul,919 &feature_mul,
952 &feature_avr0,
953 &feature_lpm,
954 &feature_break,920 &feature_break,
955 &feature_spm,921 &feature_lpm,
956 &feature_addsubiw,922 &feature_avr0,
923 &feature_movw,
957 &feature_avr5,924 &feature_avr5,
958 },925 },
959};926};
...@@ -962,17 +929,17 @@ pub const cpu_at90usb647 = Cpu{...@@ -962,17 +929,17 @@ pub const cpu_at90usb647 = Cpu{
962 .name = "at90usb647",929 .name = "at90usb647",
963 .llvm_name = "at90usb647",930 .llvm_name = "at90usb647",
964 .subfeatures = &[_]*const Feature {931 .subfeatures = &[_]*const Feature {
932 &feature_spm,
965 &feature_lpmx,933 &feature_lpmx,
966 &feature_jmpcall,
967 &feature_ijmpcall,934 &feature_ijmpcall,
968 &feature_movw,935 &feature_jmpcall,
969 &feature_sram,936 &feature_sram,
937 &feature_addsubiw,
970 &feature_mul,938 &feature_mul,
971 &feature_avr0,
972 &feature_lpm,
973 &feature_break,939 &feature_break,
974 &feature_spm,940 &feature_lpm,
975 &feature_addsubiw,941 &feature_avr0,
942 &feature_movw,
976 &feature_avr5,943 &feature_avr5,
977 },944 },
978};945};
...@@ -981,16 +948,16 @@ pub const cpu_at90usb82 = Cpu{...@@ -981,16 +948,16 @@ pub const cpu_at90usb82 = Cpu{
981 .name = "at90usb82",948 .name = "at90usb82",
982 .llvm_name = "at90usb82",949 .llvm_name = "at90usb82",
983 .subfeatures = &[_]*const Feature {950 .subfeatures = &[_]*const Feature {
951 &feature_spm,
984 &feature_lpmx,952 &feature_lpmx,
985 &feature_jmpcall,
986 &feature_ijmpcall,953 &feature_ijmpcall,
987 &feature_movw,954 &feature_jmpcall,
988 &feature_sram,955 &feature_sram,
989 &feature_avr0,
990 &feature_lpm,
991 &feature_break,
992 &feature_spm,
993 &feature_addsubiw,956 &feature_addsubiw,
957 &feature_break,
958 &feature_lpm,
959 &feature_avr0,
960 &feature_movw,
994 &feature_avr35,961 &feature_avr35,
995 },962 },
996};963};
...@@ -1002,9 +969,9 @@ pub const cpu_at94k = Cpu{...@@ -1002,9 +969,9 @@ pub const cpu_at94k = Cpu{
1002 &feature_ijmpcall,969 &feature_ijmpcall,
1003 &feature_jmpcall,970 &feature_jmpcall,
1004 &feature_sram,971 &feature_sram,
1005 &feature_avr0,
1006 &feature_lpm,
1007 &feature_addsubiw,972 &feature_addsubiw,
973 &feature_lpm,
974 &feature_avr0,
1008 &feature_avr3,975 &feature_avr3,
1009 &feature_lpmx,976 &feature_lpmx,
1010 &feature_movw,977 &feature_movw,
...@@ -1016,15 +983,15 @@ pub const cpu_ata5272 = Cpu{...@@ -1016,15 +983,15 @@ pub const cpu_ata5272 = Cpu{
1016 .name = "ata5272",983 .name = "ata5272",
1017 .llvm_name = "ata5272",984 .llvm_name = "ata5272",
1018 .subfeatures = &[_]*const Feature {985 .subfeatures = &[_]*const Feature {
986 &feature_spm,
1019 &feature_lpmx,987 &feature_lpmx,
1020 &feature_ijmpcall,988 &feature_ijmpcall,
1021 &feature_movw,
1022 &feature_sram,989 &feature_sram,
1023 &feature_avr0,
1024 &feature_lpm,
1025 &feature_break,
1026 &feature_spm,
1027 &feature_addsubiw,990 &feature_addsubiw,
991 &feature_break,
992 &feature_lpm,
993 &feature_avr0,
994 &feature_movw,
1028 &feature_avr25,995 &feature_avr25,
1029 },996 },
1030};997};
...@@ -1033,16 +1000,16 @@ pub const cpu_ata5505 = Cpu{...@@ -1033,16 +1000,16 @@ pub const cpu_ata5505 = Cpu{
1033 .name = "ata5505",1000 .name = "ata5505",
1034 .llvm_name = "ata5505",1001 .llvm_name = "ata5505",
1035 .subfeatures = &[_]*const Feature {1002 .subfeatures = &[_]*const Feature {
1003 &feature_spm,
1036 &feature_lpmx,1004 &feature_lpmx,
1037 &feature_jmpcall,
1038 &feature_ijmpcall,1005 &feature_ijmpcall,
1039 &feature_movw,1006 &feature_jmpcall,
1040 &feature_sram,1007 &feature_sram,
1041 &feature_avr0,
1042 &feature_lpm,
1043 &feature_break,
1044 &feature_spm,
1045 &feature_addsubiw,1008 &feature_addsubiw,
1009 &feature_break,
1010 &feature_lpm,
1011 &feature_avr0,
1012 &feature_movw,
1046 &feature_avr35,1013 &feature_avr35,
1047 },1014 },
1048};1015};
...@@ -1051,17 +1018,17 @@ pub const cpu_ata5790 = Cpu{...@@ -1051,17 +1018,17 @@ pub const cpu_ata5790 = Cpu{
1051 .name = "ata5790",1018 .name = "ata5790",
1052 .llvm_name = "ata5790",1019 .llvm_name = "ata5790",
1053 .subfeatures = &[_]*const Feature {1020 .subfeatures = &[_]*const Feature {
1021 &feature_spm,
1054 &feature_lpmx,1022 &feature_lpmx,
1055 &feature_jmpcall,
1056 &feature_ijmpcall,1023 &feature_ijmpcall,
1057 &feature_movw,1024 &feature_jmpcall,
1058 &feature_sram,1025 &feature_sram,
1026 &feature_addsubiw,
1059 &feature_mul,1027 &feature_mul,
1060 &feature_avr0,
1061 &feature_lpm,
1062 &feature_break,1028 &feature_break,
1063 &feature_spm,1029 &feature_lpm,
1064 &feature_addsubiw,1030 &feature_avr0,
1031 &feature_movw,
1065 &feature_avr5,1032 &feature_avr5,
1066 },1033 },
1067};1034};
...@@ -1070,17 +1037,17 @@ pub const cpu_ata5795 = Cpu{...@@ -1070,17 +1037,17 @@ pub const cpu_ata5795 = Cpu{
1070 .name = "ata5795",1037 .name = "ata5795",
1071 .llvm_name = "ata5795",1038 .llvm_name = "ata5795",
1072 .subfeatures = &[_]*const Feature {1039 .subfeatures = &[_]*const Feature {
1040 &feature_spm,
1073 &feature_lpmx,1041 &feature_lpmx,
1074 &feature_jmpcall,
1075 &feature_ijmpcall,1042 &feature_ijmpcall,
1076 &feature_movw,1043 &feature_jmpcall,
1077 &feature_sram,1044 &feature_sram,
1045 &feature_addsubiw,
1078 &feature_mul,1046 &feature_mul,
1079 &feature_avr0,
1080 &feature_lpm,
1081 &feature_break,1047 &feature_break,
1082 &feature_spm,1048 &feature_lpm,
1083 &feature_addsubiw,1049 &feature_avr0,
1050 &feature_movw,
1084 &feature_avr5,1051 &feature_avr5,
1085 },1052 },
1086};1053};
...@@ -1089,16 +1056,16 @@ pub const cpu_ata6285 = Cpu{...@@ -1089,16 +1056,16 @@ pub const cpu_ata6285 = Cpu{
1089 .name = "ata6285",1056 .name = "ata6285",
1090 .llvm_name = "ata6285",1057 .llvm_name = "ata6285",
1091 .subfeatures = &[_]*const Feature {1058 .subfeatures = &[_]*const Feature {
1059 &feature_spm,
1092 &feature_lpmx,1060 &feature_lpmx,
1093 &feature_ijmpcall,1061 &feature_ijmpcall,
1094 &feature_movw,
1095 &feature_sram,1062 &feature_sram,
1063 &feature_addsubiw,
1096 &feature_mul,1064 &feature_mul,
1097 &feature_avr0,
1098 &feature_lpm,
1099 &feature_break,1065 &feature_break,
1100 &feature_spm,1066 &feature_lpm,
1101 &feature_addsubiw,1067 &feature_avr0,
1068 &feature_movw,
1102 &feature_avr4,1069 &feature_avr4,
1103 },1070 },
1104};1071};
...@@ -1107,16 +1074,16 @@ pub const cpu_ata6286 = Cpu{...@@ -1107,16 +1074,16 @@ pub const cpu_ata6286 = Cpu{
1107 .name = "ata6286",1074 .name = "ata6286",
1108 .llvm_name = "ata6286",1075 .llvm_name = "ata6286",
1109 .subfeatures = &[_]*const Feature {1076 .subfeatures = &[_]*const Feature {
1077 &feature_spm,
1110 &feature_lpmx,1078 &feature_lpmx,
1111 &feature_ijmpcall,1079 &feature_ijmpcall,
1112 &feature_movw,
1113 &feature_sram,1080 &feature_sram,
1081 &feature_addsubiw,
1114 &feature_mul,1082 &feature_mul,
1115 &feature_avr0,
1116 &feature_lpm,
1117 &feature_break,1083 &feature_break,
1118 &feature_spm,1084 &feature_lpm,
1119 &feature_addsubiw,1085 &feature_avr0,
1086 &feature_movw,
1120 &feature_avr4,1087 &feature_avr4,
1121 },1088 },
1122};1089};
...@@ -1125,16 +1092,16 @@ pub const cpu_ata6289 = Cpu{...@@ -1125,16 +1092,16 @@ pub const cpu_ata6289 = Cpu{
1125 .name = "ata6289",1092 .name = "ata6289",
1126 .llvm_name = "ata6289",1093 .llvm_name = "ata6289",
1127 .subfeatures = &[_]*const Feature {1094 .subfeatures = &[_]*const Feature {
1095 &feature_spm,
1128 &feature_lpmx,1096 &feature_lpmx,
1129 &feature_ijmpcall,1097 &feature_ijmpcall,
1130 &feature_movw,
1131 &feature_sram,1098 &feature_sram,
1099 &feature_addsubiw,
1132 &feature_mul,1100 &feature_mul,
1133 &feature_avr0,
1134 &feature_lpm,
1135 &feature_break,1101 &feature_break,
1136 &feature_spm,1102 &feature_lpm,
1137 &feature_addsubiw,1103 &feature_avr0,
1104 &feature_movw,
1138 &feature_avr4,1105 &feature_avr4,
1139 },1106 },
1140};1107};
...@@ -1143,13 +1110,13 @@ pub const cpu_atmega103 = Cpu{...@@ -1143,13 +1110,13 @@ pub const cpu_atmega103 = Cpu{
1143 .name = "atmega103",1110 .name = "atmega103",
1144 .llvm_name = "atmega103",1111 .llvm_name = "atmega103",
1145 .subfeatures = &[_]*const Feature {1112 .subfeatures = &[_]*const Feature {
1146 &feature_jmpcall,
1147 &feature_ijmpcall,1113 &feature_ijmpcall,
1114 &feature_jmpcall,
1148 &feature_sram,1115 &feature_sram,
1149 &feature_avr0,
1150 &feature_lpm,
1151 &feature_elpm,
1152 &feature_addsubiw,1116 &feature_addsubiw,
1117 &feature_elpm,
1118 &feature_lpm,
1119 &feature_avr0,
1153 &feature_avr31,1120 &feature_avr31,
1154 },1121 },
1155};1122};
...@@ -1158,19 +1125,19 @@ pub const cpu_atmega128 = Cpu{...@@ -1158,19 +1125,19 @@ pub const cpu_atmega128 = Cpu{
1158 .name = "atmega128",1125 .name = "atmega128",
1159 .llvm_name = "atmega128",1126 .llvm_name = "atmega128",
1160 .subfeatures = &[_]*const Feature {1127 .subfeatures = &[_]*const Feature {
1128 &feature_spm,
1161 &feature_lpmx,1129 &feature_lpmx,
1162 &feature_ijmpcall,1130 &feature_ijmpcall,
1163 &feature_jmpcall,1131 &feature_jmpcall,
1164 &feature_movw,
1165 &feature_sram,1132 &feature_sram,
1133 &feature_addsubiw,
1134 &feature_elpm,
1166 &feature_mul,1135 &feature_mul,
1167 &feature_avr0,
1168 &feature_lpm,
1169 &feature_break,1136 &feature_break,
1170 &feature_spm,1137 &feature_lpm,
1171 &feature_elpmx,1138 &feature_elpmx,
1172 &feature_elpm,1139 &feature_avr0,
1173 &feature_addsubiw,1140 &feature_movw,
1174 &feature_avr51,1141 &feature_avr51,
1175 },1142 },
1176};1143};
...@@ -1179,19 +1146,19 @@ pub const cpu_atmega1280 = Cpu{...@@ -1179,19 +1146,19 @@ pub const cpu_atmega1280 = Cpu{
1179 .name = "atmega1280",1146 .name = "atmega1280",
1180 .llvm_name = "atmega1280",1147 .llvm_name = "atmega1280",
1181 .subfeatures = &[_]*const Feature {1148 .subfeatures = &[_]*const Feature {
1149 &feature_spm,
1182 &feature_lpmx,1150 &feature_lpmx,
1183 &feature_ijmpcall,1151 &feature_ijmpcall,
1184 &feature_jmpcall,1152 &feature_jmpcall,
1185 &feature_movw,
1186 &feature_sram,1153 &feature_sram,
1154 &feature_addsubiw,
1155 &feature_elpm,
1187 &feature_mul,1156 &feature_mul,
1188 &feature_avr0,
1189 &feature_lpm,
1190 &feature_break,1157 &feature_break,
1191 &feature_spm,1158 &feature_lpm,
1192 &feature_elpmx,1159 &feature_elpmx,
1193 &feature_elpm,1160 &feature_avr0,
1194 &feature_addsubiw,1161 &feature_movw,
1195 &feature_avr51,1162 &feature_avr51,
1196 },1163 },
1197};1164};
...@@ -1200,19 +1167,19 @@ pub const cpu_atmega1281 = Cpu{...@@ -1200,19 +1167,19 @@ pub const cpu_atmega1281 = Cpu{
1200 .name = "atmega1281",1167 .name = "atmega1281",
1201 .llvm_name = "atmega1281",1168 .llvm_name = "atmega1281",
1202 .subfeatures = &[_]*const Feature {1169 .subfeatures = &[_]*const Feature {
1170 &feature_spm,
1203 &feature_lpmx,1171 &feature_lpmx,
1204 &feature_ijmpcall,1172 &feature_ijmpcall,
1205 &feature_jmpcall,1173 &feature_jmpcall,
1206 &feature_movw,
1207 &feature_sram,1174 &feature_sram,
1175 &feature_addsubiw,
1176 &feature_elpm,
1208 &feature_mul,1177 &feature_mul,
1209 &feature_avr0,
1210 &feature_lpm,
1211 &feature_break,1178 &feature_break,
1212 &feature_spm,1179 &feature_lpm,
1213 &feature_elpmx,1180 &feature_elpmx,
1214 &feature_elpm,1181 &feature_avr0,
1215 &feature_addsubiw,1182 &feature_movw,
1216 &feature_avr51,1183 &feature_avr51,
1217 },1184 },
1218};1185};
...@@ -1221,19 +1188,19 @@ pub const cpu_atmega1284 = Cpu{...@@ -1221,19 +1188,19 @@ pub const cpu_atmega1284 = Cpu{
1221 .name = "atmega1284",1188 .name = "atmega1284",
1222 .llvm_name = "atmega1284",1189 .llvm_name = "atmega1284",
1223 .subfeatures = &[_]*const Feature {1190 .subfeatures = &[_]*const Feature {
1191 &feature_spm,
1224 &feature_lpmx,1192 &feature_lpmx,
1225 &feature_ijmpcall,1193 &feature_ijmpcall,
1226 &feature_jmpcall,1194 &feature_jmpcall,
1227 &feature_movw,
1228 &feature_sram,1195 &feature_sram,
1196 &feature_addsubiw,
1197 &feature_elpm,
1229 &feature_mul,1198 &feature_mul,
1230 &feature_avr0,
1231 &feature_lpm,
1232 &feature_break,1199 &feature_break,
1233 &feature_spm,1200 &feature_lpm,
1234 &feature_elpmx,1201 &feature_elpmx,
1235 &feature_elpm,1202 &feature_avr0,
1236 &feature_addsubiw,1203 &feature_movw,
1237 &feature_avr51,1204 &feature_avr51,
1238 },1205 },
1239};1206};
...@@ -1242,19 +1209,19 @@ pub const cpu_atmega1284p = Cpu{...@@ -1242,19 +1209,19 @@ pub const cpu_atmega1284p = Cpu{
1242 .name = "atmega1284p",1209 .name = "atmega1284p",
1243 .llvm_name = "atmega1284p",1210 .llvm_name = "atmega1284p",
1244 .subfeatures = &[_]*const Feature {1211 .subfeatures = &[_]*const Feature {
1212 &feature_spm,
1245 &feature_lpmx,1213 &feature_lpmx,
1246 &feature_ijmpcall,1214 &feature_ijmpcall,
1247 &feature_jmpcall,1215 &feature_jmpcall,
1248 &feature_movw,
1249 &feature_sram,1216 &feature_sram,
1217 &feature_addsubiw,
1218 &feature_elpm,
1250 &feature_mul,1219 &feature_mul,
1251 &feature_avr0,
1252 &feature_lpm,
1253 &feature_break,1220 &feature_break,
1254 &feature_spm,1221 &feature_lpm,
1255 &feature_elpmx,1222 &feature_elpmx,
1256 &feature_elpm,1223 &feature_avr0,
1257 &feature_addsubiw,1224 &feature_movw,
1258 &feature_avr51,1225 &feature_avr51,
1259 },1226 },
1260};1227};
...@@ -1263,19 +1230,19 @@ pub const cpu_atmega1284rfr2 = Cpu{...@@ -1263,19 +1230,19 @@ pub const cpu_atmega1284rfr2 = Cpu{
1263 .name = "atmega1284rfr2",1230 .name = "atmega1284rfr2",
1264 .llvm_name = "atmega1284rfr2",1231 .llvm_name = "atmega1284rfr2",
1265 .subfeatures = &[_]*const Feature {1232 .subfeatures = &[_]*const Feature {
1233 &feature_spm,
1266 &feature_lpmx,1234 &feature_lpmx,
1267 &feature_ijmpcall,1235 &feature_ijmpcall,
1268 &feature_jmpcall,1236 &feature_jmpcall,
1269 &feature_movw,
1270 &feature_sram,1237 &feature_sram,
1238 &feature_addsubiw,
1239 &feature_elpm,
1271 &feature_mul,1240 &feature_mul,
1272 &feature_avr0,
1273 &feature_lpm,
1274 &feature_break,1241 &feature_break,
1275 &feature_spm,1242 &feature_lpm,
1276 &feature_elpmx,1243 &feature_elpmx,
1277 &feature_elpm,1244 &feature_avr0,
1278 &feature_addsubiw,1245 &feature_movw,
1279 &feature_avr51,1246 &feature_avr51,
1280 },1247 },
1281};1248};
...@@ -1284,19 +1251,19 @@ pub const cpu_atmega128a = Cpu{...@@ -1284,19 +1251,19 @@ pub const cpu_atmega128a = Cpu{
1284 .name = "atmega128a",1251 .name = "atmega128a",
1285 .llvm_name = "atmega128a",1252 .llvm_name = "atmega128a",
1286 .subfeatures = &[_]*const Feature {1253 .subfeatures = &[_]*const Feature {
1254 &feature_spm,
1287 &feature_lpmx,1255 &feature_lpmx,
1288 &feature_ijmpcall,1256 &feature_ijmpcall,
1289 &feature_jmpcall,1257 &feature_jmpcall,
1290 &feature_movw,
1291 &feature_sram,1258 &feature_sram,
1259 &feature_addsubiw,
1260 &feature_elpm,
1292 &feature_mul,1261 &feature_mul,
1293 &feature_avr0,
1294 &feature_lpm,
1295 &feature_break,1262 &feature_break,
1296 &feature_spm,1263 &feature_lpm,
1297 &feature_elpmx,1264 &feature_elpmx,
1298 &feature_elpm,1265 &feature_avr0,
1299 &feature_addsubiw,1266 &feature_movw,
1300 &feature_avr51,1267 &feature_avr51,
1301 },1268 },
1302};1269};
...@@ -1305,19 +1272,19 @@ pub const cpu_atmega128rfa1 = Cpu{...@@ -1305,19 +1272,19 @@ pub const cpu_atmega128rfa1 = Cpu{
1305 .name = "atmega128rfa1",1272 .name = "atmega128rfa1",
1306 .llvm_name = "atmega128rfa1",1273 .llvm_name = "atmega128rfa1",
1307 .subfeatures = &[_]*const Feature {1274 .subfeatures = &[_]*const Feature {
1275 &feature_spm,
1308 &feature_lpmx,1276 &feature_lpmx,
1309 &feature_ijmpcall,1277 &feature_ijmpcall,
1310 &feature_jmpcall,1278 &feature_jmpcall,
1311 &feature_movw,
1312 &feature_sram,1279 &feature_sram,
1280 &feature_addsubiw,
1281 &feature_elpm,
1313 &feature_mul,1282 &feature_mul,
1314 &feature_avr0,
1315 &feature_lpm,
1316 &feature_break,1283 &feature_break,
1317 &feature_spm,1284 &feature_lpm,
1318 &feature_elpmx,1285 &feature_elpmx,
1319 &feature_elpm,1286 &feature_avr0,
1320 &feature_addsubiw,1287 &feature_movw,
1321 &feature_avr51,1288 &feature_avr51,
1322 },1289 },
1323};1290};
...@@ -1326,19 +1293,19 @@ pub const cpu_atmega128rfr2 = Cpu{...@@ -1326,19 +1293,19 @@ pub const cpu_atmega128rfr2 = Cpu{
1326 .name = "atmega128rfr2",1293 .name = "atmega128rfr2",
1327 .llvm_name = "atmega128rfr2",1294 .llvm_name = "atmega128rfr2",
1328 .subfeatures = &[_]*const Feature {1295 .subfeatures = &[_]*const Feature {
1296 &feature_spm,
1329 &feature_lpmx,1297 &feature_lpmx,
1330 &feature_ijmpcall,1298 &feature_ijmpcall,
1331 &feature_jmpcall,1299 &feature_jmpcall,
1332 &feature_movw,
1333 &feature_sram,1300 &feature_sram,
1301 &feature_addsubiw,
1302 &feature_elpm,
1334 &feature_mul,1303 &feature_mul,
1335 &feature_avr0,
1336 &feature_lpm,
1337 &feature_break,1304 &feature_break,
1338 &feature_spm,1305 &feature_lpm,
1339 &feature_elpmx,1306 &feature_elpmx,
1340 &feature_elpm,1307 &feature_avr0,
1341 &feature_addsubiw,1308 &feature_movw,
1342 &feature_avr51,1309 &feature_avr51,
1343 },1310 },
1344};1311};
...@@ -1347,17 +1314,17 @@ pub const cpu_atmega16 = Cpu{...@@ -1347,17 +1314,17 @@ pub const cpu_atmega16 = Cpu{
1347 .name = "atmega16",1314 .name = "atmega16",
1348 .llvm_name = "atmega16",1315 .llvm_name = "atmega16",
1349 .subfeatures = &[_]*const Feature {1316 .subfeatures = &[_]*const Feature {
1317 &feature_spm,
1350 &feature_lpmx,1318 &feature_lpmx,
1351 &feature_jmpcall,
1352 &feature_ijmpcall,1319 &feature_ijmpcall,
1353 &feature_movw,1320 &feature_jmpcall,
1354 &feature_sram,1321 &feature_sram,
1322 &feature_addsubiw,
1355 &feature_mul,1323 &feature_mul,
1356 &feature_avr0,
1357 &feature_lpm,
1358 &feature_break,1324 &feature_break,
1359 &feature_spm,1325 &feature_lpm,
1360 &feature_addsubiw,1326 &feature_avr0,
1327 &feature_movw,
1361 &feature_avr5,1328 &feature_avr5,
1362 },1329 },
1363};1330};
...@@ -1369,9 +1336,9 @@ pub const cpu_atmega161 = Cpu{...@@ -1369,9 +1336,9 @@ pub const cpu_atmega161 = Cpu{
1369 &feature_ijmpcall,1336 &feature_ijmpcall,
1370 &feature_jmpcall,1337 &feature_jmpcall,
1371 &feature_sram,1338 &feature_sram,
1372 &feature_avr0,
1373 &feature_lpm,
1374 &feature_addsubiw,1339 &feature_addsubiw,
1340 &feature_lpm,
1341 &feature_avr0,
1375 &feature_avr3,1342 &feature_avr3,
1376 &feature_lpmx,1343 &feature_lpmx,
1377 &feature_movw,1344 &feature_movw,
...@@ -1384,17 +1351,17 @@ pub const cpu_atmega162 = Cpu{...@@ -1384,17 +1351,17 @@ pub const cpu_atmega162 = Cpu{
1384 .name = "atmega162",1351 .name = "atmega162",
1385 .llvm_name = "atmega162",1352 .llvm_name = "atmega162",
1386 .subfeatures = &[_]*const Feature {1353 .subfeatures = &[_]*const Feature {
1354 &feature_spm,
1387 &feature_lpmx,1355 &feature_lpmx,
1388 &feature_jmpcall,
1389 &feature_ijmpcall,1356 &feature_ijmpcall,
1390 &feature_movw,1357 &feature_jmpcall,
1391 &feature_sram,1358 &feature_sram,
1359 &feature_addsubiw,
1392 &feature_mul,1360 &feature_mul,
1393 &feature_avr0,
1394 &feature_lpm,
1395 &feature_break,1361 &feature_break,
1396 &feature_spm,1362 &feature_lpm,
1397 &feature_addsubiw,1363 &feature_avr0,
1364 &feature_movw,
1398 &feature_avr5,1365 &feature_avr5,
1399 },1366 },
1400};1367};
...@@ -1406,9 +1373,9 @@ pub const cpu_atmega163 = Cpu{...@@ -1406,9 +1373,9 @@ pub const cpu_atmega163 = Cpu{
1406 &feature_ijmpcall,1373 &feature_ijmpcall,
1407 &feature_jmpcall,1374 &feature_jmpcall,
1408 &feature_sram,1375 &feature_sram,
1409 &feature_avr0,
1410 &feature_lpm,
1411 &feature_addsubiw,1376 &feature_addsubiw,
1377 &feature_lpm,
1378 &feature_avr0,
1412 &feature_avr3,1379 &feature_avr3,
1413 &feature_lpmx,1380 &feature_lpmx,
1414 &feature_movw,1381 &feature_movw,
...@@ -1421,17 +1388,17 @@ pub const cpu_atmega164a = Cpu{...@@ -1421,17 +1388,17 @@ pub const cpu_atmega164a = Cpu{
1421 .name = "atmega164a",1388 .name = "atmega164a",
1422 .llvm_name = "atmega164a",1389 .llvm_name = "atmega164a",
1423 .subfeatures = &[_]*const Feature {1390 .subfeatures = &[_]*const Feature {
1391 &feature_spm,
1424 &feature_lpmx,1392 &feature_lpmx,
1425 &feature_jmpcall,
1426 &feature_ijmpcall,1393 &feature_ijmpcall,
1427 &feature_movw,1394 &feature_jmpcall,
1428 &feature_sram,1395 &feature_sram,
1396 &feature_addsubiw,
1429 &feature_mul,1397 &feature_mul,
1430 &feature_avr0,
1431 &feature_lpm,
1432 &feature_break,1398 &feature_break,
1433 &feature_spm,1399 &feature_lpm,
1434 &feature_addsubiw,1400 &feature_avr0,
1401 &feature_movw,
1435 &feature_avr5,1402 &feature_avr5,
1436 },1403 },
1437};1404};
...@@ -1440,17 +1407,17 @@ pub const cpu_atmega164p = Cpu{...@@ -1440,17 +1407,17 @@ pub const cpu_atmega164p = Cpu{
1440 .name = "atmega164p",1407 .name = "atmega164p",
1441 .llvm_name = "atmega164p",1408 .llvm_name = "atmega164p",
1442 .subfeatures = &[_]*const Feature {1409 .subfeatures = &[_]*const Feature {
1410 &feature_spm,
1443 &feature_lpmx,1411 &feature_lpmx,
1444 &feature_jmpcall,
1445 &feature_ijmpcall,1412 &feature_ijmpcall,
1446 &feature_movw,1413 &feature_jmpcall,
1447 &feature_sram,1414 &feature_sram,
1415 &feature_addsubiw,
1448 &feature_mul,1416 &feature_mul,
1449 &feature_avr0,
1450 &feature_lpm,
1451 &feature_break,1417 &feature_break,
1452 &feature_spm,1418 &feature_lpm,
1453 &feature_addsubiw,1419 &feature_avr0,
1420 &feature_movw,
1454 &feature_avr5,1421 &feature_avr5,
1455 },1422 },
1456};1423};
...@@ -1459,17 +1426,17 @@ pub const cpu_atmega164pa = Cpu{...@@ -1459,17 +1426,17 @@ pub const cpu_atmega164pa = Cpu{
1459 .name = "atmega164pa",1426 .name = "atmega164pa",
1460 .llvm_name = "atmega164pa",1427 .llvm_name = "atmega164pa",
1461 .subfeatures = &[_]*const Feature {1428 .subfeatures = &[_]*const Feature {
1429 &feature_spm,
1462 &feature_lpmx,1430 &feature_lpmx,
1463 &feature_jmpcall,
1464 &feature_ijmpcall,1431 &feature_ijmpcall,
1465 &feature_movw,1432 &feature_jmpcall,
1466 &feature_sram,1433 &feature_sram,
1434 &feature_addsubiw,
1467 &feature_mul,1435 &feature_mul,
1468 &feature_avr0,
1469 &feature_lpm,
1470 &feature_break,1436 &feature_break,
1471 &feature_spm,1437 &feature_lpm,
1472 &feature_addsubiw,1438 &feature_avr0,
1439 &feature_movw,
1473 &feature_avr5,1440 &feature_avr5,
1474 },1441 },
1475};1442};
...@@ -1478,17 +1445,17 @@ pub const cpu_atmega165 = Cpu{...@@ -1478,17 +1445,17 @@ pub const cpu_atmega165 = Cpu{
1478 .name = "atmega165",1445 .name = "atmega165",
1479 .llvm_name = "atmega165",1446 .llvm_name = "atmega165",
1480 .subfeatures = &[_]*const Feature {1447 .subfeatures = &[_]*const Feature {
1448 &feature_spm,
1481 &feature_lpmx,1449 &feature_lpmx,
1482 &feature_jmpcall,
1483 &feature_ijmpcall,1450 &feature_ijmpcall,
1484 &feature_movw,1451 &feature_jmpcall,
1485 &feature_sram,1452 &feature_sram,
1453 &feature_addsubiw,
1486 &feature_mul,1454 &feature_mul,
1487 &feature_avr0,
1488 &feature_lpm,
1489 &feature_break,1455 &feature_break,
1490 &feature_spm,1456 &feature_lpm,
1491 &feature_addsubiw,1457 &feature_avr0,
1458 &feature_movw,
1492 &feature_avr5,1459 &feature_avr5,
1493 },1460 },
1494};1461};
...@@ -1497,17 +1464,17 @@ pub const cpu_atmega165a = Cpu{...@@ -1497,17 +1464,17 @@ pub const cpu_atmega165a = Cpu{
1497 .name = "atmega165a",1464 .name = "atmega165a",
1498 .llvm_name = "atmega165a",1465 .llvm_name = "atmega165a",
1499 .subfeatures = &[_]*const Feature {1466 .subfeatures = &[_]*const Feature {
1467 &feature_spm,
1500 &feature_lpmx,1468 &feature_lpmx,
1501 &feature_jmpcall,
1502 &feature_ijmpcall,1469 &feature_ijmpcall,
1503 &feature_movw,1470 &feature_jmpcall,
1504 &feature_sram,1471 &feature_sram,
1472 &feature_addsubiw,
1505 &feature_mul,1473 &feature_mul,
1506 &feature_avr0,
1507 &feature_lpm,
1508 &feature_break,1474 &feature_break,
1509 &feature_spm,1475 &feature_lpm,
1510 &feature_addsubiw,1476 &feature_avr0,
1477 &feature_movw,
1511 &feature_avr5,1478 &feature_avr5,
1512 },1479 },
1513};1480};
...@@ -1516,17 +1483,17 @@ pub const cpu_atmega165p = Cpu{...@@ -1516,17 +1483,17 @@ pub const cpu_atmega165p = Cpu{
1516 .name = "atmega165p",1483 .name = "atmega165p",
1517 .llvm_name = "atmega165p",1484 .llvm_name = "atmega165p",
1518 .subfeatures = &[_]*const Feature {1485 .subfeatures = &[_]*const Feature {
1486 &feature_spm,
1519 &feature_lpmx,1487 &feature_lpmx,
1520 &feature_jmpcall,
1521 &feature_ijmpcall,1488 &feature_ijmpcall,
1522 &feature_movw,1489 &feature_jmpcall,
1523 &feature_sram,1490 &feature_sram,
1491 &feature_addsubiw,
1524 &feature_mul,1492 &feature_mul,
1525 &feature_avr0,
1526 &feature_lpm,
1527 &feature_break,1493 &feature_break,
1528 &feature_spm,1494 &feature_lpm,
1529 &feature_addsubiw,1495 &feature_avr0,
1496 &feature_movw,
1530 &feature_avr5,1497 &feature_avr5,
1531 },1498 },
1532};1499};
...@@ -1535,17 +1502,17 @@ pub const cpu_atmega165pa = Cpu{...@@ -1535,17 +1502,17 @@ pub const cpu_atmega165pa = Cpu{
1535 .name = "atmega165pa",1502 .name = "atmega165pa",
1536 .llvm_name = "atmega165pa",1503 .llvm_name = "atmega165pa",
1537 .subfeatures = &[_]*const Feature {1504 .subfeatures = &[_]*const Feature {
1505 &feature_spm,
1538 &feature_lpmx,1506 &feature_lpmx,
1539 &feature_jmpcall,
1540 &feature_ijmpcall,1507 &feature_ijmpcall,
1541 &feature_movw,1508 &feature_jmpcall,
1542 &feature_sram,1509 &feature_sram,
1510 &feature_addsubiw,
1543 &feature_mul,1511 &feature_mul,
1544 &feature_avr0,
1545 &feature_lpm,
1546 &feature_break,1512 &feature_break,
1547 &feature_spm,1513 &feature_lpm,
1548 &feature_addsubiw,1514 &feature_avr0,
1515 &feature_movw,
1549 &feature_avr5,1516 &feature_avr5,
1550 },1517 },
1551};1518};
...@@ -1554,17 +1521,17 @@ pub const cpu_atmega168 = Cpu{...@@ -1554,17 +1521,17 @@ pub const cpu_atmega168 = Cpu{
1554 .name = "atmega168",1521 .name = "atmega168",
1555 .llvm_name = "atmega168",1522 .llvm_name = "atmega168",
1556 .subfeatures = &[_]*const Feature {1523 .subfeatures = &[_]*const Feature {
1524 &feature_spm,
1557 &feature_lpmx,1525 &feature_lpmx,
1558 &feature_jmpcall,
1559 &feature_ijmpcall,1526 &feature_ijmpcall,
1560 &feature_movw,1527 &feature_jmpcall,
1561 &feature_sram,1528 &feature_sram,
1529 &feature_addsubiw,
1562 &feature_mul,1530 &feature_mul,
1563 &feature_avr0,
1564 &feature_lpm,
1565 &feature_break,1531 &feature_break,
1566 &feature_spm,1532 &feature_lpm,
1567 &feature_addsubiw,1533 &feature_avr0,
1534 &feature_movw,
1568 &feature_avr5,1535 &feature_avr5,
1569 },1536 },
1570};1537};
...@@ -1573,17 +1540,17 @@ pub const cpu_atmega168a = Cpu{...@@ -1573,17 +1540,17 @@ pub const cpu_atmega168a = Cpu{
1573 .name = "atmega168a",1540 .name = "atmega168a",
1574 .llvm_name = "atmega168a",1541 .llvm_name = "atmega168a",
1575 .subfeatures = &[_]*const Feature {1542 .subfeatures = &[_]*const Feature {
1543 &feature_spm,
1576 &feature_lpmx,1544 &feature_lpmx,
1577 &feature_jmpcall,
1578 &feature_ijmpcall,1545 &feature_ijmpcall,
1579 &feature_movw,1546 &feature_jmpcall,
1580 &feature_sram,1547 &feature_sram,
1548 &feature_addsubiw,
1581 &feature_mul,1549 &feature_mul,
1582 &feature_avr0,
1583 &feature_lpm,
1584 &feature_break,1550 &feature_break,
1585 &feature_spm,1551 &feature_lpm,
1586 &feature_addsubiw,1552 &feature_avr0,
1553 &feature_movw,
1587 &feature_avr5,1554 &feature_avr5,
1588 },1555 },
1589};1556};
...@@ -1592,17 +1559,17 @@ pub const cpu_atmega168p = Cpu{...@@ -1592,17 +1559,17 @@ pub const cpu_atmega168p = Cpu{
1592 .name = "atmega168p",1559 .name = "atmega168p",
1593 .llvm_name = "atmega168p",1560 .llvm_name = "atmega168p",
1594 .subfeatures = &[_]*const Feature {1561 .subfeatures = &[_]*const Feature {
1562 &feature_spm,
1595 &feature_lpmx,1563 &feature_lpmx,
1596 &feature_jmpcall,
1597 &feature_ijmpcall,1564 &feature_ijmpcall,
1598 &feature_movw,1565 &feature_jmpcall,
1599 &feature_sram,1566 &feature_sram,
1567 &feature_addsubiw,
1600 &feature_mul,1568 &feature_mul,
1601 &feature_avr0,
1602 &feature_lpm,
1603 &feature_break,1569 &feature_break,
1604 &feature_spm,1570 &feature_lpm,
1605 &feature_addsubiw,1571 &feature_avr0,
1572 &feature_movw,
1606 &feature_avr5,1573 &feature_avr5,
1607 },1574 },
1608};1575};
...@@ -1611,17 +1578,17 @@ pub const cpu_atmega168pa = Cpu{...@@ -1611,17 +1578,17 @@ pub const cpu_atmega168pa = Cpu{
1611 .name = "atmega168pa",1578 .name = "atmega168pa",
1612 .llvm_name = "atmega168pa",1579 .llvm_name = "atmega168pa",
1613 .subfeatures = &[_]*const Feature {1580 .subfeatures = &[_]*const Feature {
1581 &feature_spm,
1614 &feature_lpmx,1582 &feature_lpmx,
1615 &feature_jmpcall,
1616 &feature_ijmpcall,1583 &feature_ijmpcall,
1617 &feature_movw,1584 &feature_jmpcall,
1618 &feature_sram,1585 &feature_sram,
1586 &feature_addsubiw,
1619 &feature_mul,1587 &feature_mul,
1620 &feature_avr0,
1621 &feature_lpm,
1622 &feature_break,1588 &feature_break,
1623 &feature_spm,1589 &feature_lpm,
1624 &feature_addsubiw,1590 &feature_avr0,
1591 &feature_movw,
1625 &feature_avr5,1592 &feature_avr5,
1626 },1593 },
1627};1594};
...@@ -1630,17 +1597,17 @@ pub const cpu_atmega169 = Cpu{...@@ -1630,17 +1597,17 @@ pub const cpu_atmega169 = Cpu{
1630 .name = "atmega169",1597 .name = "atmega169",
1631 .llvm_name = "atmega169",1598 .llvm_name = "atmega169",
1632 .subfeatures = &[_]*const Feature {1599 .subfeatures = &[_]*const Feature {
1600 &feature_spm,
1633 &feature_lpmx,1601 &feature_lpmx,
1634 &feature_jmpcall,
1635 &feature_ijmpcall,1602 &feature_ijmpcall,
1636 &feature_movw,1603 &feature_jmpcall,
1637 &feature_sram,1604 &feature_sram,
1605 &feature_addsubiw,
1638 &feature_mul,1606 &feature_mul,
1639 &feature_avr0,
1640 &feature_lpm,
1641 &feature_break,1607 &feature_break,
1642 &feature_spm,1608 &feature_lpm,
1643 &feature_addsubiw,1609 &feature_avr0,
1610 &feature_movw,
1644 &feature_avr5,1611 &feature_avr5,
1645 },1612 },
1646};1613};
...@@ -1649,17 +1616,17 @@ pub const cpu_atmega169a = Cpu{...@@ -1649,17 +1616,17 @@ pub const cpu_atmega169a = Cpu{
1649 .name = "atmega169a",1616 .name = "atmega169a",
1650 .llvm_name = "atmega169a",1617 .llvm_name = "atmega169a",
1651 .subfeatures = &[_]*const Feature {1618 .subfeatures = &[_]*const Feature {
1619 &feature_spm,
1652 &feature_lpmx,1620 &feature_lpmx,
1653 &feature_jmpcall,
1654 &feature_ijmpcall,1621 &feature_ijmpcall,
1655 &feature_movw,1622 &feature_jmpcall,
1656 &feature_sram,1623 &feature_sram,
1624 &feature_addsubiw,
1657 &feature_mul,1625 &feature_mul,
1658 &feature_avr0,
1659 &feature_lpm,
1660 &feature_break,1626 &feature_break,
1661 &feature_spm,1627 &feature_lpm,
1662 &feature_addsubiw,1628 &feature_avr0,
1629 &feature_movw,
1663 &feature_avr5,1630 &feature_avr5,
1664 },1631 },
1665};1632};
...@@ -1668,17 +1635,17 @@ pub const cpu_atmega169p = Cpu{...@@ -1668,17 +1635,17 @@ pub const cpu_atmega169p = Cpu{
1668 .name = "atmega169p",1635 .name = "atmega169p",
1669 .llvm_name = "atmega169p",1636 .llvm_name = "atmega169p",
1670 .subfeatures = &[_]*const Feature {1637 .subfeatures = &[_]*const Feature {
1638 &feature_spm,
1671 &feature_lpmx,1639 &feature_lpmx,
1672 &feature_jmpcall,
1673 &feature_ijmpcall,1640 &feature_ijmpcall,
1674 &feature_movw,1641 &feature_jmpcall,
1675 &feature_sram,1642 &feature_sram,
1643 &feature_addsubiw,
1676 &feature_mul,1644 &feature_mul,
1677 &feature_avr0,
1678 &feature_lpm,
1679 &feature_break,1645 &feature_break,
1680 &feature_spm,1646 &feature_lpm,
1681 &feature_addsubiw,1647 &feature_avr0,
1648 &feature_movw,
1682 &feature_avr5,1649 &feature_avr5,
1683 },1650 },
1684};1651};
...@@ -1687,17 +1654,17 @@ pub const cpu_atmega169pa = Cpu{...@@ -1687,17 +1654,17 @@ pub const cpu_atmega169pa = Cpu{
1687 .name = "atmega169pa",1654 .name = "atmega169pa",
1688 .llvm_name = "atmega169pa",1655 .llvm_name = "atmega169pa",
1689 .subfeatures = &[_]*const Feature {1656 .subfeatures = &[_]*const Feature {
1657 &feature_spm,
1690 &feature_lpmx,1658 &feature_lpmx,
1691 &feature_jmpcall,
1692 &feature_ijmpcall,1659 &feature_ijmpcall,
1693 &feature_movw,1660 &feature_jmpcall,
1694 &feature_sram,1661 &feature_sram,
1662 &feature_addsubiw,
1695 &feature_mul,1663 &feature_mul,
1696 &feature_avr0,
1697 &feature_lpm,
1698 &feature_break,1664 &feature_break,
1699 &feature_spm,1665 &feature_lpm,
1700 &feature_addsubiw,1666 &feature_avr0,
1667 &feature_movw,
1701 &feature_avr5,1668 &feature_avr5,
1702 },1669 },
1703};1670};
...@@ -1706,17 +1673,17 @@ pub const cpu_atmega16a = Cpu{...@@ -1706,17 +1673,17 @@ pub const cpu_atmega16a = Cpu{
1706 .name = "atmega16a",1673 .name = "atmega16a",
1707 .llvm_name = "atmega16a",1674 .llvm_name = "atmega16a",
1708 .subfeatures = &[_]*const Feature {1675 .subfeatures = &[_]*const Feature {
1676 &feature_spm,
1709 &feature_lpmx,1677 &feature_lpmx,
1710 &feature_jmpcall,
1711 &feature_ijmpcall,1678 &feature_ijmpcall,
1712 &feature_movw,1679 &feature_jmpcall,
1713 &feature_sram,1680 &feature_sram,
1681 &feature_addsubiw,
1714 &feature_mul,1682 &feature_mul,
1715 &feature_avr0,
1716 &feature_lpm,
1717 &feature_break,1683 &feature_break,
1718 &feature_spm,1684 &feature_lpm,
1719 &feature_addsubiw,1685 &feature_avr0,
1686 &feature_movw,
1720 &feature_avr5,1687 &feature_avr5,
1721 },1688 },
1722};1689};
...@@ -1725,17 +1692,17 @@ pub const cpu_atmega16hva = Cpu{...@@ -1725,17 +1692,17 @@ pub const cpu_atmega16hva = Cpu{
1725 .name = "atmega16hva",1692 .name = "atmega16hva",
1726 .llvm_name = "atmega16hva",1693 .llvm_name = "atmega16hva",
1727 .subfeatures = &[_]*const Feature {1694 .subfeatures = &[_]*const Feature {
1695 &feature_spm,
1728 &feature_lpmx,1696 &feature_lpmx,
1729 &feature_jmpcall,
1730 &feature_ijmpcall,1697 &feature_ijmpcall,
1731 &feature_movw,1698 &feature_jmpcall,
1732 &feature_sram,1699 &feature_sram,
1700 &feature_addsubiw,
1733 &feature_mul,1701 &feature_mul,
1734 &feature_avr0,
1735 &feature_lpm,
1736 &feature_break,1702 &feature_break,
1737 &feature_spm,1703 &feature_lpm,
1738 &feature_addsubiw,1704 &feature_avr0,
1705 &feature_movw,
1739 &feature_avr5,1706 &feature_avr5,
1740 },1707 },
1741};1708};
...@@ -1744,17 +1711,17 @@ pub const cpu_atmega16hva2 = Cpu{...@@ -1744,17 +1711,17 @@ pub const cpu_atmega16hva2 = Cpu{
1744 .name = "atmega16hva2",1711 .name = "atmega16hva2",
1745 .llvm_name = "atmega16hva2",1712 .llvm_name = "atmega16hva2",
1746 .subfeatures = &[_]*const Feature {1713 .subfeatures = &[_]*const Feature {
1714 &feature_spm,
1747 &feature_lpmx,1715 &feature_lpmx,
1748 &feature_jmpcall,
1749 &feature_ijmpcall,1716 &feature_ijmpcall,
1750 &feature_movw,1717 &feature_jmpcall,
1751 &feature_sram,1718 &feature_sram,
1719 &feature_addsubiw,
1752 &feature_mul,1720 &feature_mul,
1753 &feature_avr0,
1754 &feature_lpm,
1755 &feature_break,1721 &feature_break,
1756 &feature_spm,1722 &feature_lpm,
1757 &feature_addsubiw,1723 &feature_avr0,
1724 &feature_movw,
1758 &feature_avr5,1725 &feature_avr5,
1759 },1726 },
1760};1727};
...@@ -1763,17 +1730,17 @@ pub const cpu_atmega16hvb = Cpu{...@@ -1763,17 +1730,17 @@ pub const cpu_atmega16hvb = Cpu{
1763 .name = "atmega16hvb",1730 .name = "atmega16hvb",
1764 .llvm_name = "atmega16hvb",1731 .llvm_name = "atmega16hvb",
1765 .subfeatures = &[_]*const Feature {1732 .subfeatures = &[_]*const Feature {
1733 &feature_spm,
1766 &feature_lpmx,1734 &feature_lpmx,
1767 &feature_jmpcall,
1768 &feature_ijmpcall,1735 &feature_ijmpcall,
1769 &feature_movw,1736 &feature_jmpcall,
1770 &feature_sram,1737 &feature_sram,
1738 &feature_addsubiw,
1771 &feature_mul,1739 &feature_mul,
1772 &feature_avr0,
1773 &feature_lpm,
1774 &feature_break,1740 &feature_break,
1775 &feature_spm,1741 &feature_lpm,
1776 &feature_addsubiw,1742 &feature_avr0,
1743 &feature_movw,
1777 &feature_avr5,1744 &feature_avr5,
1778 },1745 },
1779};1746};
...@@ -1782,17 +1749,17 @@ pub const cpu_atmega16hvbrevb = Cpu{...@@ -1782,17 +1749,17 @@ pub const cpu_atmega16hvbrevb = Cpu{
1782 .name = "atmega16hvbrevb",1749 .name = "atmega16hvbrevb",
1783 .llvm_name = "atmega16hvbrevb",1750 .llvm_name = "atmega16hvbrevb",
1784 .subfeatures = &[_]*const Feature {1751 .subfeatures = &[_]*const Feature {
1752 &feature_spm,
1785 &feature_lpmx,1753 &feature_lpmx,
1786 &feature_jmpcall,
1787 &feature_ijmpcall,1754 &feature_ijmpcall,
1788 &feature_movw,1755 &feature_jmpcall,
1789 &feature_sram,1756 &feature_sram,
1757 &feature_addsubiw,
1790 &feature_mul,1758 &feature_mul,
1791 &feature_avr0,
1792 &feature_lpm,
1793 &feature_break,1759 &feature_break,
1794 &feature_spm,1760 &feature_lpm,
1795 &feature_addsubiw,1761 &feature_avr0,
1762 &feature_movw,
1796 &feature_avr5,1763 &feature_avr5,
1797 },1764 },
1798};1765};
...@@ -1801,17 +1768,17 @@ pub const cpu_atmega16m1 = Cpu{...@@ -1801,17 +1768,17 @@ pub const cpu_atmega16m1 = Cpu{
1801 .name = "atmega16m1",1768 .name = "atmega16m1",
1802 .llvm_name = "atmega16m1",1769 .llvm_name = "atmega16m1",
1803 .subfeatures = &[_]*const Feature {1770 .subfeatures = &[_]*const Feature {
1771 &feature_spm,
1804 &feature_lpmx,1772 &feature_lpmx,
1805 &feature_jmpcall,
1806 &feature_ijmpcall,1773 &feature_ijmpcall,
1807 &feature_movw,1774 &feature_jmpcall,
1808 &feature_sram,1775 &feature_sram,
1776 &feature_addsubiw,
1809 &feature_mul,1777 &feature_mul,
1810 &feature_avr0,
1811 &feature_lpm,
1812 &feature_break,1778 &feature_break,
1813 &feature_spm,1779 &feature_lpm,
1814 &feature_addsubiw,1780 &feature_avr0,
1781 &feature_movw,
1815 &feature_avr5,1782 &feature_avr5,
1816 },1783 },
1817};1784};
...@@ -1820,16 +1787,16 @@ pub const cpu_atmega16u2 = Cpu{...@@ -1820,16 +1787,16 @@ pub const cpu_atmega16u2 = Cpu{
1820 .name = "atmega16u2",1787 .name = "atmega16u2",
1821 .llvm_name = "atmega16u2",1788 .llvm_name = "atmega16u2",
1822 .subfeatures = &[_]*const Feature {1789 .subfeatures = &[_]*const Feature {
1790 &feature_spm,
1823 &feature_lpmx,1791 &feature_lpmx,
1824 &feature_jmpcall,
1825 &feature_ijmpcall,1792 &feature_ijmpcall,
1826 &feature_movw,1793 &feature_jmpcall,
1827 &feature_sram,1794 &feature_sram,
1828 &feature_avr0,
1829 &feature_lpm,
1830 &feature_break,
1831 &feature_spm,
1832 &feature_addsubiw,1795 &feature_addsubiw,
1796 &feature_break,
1797 &feature_lpm,
1798 &feature_avr0,
1799 &feature_movw,
1833 &feature_avr35,1800 &feature_avr35,
1834 },1801 },
1835};1802};
...@@ -1838,17 +1805,17 @@ pub const cpu_atmega16u4 = Cpu{...@@ -1838,17 +1805,17 @@ pub const cpu_atmega16u4 = Cpu{
1838 .name = "atmega16u4",1805 .name = "atmega16u4",
1839 .llvm_name = "atmega16u4",1806 .llvm_name = "atmega16u4",
1840 .subfeatures = &[_]*const Feature {1807 .subfeatures = &[_]*const Feature {
1808 &feature_spm,
1841 &feature_lpmx,1809 &feature_lpmx,
1842 &feature_jmpcall,
1843 &feature_ijmpcall,1810 &feature_ijmpcall,
1844 &feature_movw,1811 &feature_jmpcall,
1845 &feature_sram,1812 &feature_sram,
1813 &feature_addsubiw,
1846 &feature_mul,1814 &feature_mul,
1847 &feature_avr0,
1848 &feature_lpm,
1849 &feature_break,1815 &feature_break,
1850 &feature_spm,1816 &feature_lpm,
1851 &feature_addsubiw,1817 &feature_avr0,
1818 &feature_movw,
1852 &feature_avr5,1819 &feature_avr5,
1853 },1820 },
1854};1821};
...@@ -1857,19 +1824,19 @@ pub const cpu_atmega2560 = Cpu{...@@ -1857,19 +1824,19 @@ pub const cpu_atmega2560 = Cpu{
1857 .name = "atmega2560",1824 .name = "atmega2560",
1858 .llvm_name = "atmega2560",1825 .llvm_name = "atmega2560",
1859 .subfeatures = &[_]*const Feature {1826 .subfeatures = &[_]*const Feature {
1827 &feature_spm,
1860 &feature_lpmx,1828 &feature_lpmx,
1861 &feature_jmpcall,
1862 &feature_ijmpcall,1829 &feature_ijmpcall,
1863 &feature_movw,1830 &feature_jmpcall,
1864 &feature_sram,1831 &feature_sram,
1832 &feature_addsubiw,
1833 &feature_elpm,
1865 &feature_mul,1834 &feature_mul,
1866 &feature_avr0,
1867 &feature_lpm,
1868 &feature_break,1835 &feature_break,
1869 &feature_spm,1836 &feature_lpm,
1870 &feature_elpmx,1837 &feature_elpmx,
1871 &feature_elpm,1838 &feature_avr0,
1872 &feature_addsubiw,1839 &feature_movw,
1873 &feature_avr6,1840 &feature_avr6,
1874 },1841 },
1875};1842};
...@@ -1878,19 +1845,19 @@ pub const cpu_atmega2561 = Cpu{...@@ -1878,19 +1845,19 @@ pub const cpu_atmega2561 = Cpu{
1878 .name = "atmega2561",1845 .name = "atmega2561",
1879 .llvm_name = "atmega2561",1846 .llvm_name = "atmega2561",
1880 .subfeatures = &[_]*const Feature {1847 .subfeatures = &[_]*const Feature {
1848 &feature_spm,
1881 &feature_lpmx,1849 &feature_lpmx,
1882 &feature_jmpcall,
1883 &feature_ijmpcall,1850 &feature_ijmpcall,
1884 &feature_movw,1851 &feature_jmpcall,
1885 &feature_sram,1852 &feature_sram,
1853 &feature_addsubiw,
1854 &feature_elpm,
1886 &feature_mul,1855 &feature_mul,
1887 &feature_avr0,
1888 &feature_lpm,
1889 &feature_break,1856 &feature_break,
1890 &feature_spm,1857 &feature_lpm,
1891 &feature_elpmx,1858 &feature_elpmx,
1892 &feature_elpm,1859 &feature_avr0,
1893 &feature_addsubiw,1860 &feature_movw,
1894 &feature_avr6,1861 &feature_avr6,
1895 },1862 },
1896};1863};
...@@ -1899,19 +1866,19 @@ pub const cpu_atmega2564rfr2 = Cpu{...@@ -1899,19 +1866,19 @@ pub const cpu_atmega2564rfr2 = Cpu{
1899 .name = "atmega2564rfr2",1866 .name = "atmega2564rfr2",
1900 .llvm_name = "atmega2564rfr2",1867 .llvm_name = "atmega2564rfr2",
1901 .subfeatures = &[_]*const Feature {1868 .subfeatures = &[_]*const Feature {
1869 &feature_spm,
1902 &feature_lpmx,1870 &feature_lpmx,
1903 &feature_jmpcall,
1904 &feature_ijmpcall,1871 &feature_ijmpcall,
1905 &feature_movw,1872 &feature_jmpcall,
1906 &feature_sram,1873 &feature_sram,
1874 &feature_addsubiw,
1875 &feature_elpm,
1907 &feature_mul,1876 &feature_mul,
1908 &feature_avr0,
1909 &feature_lpm,
1910 &feature_break,1877 &feature_break,
1911 &feature_spm,1878 &feature_lpm,
1912 &feature_elpmx,1879 &feature_elpmx,
1913 &feature_elpm,1880 &feature_avr0,
1914 &feature_addsubiw,1881 &feature_movw,
1915 &feature_avr6,1882 &feature_avr6,
1916 },1883 },
1917};1884};
...@@ -1920,19 +1887,19 @@ pub const cpu_atmega256rfr2 = Cpu{...@@ -1920,19 +1887,19 @@ pub const cpu_atmega256rfr2 = Cpu{
1920 .name = "atmega256rfr2",1887 .name = "atmega256rfr2",
1921 .llvm_name = "atmega256rfr2",1888 .llvm_name = "atmega256rfr2",
1922 .subfeatures = &[_]*const Feature {1889 .subfeatures = &[_]*const Feature {
1890 &feature_spm,
1923 &feature_lpmx,1891 &feature_lpmx,
1924 &feature_jmpcall,
1925 &feature_ijmpcall,1892 &feature_ijmpcall,
1926 &feature_movw,1893 &feature_jmpcall,
1927 &feature_sram,1894 &feature_sram,
1895 &feature_addsubiw,
1896 &feature_elpm,
1928 &feature_mul,1897 &feature_mul,
1929 &feature_avr0,
1930 &feature_lpm,
1931 &feature_break,1898 &feature_break,
1932 &feature_spm,1899 &feature_lpm,
1933 &feature_elpmx,1900 &feature_elpmx,
1934 &feature_elpm,1901 &feature_avr0,
1935 &feature_addsubiw,1902 &feature_movw,
1936 &feature_avr6,1903 &feature_avr6,
1937 },1904 },
1938};1905};
...@@ -1941,17 +1908,17 @@ pub const cpu_atmega32 = Cpu{...@@ -1941,17 +1908,17 @@ pub const cpu_atmega32 = Cpu{
1941 .name = "atmega32",1908 .name = "atmega32",
1942 .llvm_name = "atmega32",1909 .llvm_name = "atmega32",
1943 .subfeatures = &[_]*const Feature {1910 .subfeatures = &[_]*const Feature {
1911 &feature_spm,
1944 &feature_lpmx,1912 &feature_lpmx,
1945 &feature_jmpcall,
1946 &feature_ijmpcall,1913 &feature_ijmpcall,
1947 &feature_movw,1914 &feature_jmpcall,
1948 &feature_sram,1915 &feature_sram,
1916 &feature_addsubiw,
1949 &feature_mul,1917 &feature_mul,
1950 &feature_avr0,
1951 &feature_lpm,
1952 &feature_break,1918 &feature_break,
1953 &feature_spm,1919 &feature_lpm,
1954 &feature_addsubiw,1920 &feature_avr0,
1921 &feature_movw,
1955 &feature_avr5,1922 &feature_avr5,
1956 },1923 },
1957};1924};
...@@ -1960,17 +1927,17 @@ pub const cpu_atmega323 = Cpu{...@@ -1960,17 +1927,17 @@ pub const cpu_atmega323 = Cpu{
1960 .name = "atmega323",1927 .name = "atmega323",
1961 .llvm_name = "atmega323",1928 .llvm_name = "atmega323",
1962 .subfeatures = &[_]*const Feature {1929 .subfeatures = &[_]*const Feature {
1930 &feature_spm,
1963 &feature_lpmx,1931 &feature_lpmx,
1964 &feature_jmpcall,
1965 &feature_ijmpcall,1932 &feature_ijmpcall,
1966 &feature_movw,1933 &feature_jmpcall,
1967 &feature_sram,1934 &feature_sram,
1935 &feature_addsubiw,
1968 &feature_mul,1936 &feature_mul,
1969 &feature_avr0,
1970 &feature_lpm,
1971 &feature_break,1937 &feature_break,
1972 &feature_spm,1938 &feature_lpm,
1973 &feature_addsubiw,1939 &feature_avr0,
1940 &feature_movw,
1974 &feature_avr5,1941 &feature_avr5,
1975 },1942 },
1976};1943};
...@@ -1979,17 +1946,17 @@ pub const cpu_atmega324a = Cpu{...@@ -1979,17 +1946,17 @@ pub const cpu_atmega324a = Cpu{
1979 .name = "atmega324a",1946 .name = "atmega324a",
1980 .llvm_name = "atmega324a",1947 .llvm_name = "atmega324a",
1981 .subfeatures = &[_]*const Feature {1948 .subfeatures = &[_]*const Feature {
1949 &feature_spm,
1982 &feature_lpmx,1950 &feature_lpmx,
1983 &feature_jmpcall,
1984 &feature_ijmpcall,1951 &feature_ijmpcall,
1985 &feature_movw,1952 &feature_jmpcall,
1986 &feature_sram,1953 &feature_sram,
1954 &feature_addsubiw,
1987 &feature_mul,1955 &feature_mul,
1988 &feature_avr0,
1989 &feature_lpm,
1990 &feature_break,1956 &feature_break,
1991 &feature_spm,1957 &feature_lpm,
1992 &feature_addsubiw,1958 &feature_avr0,
1959 &feature_movw,
1993 &feature_avr5,1960 &feature_avr5,
1994 },1961 },
1995};1962};
...@@ -1998,17 +1965,17 @@ pub const cpu_atmega324p = Cpu{...@@ -1998,17 +1965,17 @@ pub const cpu_atmega324p = Cpu{
1998 .name = "atmega324p",1965 .name = "atmega324p",
1999 .llvm_name = "atmega324p",1966 .llvm_name = "atmega324p",
2000 .subfeatures = &[_]*const Feature {1967 .subfeatures = &[_]*const Feature {
1968 &feature_spm,
2001 &feature_lpmx,1969 &feature_lpmx,
2002 &feature_jmpcall,
2003 &feature_ijmpcall,1970 &feature_ijmpcall,
2004 &feature_movw,1971 &feature_jmpcall,
2005 &feature_sram,1972 &feature_sram,
1973 &feature_addsubiw,
2006 &feature_mul,1974 &feature_mul,
2007 &feature_avr0,
2008 &feature_lpm,
2009 &feature_break,1975 &feature_break,
2010 &feature_spm,1976 &feature_lpm,
2011 &feature_addsubiw,1977 &feature_avr0,
1978 &feature_movw,
2012 &feature_avr5,1979 &feature_avr5,
2013 },1980 },
2014};1981};
...@@ -2017,17 +1984,17 @@ pub const cpu_atmega324pa = Cpu{...@@ -2017,17 +1984,17 @@ pub const cpu_atmega324pa = Cpu{
2017 .name = "atmega324pa",1984 .name = "atmega324pa",
2018 .llvm_name = "atmega324pa",1985 .llvm_name = "atmega324pa",
2019 .subfeatures = &[_]*const Feature {1986 .subfeatures = &[_]*const Feature {
1987 &feature_spm,
2020 &feature_lpmx,1988 &feature_lpmx,
2021 &feature_jmpcall,
2022 &feature_ijmpcall,1989 &feature_ijmpcall,
2023 &feature_movw,1990 &feature_jmpcall,
2024 &feature_sram,1991 &feature_sram,
1992 &feature_addsubiw,
2025 &feature_mul,1993 &feature_mul,
2026 &feature_avr0,
2027 &feature_lpm,
2028 &feature_break,1994 &feature_break,
2029 &feature_spm,1995 &feature_lpm,
2030 &feature_addsubiw,1996 &feature_avr0,
1997 &feature_movw,
2031 &feature_avr5,1998 &feature_avr5,
2032 },1999 },
2033};2000};
...@@ -2036,17 +2003,17 @@ pub const cpu_atmega325 = Cpu{...@@ -2036,17 +2003,17 @@ pub const cpu_atmega325 = Cpu{
2036 .name = "atmega325",2003 .name = "atmega325",
2037 .llvm_name = "atmega325",2004 .llvm_name = "atmega325",
2038 .subfeatures = &[_]*const Feature {2005 .subfeatures = &[_]*const Feature {
2006 &feature_spm,
2039 &feature_lpmx,2007 &feature_lpmx,
2040 &feature_jmpcall,
2041 &feature_ijmpcall,2008 &feature_ijmpcall,
2042 &feature_movw,2009 &feature_jmpcall,
2043 &feature_sram,2010 &feature_sram,
2011 &feature_addsubiw,
2044 &feature_mul,2012 &feature_mul,
2045 &feature_avr0,
2046 &feature_lpm,
2047 &feature_break,2013 &feature_break,
2048 &feature_spm,2014 &feature_lpm,
2049 &feature_addsubiw,2015 &feature_avr0,
2016 &feature_movw,
2050 &feature_avr5,2017 &feature_avr5,
2051 },2018 },
2052};2019};
...@@ -2055,17 +2022,17 @@ pub const cpu_atmega3250 = Cpu{...@@ -2055,17 +2022,17 @@ pub const cpu_atmega3250 = Cpu{
2055 .name = "atmega3250",2022 .name = "atmega3250",
2056 .llvm_name = "atmega3250",2023 .llvm_name = "atmega3250",
2057 .subfeatures = &[_]*const Feature {2024 .subfeatures = &[_]*const Feature {
2025 &feature_spm,
2058 &feature_lpmx,2026 &feature_lpmx,
2059 &feature_jmpcall,
2060 &feature_ijmpcall,2027 &feature_ijmpcall,
2061 &feature_movw,2028 &feature_jmpcall,
2062 &feature_sram,2029 &feature_sram,
2030 &feature_addsubiw,
2063 &feature_mul,2031 &feature_mul,
2064 &feature_avr0,
2065 &feature_lpm,
2066 &feature_break,2032 &feature_break,
2067 &feature_spm,2033 &feature_lpm,
2068 &feature_addsubiw,2034 &feature_avr0,
2035 &feature_movw,
2069 &feature_avr5,2036 &feature_avr5,
2070 },2037 },
2071};2038};
...@@ -2074,17 +2041,17 @@ pub const cpu_atmega3250a = Cpu{...@@ -2074,17 +2041,17 @@ pub const cpu_atmega3250a = Cpu{
2074 .name = "atmega3250a",2041 .name = "atmega3250a",
2075 .llvm_name = "atmega3250a",2042 .llvm_name = "atmega3250a",
2076 .subfeatures = &[_]*const Feature {2043 .subfeatures = &[_]*const Feature {
2044 &feature_spm,
2077 &feature_lpmx,2045 &feature_lpmx,
2078 &feature_jmpcall,
2079 &feature_ijmpcall,2046 &feature_ijmpcall,
2080 &feature_movw,2047 &feature_jmpcall,
2081 &feature_sram,2048 &feature_sram,
2049 &feature_addsubiw,
2082 &feature_mul,2050 &feature_mul,
2083 &feature_avr0,
2084 &feature_lpm,
2085 &feature_break,2051 &feature_break,
2086 &feature_spm,2052 &feature_lpm,
2087 &feature_addsubiw,2053 &feature_avr0,
2054 &feature_movw,
2088 &feature_avr5,2055 &feature_avr5,
2089 },2056 },
2090};2057};
...@@ -2093,17 +2060,17 @@ pub const cpu_atmega3250p = Cpu{...@@ -2093,17 +2060,17 @@ pub const cpu_atmega3250p = Cpu{
2093 .name = "atmega3250p",2060 .name = "atmega3250p",
2094 .llvm_name = "atmega3250p",2061 .llvm_name = "atmega3250p",
2095 .subfeatures = &[_]*const Feature {2062 .subfeatures = &[_]*const Feature {
2063 &feature_spm,
2096 &feature_lpmx,2064 &feature_lpmx,
2097 &feature_jmpcall,
2098 &feature_ijmpcall,2065 &feature_ijmpcall,
2099 &feature_movw,2066 &feature_jmpcall,
2100 &feature_sram,2067 &feature_sram,
2068 &feature_addsubiw,
2101 &feature_mul,2069 &feature_mul,
2102 &feature_avr0,
2103 &feature_lpm,
2104 &feature_break,2070 &feature_break,
2105 &feature_spm,2071 &feature_lpm,
2106 &feature_addsubiw,2072 &feature_avr0,
2073 &feature_movw,
2107 &feature_avr5,2074 &feature_avr5,
2108 },2075 },
2109};2076};
...@@ -2112,17 +2079,17 @@ pub const cpu_atmega3250pa = Cpu{...@@ -2112,17 +2079,17 @@ pub const cpu_atmega3250pa = Cpu{
2112 .name = "atmega3250pa",2079 .name = "atmega3250pa",
2113 .llvm_name = "atmega3250pa",2080 .llvm_name = "atmega3250pa",
2114 .subfeatures = &[_]*const Feature {2081 .subfeatures = &[_]*const Feature {
2082 &feature_spm,
2115 &feature_lpmx,2083 &feature_lpmx,
2116 &feature_jmpcall,
2117 &feature_ijmpcall,2084 &feature_ijmpcall,
2118 &feature_movw,2085 &feature_jmpcall,
2119 &feature_sram,2086 &feature_sram,
2087 &feature_addsubiw,
2120 &feature_mul,2088 &feature_mul,
2121 &feature_avr0,
2122 &feature_lpm,
2123 &feature_break,2089 &feature_break,
2124 &feature_spm,2090 &feature_lpm,
2125 &feature_addsubiw,2091 &feature_avr0,
2092 &feature_movw,
2126 &feature_avr5,2093 &feature_avr5,
2127 },2094 },
2128};2095};
...@@ -2131,17 +2098,17 @@ pub const cpu_atmega325a = Cpu{...@@ -2131,17 +2098,17 @@ pub const cpu_atmega325a = Cpu{
2131 .name = "atmega325a",2098 .name = "atmega325a",
2132 .llvm_name = "atmega325a",2099 .llvm_name = "atmega325a",
2133 .subfeatures = &[_]*const Feature {2100 .subfeatures = &[_]*const Feature {
2101 &feature_spm,
2134 &feature_lpmx,2102 &feature_lpmx,
2135 &feature_jmpcall,
2136 &feature_ijmpcall,2103 &feature_ijmpcall,
2137 &feature_movw,2104 &feature_jmpcall,
2138 &feature_sram,2105 &feature_sram,
2106 &feature_addsubiw,
2139 &feature_mul,2107 &feature_mul,
2140 &feature_avr0,
2141 &feature_lpm,
2142 &feature_break,2108 &feature_break,
2143 &feature_spm,2109 &feature_lpm,
2144 &feature_addsubiw,2110 &feature_avr0,
2111 &feature_movw,
2145 &feature_avr5,2112 &feature_avr5,
2146 },2113 },
2147};2114};
...@@ -2150,17 +2117,17 @@ pub const cpu_atmega325p = Cpu{...@@ -2150,17 +2117,17 @@ pub const cpu_atmega325p = Cpu{
2150 .name = "atmega325p",2117 .name = "atmega325p",
2151 .llvm_name = "atmega325p",2118 .llvm_name = "atmega325p",
2152 .subfeatures = &[_]*const Feature {2119 .subfeatures = &[_]*const Feature {
2120 &feature_spm,
2153 &feature_lpmx,2121 &feature_lpmx,
2154 &feature_jmpcall,
2155 &feature_ijmpcall,2122 &feature_ijmpcall,
2156 &feature_movw,2123 &feature_jmpcall,
2157 &feature_sram,2124 &feature_sram,
2125 &feature_addsubiw,
2158 &feature_mul,2126 &feature_mul,
2159 &feature_avr0,
2160 &feature_lpm,
2161 &feature_break,2127 &feature_break,
2162 &feature_spm,2128 &feature_lpm,
2163 &feature_addsubiw,2129 &feature_avr0,
2130 &feature_movw,
2164 &feature_avr5,2131 &feature_avr5,
2165 },2132 },
2166};2133};
...@@ -2169,17 +2136,17 @@ pub const cpu_atmega325pa = Cpu{...@@ -2169,17 +2136,17 @@ pub const cpu_atmega325pa = Cpu{
2169 .name = "atmega325pa",2136 .name = "atmega325pa",
2170 .llvm_name = "atmega325pa",2137 .llvm_name = "atmega325pa",
2171 .subfeatures = &[_]*const Feature {2138 .subfeatures = &[_]*const Feature {
2139 &feature_spm,
2172 &feature_lpmx,2140 &feature_lpmx,
2173 &feature_jmpcall,
2174 &feature_ijmpcall,2141 &feature_ijmpcall,
2175 &feature_movw,2142 &feature_jmpcall,
2176 &feature_sram,2143 &feature_sram,
2144 &feature_addsubiw,
2177 &feature_mul,2145 &feature_mul,
2178 &feature_avr0,
2179 &feature_lpm,
2180 &feature_break,2146 &feature_break,
2181 &feature_spm,2147 &feature_lpm,
2182 &feature_addsubiw,2148 &feature_avr0,
2149 &feature_movw,
2183 &feature_avr5,2150 &feature_avr5,
2184 },2151 },
2185};2152};
...@@ -2188,17 +2155,17 @@ pub const cpu_atmega328 = Cpu{...@@ -2188,17 +2155,17 @@ pub const cpu_atmega328 = Cpu{
2188 .name = "atmega328",2155 .name = "atmega328",
2189 .llvm_name = "atmega328",2156 .llvm_name = "atmega328",
2190 .subfeatures = &[_]*const Feature {2157 .subfeatures = &[_]*const Feature {
2158 &feature_spm,
2191 &feature_lpmx,2159 &feature_lpmx,
2192 &feature_jmpcall,
2193 &feature_ijmpcall,2160 &feature_ijmpcall,
2194 &feature_movw,2161 &feature_jmpcall,
2195 &feature_sram,2162 &feature_sram,
2163 &feature_addsubiw,
2196 &feature_mul,2164 &feature_mul,
2197 &feature_avr0,
2198 &feature_lpm,
2199 &feature_break,2165 &feature_break,
2200 &feature_spm,2166 &feature_lpm,
2201 &feature_addsubiw,2167 &feature_avr0,
2168 &feature_movw,
2202 &feature_avr5,2169 &feature_avr5,
2203 },2170 },
2204};2171};
...@@ -2207,17 +2174,17 @@ pub const cpu_atmega328p = Cpu{...@@ -2207,17 +2174,17 @@ pub const cpu_atmega328p = Cpu{
2207 .name = "atmega328p",2174 .name = "atmega328p",
2208 .llvm_name = "atmega328p",2175 .llvm_name = "atmega328p",
2209 .subfeatures = &[_]*const Feature {2176 .subfeatures = &[_]*const Feature {
2177 &feature_spm,
2210 &feature_lpmx,2178 &feature_lpmx,
2211 &feature_jmpcall,
2212 &feature_ijmpcall,2179 &feature_ijmpcall,
2213 &feature_movw,2180 &feature_jmpcall,
2214 &feature_sram,2181 &feature_sram,
2182 &feature_addsubiw,
2215 &feature_mul,2183 &feature_mul,
2216 &feature_avr0,
2217 &feature_lpm,
2218 &feature_break,2184 &feature_break,
2219 &feature_spm,2185 &feature_lpm,
2220 &feature_addsubiw,2186 &feature_avr0,
2187 &feature_movw,
2221 &feature_avr5,2188 &feature_avr5,
2222 },2189 },
2223};2190};
...@@ -2226,17 +2193,17 @@ pub const cpu_atmega329 = Cpu{...@@ -2226,17 +2193,17 @@ pub const cpu_atmega329 = Cpu{
2226 .name = "atmega329",2193 .name = "atmega329",
2227 .llvm_name = "atmega329",2194 .llvm_name = "atmega329",
2228 .subfeatures = &[_]*const Feature {2195 .subfeatures = &[_]*const Feature {
2196 &feature_spm,
2229 &feature_lpmx,2197 &feature_lpmx,
2230 &feature_jmpcall,
2231 &feature_ijmpcall,2198 &feature_ijmpcall,
2232 &feature_movw,2199 &feature_jmpcall,
2233 &feature_sram,2200 &feature_sram,
2201 &feature_addsubiw,
2234 &feature_mul,2202 &feature_mul,
2235 &feature_avr0,
2236 &feature_lpm,
2237 &feature_break,2203 &feature_break,
2238 &feature_spm,2204 &feature_lpm,
2239 &feature_addsubiw,2205 &feature_avr0,
2206 &feature_movw,
2240 &feature_avr5,2207 &feature_avr5,
2241 },2208 },
2242};2209};
...@@ -2245,17 +2212,17 @@ pub const cpu_atmega3290 = Cpu{...@@ -2245,17 +2212,17 @@ pub const cpu_atmega3290 = Cpu{
2245 .name = "atmega3290",2212 .name = "atmega3290",
2246 .llvm_name = "atmega3290",2213 .llvm_name = "atmega3290",
2247 .subfeatures = &[_]*const Feature {2214 .subfeatures = &[_]*const Feature {
2215 &feature_spm,
2248 &feature_lpmx,2216 &feature_lpmx,
2249 &feature_jmpcall,
2250 &feature_ijmpcall,2217 &feature_ijmpcall,
2251 &feature_movw,2218 &feature_jmpcall,
2252 &feature_sram,2219 &feature_sram,
2220 &feature_addsubiw,
2253 &feature_mul,2221 &feature_mul,
2254 &feature_avr0,
2255 &feature_lpm,
2256 &feature_break,2222 &feature_break,
2257 &feature_spm,2223 &feature_lpm,
2258 &feature_addsubiw,2224 &feature_avr0,
2225 &feature_movw,
2259 &feature_avr5,2226 &feature_avr5,
2260 },2227 },
2261};2228};
...@@ -2264,17 +2231,17 @@ pub const cpu_atmega3290a = Cpu{...@@ -2264,17 +2231,17 @@ pub const cpu_atmega3290a = Cpu{
2264 .name = "atmega3290a",2231 .name = "atmega3290a",
2265 .llvm_name = "atmega3290a",2232 .llvm_name = "atmega3290a",
2266 .subfeatures = &[_]*const Feature {2233 .subfeatures = &[_]*const Feature {
2234 &feature_spm,
2267 &feature_lpmx,2235 &feature_lpmx,
2268 &feature_jmpcall,
2269 &feature_ijmpcall,2236 &feature_ijmpcall,
2270 &feature_movw,2237 &feature_jmpcall,
2271 &feature_sram,2238 &feature_sram,
2239 &feature_addsubiw,
2272 &feature_mul,2240 &feature_mul,
2273 &feature_avr0,
2274 &feature_lpm,
2275 &feature_break,2241 &feature_break,
2276 &feature_spm,2242 &feature_lpm,
2277 &feature_addsubiw,2243 &feature_avr0,
2244 &feature_movw,
2278 &feature_avr5,2245 &feature_avr5,
2279 },2246 },
2280};2247};
...@@ -2283,17 +2250,17 @@ pub const cpu_atmega3290p = Cpu{...@@ -2283,17 +2250,17 @@ pub const cpu_atmega3290p = Cpu{
2283 .name = "atmega3290p",2250 .name = "atmega3290p",
2284 .llvm_name = "atmega3290p",2251 .llvm_name = "atmega3290p",
2285 .subfeatures = &[_]*const Feature {2252 .subfeatures = &[_]*const Feature {
2253 &feature_spm,
2286 &feature_lpmx,2254 &feature_lpmx,
2287 &feature_jmpcall,
2288 &feature_ijmpcall,2255 &feature_ijmpcall,
2289 &feature_movw,2256 &feature_jmpcall,
2290 &feature_sram,2257 &feature_sram,
2258 &feature_addsubiw,
2291 &feature_mul,2259 &feature_mul,
2292 &feature_avr0,
2293 &feature_lpm,
2294 &feature_break,2260 &feature_break,
2295 &feature_spm,2261 &feature_lpm,
2296 &feature_addsubiw,2262 &feature_avr0,
2263 &feature_movw,
2297 &feature_avr5,2264 &feature_avr5,
2298 },2265 },
2299};2266};
...@@ -2302,17 +2269,17 @@ pub const cpu_atmega3290pa = Cpu{...@@ -2302,17 +2269,17 @@ pub const cpu_atmega3290pa = Cpu{
2302 .name = "atmega3290pa",2269 .name = "atmega3290pa",
2303 .llvm_name = "atmega3290pa",2270 .llvm_name = "atmega3290pa",
2304 .subfeatures = &[_]*const Feature {2271 .subfeatures = &[_]*const Feature {
2272 &feature_spm,
2305 &feature_lpmx,2273 &feature_lpmx,
2306 &feature_jmpcall,
2307 &feature_ijmpcall,2274 &feature_ijmpcall,
2308 &feature_movw,2275 &feature_jmpcall,
2309 &feature_sram,2276 &feature_sram,
2277 &feature_addsubiw,
2310 &feature_mul,2278 &feature_mul,
2311 &feature_avr0,
2312 &feature_lpm,
2313 &feature_break,2279 &feature_break,
2314 &feature_spm,2280 &feature_lpm,
2315 &feature_addsubiw,2281 &feature_avr0,
2282 &feature_movw,
2316 &feature_avr5,2283 &feature_avr5,
2317 },2284 },
2318};2285};
...@@ -2321,17 +2288,17 @@ pub const cpu_atmega329a = Cpu{...@@ -2321,17 +2288,17 @@ pub const cpu_atmega329a = Cpu{
2321 .name = "atmega329a",2288 .name = "atmega329a",
2322 .llvm_name = "atmega329a",2289 .llvm_name = "atmega329a",
2323 .subfeatures = &[_]*const Feature {2290 .subfeatures = &[_]*const Feature {
2291 &feature_spm,
2324 &feature_lpmx,2292 &feature_lpmx,
2325 &feature_jmpcall,
2326 &feature_ijmpcall,2293 &feature_ijmpcall,
2327 &feature_movw,2294 &feature_jmpcall,
2328 &feature_sram,2295 &feature_sram,
2296 &feature_addsubiw,
2329 &feature_mul,2297 &feature_mul,
2330 &feature_avr0,
2331 &feature_lpm,
2332 &feature_break,2298 &feature_break,
2333 &feature_spm,2299 &feature_lpm,
2334 &feature_addsubiw,2300 &feature_avr0,
2301 &feature_movw,
2335 &feature_avr5,2302 &feature_avr5,
2336 },2303 },
2337};2304};
...@@ -2340,17 +2307,17 @@ pub const cpu_atmega329p = Cpu{...@@ -2340,17 +2307,17 @@ pub const cpu_atmega329p = Cpu{
2340 .name = "atmega329p",2307 .name = "atmega329p",
2341 .llvm_name = "atmega329p",2308 .llvm_name = "atmega329p",
2342 .subfeatures = &[_]*const Feature {2309 .subfeatures = &[_]*const Feature {
2310 &feature_spm,
2343 &feature_lpmx,2311 &feature_lpmx,
2344 &feature_jmpcall,
2345 &feature_ijmpcall,2312 &feature_ijmpcall,
2346 &feature_movw,2313 &feature_jmpcall,
2347 &feature_sram,2314 &feature_sram,
2315 &feature_addsubiw,
2348 &feature_mul,2316 &feature_mul,
2349 &feature_avr0,
2350 &feature_lpm,
2351 &feature_break,2317 &feature_break,
2352 &feature_spm,2318 &feature_lpm,
2353 &feature_addsubiw,2319 &feature_avr0,
2320 &feature_movw,
2354 &feature_avr5,2321 &feature_avr5,
2355 },2322 },
2356};2323};
...@@ -2359,17 +2326,17 @@ pub const cpu_atmega329pa = Cpu{...@@ -2359,17 +2326,17 @@ pub const cpu_atmega329pa = Cpu{
2359 .name = "atmega329pa",2326 .name = "atmega329pa",
2360 .llvm_name = "atmega329pa",2327 .llvm_name = "atmega329pa",
2361 .subfeatures = &[_]*const Feature {2328 .subfeatures = &[_]*const Feature {
2329 &feature_spm,
2362 &feature_lpmx,2330 &feature_lpmx,
2363 &feature_jmpcall,
2364 &feature_ijmpcall,2331 &feature_ijmpcall,
2365 &feature_movw,2332 &feature_jmpcall,
2366 &feature_sram,2333 &feature_sram,
2334 &feature_addsubiw,
2367 &feature_mul,2335 &feature_mul,
2368 &feature_avr0,
2369 &feature_lpm,
2370 &feature_break,2336 &feature_break,
2371 &feature_spm,2337 &feature_lpm,
2372 &feature_addsubiw,2338 &feature_avr0,
2339 &feature_movw,
2373 &feature_avr5,2340 &feature_avr5,
2374 },2341 },
2375};2342};
...@@ -2378,17 +2345,17 @@ pub const cpu_atmega32a = Cpu{...@@ -2378,17 +2345,17 @@ pub const cpu_atmega32a = Cpu{
2378 .name = "atmega32a",2345 .name = "atmega32a",
2379 .llvm_name = "atmega32a",2346 .llvm_name = "atmega32a",
2380 .subfeatures = &[_]*const Feature {2347 .subfeatures = &[_]*const Feature {
2348 &feature_spm,
2381 &feature_lpmx,2349 &feature_lpmx,
2382 &feature_jmpcall,
2383 &feature_ijmpcall,2350 &feature_ijmpcall,
2384 &feature_movw,2351 &feature_jmpcall,
2385 &feature_sram,2352 &feature_sram,
2353 &feature_addsubiw,
2386 &feature_mul,2354 &feature_mul,
2387 &feature_avr0,
2388 &feature_lpm,
2389 &feature_break,2355 &feature_break,
2390 &feature_spm,2356 &feature_lpm,
2391 &feature_addsubiw,2357 &feature_avr0,
2358 &feature_movw,
2392 &feature_avr5,2359 &feature_avr5,
2393 },2360 },
2394};2361};
...@@ -2397,17 +2364,17 @@ pub const cpu_atmega32c1 = Cpu{...@@ -2397,17 +2364,17 @@ pub const cpu_atmega32c1 = Cpu{
2397 .name = "atmega32c1",2364 .name = "atmega32c1",
2398 .llvm_name = "atmega32c1",2365 .llvm_name = "atmega32c1",
2399 .subfeatures = &[_]*const Feature {2366 .subfeatures = &[_]*const Feature {
2367 &feature_spm,
2400 &feature_lpmx,2368 &feature_lpmx,
2401 &feature_jmpcall,
2402 &feature_ijmpcall,2369 &feature_ijmpcall,
2403 &feature_movw,2370 &feature_jmpcall,
2404 &feature_sram,2371 &feature_sram,
2372 &feature_addsubiw,
2405 &feature_mul,2373 &feature_mul,
2406 &feature_avr0,
2407 &feature_lpm,
2408 &feature_break,2374 &feature_break,
2409 &feature_spm,2375 &feature_lpm,
2410 &feature_addsubiw,2376 &feature_avr0,
2377 &feature_movw,
2411 &feature_avr5,2378 &feature_avr5,
2412 },2379 },
2413};2380};
...@@ -2416,17 +2383,17 @@ pub const cpu_atmega32hvb = Cpu{...@@ -2416,17 +2383,17 @@ pub const cpu_atmega32hvb = Cpu{
2416 .name = "atmega32hvb",2383 .name = "atmega32hvb",
2417 .llvm_name = "atmega32hvb",2384 .llvm_name = "atmega32hvb",
2418 .subfeatures = &[_]*const Feature {2385 .subfeatures = &[_]*const Feature {
2386 &feature_spm,
2419 &feature_lpmx,2387 &feature_lpmx,
2420 &feature_jmpcall,
2421 &feature_ijmpcall,2388 &feature_ijmpcall,
2422 &feature_movw,2389 &feature_jmpcall,
2423 &feature_sram,2390 &feature_sram,
2391 &feature_addsubiw,
2424 &feature_mul,2392 &feature_mul,
2425 &feature_avr0,
2426 &feature_lpm,
2427 &feature_break,2393 &feature_break,
2428 &feature_spm,2394 &feature_lpm,
2429 &feature_addsubiw,2395 &feature_avr0,
2396 &feature_movw,
2430 &feature_avr5,2397 &feature_avr5,
2431 },2398 },
2432};2399};
...@@ -2435,17 +2402,17 @@ pub const cpu_atmega32hvbrevb = Cpu{...@@ -2435,17 +2402,17 @@ pub const cpu_atmega32hvbrevb = Cpu{
2435 .name = "atmega32hvbrevb",2402 .name = "atmega32hvbrevb",
2436 .llvm_name = "atmega32hvbrevb",2403 .llvm_name = "atmega32hvbrevb",
2437 .subfeatures = &[_]*const Feature {2404 .subfeatures = &[_]*const Feature {
2405 &feature_spm,
2438 &feature_lpmx,2406 &feature_lpmx,
2439 &feature_jmpcall,
2440 &feature_ijmpcall,2407 &feature_ijmpcall,
2441 &feature_movw,2408 &feature_jmpcall,
2442 &feature_sram,2409 &feature_sram,
2410 &feature_addsubiw,
2443 &feature_mul,2411 &feature_mul,
2444 &feature_avr0,
2445 &feature_lpm,
2446 &feature_break,2412 &feature_break,
2447 &feature_spm,2413 &feature_lpm,
2448 &feature_addsubiw,2414 &feature_avr0,
2415 &feature_movw,
2449 &feature_avr5,2416 &feature_avr5,
2450 },2417 },
2451};2418};
...@@ -2454,17 +2421,17 @@ pub const cpu_atmega32m1 = Cpu{...@@ -2454,17 +2421,17 @@ pub const cpu_atmega32m1 = Cpu{
2454 .name = "atmega32m1",2421 .name = "atmega32m1",
2455 .llvm_name = "atmega32m1",2422 .llvm_name = "atmega32m1",
2456 .subfeatures = &[_]*const Feature {2423 .subfeatures = &[_]*const Feature {
2424 &feature_spm,
2457 &feature_lpmx,2425 &feature_lpmx,
2458 &feature_jmpcall,
2459 &feature_ijmpcall,2426 &feature_ijmpcall,
2460 &feature_movw,2427 &feature_jmpcall,
2461 &feature_sram,2428 &feature_sram,
2429 &feature_addsubiw,
2462 &feature_mul,2430 &feature_mul,
2463 &feature_avr0,
2464 &feature_lpm,
2465 &feature_break,2431 &feature_break,
2466 &feature_spm,2432 &feature_lpm,
2467 &feature_addsubiw,2433 &feature_avr0,
2434 &feature_movw,
2468 &feature_avr5,2435 &feature_avr5,
2469 },2436 },
2470};2437};
...@@ -2473,16 +2440,16 @@ pub const cpu_atmega32u2 = Cpu{...@@ -2473,16 +2440,16 @@ pub const cpu_atmega32u2 = Cpu{
2473 .name = "atmega32u2",2440 .name = "atmega32u2",
2474 .llvm_name = "atmega32u2",2441 .llvm_name = "atmega32u2",
2475 .subfeatures = &[_]*const Feature {2442 .subfeatures = &[_]*const Feature {
2443 &feature_spm,
2476 &feature_lpmx,2444 &feature_lpmx,
2477 &feature_jmpcall,
2478 &feature_ijmpcall,2445 &feature_ijmpcall,
2479 &feature_movw,2446 &feature_jmpcall,
2480 &feature_sram,2447 &feature_sram,
2481 &feature_avr0,
2482 &feature_lpm,
2483 &feature_break,
2484 &feature_spm,
2485 &feature_addsubiw,2448 &feature_addsubiw,
2449 &feature_break,
2450 &feature_lpm,
2451 &feature_avr0,
2452 &feature_movw,
2486 &feature_avr35,2453 &feature_avr35,
2487 },2454 },
2488};2455};
...@@ -2491,17 +2458,17 @@ pub const cpu_atmega32u4 = Cpu{...@@ -2491,17 +2458,17 @@ pub const cpu_atmega32u4 = Cpu{
2491 .name = "atmega32u4",2458 .name = "atmega32u4",
2492 .llvm_name = "atmega32u4",2459 .llvm_name = "atmega32u4",
2493 .subfeatures = &[_]*const Feature {2460 .subfeatures = &[_]*const Feature {
2461 &feature_spm,
2494 &feature_lpmx,2462 &feature_lpmx,
2495 &feature_jmpcall,
2496 &feature_ijmpcall,2463 &feature_ijmpcall,
2497 &feature_movw,2464 &feature_jmpcall,
2498 &feature_sram,2465 &feature_sram,
2466 &feature_addsubiw,
2499 &feature_mul,2467 &feature_mul,
2500 &feature_avr0,
2501 &feature_lpm,
2502 &feature_break,2468 &feature_break,
2503 &feature_spm,2469 &feature_lpm,
2504 &feature_addsubiw,2470 &feature_avr0,
2471 &feature_movw,
2505 &feature_avr5,2472 &feature_avr5,
2506 },2473 },
2507};2474};
...@@ -2510,17 +2477,17 @@ pub const cpu_atmega32u6 = Cpu{...@@ -2510,17 +2477,17 @@ pub const cpu_atmega32u6 = Cpu{
2510 .name = "atmega32u6",2477 .name = "atmega32u6",
2511 .llvm_name = "atmega32u6",2478 .llvm_name = "atmega32u6",
2512 .subfeatures = &[_]*const Feature {2479 .subfeatures = &[_]*const Feature {
2480 &feature_spm,
2513 &feature_lpmx,2481 &feature_lpmx,
2514 &feature_jmpcall,
2515 &feature_ijmpcall,2482 &feature_ijmpcall,
2516 &feature_movw,2483 &feature_jmpcall,
2517 &feature_sram,2484 &feature_sram,
2485 &feature_addsubiw,
2518 &feature_mul,2486 &feature_mul,
2519 &feature_avr0,
2520 &feature_lpm,
2521 &feature_break,2487 &feature_break,
2522 &feature_spm,2488 &feature_lpm,
2523 &feature_addsubiw,2489 &feature_avr0,
2490 &feature_movw,
2524 &feature_avr5,2491 &feature_avr5,
2525 },2492 },
2526};2493};
...@@ -2529,17 +2496,17 @@ pub const cpu_atmega406 = Cpu{...@@ -2529,17 +2496,17 @@ pub const cpu_atmega406 = Cpu{
2529 .name = "atmega406",2496 .name = "atmega406",
2530 .llvm_name = "atmega406",2497 .llvm_name = "atmega406",
2531 .subfeatures = &[_]*const Feature {2498 .subfeatures = &[_]*const Feature {
2499 &feature_spm,
2532 &feature_lpmx,2500 &feature_lpmx,
2533 &feature_jmpcall,
2534 &feature_ijmpcall,2501 &feature_ijmpcall,
2535 &feature_movw,2502 &feature_jmpcall,
2536 &feature_sram,2503 &feature_sram,
2504 &feature_addsubiw,
2537 &feature_mul,2505 &feature_mul,
2538 &feature_avr0,
2539 &feature_lpm,
2540 &feature_break,2506 &feature_break,
2541 &feature_spm,2507 &feature_lpm,
2542 &feature_addsubiw,2508 &feature_avr0,
2509 &feature_movw,
2543 &feature_avr5,2510 &feature_avr5,
2544 },2511 },
2545};2512};
...@@ -2548,16 +2515,16 @@ pub const cpu_atmega48 = Cpu{...@@ -2548,16 +2515,16 @@ pub const cpu_atmega48 = Cpu{
2548 .name = "atmega48",2515 .name = "atmega48",
2549 .llvm_name = "atmega48",2516 .llvm_name = "atmega48",
2550 .subfeatures = &[_]*const Feature {2517 .subfeatures = &[_]*const Feature {
2518 &feature_spm,
2551 &feature_lpmx,2519 &feature_lpmx,
2552 &feature_ijmpcall,2520 &feature_ijmpcall,
2553 &feature_movw,
2554 &feature_sram,2521 &feature_sram,
2522 &feature_addsubiw,
2555 &feature_mul,2523 &feature_mul,
2556 &feature_avr0,
2557 &feature_lpm,
2558 &feature_break,2524 &feature_break,
2559 &feature_spm,2525 &feature_lpm,
2560 &feature_addsubiw,2526 &feature_avr0,
2527 &feature_movw,
2561 &feature_avr4,2528 &feature_avr4,
2562 },2529 },
2563};2530};
...@@ -2566,16 +2533,16 @@ pub const cpu_atmega48a = Cpu{...@@ -2566,16 +2533,16 @@ pub const cpu_atmega48a = Cpu{
2566 .name = "atmega48a",2533 .name = "atmega48a",
2567 .llvm_name = "atmega48a",2534 .llvm_name = "atmega48a",
2568 .subfeatures = &[_]*const Feature {2535 .subfeatures = &[_]*const Feature {
2536 &feature_spm,
2569 &feature_lpmx,2537 &feature_lpmx,
2570 &feature_ijmpcall,2538 &feature_ijmpcall,
2571 &feature_movw,
2572 &feature_sram,2539 &feature_sram,
2540 &feature_addsubiw,
2573 &feature_mul,2541 &feature_mul,
2574 &feature_avr0,
2575 &feature_lpm,
2576 &feature_break,2542 &feature_break,
2577 &feature_spm,2543 &feature_lpm,
2578 &feature_addsubiw,2544 &feature_avr0,
2545 &feature_movw,
2579 &feature_avr4,2546 &feature_avr4,
2580 },2547 },
2581};2548};
...@@ -2584,16 +2551,16 @@ pub const cpu_atmega48p = Cpu{...@@ -2584,16 +2551,16 @@ pub const cpu_atmega48p = Cpu{
2584 .name = "atmega48p",2551 .name = "atmega48p",
2585 .llvm_name = "atmega48p",2552 .llvm_name = "atmega48p",
2586 .subfeatures = &[_]*const Feature {2553 .subfeatures = &[_]*const Feature {
2554 &feature_spm,
2587 &feature_lpmx,2555 &feature_lpmx,
2588 &feature_ijmpcall,2556 &feature_ijmpcall,
2589 &feature_movw,
2590 &feature_sram,2557 &feature_sram,
2558 &feature_addsubiw,
2591 &feature_mul,2559 &feature_mul,
2592 &feature_avr0,
2593 &feature_lpm,
2594 &feature_break,2560 &feature_break,
2595 &feature_spm,2561 &feature_lpm,
2596 &feature_addsubiw,2562 &feature_avr0,
2563 &feature_movw,
2597 &feature_avr4,2564 &feature_avr4,
2598 },2565 },
2599};2566};
...@@ -2602,16 +2569,16 @@ pub const cpu_atmega48pa = Cpu{...@@ -2602,16 +2569,16 @@ pub const cpu_atmega48pa = Cpu{
2602 .name = "atmega48pa",2569 .name = "atmega48pa",
2603 .llvm_name = "atmega48pa",2570 .llvm_name = "atmega48pa",
2604 .subfeatures = &[_]*const Feature {2571 .subfeatures = &[_]*const Feature {
2572 &feature_spm,
2605 &feature_lpmx,2573 &feature_lpmx,
2606 &feature_ijmpcall,2574 &feature_ijmpcall,
2607 &feature_movw,
2608 &feature_sram,2575 &feature_sram,
2576 &feature_addsubiw,
2609 &feature_mul,2577 &feature_mul,
2610 &feature_avr0,
2611 &feature_lpm,
2612 &feature_break,2578 &feature_break,
2613 &feature_spm,2579 &feature_lpm,
2614 &feature_addsubiw,2580 &feature_avr0,
2581 &feature_movw,
2615 &feature_avr4,2582 &feature_avr4,
2616 },2583 },
2617};2584};
...@@ -2620,17 +2587,17 @@ pub const cpu_atmega64 = Cpu{...@@ -2620,17 +2587,17 @@ pub const cpu_atmega64 = Cpu{
2620 .name = "atmega64",2587 .name = "atmega64",
2621 .llvm_name = "atmega64",2588 .llvm_name = "atmega64",
2622 .subfeatures = &[_]*const Feature {2589 .subfeatures = &[_]*const Feature {
2590 &feature_spm,
2623 &feature_lpmx,2591 &feature_lpmx,
2624 &feature_jmpcall,
2625 &feature_ijmpcall,2592 &feature_ijmpcall,
2626 &feature_movw,2593 &feature_jmpcall,
2627 &feature_sram,2594 &feature_sram,
2595 &feature_addsubiw,
2628 &feature_mul,2596 &feature_mul,
2629 &feature_avr0,
2630 &feature_lpm,
2631 &feature_break,2597 &feature_break,
2632 &feature_spm,2598 &feature_lpm,
2633 &feature_addsubiw,2599 &feature_avr0,
2600 &feature_movw,
2634 &feature_avr5,2601 &feature_avr5,
2635 },2602 },
2636};2603};
...@@ -2639,17 +2606,17 @@ pub const cpu_atmega640 = Cpu{...@@ -2639,17 +2606,17 @@ pub const cpu_atmega640 = Cpu{
2639 .name = "atmega640",2606 .name = "atmega640",
2640 .llvm_name = "atmega640",2607 .llvm_name = "atmega640",
2641 .subfeatures = &[_]*const Feature {2608 .subfeatures = &[_]*const Feature {
2609 &feature_spm,
2642 &feature_lpmx,2610 &feature_lpmx,
2643 &feature_jmpcall,
2644 &feature_ijmpcall,2611 &feature_ijmpcall,
2645 &feature_movw,2612 &feature_jmpcall,
2646 &feature_sram,2613 &feature_sram,
2614 &feature_addsubiw,
2647 &feature_mul,2615 &feature_mul,
2648 &feature_avr0,
2649 &feature_lpm,
2650 &feature_break,2616 &feature_break,
2651 &feature_spm,2617 &feature_lpm,
2652 &feature_addsubiw,2618 &feature_avr0,
2619 &feature_movw,
2653 &feature_avr5,2620 &feature_avr5,
2654 },2621 },
2655};2622};
...@@ -2658,17 +2625,17 @@ pub const cpu_atmega644 = Cpu{...@@ -2658,17 +2625,17 @@ pub const cpu_atmega644 = Cpu{
2658 .name = "atmega644",2625 .name = "atmega644",
2659 .llvm_name = "atmega644",2626 .llvm_name = "atmega644",
2660 .subfeatures = &[_]*const Feature {2627 .subfeatures = &[_]*const Feature {
2628 &feature_spm,
2661 &feature_lpmx,2629 &feature_lpmx,
2662 &feature_jmpcall,
2663 &feature_ijmpcall,2630 &feature_ijmpcall,
2664 &feature_movw,2631 &feature_jmpcall,
2665 &feature_sram,2632 &feature_sram,
2633 &feature_addsubiw,
2666 &feature_mul,2634 &feature_mul,
2667 &feature_avr0,
2668 &feature_lpm,
2669 &feature_break,2635 &feature_break,
2670 &feature_spm,2636 &feature_lpm,
2671 &feature_addsubiw,2637 &feature_avr0,
2638 &feature_movw,
2672 &feature_avr5,2639 &feature_avr5,
2673 },2640 },
2674};2641};
...@@ -2677,17 +2644,17 @@ pub const cpu_atmega644a = Cpu{...@@ -2677,17 +2644,17 @@ pub const cpu_atmega644a = Cpu{
2677 .name = "atmega644a",2644 .name = "atmega644a",
2678 .llvm_name = "atmega644a",2645 .llvm_name = "atmega644a",
2679 .subfeatures = &[_]*const Feature {2646 .subfeatures = &[_]*const Feature {
2647 &feature_spm,
2680 &feature_lpmx,2648 &feature_lpmx,
2681 &feature_jmpcall,
2682 &feature_ijmpcall,2649 &feature_ijmpcall,
2683 &feature_movw,2650 &feature_jmpcall,
2684 &feature_sram,2651 &feature_sram,
2652 &feature_addsubiw,
2685 &feature_mul,2653 &feature_mul,
2686 &feature_avr0,
2687 &feature_lpm,
2688 &feature_break,2654 &feature_break,
2689 &feature_spm,2655 &feature_lpm,
2690 &feature_addsubiw,2656 &feature_avr0,
2657 &feature_movw,
2691 &feature_avr5,2658 &feature_avr5,
2692 },2659 },
2693};2660};
...@@ -2696,17 +2663,17 @@ pub const cpu_atmega644p = Cpu{...@@ -2696,17 +2663,17 @@ pub const cpu_atmega644p = Cpu{
2696 .name = "atmega644p",2663 .name = "atmega644p",
2697 .llvm_name = "atmega644p",2664 .llvm_name = "atmega644p",
2698 .subfeatures = &[_]*const Feature {2665 .subfeatures = &[_]*const Feature {
2666 &feature_spm,
2699 &feature_lpmx,2667 &feature_lpmx,
2700 &feature_jmpcall,
2701 &feature_ijmpcall,2668 &feature_ijmpcall,
2702 &feature_movw,2669 &feature_jmpcall,
2703 &feature_sram,2670 &feature_sram,
2671 &feature_addsubiw,
2704 &feature_mul,2672 &feature_mul,
2705 &feature_avr0,
2706 &feature_lpm,
2707 &feature_break,2673 &feature_break,
2708 &feature_spm,2674 &feature_lpm,
2709 &feature_addsubiw,2675 &feature_avr0,
2676 &feature_movw,
2710 &feature_avr5,2677 &feature_avr5,
2711 },2678 },
2712};2679};
...@@ -2715,17 +2682,17 @@ pub const cpu_atmega644pa = Cpu{...@@ -2715,17 +2682,17 @@ pub const cpu_atmega644pa = Cpu{
2715 .name = "atmega644pa",2682 .name = "atmega644pa",
2716 .llvm_name = "atmega644pa",2683 .llvm_name = "atmega644pa",
2717 .subfeatures = &[_]*const Feature {2684 .subfeatures = &[_]*const Feature {
2685 &feature_spm,
2718 &feature_lpmx,2686 &feature_lpmx,
2719 &feature_jmpcall,
2720 &feature_ijmpcall,2687 &feature_ijmpcall,
2721 &feature_movw,2688 &feature_jmpcall,
2722 &feature_sram,2689 &feature_sram,
2690 &feature_addsubiw,
2723 &feature_mul,2691 &feature_mul,
2724 &feature_avr0,
2725 &feature_lpm,
2726 &feature_break,2692 &feature_break,
2727 &feature_spm,2693 &feature_lpm,
2728 &feature_addsubiw,2694 &feature_avr0,
2695 &feature_movw,
2729 &feature_avr5,2696 &feature_avr5,
2730 },2697 },
2731};2698};
...@@ -2734,17 +2701,17 @@ pub const cpu_atmega644rfr2 = Cpu{...@@ -2734,17 +2701,17 @@ pub const cpu_atmega644rfr2 = Cpu{
2734 .name = "atmega644rfr2",2701 .name = "atmega644rfr2",
2735 .llvm_name = "atmega644rfr2",2702 .llvm_name = "atmega644rfr2",
2736 .subfeatures = &[_]*const Feature {2703 .subfeatures = &[_]*const Feature {
2704 &feature_spm,
2737 &feature_lpmx,2705 &feature_lpmx,
2738 &feature_jmpcall,
2739 &feature_ijmpcall,2706 &feature_ijmpcall,
2740 &feature_movw,2707 &feature_jmpcall,
2741 &feature_sram,2708 &feature_sram,
2709 &feature_addsubiw,
2742 &feature_mul,2710 &feature_mul,
2743 &feature_avr0,
2744 &feature_lpm,
2745 &feature_break,2711 &feature_break,
2746 &feature_spm,2712 &feature_lpm,
2747 &feature_addsubiw,2713 &feature_avr0,
2714 &feature_movw,
2748 &feature_avr5,2715 &feature_avr5,
2749 },2716 },
2750};2717};
...@@ -2753,17 +2720,17 @@ pub const cpu_atmega645 = Cpu{...@@ -2753,17 +2720,17 @@ pub const cpu_atmega645 = Cpu{
2753 .name = "atmega645",2720 .name = "atmega645",
2754 .llvm_name = "atmega645",2721 .llvm_name = "atmega645",
2755 .subfeatures = &[_]*const Feature {2722 .subfeatures = &[_]*const Feature {
2723 &feature_spm,
2756 &feature_lpmx,2724 &feature_lpmx,
2757 &feature_jmpcall,
2758 &feature_ijmpcall,2725 &feature_ijmpcall,
2759 &feature_movw,2726 &feature_jmpcall,
2760 &feature_sram,2727 &feature_sram,
2728 &feature_addsubiw,
2761 &feature_mul,2729 &feature_mul,
2762 &feature_avr0,
2763 &feature_lpm,
2764 &feature_break,2730 &feature_break,
2765 &feature_spm,2731 &feature_lpm,
2766 &feature_addsubiw,2732 &feature_avr0,
2733 &feature_movw,
2767 &feature_avr5,2734 &feature_avr5,
2768 },2735 },
2769};2736};
...@@ -2772,17 +2739,17 @@ pub const cpu_atmega6450 = Cpu{...@@ -2772,17 +2739,17 @@ pub const cpu_atmega6450 = Cpu{
2772 .name = "atmega6450",2739 .name = "atmega6450",
2773 .llvm_name = "atmega6450",2740 .llvm_name = "atmega6450",
2774 .subfeatures = &[_]*const Feature {2741 .subfeatures = &[_]*const Feature {
2742 &feature_spm,
2775 &feature_lpmx,2743 &feature_lpmx,
2776 &feature_jmpcall,
2777 &feature_ijmpcall,2744 &feature_ijmpcall,
2778 &feature_movw,2745 &feature_jmpcall,
2779 &feature_sram,2746 &feature_sram,
2747 &feature_addsubiw,
2780 &feature_mul,2748 &feature_mul,
2781 &feature_avr0,
2782 &feature_lpm,
2783 &feature_break,2749 &feature_break,
2784 &feature_spm,2750 &feature_lpm,
2785 &feature_addsubiw,2751 &feature_avr0,
2752 &feature_movw,
2786 &feature_avr5,2753 &feature_avr5,
2787 },2754 },
2788};2755};
...@@ -2791,17 +2758,17 @@ pub const cpu_atmega6450a = Cpu{...@@ -2791,17 +2758,17 @@ pub const cpu_atmega6450a = Cpu{
2791 .name = "atmega6450a",2758 .name = "atmega6450a",
2792 .llvm_name = "atmega6450a",2759 .llvm_name = "atmega6450a",
2793 .subfeatures = &[_]*const Feature {2760 .subfeatures = &[_]*const Feature {
2761 &feature_spm,
2794 &feature_lpmx,2762 &feature_lpmx,
2795 &feature_jmpcall,
2796 &feature_ijmpcall,2763 &feature_ijmpcall,
2797 &feature_movw,2764 &feature_jmpcall,
2798 &feature_sram,2765 &feature_sram,
2766 &feature_addsubiw,
2799 &feature_mul,2767 &feature_mul,
2800 &feature_avr0,
2801 &feature_lpm,
2802 &feature_break,2768 &feature_break,
2803 &feature_spm,2769 &feature_lpm,
2804 &feature_addsubiw,2770 &feature_avr0,
2771 &feature_movw,
2805 &feature_avr5,2772 &feature_avr5,
2806 },2773 },
2807};2774};
...@@ -2810,17 +2777,17 @@ pub const cpu_atmega6450p = Cpu{...@@ -2810,17 +2777,17 @@ pub const cpu_atmega6450p = Cpu{
2810 .name = "atmega6450p",2777 .name = "atmega6450p",
2811 .llvm_name = "atmega6450p",2778 .llvm_name = "atmega6450p",
2812 .subfeatures = &[_]*const Feature {2779 .subfeatures = &[_]*const Feature {
2780 &feature_spm,
2813 &feature_lpmx,2781 &feature_lpmx,
2814 &feature_jmpcall,
2815 &feature_ijmpcall,2782 &feature_ijmpcall,
2816 &feature_movw,2783 &feature_jmpcall,
2817 &feature_sram,2784 &feature_sram,
2785 &feature_addsubiw,
2818 &feature_mul,2786 &feature_mul,
2819 &feature_avr0,
2820 &feature_lpm,
2821 &feature_break,2787 &feature_break,
2822 &feature_spm,2788 &feature_lpm,
2823 &feature_addsubiw,2789 &feature_avr0,
2790 &feature_movw,
2824 &feature_avr5,2791 &feature_avr5,
2825 },2792 },
2826};2793};
...@@ -2829,17 +2796,17 @@ pub const cpu_atmega645a = Cpu{...@@ -2829,17 +2796,17 @@ pub const cpu_atmega645a = Cpu{
2829 .name = "atmega645a",2796 .name = "atmega645a",
2830 .llvm_name = "atmega645a",2797 .llvm_name = "atmega645a",
2831 .subfeatures = &[_]*const Feature {2798 .subfeatures = &[_]*const Feature {
2799 &feature_spm,
2832 &feature_lpmx,2800 &feature_lpmx,
2833 &feature_jmpcall,
2834 &feature_ijmpcall,2801 &feature_ijmpcall,
2835 &feature_movw,2802 &feature_jmpcall,
2836 &feature_sram,2803 &feature_sram,
2804 &feature_addsubiw,
2837 &feature_mul,2805 &feature_mul,
2838 &feature_avr0,
2839 &feature_lpm,
2840 &feature_break,2806 &feature_break,
2841 &feature_spm,2807 &feature_lpm,
2842 &feature_addsubiw,2808 &feature_avr0,
2809 &feature_movw,
2843 &feature_avr5,2810 &feature_avr5,
2844 },2811 },
2845};2812};
...@@ -2848,17 +2815,17 @@ pub const cpu_atmega645p = Cpu{...@@ -2848,17 +2815,17 @@ pub const cpu_atmega645p = Cpu{
2848 .name = "atmega645p",2815 .name = "atmega645p",
2849 .llvm_name = "atmega645p",2816 .llvm_name = "atmega645p",
2850 .subfeatures = &[_]*const Feature {2817 .subfeatures = &[_]*const Feature {
2818 &feature_spm,
2851 &feature_lpmx,2819 &feature_lpmx,
2852 &feature_jmpcall,
2853 &feature_ijmpcall,2820 &feature_ijmpcall,
2854 &feature_movw,2821 &feature_jmpcall,
2855 &feature_sram,2822 &feature_sram,
2823 &feature_addsubiw,
2856 &feature_mul,2824 &feature_mul,
2857 &feature_avr0,
2858 &feature_lpm,
2859 &feature_break,2825 &feature_break,
2860 &feature_spm,2826 &feature_lpm,
2861 &feature_addsubiw,2827 &feature_avr0,
2828 &feature_movw,
2862 &feature_avr5,2829 &feature_avr5,
2863 },2830 },
2864};2831};
...@@ -2867,17 +2834,17 @@ pub const cpu_atmega649 = Cpu{...@@ -2867,17 +2834,17 @@ pub const cpu_atmega649 = Cpu{
2867 .name = "atmega649",2834 .name = "atmega649",
2868 .llvm_name = "atmega649",2835 .llvm_name = "atmega649",
2869 .subfeatures = &[_]*const Feature {2836 .subfeatures = &[_]*const Feature {
2837 &feature_spm,
2870 &feature_lpmx,2838 &feature_lpmx,
2871 &feature_jmpcall,
2872 &feature_ijmpcall,2839 &feature_ijmpcall,
2873 &feature_movw,2840 &feature_jmpcall,
2874 &feature_sram,2841 &feature_sram,
2842 &feature_addsubiw,
2875 &feature_mul,2843 &feature_mul,
2876 &feature_avr0,
2877 &feature_lpm,
2878 &feature_break,2844 &feature_break,
2879 &feature_spm,2845 &feature_lpm,
2880 &feature_addsubiw,2846 &feature_avr0,
2847 &feature_movw,
2881 &feature_avr5,2848 &feature_avr5,
2882 },2849 },
2883};2850};
...@@ -2886,17 +2853,17 @@ pub const cpu_atmega6490 = Cpu{...@@ -2886,17 +2853,17 @@ pub const cpu_atmega6490 = Cpu{
2886 .name = "atmega6490",2853 .name = "atmega6490",
2887 .llvm_name = "atmega6490",2854 .llvm_name = "atmega6490",
2888 .subfeatures = &[_]*const Feature {2855 .subfeatures = &[_]*const Feature {
2856 &feature_spm,
2889 &feature_lpmx,2857 &feature_lpmx,
2890 &feature_jmpcall,
2891 &feature_ijmpcall,2858 &feature_ijmpcall,
2892 &feature_movw,2859 &feature_jmpcall,
2893 &feature_sram,2860 &feature_sram,
2861 &feature_addsubiw,
2894 &feature_mul,2862 &feature_mul,
2895 &feature_avr0,
2896 &feature_lpm,
2897 &feature_break,2863 &feature_break,
2898 &feature_spm,2864 &feature_lpm,
2899 &feature_addsubiw,2865 &feature_avr0,
2866 &feature_movw,
2900 &feature_avr5,2867 &feature_avr5,
2901 },2868 },
2902};2869};
...@@ -2905,17 +2872,17 @@ pub const cpu_atmega6490a = Cpu{...@@ -2905,17 +2872,17 @@ pub const cpu_atmega6490a = Cpu{
2905 .name = "atmega6490a",2872 .name = "atmega6490a",
2906 .llvm_name = "atmega6490a",2873 .llvm_name = "atmega6490a",
2907 .subfeatures = &[_]*const Feature {2874 .subfeatures = &[_]*const Feature {
2875 &feature_spm,
2908 &feature_lpmx,2876 &feature_lpmx,
2909 &feature_jmpcall,
2910 &feature_ijmpcall,2877 &feature_ijmpcall,
2911 &feature_movw,2878 &feature_jmpcall,
2912 &feature_sram,2879 &feature_sram,
2880 &feature_addsubiw,
2913 &feature_mul,2881 &feature_mul,
2914 &feature_avr0,
2915 &feature_lpm,
2916 &feature_break,2882 &feature_break,
2917 &feature_spm,2883 &feature_lpm,
2918 &feature_addsubiw,2884 &feature_avr0,
2885 &feature_movw,
2919 &feature_avr5,2886 &feature_avr5,
2920 },2887 },
2921};2888};
...@@ -2924,17 +2891,17 @@ pub const cpu_atmega6490p = Cpu{...@@ -2924,17 +2891,17 @@ pub const cpu_atmega6490p = Cpu{
2924 .name = "atmega6490p",2891 .name = "atmega6490p",
2925 .llvm_name = "atmega6490p",2892 .llvm_name = "atmega6490p",
2926 .subfeatures = &[_]*const Feature {2893 .subfeatures = &[_]*const Feature {
2894 &feature_spm,
2927 &feature_lpmx,2895 &feature_lpmx,
2928 &feature_jmpcall,
2929 &feature_ijmpcall,2896 &feature_ijmpcall,
2930 &feature_movw,2897 &feature_jmpcall,
2931 &feature_sram,2898 &feature_sram,
2899 &feature_addsubiw,
2932 &feature_mul,2900 &feature_mul,
2933 &feature_avr0,
2934 &feature_lpm,
2935 &feature_break,2901 &feature_break,
2936 &feature_spm,2902 &feature_lpm,
2937 &feature_addsubiw,2903 &feature_avr0,
2904 &feature_movw,
2938 &feature_avr5,2905 &feature_avr5,
2939 },2906 },
2940};2907};
...@@ -2943,17 +2910,17 @@ pub const cpu_atmega649a = Cpu{...@@ -2943,17 +2910,17 @@ pub const cpu_atmega649a = Cpu{
2943 .name = "atmega649a",2910 .name = "atmega649a",
2944 .llvm_name = "atmega649a",2911 .llvm_name = "atmega649a",
2945 .subfeatures = &[_]*const Feature {2912 .subfeatures = &[_]*const Feature {
2913 &feature_spm,
2946 &feature_lpmx,2914 &feature_lpmx,
2947 &feature_jmpcall,
2948 &feature_ijmpcall,2915 &feature_ijmpcall,
2949 &feature_movw,2916 &feature_jmpcall,
2950 &feature_sram,2917 &feature_sram,
2918 &feature_addsubiw,
2951 &feature_mul,2919 &feature_mul,
2952 &feature_avr0,
2953 &feature_lpm,
2954 &feature_break,2920 &feature_break,
2955 &feature_spm,2921 &feature_lpm,
2956 &feature_addsubiw,2922 &feature_avr0,
2923 &feature_movw,
2957 &feature_avr5,2924 &feature_avr5,
2958 },2925 },
2959};2926};
...@@ -2962,17 +2929,17 @@ pub const cpu_atmega649p = Cpu{...@@ -2962,17 +2929,17 @@ pub const cpu_atmega649p = Cpu{
2962 .name = "atmega649p",2929 .name = "atmega649p",
2963 .llvm_name = "atmega649p",2930 .llvm_name = "atmega649p",
2964 .subfeatures = &[_]*const Feature {2931 .subfeatures = &[_]*const Feature {
2932 &feature_spm,
2965 &feature_lpmx,2933 &feature_lpmx,
2966 &feature_jmpcall,
2967 &feature_ijmpcall,2934 &feature_ijmpcall,
2968 &feature_movw,2935 &feature_jmpcall,
2969 &feature_sram,2936 &feature_sram,
2937 &feature_addsubiw,
2970 &feature_mul,2938 &feature_mul,
2971 &feature_avr0,
2972 &feature_lpm,
2973 &feature_break,2939 &feature_break,
2974 &feature_spm,2940 &feature_lpm,
2975 &feature_addsubiw,2941 &feature_avr0,
2942 &feature_movw,
2976 &feature_avr5,2943 &feature_avr5,
2977 },2944 },
2978};2945};
...@@ -2981,17 +2948,17 @@ pub const cpu_atmega64a = Cpu{...@@ -2981,17 +2948,17 @@ pub const cpu_atmega64a = Cpu{
2981 .name = "atmega64a",2948 .name = "atmega64a",
2982 .llvm_name = "atmega64a",2949 .llvm_name = "atmega64a",
2983 .subfeatures = &[_]*const Feature {2950 .subfeatures = &[_]*const Feature {
2951 &feature_spm,
2984 &feature_lpmx,2952 &feature_lpmx,
2985 &feature_jmpcall,
2986 &feature_ijmpcall,2953 &feature_ijmpcall,
2987 &feature_movw,2954 &feature_jmpcall,
2988 &feature_sram,2955 &feature_sram,
2956 &feature_addsubiw,
2989 &feature_mul,2957 &feature_mul,
2990 &feature_avr0,
2991 &feature_lpm,
2992 &feature_break,2958 &feature_break,
2993 &feature_spm,2959 &feature_lpm,
2994 &feature_addsubiw,2960 &feature_avr0,
2961 &feature_movw,
2995 &feature_avr5,2962 &feature_avr5,
2996 },2963 },
2997};2964};
...@@ -3000,17 +2967,17 @@ pub const cpu_atmega64c1 = Cpu{...@@ -3000,17 +2967,17 @@ pub const cpu_atmega64c1 = Cpu{
3000 .name = "atmega64c1",2967 .name = "atmega64c1",
3001 .llvm_name = "atmega64c1",2968 .llvm_name = "atmega64c1",
3002 .subfeatures = &[_]*const Feature {2969 .subfeatures = &[_]*const Feature {
2970 &feature_spm,
3003 &feature_lpmx,2971 &feature_lpmx,
3004 &feature_jmpcall,
3005 &feature_ijmpcall,2972 &feature_ijmpcall,
3006 &feature_movw,2973 &feature_jmpcall,
3007 &feature_sram,2974 &feature_sram,
2975 &feature_addsubiw,
3008 &feature_mul,2976 &feature_mul,
3009 &feature_avr0,
3010 &feature_lpm,
3011 &feature_break,2977 &feature_break,
3012 &feature_spm,2978 &feature_lpm,
3013 &feature_addsubiw,2979 &feature_avr0,
2980 &feature_movw,
3014 &feature_avr5,2981 &feature_avr5,
3015 },2982 },
3016};2983};
...@@ -3019,17 +2986,17 @@ pub const cpu_atmega64hve = Cpu{...@@ -3019,17 +2986,17 @@ pub const cpu_atmega64hve = Cpu{
3019 .name = "atmega64hve",2986 .name = "atmega64hve",
3020 .llvm_name = "atmega64hve",2987 .llvm_name = "atmega64hve",
3021 .subfeatures = &[_]*const Feature {2988 .subfeatures = &[_]*const Feature {
2989 &feature_spm,
3022 &feature_lpmx,2990 &feature_lpmx,
3023 &feature_jmpcall,
3024 &feature_ijmpcall,2991 &feature_ijmpcall,
3025 &feature_movw,2992 &feature_jmpcall,
3026 &feature_sram,2993 &feature_sram,
2994 &feature_addsubiw,
3027 &feature_mul,2995 &feature_mul,
3028 &feature_avr0,
3029 &feature_lpm,
3030 &feature_break,2996 &feature_break,
3031 &feature_spm,2997 &feature_lpm,
3032 &feature_addsubiw,2998 &feature_avr0,
2999 &feature_movw,
3033 &feature_avr5,3000 &feature_avr5,
3034 },3001 },
3035};3002};
...@@ -3038,17 +3005,17 @@ pub const cpu_atmega64m1 = Cpu{...@@ -3038,17 +3005,17 @@ pub const cpu_atmega64m1 = Cpu{
3038 .name = "atmega64m1",3005 .name = "atmega64m1",
3039 .llvm_name = "atmega64m1",3006 .llvm_name = "atmega64m1",
3040 .subfeatures = &[_]*const Feature {3007 .subfeatures = &[_]*const Feature {
3008 &feature_spm,
3041 &feature_lpmx,3009 &feature_lpmx,
3042 &feature_jmpcall,
3043 &feature_ijmpcall,3010 &feature_ijmpcall,
3044 &feature_movw,3011 &feature_jmpcall,
3045 &feature_sram,3012 &feature_sram,
3013 &feature_addsubiw,
3046 &feature_mul,3014 &feature_mul,
3047 &feature_avr0,
3048 &feature_lpm,
3049 &feature_break,3015 &feature_break,
3050 &feature_spm,3016 &feature_lpm,
3051 &feature_addsubiw,3017 &feature_avr0,
3018 &feature_movw,
3052 &feature_avr5,3019 &feature_avr5,
3053 },3020 },
3054};3021};
...@@ -3057,17 +3024,17 @@ pub const cpu_atmega64rfr2 = Cpu{...@@ -3057,17 +3024,17 @@ pub const cpu_atmega64rfr2 = Cpu{
3057 .name = "atmega64rfr2",3024 .name = "atmega64rfr2",
3058 .llvm_name = "atmega64rfr2",3025 .llvm_name = "atmega64rfr2",
3059 .subfeatures = &[_]*const Feature {3026 .subfeatures = &[_]*const Feature {
3027 &feature_spm,
3060 &feature_lpmx,3028 &feature_lpmx,
3061 &feature_jmpcall,
3062 &feature_ijmpcall,3029 &feature_ijmpcall,
3063 &feature_movw,3030 &feature_jmpcall,
3064 &feature_sram,3031 &feature_sram,
3032 &feature_addsubiw,
3065 &feature_mul,3033 &feature_mul,
3066 &feature_avr0,
3067 &feature_lpm,
3068 &feature_break,3034 &feature_break,
3069 &feature_spm,3035 &feature_lpm,
3070 &feature_addsubiw,3036 &feature_avr0,
3037 &feature_movw,
3071 &feature_avr5,3038 &feature_avr5,
3072 },3039 },
3073};3040};
...@@ -3076,16 +3043,16 @@ pub const cpu_atmega8 = Cpu{...@@ -3076,16 +3043,16 @@ pub const cpu_atmega8 = Cpu{
3076 .name = "atmega8",3043 .name = "atmega8",
3077 .llvm_name = "atmega8",3044 .llvm_name = "atmega8",
3078 .subfeatures = &[_]*const Feature {3045 .subfeatures = &[_]*const Feature {
3046 &feature_spm,
3079 &feature_lpmx,3047 &feature_lpmx,
3080 &feature_ijmpcall,3048 &feature_ijmpcall,
3081 &feature_movw,
3082 &feature_sram,3049 &feature_sram,
3050 &feature_addsubiw,
3083 &feature_mul,3051 &feature_mul,
3084 &feature_avr0,
3085 &feature_lpm,
3086 &feature_break,3052 &feature_break,
3087 &feature_spm,3053 &feature_lpm,
3088 &feature_addsubiw,3054 &feature_avr0,
3055 &feature_movw,
3089 &feature_avr4,3056 &feature_avr4,
3090 },3057 },
3091};3058};
...@@ -3096,9 +3063,9 @@ pub const cpu_atmega8515 = Cpu{...@@ -3096,9 +3063,9 @@ pub const cpu_atmega8515 = Cpu{
3096 .subfeatures = &[_]*const Feature {3063 .subfeatures = &[_]*const Feature {
3097 &feature_ijmpcall,3064 &feature_ijmpcall,
3098 &feature_sram,3065 &feature_sram,
3099 &feature_avr0,
3100 &feature_lpm,
3101 &feature_addsubiw,3066 &feature_addsubiw,
3067 &feature_lpm,
3068 &feature_avr0,
3102 &feature_avr2,3069 &feature_avr2,
3103 &feature_lpmx,3070 &feature_lpmx,
3104 &feature_movw,3071 &feature_movw,
...@@ -3113,9 +3080,9 @@ pub const cpu_atmega8535 = Cpu{...@@ -3113,9 +3080,9 @@ pub const cpu_atmega8535 = Cpu{
3113 .subfeatures = &[_]*const Feature {3080 .subfeatures = &[_]*const Feature {
3114 &feature_ijmpcall,3081 &feature_ijmpcall,
3115 &feature_sram,3082 &feature_sram,
3116 &feature_avr0,
3117 &feature_lpm,
3118 &feature_addsubiw,3083 &feature_addsubiw,
3084 &feature_lpm,
3085 &feature_avr0,
3119 &feature_avr2,3086 &feature_avr2,
3120 &feature_lpmx,3087 &feature_lpmx,
3121 &feature_movw,3088 &feature_movw,
...@@ -3128,16 +3095,16 @@ pub const cpu_atmega88 = Cpu{...@@ -3128,16 +3095,16 @@ pub const cpu_atmega88 = Cpu{
3128 .name = "atmega88",3095 .name = "atmega88",
3129 .llvm_name = "atmega88",3096 .llvm_name = "atmega88",
3130 .subfeatures = &[_]*const Feature {3097 .subfeatures = &[_]*const Feature {
3098 &feature_spm,
3131 &feature_lpmx,3099 &feature_lpmx,
3132 &feature_ijmpcall,3100 &feature_ijmpcall,
3133 &feature_movw,
3134 &feature_sram,3101 &feature_sram,
3102 &feature_addsubiw,
3135 &feature_mul,3103 &feature_mul,
3136 &feature_avr0,
3137 &feature_lpm,
3138 &feature_break,3104 &feature_break,
3139 &feature_spm,3105 &feature_lpm,
3140 &feature_addsubiw,3106 &feature_avr0,
3107 &feature_movw,
3141 &feature_avr4,3108 &feature_avr4,
3142 },3109 },
3143};3110};
...@@ -3146,16 +3113,16 @@ pub const cpu_atmega88a = Cpu{...@@ -3146,16 +3113,16 @@ pub const cpu_atmega88a = Cpu{
3146 .name = "atmega88a",3113 .name = "atmega88a",
3147 .llvm_name = "atmega88a",3114 .llvm_name = "atmega88a",
3148 .subfeatures = &[_]*const Feature {3115 .subfeatures = &[_]*const Feature {
3116 &feature_spm,
3149 &feature_lpmx,3117 &feature_lpmx,
3150 &feature_ijmpcall,3118 &feature_ijmpcall,
3151 &feature_movw,
3152 &feature_sram,3119 &feature_sram,
3120 &feature_addsubiw,
3153 &feature_mul,3121 &feature_mul,
3154 &feature_avr0,
3155 &feature_lpm,
3156 &feature_break,3122 &feature_break,
3157 &feature_spm,3123 &feature_lpm,
3158 &feature_addsubiw,3124 &feature_avr0,
3125 &feature_movw,
3159 &feature_avr4,3126 &feature_avr4,
3160 },3127 },
3161};3128};
...@@ -3164,16 +3131,16 @@ pub const cpu_atmega88p = Cpu{...@@ -3164,16 +3131,16 @@ pub const cpu_atmega88p = Cpu{
3164 .name = "atmega88p",3131 .name = "atmega88p",
3165 .llvm_name = "atmega88p",3132 .llvm_name = "atmega88p",
3166 .subfeatures = &[_]*const Feature {3133 .subfeatures = &[_]*const Feature {
3134 &feature_spm,
3167 &feature_lpmx,3135 &feature_lpmx,
3168 &feature_ijmpcall,3136 &feature_ijmpcall,
3169 &feature_movw,
3170 &feature_sram,3137 &feature_sram,
3138 &feature_addsubiw,
3171 &feature_mul,3139 &feature_mul,
3172 &feature_avr0,
3173 &feature_lpm,
3174 &feature_break,3140 &feature_break,
3175 &feature_spm,3141 &feature_lpm,
3176 &feature_addsubiw,3142 &feature_avr0,
3143 &feature_movw,
3177 &feature_avr4,3144 &feature_avr4,
3178 },3145 },
3179};3146};
...@@ -3182,16 +3149,16 @@ pub const cpu_atmega88pa = Cpu{...@@ -3182,16 +3149,16 @@ pub const cpu_atmega88pa = Cpu{
3182 .name = "atmega88pa",3149 .name = "atmega88pa",
3183 .llvm_name = "atmega88pa",3150 .llvm_name = "atmega88pa",
3184 .subfeatures = &[_]*const Feature {3151 .subfeatures = &[_]*const Feature {
3152 &feature_spm,
3185 &feature_lpmx,3153 &feature_lpmx,
3186 &feature_ijmpcall,3154 &feature_ijmpcall,
3187 &feature_movw,
3188 &feature_sram,3155 &feature_sram,
3156 &feature_addsubiw,
3189 &feature_mul,3157 &feature_mul,
3190 &feature_avr0,
3191 &feature_lpm,
3192 &feature_break,3158 &feature_break,
3193 &feature_spm,3159 &feature_lpm,
3194 &feature_addsubiw,3160 &feature_avr0,
3161 &feature_movw,
3195 &feature_avr4,3162 &feature_avr4,
3196 },3163 },
3197};3164};
...@@ -3200,16 +3167,16 @@ pub const cpu_atmega8a = Cpu{...@@ -3200,16 +3167,16 @@ pub const cpu_atmega8a = Cpu{
3200 .name = "atmega8a",3167 .name = "atmega8a",
3201 .llvm_name = "atmega8a",3168 .llvm_name = "atmega8a",
3202 .subfeatures = &[_]*const Feature {3169 .subfeatures = &[_]*const Feature {
3170 &feature_spm,
3203 &feature_lpmx,3171 &feature_lpmx,
3204 &feature_ijmpcall,3172 &feature_ijmpcall,
3205 &feature_movw,
3206 &feature_sram,3173 &feature_sram,
3174 &feature_addsubiw,
3207 &feature_mul,3175 &feature_mul,
3208 &feature_avr0,
3209 &feature_lpm,
3210 &feature_break,3176 &feature_break,
3211 &feature_spm,3177 &feature_lpm,
3212 &feature_addsubiw,3178 &feature_avr0,
3179 &feature_movw,
3213 &feature_avr4,3180 &feature_avr4,
3214 },3181 },
3215};3182};
...@@ -3218,16 +3185,16 @@ pub const cpu_atmega8hva = Cpu{...@@ -3218,16 +3185,16 @@ pub const cpu_atmega8hva = Cpu{
3218 .name = "atmega8hva",3185 .name = "atmega8hva",
3219 .llvm_name = "atmega8hva",3186 .llvm_name = "atmega8hva",
3220 .subfeatures = &[_]*const Feature {3187 .subfeatures = &[_]*const Feature {
3188 &feature_spm,
3221 &feature_lpmx,3189 &feature_lpmx,
3222 &feature_ijmpcall,3190 &feature_ijmpcall,
3223 &feature_movw,
3224 &feature_sram,3191 &feature_sram,
3192 &feature_addsubiw,
3225 &feature_mul,3193 &feature_mul,
3226 &feature_avr0,
3227 &feature_lpm,
3228 &feature_break,3194 &feature_break,
3229 &feature_spm,3195 &feature_lpm,
3230 &feature_addsubiw,3196 &feature_avr0,
3197 &feature_movw,
3231 &feature_avr4,3198 &feature_avr4,
3232 },3199 },
3233};3200};
...@@ -3236,16 +3203,16 @@ pub const cpu_atmega8u2 = Cpu{...@@ -3236,16 +3203,16 @@ pub const cpu_atmega8u2 = Cpu{
3236 .name = "atmega8u2",3203 .name = "atmega8u2",
3237 .llvm_name = "atmega8u2",3204 .llvm_name = "atmega8u2",
3238 .subfeatures = &[_]*const Feature {3205 .subfeatures = &[_]*const Feature {
3206 &feature_spm,
3239 &feature_lpmx,3207 &feature_lpmx,
3240 &feature_jmpcall,
3241 &feature_ijmpcall,3208 &feature_ijmpcall,
3242 &feature_movw,3209 &feature_jmpcall,
3243 &feature_sram,3210 &feature_sram,
3244 &feature_avr0,
3245 &feature_lpm,
3246 &feature_break,
3247 &feature_spm,
3248 &feature_addsubiw,3211 &feature_addsubiw,
3212 &feature_break,
3213 &feature_lpm,
3214 &feature_avr0,
3215 &feature_movw,
3249 &feature_avr35,3216 &feature_avr35,
3250 },3217 },
3251};3218};
...@@ -3254,10 +3221,10 @@ pub const cpu_attiny10 = Cpu{...@@ -3254,10 +3221,10 @@ pub const cpu_attiny10 = Cpu{
3254 .name = "attiny10",3221 .name = "attiny10",
3255 .llvm_name = "attiny10",3222 .llvm_name = "attiny10",
3256 .subfeatures = &[_]*const Feature {3223 .subfeatures = &[_]*const Feature {
3257 &feature_tinyencoding,3224 &feature_avr0,
3258 &feature_sram,3225 &feature_sram,
3226 &feature_tinyencoding,
3259 &feature_break,3227 &feature_break,
3260 &feature_avr0,
3261 &feature_avrtiny,3228 &feature_avrtiny,
3262 },3229 },
3263};3230};
...@@ -3266,10 +3233,10 @@ pub const cpu_attiny102 = Cpu{...@@ -3266,10 +3233,10 @@ pub const cpu_attiny102 = Cpu{
3266 .name = "attiny102",3233 .name = "attiny102",
3267 .llvm_name = "attiny102",3234 .llvm_name = "attiny102",
3268 .subfeatures = &[_]*const Feature {3235 .subfeatures = &[_]*const Feature {
3269 &feature_tinyencoding,3236 &feature_avr0,
3270 &feature_sram,3237 &feature_sram,
3238 &feature_tinyencoding,
3271 &feature_break,3239 &feature_break,
3272 &feature_avr0,
3273 &feature_avrtiny,3240 &feature_avrtiny,
3274 },3241 },
3275};3242};
...@@ -3278,10 +3245,10 @@ pub const cpu_attiny104 = Cpu{...@@ -3278,10 +3245,10 @@ pub const cpu_attiny104 = Cpu{
3278 .name = "attiny104",3245 .name = "attiny104",
3279 .llvm_name = "attiny104",3246 .llvm_name = "attiny104",
3280 .subfeatures = &[_]*const Feature {3247 .subfeatures = &[_]*const Feature {
3281 &feature_tinyencoding,3248 &feature_avr0,
3282 &feature_sram,3249 &feature_sram,
3250 &feature_tinyencoding,
3283 &feature_break,3251 &feature_break,
3284 &feature_avr0,
3285 &feature_avrtiny,3252 &feature_avrtiny,
3286 },3253 },
3287};3254};
...@@ -3290,8 +3257,8 @@ pub const cpu_attiny11 = Cpu{...@@ -3290,8 +3257,8 @@ pub const cpu_attiny11 = Cpu{
3290 .name = "attiny11",3257 .name = "attiny11",
3291 .llvm_name = "attiny11",3258 .llvm_name = "attiny11",
3292 .subfeatures = &[_]*const Feature {3259 .subfeatures = &[_]*const Feature {
3293 &feature_avr0,
3294 &feature_lpm,3260 &feature_lpm,
3261 &feature_avr0,
3295 &feature_avr1,3262 &feature_avr1,
3296 },3263 },
3297};3264};
...@@ -3300,8 +3267,8 @@ pub const cpu_attiny12 = Cpu{...@@ -3300,8 +3267,8 @@ pub const cpu_attiny12 = Cpu{
3300 .name = "attiny12",3267 .name = "attiny12",
3301 .llvm_name = "attiny12",3268 .llvm_name = "attiny12",
3302 .subfeatures = &[_]*const Feature {3269 .subfeatures = &[_]*const Feature {
3303 &feature_avr0,
3304 &feature_lpm,3270 &feature_lpm,
3271 &feature_avr0,
3305 &feature_avr1,3272 &feature_avr1,
3306 },3273 },
3307};3274};
...@@ -3310,15 +3277,15 @@ pub const cpu_attiny13 = Cpu{...@@ -3310,15 +3277,15 @@ pub const cpu_attiny13 = Cpu{
3310 .name = "attiny13",3277 .name = "attiny13",
3311 .llvm_name = "attiny13",3278 .llvm_name = "attiny13",
3312 .subfeatures = &[_]*const Feature {3279 .subfeatures = &[_]*const Feature {
3280 &feature_spm,
3313 &feature_lpmx,3281 &feature_lpmx,
3314 &feature_ijmpcall,3282 &feature_ijmpcall,
3315 &feature_movw,
3316 &feature_sram,3283 &feature_sram,
3317 &feature_avr0,
3318 &feature_lpm,
3319 &feature_break,
3320 &feature_spm,
3321 &feature_addsubiw,3284 &feature_addsubiw,
3285 &feature_break,
3286 &feature_lpm,
3287 &feature_avr0,
3288 &feature_movw,
3322 &feature_avr25,3289 &feature_avr25,
3323 },3290 },
3324};3291};
...@@ -3327,15 +3294,15 @@ pub const cpu_attiny13a = Cpu{...@@ -3327,15 +3294,15 @@ pub const cpu_attiny13a = Cpu{
3327 .name = "attiny13a",3294 .name = "attiny13a",
3328 .llvm_name = "attiny13a",3295 .llvm_name = "attiny13a",
3329 .subfeatures = &[_]*const Feature {3296 .subfeatures = &[_]*const Feature {
3297 &feature_spm,
3330 &feature_lpmx,3298 &feature_lpmx,
3331 &feature_ijmpcall,3299 &feature_ijmpcall,
3332 &feature_movw,
3333 &feature_sram,3300 &feature_sram,
3334 &feature_avr0,
3335 &feature_lpm,
3336 &feature_break,
3337 &feature_spm,
3338 &feature_addsubiw,3301 &feature_addsubiw,
3302 &feature_break,
3303 &feature_lpm,
3304 &feature_avr0,
3305 &feature_movw,
3339 &feature_avr25,3306 &feature_avr25,
3340 },3307 },
3341};3308};
...@@ -3344,8 +3311,8 @@ pub const cpu_attiny15 = Cpu{...@@ -3344,8 +3311,8 @@ pub const cpu_attiny15 = Cpu{
3344 .name = "attiny15",3311 .name = "attiny15",
3345 .llvm_name = "attiny15",3312 .llvm_name = "attiny15",
3346 .subfeatures = &[_]*const Feature {3313 .subfeatures = &[_]*const Feature {
3347 &feature_avr0,
3348 &feature_lpm,3314 &feature_lpm,
3315 &feature_avr0,
3349 &feature_avr1,3316 &feature_avr1,
3350 },3317 },
3351};3318};
...@@ -3354,16 +3321,16 @@ pub const cpu_attiny1634 = Cpu{...@@ -3354,16 +3321,16 @@ pub const cpu_attiny1634 = Cpu{
3354 .name = "attiny1634",3321 .name = "attiny1634",
3355 .llvm_name = "attiny1634",3322 .llvm_name = "attiny1634",
3356 .subfeatures = &[_]*const Feature {3323 .subfeatures = &[_]*const Feature {
3324 &feature_spm,
3357 &feature_lpmx,3325 &feature_lpmx,
3358 &feature_jmpcall,
3359 &feature_ijmpcall,3326 &feature_ijmpcall,
3360 &feature_movw,3327 &feature_jmpcall,
3361 &feature_sram,3328 &feature_sram,
3362 &feature_avr0,
3363 &feature_lpm,
3364 &feature_break,
3365 &feature_spm,
3366 &feature_addsubiw,3329 &feature_addsubiw,
3330 &feature_break,
3331 &feature_lpm,
3332 &feature_avr0,
3333 &feature_movw,
3367 &feature_avr35,3334 &feature_avr35,
3368 },3335 },
3369};3336};
...@@ -3372,16 +3339,16 @@ pub const cpu_attiny167 = Cpu{...@@ -3372,16 +3339,16 @@ pub const cpu_attiny167 = Cpu{
3372 .name = "attiny167",3339 .name = "attiny167",
3373 .llvm_name = "attiny167",3340 .llvm_name = "attiny167",
3374 .subfeatures = &[_]*const Feature {3341 .subfeatures = &[_]*const Feature {
3342 &feature_spm,
3375 &feature_lpmx,3343 &feature_lpmx,
3376 &feature_jmpcall,
3377 &feature_ijmpcall,3344 &feature_ijmpcall,
3378 &feature_movw,3345 &feature_jmpcall,
3379 &feature_sram,3346 &feature_sram,
3380 &feature_avr0,
3381 &feature_lpm,
3382 &feature_break,
3383 &feature_spm,
3384 &feature_addsubiw,3347 &feature_addsubiw,
3348 &feature_break,
3349 &feature_lpm,
3350 &feature_avr0,
3351 &feature_movw,
3385 &feature_avr35,3352 &feature_avr35,
3386 },3353 },
3387};3354};
...@@ -3390,10 +3357,10 @@ pub const cpu_attiny20 = Cpu{...@@ -3390,10 +3357,10 @@ pub const cpu_attiny20 = Cpu{
3390 .name = "attiny20",3357 .name = "attiny20",
3391 .llvm_name = "attiny20",3358 .llvm_name = "attiny20",
3392 .subfeatures = &[_]*const Feature {3359 .subfeatures = &[_]*const Feature {
3393 &feature_tinyencoding,3360 &feature_avr0,
3394 &feature_sram,3361 &feature_sram,
3362 &feature_tinyencoding,
3395 &feature_break,3363 &feature_break,
3396 &feature_avr0,
3397 &feature_avrtiny,3364 &feature_avrtiny,
3398 },3365 },
3399};3366};
...@@ -3404,9 +3371,9 @@ pub const cpu_attiny22 = Cpu{...@@ -3404,9 +3371,9 @@ pub const cpu_attiny22 = Cpu{
3404 .subfeatures = &[_]*const Feature {3371 .subfeatures = &[_]*const Feature {
3405 &feature_ijmpcall,3372 &feature_ijmpcall,
3406 &feature_sram,3373 &feature_sram,
3407 &feature_avr0,
3408 &feature_lpm,
3409 &feature_addsubiw,3374 &feature_addsubiw,
3375 &feature_lpm,
3376 &feature_avr0,
3410 &feature_avr2,3377 &feature_avr2,
3411 },3378 },
3412};3379};
...@@ -3415,15 +3382,15 @@ pub const cpu_attiny2313 = Cpu{...@@ -3415,15 +3382,15 @@ pub const cpu_attiny2313 = Cpu{
3415 .name = "attiny2313",3382 .name = "attiny2313",
3416 .llvm_name = "attiny2313",3383 .llvm_name = "attiny2313",
3417 .subfeatures = &[_]*const Feature {3384 .subfeatures = &[_]*const Feature {
3385 &feature_spm,
3418 &feature_lpmx,3386 &feature_lpmx,
3419 &feature_ijmpcall,3387 &feature_ijmpcall,
3420 &feature_movw,
3421 &feature_sram,3388 &feature_sram,
3422 &feature_avr0,
3423 &feature_lpm,
3424 &feature_break,
3425 &feature_spm,
3426 &feature_addsubiw,3389 &feature_addsubiw,
3390 &feature_break,
3391 &feature_lpm,
3392 &feature_avr0,
3393 &feature_movw,
3427 &feature_avr25,3394 &feature_avr25,
3428 },3395 },
3429};3396};
...@@ -3432,15 +3399,15 @@ pub const cpu_attiny2313a = Cpu{...@@ -3432,15 +3399,15 @@ pub const cpu_attiny2313a = Cpu{
3432 .name = "attiny2313a",3399 .name = "attiny2313a",
3433 .llvm_name = "attiny2313a",3400 .llvm_name = "attiny2313a",
3434 .subfeatures = &[_]*const Feature {3401 .subfeatures = &[_]*const Feature {
3402 &feature_spm,
3435 &feature_lpmx,3403 &feature_lpmx,
3436 &feature_ijmpcall,3404 &feature_ijmpcall,
3437 &feature_movw,
3438 &feature_sram,3405 &feature_sram,
3439 &feature_avr0,
3440 &feature_lpm,
3441 &feature_break,
3442 &feature_spm,
3443 &feature_addsubiw,3406 &feature_addsubiw,
3407 &feature_break,
3408 &feature_lpm,
3409 &feature_avr0,
3410 &feature_movw,
3444 &feature_avr25,3411 &feature_avr25,
3445 },3412 },
3446};3413};
...@@ -3449,15 +3416,15 @@ pub const cpu_attiny24 = Cpu{...@@ -3449,15 +3416,15 @@ pub const cpu_attiny24 = Cpu{
3449 .name = "attiny24",3416 .name = "attiny24",
3450 .llvm_name = "attiny24",3417 .llvm_name = "attiny24",
3451 .subfeatures = &[_]*const Feature {3418 .subfeatures = &[_]*const Feature {
3419 &feature_spm,
3452 &feature_lpmx,3420 &feature_lpmx,
3453 &feature_ijmpcall,3421 &feature_ijmpcall,
3454 &feature_movw,
3455 &feature_sram,3422 &feature_sram,
3456 &feature_avr0,
3457 &feature_lpm,
3458 &feature_break,
3459 &feature_spm,
3460 &feature_addsubiw,3423 &feature_addsubiw,
3424 &feature_break,
3425 &feature_lpm,
3426 &feature_avr0,
3427 &feature_movw,
3461 &feature_avr25,3428 &feature_avr25,
3462 },3429 },
3463};3430};
...@@ -3466,15 +3433,15 @@ pub const cpu_attiny24a = Cpu{...@@ -3466,15 +3433,15 @@ pub const cpu_attiny24a = Cpu{
3466 .name = "attiny24a",3433 .name = "attiny24a",
3467 .llvm_name = "attiny24a",3434 .llvm_name = "attiny24a",
3468 .subfeatures = &[_]*const Feature {3435 .subfeatures = &[_]*const Feature {
3436 &feature_spm,
3469 &feature_lpmx,3437 &feature_lpmx,
3470 &feature_ijmpcall,3438 &feature_ijmpcall,
3471 &feature_movw,
3472 &feature_sram,3439 &feature_sram,
3473 &feature_avr0,
3474 &feature_lpm,
3475 &feature_break,
3476 &feature_spm,
3477 &feature_addsubiw,3440 &feature_addsubiw,
3441 &feature_break,
3442 &feature_lpm,
3443 &feature_avr0,
3444 &feature_movw,
3478 &feature_avr25,3445 &feature_avr25,
3479 },3446 },
3480};3447};
...@@ -3483,15 +3450,15 @@ pub const cpu_attiny25 = Cpu{...@@ -3483,15 +3450,15 @@ pub const cpu_attiny25 = Cpu{
3483 .name = "attiny25",3450 .name = "attiny25",
3484 .llvm_name = "attiny25",3451 .llvm_name = "attiny25",
3485 .subfeatures = &[_]*const Feature {3452 .subfeatures = &[_]*const Feature {
3453 &feature_spm,
3486 &feature_lpmx,3454 &feature_lpmx,
3487 &feature_ijmpcall,3455 &feature_ijmpcall,
3488 &feature_movw,
3489 &feature_sram,3456 &feature_sram,
3490 &feature_avr0,
3491 &feature_lpm,
3492 &feature_break,
3493 &feature_spm,
3494 &feature_addsubiw,3457 &feature_addsubiw,
3458 &feature_break,
3459 &feature_lpm,
3460 &feature_avr0,
3461 &feature_movw,
3495 &feature_avr25,3462 &feature_avr25,
3496 },3463 },
3497};3464};
...@@ -3502,9 +3469,9 @@ pub const cpu_attiny26 = Cpu{...@@ -3502,9 +3469,9 @@ pub const cpu_attiny26 = Cpu{
3502 .subfeatures = &[_]*const Feature {3469 .subfeatures = &[_]*const Feature {
3503 &feature_ijmpcall,3470 &feature_ijmpcall,
3504 &feature_sram,3471 &feature_sram,
3505 &feature_avr0,
3506 &feature_lpm,
3507 &feature_addsubiw,3472 &feature_addsubiw,
3473 &feature_lpm,
3474 &feature_avr0,
3508 &feature_avr2,3475 &feature_avr2,
3509 &feature_lpmx,3476 &feature_lpmx,
3510 },3477 },
...@@ -3514,15 +3481,15 @@ pub const cpu_attiny261 = Cpu{...@@ -3514,15 +3481,15 @@ pub const cpu_attiny261 = Cpu{
3514 .name = "attiny261",3481 .name = "attiny261",
3515 .llvm_name = "attiny261",3482 .llvm_name = "attiny261",
3516 .subfeatures = &[_]*const Feature {3483 .subfeatures = &[_]*const Feature {
3484 &feature_spm,
3517 &feature_lpmx,3485 &feature_lpmx,
3518 &feature_ijmpcall,3486 &feature_ijmpcall,
3519 &feature_movw,
3520 &feature_sram,3487 &feature_sram,
3521 &feature_avr0,
3522 &feature_lpm,
3523 &feature_break,
3524 &feature_spm,
3525 &feature_addsubiw,3488 &feature_addsubiw,
3489 &feature_break,
3490 &feature_lpm,
3491 &feature_avr0,
3492 &feature_movw,
3526 &feature_avr25,3493 &feature_avr25,
3527 },3494 },
3528};3495};
...@@ -3531,15 +3498,15 @@ pub const cpu_attiny261a = Cpu{...@@ -3531,15 +3498,15 @@ pub const cpu_attiny261a = Cpu{
3531 .name = "attiny261a",3498 .name = "attiny261a",
3532 .llvm_name = "attiny261a",3499 .llvm_name = "attiny261a",
3533 .subfeatures = &[_]*const Feature {3500 .subfeatures = &[_]*const Feature {
3501 &feature_spm,
3534 &feature_lpmx,3502 &feature_lpmx,
3535 &feature_ijmpcall,3503 &feature_ijmpcall,
3536 &feature_movw,
3537 &feature_sram,3504 &feature_sram,
3538 &feature_avr0,
3539 &feature_lpm,
3540 &feature_break,
3541 &feature_spm,
3542 &feature_addsubiw,3505 &feature_addsubiw,
3506 &feature_break,
3507 &feature_lpm,
3508 &feature_avr0,
3509 &feature_movw,
3543 &feature_avr25,3510 &feature_avr25,
3544 },3511 },
3545};3512};
...@@ -3548,8 +3515,8 @@ pub const cpu_attiny28 = Cpu{...@@ -3548,8 +3515,8 @@ pub const cpu_attiny28 = Cpu{
3548 .name = "attiny28",3515 .name = "attiny28",
3549 .llvm_name = "attiny28",3516 .llvm_name = "attiny28",
3550 .subfeatures = &[_]*const Feature {3517 .subfeatures = &[_]*const Feature {
3551 &feature_avr0,
3552 &feature_lpm,3518 &feature_lpm,
3519 &feature_avr0,
3553 &feature_avr1,3520 &feature_avr1,
3554 },3521 },
3555};3522};
...@@ -3558,10 +3525,10 @@ pub const cpu_attiny4 = Cpu{...@@ -3558,10 +3525,10 @@ pub const cpu_attiny4 = Cpu{
3558 .name = "attiny4",3525 .name = "attiny4",
3559 .llvm_name = "attiny4",3526 .llvm_name = "attiny4",
3560 .subfeatures = &[_]*const Feature {3527 .subfeatures = &[_]*const Feature {
3561 &feature_tinyencoding,3528 &feature_avr0,
3562 &feature_sram,3529 &feature_sram,
3530 &feature_tinyencoding,
3563 &feature_break,3531 &feature_break,
3564 &feature_avr0,
3565 &feature_avrtiny,3532 &feature_avrtiny,
3566 },3533 },
3567};3534};
...@@ -3570,10 +3537,10 @@ pub const cpu_attiny40 = Cpu{...@@ -3570,10 +3537,10 @@ pub const cpu_attiny40 = Cpu{
3570 .name = "attiny40",3537 .name = "attiny40",
3571 .llvm_name = "attiny40",3538 .llvm_name = "attiny40",
3572 .subfeatures = &[_]*const Feature {3539 .subfeatures = &[_]*const Feature {
3573 &feature_tinyencoding,3540 &feature_avr0,
3574 &feature_sram,3541 &feature_sram,
3542 &feature_tinyencoding,
3575 &feature_break,3543 &feature_break,
3576 &feature_avr0,
3577 &feature_avrtiny,3544 &feature_avrtiny,
3578 },3545 },
3579};3546};
...@@ -3582,15 +3549,15 @@ pub const cpu_attiny4313 = Cpu{...@@ -3582,15 +3549,15 @@ pub const cpu_attiny4313 = Cpu{
3582 .name = "attiny4313",3549 .name = "attiny4313",
3583 .llvm_name = "attiny4313",3550 .llvm_name = "attiny4313",
3584 .subfeatures = &[_]*const Feature {3551 .subfeatures = &[_]*const Feature {
3552 &feature_spm,
3585 &feature_lpmx,3553 &feature_lpmx,
3586 &feature_ijmpcall,3554 &feature_ijmpcall,
3587 &feature_movw,
3588 &feature_sram,3555 &feature_sram,
3589 &feature_avr0,
3590 &feature_lpm,
3591 &feature_break,
3592 &feature_spm,
3593 &feature_addsubiw,3556 &feature_addsubiw,
3557 &feature_break,
3558 &feature_lpm,
3559 &feature_avr0,
3560 &feature_movw,
3594 &feature_avr25,3561 &feature_avr25,
3595 },3562 },
3596};3563};
...@@ -3599,15 +3566,15 @@ pub const cpu_attiny43u = Cpu{...@@ -3599,15 +3566,15 @@ pub const cpu_attiny43u = Cpu{
3599 .name = "attiny43u",3566 .name = "attiny43u",
3600 .llvm_name = "attiny43u",3567 .llvm_name = "attiny43u",
3601 .subfeatures = &[_]*const Feature {3568 .subfeatures = &[_]*const Feature {
3569 &feature_spm,
3602 &feature_lpmx,3570 &feature_lpmx,
3603 &feature_ijmpcall,3571 &feature_ijmpcall,
3604 &feature_movw,
3605 &feature_sram,3572 &feature_sram,
3606 &feature_avr0,
3607 &feature_lpm,
3608 &feature_break,
3609 &feature_spm,
3610 &feature_addsubiw,3573 &feature_addsubiw,
3574 &feature_break,
3575 &feature_lpm,
3576 &feature_avr0,
3577 &feature_movw,
3611 &feature_avr25,3578 &feature_avr25,
3612 },3579 },
3613};3580};
...@@ -3616,15 +3583,15 @@ pub const cpu_attiny44 = Cpu{...@@ -3616,15 +3583,15 @@ pub const cpu_attiny44 = Cpu{
3616 .name = "attiny44",3583 .name = "attiny44",
3617 .llvm_name = "attiny44",3584 .llvm_name = "attiny44",
3618 .subfeatures = &[_]*const Feature {3585 .subfeatures = &[_]*const Feature {
3586 &feature_spm,
3619 &feature_lpmx,3587 &feature_lpmx,
3620 &feature_ijmpcall,3588 &feature_ijmpcall,
3621 &feature_movw,
3622 &feature_sram,3589 &feature_sram,
3623 &feature_avr0,
3624 &feature_lpm,
3625 &feature_break,
3626 &feature_spm,
3627 &feature_addsubiw,3590 &feature_addsubiw,
3591 &feature_break,
3592 &feature_lpm,
3593 &feature_avr0,
3594 &feature_movw,
3628 &feature_avr25,3595 &feature_avr25,
3629 },3596 },
3630};3597};
...@@ -3633,15 +3600,15 @@ pub const cpu_attiny44a = Cpu{...@@ -3633,15 +3600,15 @@ pub const cpu_attiny44a = Cpu{
3633 .name = "attiny44a",3600 .name = "attiny44a",
3634 .llvm_name = "attiny44a",3601 .llvm_name = "attiny44a",
3635 .subfeatures = &[_]*const Feature {3602 .subfeatures = &[_]*const Feature {
3603 &feature_spm,
3636 &feature_lpmx,3604 &feature_lpmx,
3637 &feature_ijmpcall,3605 &feature_ijmpcall,
3638 &feature_movw,
3639 &feature_sram,3606 &feature_sram,
3640 &feature_avr0,
3641 &feature_lpm,
3642 &feature_break,
3643 &feature_spm,
3644 &feature_addsubiw,3607 &feature_addsubiw,
3608 &feature_break,
3609 &feature_lpm,
3610 &feature_avr0,
3611 &feature_movw,
3645 &feature_avr25,3612 &feature_avr25,
3646 },3613 },
3647};3614};
...@@ -3650,15 +3617,15 @@ pub const cpu_attiny45 = Cpu{...@@ -3650,15 +3617,15 @@ pub const cpu_attiny45 = Cpu{
3650 .name = "attiny45",3617 .name = "attiny45",
3651 .llvm_name = "attiny45",3618 .llvm_name = "attiny45",
3652 .subfeatures = &[_]*const Feature {3619 .subfeatures = &[_]*const Feature {
3620 &feature_spm,
3653 &feature_lpmx,3621 &feature_lpmx,
3654 &feature_ijmpcall,3622 &feature_ijmpcall,
3655 &feature_movw,
3656 &feature_sram,3623 &feature_sram,
3657 &feature_avr0,
3658 &feature_lpm,
3659 &feature_break,
3660 &feature_spm,
3661 &feature_addsubiw,3624 &feature_addsubiw,
3625 &feature_break,
3626 &feature_lpm,
3627 &feature_avr0,
3628 &feature_movw,
3662 &feature_avr25,3629 &feature_avr25,
3663 },3630 },
3664};3631};
...@@ -3667,15 +3634,15 @@ pub const cpu_attiny461 = Cpu{...@@ -3667,15 +3634,15 @@ pub const cpu_attiny461 = Cpu{
3667 .name = "attiny461",3634 .name = "attiny461",
3668 .llvm_name = "attiny461",3635 .llvm_name = "attiny461",
3669 .subfeatures = &[_]*const Feature {3636 .subfeatures = &[_]*const Feature {
3637 &feature_spm,
3670 &feature_lpmx,3638 &feature_lpmx,
3671 &feature_ijmpcall,3639 &feature_ijmpcall,
3672 &feature_movw,
3673 &feature_sram,3640 &feature_sram,
3674 &feature_avr0,
3675 &feature_lpm,
3676 &feature_break,
3677 &feature_spm,
3678 &feature_addsubiw,3641 &feature_addsubiw,
3642 &feature_break,
3643 &feature_lpm,
3644 &feature_avr0,
3645 &feature_movw,
3679 &feature_avr25,3646 &feature_avr25,
3680 },3647 },
3681};3648};
...@@ -3684,15 +3651,15 @@ pub const cpu_attiny461a = Cpu{...@@ -3684,15 +3651,15 @@ pub const cpu_attiny461a = Cpu{
3684 .name = "attiny461a",3651 .name = "attiny461a",
3685 .llvm_name = "attiny461a",3652 .llvm_name = "attiny461a",
3686 .subfeatures = &[_]*const Feature {3653 .subfeatures = &[_]*const Feature {
3654 &feature_spm,
3687 &feature_lpmx,3655 &feature_lpmx,
3688 &feature_ijmpcall,3656 &feature_ijmpcall,
3689 &feature_movw,
3690 &feature_sram,3657 &feature_sram,
3691 &feature_avr0,
3692 &feature_lpm,
3693 &feature_break,
3694 &feature_spm,
3695 &feature_addsubiw,3658 &feature_addsubiw,
3659 &feature_break,
3660 &feature_lpm,
3661 &feature_avr0,
3662 &feature_movw,
3696 &feature_avr25,3663 &feature_avr25,
3697 },3664 },
3698};3665};
...@@ -3701,15 +3668,15 @@ pub const cpu_attiny48 = Cpu{...@@ -3701,15 +3668,15 @@ pub const cpu_attiny48 = Cpu{
3701 .name = "attiny48",3668 .name = "attiny48",
3702 .llvm_name = "attiny48",3669 .llvm_name = "attiny48",
3703 .subfeatures = &[_]*const Feature {3670 .subfeatures = &[_]*const Feature {
3671 &feature_spm,
3704 &feature_lpmx,3672 &feature_lpmx,
3705 &feature_ijmpcall,3673 &feature_ijmpcall,
3706 &feature_movw,
3707 &feature_sram,3674 &feature_sram,
3708 &feature_avr0,
3709 &feature_lpm,
3710 &feature_break,
3711 &feature_spm,
3712 &feature_addsubiw,3675 &feature_addsubiw,
3676 &feature_break,
3677 &feature_lpm,
3678 &feature_avr0,
3679 &feature_movw,
3713 &feature_avr25,3680 &feature_avr25,
3714 },3681 },
3715};3682};
...@@ -3718,10 +3685,10 @@ pub const cpu_attiny5 = Cpu{...@@ -3718,10 +3685,10 @@ pub const cpu_attiny5 = Cpu{
3718 .name = "attiny5",3685 .name = "attiny5",
3719 .llvm_name = "attiny5",3686 .llvm_name = "attiny5",
3720 .subfeatures = &[_]*const Feature {3687 .subfeatures = &[_]*const Feature {
3721 &feature_tinyencoding,3688 &feature_avr0,
3722 &feature_sram,3689 &feature_sram,
3690 &feature_tinyencoding,
3723 &feature_break,3691 &feature_break,
3724 &feature_avr0,
3725 &feature_avrtiny,3692 &feature_avrtiny,
3726 },3693 },
3727};3694};
...@@ -3730,15 +3697,15 @@ pub const cpu_attiny828 = Cpu{...@@ -3730,15 +3697,15 @@ pub const cpu_attiny828 = Cpu{
3730 .name = "attiny828",3697 .name = "attiny828",
3731 .llvm_name = "attiny828",3698 .llvm_name = "attiny828",
3732 .subfeatures = &[_]*const Feature {3699 .subfeatures = &[_]*const Feature {
3700 &feature_spm,
3733 &feature_lpmx,3701 &feature_lpmx,
3734 &feature_ijmpcall,3702 &feature_ijmpcall,
3735 &feature_movw,
3736 &feature_sram,3703 &feature_sram,
3737 &feature_avr0,
3738 &feature_lpm,
3739 &feature_break,
3740 &feature_spm,
3741 &feature_addsubiw,3704 &feature_addsubiw,
3705 &feature_break,
3706 &feature_lpm,
3707 &feature_avr0,
3708 &feature_movw,
3742 &feature_avr25,3709 &feature_avr25,
3743 },3710 },
3744};3711};
...@@ -3747,15 +3714,15 @@ pub const cpu_attiny84 = Cpu{...@@ -3747,15 +3714,15 @@ pub const cpu_attiny84 = Cpu{
3747 .name = "attiny84",3714 .name = "attiny84",
3748 .llvm_name = "attiny84",3715 .llvm_name = "attiny84",
3749 .subfeatures = &[_]*const Feature {3716 .subfeatures = &[_]*const Feature {
3717 &feature_spm,
3750 &feature_lpmx,3718 &feature_lpmx,
3751 &feature_ijmpcall,3719 &feature_ijmpcall,
3752 &feature_movw,
3753 &feature_sram,3720 &feature_sram,
3754 &feature_avr0,
3755 &feature_lpm,
3756 &feature_break,
3757 &feature_spm,
3758 &feature_addsubiw,3721 &feature_addsubiw,
3722 &feature_break,
3723 &feature_lpm,
3724 &feature_avr0,
3725 &feature_movw,
3759 &feature_avr25,3726 &feature_avr25,
3760 },3727 },
3761};3728};
...@@ -3764,15 +3731,15 @@ pub const cpu_attiny84a = Cpu{...@@ -3764,15 +3731,15 @@ pub const cpu_attiny84a = Cpu{
3764 .name = "attiny84a",3731 .name = "attiny84a",
3765 .llvm_name = "attiny84a",3732 .llvm_name = "attiny84a",
3766 .subfeatures = &[_]*const Feature {3733 .subfeatures = &[_]*const Feature {
3734 &feature_spm,
3767 &feature_lpmx,3735 &feature_lpmx,
3768 &feature_ijmpcall,3736 &feature_ijmpcall,
3769 &feature_movw,
3770 &feature_sram,3737 &feature_sram,
3771 &feature_avr0,
3772 &feature_lpm,
3773 &feature_break,
3774 &feature_spm,
3775 &feature_addsubiw,3738 &feature_addsubiw,
3739 &feature_break,
3740 &feature_lpm,
3741 &feature_avr0,
3742 &feature_movw,
3776 &feature_avr25,3743 &feature_avr25,
3777 },3744 },
3778};3745};
...@@ -3781,15 +3748,15 @@ pub const cpu_attiny85 = Cpu{...@@ -3781,15 +3748,15 @@ pub const cpu_attiny85 = Cpu{
3781 .name = "attiny85",3748 .name = "attiny85",
3782 .llvm_name = "attiny85",3749 .llvm_name = "attiny85",
3783 .subfeatures = &[_]*const Feature {3750 .subfeatures = &[_]*const Feature {
3751 &feature_spm,
3784 &feature_lpmx,3752 &feature_lpmx,
3785 &feature_ijmpcall,3753 &feature_ijmpcall,
3786 &feature_movw,
3787 &feature_sram,3754 &feature_sram,
3788 &feature_avr0,
3789 &feature_lpm,
3790 &feature_break,
3791 &feature_spm,
3792 &feature_addsubiw,3755 &feature_addsubiw,
3756 &feature_break,
3757 &feature_lpm,
3758 &feature_avr0,
3759 &feature_movw,
3793 &feature_avr25,3760 &feature_avr25,
3794 },3761 },
3795};3762};
...@@ -3798,15 +3765,15 @@ pub const cpu_attiny861 = Cpu{...@@ -3798,15 +3765,15 @@ pub const cpu_attiny861 = Cpu{
3798 .name = "attiny861",3765 .name = "attiny861",
3799 .llvm_name = "attiny861",3766 .llvm_name = "attiny861",
3800 .subfeatures = &[_]*const Feature {3767 .subfeatures = &[_]*const Feature {
3768 &feature_spm,
3801 &feature_lpmx,3769 &feature_lpmx,
3802 &feature_ijmpcall,3770 &feature_ijmpcall,
3803 &feature_movw,
3804 &feature_sram,3771 &feature_sram,
3805 &feature_avr0,
3806 &feature_lpm,
3807 &feature_break,
3808 &feature_spm,
3809 &feature_addsubiw,3772 &feature_addsubiw,
3773 &feature_break,
3774 &feature_lpm,
3775 &feature_avr0,
3776 &feature_movw,
3810 &feature_avr25,3777 &feature_avr25,
3811 },3778 },
3812};3779};
...@@ -3815,15 +3782,15 @@ pub const cpu_attiny861a = Cpu{...@@ -3815,15 +3782,15 @@ pub const cpu_attiny861a = Cpu{
3815 .name = "attiny861a",3782 .name = "attiny861a",
3816 .llvm_name = "attiny861a",3783 .llvm_name = "attiny861a",
3817 .subfeatures = &[_]*const Feature {3784 .subfeatures = &[_]*const Feature {
3785 &feature_spm,
3818 &feature_lpmx,3786 &feature_lpmx,
3819 &feature_ijmpcall,3787 &feature_ijmpcall,
3820 &feature_movw,
3821 &feature_sram,3788 &feature_sram,
3822 &feature_avr0,
3823 &feature_lpm,
3824 &feature_break,
3825 &feature_spm,
3826 &feature_addsubiw,3789 &feature_addsubiw,
3790 &feature_break,
3791 &feature_lpm,
3792 &feature_avr0,
3793 &feature_movw,
3827 &feature_avr25,3794 &feature_avr25,
3828 },3795 },
3829};3796};
...@@ -3832,15 +3799,15 @@ pub const cpu_attiny87 = Cpu{...@@ -3832,15 +3799,15 @@ pub const cpu_attiny87 = Cpu{
3832 .name = "attiny87",3799 .name = "attiny87",
3833 .llvm_name = "attiny87",3800 .llvm_name = "attiny87",
3834 .subfeatures = &[_]*const Feature {3801 .subfeatures = &[_]*const Feature {
3802 &feature_spm,
3835 &feature_lpmx,3803 &feature_lpmx,
3836 &feature_ijmpcall,3804 &feature_ijmpcall,
3837 &feature_movw,
3838 &feature_sram,3805 &feature_sram,
3839 &feature_avr0,
3840 &feature_lpm,
3841 &feature_break,
3842 &feature_spm,
3843 &feature_addsubiw,3806 &feature_addsubiw,
3807 &feature_break,
3808 &feature_lpm,
3809 &feature_avr0,
3810 &feature_movw,
3844 &feature_avr25,3811 &feature_avr25,
3845 },3812 },
3846};3813};
...@@ -3849,15 +3816,15 @@ pub const cpu_attiny88 = Cpu{...@@ -3849,15 +3816,15 @@ pub const cpu_attiny88 = Cpu{
3849 .name = "attiny88",3816 .name = "attiny88",
3850 .llvm_name = "attiny88",3817 .llvm_name = "attiny88",
3851 .subfeatures = &[_]*const Feature {3818 .subfeatures = &[_]*const Feature {
3819 &feature_spm,
3852 &feature_lpmx,3820 &feature_lpmx,
3853 &feature_ijmpcall,3821 &feature_ijmpcall,
3854 &feature_movw,
3855 &feature_sram,3822 &feature_sram,
3856 &feature_avr0,
3857 &feature_lpm,
3858 &feature_break,
3859 &feature_spm,
3860 &feature_addsubiw,3823 &feature_addsubiw,
3824 &feature_break,
3825 &feature_lpm,
3826 &feature_avr0,
3827 &feature_movw,
3861 &feature_avr25,3828 &feature_avr25,
3862 },3829 },
3863};3830};
...@@ -3866,10 +3833,10 @@ pub const cpu_attiny9 = Cpu{...@@ -3866,10 +3833,10 @@ pub const cpu_attiny9 = Cpu{
3866 .name = "attiny9",3833 .name = "attiny9",
3867 .llvm_name = "attiny9",3834 .llvm_name = "attiny9",
3868 .subfeatures = &[_]*const Feature {3835 .subfeatures = &[_]*const Feature {
3869 &feature_tinyencoding,3836 &feature_avr0,
3870 &feature_sram,3837 &feature_sram,
3838 &feature_tinyencoding,
3871 &feature_break,3839 &feature_break,
3872 &feature_avr0,
3873 &feature_avrtiny,3840 &feature_avrtiny,
3874 },3841 },
3875};3842};
...@@ -3878,22 +3845,22 @@ pub const cpu_atxmega128a1 = Cpu{...@@ -3878,22 +3845,22 @@ pub const cpu_atxmega128a1 = Cpu{
3878 .name = "atxmega128a1",3845 .name = "atxmega128a1",
3879 .llvm_name = "atxmega128a1",3846 .llvm_name = "atxmega128a1",
3880 .subfeatures = &[_]*const Feature {3847 .subfeatures = &[_]*const Feature {
3848 &feature_spm,
3881 &feature_lpmx,3849 &feature_lpmx,
3882 &feature_jmpcall,3850 &feature_des,
3883 &feature_ijmpcall,3851 &feature_ijmpcall,
3884 &feature_movw,3852 &feature_jmpcall,
3885 &feature_sram,3853 &feature_sram,
3886 &feature_mul,3854 &feature_addsubiw,
3887 &feature_avr0,3855 &feature_elpm,
3888 &feature_spmx,
3889 &feature_lpm,
3890 &feature_eijmpcall,3856 &feature_eijmpcall,
3857 &feature_mul,
3891 &feature_break,3858 &feature_break,
3892 &feature_spm,3859 &feature_lpm,
3893 &feature_elpmx,3860 &feature_elpmx,
3894 &feature_elpm,3861 &feature_avr0,
3895 &feature_addsubiw,3862 &feature_movw,
3896 &feature_des,3863 &feature_spmx,
3897 &feature_xmega,3864 &feature_xmega,
3898 },3865 },
3899};3866};
...@@ -3902,23 +3869,23 @@ pub const cpu_atxmega128a1u = Cpu{...@@ -3902,23 +3869,23 @@ pub const cpu_atxmega128a1u = Cpu{
3902 .name = "atxmega128a1u",3869 .name = "atxmega128a1u",
3903 .llvm_name = "atxmega128a1u",3870 .llvm_name = "atxmega128a1u",
3904 .subfeatures = &[_]*const Feature {3871 .subfeatures = &[_]*const Feature {
3872 &feature_spm,
3905 &feature_lpmx,3873 &feature_lpmx,
3874 &feature_des,
3906 &feature_ijmpcall,3875 &feature_ijmpcall,
3907 &feature_jmpcall,3876 &feature_jmpcall,
3908 &feature_movw,
3909 &feature_sram,3877 &feature_sram,
3910 &feature_mul,
3911 &feature_avr0,
3912 &feature_spmx,
3913 &feature_lpm,
3914 &feature_rmw,3878 &feature_rmw,
3879 &feature_addsubiw,
3880 &feature_elpm,
3915 &feature_eijmpcall,3881 &feature_eijmpcall,
3882 &feature_mul,
3916 &feature_break,3883 &feature_break,
3917 &feature_spm,3884 &feature_lpm,
3918 &feature_elpmx,3885 &feature_elpmx,
3919 &feature_elpm,3886 &feature_avr0,
3920 &feature_addsubiw,3887 &feature_movw,
3921 &feature_des,3888 &feature_spmx,
3922 &feature_xmegau,3889 &feature_xmegau,
3923 },3890 },
3924};3891};
...@@ -3927,22 +3894,22 @@ pub const cpu_atxmega128a3 = Cpu{...@@ -3927,22 +3894,22 @@ pub const cpu_atxmega128a3 = Cpu{
3927 .name = "atxmega128a3",3894 .name = "atxmega128a3",
3928 .llvm_name = "atxmega128a3",3895 .llvm_name = "atxmega128a3",
3929 .subfeatures = &[_]*const Feature {3896 .subfeatures = &[_]*const Feature {
3897 &feature_spm,
3930 &feature_lpmx,3898 &feature_lpmx,
3931 &feature_jmpcall,3899 &feature_des,
3932 &feature_ijmpcall,3900 &feature_ijmpcall,
3933 &feature_movw,3901 &feature_jmpcall,
3934 &feature_sram,3902 &feature_sram,
3935 &feature_mul,3903 &feature_addsubiw,
3936 &feature_avr0,3904 &feature_elpm,
3937 &feature_spmx,
3938 &feature_lpm,
3939 &feature_eijmpcall,3905 &feature_eijmpcall,
3906 &feature_mul,
3940 &feature_break,3907 &feature_break,
3941 &feature_spm,3908 &feature_lpm,
3942 &feature_elpmx,3909 &feature_elpmx,
3943 &feature_elpm,3910 &feature_avr0,
3944 &feature_addsubiw,3911 &feature_movw,
3945 &feature_des,3912 &feature_spmx,
3946 &feature_xmega,3913 &feature_xmega,
3947 },3914 },
3948};3915};
...@@ -3951,23 +3918,23 @@ pub const cpu_atxmega128a3u = Cpu{...@@ -3951,23 +3918,23 @@ pub const cpu_atxmega128a3u = Cpu{
3951 .name = "atxmega128a3u",3918 .name = "atxmega128a3u",
3952 .llvm_name = "atxmega128a3u",3919 .llvm_name = "atxmega128a3u",
3953 .subfeatures = &[_]*const Feature {3920 .subfeatures = &[_]*const Feature {
3921 &feature_spm,
3954 &feature_lpmx,3922 &feature_lpmx,
3923 &feature_des,
3955 &feature_ijmpcall,3924 &feature_ijmpcall,
3956 &feature_jmpcall,3925 &feature_jmpcall,
3957 &feature_movw,
3958 &feature_sram,3926 &feature_sram,
3959 &feature_mul,
3960 &feature_avr0,
3961 &feature_spmx,
3962 &feature_lpm,
3963 &feature_rmw,3927 &feature_rmw,
3928 &feature_addsubiw,
3929 &feature_elpm,
3964 &feature_eijmpcall,3930 &feature_eijmpcall,
3931 &feature_mul,
3965 &feature_break,3932 &feature_break,
3966 &feature_spm,3933 &feature_lpm,
3967 &feature_elpmx,3934 &feature_elpmx,
3968 &feature_elpm,3935 &feature_avr0,
3969 &feature_addsubiw,3936 &feature_movw,
3970 &feature_des,3937 &feature_spmx,
3971 &feature_xmegau,3938 &feature_xmegau,
3972 },3939 },
3973};3940};
...@@ -3976,23 +3943,23 @@ pub const cpu_atxmega128a4u = Cpu{...@@ -3976,23 +3943,23 @@ pub const cpu_atxmega128a4u = Cpu{
3976 .name = "atxmega128a4u",3943 .name = "atxmega128a4u",
3977 .llvm_name = "atxmega128a4u",3944 .llvm_name = "atxmega128a4u",
3978 .subfeatures = &[_]*const Feature {3945 .subfeatures = &[_]*const Feature {
3946 &feature_spm,
3979 &feature_lpmx,3947 &feature_lpmx,
3948 &feature_des,
3980 &feature_ijmpcall,3949 &feature_ijmpcall,
3981 &feature_jmpcall,3950 &feature_jmpcall,
3982 &feature_movw,
3983 &feature_sram,3951 &feature_sram,
3984 &feature_mul,
3985 &feature_avr0,
3986 &feature_spmx,
3987 &feature_lpm,
3988 &feature_rmw,3952 &feature_rmw,
3953 &feature_addsubiw,
3954 &feature_elpm,
3989 &feature_eijmpcall,3955 &feature_eijmpcall,
3956 &feature_mul,
3990 &feature_break,3957 &feature_break,
3991 &feature_spm,3958 &feature_lpm,
3992 &feature_elpmx,3959 &feature_elpmx,
3993 &feature_elpm,3960 &feature_avr0,
3994 &feature_addsubiw,3961 &feature_movw,
3995 &feature_des,3962 &feature_spmx,
3996 &feature_xmegau,3963 &feature_xmegau,
3997 },3964 },
3998};3965};
...@@ -4001,23 +3968,23 @@ pub const cpu_atxmega128b1 = Cpu{...@@ -4001,23 +3968,23 @@ pub const cpu_atxmega128b1 = Cpu{
4001 .name = "atxmega128b1",3968 .name = "atxmega128b1",
4002 .llvm_name = "atxmega128b1",3969 .llvm_name = "atxmega128b1",
4003 .subfeatures = &[_]*const Feature {3970 .subfeatures = &[_]*const Feature {
3971 &feature_spm,
4004 &feature_lpmx,3972 &feature_lpmx,
3973 &feature_des,
4005 &feature_ijmpcall,3974 &feature_ijmpcall,
4006 &feature_jmpcall,3975 &feature_jmpcall,
4007 &feature_movw,
4008 &feature_sram,3976 &feature_sram,
4009 &feature_mul,
4010 &feature_avr0,
4011 &feature_spmx,
4012 &feature_lpm,
4013 &feature_rmw,3977 &feature_rmw,
3978 &feature_addsubiw,
3979 &feature_elpm,
4014 &feature_eijmpcall,3980 &feature_eijmpcall,
3981 &feature_mul,
4015 &feature_break,3982 &feature_break,
4016 &feature_spm,3983 &feature_lpm,
4017 &feature_elpmx,3984 &feature_elpmx,
4018 &feature_elpm,3985 &feature_avr0,
4019 &feature_addsubiw,3986 &feature_movw,
4020 &feature_des,3987 &feature_spmx,
4021 &feature_xmegau,3988 &feature_xmegau,
4022 },3989 },
4023};3990};
...@@ -4026,23 +3993,23 @@ pub const cpu_atxmega128b3 = Cpu{...@@ -4026,23 +3993,23 @@ pub const cpu_atxmega128b3 = Cpu{
4026 .name = "atxmega128b3",3993 .name = "atxmega128b3",
4027 .llvm_name = "atxmega128b3",3994 .llvm_name = "atxmega128b3",
4028 .subfeatures = &[_]*const Feature {3995 .subfeatures = &[_]*const Feature {
3996 &feature_spm,
4029 &feature_lpmx,3997 &feature_lpmx,
3998 &feature_des,
4030 &feature_ijmpcall,3999 &feature_ijmpcall,
4031 &feature_jmpcall,4000 &feature_jmpcall,
4032 &feature_movw,
4033 &feature_sram,4001 &feature_sram,
4034 &feature_mul,
4035 &feature_avr0,
4036 &feature_spmx,
4037 &feature_lpm,
4038 &feature_rmw,4002 &feature_rmw,
4003 &feature_addsubiw,
4004 &feature_elpm,
4039 &feature_eijmpcall,4005 &feature_eijmpcall,
4006 &feature_mul,
4040 &feature_break,4007 &feature_break,
4041 &feature_spm,4008 &feature_lpm,
4042 &feature_elpmx,4009 &feature_elpmx,
4043 &feature_elpm,4010 &feature_avr0,
4044 &feature_addsubiw,4011 &feature_movw,
4045 &feature_des,4012 &feature_spmx,
4046 &feature_xmegau,4013 &feature_xmegau,
4047 },4014 },
4048};4015};
...@@ -4051,23 +4018,23 @@ pub const cpu_atxmega128c3 = Cpu{...@@ -4051,23 +4018,23 @@ pub const cpu_atxmega128c3 = Cpu{
4051 .name = "atxmega128c3",4018 .name = "atxmega128c3",
4052 .llvm_name = "atxmega128c3",4019 .llvm_name = "atxmega128c3",
4053 .subfeatures = &[_]*const Feature {4020 .subfeatures = &[_]*const Feature {
4021 &feature_spm,
4054 &feature_lpmx,4022 &feature_lpmx,
4023 &feature_des,
4055 &feature_ijmpcall,4024 &feature_ijmpcall,
4056 &feature_jmpcall,4025 &feature_jmpcall,
4057 &feature_movw,
4058 &feature_sram,4026 &feature_sram,
4059 &feature_mul,
4060 &feature_avr0,
4061 &feature_spmx,
4062 &feature_lpm,
4063 &feature_rmw,4027 &feature_rmw,
4028 &feature_addsubiw,
4029 &feature_elpm,
4064 &feature_eijmpcall,4030 &feature_eijmpcall,
4031 &feature_mul,
4065 &feature_break,4032 &feature_break,
4066 &feature_spm,4033 &feature_lpm,
4067 &feature_elpmx,4034 &feature_elpmx,
4068 &feature_elpm,4035 &feature_avr0,
4069 &feature_addsubiw,4036 &feature_movw,
4070 &feature_des,4037 &feature_spmx,
4071 &feature_xmegau,4038 &feature_xmegau,
4072 },4039 },
4073};4040};
...@@ -4076,22 +4043,22 @@ pub const cpu_atxmega128d3 = Cpu{...@@ -4076,22 +4043,22 @@ pub const cpu_atxmega128d3 = Cpu{
4076 .name = "atxmega128d3",4043 .name = "atxmega128d3",
4077 .llvm_name = "atxmega128d3",4044 .llvm_name = "atxmega128d3",
4078 .subfeatures = &[_]*const Feature {4045 .subfeatures = &[_]*const Feature {
4046 &feature_spm,
4079 &feature_lpmx,4047 &feature_lpmx,
4080 &feature_jmpcall,4048 &feature_des,
4081 &feature_ijmpcall,4049 &feature_ijmpcall,
4082 &feature_movw,4050 &feature_jmpcall,
4083 &feature_sram,4051 &feature_sram,
4084 &feature_mul,4052 &feature_addsubiw,
4085 &feature_avr0,4053 &feature_elpm,
4086 &feature_spmx,
4087 &feature_lpm,
4088 &feature_eijmpcall,4054 &feature_eijmpcall,
4055 &feature_mul,
4089 &feature_break,4056 &feature_break,
4090 &feature_spm,4057 &feature_lpm,
4091 &feature_elpmx,4058 &feature_elpmx,
4092 &feature_elpm,4059 &feature_avr0,
4093 &feature_addsubiw,4060 &feature_movw,
4094 &feature_des,4061 &feature_spmx,
4095 &feature_xmega,4062 &feature_xmega,
4096 },4063 },
4097};4064};
...@@ -4100,22 +4067,22 @@ pub const cpu_atxmega128d4 = Cpu{...@@ -4100,22 +4067,22 @@ pub const cpu_atxmega128d4 = Cpu{
4100 .name = "atxmega128d4",4067 .name = "atxmega128d4",
4101 .llvm_name = "atxmega128d4",4068 .llvm_name = "atxmega128d4",
4102 .subfeatures = &[_]*const Feature {4069 .subfeatures = &[_]*const Feature {
4070 &feature_spm,
4103 &feature_lpmx,4071 &feature_lpmx,
4104 &feature_jmpcall,4072 &feature_des,
4105 &feature_ijmpcall,4073 &feature_ijmpcall,
4106 &feature_movw,4074 &feature_jmpcall,
4107 &feature_sram,4075 &feature_sram,
4108 &feature_mul,4076 &feature_addsubiw,
4109 &feature_avr0,4077 &feature_elpm,
4110 &feature_spmx,
4111 &feature_lpm,
4112 &feature_eijmpcall,4078 &feature_eijmpcall,
4079 &feature_mul,
4113 &feature_break,4080 &feature_break,
4114 &feature_spm,4081 &feature_lpm,
4115 &feature_elpmx,4082 &feature_elpmx,
4116 &feature_elpm,4083 &feature_avr0,
4117 &feature_addsubiw,4084 &feature_movw,
4118 &feature_des,4085 &feature_spmx,
4119 &feature_xmega,4086 &feature_xmega,
4120 },4087 },
4121};4088};
...@@ -4124,22 +4091,22 @@ pub const cpu_atxmega16a4 = Cpu{...@@ -4124,22 +4091,22 @@ pub const cpu_atxmega16a4 = Cpu{
4124 .name = "atxmega16a4",4091 .name = "atxmega16a4",
4125 .llvm_name = "atxmega16a4",4092 .llvm_name = "atxmega16a4",
4126 .subfeatures = &[_]*const Feature {4093 .subfeatures = &[_]*const Feature {
4094 &feature_spm,
4127 &feature_lpmx,4095 &feature_lpmx,
4128 &feature_jmpcall,4096 &feature_des,
4129 &feature_ijmpcall,4097 &feature_ijmpcall,
4130 &feature_movw,4098 &feature_jmpcall,
4131 &feature_sram,4099 &feature_sram,
4132 &feature_mul,4100 &feature_addsubiw,
4133 &feature_avr0,4101 &feature_elpm,
4134 &feature_spmx,
4135 &feature_lpm,
4136 &feature_eijmpcall,4102 &feature_eijmpcall,
4103 &feature_mul,
4137 &feature_break,4104 &feature_break,
4138 &feature_spm,4105 &feature_lpm,
4139 &feature_elpmx,4106 &feature_elpmx,
4140 &feature_elpm,4107 &feature_avr0,
4141 &feature_addsubiw,4108 &feature_movw,
4142 &feature_des,4109 &feature_spmx,
4143 &feature_xmega,4110 &feature_xmega,
4144 },4111 },
4145};4112};
...@@ -4148,23 +4115,23 @@ pub const cpu_atxmega16a4u = Cpu{...@@ -4148,23 +4115,23 @@ pub const cpu_atxmega16a4u = Cpu{
4148 .name = "atxmega16a4u",4115 .name = "atxmega16a4u",
4149 .llvm_name = "atxmega16a4u",4116 .llvm_name = "atxmega16a4u",
4150 .subfeatures = &[_]*const Feature {4117 .subfeatures = &[_]*const Feature {
4118 &feature_spm,
4151 &feature_lpmx,4119 &feature_lpmx,
4120 &feature_des,
4152 &feature_ijmpcall,4121 &feature_ijmpcall,
4153 &feature_jmpcall,4122 &feature_jmpcall,
4154 &feature_movw,
4155 &feature_sram,4123 &feature_sram,
4156 &feature_mul,
4157 &feature_avr0,
4158 &feature_spmx,
4159 &feature_lpm,
4160 &feature_rmw,4124 &feature_rmw,
4125 &feature_addsubiw,
4126 &feature_elpm,
4161 &feature_eijmpcall,4127 &feature_eijmpcall,
4128 &feature_mul,
4162 &feature_break,4129 &feature_break,
4163 &feature_spm,4130 &feature_lpm,
4164 &feature_elpmx,4131 &feature_elpmx,
4165 &feature_elpm,4132 &feature_avr0,
4166 &feature_addsubiw,4133 &feature_movw,
4167 &feature_des,4134 &feature_spmx,
4168 &feature_xmegau,4135 &feature_xmegau,
4169 },4136 },
4170};4137};
...@@ -4173,23 +4140,23 @@ pub const cpu_atxmega16c4 = Cpu{...@@ -4173,23 +4140,23 @@ pub const cpu_atxmega16c4 = Cpu{
4173 .name = "atxmega16c4",4140 .name = "atxmega16c4",
4174 .llvm_name = "atxmega16c4",4141 .llvm_name = "atxmega16c4",
4175 .subfeatures = &[_]*const Feature {4142 .subfeatures = &[_]*const Feature {
4143 &feature_spm,
4176 &feature_lpmx,4144 &feature_lpmx,
4145 &feature_des,
4177 &feature_ijmpcall,4146 &feature_ijmpcall,
4178 &feature_jmpcall,4147 &feature_jmpcall,
4179 &feature_movw,
4180 &feature_sram,4148 &feature_sram,
4181 &feature_mul,
4182 &feature_avr0,
4183 &feature_spmx,
4184 &feature_lpm,
4185 &feature_rmw,4149 &feature_rmw,
4150 &feature_addsubiw,
4151 &feature_elpm,
4186 &feature_eijmpcall,4152 &feature_eijmpcall,
4153 &feature_mul,
4187 &feature_break,4154 &feature_break,
4188 &feature_spm,4155 &feature_lpm,
4189 &feature_elpmx,4156 &feature_elpmx,
4190 &feature_elpm,4157 &feature_avr0,
4191 &feature_addsubiw,4158 &feature_movw,
4192 &feature_des,4159 &feature_spmx,
4193 &feature_xmegau,4160 &feature_xmegau,
4194 },4161 },
4195};4162};
...@@ -4198,22 +4165,22 @@ pub const cpu_atxmega16d4 = Cpu{...@@ -4198,22 +4165,22 @@ pub const cpu_atxmega16d4 = Cpu{
4198 .name = "atxmega16d4",4165 .name = "atxmega16d4",
4199 .llvm_name = "atxmega16d4",4166 .llvm_name = "atxmega16d4",
4200 .subfeatures = &[_]*const Feature {4167 .subfeatures = &[_]*const Feature {
4168 &feature_spm,
4201 &feature_lpmx,4169 &feature_lpmx,
4202 &feature_jmpcall,4170 &feature_des,
4203 &feature_ijmpcall,4171 &feature_ijmpcall,
4204 &feature_movw,4172 &feature_jmpcall,
4205 &feature_sram,4173 &feature_sram,
4206 &feature_mul,4174 &feature_addsubiw,
4207 &feature_avr0,4175 &feature_elpm,
4208 &feature_spmx,
4209 &feature_lpm,
4210 &feature_eijmpcall,4176 &feature_eijmpcall,
4177 &feature_mul,
4211 &feature_break,4178 &feature_break,
4212 &feature_spm,4179 &feature_lpm,
4213 &feature_elpmx,4180 &feature_elpmx,
4214 &feature_elpm,4181 &feature_avr0,
4215 &feature_addsubiw,4182 &feature_movw,
4216 &feature_des,4183 &feature_spmx,
4217 &feature_xmega,4184 &feature_xmega,
4218 },4185 },
4219};4186};
...@@ -4222,22 +4189,22 @@ pub const cpu_atxmega16e5 = Cpu{...@@ -4222,22 +4189,22 @@ pub const cpu_atxmega16e5 = Cpu{
4222 .name = "atxmega16e5",4189 .name = "atxmega16e5",
4223 .llvm_name = "atxmega16e5",4190 .llvm_name = "atxmega16e5",
4224 .subfeatures = &[_]*const Feature {4191 .subfeatures = &[_]*const Feature {
4192 &feature_spm,
4225 &feature_lpmx,4193 &feature_lpmx,
4226 &feature_jmpcall,4194 &feature_des,
4227 &feature_ijmpcall,4195 &feature_ijmpcall,
4228 &feature_movw,4196 &feature_jmpcall,
4229 &feature_sram,4197 &feature_sram,
4230 &feature_mul,4198 &feature_addsubiw,
4231 &feature_avr0,4199 &feature_elpm,
4232 &feature_spmx,
4233 &feature_lpm,
4234 &feature_eijmpcall,4200 &feature_eijmpcall,
4201 &feature_mul,
4235 &feature_break,4202 &feature_break,
4236 &feature_spm,4203 &feature_lpm,
4237 &feature_elpmx,4204 &feature_elpmx,
4238 &feature_elpm,4205 &feature_avr0,
4239 &feature_addsubiw,4206 &feature_movw,
4240 &feature_des,4207 &feature_spmx,
4241 &feature_xmega,4208 &feature_xmega,
4242 },4209 },
4243};4210};
...@@ -4246,22 +4213,22 @@ pub const cpu_atxmega192a3 = Cpu{...@@ -4246,22 +4213,22 @@ pub const cpu_atxmega192a3 = Cpu{
4246 .name = "atxmega192a3",4213 .name = "atxmega192a3",
4247 .llvm_name = "atxmega192a3",4214 .llvm_name = "atxmega192a3",
4248 .subfeatures = &[_]*const Feature {4215 .subfeatures = &[_]*const Feature {
4216 &feature_spm,
4249 &feature_lpmx,4217 &feature_lpmx,
4250 &feature_jmpcall,4218 &feature_des,
4251 &feature_ijmpcall,4219 &feature_ijmpcall,
4252 &feature_movw,4220 &feature_jmpcall,
4253 &feature_sram,4221 &feature_sram,
4254 &feature_mul,4222 &feature_addsubiw,
4255 &feature_avr0,4223 &feature_elpm,
4256 &feature_spmx,
4257 &feature_lpm,
4258 &feature_eijmpcall,4224 &feature_eijmpcall,
4225 &feature_mul,
4259 &feature_break,4226 &feature_break,
4260 &feature_spm,4227 &feature_lpm,
4261 &feature_elpmx,4228 &feature_elpmx,
4262 &feature_elpm,4229 &feature_avr0,
4263 &feature_addsubiw,4230 &feature_movw,
4264 &feature_des,4231 &feature_spmx,
4265 &feature_xmega,4232 &feature_xmega,
4266 },4233 },
4267};4234};
...@@ -4270,23 +4237,23 @@ pub const cpu_atxmega192a3u = Cpu{...@@ -4270,23 +4237,23 @@ pub const cpu_atxmega192a3u = Cpu{
4270 .name = "atxmega192a3u",4237 .name = "atxmega192a3u",
4271 .llvm_name = "atxmega192a3u",4238 .llvm_name = "atxmega192a3u",
4272 .subfeatures = &[_]*const Feature {4239 .subfeatures = &[_]*const Feature {
4240 &feature_spm,
4273 &feature_lpmx,4241 &feature_lpmx,
4242 &feature_des,
4274 &feature_ijmpcall,4243 &feature_ijmpcall,
4275 &feature_jmpcall,4244 &feature_jmpcall,
4276 &feature_movw,
4277 &feature_sram,4245 &feature_sram,
4278 &feature_mul,
4279 &feature_avr0,
4280 &feature_spmx,
4281 &feature_lpm,
4282 &feature_rmw,4246 &feature_rmw,
4247 &feature_addsubiw,
4248 &feature_elpm,
4283 &feature_eijmpcall,4249 &feature_eijmpcall,
4250 &feature_mul,
4284 &feature_break,4251 &feature_break,
4285 &feature_spm,4252 &feature_lpm,
4286 &feature_elpmx,4253 &feature_elpmx,
4287 &feature_elpm,4254 &feature_avr0,
4288 &feature_addsubiw,4255 &feature_movw,
4289 &feature_des,4256 &feature_spmx,
4290 &feature_xmegau,4257 &feature_xmegau,
4291 },4258 },
4292};4259};
...@@ -4295,23 +4262,23 @@ pub const cpu_atxmega192c3 = Cpu{...@@ -4295,23 +4262,23 @@ pub const cpu_atxmega192c3 = Cpu{
4295 .name = "atxmega192c3",4262 .name = "atxmega192c3",
4296 .llvm_name = "atxmega192c3",4263 .llvm_name = "atxmega192c3",
4297 .subfeatures = &[_]*const Feature {4264 .subfeatures = &[_]*const Feature {
4265 &feature_spm,
4298 &feature_lpmx,4266 &feature_lpmx,
4267 &feature_des,
4299 &feature_ijmpcall,4268 &feature_ijmpcall,
4300 &feature_jmpcall,4269 &feature_jmpcall,
4301 &feature_movw,
4302 &feature_sram,4270 &feature_sram,
4303 &feature_mul,
4304 &feature_avr0,
4305 &feature_spmx,
4306 &feature_lpm,
4307 &feature_rmw,4271 &feature_rmw,
4272 &feature_addsubiw,
4273 &feature_elpm,
4308 &feature_eijmpcall,4274 &feature_eijmpcall,
4275 &feature_mul,
4309 &feature_break,4276 &feature_break,
4310 &feature_spm,4277 &feature_lpm,
4311 &feature_elpmx,4278 &feature_elpmx,
4312 &feature_elpm,4279 &feature_avr0,
4313 &feature_addsubiw,4280 &feature_movw,
4314 &feature_des,4281 &feature_spmx,
4315 &feature_xmegau,4282 &feature_xmegau,
4316 },4283 },
4317};4284};
...@@ -4320,22 +4287,22 @@ pub const cpu_atxmega192d3 = Cpu{...@@ -4320,22 +4287,22 @@ pub const cpu_atxmega192d3 = Cpu{
4320 .name = "atxmega192d3",4287 .name = "atxmega192d3",
4321 .llvm_name = "atxmega192d3",4288 .llvm_name = "atxmega192d3",
4322 .subfeatures = &[_]*const Feature {4289 .subfeatures = &[_]*const Feature {
4290 &feature_spm,
4323 &feature_lpmx,4291 &feature_lpmx,
4324 &feature_jmpcall,4292 &feature_des,
4325 &feature_ijmpcall,4293 &feature_ijmpcall,
4326 &feature_movw,4294 &feature_jmpcall,
4327 &feature_sram,4295 &feature_sram,
4328 &feature_mul,4296 &feature_addsubiw,
4329 &feature_avr0,4297 &feature_elpm,
4330 &feature_spmx,
4331 &feature_lpm,
4332 &feature_eijmpcall,4298 &feature_eijmpcall,
4299 &feature_mul,
4333 &feature_break,4300 &feature_break,
4334 &feature_spm,4301 &feature_lpm,
4335 &feature_elpmx,4302 &feature_elpmx,
4336 &feature_elpm,4303 &feature_avr0,
4337 &feature_addsubiw,4304 &feature_movw,
4338 &feature_des,4305 &feature_spmx,
4339 &feature_xmega,4306 &feature_xmega,
4340 },4307 },
4341};4308};
...@@ -4344,22 +4311,22 @@ pub const cpu_atxmega256a3 = Cpu{...@@ -4344,22 +4311,22 @@ pub const cpu_atxmega256a3 = Cpu{
4344 .name = "atxmega256a3",4311 .name = "atxmega256a3",
4345 .llvm_name = "atxmega256a3",4312 .llvm_name = "atxmega256a3",
4346 .subfeatures = &[_]*const Feature {4313 .subfeatures = &[_]*const Feature {
4314 &feature_spm,
4347 &feature_lpmx,4315 &feature_lpmx,
4348 &feature_jmpcall,4316 &feature_des,
4349 &feature_ijmpcall,4317 &feature_ijmpcall,
4350 &feature_movw,4318 &feature_jmpcall,
4351 &feature_sram,4319 &feature_sram,
4352 &feature_mul,4320 &feature_addsubiw,
4353 &feature_avr0,4321 &feature_elpm,
4354 &feature_spmx,
4355 &feature_lpm,
4356 &feature_eijmpcall,4322 &feature_eijmpcall,
4323 &feature_mul,
4357 &feature_break,4324 &feature_break,
4358 &feature_spm,4325 &feature_lpm,
4359 &feature_elpmx,4326 &feature_elpmx,
4360 &feature_elpm,4327 &feature_avr0,
4361 &feature_addsubiw,4328 &feature_movw,
4362 &feature_des,4329 &feature_spmx,
4363 &feature_xmega,4330 &feature_xmega,
4364 },4331 },
4365};4332};
...@@ -4368,22 +4335,22 @@ pub const cpu_atxmega256a3b = Cpu{...@@ -4368,22 +4335,22 @@ pub const cpu_atxmega256a3b = Cpu{
4368 .name = "atxmega256a3b",4335 .name = "atxmega256a3b",
4369 .llvm_name = "atxmega256a3b",4336 .llvm_name = "atxmega256a3b",
4370 .subfeatures = &[_]*const Feature {4337 .subfeatures = &[_]*const Feature {
4338 &feature_spm,
4371 &feature_lpmx,4339 &feature_lpmx,
4372 &feature_jmpcall,4340 &feature_des,
4373 &feature_ijmpcall,4341 &feature_ijmpcall,
4374 &feature_movw,4342 &feature_jmpcall,
4375 &feature_sram,4343 &feature_sram,
4376 &feature_mul,4344 &feature_addsubiw,
4377 &feature_avr0,4345 &feature_elpm,
4378 &feature_spmx,
4379 &feature_lpm,
4380 &feature_eijmpcall,4346 &feature_eijmpcall,
4347 &feature_mul,
4381 &feature_break,4348 &feature_break,
4382 &feature_spm,4349 &feature_lpm,
4383 &feature_elpmx,4350 &feature_elpmx,
4384 &feature_elpm,4351 &feature_avr0,
4385 &feature_addsubiw,4352 &feature_movw,
4386 &feature_des,4353 &feature_spmx,
4387 &feature_xmega,4354 &feature_xmega,
4388 },4355 },
4389};4356};
...@@ -4392,23 +4359,23 @@ pub const cpu_atxmega256a3bu = Cpu{...@@ -4392,23 +4359,23 @@ pub const cpu_atxmega256a3bu = Cpu{
4392 .name = "atxmega256a3bu",4359 .name = "atxmega256a3bu",
4393 .llvm_name = "atxmega256a3bu",4360 .llvm_name = "atxmega256a3bu",
4394 .subfeatures = &[_]*const Feature {4361 .subfeatures = &[_]*const Feature {
4362 &feature_spm,
4395 &feature_lpmx,4363 &feature_lpmx,
4364 &feature_des,
4396 &feature_ijmpcall,4365 &feature_ijmpcall,
4397 &feature_jmpcall,4366 &feature_jmpcall,
4398 &feature_movw,
4399 &feature_sram,4367 &feature_sram,
4400 &feature_mul,
4401 &feature_avr0,
4402 &feature_spmx,
4403 &feature_lpm,
4404 &feature_rmw,4368 &feature_rmw,
4369 &feature_addsubiw,
4370 &feature_elpm,
4405 &feature_eijmpcall,4371 &feature_eijmpcall,
4372 &feature_mul,
4406 &feature_break,4373 &feature_break,
4407 &feature_spm,4374 &feature_lpm,
4408 &feature_elpmx,4375 &feature_elpmx,
4409 &feature_elpm,4376 &feature_avr0,
4410 &feature_addsubiw,4377 &feature_movw,
4411 &feature_des,4378 &feature_spmx,
4412 &feature_xmegau,4379 &feature_xmegau,
4413 },4380 },
4414};4381};
...@@ -4417,23 +4384,23 @@ pub const cpu_atxmega256a3u = Cpu{...@@ -4417,23 +4384,23 @@ pub const cpu_atxmega256a3u = Cpu{
4417 .name = "atxmega256a3u",4384 .name = "atxmega256a3u",
4418 .llvm_name = "atxmega256a3u",4385 .llvm_name = "atxmega256a3u",
4419 .subfeatures = &[_]*const Feature {4386 .subfeatures = &[_]*const Feature {
4387 &feature_spm,
4420 &feature_lpmx,4388 &feature_lpmx,
4389 &feature_des,
4421 &feature_ijmpcall,4390 &feature_ijmpcall,
4422 &feature_jmpcall,4391 &feature_jmpcall,
4423 &feature_movw,
4424 &feature_sram,4392 &feature_sram,
4425 &feature_mul,
4426 &feature_avr0,
4427 &feature_spmx,
4428 &feature_lpm,
4429 &feature_rmw,4393 &feature_rmw,
4394 &feature_addsubiw,
4395 &feature_elpm,
4430 &feature_eijmpcall,4396 &feature_eijmpcall,
4397 &feature_mul,
4431 &feature_break,4398 &feature_break,
4432 &feature_spm,4399 &feature_lpm,
4433 &feature_elpmx,4400 &feature_elpmx,
4434 &feature_elpm,4401 &feature_avr0,
4435 &feature_addsubiw,4402 &feature_movw,
4436 &feature_des,4403 &feature_spmx,
4437 &feature_xmegau,4404 &feature_xmegau,
4438 },4405 },
4439};4406};
...@@ -4442,23 +4409,23 @@ pub const cpu_atxmega256c3 = Cpu{...@@ -4442,23 +4409,23 @@ pub const cpu_atxmega256c3 = Cpu{
4442 .name = "atxmega256c3",4409 .name = "atxmega256c3",
4443 .llvm_name = "atxmega256c3",4410 .llvm_name = "atxmega256c3",
4444 .subfeatures = &[_]*const Feature {4411 .subfeatures = &[_]*const Feature {
4412 &feature_spm,
4445 &feature_lpmx,4413 &feature_lpmx,
4414 &feature_des,
4446 &feature_ijmpcall,4415 &feature_ijmpcall,
4447 &feature_jmpcall,4416 &feature_jmpcall,
4448 &feature_movw,
4449 &feature_sram,4417 &feature_sram,
4450 &feature_mul,
4451 &feature_avr0,
4452 &feature_spmx,
4453 &feature_lpm,
4454 &feature_rmw,4418 &feature_rmw,
4419 &feature_addsubiw,
4420 &feature_elpm,
4455 &feature_eijmpcall,4421 &feature_eijmpcall,
4422 &feature_mul,
4456 &feature_break,4423 &feature_break,
4457 &feature_spm,4424 &feature_lpm,
4458 &feature_elpmx,4425 &feature_elpmx,
4459 &feature_elpm,4426 &feature_avr0,
4460 &feature_addsubiw,4427 &feature_movw,
4461 &feature_des,4428 &feature_spmx,
4462 &feature_xmegau,4429 &feature_xmegau,
4463 },4430 },
4464};4431};
...@@ -4467,22 +4434,22 @@ pub const cpu_atxmega256d3 = Cpu{...@@ -4467,22 +4434,22 @@ pub const cpu_atxmega256d3 = Cpu{
4467 .name = "atxmega256d3",4434 .name = "atxmega256d3",
4468 .llvm_name = "atxmega256d3",4435 .llvm_name = "atxmega256d3",
4469 .subfeatures = &[_]*const Feature {4436 .subfeatures = &[_]*const Feature {
4437 &feature_spm,
4470 &feature_lpmx,4438 &feature_lpmx,
4471 &feature_jmpcall,4439 &feature_des,
4472 &feature_ijmpcall,4440 &feature_ijmpcall,
4473 &feature_movw,4441 &feature_jmpcall,
4474 &feature_sram,4442 &feature_sram,
4475 &feature_mul,4443 &feature_addsubiw,
4476 &feature_avr0,4444 &feature_elpm,
4477 &feature_spmx,
4478 &feature_lpm,
4479 &feature_eijmpcall,4445 &feature_eijmpcall,
4446 &feature_mul,
4480 &feature_break,4447 &feature_break,
4481 &feature_spm,4448 &feature_lpm,
4482 &feature_elpmx,4449 &feature_elpmx,
4483 &feature_elpm,4450 &feature_avr0,
4484 &feature_addsubiw,4451 &feature_movw,
4485 &feature_des,4452 &feature_spmx,
4486 &feature_xmega,4453 &feature_xmega,
4487 },4454 },
4488};4455};
...@@ -4491,22 +4458,22 @@ pub const cpu_atxmega32a4 = Cpu{...@@ -4491,22 +4458,22 @@ pub const cpu_atxmega32a4 = Cpu{
4491 .name = "atxmega32a4",4458 .name = "atxmega32a4",
4492 .llvm_name = "atxmega32a4",4459 .llvm_name = "atxmega32a4",
4493 .subfeatures = &[_]*const Feature {4460 .subfeatures = &[_]*const Feature {
4461 &feature_spm,
4494 &feature_lpmx,4462 &feature_lpmx,
4495 &feature_jmpcall,4463 &feature_des,
4496 &feature_ijmpcall,4464 &feature_ijmpcall,
4497 &feature_movw,4465 &feature_jmpcall,
4498 &feature_sram,4466 &feature_sram,
4499 &feature_mul,4467 &feature_addsubiw,
4500 &feature_avr0,4468 &feature_elpm,
4501 &feature_spmx,
4502 &feature_lpm,
4503 &feature_eijmpcall,4469 &feature_eijmpcall,
4470 &feature_mul,
4504 &feature_break,4471 &feature_break,
4505 &feature_spm,4472 &feature_lpm,
4506 &feature_elpmx,4473 &feature_elpmx,
4507 &feature_elpm,4474 &feature_avr0,
4508 &feature_addsubiw,4475 &feature_movw,
4509 &feature_des,4476 &feature_spmx,
4510 &feature_xmega,4477 &feature_xmega,
4511 },4478 },
4512};4479};
...@@ -4515,23 +4482,23 @@ pub const cpu_atxmega32a4u = Cpu{...@@ -4515,23 +4482,23 @@ pub const cpu_atxmega32a4u = Cpu{
4515 .name = "atxmega32a4u",4482 .name = "atxmega32a4u",
4516 .llvm_name = "atxmega32a4u",4483 .llvm_name = "atxmega32a4u",
4517 .subfeatures = &[_]*const Feature {4484 .subfeatures = &[_]*const Feature {
4485 &feature_spm,
4518 &feature_lpmx,4486 &feature_lpmx,
4487 &feature_des,
4519 &feature_ijmpcall,4488 &feature_ijmpcall,
4520 &feature_jmpcall,4489 &feature_jmpcall,
4521 &feature_movw,
4522 &feature_sram,4490 &feature_sram,
4523 &feature_mul,
4524 &feature_avr0,
4525 &feature_spmx,
4526 &feature_lpm,
4527 &feature_rmw,4491 &feature_rmw,
4492 &feature_addsubiw,
4493 &feature_elpm,
4528 &feature_eijmpcall,4494 &feature_eijmpcall,
4495 &feature_mul,
4529 &feature_break,4496 &feature_break,
4530 &feature_spm,4497 &feature_lpm,
4531 &feature_elpmx,4498 &feature_elpmx,
4532 &feature_elpm,4499 &feature_avr0,
4533 &feature_addsubiw,4500 &feature_movw,
4534 &feature_des,4501 &feature_spmx,
4535 &feature_xmegau,4502 &feature_xmegau,
4536 },4503 },
4537};4504};
...@@ -4540,23 +4507,23 @@ pub const cpu_atxmega32c4 = Cpu{...@@ -4540,23 +4507,23 @@ pub const cpu_atxmega32c4 = Cpu{
4540 .name = "atxmega32c4",4507 .name = "atxmega32c4",
4541 .llvm_name = "atxmega32c4",4508 .llvm_name = "atxmega32c4",
4542 .subfeatures = &[_]*const Feature {4509 .subfeatures = &[_]*const Feature {
4510 &feature_spm,
4543 &feature_lpmx,4511 &feature_lpmx,
4512 &feature_des,
4544 &feature_ijmpcall,4513 &feature_ijmpcall,
4545 &feature_jmpcall,4514 &feature_jmpcall,
4546 &feature_movw,
4547 &feature_sram,4515 &feature_sram,
4548 &feature_mul,
4549 &feature_avr0,
4550 &feature_spmx,
4551 &feature_lpm,
4552 &feature_rmw,4516 &feature_rmw,
4517 &feature_addsubiw,
4518 &feature_elpm,
4553 &feature_eijmpcall,4519 &feature_eijmpcall,
4520 &feature_mul,
4554 &feature_break,4521 &feature_break,
4555 &feature_spm,4522 &feature_lpm,
4556 &feature_elpmx,4523 &feature_elpmx,
4557 &feature_elpm,4524 &feature_avr0,
4558 &feature_addsubiw,4525 &feature_movw,
4559 &feature_des,4526 &feature_spmx,
4560 &feature_xmegau,4527 &feature_xmegau,
4561 },4528 },
4562};4529};
...@@ -4565,22 +4532,22 @@ pub const cpu_atxmega32d4 = Cpu{...@@ -4565,22 +4532,22 @@ pub const cpu_atxmega32d4 = Cpu{
4565 .name = "atxmega32d4",4532 .name = "atxmega32d4",
4566 .llvm_name = "atxmega32d4",4533 .llvm_name = "atxmega32d4",
4567 .subfeatures = &[_]*const Feature {4534 .subfeatures = &[_]*const Feature {
4535 &feature_spm,
4568 &feature_lpmx,4536 &feature_lpmx,
4569 &feature_jmpcall,4537 &feature_des,
4570 &feature_ijmpcall,4538 &feature_ijmpcall,
4571 &feature_movw,4539 &feature_jmpcall,
4572 &feature_sram,4540 &feature_sram,
4573 &feature_mul,4541 &feature_addsubiw,
4574 &feature_avr0,4542 &feature_elpm,
4575 &feature_spmx,
4576 &feature_lpm,
4577 &feature_eijmpcall,4543 &feature_eijmpcall,
4544 &feature_mul,
4578 &feature_break,4545 &feature_break,
4579 &feature_spm,4546 &feature_lpm,
4580 &feature_elpmx,4547 &feature_elpmx,
4581 &feature_elpm,4548 &feature_avr0,
4582 &feature_addsubiw,4549 &feature_movw,
4583 &feature_des,4550 &feature_spmx,
4584 &feature_xmega,4551 &feature_xmega,
4585 },4552 },
4586};4553};
...@@ -4589,22 +4556,22 @@ pub const cpu_atxmega32e5 = Cpu{...@@ -4589,22 +4556,22 @@ pub const cpu_atxmega32e5 = Cpu{
4589 .name = "atxmega32e5",4556 .name = "atxmega32e5",
4590 .llvm_name = "atxmega32e5",4557 .llvm_name = "atxmega32e5",
4591 .subfeatures = &[_]*const Feature {4558 .subfeatures = &[_]*const Feature {
4559 &feature_spm,
4592 &feature_lpmx,4560 &feature_lpmx,
4593 &feature_jmpcall,4561 &feature_des,
4594 &feature_ijmpcall,4562 &feature_ijmpcall,
4595 &feature_movw,4563 &feature_jmpcall,
4596 &feature_sram,4564 &feature_sram,
4597 &feature_mul,4565 &feature_addsubiw,
4598 &feature_avr0,4566 &feature_elpm,
4599 &feature_spmx,
4600 &feature_lpm,
4601 &feature_eijmpcall,4567 &feature_eijmpcall,
4568 &feature_mul,
4602 &feature_break,4569 &feature_break,
4603 &feature_spm,4570 &feature_lpm,
4604 &feature_elpmx,4571 &feature_elpmx,
4605 &feature_elpm,4572 &feature_avr0,
4606 &feature_addsubiw,4573 &feature_movw,
4607 &feature_des,4574 &feature_spmx,
4608 &feature_xmega,4575 &feature_xmega,
4609 },4576 },
4610};4577};
...@@ -4613,22 +4580,22 @@ pub const cpu_atxmega32x1 = Cpu{...@@ -4613,22 +4580,22 @@ pub const cpu_atxmega32x1 = Cpu{
4613 .name = "atxmega32x1",4580 .name = "atxmega32x1",
4614 .llvm_name = "atxmega32x1",4581 .llvm_name = "atxmega32x1",
4615 .subfeatures = &[_]*const Feature {4582 .subfeatures = &[_]*const Feature {
4583 &feature_spm,
4616 &feature_lpmx,4584 &feature_lpmx,
4617 &feature_jmpcall,4585 &feature_des,
4618 &feature_ijmpcall,4586 &feature_ijmpcall,
4619 &feature_movw,4587 &feature_jmpcall,
4620 &feature_sram,4588 &feature_sram,
4621 &feature_mul,4589 &feature_addsubiw,
4622 &feature_avr0,4590 &feature_elpm,
4623 &feature_spmx,
4624 &feature_lpm,
4625 &feature_eijmpcall,4591 &feature_eijmpcall,
4592 &feature_mul,
4626 &feature_break,4593 &feature_break,
4627 &feature_spm,4594 &feature_lpm,
4628 &feature_elpmx,4595 &feature_elpmx,
4629 &feature_elpm,4596 &feature_avr0,
4630 &feature_addsubiw,4597 &feature_movw,
4631 &feature_des,4598 &feature_spmx,
4632 &feature_xmega,4599 &feature_xmega,
4633 },4600 },
4634};4601};
...@@ -4637,23 +4604,23 @@ pub const cpu_atxmega384c3 = Cpu{...@@ -4637,23 +4604,23 @@ pub const cpu_atxmega384c3 = Cpu{
4637 .name = "atxmega384c3",4604 .name = "atxmega384c3",
4638 .llvm_name = "atxmega384c3",4605 .llvm_name = "atxmega384c3",
4639 .subfeatures = &[_]*const Feature {4606 .subfeatures = &[_]*const Feature {
4607 &feature_spm,
4640 &feature_lpmx,4608 &feature_lpmx,
4609 &feature_des,
4641 &feature_ijmpcall,4610 &feature_ijmpcall,
4642 &feature_jmpcall,4611 &feature_jmpcall,
4643 &feature_movw,
4644 &feature_sram,4612 &feature_sram,
4645 &feature_mul,
4646 &feature_avr0,
4647 &feature_spmx,
4648 &feature_lpm,
4649 &feature_rmw,4613 &feature_rmw,
4614 &feature_addsubiw,
4615 &feature_elpm,
4650 &feature_eijmpcall,4616 &feature_eijmpcall,
4617 &feature_mul,
4651 &feature_break,4618 &feature_break,
4652 &feature_spm,4619 &feature_lpm,
4653 &feature_elpmx,4620 &feature_elpmx,
4654 &feature_elpm,4621 &feature_avr0,
4655 &feature_addsubiw,4622 &feature_movw,
4656 &feature_des,4623 &feature_spmx,
4657 &feature_xmegau,4624 &feature_xmegau,
4658 },4625 },
4659};4626};
...@@ -4662,22 +4629,22 @@ pub const cpu_atxmega384d3 = Cpu{...@@ -4662,22 +4629,22 @@ pub const cpu_atxmega384d3 = Cpu{
4662 .name = "atxmega384d3",4629 .name = "atxmega384d3",
4663 .llvm_name = "atxmega384d3",4630 .llvm_name = "atxmega384d3",
4664 .subfeatures = &[_]*const Feature {4631 .subfeatures = &[_]*const Feature {
4632 &feature_spm,
4665 &feature_lpmx,4633 &feature_lpmx,
4666 &feature_jmpcall,4634 &feature_des,
4667 &feature_ijmpcall,4635 &feature_ijmpcall,
4668 &feature_movw,4636 &feature_jmpcall,
4669 &feature_sram,4637 &feature_sram,
4670 &feature_mul,4638 &feature_addsubiw,
4671 &feature_avr0,4639 &feature_elpm,
4672 &feature_spmx,
4673 &feature_lpm,
4674 &feature_eijmpcall,4640 &feature_eijmpcall,
4641 &feature_mul,
4675 &feature_break,4642 &feature_break,
4676 &feature_spm,4643 &feature_lpm,
4677 &feature_elpmx,4644 &feature_elpmx,
4678 &feature_elpm,4645 &feature_avr0,
4679 &feature_addsubiw,4646 &feature_movw,
4680 &feature_des,4647 &feature_spmx,
4681 &feature_xmega,4648 &feature_xmega,
4682 },4649 },
4683};4650};
...@@ -4686,22 +4653,22 @@ pub const cpu_atxmega64a1 = Cpu{...@@ -4686,22 +4653,22 @@ pub const cpu_atxmega64a1 = Cpu{
4686 .name = "atxmega64a1",4653 .name = "atxmega64a1",
4687 .llvm_name = "atxmega64a1",4654 .llvm_name = "atxmega64a1",
4688 .subfeatures = &[_]*const Feature {4655 .subfeatures = &[_]*const Feature {
4656 &feature_spm,
4689 &feature_lpmx,4657 &feature_lpmx,
4690 &feature_jmpcall,4658 &feature_des,
4691 &feature_ijmpcall,4659 &feature_ijmpcall,
4692 &feature_movw,4660 &feature_jmpcall,
4693 &feature_sram,4661 &feature_sram,
4694 &feature_mul,4662 &feature_addsubiw,
4695 &feature_avr0,4663 &feature_elpm,
4696 &feature_spmx,
4697 &feature_lpm,
4698 &feature_eijmpcall,4664 &feature_eijmpcall,
4665 &feature_mul,
4699 &feature_break,4666 &feature_break,
4700 &feature_spm,4667 &feature_lpm,
4701 &feature_elpmx,4668 &feature_elpmx,
4702 &feature_elpm,4669 &feature_avr0,
4703 &feature_addsubiw,4670 &feature_movw,
4704 &feature_des,4671 &feature_spmx,
4705 &feature_xmega,4672 &feature_xmega,
4706 },4673 },
4707};4674};
...@@ -4710,23 +4677,23 @@ pub const cpu_atxmega64a1u = Cpu{...@@ -4710,23 +4677,23 @@ pub const cpu_atxmega64a1u = Cpu{
4710 .name = "atxmega64a1u",4677 .name = "atxmega64a1u",
4711 .llvm_name = "atxmega64a1u",4678 .llvm_name = "atxmega64a1u",
4712 .subfeatures = &[_]*const Feature {4679 .subfeatures = &[_]*const Feature {
4680 &feature_spm,
4713 &feature_lpmx,4681 &feature_lpmx,
4682 &feature_des,
4714 &feature_ijmpcall,4683 &feature_ijmpcall,
4715 &feature_jmpcall,4684 &feature_jmpcall,
4716 &feature_movw,
4717 &feature_sram,4685 &feature_sram,
4718 &feature_mul,
4719 &feature_avr0,
4720 &feature_spmx,
4721 &feature_lpm,
4722 &feature_rmw,4686 &feature_rmw,
4687 &feature_addsubiw,
4688 &feature_elpm,
4723 &feature_eijmpcall,4689 &feature_eijmpcall,
4690 &feature_mul,
4724 &feature_break,4691 &feature_break,
4725 &feature_spm,4692 &feature_lpm,
4726 &feature_elpmx,4693 &feature_elpmx,
4727 &feature_elpm,4694 &feature_avr0,
4728 &feature_addsubiw,4695 &feature_movw,
4729 &feature_des,4696 &feature_spmx,
4730 &feature_xmegau,4697 &feature_xmegau,
4731 },4698 },
4732};4699};
...@@ -4735,22 +4702,22 @@ pub const cpu_atxmega64a3 = Cpu{...@@ -4735,22 +4702,22 @@ pub const cpu_atxmega64a3 = Cpu{
4735 .name = "atxmega64a3",4702 .name = "atxmega64a3",
4736 .llvm_name = "atxmega64a3",4703 .llvm_name = "atxmega64a3",
4737 .subfeatures = &[_]*const Feature {4704 .subfeatures = &[_]*const Feature {
4705 &feature_spm,
4738 &feature_lpmx,4706 &feature_lpmx,
4739 &feature_jmpcall,4707 &feature_des,
4740 &feature_ijmpcall,4708 &feature_ijmpcall,
4741 &feature_movw,4709 &feature_jmpcall,
4742 &feature_sram,4710 &feature_sram,
4743 &feature_mul,4711 &feature_addsubiw,
4744 &feature_avr0,4712 &feature_elpm,
4745 &feature_spmx,
4746 &feature_lpm,
4747 &feature_eijmpcall,4713 &feature_eijmpcall,
4714 &feature_mul,
4748 &feature_break,4715 &feature_break,
4749 &feature_spm,4716 &feature_lpm,
4750 &feature_elpmx,4717 &feature_elpmx,
4751 &feature_elpm,4718 &feature_avr0,
4752 &feature_addsubiw,4719 &feature_movw,
4753 &feature_des,4720 &feature_spmx,
4754 &feature_xmega,4721 &feature_xmega,
4755 },4722 },
4756};4723};
...@@ -4759,23 +4726,23 @@ pub const cpu_atxmega64a3u = Cpu{...@@ -4759,23 +4726,23 @@ pub const cpu_atxmega64a3u = Cpu{
4759 .name = "atxmega64a3u",4726 .name = "atxmega64a3u",
4760 .llvm_name = "atxmega64a3u",4727 .llvm_name = "atxmega64a3u",
4761 .subfeatures = &[_]*const Feature {4728 .subfeatures = &[_]*const Feature {
4729 &feature_spm,
4762 &feature_lpmx,4730 &feature_lpmx,
4731 &feature_des,
4763 &feature_ijmpcall,4732 &feature_ijmpcall,
4764 &feature_jmpcall,4733 &feature_jmpcall,
4765 &feature_movw,
4766 &feature_sram,4734 &feature_sram,
4767 &feature_mul,
4768 &feature_avr0,
4769 &feature_spmx,
4770 &feature_lpm,
4771 &feature_rmw,4735 &feature_rmw,
4736 &feature_addsubiw,
4737 &feature_elpm,
4772 &feature_eijmpcall,4738 &feature_eijmpcall,
4739 &feature_mul,
4773 &feature_break,4740 &feature_break,
4774 &feature_spm,4741 &feature_lpm,
4775 &feature_elpmx,4742 &feature_elpmx,
4776 &feature_elpm,4743 &feature_avr0,
4777 &feature_addsubiw,4744 &feature_movw,
4778 &feature_des,4745 &feature_spmx,
4779 &feature_xmegau,4746 &feature_xmegau,
4780 },4747 },
4781};4748};
...@@ -4784,23 +4751,23 @@ pub const cpu_atxmega64a4u = Cpu{...@@ -4784,23 +4751,23 @@ pub const cpu_atxmega64a4u = Cpu{
4784 .name = "atxmega64a4u",4751 .name = "atxmega64a4u",
4785 .llvm_name = "atxmega64a4u",4752 .llvm_name = "atxmega64a4u",
4786 .subfeatures = &[_]*const Feature {4753 .subfeatures = &[_]*const Feature {
4754 &feature_spm,
4787 &feature_lpmx,4755 &feature_lpmx,
4756 &feature_des,
4788 &feature_ijmpcall,4757 &feature_ijmpcall,
4789 &feature_jmpcall,4758 &feature_jmpcall,
4790 &feature_movw,
4791 &feature_sram,4759 &feature_sram,
4792 &feature_mul,
4793 &feature_avr0,
4794 &feature_spmx,
4795 &feature_lpm,
4796 &feature_rmw,4760 &feature_rmw,
4761 &feature_addsubiw,
4762 &feature_elpm,
4797 &feature_eijmpcall,4763 &feature_eijmpcall,
4764 &feature_mul,
4798 &feature_break,4765 &feature_break,
4799 &feature_spm,4766 &feature_lpm,
4800 &feature_elpmx,4767 &feature_elpmx,
4801 &feature_elpm,4768 &feature_avr0,
4802 &feature_addsubiw,4769 &feature_movw,
4803 &feature_des,4770 &feature_spmx,
4804 &feature_xmegau,4771 &feature_xmegau,
4805 },4772 },
4806};4773};
...@@ -4809,23 +4776,23 @@ pub const cpu_atxmega64b1 = Cpu{...@@ -4809,23 +4776,23 @@ pub const cpu_atxmega64b1 = Cpu{
4809 .name = "atxmega64b1",4776 .name = "atxmega64b1",
4810 .llvm_name = "atxmega64b1",4777 .llvm_name = "atxmega64b1",
4811 .subfeatures = &[_]*const Feature {4778 .subfeatures = &[_]*const Feature {
4779 &feature_spm,
4812 &feature_lpmx,4780 &feature_lpmx,
4781 &feature_des,
4813 &feature_ijmpcall,4782 &feature_ijmpcall,
4814 &feature_jmpcall,4783 &feature_jmpcall,
4815 &feature_movw,
4816 &feature_sram,4784 &feature_sram,
4817 &feature_mul,
4818 &feature_avr0,
4819 &feature_spmx,
4820 &feature_lpm,
4821 &feature_rmw,4785 &feature_rmw,
4786 &feature_addsubiw,
4787 &feature_elpm,
4822 &feature_eijmpcall,4788 &feature_eijmpcall,
4789 &feature_mul,
4823 &feature_break,4790 &feature_break,
4824 &feature_spm,4791 &feature_lpm,
4825 &feature_elpmx,4792 &feature_elpmx,
4826 &feature_elpm,4793 &feature_avr0,
4827 &feature_addsubiw,4794 &feature_movw,
4828 &feature_des,4795 &feature_spmx,
4829 &feature_xmegau,4796 &feature_xmegau,
4830 },4797 },
4831};4798};
...@@ -4834,23 +4801,23 @@ pub const cpu_atxmega64b3 = Cpu{...@@ -4834,23 +4801,23 @@ pub const cpu_atxmega64b3 = Cpu{
4834 .name = "atxmega64b3",4801 .name = "atxmega64b3",
4835 .llvm_name = "atxmega64b3",4802 .llvm_name = "atxmega64b3",
4836 .subfeatures = &[_]*const Feature {4803 .subfeatures = &[_]*const Feature {
4804 &feature_spm,
4837 &feature_lpmx,4805 &feature_lpmx,
4806 &feature_des,
4838 &feature_ijmpcall,4807 &feature_ijmpcall,
4839 &feature_jmpcall,4808 &feature_jmpcall,
4840 &feature_movw,
4841 &feature_sram,4809 &feature_sram,
4842 &feature_mul,
4843 &feature_avr0,
4844 &feature_spmx,
4845 &feature_lpm,
4846 &feature_rmw,4810 &feature_rmw,
4811 &feature_addsubiw,
4812 &feature_elpm,
4847 &feature_eijmpcall,4813 &feature_eijmpcall,
4814 &feature_mul,
4848 &feature_break,4815 &feature_break,
4849 &feature_spm,4816 &feature_lpm,
4850 &feature_elpmx,4817 &feature_elpmx,
4851 &feature_elpm,4818 &feature_avr0,
4852 &feature_addsubiw,4819 &feature_movw,
4853 &feature_des,4820 &feature_spmx,
4854 &feature_xmegau,4821 &feature_xmegau,
4855 },4822 },
4856};4823};
...@@ -4859,23 +4826,23 @@ pub const cpu_atxmega64c3 = Cpu{...@@ -4859,23 +4826,23 @@ pub const cpu_atxmega64c3 = Cpu{
4859 .name = "atxmega64c3",4826 .name = "atxmega64c3",
4860 .llvm_name = "atxmega64c3",4827 .llvm_name = "atxmega64c3",
4861 .subfeatures = &[_]*const Feature {4828 .subfeatures = &[_]*const Feature {
4829 &feature_spm,
4862 &feature_lpmx,4830 &feature_lpmx,
4831 &feature_des,
4863 &feature_ijmpcall,4832 &feature_ijmpcall,
4864 &feature_jmpcall,4833 &feature_jmpcall,
4865 &feature_movw,
4866 &feature_sram,4834 &feature_sram,
4867 &feature_mul,
4868 &feature_avr0,
4869 &feature_spmx,
4870 &feature_lpm,
4871 &feature_rmw,4835 &feature_rmw,
4836 &feature_addsubiw,
4837 &feature_elpm,
4872 &feature_eijmpcall,4838 &feature_eijmpcall,
4839 &feature_mul,
4873 &feature_break,4840 &feature_break,
4874 &feature_spm,4841 &feature_lpm,
4875 &feature_elpmx,4842 &feature_elpmx,
4876 &feature_elpm,4843 &feature_avr0,
4877 &feature_addsubiw,4844 &feature_movw,
4878 &feature_des,4845 &feature_spmx,
4879 &feature_xmegau,4846 &feature_xmegau,
4880 },4847 },
4881};4848};
...@@ -4884,22 +4851,22 @@ pub const cpu_atxmega64d3 = Cpu{...@@ -4884,22 +4851,22 @@ pub const cpu_atxmega64d3 = Cpu{
4884 .name = "atxmega64d3",4851 .name = "atxmega64d3",
4885 .llvm_name = "atxmega64d3",4852 .llvm_name = "atxmega64d3",
4886 .subfeatures = &[_]*const Feature {4853 .subfeatures = &[_]*const Feature {
4854 &feature_spm,
4887 &feature_lpmx,4855 &feature_lpmx,
4888 &feature_jmpcall,4856 &feature_des,
4889 &feature_ijmpcall,4857 &feature_ijmpcall,
4890 &feature_movw,4858 &feature_jmpcall,
4891 &feature_sram,4859 &feature_sram,
4892 &feature_mul,4860 &feature_addsubiw,
4893 &feature_avr0,4861 &feature_elpm,
4894 &feature_spmx,
4895 &feature_lpm,
4896 &feature_eijmpcall,4862 &feature_eijmpcall,
4863 &feature_mul,
4897 &feature_break,4864 &feature_break,
4898 &feature_spm,4865 &feature_lpm,
4899 &feature_elpmx,4866 &feature_elpmx,
4900 &feature_elpm,4867 &feature_avr0,
4901 &feature_addsubiw,4868 &feature_movw,
4902 &feature_des,4869 &feature_spmx,
4903 &feature_xmega,4870 &feature_xmega,
4904 },4871 },
4905};4872};
...@@ -4908,22 +4875,22 @@ pub const cpu_atxmega64d4 = Cpu{...@@ -4908,22 +4875,22 @@ pub const cpu_atxmega64d4 = Cpu{
4908 .name = "atxmega64d4",4875 .name = "atxmega64d4",
4909 .llvm_name = "atxmega64d4",4876 .llvm_name = "atxmega64d4",
4910 .subfeatures = &[_]*const Feature {4877 .subfeatures = &[_]*const Feature {
4878 &feature_spm,
4911 &feature_lpmx,4879 &feature_lpmx,
4912 &feature_jmpcall,4880 &feature_des,
4913 &feature_ijmpcall,4881 &feature_ijmpcall,
4914 &feature_movw,4882 &feature_jmpcall,
4915 &feature_sram,4883 &feature_sram,
4916 &feature_mul,4884 &feature_addsubiw,
4917 &feature_avr0,4885 &feature_elpm,
4918 &feature_spmx,
4919 &feature_lpm,
4920 &feature_eijmpcall,4886 &feature_eijmpcall,
4887 &feature_mul,
4921 &feature_break,4888 &feature_break,
4922 &feature_spm,4889 &feature_lpm,
4923 &feature_elpmx,4890 &feature_elpmx,
4924 &feature_elpm,4891 &feature_avr0,
4925 &feature_addsubiw,4892 &feature_movw,
4926 &feature_des,4893 &feature_spmx,
4927 &feature_xmega,4894 &feature_xmega,
4928 },4895 },
4929};4896};
...@@ -4932,22 +4899,22 @@ pub const cpu_atxmega8e5 = Cpu{...@@ -4932,22 +4899,22 @@ pub const cpu_atxmega8e5 = Cpu{
4932 .name = "atxmega8e5",4899 .name = "atxmega8e5",
4933 .llvm_name = "atxmega8e5",4900 .llvm_name = "atxmega8e5",
4934 .subfeatures = &[_]*const Feature {4901 .subfeatures = &[_]*const Feature {
4902 &feature_spm,
4935 &feature_lpmx,4903 &feature_lpmx,
4936 &feature_jmpcall,4904 &feature_des,
4937 &feature_ijmpcall,4905 &feature_ijmpcall,
4938 &feature_movw,4906 &feature_jmpcall,
4939 &feature_sram,4907 &feature_sram,
4940 &feature_mul,4908 &feature_addsubiw,
4941 &feature_avr0,4909 &feature_elpm,
4942 &feature_spmx,
4943 &feature_lpm,
4944 &feature_eijmpcall,4910 &feature_eijmpcall,
4911 &feature_mul,
4945 &feature_break,4912 &feature_break,
4946 &feature_spm,4913 &feature_lpm,
4947 &feature_elpmx,4914 &feature_elpmx,
4948 &feature_elpm,4915 &feature_avr0,
4949 &feature_addsubiw,4916 &feature_movw,
4950 &feature_des,4917 &feature_spmx,
4951 &feature_xmega,4918 &feature_xmega,
4952 },4919 },
4953};4920};
...@@ -4956,8 +4923,8 @@ pub const cpu_avr1 = Cpu{...@@ -4956,8 +4923,8 @@ pub const cpu_avr1 = Cpu{
4956 .name = "avr1",4923 .name = "avr1",
4957 .llvm_name = "avr1",4924 .llvm_name = "avr1",
4958 .subfeatures = &[_]*const Feature {4925 .subfeatures = &[_]*const Feature {
4959 &feature_avr0,
4960 &feature_lpm,4926 &feature_lpm,
4927 &feature_avr0,
4961 &feature_avr1,4928 &feature_avr1,
4962 },4929 },
4963};4930};
...@@ -4968,9 +4935,9 @@ pub const cpu_avr2 = Cpu{...@@ -4968,9 +4935,9 @@ pub const cpu_avr2 = Cpu{
4968 .subfeatures = &[_]*const Feature {4935 .subfeatures = &[_]*const Feature {
4969 &feature_ijmpcall,4936 &feature_ijmpcall,
4970 &feature_sram,4937 &feature_sram,
4971 &feature_avr0,
4972 &feature_lpm,
4973 &feature_addsubiw,4938 &feature_addsubiw,
4939 &feature_lpm,
4940 &feature_avr0,
4974 &feature_avr2,4941 &feature_avr2,
4975 },4942 },
4976};4943};
...@@ -4979,15 +4946,15 @@ pub const cpu_avr25 = Cpu{...@@ -4979,15 +4946,15 @@ pub const cpu_avr25 = Cpu{
4979 .name = "avr25",4946 .name = "avr25",
4980 .llvm_name = "avr25",4947 .llvm_name = "avr25",
4981 .subfeatures = &[_]*const Feature {4948 .subfeatures = &[_]*const Feature {
4949 &feature_spm,
4982 &feature_lpmx,4950 &feature_lpmx,
4983 &feature_ijmpcall,4951 &feature_ijmpcall,
4984 &feature_movw,
4985 &feature_sram,4952 &feature_sram,
4986 &feature_avr0,
4987 &feature_lpm,
4988 &feature_break,
4989 &feature_spm,
4990 &feature_addsubiw,4953 &feature_addsubiw,
4954 &feature_break,
4955 &feature_lpm,
4956 &feature_avr0,
4957 &feature_movw,
4991 &feature_avr25,4958 &feature_avr25,
4992 },4959 },
4993};4960};
...@@ -4999,9 +4966,9 @@ pub const cpu_avr3 = Cpu{...@@ -4999,9 +4966,9 @@ pub const cpu_avr3 = Cpu{
4999 &feature_ijmpcall,4966 &feature_ijmpcall,
5000 &feature_jmpcall,4967 &feature_jmpcall,
5001 &feature_sram,4968 &feature_sram,
5002 &feature_avr0,
5003 &feature_lpm,
5004 &feature_addsubiw,4969 &feature_addsubiw,
4970 &feature_lpm,
4971 &feature_avr0,
5005 &feature_avr3,4972 &feature_avr3,
5006 },4973 },
5007};4974};
...@@ -5010,13 +4977,13 @@ pub const cpu_avr31 = Cpu{...@@ -5010,13 +4977,13 @@ pub const cpu_avr31 = Cpu{
5010 .name = "avr31",4977 .name = "avr31",
5011 .llvm_name = "avr31",4978 .llvm_name = "avr31",
5012 .subfeatures = &[_]*const Feature {4979 .subfeatures = &[_]*const Feature {
5013 &feature_jmpcall,
5014 &feature_ijmpcall,4980 &feature_ijmpcall,
4981 &feature_jmpcall,
5015 &feature_sram,4982 &feature_sram,
5016 &feature_avr0,
5017 &feature_lpm,
5018 &feature_elpm,
5019 &feature_addsubiw,4983 &feature_addsubiw,
4984 &feature_elpm,
4985 &feature_lpm,
4986 &feature_avr0,
5020 &feature_avr31,4987 &feature_avr31,
5021 },4988 },
5022};4989};
...@@ -5025,16 +4992,16 @@ pub const cpu_avr35 = Cpu{...@@ -5025,16 +4992,16 @@ pub const cpu_avr35 = Cpu{
5025 .name = "avr35",4992 .name = "avr35",
5026 .llvm_name = "avr35",4993 .llvm_name = "avr35",
5027 .subfeatures = &[_]*const Feature {4994 .subfeatures = &[_]*const Feature {
4995 &feature_spm,
5028 &feature_lpmx,4996 &feature_lpmx,
5029 &feature_jmpcall,
5030 &feature_ijmpcall,4997 &feature_ijmpcall,
5031 &feature_movw,4998 &feature_jmpcall,
5032 &feature_sram,4999 &feature_sram,
5033 &feature_avr0,
5034 &feature_lpm,
5035 &feature_break,
5036 &feature_spm,
5037 &feature_addsubiw,5000 &feature_addsubiw,
5001 &feature_break,
5002 &feature_lpm,
5003 &feature_avr0,
5004 &feature_movw,
5038 &feature_avr35,5005 &feature_avr35,
5039 },5006 },
5040};5007};
...@@ -5043,16 +5010,16 @@ pub const cpu_avr4 = Cpu{...@@ -5043,16 +5010,16 @@ pub const cpu_avr4 = Cpu{
5043 .name = "avr4",5010 .name = "avr4",
5044 .llvm_name = "avr4",5011 .llvm_name = "avr4",
5045 .subfeatures = &[_]*const Feature {5012 .subfeatures = &[_]*const Feature {
5013 &feature_spm,
5046 &feature_lpmx,5014 &feature_lpmx,
5047 &feature_ijmpcall,5015 &feature_ijmpcall,
5048 &feature_movw,
5049 &feature_sram,5016 &feature_sram,
5017 &feature_addsubiw,
5050 &feature_mul,5018 &feature_mul,
5051 &feature_avr0,
5052 &feature_lpm,
5053 &feature_break,5019 &feature_break,
5054 &feature_spm,5020 &feature_lpm,
5055 &feature_addsubiw,5021 &feature_avr0,
5022 &feature_movw,
5056 &feature_avr4,5023 &feature_avr4,
5057 },5024 },
5058};5025};
...@@ -5061,17 +5028,17 @@ pub const cpu_avr5 = Cpu{...@@ -5061,17 +5028,17 @@ pub const cpu_avr5 = Cpu{
5061 .name = "avr5",5028 .name = "avr5",
5062 .llvm_name = "avr5",5029 .llvm_name = "avr5",
5063 .subfeatures = &[_]*const Feature {5030 .subfeatures = &[_]*const Feature {
5031 &feature_spm,
5064 &feature_lpmx,5032 &feature_lpmx,
5065 &feature_jmpcall,
5066 &feature_ijmpcall,5033 &feature_ijmpcall,
5067 &feature_movw,5034 &feature_jmpcall,
5068 &feature_sram,5035 &feature_sram,
5036 &feature_addsubiw,
5069 &feature_mul,5037 &feature_mul,
5070 &feature_avr0,
5071 &feature_lpm,
5072 &feature_break,5038 &feature_break,
5073 &feature_spm,5039 &feature_lpm,
5074 &feature_addsubiw,5040 &feature_avr0,
5041 &feature_movw,
5075 &feature_avr5,5042 &feature_avr5,
5076 },5043 },
5077};5044};
...@@ -5080,19 +5047,19 @@ pub const cpu_avr51 = Cpu{...@@ -5080,19 +5047,19 @@ pub const cpu_avr51 = Cpu{
5080 .name = "avr51",5047 .name = "avr51",
5081 .llvm_name = "avr51",5048 .llvm_name = "avr51",
5082 .subfeatures = &[_]*const Feature {5049 .subfeatures = &[_]*const Feature {
5050 &feature_spm,
5083 &feature_lpmx,5051 &feature_lpmx,
5084 &feature_ijmpcall,5052 &feature_ijmpcall,
5085 &feature_jmpcall,5053 &feature_jmpcall,
5086 &feature_movw,
5087 &feature_sram,5054 &feature_sram,
5055 &feature_addsubiw,
5056 &feature_elpm,
5088 &feature_mul,5057 &feature_mul,
5089 &feature_avr0,
5090 &feature_lpm,
5091 &feature_break,5058 &feature_break,
5092 &feature_spm,5059 &feature_lpm,
5093 &feature_elpmx,5060 &feature_elpmx,
5094 &feature_elpm,5061 &feature_avr0,
5095 &feature_addsubiw,5062 &feature_movw,
5096 &feature_avr51,5063 &feature_avr51,
5097 },5064 },
5098};5065};
...@@ -5101,19 +5068,19 @@ pub const cpu_avr6 = Cpu{...@@ -5101,19 +5068,19 @@ pub const cpu_avr6 = Cpu{
5101 .name = "avr6",5068 .name = "avr6",
5102 .llvm_name = "avr6",5069 .llvm_name = "avr6",
5103 .subfeatures = &[_]*const Feature {5070 .subfeatures = &[_]*const Feature {
5071 &feature_spm,
5104 &feature_lpmx,5072 &feature_lpmx,
5105 &feature_jmpcall,
5106 &feature_ijmpcall,5073 &feature_ijmpcall,
5107 &feature_movw,5074 &feature_jmpcall,
5108 &feature_sram,5075 &feature_sram,
5076 &feature_addsubiw,
5077 &feature_elpm,
5109 &feature_mul,5078 &feature_mul,
5110 &feature_avr0,
5111 &feature_lpm,
5112 &feature_break,5079 &feature_break,
5113 &feature_spm,5080 &feature_lpm,
5114 &feature_elpmx,5081 &feature_elpmx,
5115 &feature_elpm,5082 &feature_avr0,
5116 &feature_addsubiw,5083 &feature_movw,
5117 &feature_avr6,5084 &feature_avr6,
5118 },5085 },
5119};5086};
...@@ -5122,10 +5089,10 @@ pub const cpu_avrtiny = Cpu{...@@ -5122,10 +5089,10 @@ pub const cpu_avrtiny = Cpu{
5122 .name = "avrtiny",5089 .name = "avrtiny",
5123 .llvm_name = "avrtiny",5090 .llvm_name = "avrtiny",
5124 .subfeatures = &[_]*const Feature {5091 .subfeatures = &[_]*const Feature {
5125 &feature_tinyencoding,5092 &feature_avr0,
5126 &feature_sram,5093 &feature_sram,
5094 &feature_tinyencoding,
5127 &feature_break,5095 &feature_break,
5128 &feature_avr0,
5129 &feature_avrtiny,5096 &feature_avrtiny,
5130 },5097 },
5131};5098};
...@@ -5134,22 +5101,22 @@ pub const cpu_avrxmega1 = Cpu{...@@ -5134,22 +5101,22 @@ pub const cpu_avrxmega1 = Cpu{
5134 .name = "avrxmega1",5101 .name = "avrxmega1",
5135 .llvm_name = "avrxmega1",5102 .llvm_name = "avrxmega1",
5136 .subfeatures = &[_]*const Feature {5103 .subfeatures = &[_]*const Feature {
5104 &feature_spm,
5137 &feature_lpmx,5105 &feature_lpmx,
5138 &feature_jmpcall,5106 &feature_des,
5139 &feature_ijmpcall,5107 &feature_ijmpcall,
5140 &feature_movw,5108 &feature_jmpcall,
5141 &feature_sram,5109 &feature_sram,
5142 &feature_mul,5110 &feature_addsubiw,
5143 &feature_avr0,5111 &feature_elpm,
5144 &feature_spmx,
5145 &feature_lpm,
5146 &feature_eijmpcall,5112 &feature_eijmpcall,
5113 &feature_mul,
5147 &feature_break,5114 &feature_break,
5148 &feature_spm,5115 &feature_lpm,
5149 &feature_elpmx,5116 &feature_elpmx,
5150 &feature_elpm,5117 &feature_avr0,
5151 &feature_addsubiw,5118 &feature_movw,
5152 &feature_des,5119 &feature_spmx,
5153 &feature_xmega,5120 &feature_xmega,
5154 },5121 },
5155};5122};
...@@ -5158,22 +5125,22 @@ pub const cpu_avrxmega2 = Cpu{...@@ -5158,22 +5125,22 @@ pub const cpu_avrxmega2 = Cpu{
5158 .name = "avrxmega2",5125 .name = "avrxmega2",
5159 .llvm_name = "avrxmega2",5126 .llvm_name = "avrxmega2",
5160 .subfeatures = &[_]*const Feature {5127 .subfeatures = &[_]*const Feature {
5128 &feature_spm,
5161 &feature_lpmx,5129 &feature_lpmx,
5162 &feature_jmpcall,5130 &feature_des,
5163 &feature_ijmpcall,5131 &feature_ijmpcall,
5164 &feature_movw,5132 &feature_jmpcall,
5165 &feature_sram,5133 &feature_sram,
5166 &feature_mul,5134 &feature_addsubiw,
5167 &feature_avr0,5135 &feature_elpm,
5168 &feature_spmx,
5169 &feature_lpm,
5170 &feature_eijmpcall,5136 &feature_eijmpcall,
5137 &feature_mul,
5171 &feature_break,5138 &feature_break,
5172 &feature_spm,5139 &feature_lpm,
5173 &feature_elpmx,5140 &feature_elpmx,
5174 &feature_elpm,5141 &feature_avr0,
5175 &feature_addsubiw,5142 &feature_movw,
5176 &feature_des,5143 &feature_spmx,
5177 &feature_xmega,5144 &feature_xmega,
5178 },5145 },
5179};5146};
...@@ -5182,22 +5149,22 @@ pub const cpu_avrxmega3 = Cpu{...@@ -5182,22 +5149,22 @@ pub const cpu_avrxmega3 = Cpu{
5182 .name = "avrxmega3",5149 .name = "avrxmega3",
5183 .llvm_name = "avrxmega3",5150 .llvm_name = "avrxmega3",
5184 .subfeatures = &[_]*const Feature {5151 .subfeatures = &[_]*const Feature {
5152 &feature_spm,
5185 &feature_lpmx,5153 &feature_lpmx,
5186 &feature_jmpcall,5154 &feature_des,
5187 &feature_ijmpcall,5155 &feature_ijmpcall,
5188 &feature_movw,5156 &feature_jmpcall,
5189 &feature_sram,5157 &feature_sram,
5190 &feature_mul,5158 &feature_addsubiw,
5191 &feature_avr0,5159 &feature_elpm,
5192 &feature_spmx,
5193 &feature_lpm,
5194 &feature_eijmpcall,5160 &feature_eijmpcall,
5161 &feature_mul,
5195 &feature_break,5162 &feature_break,
5196 &feature_spm,5163 &feature_lpm,
5197 &feature_elpmx,5164 &feature_elpmx,
5198 &feature_elpm,5165 &feature_avr0,
5199 &feature_addsubiw,5166 &feature_movw,
5200 &feature_des,5167 &feature_spmx,
5201 &feature_xmega,5168 &feature_xmega,
5202 },5169 },
5203};5170};
...@@ -5206,22 +5173,22 @@ pub const cpu_avrxmega4 = Cpu{...@@ -5206,22 +5173,22 @@ pub const cpu_avrxmega4 = Cpu{
5206 .name = "avrxmega4",5173 .name = "avrxmega4",
5207 .llvm_name = "avrxmega4",5174 .llvm_name = "avrxmega4",
5208 .subfeatures = &[_]*const Feature {5175 .subfeatures = &[_]*const Feature {
5176 &feature_spm,
5209 &feature_lpmx,5177 &feature_lpmx,
5210 &feature_jmpcall,5178 &feature_des,
5211 &feature_ijmpcall,5179 &feature_ijmpcall,
5212 &feature_movw,5180 &feature_jmpcall,
5213 &feature_sram,5181 &feature_sram,
5214 &feature_mul,5182 &feature_addsubiw,
5215 &feature_avr0,5183 &feature_elpm,
5216 &feature_spmx,
5217 &feature_lpm,
5218 &feature_eijmpcall,5184 &feature_eijmpcall,
5185 &feature_mul,
5219 &feature_break,5186 &feature_break,
5220 &feature_spm,5187 &feature_lpm,
5221 &feature_elpmx,5188 &feature_elpmx,
5222 &feature_elpm,5189 &feature_avr0,
5223 &feature_addsubiw,5190 &feature_movw,
5224 &feature_des,5191 &feature_spmx,
5225 &feature_xmega,5192 &feature_xmega,
5226 },5193 },
5227};5194};
...@@ -5230,22 +5197,22 @@ pub const cpu_avrxmega5 = Cpu{...@@ -5230,22 +5197,22 @@ pub const cpu_avrxmega5 = Cpu{
5230 .name = "avrxmega5",5197 .name = "avrxmega5",
5231 .llvm_name = "avrxmega5",5198 .llvm_name = "avrxmega5",
5232 .subfeatures = &[_]*const Feature {5199 .subfeatures = &[_]*const Feature {
5200 &feature_spm,
5233 &feature_lpmx,5201 &feature_lpmx,
5234 &feature_jmpcall,5202 &feature_des,
5235 &feature_ijmpcall,5203 &feature_ijmpcall,
5236 &feature_movw,5204 &feature_jmpcall,
5237 &feature_sram,5205 &feature_sram,
5238 &feature_mul,5206 &feature_addsubiw,
5239 &feature_avr0,5207 &feature_elpm,
5240 &feature_spmx,
5241 &feature_lpm,
5242 &feature_eijmpcall,5208 &feature_eijmpcall,
5209 &feature_mul,
5243 &feature_break,5210 &feature_break,
5244 &feature_spm,5211 &feature_lpm,
5245 &feature_elpmx,5212 &feature_elpmx,
5246 &feature_elpm,5213 &feature_avr0,
5247 &feature_addsubiw,5214 &feature_movw,
5248 &feature_des,5215 &feature_spmx,
5249 &feature_xmega,5216 &feature_xmega,
5250 },5217 },
5251};5218};
...@@ -5254,22 +5221,22 @@ pub const cpu_avrxmega6 = Cpu{...@@ -5254,22 +5221,22 @@ pub const cpu_avrxmega6 = Cpu{
5254 .name = "avrxmega6",5221 .name = "avrxmega6",
5255 .llvm_name = "avrxmega6",5222 .llvm_name = "avrxmega6",
5256 .subfeatures = &[_]*const Feature {5223 .subfeatures = &[_]*const Feature {
5224 &feature_spm,
5257 &feature_lpmx,5225 &feature_lpmx,
5258 &feature_jmpcall,5226 &feature_des,
5259 &feature_ijmpcall,5227 &feature_ijmpcall,
5260 &feature_movw,5228 &feature_jmpcall,
5261 &feature_sram,5229 &feature_sram,
5262 &feature_mul,5230 &feature_addsubiw,
5263 &feature_avr0,5231 &feature_elpm,
5264 &feature_spmx,
5265 &feature_lpm,
5266 &feature_eijmpcall,5232 &feature_eijmpcall,
5233 &feature_mul,
5267 &feature_break,5234 &feature_break,
5268 &feature_spm,5235 &feature_lpm,
5269 &feature_elpmx,5236 &feature_elpmx,
5270 &feature_elpm,5237 &feature_avr0,
5271 &feature_addsubiw,5238 &feature_movw,
5272 &feature_des,5239 &feature_spmx,
5273 &feature_xmega,5240 &feature_xmega,
5274 },5241 },
5275};5242};
...@@ -5278,22 +5245,22 @@ pub const cpu_avrxmega7 = Cpu{...@@ -5278,22 +5245,22 @@ pub const cpu_avrxmega7 = Cpu{
5278 .name = "avrxmega7",5245 .name = "avrxmega7",
5279 .llvm_name = "avrxmega7",5246 .llvm_name = "avrxmega7",
5280 .subfeatures = &[_]*const Feature {5247 .subfeatures = &[_]*const Feature {
5248 &feature_spm,
5281 &feature_lpmx,5249 &feature_lpmx,
5282 &feature_jmpcall,5250 &feature_des,
5283 &feature_ijmpcall,5251 &feature_ijmpcall,
5284 &feature_movw,5252 &feature_jmpcall,
5285 &feature_sram,5253 &feature_sram,
5286 &feature_mul,5254 &feature_addsubiw,
5287 &feature_avr0,5255 &feature_elpm,
5288 &feature_spmx,
5289 &feature_lpm,
5290 &feature_eijmpcall,5256 &feature_eijmpcall,
5257 &feature_mul,
5291 &feature_break,5258 &feature_break,
5292 &feature_spm,5259 &feature_lpm,
5293 &feature_elpmx,5260 &feature_elpmx,
5294 &feature_elpm,5261 &feature_avr0,
5295 &feature_addsubiw,5262 &feature_movw,
5296 &feature_des,5263 &feature_spmx,
5297 &feature_xmega,5264 &feature_xmega,
5298 },5265 },
5299};5266};
...@@ -5302,17 +5269,17 @@ pub const cpu_m3000 = Cpu{...@@ -5302,17 +5269,17 @@ pub const cpu_m3000 = Cpu{
5302 .name = "m3000",5269 .name = "m3000",
5303 .llvm_name = "m3000",5270 .llvm_name = "m3000",
5304 .subfeatures = &[_]*const Feature {5271 .subfeatures = &[_]*const Feature {
5272 &feature_spm,
5305 &feature_lpmx,5273 &feature_lpmx,
5306 &feature_jmpcall,
5307 &feature_ijmpcall,5274 &feature_ijmpcall,
5308 &feature_movw,5275 &feature_jmpcall,
5309 &feature_sram,5276 &feature_sram,
5277 &feature_addsubiw,
5310 &feature_mul,5278 &feature_mul,
5311 &feature_avr0,
5312 &feature_lpm,
5313 &feature_break,5279 &feature_break,
5314 &feature_spm,5280 &feature_lpm,
5315 &feature_addsubiw,5281 &feature_avr0,
5282 &feature_movw,
5316 &feature_avr5,5283 &feature_avr5,
5317 },5284 },
5318};5285};
lib/std/target/bpf.zig-3
...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_alu32 = Feature{4pub const feature_alu32 = Feature{
5 .name = "alu32",5 .name = "alu32",
6 .description = "Enable ALU32 instructions",6 .description = "Enable ALU32 instructions",
7 .llvm_name = "alu32",
8 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
9 },8 },
10};9};
...@@ -12,7 +11,6 @@ pub const feature_alu32 = Feature{...@@ -12,7 +11,6 @@ pub const feature_alu32 = Feature{
12pub const feature_dummy = Feature{11pub const feature_dummy = Feature{
13 .name = "dummy",12 .name = "dummy",
14 .description = "unused feature",13 .description = "unused feature",
15 .llvm_name = "dummy",
16 .subfeatures = &[_]*const Feature {14 .subfeatures = &[_]*const Feature {
17 },15 },
18};16};
...@@ -20,7 +18,6 @@ pub const feature_dummy = Feature{...@@ -20,7 +18,6 @@ pub const feature_dummy = Feature{
20pub const feature_dwarfris = Feature{18pub const feature_dwarfris = Feature{
21 .name = "dwarfris",19 .name = "dwarfris",
22 .description = "Disable MCAsmInfo DwarfUsesRelocationsAcrossSections",20 .description = "Disable MCAsmInfo DwarfUsesRelocationsAcrossSections",
23 .llvm_name = "dwarfris",
24 .subfeatures = &[_]*const Feature {21 .subfeatures = &[_]*const Feature {
25 },22 },
26};23};
lib/std/target/hexagon.zig-24
...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_v5 = Feature{4pub const feature_v5 = Feature{
5 .name = "v5",5 .name = "v5",
6 .description = "Enable Hexagon V5 architecture",6 .description = "Enable Hexagon V5 architecture",
7 .llvm_name = "v5",
8 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
9 },8 },
10};9};
...@@ -12,7 +11,6 @@ pub const feature_v5 = Feature{...@@ -12,7 +11,6 @@ pub const feature_v5 = Feature{
12pub const feature_v55 = Feature{11pub const feature_v55 = Feature{
13 .name = "v55",12 .name = "v55",
14 .description = "Enable Hexagon V55 architecture",13 .description = "Enable Hexagon V55 architecture",
15 .llvm_name = "v55",
16 .subfeatures = &[_]*const Feature {14 .subfeatures = &[_]*const Feature {
17 },15 },
18};16};
...@@ -20,7 +18,6 @@ pub const feature_v55 = Feature{...@@ -20,7 +18,6 @@ pub const feature_v55 = Feature{
20pub const feature_v60 = Feature{18pub const feature_v60 = Feature{
21 .name = "v60",19 .name = "v60",
22 .description = "Enable Hexagon V60 architecture",20 .description = "Enable Hexagon V60 architecture",
23 .llvm_name = "v60",
24 .subfeatures = &[_]*const Feature {21 .subfeatures = &[_]*const Feature {
25 },22 },
26};23};
...@@ -28,7 +25,6 @@ pub const feature_v60 = Feature{...@@ -28,7 +25,6 @@ pub const feature_v60 = Feature{
28pub const feature_v62 = Feature{25pub const feature_v62 = Feature{
29 .name = "v62",26 .name = "v62",
30 .description = "Enable Hexagon V62 architecture",27 .description = "Enable Hexagon V62 architecture",
31 .llvm_name = "v62",
32 .subfeatures = &[_]*const Feature {28 .subfeatures = &[_]*const Feature {
33 },29 },
34};30};
...@@ -36,7 +32,6 @@ pub const feature_v62 = Feature{...@@ -36,7 +32,6 @@ pub const feature_v62 = Feature{
36pub const feature_v65 = Feature{32pub const feature_v65 = Feature{
37 .name = "v65",33 .name = "v65",
38 .description = "Enable Hexagon V65 architecture",34 .description = "Enable Hexagon V65 architecture",
39 .llvm_name = "v65",
40 .subfeatures = &[_]*const Feature {35 .subfeatures = &[_]*const Feature {
41 },36 },
42};37};
...@@ -44,7 +39,6 @@ pub const feature_v65 = Feature{...@@ -44,7 +39,6 @@ pub const feature_v65 = Feature{
44pub const feature_v66 = Feature{39pub const feature_v66 = Feature{
45 .name = "v66",40 .name = "v66",
46 .description = "Enable Hexagon V66 architecture",41 .description = "Enable Hexagon V66 architecture",
47 .llvm_name = "v66",
48 .subfeatures = &[_]*const Feature {42 .subfeatures = &[_]*const Feature {
49 },43 },
50};44};
...@@ -52,7 +46,6 @@ pub const feature_v66 = Feature{...@@ -52,7 +46,6 @@ pub const feature_v66 = Feature{
52pub const feature_hvx = Feature{46pub const feature_hvx = Feature{
53 .name = "hvx",47 .name = "hvx",
54 .description = "Hexagon HVX instructions",48 .description = "Hexagon HVX instructions",
55 .llvm_name = "hvx",
56 .subfeatures = &[_]*const Feature {49 .subfeatures = &[_]*const Feature {
57 },50 },
58};51};
...@@ -60,7 +53,6 @@ pub const feature_hvx = Feature{...@@ -60,7 +53,6 @@ pub const feature_hvx = Feature{
60pub const feature_hvxLength64b = Feature{53pub const feature_hvxLength64b = Feature{
61 .name = "hvx-length64b",54 .name = "hvx-length64b",
62 .description = "Hexagon HVX 64B instructions",55 .description = "Hexagon HVX 64B instructions",
63 .llvm_name = "hvx-length64b",
64 .subfeatures = &[_]*const Feature {56 .subfeatures = &[_]*const Feature {
65 &feature_hvx,57 &feature_hvx,
66 },58 },
...@@ -69,7 +61,6 @@ pub const feature_hvxLength64b = Feature{...@@ -69,7 +61,6 @@ pub const feature_hvxLength64b = Feature{
69pub const feature_hvxLength128b = Feature{61pub const feature_hvxLength128b = Feature{
70 .name = "hvx-length128b",62 .name = "hvx-length128b",
71 .description = "Hexagon HVX 128B instructions",63 .description = "Hexagon HVX 128B instructions",
72 .llvm_name = "hvx-length128b",
73 .subfeatures = &[_]*const Feature {64 .subfeatures = &[_]*const Feature {
74 &feature_hvx,65 &feature_hvx,
75 },66 },
...@@ -78,7 +69,6 @@ pub const feature_hvxLength128b = Feature{...@@ -78,7 +69,6 @@ pub const feature_hvxLength128b = Feature{
78pub const feature_hvxv60 = Feature{69pub const feature_hvxv60 = Feature{
79 .name = "hvxv60",70 .name = "hvxv60",
80 .description = "Hexagon HVX instructions",71 .description = "Hexagon HVX instructions",
81 .llvm_name = "hvxv60",
82 .subfeatures = &[_]*const Feature {72 .subfeatures = &[_]*const Feature {
83 &feature_hvx,73 &feature_hvx,
84 },74 },
...@@ -87,7 +77,6 @@ pub const feature_hvxv60 = Feature{...@@ -87,7 +77,6 @@ pub const feature_hvxv60 = Feature{
87pub const feature_hvxv62 = Feature{77pub const feature_hvxv62 = Feature{
88 .name = "hvxv62",78 .name = "hvxv62",
89 .description = "Hexagon HVX instructions",79 .description = "Hexagon HVX instructions",
90 .llvm_name = "hvxv62",
91 .subfeatures = &[_]*const Feature {80 .subfeatures = &[_]*const Feature {
92 &feature_hvx,81 &feature_hvx,
93 },82 },
...@@ -96,7 +85,6 @@ pub const feature_hvxv62 = Feature{...@@ -96,7 +85,6 @@ pub const feature_hvxv62 = Feature{
96pub const feature_hvxv65 = Feature{85pub const feature_hvxv65 = Feature{
97 .name = "hvxv65",86 .name = "hvxv65",
98 .description = "Hexagon HVX instructions",87 .description = "Hexagon HVX instructions",
99 .llvm_name = "hvxv65",
100 .subfeatures = &[_]*const Feature {88 .subfeatures = &[_]*const Feature {
101 &feature_hvx,89 &feature_hvx,
102 },90 },
...@@ -105,7 +93,6 @@ pub const feature_hvxv65 = Feature{...@@ -105,7 +93,6 @@ pub const feature_hvxv65 = Feature{
105pub const feature_hvxv66 = Feature{93pub const feature_hvxv66 = Feature{
106 .name = "hvxv66",94 .name = "hvxv66",
107 .description = "Hexagon HVX instructions",95 .description = "Hexagon HVX instructions",
108 .llvm_name = "hvxv66",
109 .subfeatures = &[_]*const Feature {96 .subfeatures = &[_]*const Feature {
110 &feature_zreg,97 &feature_zreg,
111 &feature_hvx,98 &feature_hvx,
...@@ -115,7 +102,6 @@ pub const feature_hvxv66 = Feature{...@@ -115,7 +102,6 @@ pub const feature_hvxv66 = Feature{
115pub const feature_zreg = Feature{102pub const feature_zreg = Feature{
116 .name = "zreg",103 .name = "zreg",
117 .description = "Hexagon ZReg extension instructions",104 .description = "Hexagon ZReg extension instructions",
118 .llvm_name = "zreg",
119 .subfeatures = &[_]*const Feature {105 .subfeatures = &[_]*const Feature {
120 },106 },
121};107};
...@@ -123,7 +109,6 @@ pub const feature_zreg = Feature{...@@ -123,7 +109,6 @@ pub const feature_zreg = Feature{
123pub const feature_duplex = Feature{109pub const feature_duplex = Feature{
124 .name = "duplex",110 .name = "duplex",
125 .description = "Enable generation of duplex instruction",111 .description = "Enable generation of duplex instruction",
126 .llvm_name = "duplex",
127 .subfeatures = &[_]*const Feature {112 .subfeatures = &[_]*const Feature {
128 },113 },
129};114};
...@@ -131,7 +116,6 @@ pub const feature_duplex = Feature{...@@ -131,7 +116,6 @@ pub const feature_duplex = Feature{
131pub const feature_longCalls = Feature{116pub const feature_longCalls = Feature{
132 .name = "long-calls",117 .name = "long-calls",
133 .description = "Use constant-extended calls",118 .description = "Use constant-extended calls",
134 .llvm_name = "long-calls",
135 .subfeatures = &[_]*const Feature {119 .subfeatures = &[_]*const Feature {
136 },120 },
137};121};
...@@ -139,7 +123,6 @@ pub const feature_longCalls = Feature{...@@ -139,7 +123,6 @@ pub const feature_longCalls = Feature{
139pub const feature_mem_noshuf = Feature{123pub const feature_mem_noshuf = Feature{
140 .name = "mem_noshuf",124 .name = "mem_noshuf",
141 .description = "Supports mem_noshuf feature",125 .description = "Supports mem_noshuf feature",
142 .llvm_name = "mem_noshuf",
143 .subfeatures = &[_]*const Feature {126 .subfeatures = &[_]*const Feature {
144 },127 },
145};128};
...@@ -147,7 +130,6 @@ pub const feature_mem_noshuf = Feature{...@@ -147,7 +130,6 @@ pub const feature_mem_noshuf = Feature{
147pub const feature_memops = Feature{130pub const feature_memops = Feature{
148 .name = "memops",131 .name = "memops",
149 .description = "Use memop instructions",132 .description = "Use memop instructions",
150 .llvm_name = "memops",
151 .subfeatures = &[_]*const Feature {133 .subfeatures = &[_]*const Feature {
152 },134 },
153};135};
...@@ -155,7 +137,6 @@ pub const feature_memops = Feature{...@@ -155,7 +137,6 @@ pub const feature_memops = Feature{
155pub const feature_nvj = Feature{137pub const feature_nvj = Feature{
156 .name = "nvj",138 .name = "nvj",
157 .description = "Support for new-value jumps",139 .description = "Support for new-value jumps",
158 .llvm_name = "nvj",
159 .subfeatures = &[_]*const Feature {140 .subfeatures = &[_]*const Feature {
160 &feature_packets,141 &feature_packets,
161 },142 },
...@@ -164,7 +145,6 @@ pub const feature_nvj = Feature{...@@ -164,7 +145,6 @@ pub const feature_nvj = Feature{
164pub const feature_nvs = Feature{145pub const feature_nvs = Feature{
165 .name = "nvs",146 .name = "nvs",
166 .description = "Support for new-value stores",147 .description = "Support for new-value stores",
167 .llvm_name = "nvs",
168 .subfeatures = &[_]*const Feature {148 .subfeatures = &[_]*const Feature {
169 &feature_packets,149 &feature_packets,
170 },150 },
...@@ -173,7 +153,6 @@ pub const feature_nvs = Feature{...@@ -173,7 +153,6 @@ pub const feature_nvs = Feature{
173pub const feature_noreturnStackElim = Feature{153pub const feature_noreturnStackElim = Feature{
174 .name = "noreturn-stack-elim",154 .name = "noreturn-stack-elim",
175 .description = "Eliminate stack allocation in a noreturn function when possible",155 .description = "Eliminate stack allocation in a noreturn function when possible",
176 .llvm_name = "noreturn-stack-elim",
177 .subfeatures = &[_]*const Feature {156 .subfeatures = &[_]*const Feature {
178 },157 },
179};158};
...@@ -181,7 +160,6 @@ pub const feature_noreturnStackElim = Feature{...@@ -181,7 +160,6 @@ pub const feature_noreturnStackElim = Feature{
181pub const feature_packets = Feature{160pub const feature_packets = Feature{
182 .name = "packets",161 .name = "packets",
183 .description = "Support for instruction packets",162 .description = "Support for instruction packets",
184 .llvm_name = "packets",
185 .subfeatures = &[_]*const Feature {163 .subfeatures = &[_]*const Feature {
186 },164 },
187};165};
...@@ -189,7 +167,6 @@ pub const feature_packets = Feature{...@@ -189,7 +167,6 @@ pub const feature_packets = Feature{
189pub const feature_reservedR19 = Feature{167pub const feature_reservedR19 = Feature{
190 .name = "reserved-r19",168 .name = "reserved-r19",
191 .description = "Reserve register R19",169 .description = "Reserve register R19",
192 .llvm_name = "reserved-r19",
193 .subfeatures = &[_]*const Feature {170 .subfeatures = &[_]*const Feature {
194 },171 },
195};172};
...@@ -197,7 +174,6 @@ pub const feature_reservedR19 = Feature{...@@ -197,7 +174,6 @@ pub const feature_reservedR19 = Feature{
197pub const feature_smallData = Feature{174pub const feature_smallData = Feature{
198 .name = "small-data",175 .name = "small-data",
199 .description = "Allow GP-relative addressing of global variables",176 .description = "Allow GP-relative addressing of global variables",
200 .llvm_name = "small-data",
201 .subfeatures = &[_]*const Feature {177 .subfeatures = &[_]*const Feature {
202 },178 },
203};179};
lib/std/target/mips.zig+120-170
...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_abs2008 = Feature{4pub const feature_abs2008 = Feature{
5 .name = "abs2008",5 .name = "abs2008",
6 .description = "Disable IEEE 754-2008 abs.fmt mode",6 .description = "Disable IEEE 754-2008 abs.fmt mode",
7 .llvm_name = "abs2008",
8 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
9 },8 },
10};9};
...@@ -12,7 +11,6 @@ pub const feature_abs2008 = Feature{...@@ -12,7 +11,6 @@ pub const feature_abs2008 = Feature{
12pub const feature_crc = Feature{11pub const feature_crc = Feature{
13 .name = "crc",12 .name = "crc",
14 .description = "Mips R6 CRC ASE",13 .description = "Mips R6 CRC ASE",
15 .llvm_name = "crc",
16 .subfeatures = &[_]*const Feature {14 .subfeatures = &[_]*const Feature {
17 },15 },
18};16};
...@@ -20,23 +18,21 @@ pub const feature_crc = Feature{...@@ -20,23 +18,21 @@ pub const feature_crc = Feature{
20pub const feature_cnmips = Feature{18pub const feature_cnmips = Feature{
21 .name = "cnmips",19 .name = "cnmips",
22 .description = "Octeon cnMIPS Support",20 .description = "Octeon cnMIPS Support",
23 .llvm_name = "cnmips",
24 .subfeatures = &[_]*const Feature {21 .subfeatures = &[_]*const Feature {
25 &feature_mips4_32,
26 &feature_mips3_32r2,22 &feature_mips3_32r2,
27 &feature_mips1,
28 &feature_gp64,
29 &feature_mips4_32r2,
30 &feature_mips5_32r2,
31 &feature_mips3_32,23 &feature_mips3_32,
24 &feature_mips4_32r2,
25 &feature_mips1,
32 &feature_fp64,26 &feature_fp64,
27 &feature_mips5_32r2,
28 &feature_gp64,
29 &feature_mips4_32,
33 },30 },
34};31};
3532
36pub const feature_dsp = Feature{33pub const feature_dsp = Feature{
37 .name = "dsp",34 .name = "dsp",
38 .description = "Mips DSP ASE",35 .description = "Mips DSP ASE",
39 .llvm_name = "dsp",
40 .subfeatures = &[_]*const Feature {36 .subfeatures = &[_]*const Feature {
41 },37 },
42};38};
...@@ -44,7 +40,6 @@ pub const feature_dsp = Feature{...@@ -44,7 +40,6 @@ pub const feature_dsp = Feature{
44pub const feature_dspr2 = Feature{40pub const feature_dspr2 = Feature{
45 .name = "dspr2",41 .name = "dspr2",
46 .description = "Mips DSP-R2 ASE",42 .description = "Mips DSP-R2 ASE",
47 .llvm_name = "dspr2",
48 .subfeatures = &[_]*const Feature {43 .subfeatures = &[_]*const Feature {
49 &feature_dsp,44 &feature_dsp,
50 },45 },
...@@ -53,7 +48,6 @@ pub const feature_dspr2 = Feature{...@@ -53,7 +48,6 @@ pub const feature_dspr2 = Feature{
53pub const feature_dspr3 = Feature{48pub const feature_dspr3 = Feature{
54 .name = "dspr3",49 .name = "dspr3",
55 .description = "Mips DSP-R3 ASE",50 .description = "Mips DSP-R3 ASE",
56 .llvm_name = "dspr3",
57 .subfeatures = &[_]*const Feature {51 .subfeatures = &[_]*const Feature {
58 &feature_dsp,52 &feature_dsp,
59 },53 },
...@@ -62,7 +56,6 @@ pub const feature_dspr3 = Feature{...@@ -62,7 +56,6 @@ pub const feature_dspr3 = Feature{
62pub const feature_eva = Feature{56pub const feature_eva = Feature{
63 .name = "eva",57 .name = "eva",
64 .description = "Mips EVA ASE",58 .description = "Mips EVA ASE",
65 .llvm_name = "eva",
66 .subfeatures = &[_]*const Feature {59 .subfeatures = &[_]*const Feature {
67 },60 },
68};61};
...@@ -70,7 +63,6 @@ pub const feature_eva = Feature{...@@ -70,7 +63,6 @@ pub const feature_eva = Feature{
70pub const feature_fp64 = Feature{63pub const feature_fp64 = Feature{
71 .name = "fp64",64 .name = "fp64",
72 .description = "Support 64-bit FP registers",65 .description = "Support 64-bit FP registers",
73 .llvm_name = "fp64",
74 .subfeatures = &[_]*const Feature {66 .subfeatures = &[_]*const Feature {
75 },67 },
76};68};
...@@ -78,7 +70,6 @@ pub const feature_fp64 = Feature{...@@ -78,7 +70,6 @@ pub const feature_fp64 = Feature{
78pub const feature_fpxx = Feature{70pub const feature_fpxx = Feature{
79 .name = "fpxx",71 .name = "fpxx",
80 .description = "Support for FPXX",72 .description = "Support for FPXX",
81 .llvm_name = "fpxx",
82 .subfeatures = &[_]*const Feature {73 .subfeatures = &[_]*const Feature {
83 },74 },
84};75};
...@@ -86,7 +77,6 @@ pub const feature_fpxx = Feature{...@@ -86,7 +77,6 @@ pub const feature_fpxx = Feature{
86pub const feature_ginv = Feature{77pub const feature_ginv = Feature{
87 .name = "ginv",78 .name = "ginv",
88 .description = "Mips Global Invalidate ASE",79 .description = "Mips Global Invalidate ASE",
89 .llvm_name = "ginv",
90 .subfeatures = &[_]*const Feature {80 .subfeatures = &[_]*const Feature {
91 },81 },
92};82};
...@@ -94,7 +84,6 @@ pub const feature_ginv = Feature{...@@ -94,7 +84,6 @@ pub const feature_ginv = Feature{
94pub const feature_gp64 = Feature{84pub const feature_gp64 = Feature{
95 .name = "gp64",85 .name = "gp64",
96 .description = "General Purpose Registers are 64-bit wide",86 .description = "General Purpose Registers are 64-bit wide",
97 .llvm_name = "gp64",
98 .subfeatures = &[_]*const Feature {87 .subfeatures = &[_]*const Feature {
99 },88 },
100};89};
...@@ -102,7 +91,6 @@ pub const feature_gp64 = Feature{...@@ -102,7 +91,6 @@ pub const feature_gp64 = Feature{
102pub const feature_longCalls = Feature{91pub const feature_longCalls = Feature{
103 .name = "long-calls",92 .name = "long-calls",
104 .description = "Disable use of the jal instruction",93 .description = "Disable use of the jal instruction",
105 .llvm_name = "long-calls",
106 .subfeatures = &[_]*const Feature {94 .subfeatures = &[_]*const Feature {
107 },95 },
108};96};
...@@ -110,7 +98,6 @@ pub const feature_longCalls = Feature{...@@ -110,7 +98,6 @@ pub const feature_longCalls = Feature{
110pub const feature_msa = Feature{98pub const feature_msa = Feature{
111 .name = "msa",99 .name = "msa",
112 .description = "Mips MSA ASE",100 .description = "Mips MSA ASE",
113 .llvm_name = "msa",
114 .subfeatures = &[_]*const Feature {101 .subfeatures = &[_]*const Feature {
115 },102 },
116};103};
...@@ -118,7 +105,6 @@ pub const feature_msa = Feature{...@@ -118,7 +105,6 @@ pub const feature_msa = Feature{
118pub const feature_mt = Feature{105pub const feature_mt = Feature{
119 .name = "mt",106 .name = "mt",
120 .description = "Mips MT ASE",107 .description = "Mips MT ASE",
121 .llvm_name = "mt",
122 .subfeatures = &[_]*const Feature {108 .subfeatures = &[_]*const Feature {
123 },109 },
124};110};
...@@ -126,7 +112,6 @@ pub const feature_mt = Feature{...@@ -126,7 +112,6 @@ pub const feature_mt = Feature{
126pub const feature_nomadd4 = Feature{112pub const feature_nomadd4 = Feature{
127 .name = "nomadd4",113 .name = "nomadd4",
128 .description = "Disable 4-operand madd.fmt and related instructions",114 .description = "Disable 4-operand madd.fmt and related instructions",
129 .llvm_name = "nomadd4",
130 .subfeatures = &[_]*const Feature {115 .subfeatures = &[_]*const Feature {
131 },116 },
132};117};
...@@ -134,7 +119,6 @@ pub const feature_nomadd4 = Feature{...@@ -134,7 +119,6 @@ pub const feature_nomadd4 = Feature{
134pub const feature_micromips = Feature{119pub const feature_micromips = Feature{
135 .name = "micromips",120 .name = "micromips",
136 .description = "microMips mode",121 .description = "microMips mode",
137 .llvm_name = "micromips",
138 .subfeatures = &[_]*const Feature {122 .subfeatures = &[_]*const Feature {
139 },123 },
140};124};
...@@ -142,7 +126,6 @@ pub const feature_micromips = Feature{...@@ -142,7 +126,6 @@ pub const feature_micromips = Feature{
142pub const feature_mips1 = Feature{126pub const feature_mips1 = Feature{
143 .name = "mips1",127 .name = "mips1",
144 .description = "Mips I ISA Support [highly experimental]",128 .description = "Mips I ISA Support [highly experimental]",
145 .llvm_name = "mips1",
146 .subfeatures = &[_]*const Feature {129 .subfeatures = &[_]*const Feature {
147 },130 },
148};131};
...@@ -150,7 +133,6 @@ pub const feature_mips1 = Feature{...@@ -150,7 +133,6 @@ pub const feature_mips1 = Feature{
150pub const feature_mips2 = Feature{133pub const feature_mips2 = Feature{
151 .name = "mips2",134 .name = "mips2",
152 .description = "Mips II ISA Support [highly experimental]",135 .description = "Mips II ISA Support [highly experimental]",
153 .llvm_name = "mips2",
154 .subfeatures = &[_]*const Feature {136 .subfeatures = &[_]*const Feature {
155 &feature_mips1,137 &feature_mips1,
156 },138 },
...@@ -159,20 +141,18 @@ pub const feature_mips2 = Feature{...@@ -159,20 +141,18 @@ pub const feature_mips2 = Feature{
159pub const feature_mips3 = Feature{141pub const feature_mips3 = Feature{
160 .name = "mips3",142 .name = "mips3",
161 .description = "MIPS III ISA Support [highly experimental]",143 .description = "MIPS III ISA Support [highly experimental]",
162 .llvm_name = "mips3",
163 .subfeatures = &[_]*const Feature {144 .subfeatures = &[_]*const Feature {
164 &feature_mips3_32r2,145 &feature_mips3_32r2,
165 &feature_mips1,
166 &feature_gp64,
167 &feature_mips3_32,146 &feature_mips3_32,
147 &feature_mips1,
168 &feature_fp64,148 &feature_fp64,
149 &feature_gp64,
169 },150 },
170};151};
171152
172pub const feature_mips3_32 = Feature{153pub const feature_mips3_32 = Feature{
173 .name = "mips3_32",154 .name = "mips3_32",
174 .description = "Subset of MIPS-III that is also in MIPS32 [highly experimental]",155 .description = "Subset of MIPS-III that is also in MIPS32 [highly experimental]",
175 .llvm_name = "mips3_32",
176 .subfeatures = &[_]*const Feature {156 .subfeatures = &[_]*const Feature {
177 },157 },
178};158};
...@@ -180,7 +160,6 @@ pub const feature_mips3_32 = Feature{...@@ -180,7 +160,6 @@ pub const feature_mips3_32 = Feature{
180pub const feature_mips3_32r2 = Feature{160pub const feature_mips3_32r2 = Feature{
181 .name = "mips3_32r2",161 .name = "mips3_32r2",
182 .description = "Subset of MIPS-III that is also in MIPS32r2 [highly experimental]",162 .description = "Subset of MIPS-III that is also in MIPS32r2 [highly experimental]",
183 .llvm_name = "mips3_32r2",
184 .subfeatures = &[_]*const Feature {163 .subfeatures = &[_]*const Feature {
185 },164 },
186};165};
...@@ -188,22 +167,20 @@ pub const feature_mips3_32r2 = Feature{...@@ -188,22 +167,20 @@ pub const feature_mips3_32r2 = Feature{
188pub const feature_mips4 = Feature{167pub const feature_mips4 = Feature{
189 .name = "mips4",168 .name = "mips4",
190 .description = "MIPS IV ISA Support",169 .description = "MIPS IV ISA Support",
191 .llvm_name = "mips4",
192 .subfeatures = &[_]*const Feature {170 .subfeatures = &[_]*const Feature {
193 &feature_mips4_32,
194 &feature_mips3_32r2,171 &feature_mips3_32r2,
195 &feature_mips1,
196 &feature_gp64,
197 &feature_mips4_32r2,
198 &feature_mips3_32,172 &feature_mips3_32,
173 &feature_mips4_32r2,
174 &feature_mips1,
199 &feature_fp64,175 &feature_fp64,
176 &feature_gp64,
177 &feature_mips4_32,
200 },178 },
201};179};
202180
203pub const feature_mips4_32 = Feature{181pub const feature_mips4_32 = Feature{
204 .name = "mips4_32",182 .name = "mips4_32",
205 .description = "Subset of MIPS-IV that is also in MIPS32 [highly experimental]",183 .description = "Subset of MIPS-IV that is also in MIPS32 [highly experimental]",
206 .llvm_name = "mips4_32",
207 .subfeatures = &[_]*const Feature {184 .subfeatures = &[_]*const Feature {
208 },185 },
209};186};
...@@ -211,7 +188,6 @@ pub const feature_mips4_32 = Feature{...@@ -211,7 +188,6 @@ pub const feature_mips4_32 = Feature{
211pub const feature_mips4_32r2 = Feature{188pub const feature_mips4_32r2 = Feature{
212 .name = "mips4_32r2",189 .name = "mips4_32r2",
213 .description = "Subset of MIPS-IV that is also in MIPS32r2 [highly experimental]",190 .description = "Subset of MIPS-IV that is also in MIPS32r2 [highly experimental]",
214 .llvm_name = "mips4_32r2",
215 .subfeatures = &[_]*const Feature {191 .subfeatures = &[_]*const Feature {
216 },192 },
217};193};
...@@ -219,23 +195,21 @@ pub const feature_mips4_32r2 = Feature{...@@ -219,23 +195,21 @@ pub const feature_mips4_32r2 = Feature{
219pub const feature_mips5 = Feature{195pub const feature_mips5 = Feature{
220 .name = "mips5",196 .name = "mips5",
221 .description = "MIPS V ISA Support [highly experimental]",197 .description = "MIPS V ISA Support [highly experimental]",
222 .llvm_name = "mips5",
223 .subfeatures = &[_]*const Feature {198 .subfeatures = &[_]*const Feature {
224 &feature_mips4_32,
225 &feature_mips3_32r2,199 &feature_mips3_32r2,
226 &feature_mips1,
227 &feature_gp64,
228 &feature_mips4_32r2,
229 &feature_mips5_32r2,
230 &feature_mips3_32,200 &feature_mips3_32,
201 &feature_mips4_32r2,
202 &feature_mips1,
231 &feature_fp64,203 &feature_fp64,
204 &feature_mips5_32r2,
205 &feature_gp64,
206 &feature_mips4_32,
232 },207 },
233};208};
234209
235pub const feature_mips5_32r2 = Feature{210pub const feature_mips5_32r2 = Feature{
236 .name = "mips5_32r2",211 .name = "mips5_32r2",
237 .description = "Subset of MIPS-V that is also in MIPS32r2 [highly experimental]",212 .description = "Subset of MIPS-V that is also in MIPS32r2 [highly experimental]",
238 .llvm_name = "mips5_32r2",
239 .subfeatures = &[_]*const Feature {213 .subfeatures = &[_]*const Feature {
240 },214 },
241};215};
...@@ -243,7 +217,6 @@ pub const feature_mips5_32r2 = Feature{...@@ -243,7 +217,6 @@ pub const feature_mips5_32r2 = Feature{
243pub const feature_mips16 = Feature{217pub const feature_mips16 = Feature{
244 .name = "mips16",218 .name = "mips16",
245 .description = "Mips16 mode",219 .description = "Mips16 mode",
246 .llvm_name = "mips16",
247 .subfeatures = &[_]*const Feature {220 .subfeatures = &[_]*const Feature {
248 },221 },
249};222};
...@@ -251,159 +224,148 @@ pub const feature_mips16 = Feature{...@@ -251,159 +224,148 @@ pub const feature_mips16 = Feature{
251pub const feature_mips32 = Feature{224pub const feature_mips32 = Feature{
252 .name = "mips32",225 .name = "mips32",
253 .description = "Mips32 ISA Support",226 .description = "Mips32 ISA Support",
254 .llvm_name = "mips32",
255 .subfeatures = &[_]*const Feature {227 .subfeatures = &[_]*const Feature {
228 &feature_mips1,
256 &feature_mips4_32,229 &feature_mips4_32,
257 &feature_mips3_32,230 &feature_mips3_32,
258 &feature_mips1,
259 },231 },
260};232};
261233
262pub const feature_mips32r2 = Feature{234pub const feature_mips32r2 = Feature{
263 .name = "mips32r2",235 .name = "mips32r2",
264 .description = "Mips32r2 ISA Support",236 .description = "Mips32r2 ISA Support",
265 .llvm_name = "mips32r2",
266 .subfeatures = &[_]*const Feature {237 .subfeatures = &[_]*const Feature {
267 &feature_mips4_32,
268 &feature_mips3_32r2,238 &feature_mips3_32r2,
269 &feature_mips1,239 &feature_mips3_32,
270 &feature_mips4_32r2,240 &feature_mips4_32r2,
241 &feature_mips1,
271 &feature_mips5_32r2,242 &feature_mips5_32r2,
272 &feature_mips3_32,243 &feature_mips4_32,
273 },244 },
274};245};
275246
276pub const feature_mips32r3 = Feature{247pub const feature_mips32r3 = Feature{
277 .name = "mips32r3",248 .name = "mips32r3",
278 .description = "Mips32r3 ISA Support",249 .description = "Mips32r3 ISA Support",
279 .llvm_name = "mips32r3",
280 .subfeatures = &[_]*const Feature {250 .subfeatures = &[_]*const Feature {
281 &feature_mips4_32,
282 &feature_mips3_32r2,251 &feature_mips3_32r2,
283 &feature_mips1,252 &feature_mips3_32,
284 &feature_mips4_32r2,253 &feature_mips4_32r2,
254 &feature_mips1,
285 &feature_mips5_32r2,255 &feature_mips5_32r2,
286 &feature_mips3_32,256 &feature_mips4_32,
287 },257 },
288};258};
289259
290pub const feature_mips32r5 = Feature{260pub const feature_mips32r5 = Feature{
291 .name = "mips32r5",261 .name = "mips32r5",
292 .description = "Mips32r5 ISA Support",262 .description = "Mips32r5 ISA Support",
293 .llvm_name = "mips32r5",
294 .subfeatures = &[_]*const Feature {263 .subfeatures = &[_]*const Feature {
295 &feature_mips4_32,
296 &feature_mips3_32r2,264 &feature_mips3_32r2,
297 &feature_mips1,265 &feature_mips3_32,
298 &feature_mips4_32r2,266 &feature_mips4_32r2,
267 &feature_mips1,
299 &feature_mips5_32r2,268 &feature_mips5_32r2,
300 &feature_mips3_32,269 &feature_mips4_32,
301 },270 },
302};271};
303272
304pub const feature_mips32r6 = Feature{273pub const feature_mips32r6 = Feature{
305 .name = "mips32r6",274 .name = "mips32r6",
306 .description = "Mips32r6 ISA Support [experimental]",275 .description = "Mips32r6 ISA Support [experimental]",
307 .llvm_name = "mips32r6",
308 .subfeatures = &[_]*const Feature {276 .subfeatures = &[_]*const Feature {
309 &feature_mips4_32,
310 &feature_nan2008,
311 &feature_mips3_32r2,277 &feature_mips3_32r2,
278 &feature_mips3_32,
279 &feature_nan2008,
280 &feature_mips4_32r2,
312 &feature_mips1,281 &feature_mips1,
313 &feature_abs2008,282 &feature_abs2008,
314 &feature_mips4_32r2,
315 &feature_mips5_32r2,
316 &feature_mips3_32,
317 &feature_fp64,283 &feature_fp64,
284 &feature_mips5_32r2,
285 &feature_mips4_32,
318 },286 },
319};287};
320288
321pub const feature_mips64 = Feature{289pub const feature_mips64 = Feature{
322 .name = "mips64",290 .name = "mips64",
323 .description = "Mips64 ISA Support",291 .description = "Mips64 ISA Support",
324 .llvm_name = "mips64",
325 .subfeatures = &[_]*const Feature {292 .subfeatures = &[_]*const Feature {
326 &feature_mips4_32,
327 &feature_mips3_32r2,293 &feature_mips3_32r2,
328 &feature_mips1,
329 &feature_gp64,
330 &feature_mips4_32r2,
331 &feature_mips5_32r2,
332 &feature_mips3_32,294 &feature_mips3_32,
295 &feature_mips4_32r2,
296 &feature_mips1,
333 &feature_fp64,297 &feature_fp64,
298 &feature_mips5_32r2,
299 &feature_gp64,
300 &feature_mips4_32,
334 },301 },
335};302};
336303
337pub const feature_mips64r2 = Feature{304pub const feature_mips64r2 = Feature{
338 .name = "mips64r2",305 .name = "mips64r2",
339 .description = "Mips64r2 ISA Support",306 .description = "Mips64r2 ISA Support",
340 .llvm_name = "mips64r2",
341 .subfeatures = &[_]*const Feature {307 .subfeatures = &[_]*const Feature {
342 &feature_mips4_32,
343 &feature_mips3_32r2,308 &feature_mips3_32r2,
344 &feature_mips1,
345 &feature_gp64,
346 &feature_mips4_32r2,
347 &feature_mips5_32r2,
348 &feature_mips3_32,309 &feature_mips3_32,
310 &feature_mips4_32r2,
311 &feature_mips1,
349 &feature_fp64,312 &feature_fp64,
313 &feature_mips5_32r2,
314 &feature_gp64,
315 &feature_mips4_32,
350 },316 },
351};317};
352318
353pub const feature_mips64r3 = Feature{319pub const feature_mips64r3 = Feature{
354 .name = "mips64r3",320 .name = "mips64r3",
355 .description = "Mips64r3 ISA Support",321 .description = "Mips64r3 ISA Support",
356 .llvm_name = "mips64r3",
357 .subfeatures = &[_]*const Feature {322 .subfeatures = &[_]*const Feature {
358 &feature_mips4_32,
359 &feature_mips3_32r2,323 &feature_mips3_32r2,
360 &feature_mips1,
361 &feature_gp64,
362 &feature_mips4_32r2,
363 &feature_mips5_32r2,
364 &feature_mips3_32,324 &feature_mips3_32,
325 &feature_mips4_32r2,
326 &feature_mips1,
365 &feature_fp64,327 &feature_fp64,
328 &feature_mips5_32r2,
329 &feature_gp64,
330 &feature_mips4_32,
366 },331 },
367};332};
368333
369pub const feature_mips64r5 = Feature{334pub const feature_mips64r5 = Feature{
370 .name = "mips64r5",335 .name = "mips64r5",
371 .description = "Mips64r5 ISA Support",336 .description = "Mips64r5 ISA Support",
372 .llvm_name = "mips64r5",
373 .subfeatures = &[_]*const Feature {337 .subfeatures = &[_]*const Feature {
374 &feature_mips4_32,
375 &feature_mips3_32r2,338 &feature_mips3_32r2,
376 &feature_mips1,
377 &feature_gp64,
378 &feature_mips4_32r2,
379 &feature_mips5_32r2,
380 &feature_mips3_32,339 &feature_mips3_32,
340 &feature_mips4_32r2,
341 &feature_mips1,
381 &feature_fp64,342 &feature_fp64,
343 &feature_mips5_32r2,
344 &feature_gp64,
345 &feature_mips4_32,
382 },346 },
383};347};
384348
385pub const feature_mips64r6 = Feature{349pub const feature_mips64r6 = Feature{
386 .name = "mips64r6",350 .name = "mips64r6",
387 .description = "Mips64r6 ISA Support [experimental]",351 .description = "Mips64r6 ISA Support [experimental]",
388 .llvm_name = "mips64r6",
389 .subfeatures = &[_]*const Feature {352 .subfeatures = &[_]*const Feature {
390 &feature_mips4_32,
391 &feature_nan2008,
392 &feature_mips3_32r2,353 &feature_mips3_32r2,
354 &feature_mips3_32,
355 &feature_nan2008,
356 &feature_mips4_32r2,
393 &feature_mips1,357 &feature_mips1,
394 &feature_abs2008,358 &feature_abs2008,
395 &feature_gp64,
396 &feature_mips4_32r2,
397 &feature_mips5_32r2,
398 &feature_mips3_32,
399 &feature_fp64,359 &feature_fp64,
360 &feature_mips5_32r2,
361 &feature_gp64,
362 &feature_mips4_32,
400 },363 },
401};364};
402365
403pub const feature_nan2008 = Feature{366pub const feature_nan2008 = Feature{
404 .name = "nan2008",367 .name = "nan2008",
405 .description = "IEEE 754-2008 NaN encoding",368 .description = "IEEE 754-2008 NaN encoding",
406 .llvm_name = "nan2008",
407 .subfeatures = &[_]*const Feature {369 .subfeatures = &[_]*const Feature {
408 },370 },
409};371};
...@@ -411,7 +373,6 @@ pub const feature_nan2008 = Feature{...@@ -411,7 +373,6 @@ pub const feature_nan2008 = Feature{
411pub const feature_noabicalls = Feature{373pub const feature_noabicalls = Feature{
412 .name = "noabicalls",374 .name = "noabicalls",
413 .description = "Disable SVR4-style position-independent code",375 .description = "Disable SVR4-style position-independent code",
414 .llvm_name = "noabicalls",
415 .subfeatures = &[_]*const Feature {376 .subfeatures = &[_]*const Feature {
416 },377 },
417};378};
...@@ -419,7 +380,6 @@ pub const feature_noabicalls = Feature{...@@ -419,7 +380,6 @@ pub const feature_noabicalls = Feature{
419pub const feature_nooddspreg = Feature{380pub const feature_nooddspreg = Feature{
420 .name = "nooddspreg",381 .name = "nooddspreg",
421 .description = "Disable odd numbered single-precision registers",382 .description = "Disable odd numbered single-precision registers",
422 .llvm_name = "nooddspreg",
423 .subfeatures = &[_]*const Feature {383 .subfeatures = &[_]*const Feature {
424 },384 },
425};385};
...@@ -427,7 +387,6 @@ pub const feature_nooddspreg = Feature{...@@ -427,7 +387,6 @@ pub const feature_nooddspreg = Feature{
427pub const feature_ptr64 = Feature{387pub const feature_ptr64 = Feature{
428 .name = "ptr64",388 .name = "ptr64",
429 .description = "Pointers are 64-bit wide",389 .description = "Pointers are 64-bit wide",
430 .llvm_name = "ptr64",
431 .subfeatures = &[_]*const Feature {390 .subfeatures = &[_]*const Feature {
432 },391 },
433};392};
...@@ -435,7 +394,6 @@ pub const feature_ptr64 = Feature{...@@ -435,7 +394,6 @@ pub const feature_ptr64 = Feature{
435pub const feature_singleFloat = Feature{394pub const feature_singleFloat = Feature{
436 .name = "single-float",395 .name = "single-float",
437 .description = "Only supports single precision float",396 .description = "Only supports single precision float",
438 .llvm_name = "single-float",
439 .subfeatures = &[_]*const Feature {397 .subfeatures = &[_]*const Feature {
440 },398 },
441};399};
...@@ -443,7 +401,6 @@ pub const feature_singleFloat = Feature{...@@ -443,7 +401,6 @@ pub const feature_singleFloat = Feature{
443pub const feature_softFloat = Feature{401pub const feature_softFloat = Feature{
444 .name = "soft-float",402 .name = "soft-float",
445 .description = "Does not support floating point instructions",403 .description = "Does not support floating point instructions",
446 .llvm_name = "soft-float",
447 .subfeatures = &[_]*const Feature {404 .subfeatures = &[_]*const Feature {
448 },405 },
449};406};
...@@ -451,7 +408,6 @@ pub const feature_softFloat = Feature{...@@ -451,7 +408,6 @@ pub const feature_softFloat = Feature{
451pub const feature_sym32 = Feature{408pub const feature_sym32 = Feature{
452 .name = "sym32",409 .name = "sym32",
453 .description = "Symbols are 32 bit on Mips64",410 .description = "Symbols are 32 bit on Mips64",
454 .llvm_name = "sym32",
455 .subfeatures = &[_]*const Feature {411 .subfeatures = &[_]*const Feature {
456 },412 },
457};413};
...@@ -459,7 +415,6 @@ pub const feature_sym32 = Feature{...@@ -459,7 +415,6 @@ pub const feature_sym32 = Feature{
459pub const feature_useIndirectJumpHazard = Feature{415pub const feature_useIndirectJumpHazard = Feature{
460 .name = "use-indirect-jump-hazard",416 .name = "use-indirect-jump-hazard",
461 .description = "Use indirect jump guards to prevent certain speculation based attacks",417 .description = "Use indirect jump guards to prevent certain speculation based attacks",
462 .llvm_name = "use-indirect-jump-hazard",
463 .subfeatures = &[_]*const Feature {418 .subfeatures = &[_]*const Feature {
464 },419 },
465};420};
...@@ -467,7 +422,6 @@ pub const feature_useIndirectJumpHazard = Feature{...@@ -467,7 +422,6 @@ pub const feature_useIndirectJumpHazard = Feature{
467pub const feature_useTccInDiv = Feature{422pub const feature_useTccInDiv = Feature{
468 .name = "use-tcc-in-div",423 .name = "use-tcc-in-div",
469 .description = "Force the assembler to use trapping",424 .description = "Force the assembler to use trapping",
470 .llvm_name = "use-tcc-in-div",
471 .subfeatures = &[_]*const Feature {425 .subfeatures = &[_]*const Feature {
472 },426 },
473};427};
...@@ -475,7 +429,6 @@ pub const feature_useTccInDiv = Feature{...@@ -475,7 +429,6 @@ pub const feature_useTccInDiv = Feature{
475pub const feature_vfpu = Feature{429pub const feature_vfpu = Feature{
476 .name = "vfpu",430 .name = "vfpu",
477 .description = "Enable vector FPU instructions",431 .description = "Enable vector FPU instructions",
478 .llvm_name = "vfpu",
479 .subfeatures = &[_]*const Feature {432 .subfeatures = &[_]*const Feature {
480 },433 },
481};434};
...@@ -483,7 +436,6 @@ pub const feature_vfpu = Feature{...@@ -483,7 +436,6 @@ pub const feature_vfpu = Feature{
483pub const feature_virt = Feature{436pub const feature_virt = Feature{
484 .name = "virt",437 .name = "virt",
485 .description = "Mips Virtualization ASE",438 .description = "Mips Virtualization ASE",
486 .llvm_name = "virt",
487 .subfeatures = &[_]*const Feature {439 .subfeatures = &[_]*const Feature {
488 },440 },
489};441};
...@@ -491,7 +443,6 @@ pub const feature_virt = Feature{...@@ -491,7 +443,6 @@ pub const feature_virt = Feature{
491pub const feature_xgot = Feature{443pub const feature_xgot = Feature{
492 .name = "xgot",444 .name = "xgot",
493 .description = "Assume 32-bit GOT",445 .description = "Assume 32-bit GOT",
494 .llvm_name = "xgot",
495 .subfeatures = &[_]*const Feature {446 .subfeatures = &[_]*const Feature {
496 },447 },
497};448};
...@@ -499,14 +450,13 @@ pub const feature_xgot = Feature{...@@ -499,14 +450,13 @@ pub const feature_xgot = Feature{
499pub const feature_p5600 = Feature{450pub const feature_p5600 = Feature{
500 .name = "p5600",451 .name = "p5600",
501 .description = "The P5600 Processor",452 .description = "The P5600 Processor",
502 .llvm_name = "p5600",
503 .subfeatures = &[_]*const Feature {453 .subfeatures = &[_]*const Feature {
504 &feature_mips4_32,
505 &feature_mips3_32r2,454 &feature_mips3_32r2,
506 &feature_mips1,455 &feature_mips3_32,
507 &feature_mips4_32r2,456 &feature_mips4_32r2,
457 &feature_mips1,
508 &feature_mips5_32r2,458 &feature_mips5_32r2,
509 &feature_mips3_32,459 &feature_mips4_32,
510 },460 },
511};461};
512462
...@@ -585,10 +535,10 @@ pub const cpu_mips3 = Cpu{...@@ -585,10 +535,10 @@ pub const cpu_mips3 = Cpu{
585 .llvm_name = "mips3",535 .llvm_name = "mips3",
586 .subfeatures = &[_]*const Feature {536 .subfeatures = &[_]*const Feature {
587 &feature_mips3_32r2,537 &feature_mips3_32r2,
588 &feature_mips1,
589 &feature_gp64,
590 &feature_mips3_32,538 &feature_mips3_32,
539 &feature_mips1,
591 &feature_fp64,540 &feature_fp64,
541 &feature_gp64,
592 &feature_mips3,542 &feature_mips3,
593 },543 },
594};544};
...@@ -597,9 +547,9 @@ pub const cpu_mips32 = Cpu{...@@ -597,9 +547,9 @@ pub const cpu_mips32 = Cpu{
597 .name = "mips32",547 .name = "mips32",
598 .llvm_name = "mips32",548 .llvm_name = "mips32",
599 .subfeatures = &[_]*const Feature {549 .subfeatures = &[_]*const Feature {
550 &feature_mips1,
600 &feature_mips4_32,551 &feature_mips4_32,
601 &feature_mips3_32,552 &feature_mips3_32,
602 &feature_mips1,
603 &feature_mips32,553 &feature_mips32,
604 },554 },
605};555};
...@@ -608,12 +558,12 @@ pub const cpu_mips32r2 = Cpu{...@@ -608,12 +558,12 @@ pub const cpu_mips32r2 = Cpu{
608 .name = "mips32r2",558 .name = "mips32r2",
609 .llvm_name = "mips32r2",559 .llvm_name = "mips32r2",
610 .subfeatures = &[_]*const Feature {560 .subfeatures = &[_]*const Feature {
611 &feature_mips4_32,
612 &feature_mips3_32r2,561 &feature_mips3_32r2,
613 &feature_mips1,562 &feature_mips3_32,
614 &feature_mips4_32r2,563 &feature_mips4_32r2,
564 &feature_mips1,
615 &feature_mips5_32r2,565 &feature_mips5_32r2,
616 &feature_mips3_32,566 &feature_mips4_32,
617 &feature_mips32r2,567 &feature_mips32r2,
618 },568 },
619};569};
...@@ -622,12 +572,12 @@ pub const cpu_mips32r3 = Cpu{...@@ -622,12 +572,12 @@ pub const cpu_mips32r3 = Cpu{
622 .name = "mips32r3",572 .name = "mips32r3",
623 .llvm_name = "mips32r3",573 .llvm_name = "mips32r3",
624 .subfeatures = &[_]*const Feature {574 .subfeatures = &[_]*const Feature {
625 &feature_mips4_32,
626 &feature_mips3_32r2,575 &feature_mips3_32r2,
627 &feature_mips1,576 &feature_mips3_32,
628 &feature_mips4_32r2,577 &feature_mips4_32r2,
578 &feature_mips1,
629 &feature_mips5_32r2,579 &feature_mips5_32r2,
630 &feature_mips3_32,580 &feature_mips4_32,
631 &feature_mips32r3,581 &feature_mips32r3,
632 },582 },
633};583};
...@@ -636,12 +586,12 @@ pub const cpu_mips32r5 = Cpu{...@@ -636,12 +586,12 @@ pub const cpu_mips32r5 = Cpu{
636 .name = "mips32r5",586 .name = "mips32r5",
637 .llvm_name = "mips32r5",587 .llvm_name = "mips32r5",
638 .subfeatures = &[_]*const Feature {588 .subfeatures = &[_]*const Feature {
639 &feature_mips4_32,
640 &feature_mips3_32r2,589 &feature_mips3_32r2,
641 &feature_mips1,590 &feature_mips3_32,
642 &feature_mips4_32r2,591 &feature_mips4_32r2,
592 &feature_mips1,
643 &feature_mips5_32r2,593 &feature_mips5_32r2,
644 &feature_mips3_32,594 &feature_mips4_32,
645 &feature_mips32r5,595 &feature_mips32r5,
646 },596 },
647};597};
...@@ -650,15 +600,15 @@ pub const cpu_mips32r6 = Cpu{...@@ -650,15 +600,15 @@ pub const cpu_mips32r6 = Cpu{
650 .name = "mips32r6",600 .name = "mips32r6",
651 .llvm_name = "mips32r6",601 .llvm_name = "mips32r6",
652 .subfeatures = &[_]*const Feature {602 .subfeatures = &[_]*const Feature {
653 &feature_mips4_32,
654 &feature_nan2008,
655 &feature_mips3_32r2,603 &feature_mips3_32r2,
604 &feature_mips3_32,
605 &feature_nan2008,
606 &feature_mips4_32r2,
656 &feature_mips1,607 &feature_mips1,
657 &feature_abs2008,608 &feature_abs2008,
658 &feature_mips4_32r2,
659 &feature_mips5_32r2,
660 &feature_mips3_32,
661 &feature_fp64,609 &feature_fp64,
610 &feature_mips5_32r2,
611 &feature_mips4_32,
662 &feature_mips32r6,612 &feature_mips32r6,
663 },613 },
664};614};
...@@ -667,13 +617,13 @@ pub const cpu_mips4 = Cpu{...@@ -667,13 +617,13 @@ pub const cpu_mips4 = Cpu{
667 .name = "mips4",617 .name = "mips4",
668 .llvm_name = "mips4",618 .llvm_name = "mips4",
669 .subfeatures = &[_]*const Feature {619 .subfeatures = &[_]*const Feature {
670 &feature_mips4_32,
671 &feature_mips3_32r2,620 &feature_mips3_32r2,
672 &feature_mips1,
673 &feature_gp64,
674 &feature_mips4_32r2,
675 &feature_mips3_32,621 &feature_mips3_32,
622 &feature_mips4_32r2,
623 &feature_mips1,
676 &feature_fp64,624 &feature_fp64,
625 &feature_gp64,
626 &feature_mips4_32,
677 &feature_mips4,627 &feature_mips4,
678 },628 },
679};629};
...@@ -682,14 +632,14 @@ pub const cpu_mips5 = Cpu{...@@ -682,14 +632,14 @@ pub const cpu_mips5 = Cpu{
682 .name = "mips5",632 .name = "mips5",
683 .llvm_name = "mips5",633 .llvm_name = "mips5",
684 .subfeatures = &[_]*const Feature {634 .subfeatures = &[_]*const Feature {
685 &feature_mips4_32,
686 &feature_mips3_32r2,635 &feature_mips3_32r2,
687 &feature_mips1,
688 &feature_gp64,
689 &feature_mips4_32r2,
690 &feature_mips5_32r2,
691 &feature_mips3_32,636 &feature_mips3_32,
637 &feature_mips4_32r2,
638 &feature_mips1,
692 &feature_fp64,639 &feature_fp64,
640 &feature_mips5_32r2,
641 &feature_gp64,
642 &feature_mips4_32,
693 &feature_mips5,643 &feature_mips5,
694 },644 },
695};645};
...@@ -698,14 +648,14 @@ pub const cpu_mips64 = Cpu{...@@ -698,14 +648,14 @@ pub const cpu_mips64 = Cpu{
698 .name = "mips64",648 .name = "mips64",
699 .llvm_name = "mips64",649 .llvm_name = "mips64",
700 .subfeatures = &[_]*const Feature {650 .subfeatures = &[_]*const Feature {
701 &feature_mips4_32,
702 &feature_mips3_32r2,651 &feature_mips3_32r2,
703 &feature_mips1,
704 &feature_gp64,
705 &feature_mips4_32r2,
706 &feature_mips5_32r2,
707 &feature_mips3_32,652 &feature_mips3_32,
653 &feature_mips4_32r2,
654 &feature_mips1,
708 &feature_fp64,655 &feature_fp64,
656 &feature_mips5_32r2,
657 &feature_gp64,
658 &feature_mips4_32,
709 &feature_mips64,659 &feature_mips64,
710 },660 },
711};661};
...@@ -714,14 +664,14 @@ pub const cpu_mips64r2 = Cpu{...@@ -714,14 +664,14 @@ pub const cpu_mips64r2 = Cpu{
714 .name = "mips64r2",664 .name = "mips64r2",
715 .llvm_name = "mips64r2",665 .llvm_name = "mips64r2",
716 .subfeatures = &[_]*const Feature {666 .subfeatures = &[_]*const Feature {
717 &feature_mips4_32,
718 &feature_mips3_32r2,667 &feature_mips3_32r2,
719 &feature_mips1,
720 &feature_gp64,
721 &feature_mips4_32r2,
722 &feature_mips5_32r2,
723 &feature_mips3_32,668 &feature_mips3_32,
669 &feature_mips4_32r2,
670 &feature_mips1,
724 &feature_fp64,671 &feature_fp64,
672 &feature_mips5_32r2,
673 &feature_gp64,
674 &feature_mips4_32,
725 &feature_mips64r2,675 &feature_mips64r2,
726 },676 },
727};677};
...@@ -730,14 +680,14 @@ pub const cpu_mips64r3 = Cpu{...@@ -730,14 +680,14 @@ pub const cpu_mips64r3 = Cpu{
730 .name = "mips64r3",680 .name = "mips64r3",
731 .llvm_name = "mips64r3",681 .llvm_name = "mips64r3",
732 .subfeatures = &[_]*const Feature {682 .subfeatures = &[_]*const Feature {
733 &feature_mips4_32,
734 &feature_mips3_32r2,683 &feature_mips3_32r2,
735 &feature_mips1,
736 &feature_gp64,
737 &feature_mips4_32r2,
738 &feature_mips5_32r2,
739 &feature_mips3_32,684 &feature_mips3_32,
685 &feature_mips4_32r2,
686 &feature_mips1,
740 &feature_fp64,687 &feature_fp64,
688 &feature_mips5_32r2,
689 &feature_gp64,
690 &feature_mips4_32,
741 &feature_mips64r3,691 &feature_mips64r3,
742 },692 },
743};693};
...@@ -746,14 +696,14 @@ pub const cpu_mips64r5 = Cpu{...@@ -746,14 +696,14 @@ pub const cpu_mips64r5 = Cpu{
746 .name = "mips64r5",696 .name = "mips64r5",
747 .llvm_name = "mips64r5",697 .llvm_name = "mips64r5",
748 .subfeatures = &[_]*const Feature {698 .subfeatures = &[_]*const Feature {
749 &feature_mips4_32,
750 &feature_mips3_32r2,699 &feature_mips3_32r2,
751 &feature_mips1,
752 &feature_gp64,
753 &feature_mips4_32r2,
754 &feature_mips5_32r2,
755 &feature_mips3_32,700 &feature_mips3_32,
701 &feature_mips4_32r2,
702 &feature_mips1,
756 &feature_fp64,703 &feature_fp64,
704 &feature_mips5_32r2,
705 &feature_gp64,
706 &feature_mips4_32,
757 &feature_mips64r5,707 &feature_mips64r5,
758 },708 },
759};709};
...@@ -762,16 +712,16 @@ pub const cpu_mips64r6 = Cpu{...@@ -762,16 +712,16 @@ pub const cpu_mips64r6 = Cpu{
762 .name = "mips64r6",712 .name = "mips64r6",
763 .llvm_name = "mips64r6",713 .llvm_name = "mips64r6",
764 .subfeatures = &[_]*const Feature {714 .subfeatures = &[_]*const Feature {
765 &feature_mips4_32,
766 &feature_nan2008,
767 &feature_mips3_32r2,715 &feature_mips3_32r2,
716 &feature_mips3_32,
717 &feature_nan2008,
718 &feature_mips4_32r2,
768 &feature_mips1,719 &feature_mips1,
769 &feature_abs2008,720 &feature_abs2008,
770 &feature_gp64,
771 &feature_mips4_32r2,
772 &feature_mips5_32r2,
773 &feature_mips3_32,
774 &feature_fp64,721 &feature_fp64,
722 &feature_mips5_32r2,
723 &feature_gp64,
724 &feature_mips4_32,
775 &feature_mips64r6,725 &feature_mips64r6,
776 },726 },
777};727};
...@@ -780,14 +730,14 @@ pub const cpu_octeon = Cpu{...@@ -780,14 +730,14 @@ pub const cpu_octeon = Cpu{
780 .name = "octeon",730 .name = "octeon",
781 .llvm_name = "octeon",731 .llvm_name = "octeon",
782 .subfeatures = &[_]*const Feature {732 .subfeatures = &[_]*const Feature {
783 &feature_mips4_32,
784 &feature_mips3_32r2,733 &feature_mips3_32r2,
785 &feature_mips1,
786 &feature_gp64,
787 &feature_mips4_32r2,
788 &feature_mips5_32r2,
789 &feature_mips3_32,734 &feature_mips3_32,
735 &feature_mips4_32r2,
736 &feature_mips1,
790 &feature_fp64,737 &feature_fp64,
738 &feature_mips5_32r2,
739 &feature_gp64,
740 &feature_mips4_32,
791 &feature_cnmips,741 &feature_cnmips,
792 &feature_mips64r2,742 &feature_mips64r2,
793 },743 },
...@@ -797,12 +747,12 @@ pub const cpu_p5600 = Cpu{...@@ -797,12 +747,12 @@ pub const cpu_p5600 = Cpu{
797 .name = "p5600",747 .name = "p5600",
798 .llvm_name = "p5600",748 .llvm_name = "p5600",
799 .subfeatures = &[_]*const Feature {749 .subfeatures = &[_]*const Feature {
800 &feature_mips4_32,
801 &feature_mips3_32r2,750 &feature_mips3_32r2,
802 &feature_mips1,751 &feature_mips3_32,
803 &feature_mips4_32r2,752 &feature_mips4_32r2,
753 &feature_mips1,
804 &feature_mips5_32r2,754 &feature_mips5_32r2,
805 &feature_mips3_32,755 &feature_mips4_32,
806 &feature_p5600,756 &feature_p5600,
807 },757 },
808};758};
lib/std/target/msp430.zig-4
...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_hwmult16 = Feature{4pub const feature_hwmult16 = Feature{
5 .name = "hwmult16",5 .name = "hwmult16",
6 .description = "Enable 16-bit hardware multiplier",6 .description = "Enable 16-bit hardware multiplier",
7 .llvm_name = "hwmult16",
8 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
9 },8 },
10};9};
...@@ -12,7 +11,6 @@ pub const feature_hwmult16 = Feature{...@@ -12,7 +11,6 @@ pub const feature_hwmult16 = Feature{
12pub const feature_hwmult32 = Feature{11pub const feature_hwmult32 = Feature{
13 .name = "hwmult32",12 .name = "hwmult32",
14 .description = "Enable 32-bit hardware multiplier",13 .description = "Enable 32-bit hardware multiplier",
15 .llvm_name = "hwmult32",
16 .subfeatures = &[_]*const Feature {14 .subfeatures = &[_]*const Feature {
17 },15 },
18};16};
...@@ -20,7 +18,6 @@ pub const feature_hwmult32 = Feature{...@@ -20,7 +18,6 @@ pub const feature_hwmult32 = Feature{
20pub const feature_hwmultf5 = Feature{18pub const feature_hwmultf5 = Feature{
21 .name = "hwmultf5",19 .name = "hwmultf5",
22 .description = "Enable F5 series hardware multiplier",20 .description = "Enable F5 series hardware multiplier",
23 .llvm_name = "hwmultf5",
24 .subfeatures = &[_]*const Feature {21 .subfeatures = &[_]*const Feature {
25 },22 },
26};23};
...@@ -28,7 +25,6 @@ pub const feature_hwmultf5 = Feature{...@@ -28,7 +25,6 @@ pub const feature_hwmultf5 = Feature{
28pub const feature_ext = Feature{25pub const feature_ext = Feature{
29 .name = "ext",26 .name = "ext",
30 .description = "Enable MSP430-X extensions",27 .description = "Enable MSP430-X extensions",
31 .llvm_name = "ext",
32 .subfeatures = &[_]*const Feature {28 .subfeatures = &[_]*const Feature {
33 },29 },
34};30};
lib/std/target/nvptx.zig-25
...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_ptx32 = Feature{4pub const feature_ptx32 = Feature{
5 .name = "ptx32",5 .name = "ptx32",
6 .description = "Use PTX version 3.2",6 .description = "Use PTX version 3.2",
7 .llvm_name = "ptx32",
8 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
9 },8 },
10};9};
...@@ -12,7 +11,6 @@ pub const feature_ptx32 = Feature{...@@ -12,7 +11,6 @@ pub const feature_ptx32 = Feature{
12pub const feature_ptx40 = Feature{11pub const feature_ptx40 = Feature{
13 .name = "ptx40",12 .name = "ptx40",
14 .description = "Use PTX version 4.0",13 .description = "Use PTX version 4.0",
15 .llvm_name = "ptx40",
16 .subfeatures = &[_]*const Feature {14 .subfeatures = &[_]*const Feature {
17 },15 },
18};16};
...@@ -20,7 +18,6 @@ pub const feature_ptx40 = Feature{...@@ -20,7 +18,6 @@ pub const feature_ptx40 = Feature{
20pub const feature_ptx41 = Feature{18pub const feature_ptx41 = Feature{
21 .name = "ptx41",19 .name = "ptx41",
22 .description = "Use PTX version 4.1",20 .description = "Use PTX version 4.1",
23 .llvm_name = "ptx41",
24 .subfeatures = &[_]*const Feature {21 .subfeatures = &[_]*const Feature {
25 },22 },
26};23};
...@@ -28,7 +25,6 @@ pub const feature_ptx41 = Feature{...@@ -28,7 +25,6 @@ pub const feature_ptx41 = Feature{
28pub const feature_ptx42 = Feature{25pub const feature_ptx42 = Feature{
29 .name = "ptx42",26 .name = "ptx42",
30 .description = "Use PTX version 4.2",27 .description = "Use PTX version 4.2",
31 .llvm_name = "ptx42",
32 .subfeatures = &[_]*const Feature {28 .subfeatures = &[_]*const Feature {
33 },29 },
34};30};
...@@ -36,7 +32,6 @@ pub const feature_ptx42 = Feature{...@@ -36,7 +32,6 @@ pub const feature_ptx42 = Feature{
36pub const feature_ptx43 = Feature{32pub const feature_ptx43 = Feature{
37 .name = "ptx43",33 .name = "ptx43",
38 .description = "Use PTX version 4.3",34 .description = "Use PTX version 4.3",
39 .llvm_name = "ptx43",
40 .subfeatures = &[_]*const Feature {35 .subfeatures = &[_]*const Feature {
41 },36 },
42};37};
...@@ -44,7 +39,6 @@ pub const feature_ptx43 = Feature{...@@ -44,7 +39,6 @@ pub const feature_ptx43 = Feature{
44pub const feature_ptx50 = Feature{39pub const feature_ptx50 = Feature{
45 .name = "ptx50",40 .name = "ptx50",
46 .description = "Use PTX version 5.0",41 .description = "Use PTX version 5.0",
47 .llvm_name = "ptx50",
48 .subfeatures = &[_]*const Feature {42 .subfeatures = &[_]*const Feature {
49 },43 },
50};44};
...@@ -52,7 +46,6 @@ pub const feature_ptx50 = Feature{...@@ -52,7 +46,6 @@ pub const feature_ptx50 = Feature{
52pub const feature_ptx60 = Feature{46pub const feature_ptx60 = Feature{
53 .name = "ptx60",47 .name = "ptx60",
54 .description = "Use PTX version 6.0",48 .description = "Use PTX version 6.0",
55 .llvm_name = "ptx60",
56 .subfeatures = &[_]*const Feature {49 .subfeatures = &[_]*const Feature {
57 },50 },
58};51};
...@@ -60,7 +53,6 @@ pub const feature_ptx60 = Feature{...@@ -60,7 +53,6 @@ pub const feature_ptx60 = Feature{
60pub const feature_ptx61 = Feature{53pub const feature_ptx61 = Feature{
61 .name = "ptx61",54 .name = "ptx61",
62 .description = "Use PTX version 6.1",55 .description = "Use PTX version 6.1",
63 .llvm_name = "ptx61",
64 .subfeatures = &[_]*const Feature {56 .subfeatures = &[_]*const Feature {
65 },57 },
66};58};
...@@ -68,7 +60,6 @@ pub const feature_ptx61 = Feature{...@@ -68,7 +60,6 @@ pub const feature_ptx61 = Feature{
68pub const feature_ptx63 = Feature{60pub const feature_ptx63 = Feature{
69 .name = "ptx63",61 .name = "ptx63",
70 .description = "Use PTX version 6.3",62 .description = "Use PTX version 6.3",
71 .llvm_name = "ptx63",
72 .subfeatures = &[_]*const Feature {63 .subfeatures = &[_]*const Feature {
73 },64 },
74};65};
...@@ -76,7 +67,6 @@ pub const feature_ptx63 = Feature{...@@ -76,7 +67,6 @@ pub const feature_ptx63 = Feature{
76pub const feature_ptx64 = Feature{67pub const feature_ptx64 = Feature{
77 .name = "ptx64",68 .name = "ptx64",
78 .description = "Use PTX version 6.4",69 .description = "Use PTX version 6.4",
79 .llvm_name = "ptx64",
80 .subfeatures = &[_]*const Feature {70 .subfeatures = &[_]*const Feature {
81 },71 },
82};72};
...@@ -84,7 +74,6 @@ pub const feature_ptx64 = Feature{...@@ -84,7 +74,6 @@ pub const feature_ptx64 = Feature{
84pub const feature_sm_20 = Feature{74pub const feature_sm_20 = Feature{
85 .name = "sm_20",75 .name = "sm_20",
86 .description = "Target SM 2.0",76 .description = "Target SM 2.0",
87 .llvm_name = "sm_20",
88 .subfeatures = &[_]*const Feature {77 .subfeatures = &[_]*const Feature {
89 },78 },
90};79};
...@@ -92,7 +81,6 @@ pub const feature_sm_20 = Feature{...@@ -92,7 +81,6 @@ pub const feature_sm_20 = Feature{
92pub const feature_sm_21 = Feature{81pub const feature_sm_21 = Feature{
93 .name = "sm_21",82 .name = "sm_21",
94 .description = "Target SM 2.1",83 .description = "Target SM 2.1",
95 .llvm_name = "sm_21",
96 .subfeatures = &[_]*const Feature {84 .subfeatures = &[_]*const Feature {
97 },85 },
98};86};
...@@ -100,7 +88,6 @@ pub const feature_sm_21 = Feature{...@@ -100,7 +88,6 @@ pub const feature_sm_21 = Feature{
100pub const feature_sm_30 = Feature{88pub const feature_sm_30 = Feature{
101 .name = "sm_30",89 .name = "sm_30",
102 .description = "Target SM 3.0",90 .description = "Target SM 3.0",
103 .llvm_name = "sm_30",
104 .subfeatures = &[_]*const Feature {91 .subfeatures = &[_]*const Feature {
105 },92 },
106};93};
...@@ -108,7 +95,6 @@ pub const feature_sm_30 = Feature{...@@ -108,7 +95,6 @@ pub const feature_sm_30 = Feature{
108pub const feature_sm_32 = Feature{95pub const feature_sm_32 = Feature{
109 .name = "sm_32",96 .name = "sm_32",
110 .description = "Target SM 3.2",97 .description = "Target SM 3.2",
111 .llvm_name = "sm_32",
112 .subfeatures = &[_]*const Feature {98 .subfeatures = &[_]*const Feature {
113 },99 },
114};100};
...@@ -116,7 +102,6 @@ pub const feature_sm_32 = Feature{...@@ -116,7 +102,6 @@ pub const feature_sm_32 = Feature{
116pub const feature_sm_35 = Feature{102pub const feature_sm_35 = Feature{
117 .name = "sm_35",103 .name = "sm_35",
118 .description = "Target SM 3.5",104 .description = "Target SM 3.5",
119 .llvm_name = "sm_35",
120 .subfeatures = &[_]*const Feature {105 .subfeatures = &[_]*const Feature {
121 },106 },
122};107};
...@@ -124,7 +109,6 @@ pub const feature_sm_35 = Feature{...@@ -124,7 +109,6 @@ pub const feature_sm_35 = Feature{
124pub const feature_sm_37 = Feature{109pub const feature_sm_37 = Feature{
125 .name = "sm_37",110 .name = "sm_37",
126 .description = "Target SM 3.7",111 .description = "Target SM 3.7",
127 .llvm_name = "sm_37",
128 .subfeatures = &[_]*const Feature {112 .subfeatures = &[_]*const Feature {
129 },113 },
130};114};
...@@ -132,7 +116,6 @@ pub const feature_sm_37 = Feature{...@@ -132,7 +116,6 @@ pub const feature_sm_37 = Feature{
132pub const feature_sm_50 = Feature{116pub const feature_sm_50 = Feature{
133 .name = "sm_50",117 .name = "sm_50",
134 .description = "Target SM 5.0",118 .description = "Target SM 5.0",
135 .llvm_name = "sm_50",
136 .subfeatures = &[_]*const Feature {119 .subfeatures = &[_]*const Feature {
137 },120 },
138};121};
...@@ -140,7 +123,6 @@ pub const feature_sm_50 = Feature{...@@ -140,7 +123,6 @@ pub const feature_sm_50 = Feature{
140pub const feature_sm_52 = Feature{123pub const feature_sm_52 = Feature{
141 .name = "sm_52",124 .name = "sm_52",
142 .description = "Target SM 5.2",125 .description = "Target SM 5.2",
143 .llvm_name = "sm_52",
144 .subfeatures = &[_]*const Feature {126 .subfeatures = &[_]*const Feature {
145 },127 },
146};128};
...@@ -148,7 +130,6 @@ pub const feature_sm_52 = Feature{...@@ -148,7 +130,6 @@ pub const feature_sm_52 = Feature{
148pub const feature_sm_53 = Feature{130pub const feature_sm_53 = Feature{
149 .name = "sm_53",131 .name = "sm_53",
150 .description = "Target SM 5.3",132 .description = "Target SM 5.3",
151 .llvm_name = "sm_53",
152 .subfeatures = &[_]*const Feature {133 .subfeatures = &[_]*const Feature {
153 },134 },
154};135};
...@@ -156,7 +137,6 @@ pub const feature_sm_53 = Feature{...@@ -156,7 +137,6 @@ pub const feature_sm_53 = Feature{
156pub const feature_sm_60 = Feature{137pub const feature_sm_60 = Feature{
157 .name = "sm_60",138 .name = "sm_60",
158 .description = "Target SM 6.0",139 .description = "Target SM 6.0",
159 .llvm_name = "sm_60",
160 .subfeatures = &[_]*const Feature {140 .subfeatures = &[_]*const Feature {
161 },141 },
162};142};
...@@ -164,7 +144,6 @@ pub const feature_sm_60 = Feature{...@@ -164,7 +144,6 @@ pub const feature_sm_60 = Feature{
164pub const feature_sm_61 = Feature{144pub const feature_sm_61 = Feature{
165 .name = "sm_61",145 .name = "sm_61",
166 .description = "Target SM 6.1",146 .description = "Target SM 6.1",
167 .llvm_name = "sm_61",
168 .subfeatures = &[_]*const Feature {147 .subfeatures = &[_]*const Feature {
169 },148 },
170};149};
...@@ -172,7 +151,6 @@ pub const feature_sm_61 = Feature{...@@ -172,7 +151,6 @@ pub const feature_sm_61 = Feature{
172pub const feature_sm_62 = Feature{151pub const feature_sm_62 = Feature{
173 .name = "sm_62",152 .name = "sm_62",
174 .description = "Target SM 6.2",153 .description = "Target SM 6.2",
175 .llvm_name = "sm_62",
176 .subfeatures = &[_]*const Feature {154 .subfeatures = &[_]*const Feature {
177 },155 },
178};156};
...@@ -180,7 +158,6 @@ pub const feature_sm_62 = Feature{...@@ -180,7 +158,6 @@ pub const feature_sm_62 = Feature{
180pub const feature_sm_70 = Feature{158pub const feature_sm_70 = Feature{
181 .name = "sm_70",159 .name = "sm_70",
182 .description = "Target SM 7.0",160 .description = "Target SM 7.0",
183 .llvm_name = "sm_70",
184 .subfeatures = &[_]*const Feature {161 .subfeatures = &[_]*const Feature {
185 },162 },
186};163};
...@@ -188,7 +165,6 @@ pub const feature_sm_70 = Feature{...@@ -188,7 +165,6 @@ pub const feature_sm_70 = Feature{
188pub const feature_sm_72 = Feature{165pub const feature_sm_72 = Feature{
189 .name = "sm_72",166 .name = "sm_72",
190 .description = "Target SM 7.2",167 .description = "Target SM 7.2",
191 .llvm_name = "sm_72",
192 .subfeatures = &[_]*const Feature {168 .subfeatures = &[_]*const Feature {
193 },169 },
194};170};
...@@ -196,7 +172,6 @@ pub const feature_sm_72 = Feature{...@@ -196,7 +172,6 @@ pub const feature_sm_72 = Feature{
196pub const feature_sm_75 = Feature{172pub const feature_sm_75 = Feature{
197 .name = "sm_75",173 .name = "sm_75",
198 .description = "Target SM 7.5",174 .description = "Target SM 7.5",
199 .llvm_name = "sm_75",
200 .subfeatures = &[_]*const Feature {175 .subfeatures = &[_]*const Feature {
201 },176 },
202};177};
lib/std/target/powerpc.zig+2-53
...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_bit64 = Feature{4pub const feature_bit64 = Feature{
5 .name = "64bit",5 .name = "64bit",
6 .description = "Enable 64-bit instructions",6 .description = "Enable 64-bit instructions",
7 .llvm_name = "64bit",
8 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
9 },8 },
10};9};
...@@ -12,7 +11,6 @@ pub const feature_bit64 = Feature{...@@ -12,7 +11,6 @@ pub const feature_bit64 = Feature{
12pub const feature_bitregs64 = Feature{11pub const feature_bitregs64 = Feature{
13 .name = "64bitregs",12 .name = "64bitregs",
14 .description = "Enable 64-bit registers usage for ppc32 [beta]",13 .description = "Enable 64-bit registers usage for ppc32 [beta]",
15 .llvm_name = "64bitregs",
16 .subfeatures = &[_]*const Feature {14 .subfeatures = &[_]*const Feature {
17 },15 },
18};16};
...@@ -20,7 +18,6 @@ pub const feature_bitregs64 = Feature{...@@ -20,7 +18,6 @@ pub const feature_bitregs64 = Feature{
20pub const feature_altivec = Feature{18pub const feature_altivec = Feature{
21 .name = "altivec",19 .name = "altivec",
22 .description = "Enable Altivec instructions",20 .description = "Enable Altivec instructions",
23 .llvm_name = "altivec",
24 .subfeatures = &[_]*const Feature {21 .subfeatures = &[_]*const Feature {
25 &feature_hardFloat,22 &feature_hardFloat,
26 },23 },
...@@ -29,7 +26,6 @@ pub const feature_altivec = Feature{...@@ -29,7 +26,6 @@ pub const feature_altivec = Feature{
29pub const feature_bpermd = Feature{26pub const feature_bpermd = Feature{
30 .name = "bpermd",27 .name = "bpermd",
31 .description = "Enable the bpermd instruction",28 .description = "Enable the bpermd instruction",
32 .llvm_name = "bpermd",
33 .subfeatures = &[_]*const Feature {29 .subfeatures = &[_]*const Feature {
34 },30 },
35};31};
...@@ -37,7 +33,6 @@ pub const feature_bpermd = Feature{...@@ -37,7 +33,6 @@ pub const feature_bpermd = Feature{
37pub const feature_booke = Feature{33pub const feature_booke = Feature{
38 .name = "booke",34 .name = "booke",
39 .description = "Enable Book E instructions",35 .description = "Enable Book E instructions",
40 .llvm_name = "booke",
41 .subfeatures = &[_]*const Feature {36 .subfeatures = &[_]*const Feature {
42 &feature_icbt,37 &feature_icbt,
43 },38 },
...@@ -46,7 +41,6 @@ pub const feature_booke = Feature{...@@ -46,7 +41,6 @@ pub const feature_booke = Feature{
46pub const feature_cmpb = Feature{41pub const feature_cmpb = Feature{
47 .name = "cmpb",42 .name = "cmpb",
48 .description = "Enable the cmpb instruction",43 .description = "Enable the cmpb instruction",
49 .llvm_name = "cmpb",
50 .subfeatures = &[_]*const Feature {44 .subfeatures = &[_]*const Feature {
51 },45 },
52};46};
...@@ -54,7 +48,6 @@ pub const feature_cmpb = Feature{...@@ -54,7 +48,6 @@ pub const feature_cmpb = Feature{
54pub const feature_crbits = Feature{48pub const feature_crbits = Feature{
55 .name = "crbits",49 .name = "crbits",
56 .description = "Use condition-register bits individually",50 .description = "Use condition-register bits individually",
57 .llvm_name = "crbits",
58 .subfeatures = &[_]*const Feature {51 .subfeatures = &[_]*const Feature {
59 },52 },
60};53};
...@@ -62,7 +55,6 @@ pub const feature_crbits = Feature{...@@ -62,7 +55,6 @@ pub const feature_crbits = Feature{
62pub const feature_directMove = Feature{55pub const feature_directMove = Feature{
63 .name = "direct-move",56 .name = "direct-move",
64 .description = "Enable Power8 direct move instructions",57 .description = "Enable Power8 direct move instructions",
65 .llvm_name = "direct-move",
66 .subfeatures = &[_]*const Feature {58 .subfeatures = &[_]*const Feature {
67 &feature_hardFloat,59 &feature_hardFloat,
68 },60 },
...@@ -71,7 +63,6 @@ pub const feature_directMove = Feature{...@@ -71,7 +63,6 @@ pub const feature_directMove = Feature{
71pub const feature_e500 = Feature{63pub const feature_e500 = Feature{
72 .name = "e500",64 .name = "e500",
73 .description = "Enable E500/E500mc instructions",65 .description = "Enable E500/E500mc instructions",
74 .llvm_name = "e500",
75 .subfeatures = &[_]*const Feature {66 .subfeatures = &[_]*const Feature {
76 },67 },
77};68};
...@@ -79,7 +70,6 @@ pub const feature_e500 = Feature{...@@ -79,7 +70,6 @@ pub const feature_e500 = Feature{
79pub const feature_extdiv = Feature{70pub const feature_extdiv = Feature{
80 .name = "extdiv",71 .name = "extdiv",
81 .description = "Enable extended divide instructions",72 .description = "Enable extended divide instructions",
82 .llvm_name = "extdiv",
83 .subfeatures = &[_]*const Feature {73 .subfeatures = &[_]*const Feature {
84 },74 },
85};75};
...@@ -87,7 +77,6 @@ pub const feature_extdiv = Feature{...@@ -87,7 +77,6 @@ pub const feature_extdiv = Feature{
87pub const feature_fcpsgn = Feature{77pub const feature_fcpsgn = Feature{
88 .name = "fcpsgn",78 .name = "fcpsgn",
89 .description = "Enable the fcpsgn instruction",79 .description = "Enable the fcpsgn instruction",
90 .llvm_name = "fcpsgn",
91 .subfeatures = &[_]*const Feature {80 .subfeatures = &[_]*const Feature {
92 &feature_hardFloat,81 &feature_hardFloat,
93 },82 },
...@@ -96,7 +85,6 @@ pub const feature_fcpsgn = Feature{...@@ -96,7 +85,6 @@ pub const feature_fcpsgn = Feature{
96pub const feature_fpcvt = Feature{85pub const feature_fpcvt = Feature{
97 .name = "fpcvt",86 .name = "fpcvt",
98 .description = "Enable fc[ft]* (unsigned and single-precision) and lfiwzx instructions",87 .description = "Enable fc[ft]* (unsigned and single-precision) and lfiwzx instructions",
99 .llvm_name = "fpcvt",
100 .subfeatures = &[_]*const Feature {88 .subfeatures = &[_]*const Feature {
101 &feature_hardFloat,89 &feature_hardFloat,
102 },90 },
...@@ -105,7 +93,6 @@ pub const feature_fpcvt = Feature{...@@ -105,7 +93,6 @@ pub const feature_fpcvt = Feature{
105pub const feature_fprnd = Feature{93pub const feature_fprnd = Feature{
106 .name = "fprnd",94 .name = "fprnd",
107 .description = "Enable the fri[mnpz] instructions",95 .description = "Enable the fri[mnpz] instructions",
108 .llvm_name = "fprnd",
109 .subfeatures = &[_]*const Feature {96 .subfeatures = &[_]*const Feature {
110 &feature_hardFloat,97 &feature_hardFloat,
111 },98 },
...@@ -114,7 +101,6 @@ pub const feature_fprnd = Feature{...@@ -114,7 +101,6 @@ pub const feature_fprnd = Feature{
114pub const feature_fpu = Feature{101pub const feature_fpu = Feature{
115 .name = "fpu",102 .name = "fpu",
116 .description = "Enable classic FPU instructions",103 .description = "Enable classic FPU instructions",
117 .llvm_name = "fpu",
118 .subfeatures = &[_]*const Feature {104 .subfeatures = &[_]*const Feature {
119 &feature_hardFloat,105 &feature_hardFloat,
120 },106 },
...@@ -123,7 +109,6 @@ pub const feature_fpu = Feature{...@@ -123,7 +109,6 @@ pub const feature_fpu = Feature{
123pub const feature_fre = Feature{109pub const feature_fre = Feature{
124 .name = "fre",110 .name = "fre",
125 .description = "Enable the fre instruction",111 .description = "Enable the fre instruction",
126 .llvm_name = "fre",
127 .subfeatures = &[_]*const Feature {112 .subfeatures = &[_]*const Feature {
128 &feature_hardFloat,113 &feature_hardFloat,
129 },114 },
...@@ -132,7 +117,6 @@ pub const feature_fre = Feature{...@@ -132,7 +117,6 @@ pub const feature_fre = Feature{
132pub const feature_fres = Feature{117pub const feature_fres = Feature{
133 .name = "fres",118 .name = "fres",
134 .description = "Enable the fres instruction",119 .description = "Enable the fres instruction",
135 .llvm_name = "fres",
136 .subfeatures = &[_]*const Feature {120 .subfeatures = &[_]*const Feature {
137 &feature_hardFloat,121 &feature_hardFloat,
138 },122 },
...@@ -141,7 +125,6 @@ pub const feature_fres = Feature{...@@ -141,7 +125,6 @@ pub const feature_fres = Feature{
141pub const feature_frsqrte = Feature{125pub const feature_frsqrte = Feature{
142 .name = "frsqrte",126 .name = "frsqrte",
143 .description = "Enable the frsqrte instruction",127 .description = "Enable the frsqrte instruction",
144 .llvm_name = "frsqrte",
145 .subfeatures = &[_]*const Feature {128 .subfeatures = &[_]*const Feature {
146 &feature_hardFloat,129 &feature_hardFloat,
147 },130 },
...@@ -150,7 +133,6 @@ pub const feature_frsqrte = Feature{...@@ -150,7 +133,6 @@ pub const feature_frsqrte = Feature{
150pub const feature_frsqrtes = Feature{133pub const feature_frsqrtes = Feature{
151 .name = "frsqrtes",134 .name = "frsqrtes",
152 .description = "Enable the frsqrtes instruction",135 .description = "Enable the frsqrtes instruction",
153 .llvm_name = "frsqrtes",
154 .subfeatures = &[_]*const Feature {136 .subfeatures = &[_]*const Feature {
155 &feature_hardFloat,137 &feature_hardFloat,
156 },138 },
...@@ -159,7 +141,6 @@ pub const feature_frsqrtes = Feature{...@@ -159,7 +141,6 @@ pub const feature_frsqrtes = Feature{
159pub const feature_fsqrt = Feature{141pub const feature_fsqrt = Feature{
160 .name = "fsqrt",142 .name = "fsqrt",
161 .description = "Enable the fsqrt instruction",143 .description = "Enable the fsqrt instruction",
162 .llvm_name = "fsqrt",
163 .subfeatures = &[_]*const Feature {144 .subfeatures = &[_]*const Feature {
164 &feature_hardFloat,145 &feature_hardFloat,
165 },146 },
...@@ -168,7 +149,6 @@ pub const feature_fsqrt = Feature{...@@ -168,7 +149,6 @@ pub const feature_fsqrt = Feature{
168pub const feature_float128 = Feature{149pub const feature_float128 = Feature{
169 .name = "float128",150 .name = "float128",
170 .description = "Enable the __float128 data type for IEEE-754R Binary128.",151 .description = "Enable the __float128 data type for IEEE-754R Binary128.",
171 .llvm_name = "float128",
172 .subfeatures = &[_]*const Feature {152 .subfeatures = &[_]*const Feature {
173 &feature_hardFloat,153 &feature_hardFloat,
174 },154 },
...@@ -177,7 +157,6 @@ pub const feature_float128 = Feature{...@@ -177,7 +157,6 @@ pub const feature_float128 = Feature{
177pub const feature_htm = Feature{157pub const feature_htm = Feature{
178 .name = "htm",158 .name = "htm",
179 .description = "Enable Hardware Transactional Memory instructions",159 .description = "Enable Hardware Transactional Memory instructions",
180 .llvm_name = "htm",
181 .subfeatures = &[_]*const Feature {160 .subfeatures = &[_]*const Feature {
182 },161 },
183};162};
...@@ -185,7 +164,6 @@ pub const feature_htm = Feature{...@@ -185,7 +164,6 @@ pub const feature_htm = Feature{
185pub const feature_hardFloat = Feature{164pub const feature_hardFloat = Feature{
186 .name = "hard-float",165 .name = "hard-float",
187 .description = "Enable floating-point instructions",166 .description = "Enable floating-point instructions",
188 .llvm_name = "hard-float",
189 .subfeatures = &[_]*const Feature {167 .subfeatures = &[_]*const Feature {
190 },168 },
191};169};
...@@ -193,7 +171,6 @@ pub const feature_hardFloat = Feature{...@@ -193,7 +171,6 @@ pub const feature_hardFloat = Feature{
193pub const feature_icbt = Feature{171pub const feature_icbt = Feature{
194 .name = "icbt",172 .name = "icbt",
195 .description = "Enable icbt instruction",173 .description = "Enable icbt instruction",
196 .llvm_name = "icbt",
197 .subfeatures = &[_]*const Feature {174 .subfeatures = &[_]*const Feature {
198 },175 },
199};176};
...@@ -201,7 +178,6 @@ pub const feature_icbt = Feature{...@@ -201,7 +178,6 @@ pub const feature_icbt = Feature{
201pub const feature_isaV30Instructions = Feature{178pub const feature_isaV30Instructions = Feature{
202 .name = "isa-v30-instructions",179 .name = "isa-v30-instructions",
203 .description = "Enable instructions added in ISA 3.0.",180 .description = "Enable instructions added in ISA 3.0.",
204 .llvm_name = "isa-v30-instructions",
205 .subfeatures = &[_]*const Feature {181 .subfeatures = &[_]*const Feature {
206 },182 },
207};183};
...@@ -209,7 +185,6 @@ pub const feature_isaV30Instructions = Feature{...@@ -209,7 +185,6 @@ pub const feature_isaV30Instructions = Feature{
209pub const feature_isel = Feature{185pub const feature_isel = Feature{
210 .name = "isel",186 .name = "isel",
211 .description = "Enable the isel instruction",187 .description = "Enable the isel instruction",
212 .llvm_name = "isel",
213 .subfeatures = &[_]*const Feature {188 .subfeatures = &[_]*const Feature {
214 },189 },
215};190};
...@@ -217,7 +192,6 @@ pub const feature_isel = Feature{...@@ -217,7 +192,6 @@ pub const feature_isel = Feature{
217pub const feature_invariantFunctionDescriptors = Feature{192pub const feature_invariantFunctionDescriptors = Feature{
218 .name = "invariant-function-descriptors",193 .name = "invariant-function-descriptors",
219 .description = "Assume function descriptors are invariant",194 .description = "Assume function descriptors are invariant",
220 .llvm_name = "invariant-function-descriptors",
221 .subfeatures = &[_]*const Feature {195 .subfeatures = &[_]*const Feature {
222 },196 },
223};197};
...@@ -225,7 +199,6 @@ pub const feature_invariantFunctionDescriptors = Feature{...@@ -225,7 +199,6 @@ pub const feature_invariantFunctionDescriptors = Feature{
225pub const feature_ldbrx = Feature{199pub const feature_ldbrx = Feature{
226 .name = "ldbrx",200 .name = "ldbrx",
227 .description = "Enable the ldbrx instruction",201 .description = "Enable the ldbrx instruction",
228 .llvm_name = "ldbrx",
229 .subfeatures = &[_]*const Feature {202 .subfeatures = &[_]*const Feature {
230 },203 },
231};204};
...@@ -233,7 +206,6 @@ pub const feature_ldbrx = Feature{...@@ -233,7 +206,6 @@ pub const feature_ldbrx = Feature{
233pub const feature_lfiwax = Feature{206pub const feature_lfiwax = Feature{
234 .name = "lfiwax",207 .name = "lfiwax",
235 .description = "Enable the lfiwax instruction",208 .description = "Enable the lfiwax instruction",
236 .llvm_name = "lfiwax",
237 .subfeatures = &[_]*const Feature {209 .subfeatures = &[_]*const Feature {
238 &feature_hardFloat,210 &feature_hardFloat,
239 },211 },
...@@ -242,7 +214,6 @@ pub const feature_lfiwax = Feature{...@@ -242,7 +214,6 @@ pub const feature_lfiwax = Feature{
242pub const feature_longcall = Feature{214pub const feature_longcall = Feature{
243 .name = "longcall",215 .name = "longcall",
244 .description = "Always use indirect calls",216 .description = "Always use indirect calls",
245 .llvm_name = "longcall",
246 .subfeatures = &[_]*const Feature {217 .subfeatures = &[_]*const Feature {
247 },218 },
248};219};
...@@ -250,7 +221,6 @@ pub const feature_longcall = Feature{...@@ -250,7 +221,6 @@ pub const feature_longcall = Feature{
250pub const feature_mfocrf = Feature{221pub const feature_mfocrf = Feature{
251 .name = "mfocrf",222 .name = "mfocrf",
252 .description = "Enable the MFOCRF instruction",223 .description = "Enable the MFOCRF instruction",
253 .llvm_name = "mfocrf",
254 .subfeatures = &[_]*const Feature {224 .subfeatures = &[_]*const Feature {
255 },225 },
256};226};
...@@ -258,7 +228,6 @@ pub const feature_mfocrf = Feature{...@@ -258,7 +228,6 @@ pub const feature_mfocrf = Feature{
258pub const feature_msync = Feature{228pub const feature_msync = Feature{
259 .name = "msync",229 .name = "msync",
260 .description = "Has only the msync instruction instead of sync",230 .description = "Has only the msync instruction instead of sync",
261 .llvm_name = "msync",
262 .subfeatures = &[_]*const Feature {231 .subfeatures = &[_]*const Feature {
263 &feature_icbt,232 &feature_icbt,
264 },233 },
...@@ -267,7 +236,6 @@ pub const feature_msync = Feature{...@@ -267,7 +236,6 @@ pub const feature_msync = Feature{
267pub const feature_power8Altivec = Feature{236pub const feature_power8Altivec = Feature{
268 .name = "power8-altivec",237 .name = "power8-altivec",
269 .description = "Enable POWER8 Altivec instructions",238 .description = "Enable POWER8 Altivec instructions",
270 .llvm_name = "power8-altivec",
271 .subfeatures = &[_]*const Feature {239 .subfeatures = &[_]*const Feature {
272 &feature_hardFloat,240 &feature_hardFloat,
273 },241 },
...@@ -276,7 +244,6 @@ pub const feature_power8Altivec = Feature{...@@ -276,7 +244,6 @@ pub const feature_power8Altivec = Feature{
276pub const feature_crypto = Feature{244pub const feature_crypto = Feature{
277 .name = "crypto",245 .name = "crypto",
278 .description = "Enable POWER8 Crypto instructions",246 .description = "Enable POWER8 Crypto instructions",
279 .llvm_name = "crypto",
280 .subfeatures = &[_]*const Feature {247 .subfeatures = &[_]*const Feature {
281 &feature_hardFloat,248 &feature_hardFloat,
282 },249 },
...@@ -285,7 +252,6 @@ pub const feature_crypto = Feature{...@@ -285,7 +252,6 @@ pub const feature_crypto = Feature{
285pub const feature_power8Vector = Feature{252pub const feature_power8Vector = Feature{
286 .name = "power8-vector",253 .name = "power8-vector",
287 .description = "Enable POWER8 vector instructions",254 .description = "Enable POWER8 vector instructions",
288 .llvm_name = "power8-vector",
289 .subfeatures = &[_]*const Feature {255 .subfeatures = &[_]*const Feature {
290 &feature_hardFloat,256 &feature_hardFloat,
291 },257 },
...@@ -294,27 +260,24 @@ pub const feature_power8Vector = Feature{...@@ -294,27 +260,24 @@ pub const feature_power8Vector = Feature{
294pub const feature_power9Altivec = Feature{260pub const feature_power9Altivec = Feature{
295 .name = "power9-altivec",261 .name = "power9-altivec",
296 .description = "Enable POWER9 Altivec instructions",262 .description = "Enable POWER9 Altivec instructions",
297 .llvm_name = "power9-altivec",
298 .subfeatures = &[_]*const Feature {263 .subfeatures = &[_]*const Feature {
299 &feature_isaV30Instructions,
300 &feature_hardFloat,264 &feature_hardFloat,
265 &feature_isaV30Instructions,
301 },266 },
302};267};
303268
304pub const feature_power9Vector = Feature{269pub const feature_power9Vector = Feature{
305 .name = "power9-vector",270 .name = "power9-vector",
306 .description = "Enable POWER9 vector instructions",271 .description = "Enable POWER9 vector instructions",
307 .llvm_name = "power9-vector",
308 .subfeatures = &[_]*const Feature {272 .subfeatures = &[_]*const Feature {
309 &feature_isaV30Instructions,
310 &feature_hardFloat,273 &feature_hardFloat,
274 &feature_isaV30Instructions,
311 },275 },
312};276};
313277
314pub const feature_popcntd = Feature{278pub const feature_popcntd = Feature{
315 .name = "popcntd",279 .name = "popcntd",
316 .description = "Enable the popcnt[dw] instructions",280 .description = "Enable the popcnt[dw] instructions",
317 .llvm_name = "popcntd",
318 .subfeatures = &[_]*const Feature {281 .subfeatures = &[_]*const Feature {
319 },282 },
320};283};
...@@ -322,7 +285,6 @@ pub const feature_popcntd = Feature{...@@ -322,7 +285,6 @@ pub const feature_popcntd = Feature{
322pub const feature_ppc4xx = Feature{285pub const feature_ppc4xx = Feature{
323 .name = "ppc4xx",286 .name = "ppc4xx",
324 .description = "Enable PPC 4xx instructions",287 .description = "Enable PPC 4xx instructions",
325 .llvm_name = "ppc4xx",
326 .subfeatures = &[_]*const Feature {288 .subfeatures = &[_]*const Feature {
327 },289 },
328};290};
...@@ -330,7 +292,6 @@ pub const feature_ppc4xx = Feature{...@@ -330,7 +292,6 @@ pub const feature_ppc4xx = Feature{
330pub const feature_ppc6xx = Feature{292pub const feature_ppc6xx = Feature{
331 .name = "ppc6xx",293 .name = "ppc6xx",
332 .description = "Enable PPC 6xx instructions",294 .description = "Enable PPC 6xx instructions",
333 .llvm_name = "ppc6xx",
334 .subfeatures = &[_]*const Feature {295 .subfeatures = &[_]*const Feature {
335 },296 },
336};297};
...@@ -338,7 +299,6 @@ pub const feature_ppc6xx = Feature{...@@ -338,7 +299,6 @@ pub const feature_ppc6xx = Feature{
338pub const feature_ppcPostraSched = Feature{299pub const feature_ppcPostraSched = Feature{
339 .name = "ppc-postra-sched",300 .name = "ppc-postra-sched",
340 .description = "Use PowerPC post-RA scheduling strategy",301 .description = "Use PowerPC post-RA scheduling strategy",
341 .llvm_name = "ppc-postra-sched",
342 .subfeatures = &[_]*const Feature {302 .subfeatures = &[_]*const Feature {
343 },303 },
344};304};
...@@ -346,7 +306,6 @@ pub const feature_ppcPostraSched = Feature{...@@ -346,7 +306,6 @@ pub const feature_ppcPostraSched = Feature{
346pub const feature_ppcPreraSched = Feature{306pub const feature_ppcPreraSched = Feature{
347 .name = "ppc-prera-sched",307 .name = "ppc-prera-sched",
348 .description = "Use PowerPC pre-RA scheduling strategy",308 .description = "Use PowerPC pre-RA scheduling strategy",
349 .llvm_name = "ppc-prera-sched",
350 .subfeatures = &[_]*const Feature {309 .subfeatures = &[_]*const Feature {
351 },310 },
352};311};
...@@ -354,7 +313,6 @@ pub const feature_ppcPreraSched = Feature{...@@ -354,7 +313,6 @@ pub const feature_ppcPreraSched = Feature{
354pub const feature_partwordAtomics = Feature{313pub const feature_partwordAtomics = Feature{
355 .name = "partword-atomics",314 .name = "partword-atomics",
356 .description = "Enable l[bh]arx and st[bh]cx.",315 .description = "Enable l[bh]arx and st[bh]cx.",
357 .llvm_name = "partword-atomics",
358 .subfeatures = &[_]*const Feature {316 .subfeatures = &[_]*const Feature {
359 },317 },
360};318};
...@@ -362,7 +320,6 @@ pub const feature_partwordAtomics = Feature{...@@ -362,7 +320,6 @@ pub const feature_partwordAtomics = Feature{
362pub const feature_qpx = Feature{320pub const feature_qpx = Feature{
363 .name = "qpx",321 .name = "qpx",
364 .description = "Enable QPX instructions",322 .description = "Enable QPX instructions",
365 .llvm_name = "qpx",
366 .subfeatures = &[_]*const Feature {323 .subfeatures = &[_]*const Feature {
367 &feature_hardFloat,324 &feature_hardFloat,
368 },325 },
...@@ -371,7 +328,6 @@ pub const feature_qpx = Feature{...@@ -371,7 +328,6 @@ pub const feature_qpx = Feature{
371pub const feature_recipprec = Feature{328pub const feature_recipprec = Feature{
372 .name = "recipprec",329 .name = "recipprec",
373 .description = "Assume higher precision reciprocal estimates",330 .description = "Assume higher precision reciprocal estimates",
374 .llvm_name = "recipprec",
375 .subfeatures = &[_]*const Feature {331 .subfeatures = &[_]*const Feature {
376 },332 },
377};333};
...@@ -379,7 +335,6 @@ pub const feature_recipprec = Feature{...@@ -379,7 +335,6 @@ pub const feature_recipprec = Feature{
379pub const feature_spe = Feature{335pub const feature_spe = Feature{
380 .name = "spe",336 .name = "spe",
381 .description = "Enable SPE instructions",337 .description = "Enable SPE instructions",
382 .llvm_name = "spe",
383 .subfeatures = &[_]*const Feature {338 .subfeatures = &[_]*const Feature {
384 &feature_hardFloat,339 &feature_hardFloat,
385 },340 },
...@@ -388,7 +343,6 @@ pub const feature_spe = Feature{...@@ -388,7 +343,6 @@ pub const feature_spe = Feature{
388pub const feature_stfiwx = Feature{343pub const feature_stfiwx = Feature{
389 .name = "stfiwx",344 .name = "stfiwx",
390 .description = "Enable the stfiwx instruction",345 .description = "Enable the stfiwx instruction",
391 .llvm_name = "stfiwx",
392 .subfeatures = &[_]*const Feature {346 .subfeatures = &[_]*const Feature {
393 &feature_hardFloat,347 &feature_hardFloat,
394 },348 },
...@@ -397,7 +351,6 @@ pub const feature_stfiwx = Feature{...@@ -397,7 +351,6 @@ pub const feature_stfiwx = Feature{
397pub const feature_securePlt = Feature{351pub const feature_securePlt = Feature{
398 .name = "secure-plt",352 .name = "secure-plt",
399 .description = "Enable secure plt mode",353 .description = "Enable secure plt mode",
400 .llvm_name = "secure-plt",
401 .subfeatures = &[_]*const Feature {354 .subfeatures = &[_]*const Feature {
402 },355 },
403};356};
...@@ -405,7 +358,6 @@ pub const feature_securePlt = Feature{...@@ -405,7 +358,6 @@ pub const feature_securePlt = Feature{
405pub const feature_slowPopcntd = Feature{358pub const feature_slowPopcntd = Feature{
406 .name = "slow-popcntd",359 .name = "slow-popcntd",
407 .description = "Has slow popcnt[dw] instructions",360 .description = "Has slow popcnt[dw] instructions",
408 .llvm_name = "slow-popcntd",
409 .subfeatures = &[_]*const Feature {361 .subfeatures = &[_]*const Feature {
410 },362 },
411};363};
...@@ -413,7 +365,6 @@ pub const feature_slowPopcntd = Feature{...@@ -413,7 +365,6 @@ pub const feature_slowPopcntd = Feature{
413pub const feature_twoConstNr = Feature{365pub const feature_twoConstNr = Feature{
414 .name = "two-const-nr",366 .name = "two-const-nr",
415 .description = "Requires two constant Newton-Raphson computation",367 .description = "Requires two constant Newton-Raphson computation",
416 .llvm_name = "two-const-nr",
417 .subfeatures = &[_]*const Feature {368 .subfeatures = &[_]*const Feature {
418 },369 },
419};370};
...@@ -421,7 +372,6 @@ pub const feature_twoConstNr = Feature{...@@ -421,7 +372,6 @@ pub const feature_twoConstNr = Feature{
421pub const feature_vsx = Feature{372pub const feature_vsx = Feature{
422 .name = "vsx",373 .name = "vsx",
423 .description = "Enable VSX instructions",374 .description = "Enable VSX instructions",
424 .llvm_name = "vsx",
425 .subfeatures = &[_]*const Feature {375 .subfeatures = &[_]*const Feature {
426 &feature_hardFloat,376 &feature_hardFloat,
427 },377 },
...@@ -430,7 +380,6 @@ pub const feature_vsx = Feature{...@@ -430,7 +380,6 @@ pub const feature_vsx = Feature{
430pub const feature_vectorsUseTwoUnits = Feature{380pub const feature_vectorsUseTwoUnits = Feature{
431 .name = "vectors-use-two-units",381 .name = "vectors-use-two-units",
432 .description = "Vectors use two units",382 .description = "Vectors use two units",
433 .llvm_name = "vectors-use-two-units",
434 .subfeatures = &[_]*const Feature {383 .subfeatures = &[_]*const Feature {
435 },384 },
436};385};
lib/std/target/riscv.zig-9
...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_bit64 = Feature{4pub const feature_bit64 = Feature{
5 .name = "64bit",5 .name = "64bit",
6 .description = "Implements RV64",6 .description = "Implements RV64",
7 .llvm_name = "64bit",
8 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
9 },8 },
10};9};
...@@ -12,7 +11,6 @@ pub const feature_bit64 = Feature{...@@ -12,7 +11,6 @@ pub const feature_bit64 = Feature{
12pub const feature_e = Feature{11pub const feature_e = Feature{
13 .name = "e",12 .name = "e",
14 .description = "Implements RV32E (provides 16 rather than 32 GPRs)",13 .description = "Implements RV32E (provides 16 rather than 32 GPRs)",
15 .llvm_name = "e",
16 .subfeatures = &[_]*const Feature {14 .subfeatures = &[_]*const Feature {
17 },15 },
18};16};
...@@ -20,7 +18,6 @@ pub const feature_e = Feature{...@@ -20,7 +18,6 @@ pub const feature_e = Feature{
20pub const feature_rvcHints = Feature{18pub const feature_rvcHints = Feature{
21 .name = "rvc-hints",19 .name = "rvc-hints",
22 .description = "Enable RVC Hint Instructions.",20 .description = "Enable RVC Hint Instructions.",
23 .llvm_name = "rvc-hints",
24 .subfeatures = &[_]*const Feature {21 .subfeatures = &[_]*const Feature {
25 },22 },
26};23};
...@@ -28,7 +25,6 @@ pub const feature_rvcHints = Feature{...@@ -28,7 +25,6 @@ pub const feature_rvcHints = Feature{
28pub const feature_relax = Feature{25pub const feature_relax = Feature{
29 .name = "relax",26 .name = "relax",
30 .description = "Enable Linker relaxation.",27 .description = "Enable Linker relaxation.",
31 .llvm_name = "relax",
32 .subfeatures = &[_]*const Feature {28 .subfeatures = &[_]*const Feature {
33 },29 },
34};30};
...@@ -36,7 +32,6 @@ pub const feature_relax = Feature{...@@ -36,7 +32,6 @@ pub const feature_relax = Feature{
36pub const feature_a = Feature{32pub const feature_a = Feature{
37 .name = "a",33 .name = "a",
38 .description = "'A' (Atomic Instructions)",34 .description = "'A' (Atomic Instructions)",
39 .llvm_name = "a",
40 .subfeatures = &[_]*const Feature {35 .subfeatures = &[_]*const Feature {
41 },36 },
42};37};
...@@ -44,7 +39,6 @@ pub const feature_a = Feature{...@@ -44,7 +39,6 @@ pub const feature_a = Feature{
44pub const feature_c = Feature{39pub const feature_c = Feature{
45 .name = "c",40 .name = "c",
46 .description = "'C' (Compressed Instructions)",41 .description = "'C' (Compressed Instructions)",
47 .llvm_name = "c",
48 .subfeatures = &[_]*const Feature {42 .subfeatures = &[_]*const Feature {
49 },43 },
50};44};
...@@ -52,7 +46,6 @@ pub const feature_c = Feature{...@@ -52,7 +46,6 @@ pub const feature_c = Feature{
52pub const feature_d = Feature{46pub const feature_d = Feature{
53 .name = "d",47 .name = "d",
54 .description = "'D' (Double-Precision Floating-Point)",48 .description = "'D' (Double-Precision Floating-Point)",
55 .llvm_name = "d",
56 .subfeatures = &[_]*const Feature {49 .subfeatures = &[_]*const Feature {
57 &feature_f,50 &feature_f,
58 },51 },
...@@ -61,7 +54,6 @@ pub const feature_d = Feature{...@@ -61,7 +54,6 @@ pub const feature_d = Feature{
61pub const feature_f = Feature{54pub const feature_f = Feature{
62 .name = "f",55 .name = "f",
63 .description = "'F' (Single-Precision Floating-Point)",56 .description = "'F' (Single-Precision Floating-Point)",
64 .llvm_name = "f",
65 .subfeatures = &[_]*const Feature {57 .subfeatures = &[_]*const Feature {
66 },58 },
67};59};
...@@ -69,7 +61,6 @@ pub const feature_f = Feature{...@@ -69,7 +61,6 @@ pub const feature_f = Feature{
69pub const feature_m = Feature{61pub const feature_m = Feature{
70 .name = "m",62 .name = "m",
71 .description = "'M' (Integer Multiplication and Division)",63 .description = "'M' (Integer Multiplication and Division)",
72 .llvm_name = "m",
73 .subfeatures = &[_]*const Feature {64 .subfeatures = &[_]*const Feature {
74 },65 },
75};66};
lib/std/target/sparc.zig-19
...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_detectroundchange = Feature{4pub const feature_detectroundchange = Feature{
5 .name = "detectroundchange",5 .name = "detectroundchange",
6 .description = "LEON3 erratum detection: Detects any rounding mode change request: use only the round-to-nearest rounding mode",6 .description = "LEON3 erratum detection: Detects any rounding mode change request: use only the round-to-nearest rounding mode",
7 .llvm_name = "detectroundchange",
8 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
9 },8 },
10};9};
...@@ -12,7 +11,6 @@ pub const feature_detectroundchange = Feature{...@@ -12,7 +11,6 @@ pub const feature_detectroundchange = Feature{
12pub const feature_hardQuadFloat = Feature{11pub const feature_hardQuadFloat = Feature{
13 .name = "hard-quad-float",12 .name = "hard-quad-float",
14 .description = "Enable quad-word floating point instructions",13 .description = "Enable quad-word floating point instructions",
15 .llvm_name = "hard-quad-float",
16 .subfeatures = &[_]*const Feature {14 .subfeatures = &[_]*const Feature {
17 },15 },
18};16};
...@@ -20,7 +18,6 @@ pub const feature_hardQuadFloat = Feature{...@@ -20,7 +18,6 @@ pub const feature_hardQuadFloat = Feature{
20pub const feature_leon = Feature{18pub const feature_leon = Feature{
21 .name = "leon",19 .name = "leon",
22 .description = "Enable LEON extensions",20 .description = "Enable LEON extensions",
23 .llvm_name = "leon",
24 .subfeatures = &[_]*const Feature {21 .subfeatures = &[_]*const Feature {
25 },22 },
26};23};
...@@ -28,7 +25,6 @@ pub const feature_leon = Feature{...@@ -28,7 +25,6 @@ pub const feature_leon = Feature{
28pub const feature_noFmuls = Feature{25pub const feature_noFmuls = Feature{
29 .name = "no-fmuls",26 .name = "no-fmuls",
30 .description = "Disable the fmuls instruction.",27 .description = "Disable the fmuls instruction.",
31 .llvm_name = "no-fmuls",
32 .subfeatures = &[_]*const Feature {28 .subfeatures = &[_]*const Feature {
33 },29 },
34};30};
...@@ -36,7 +32,6 @@ pub const feature_noFmuls = Feature{...@@ -36,7 +32,6 @@ pub const feature_noFmuls = Feature{
36pub const feature_noFsmuld = Feature{32pub const feature_noFsmuld = Feature{
37 .name = "no-fsmuld",33 .name = "no-fsmuld",
38 .description = "Disable the fsmuld instruction.",34 .description = "Disable the fsmuld instruction.",
39 .llvm_name = "no-fsmuld",
40 .subfeatures = &[_]*const Feature {35 .subfeatures = &[_]*const Feature {
41 },36 },
42};37};
...@@ -44,7 +39,6 @@ pub const feature_noFsmuld = Feature{...@@ -44,7 +39,6 @@ pub const feature_noFsmuld = Feature{
44pub const feature_leonpwrpsr = Feature{39pub const feature_leonpwrpsr = Feature{
45 .name = "leonpwrpsr",40 .name = "leonpwrpsr",
46 .description = "Enable the PWRPSR instruction",41 .description = "Enable the PWRPSR instruction",
47 .llvm_name = "leonpwrpsr",
48 .subfeatures = &[_]*const Feature {42 .subfeatures = &[_]*const Feature {
49 },43 },
50};44};
...@@ -52,7 +46,6 @@ pub const feature_leonpwrpsr = Feature{...@@ -52,7 +46,6 @@ pub const feature_leonpwrpsr = Feature{
52pub const feature_softFloat = Feature{46pub const feature_softFloat = Feature{
53 .name = "soft-float",47 .name = "soft-float",
54 .description = "Use software emulation for floating point",48 .description = "Use software emulation for floating point",
55 .llvm_name = "soft-float",
56 .subfeatures = &[_]*const Feature {49 .subfeatures = &[_]*const Feature {
57 },50 },
58};51};
...@@ -60,7 +53,6 @@ pub const feature_softFloat = Feature{...@@ -60,7 +53,6 @@ pub const feature_softFloat = Feature{
60pub const feature_softMulDiv = Feature{53pub const feature_softMulDiv = Feature{
61 .name = "soft-mul-div",54 .name = "soft-mul-div",
62 .description = "Use software emulation for integer multiply and divide",55 .description = "Use software emulation for integer multiply and divide",
63 .llvm_name = "soft-mul-div",
64 .subfeatures = &[_]*const Feature {56 .subfeatures = &[_]*const Feature {
65 },57 },
66};58};
...@@ -68,7 +60,6 @@ pub const feature_softMulDiv = Feature{...@@ -68,7 +60,6 @@ pub const feature_softMulDiv = Feature{
68pub const feature_deprecatedV8 = Feature{60pub const feature_deprecatedV8 = Feature{
69 .name = "deprecated-v8",61 .name = "deprecated-v8",
70 .description = "Enable deprecated V8 instructions in V9 mode",62 .description = "Enable deprecated V8 instructions in V9 mode",
71 .llvm_name = "deprecated-v8",
72 .subfeatures = &[_]*const Feature {63 .subfeatures = &[_]*const Feature {
73 },64 },
74};65};
...@@ -76,7 +67,6 @@ pub const feature_deprecatedV8 = Feature{...@@ -76,7 +67,6 @@ pub const feature_deprecatedV8 = Feature{
76pub const feature_v9 = Feature{67pub const feature_v9 = Feature{
77 .name = "v9",68 .name = "v9",
78 .description = "Enable SPARC-V9 instructions",69 .description = "Enable SPARC-V9 instructions",
79 .llvm_name = "v9",
80 .subfeatures = &[_]*const Feature {70 .subfeatures = &[_]*const Feature {
81 },71 },
82};72};
...@@ -84,7 +74,6 @@ pub const feature_v9 = Feature{...@@ -84,7 +74,6 @@ pub const feature_v9 = Feature{
84pub const feature_vis = Feature{74pub const feature_vis = Feature{
85 .name = "vis",75 .name = "vis",
86 .description = "Enable UltraSPARC Visual Instruction Set extensions",76 .description = "Enable UltraSPARC Visual Instruction Set extensions",
87 .llvm_name = "vis",
88 .subfeatures = &[_]*const Feature {77 .subfeatures = &[_]*const Feature {
89 },78 },
90};79};
...@@ -92,7 +81,6 @@ pub const feature_vis = Feature{...@@ -92,7 +81,6 @@ pub const feature_vis = Feature{
92pub const feature_vis2 = Feature{81pub const feature_vis2 = Feature{
93 .name = "vis2",82 .name = "vis2",
94 .description = "Enable Visual Instruction Set extensions II",83 .description = "Enable Visual Instruction Set extensions II",
95 .llvm_name = "vis2",
96 .subfeatures = &[_]*const Feature {84 .subfeatures = &[_]*const Feature {
97 },85 },
98};86};
...@@ -100,7 +88,6 @@ pub const feature_vis2 = Feature{...@@ -100,7 +88,6 @@ pub const feature_vis2 = Feature{
100pub const feature_vis3 = Feature{88pub const feature_vis3 = Feature{
101 .name = "vis3",89 .name = "vis3",
102 .description = "Enable Visual Instruction Set extensions III",90 .description = "Enable Visual Instruction Set extensions III",
103 .llvm_name = "vis3",
104 .subfeatures = &[_]*const Feature {91 .subfeatures = &[_]*const Feature {
105 },92 },
106};93};
...@@ -108,7 +95,6 @@ pub const feature_vis3 = Feature{...@@ -108,7 +95,6 @@ pub const feature_vis3 = Feature{
108pub const feature_fixallfdivsqrt = Feature{95pub const feature_fixallfdivsqrt = Feature{
109 .name = "fixallfdivsqrt",96 .name = "fixallfdivsqrt",
110 .description = "LEON erratum fix: Fix FDIVS/FDIVD/FSQRTS/FSQRTD instructions with NOPs and floating-point store",97 .description = "LEON erratum fix: Fix FDIVS/FDIVD/FSQRTS/FSQRTD instructions with NOPs and floating-point store",
111 .llvm_name = "fixallfdivsqrt",
112 .subfeatures = &[_]*const Feature {98 .subfeatures = &[_]*const Feature {
113 },99 },
114};100};
...@@ -116,7 +102,6 @@ pub const feature_fixallfdivsqrt = Feature{...@@ -116,7 +102,6 @@ pub const feature_fixallfdivsqrt = Feature{
116pub const feature_insertnopload = Feature{102pub const feature_insertnopload = Feature{
117 .name = "insertnopload",103 .name = "insertnopload",
118 .description = "LEON3 erratum fix: Insert a NOP instruction after every single-cycle load instruction when the next instruction is another load/store instruction",104 .description = "LEON3 erratum fix: Insert a NOP instruction after every single-cycle load instruction when the next instruction is another load/store instruction",
119 .llvm_name = "insertnopload",
120 .subfeatures = &[_]*const Feature {105 .subfeatures = &[_]*const Feature {
121 },106 },
122};107};
...@@ -124,7 +109,6 @@ pub const feature_insertnopload = Feature{...@@ -124,7 +109,6 @@ pub const feature_insertnopload = Feature{
124pub const feature_hasleoncasa = Feature{109pub const feature_hasleoncasa = Feature{
125 .name = "hasleoncasa",110 .name = "hasleoncasa",
126 .description = "Enable CASA instruction for LEON3 and LEON4 processors",111 .description = "Enable CASA instruction for LEON3 and LEON4 processors",
127 .llvm_name = "hasleoncasa",
128 .subfeatures = &[_]*const Feature {112 .subfeatures = &[_]*const Feature {
129 },113 },
130};114};
...@@ -132,7 +116,6 @@ pub const feature_hasleoncasa = Feature{...@@ -132,7 +116,6 @@ pub const feature_hasleoncasa = Feature{
132pub const feature_leoncyclecounter = Feature{116pub const feature_leoncyclecounter = Feature{
133 .name = "leoncyclecounter",117 .name = "leoncyclecounter",
134 .description = "Use the Leon cycle counter register",118 .description = "Use the Leon cycle counter register",
135 .llvm_name = "leoncyclecounter",
136 .subfeatures = &[_]*const Feature {119 .subfeatures = &[_]*const Feature {
137 },120 },
138};121};
...@@ -140,7 +123,6 @@ pub const feature_leoncyclecounter = Feature{...@@ -140,7 +123,6 @@ pub const feature_leoncyclecounter = Feature{
140pub const feature_hasumacsmac = Feature{123pub const feature_hasumacsmac = Feature{
141 .name = "hasumacsmac",124 .name = "hasumacsmac",
142 .description = "Enable UMAC and SMAC for LEON3 and LEON4 processors",125 .description = "Enable UMAC and SMAC for LEON3 and LEON4 processors",
143 .llvm_name = "hasumacsmac",
144 .subfeatures = &[_]*const Feature {126 .subfeatures = &[_]*const Feature {
145 },127 },
146};128};
...@@ -148,7 +130,6 @@ pub const feature_hasumacsmac = Feature{...@@ -148,7 +130,6 @@ pub const feature_hasumacsmac = Feature{
148pub const feature_popc = Feature{130pub const feature_popc = Feature{
149 .name = "popc",131 .name = "popc",
150 .description = "Use the popc (population count) instruction",132 .description = "Use the popc (population count) instruction",
151 .llvm_name = "popc",
152 .subfeatures = &[_]*const Feature {133 .subfeatures = &[_]*const Feature {
153 },134 },
154};135};
lib/std/target/systemz.zig-35
...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_dfpPackedConversion = Feature{4pub const feature_dfpPackedConversion = Feature{
5 .name = "dfp-packed-conversion",5 .name = "dfp-packed-conversion",
6 .description = "Assume that the DFP packed-conversion facility is installed",6 .description = "Assume that the DFP packed-conversion facility is installed",
7 .llvm_name = "dfp-packed-conversion",
8 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
9 },8 },
10};9};
...@@ -12,7 +11,6 @@ pub const feature_dfpPackedConversion = Feature{...@@ -12,7 +11,6 @@ pub const feature_dfpPackedConversion = Feature{
12pub const feature_dfpZonedConversion = Feature{11pub const feature_dfpZonedConversion = Feature{
13 .name = "dfp-zoned-conversion",12 .name = "dfp-zoned-conversion",
14 .description = "Assume that the DFP zoned-conversion facility is installed",13 .description = "Assume that the DFP zoned-conversion facility is installed",
15 .llvm_name = "dfp-zoned-conversion",
16 .subfeatures = &[_]*const Feature {14 .subfeatures = &[_]*const Feature {
17 },15 },
18};16};
...@@ -20,7 +18,6 @@ pub const feature_dfpZonedConversion = Feature{...@@ -20,7 +18,6 @@ pub const feature_dfpZonedConversion = Feature{
20pub const feature_deflateConversion = Feature{18pub const feature_deflateConversion = Feature{
21 .name = "deflate-conversion",19 .name = "deflate-conversion",
22 .description = "Assume that the deflate-conversion facility is installed",20 .description = "Assume that the deflate-conversion facility is installed",
23 .llvm_name = "deflate-conversion",
24 .subfeatures = &[_]*const Feature {21 .subfeatures = &[_]*const Feature {
25 },22 },
26};23};
...@@ -28,7 +25,6 @@ pub const feature_deflateConversion = Feature{...@@ -28,7 +25,6 @@ pub const feature_deflateConversion = Feature{
28pub const feature_distinctOps = Feature{25pub const feature_distinctOps = Feature{
29 .name = "distinct-ops",26 .name = "distinct-ops",
30 .description = "Assume that the distinct-operands facility is installed",27 .description = "Assume that the distinct-operands facility is installed",
31 .llvm_name = "distinct-ops",
32 .subfeatures = &[_]*const Feature {28 .subfeatures = &[_]*const Feature {
33 },29 },
34};30};
...@@ -36,7 +32,6 @@ pub const feature_distinctOps = Feature{...@@ -36,7 +32,6 @@ pub const feature_distinctOps = Feature{
36pub const feature_enhancedDat2 = Feature{32pub const feature_enhancedDat2 = Feature{
37 .name = "enhanced-dat-2",33 .name = "enhanced-dat-2",
38 .description = "Assume that the enhanced-DAT facility 2 is installed",34 .description = "Assume that the enhanced-DAT facility 2 is installed",
39 .llvm_name = "enhanced-dat-2",
40 .subfeatures = &[_]*const Feature {35 .subfeatures = &[_]*const Feature {
41 },36 },
42};37};
...@@ -44,7 +39,6 @@ pub const feature_enhancedDat2 = Feature{...@@ -44,7 +39,6 @@ pub const feature_enhancedDat2 = Feature{
44pub const feature_enhancedSort = Feature{39pub const feature_enhancedSort = Feature{
45 .name = "enhanced-sort",40 .name = "enhanced-sort",
46 .description = "Assume that the enhanced-sort facility is installed",41 .description = "Assume that the enhanced-sort facility is installed",
47 .llvm_name = "enhanced-sort",
48 .subfeatures = &[_]*const Feature {42 .subfeatures = &[_]*const Feature {
49 },43 },
50};44};
...@@ -52,7 +46,6 @@ pub const feature_enhancedSort = Feature{...@@ -52,7 +46,6 @@ pub const feature_enhancedSort = Feature{
52pub const feature_executionHint = Feature{46pub const feature_executionHint = Feature{
53 .name = "execution-hint",47 .name = "execution-hint",
54 .description = "Assume that the execution-hint facility is installed",48 .description = "Assume that the execution-hint facility is installed",
55 .llvm_name = "execution-hint",
56 .subfeatures = &[_]*const Feature {49 .subfeatures = &[_]*const Feature {
57 },50 },
58};51};
...@@ -60,7 +53,6 @@ pub const feature_executionHint = Feature{...@@ -60,7 +53,6 @@ pub const feature_executionHint = Feature{
60pub const feature_fpExtension = Feature{53pub const feature_fpExtension = Feature{
61 .name = "fp-extension",54 .name = "fp-extension",
62 .description = "Assume that the floating-point extension facility is installed",55 .description = "Assume that the floating-point extension facility is installed",
63 .llvm_name = "fp-extension",
64 .subfeatures = &[_]*const Feature {56 .subfeatures = &[_]*const Feature {
65 },57 },
66};58};
...@@ -68,7 +60,6 @@ pub const feature_fpExtension = Feature{...@@ -68,7 +60,6 @@ pub const feature_fpExtension = Feature{
68pub const feature_fastSerialization = Feature{60pub const feature_fastSerialization = Feature{
69 .name = "fast-serialization",61 .name = "fast-serialization",
70 .description = "Assume that the fast-serialization facility is installed",62 .description = "Assume that the fast-serialization facility is installed",
71 .llvm_name = "fast-serialization",
72 .subfeatures = &[_]*const Feature {63 .subfeatures = &[_]*const Feature {
73 },64 },
74};65};
...@@ -76,7 +67,6 @@ pub const feature_fastSerialization = Feature{...@@ -76,7 +67,6 @@ pub const feature_fastSerialization = Feature{
76pub const feature_guardedStorage = Feature{67pub const feature_guardedStorage = Feature{
77 .name = "guarded-storage",68 .name = "guarded-storage",
78 .description = "Assume that the guarded-storage facility is installed",69 .description = "Assume that the guarded-storage facility is installed",
79 .llvm_name = "guarded-storage",
80 .subfeatures = &[_]*const Feature {70 .subfeatures = &[_]*const Feature {
81 },71 },
82};72};
...@@ -84,7 +74,6 @@ pub const feature_guardedStorage = Feature{...@@ -84,7 +74,6 @@ pub const feature_guardedStorage = Feature{
84pub const feature_highWord = Feature{74pub const feature_highWord = Feature{
85 .name = "high-word",75 .name = "high-word",
86 .description = "Assume that the high-word facility is installed",76 .description = "Assume that the high-word facility is installed",
87 .llvm_name = "high-word",
88 .subfeatures = &[_]*const Feature {77 .subfeatures = &[_]*const Feature {
89 },78 },
90};79};
...@@ -92,7 +81,6 @@ pub const feature_highWord = Feature{...@@ -92,7 +81,6 @@ pub const feature_highWord = Feature{
92pub const feature_insertReferenceBitsMultiple = Feature{81pub const feature_insertReferenceBitsMultiple = Feature{
93 .name = "insert-reference-bits-multiple",82 .name = "insert-reference-bits-multiple",
94 .description = "Assume that the insert-reference-bits-multiple facility is installed",83 .description = "Assume that the insert-reference-bits-multiple facility is installed",
95 .llvm_name = "insert-reference-bits-multiple",
96 .subfeatures = &[_]*const Feature {84 .subfeatures = &[_]*const Feature {
97 },85 },
98};86};
...@@ -100,7 +88,6 @@ pub const feature_insertReferenceBitsMultiple = Feature{...@@ -100,7 +88,6 @@ pub const feature_insertReferenceBitsMultiple = Feature{
100pub const feature_interlockedAccess1 = Feature{88pub const feature_interlockedAccess1 = Feature{
101 .name = "interlocked-access1",89 .name = "interlocked-access1",
102 .description = "Assume that interlocked-access facility 1 is installed",90 .description = "Assume that interlocked-access facility 1 is installed",
103 .llvm_name = "interlocked-access1",
104 .subfeatures = &[_]*const Feature {91 .subfeatures = &[_]*const Feature {
105 },92 },
106};93};
...@@ -108,7 +95,6 @@ pub const feature_interlockedAccess1 = Feature{...@@ -108,7 +95,6 @@ pub const feature_interlockedAccess1 = Feature{
108pub const feature_loadAndTrap = Feature{95pub const feature_loadAndTrap = Feature{
109 .name = "load-and-trap",96 .name = "load-and-trap",
110 .description = "Assume that the load-and-trap facility is installed",97 .description = "Assume that the load-and-trap facility is installed",
111 .llvm_name = "load-and-trap",
112 .subfeatures = &[_]*const Feature {98 .subfeatures = &[_]*const Feature {
113 },99 },
114};100};
...@@ -116,7 +102,6 @@ pub const feature_loadAndTrap = Feature{...@@ -116,7 +102,6 @@ pub const feature_loadAndTrap = Feature{
116pub const feature_loadAndZeroRightmostByte = Feature{102pub const feature_loadAndZeroRightmostByte = Feature{
117 .name = "load-and-zero-rightmost-byte",103 .name = "load-and-zero-rightmost-byte",
118 .description = "Assume that the load-and-zero-rightmost-byte facility is installed",104 .description = "Assume that the load-and-zero-rightmost-byte facility is installed",
119 .llvm_name = "load-and-zero-rightmost-byte",
120 .subfeatures = &[_]*const Feature {105 .subfeatures = &[_]*const Feature {
121 },106 },
122};107};
...@@ -124,7 +109,6 @@ pub const feature_loadAndZeroRightmostByte = Feature{...@@ -124,7 +109,6 @@ pub const feature_loadAndZeroRightmostByte = Feature{
124pub const feature_loadStoreOnCond = Feature{109pub const feature_loadStoreOnCond = Feature{
125 .name = "load-store-on-cond",110 .name = "load-store-on-cond",
126 .description = "Assume that the load/store-on-condition facility is installed",111 .description = "Assume that the load/store-on-condition facility is installed",
127 .llvm_name = "load-store-on-cond",
128 .subfeatures = &[_]*const Feature {112 .subfeatures = &[_]*const Feature {
129 },113 },
130};114};
...@@ -132,7 +116,6 @@ pub const feature_loadStoreOnCond = Feature{...@@ -132,7 +116,6 @@ pub const feature_loadStoreOnCond = Feature{
132pub const feature_loadStoreOnCond2 = Feature{116pub const feature_loadStoreOnCond2 = Feature{
133 .name = "load-store-on-cond-2",117 .name = "load-store-on-cond-2",
134 .description = "Assume that the load/store-on-condition facility 2 is installed",118 .description = "Assume that the load/store-on-condition facility 2 is installed",
135 .llvm_name = "load-store-on-cond-2",
136 .subfeatures = &[_]*const Feature {119 .subfeatures = &[_]*const Feature {
137 },120 },
138};121};
...@@ -140,7 +123,6 @@ pub const feature_loadStoreOnCond2 = Feature{...@@ -140,7 +123,6 @@ pub const feature_loadStoreOnCond2 = Feature{
140pub const feature_messageSecurityAssistExtension3 = Feature{123pub const feature_messageSecurityAssistExtension3 = Feature{
141 .name = "message-security-assist-extension3",124 .name = "message-security-assist-extension3",
142 .description = "Assume that the message-security-assist extension facility 3 is installed",125 .description = "Assume that the message-security-assist extension facility 3 is installed",
143 .llvm_name = "message-security-assist-extension3",
144 .subfeatures = &[_]*const Feature {126 .subfeatures = &[_]*const Feature {
145 },127 },
146};128};
...@@ -148,7 +130,6 @@ pub const feature_messageSecurityAssistExtension3 = Feature{...@@ -148,7 +130,6 @@ pub const feature_messageSecurityAssistExtension3 = Feature{
148pub const feature_messageSecurityAssistExtension4 = Feature{130pub const feature_messageSecurityAssistExtension4 = Feature{
149 .name = "message-security-assist-extension4",131 .name = "message-security-assist-extension4",
150 .description = "Assume that the message-security-assist extension facility 4 is installed",132 .description = "Assume that the message-security-assist extension facility 4 is installed",
151 .llvm_name = "message-security-assist-extension4",
152 .subfeatures = &[_]*const Feature {133 .subfeatures = &[_]*const Feature {
153 },134 },
154};135};
...@@ -156,7 +137,6 @@ pub const feature_messageSecurityAssistExtension4 = Feature{...@@ -156,7 +137,6 @@ pub const feature_messageSecurityAssistExtension4 = Feature{
156pub const feature_messageSecurityAssistExtension5 = Feature{137pub const feature_messageSecurityAssistExtension5 = Feature{
157 .name = "message-security-assist-extension5",138 .name = "message-security-assist-extension5",
158 .description = "Assume that the message-security-assist extension facility 5 is installed",139 .description = "Assume that the message-security-assist extension facility 5 is installed",
159 .llvm_name = "message-security-assist-extension5",
160 .subfeatures = &[_]*const Feature {140 .subfeatures = &[_]*const Feature {
161 },141 },
162};142};
...@@ -164,7 +144,6 @@ pub const feature_messageSecurityAssistExtension5 = Feature{...@@ -164,7 +144,6 @@ pub const feature_messageSecurityAssistExtension5 = Feature{
164pub const feature_messageSecurityAssistExtension7 = Feature{144pub const feature_messageSecurityAssistExtension7 = Feature{
165 .name = "message-security-assist-extension7",145 .name = "message-security-assist-extension7",
166 .description = "Assume that the message-security-assist extension facility 7 is installed",146 .description = "Assume that the message-security-assist extension facility 7 is installed",
167 .llvm_name = "message-security-assist-extension7",
168 .subfeatures = &[_]*const Feature {147 .subfeatures = &[_]*const Feature {
169 },148 },
170};149};
...@@ -172,7 +151,6 @@ pub const feature_messageSecurityAssistExtension7 = Feature{...@@ -172,7 +151,6 @@ pub const feature_messageSecurityAssistExtension7 = Feature{
172pub const feature_messageSecurityAssistExtension8 = Feature{151pub const feature_messageSecurityAssistExtension8 = Feature{
173 .name = "message-security-assist-extension8",152 .name = "message-security-assist-extension8",
174 .description = "Assume that the message-security-assist extension facility 8 is installed",153 .description = "Assume that the message-security-assist extension facility 8 is installed",
175 .llvm_name = "message-security-assist-extension8",
176 .subfeatures = &[_]*const Feature {154 .subfeatures = &[_]*const Feature {
177 },155 },
178};156};
...@@ -180,7 +158,6 @@ pub const feature_messageSecurityAssistExtension8 = Feature{...@@ -180,7 +158,6 @@ pub const feature_messageSecurityAssistExtension8 = Feature{
180pub const feature_messageSecurityAssistExtension9 = Feature{158pub const feature_messageSecurityAssistExtension9 = Feature{
181 .name = "message-security-assist-extension9",159 .name = "message-security-assist-extension9",
182 .description = "Assume that the message-security-assist extension facility 9 is installed",160 .description = "Assume that the message-security-assist extension facility 9 is installed",
183 .llvm_name = "message-security-assist-extension9",
184 .subfeatures = &[_]*const Feature {161 .subfeatures = &[_]*const Feature {
185 },162 },
186};163};
...@@ -188,7 +165,6 @@ pub const feature_messageSecurityAssistExtension9 = Feature{...@@ -188,7 +165,6 @@ pub const feature_messageSecurityAssistExtension9 = Feature{
188pub const feature_miscellaneousExtensions = Feature{165pub const feature_miscellaneousExtensions = Feature{
189 .name = "miscellaneous-extensions",166 .name = "miscellaneous-extensions",
190 .description = "Assume that the miscellaneous-extensions facility is installed",167 .description = "Assume that the miscellaneous-extensions facility is installed",
191 .llvm_name = "miscellaneous-extensions",
192 .subfeatures = &[_]*const Feature {168 .subfeatures = &[_]*const Feature {
193 },169 },
194};170};
...@@ -196,7 +172,6 @@ pub const feature_miscellaneousExtensions = Feature{...@@ -196,7 +172,6 @@ pub const feature_miscellaneousExtensions = Feature{
196pub const feature_miscellaneousExtensions2 = Feature{172pub const feature_miscellaneousExtensions2 = Feature{
197 .name = "miscellaneous-extensions-2",173 .name = "miscellaneous-extensions-2",
198 .description = "Assume that the miscellaneous-extensions facility 2 is installed",174 .description = "Assume that the miscellaneous-extensions facility 2 is installed",
199 .llvm_name = "miscellaneous-extensions-2",
200 .subfeatures = &[_]*const Feature {175 .subfeatures = &[_]*const Feature {
201 },176 },
202};177};
...@@ -204,7 +179,6 @@ pub const feature_miscellaneousExtensions2 = Feature{...@@ -204,7 +179,6 @@ pub const feature_miscellaneousExtensions2 = Feature{
204pub const feature_miscellaneousExtensions3 = Feature{179pub const feature_miscellaneousExtensions3 = Feature{
205 .name = "miscellaneous-extensions-3",180 .name = "miscellaneous-extensions-3",
206 .description = "Assume that the miscellaneous-extensions facility 3 is installed",181 .description = "Assume that the miscellaneous-extensions facility 3 is installed",
207 .llvm_name = "miscellaneous-extensions-3",
208 .subfeatures = &[_]*const Feature {182 .subfeatures = &[_]*const Feature {
209 },183 },
210};184};
...@@ -212,7 +186,6 @@ pub const feature_miscellaneousExtensions3 = Feature{...@@ -212,7 +186,6 @@ pub const feature_miscellaneousExtensions3 = Feature{
212pub const feature_populationCount = Feature{186pub const feature_populationCount = Feature{
213 .name = "population-count",187 .name = "population-count",
214 .description = "Assume that the population-count facility is installed",188 .description = "Assume that the population-count facility is installed",
215 .llvm_name = "population-count",
216 .subfeatures = &[_]*const Feature {189 .subfeatures = &[_]*const Feature {
217 },190 },
218};191};
...@@ -220,7 +193,6 @@ pub const feature_populationCount = Feature{...@@ -220,7 +193,6 @@ pub const feature_populationCount = Feature{
220pub const feature_processorAssist = Feature{193pub const feature_processorAssist = Feature{
221 .name = "processor-assist",194 .name = "processor-assist",
222 .description = "Assume that the processor-assist facility is installed",195 .description = "Assume that the processor-assist facility is installed",
223 .llvm_name = "processor-assist",
224 .subfeatures = &[_]*const Feature {196 .subfeatures = &[_]*const Feature {
225 },197 },
226};198};
...@@ -228,7 +200,6 @@ pub const feature_processorAssist = Feature{...@@ -228,7 +200,6 @@ pub const feature_processorAssist = Feature{
228pub const feature_resetReferenceBitsMultiple = Feature{200pub const feature_resetReferenceBitsMultiple = Feature{
229 .name = "reset-reference-bits-multiple",201 .name = "reset-reference-bits-multiple",
230 .description = "Assume that the reset-reference-bits-multiple facility is installed",202 .description = "Assume that the reset-reference-bits-multiple facility is installed",
231 .llvm_name = "reset-reference-bits-multiple",
232 .subfeatures = &[_]*const Feature {203 .subfeatures = &[_]*const Feature {
233 },204 },
234};205};
...@@ -236,7 +207,6 @@ pub const feature_resetReferenceBitsMultiple = Feature{...@@ -236,7 +207,6 @@ pub const feature_resetReferenceBitsMultiple = Feature{
236pub const feature_transactionalExecution = Feature{207pub const feature_transactionalExecution = Feature{
237 .name = "transactional-execution",208 .name = "transactional-execution",
238 .description = "Assume that the transactional-execution facility is installed",209 .description = "Assume that the transactional-execution facility is installed",
239 .llvm_name = "transactional-execution",
240 .subfeatures = &[_]*const Feature {210 .subfeatures = &[_]*const Feature {
241 },211 },
242};212};
...@@ -244,7 +214,6 @@ pub const feature_transactionalExecution = Feature{...@@ -244,7 +214,6 @@ pub const feature_transactionalExecution = Feature{
244pub const feature_vector = Feature{214pub const feature_vector = Feature{
245 .name = "vector",215 .name = "vector",
246 .description = "Assume that the vectory facility is installed",216 .description = "Assume that the vectory facility is installed",
247 .llvm_name = "vector",
248 .subfeatures = &[_]*const Feature {217 .subfeatures = &[_]*const Feature {
249 },218 },
250};219};
...@@ -252,7 +221,6 @@ pub const feature_vector = Feature{...@@ -252,7 +221,6 @@ pub const feature_vector = Feature{
252pub const feature_vectorEnhancements1 = Feature{221pub const feature_vectorEnhancements1 = Feature{
253 .name = "vector-enhancements-1",222 .name = "vector-enhancements-1",
254 .description = "Assume that the vector enhancements facility 1 is installed",223 .description = "Assume that the vector enhancements facility 1 is installed",
255 .llvm_name = "vector-enhancements-1",
256 .subfeatures = &[_]*const Feature {224 .subfeatures = &[_]*const Feature {
257 },225 },
258};226};
...@@ -260,7 +228,6 @@ pub const feature_vectorEnhancements1 = Feature{...@@ -260,7 +228,6 @@ pub const feature_vectorEnhancements1 = Feature{
260pub const feature_vectorEnhancements2 = Feature{228pub const feature_vectorEnhancements2 = Feature{
261 .name = "vector-enhancements-2",229 .name = "vector-enhancements-2",
262 .description = "Assume that the vector enhancements facility 2 is installed",230 .description = "Assume that the vector enhancements facility 2 is installed",
263 .llvm_name = "vector-enhancements-2",
264 .subfeatures = &[_]*const Feature {231 .subfeatures = &[_]*const Feature {
265 },232 },
266};233};
...@@ -268,7 +235,6 @@ pub const feature_vectorEnhancements2 = Feature{...@@ -268,7 +235,6 @@ pub const feature_vectorEnhancements2 = Feature{
268pub const feature_vectorPackedDecimal = Feature{235pub const feature_vectorPackedDecimal = Feature{
269 .name = "vector-packed-decimal",236 .name = "vector-packed-decimal",
270 .description = "Assume that the vector packed decimal facility is installed",237 .description = "Assume that the vector packed decimal facility is installed",
271 .llvm_name = "vector-packed-decimal",
272 .subfeatures = &[_]*const Feature {238 .subfeatures = &[_]*const Feature {
273 },239 },
274};240};
...@@ -276,7 +242,6 @@ pub const feature_vectorPackedDecimal = Feature{...@@ -276,7 +242,6 @@ pub const feature_vectorPackedDecimal = Feature{
276pub const feature_vectorPackedDecimalEnhancement = Feature{242pub const feature_vectorPackedDecimalEnhancement = Feature{
277 .name = "vector-packed-decimal-enhancement",243 .name = "vector-packed-decimal-enhancement",
278 .description = "Assume that the vector packed decimal enhancement facility is installed",244 .description = "Assume that the vector packed decimal enhancement facility is installed",
279 .llvm_name = "vector-packed-decimal-enhancement",
280 .subfeatures = &[_]*const Feature {245 .subfeatures = &[_]*const Feature {
281 },246 },
282};247};
lib/std/target/wasm.zig-10
...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_atomics = Feature{4pub const feature_atomics = Feature{
5 .name = "atomics",5 .name = "atomics",
6 .description = "Enable Atomics",6 .description = "Enable Atomics",
7 .llvm_name = "atomics",
8 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
9 },8 },
10};9};
...@@ -12,7 +11,6 @@ pub const feature_atomics = Feature{...@@ -12,7 +11,6 @@ pub const feature_atomics = Feature{
12pub const feature_bulkMemory = Feature{11pub const feature_bulkMemory = Feature{
13 .name = "bulk-memory",12 .name = "bulk-memory",
14 .description = "Enable bulk memory operations",13 .description = "Enable bulk memory operations",
15 .llvm_name = "bulk-memory",
16 .subfeatures = &[_]*const Feature {14 .subfeatures = &[_]*const Feature {
17 },15 },
18};16};
...@@ -20,7 +18,6 @@ pub const feature_bulkMemory = Feature{...@@ -20,7 +18,6 @@ pub const feature_bulkMemory = Feature{
20pub const feature_exceptionHandling = Feature{18pub const feature_exceptionHandling = Feature{
21 .name = "exception-handling",19 .name = "exception-handling",
22 .description = "Enable Wasm exception handling",20 .description = "Enable Wasm exception handling",
23 .llvm_name = "exception-handling",
24 .subfeatures = &[_]*const Feature {21 .subfeatures = &[_]*const Feature {
25 },22 },
26};23};
...@@ -28,7 +25,6 @@ pub const feature_exceptionHandling = Feature{...@@ -28,7 +25,6 @@ pub const feature_exceptionHandling = Feature{
28pub const feature_multivalue = Feature{25pub const feature_multivalue = Feature{
29 .name = "multivalue",26 .name = "multivalue",
30 .description = "Enable multivalue blocks, instructions, and functions",27 .description = "Enable multivalue blocks, instructions, and functions",
31 .llvm_name = "multivalue",
32 .subfeatures = &[_]*const Feature {28 .subfeatures = &[_]*const Feature {
33 },29 },
34};30};
...@@ -36,7 +32,6 @@ pub const feature_multivalue = Feature{...@@ -36,7 +32,6 @@ pub const feature_multivalue = Feature{
36pub const feature_mutableGlobals = Feature{32pub const feature_mutableGlobals = Feature{
37 .name = "mutable-globals",33 .name = "mutable-globals",
38 .description = "Enable mutable globals",34 .description = "Enable mutable globals",
39 .llvm_name = "mutable-globals",
40 .subfeatures = &[_]*const Feature {35 .subfeatures = &[_]*const Feature {
41 },36 },
42};37};
...@@ -44,7 +39,6 @@ pub const feature_mutableGlobals = Feature{...@@ -44,7 +39,6 @@ pub const feature_mutableGlobals = Feature{
44pub const feature_nontrappingFptoint = Feature{39pub const feature_nontrappingFptoint = Feature{
45 .name = "nontrapping-fptoint",40 .name = "nontrapping-fptoint",
46 .description = "Enable non-trapping float-to-int conversion operators",41 .description = "Enable non-trapping float-to-int conversion operators",
47 .llvm_name = "nontrapping-fptoint",
48 .subfeatures = &[_]*const Feature {42 .subfeatures = &[_]*const Feature {
49 },43 },
50};44};
...@@ -52,7 +46,6 @@ pub const feature_nontrappingFptoint = Feature{...@@ -52,7 +46,6 @@ pub const feature_nontrappingFptoint = Feature{
52pub const feature_simd128 = Feature{46pub const feature_simd128 = Feature{
53 .name = "simd128",47 .name = "simd128",
54 .description = "Enable 128-bit SIMD",48 .description = "Enable 128-bit SIMD",
55 .llvm_name = "simd128",
56 .subfeatures = &[_]*const Feature {49 .subfeatures = &[_]*const Feature {
57 },50 },
58};51};
...@@ -60,7 +53,6 @@ pub const feature_simd128 = Feature{...@@ -60,7 +53,6 @@ pub const feature_simd128 = Feature{
60pub const feature_signExt = Feature{53pub const feature_signExt = Feature{
61 .name = "sign-ext",54 .name = "sign-ext",
62 .description = "Enable sign extension operators",55 .description = "Enable sign extension operators",
63 .llvm_name = "sign-ext",
64 .subfeatures = &[_]*const Feature {56 .subfeatures = &[_]*const Feature {
65 },57 },
66};58};
...@@ -68,7 +60,6 @@ pub const feature_signExt = Feature{...@@ -68,7 +60,6 @@ pub const feature_signExt = Feature{
68pub const feature_tailCall = Feature{60pub const feature_tailCall = Feature{
69 .name = "tail-call",61 .name = "tail-call",
70 .description = "Enable tail call instructions",62 .description = "Enable tail call instructions",
71 .llvm_name = "tail-call",
72 .subfeatures = &[_]*const Feature {63 .subfeatures = &[_]*const Feature {
73 },64 },
74};65};
...@@ -76,7 +67,6 @@ pub const feature_tailCall = Feature{...@@ -76,7 +67,6 @@ pub const feature_tailCall = Feature{
76pub const feature_unimplementedSimd128 = Feature{67pub const feature_unimplementedSimd128 = Feature{
77 .name = "unimplemented-simd128",68 .name = "unimplemented-simd128",
78 .description = "Enable 128-bit SIMD not yet implemented in engines",69 .description = "Enable 128-bit SIMD not yet implemented in engines",
79 .llvm_name = "unimplemented-simd128",
80 .subfeatures = &[_]*const Feature {70 .subfeatures = &[_]*const Feature {
81 &feature_simd128,71 &feature_simd128,
82 },72 },
lib/std/target/x86.zig+1-127
...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_dnow3 = Feature{4pub const feature_dnow3 = Feature{
5 .name = "3dnow",5 .name = "3dnow",
6 .description = "Enable 3DNow! instructions",6 .description = "Enable 3DNow! instructions",
7 .llvm_name = "3dnow",
8 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
9 &feature_mmx,8 &feature_mmx,
10 },9 },
...@@ -13,7 +12,6 @@ pub const feature_dnow3 = Feature{...@@ -13,7 +12,6 @@ pub const feature_dnow3 = Feature{
13pub const feature_dnowa3 = Feature{12pub const feature_dnowa3 = Feature{
14 .name = "3dnowa",13 .name = "3dnowa",
15 .description = "Enable 3DNow! Athlon instructions",14 .description = "Enable 3DNow! Athlon instructions",
16 .llvm_name = "3dnowa",
17 .subfeatures = &[_]*const Feature {15 .subfeatures = &[_]*const Feature {
18 &feature_mmx,16 &feature_mmx,
19 },17 },
...@@ -22,7 +20,6 @@ pub const feature_dnowa3 = Feature{...@@ -22,7 +20,6 @@ pub const feature_dnowa3 = Feature{
22pub const feature_bit64 = Feature{20pub const feature_bit64 = Feature{
23 .name = "64bit",21 .name = "64bit",
24 .description = "Support 64-bit instructions",22 .description = "Support 64-bit instructions",
25 .llvm_name = "64bit",
26 .subfeatures = &[_]*const Feature {23 .subfeatures = &[_]*const Feature {
27 },24 },
28};25};
...@@ -30,7 +27,6 @@ pub const feature_bit64 = Feature{...@@ -30,7 +27,6 @@ pub const feature_bit64 = Feature{
30pub const feature_adx = Feature{27pub const feature_adx = Feature{
31 .name = "adx",28 .name = "adx",
32 .description = "Support ADX instructions",29 .description = "Support ADX instructions",
33 .llvm_name = "adx",
34 .subfeatures = &[_]*const Feature {30 .subfeatures = &[_]*const Feature {
35 },31 },
36};32};
...@@ -38,7 +34,6 @@ pub const feature_adx = Feature{...@@ -38,7 +34,6 @@ pub const feature_adx = Feature{
38pub const feature_aes = Feature{34pub const feature_aes = Feature{
39 .name = "aes",35 .name = "aes",
40 .description = "Enable AES instructions",36 .description = "Enable AES instructions",
41 .llvm_name = "aes",
42 .subfeatures = &[_]*const Feature {37 .subfeatures = &[_]*const Feature {
43 &feature_sse,38 &feature_sse,
44 },39 },
...@@ -47,7 +42,6 @@ pub const feature_aes = Feature{...@@ -47,7 +42,6 @@ pub const feature_aes = Feature{
47pub const feature_avx = Feature{42pub const feature_avx = Feature{
48 .name = "avx",43 .name = "avx",
49 .description = "Enable AVX instructions",44 .description = "Enable AVX instructions",
50 .llvm_name = "avx",
51 .subfeatures = &[_]*const Feature {45 .subfeatures = &[_]*const Feature {
52 &feature_sse,46 &feature_sse,
53 },47 },
...@@ -56,7 +50,6 @@ pub const feature_avx = Feature{...@@ -56,7 +50,6 @@ pub const feature_avx = Feature{
56pub const feature_avx2 = Feature{50pub const feature_avx2 = Feature{
57 .name = "avx2",51 .name = "avx2",
58 .description = "Enable AVX2 instructions",52 .description = "Enable AVX2 instructions",
59 .llvm_name = "avx2",
60 .subfeatures = &[_]*const Feature {53 .subfeatures = &[_]*const Feature {
61 &feature_sse,54 &feature_sse,
62 },55 },
...@@ -65,7 +58,6 @@ pub const feature_avx2 = Feature{...@@ -65,7 +58,6 @@ pub const feature_avx2 = Feature{
65pub const feature_avx512f = Feature{58pub const feature_avx512f = Feature{
66 .name = "avx512f",59 .name = "avx512f",
67 .description = "Enable AVX-512 instructions",60 .description = "Enable AVX-512 instructions",
68 .llvm_name = "avx512f",
69 .subfeatures = &[_]*const Feature {61 .subfeatures = &[_]*const Feature {
70 &feature_sse,62 &feature_sse,
71 },63 },
...@@ -74,7 +66,6 @@ pub const feature_avx512f = Feature{...@@ -74,7 +66,6 @@ pub const feature_avx512f = Feature{
74pub const feature_avx512bf16 = Feature{66pub const feature_avx512bf16 = Feature{
75 .name = "avx512bf16",67 .name = "avx512bf16",
76 .description = "Support bfloat16 floating point",68 .description = "Support bfloat16 floating point",
77 .llvm_name = "avx512bf16",
78 .subfeatures = &[_]*const Feature {69 .subfeatures = &[_]*const Feature {
79 &feature_sse,70 &feature_sse,
80 },71 },
...@@ -83,7 +74,6 @@ pub const feature_avx512bf16 = Feature{...@@ -83,7 +74,6 @@ pub const feature_avx512bf16 = Feature{
83pub const feature_avx512bitalg = Feature{74pub const feature_avx512bitalg = Feature{
84 .name = "avx512bitalg",75 .name = "avx512bitalg",
85 .description = "Enable AVX-512 Bit Algorithms",76 .description = "Enable AVX-512 Bit Algorithms",
86 .llvm_name = "avx512bitalg",
87 .subfeatures = &[_]*const Feature {77 .subfeatures = &[_]*const Feature {
88 &feature_sse,78 &feature_sse,
89 },79 },
...@@ -92,7 +82,6 @@ pub const feature_avx512bitalg = Feature{...@@ -92,7 +82,6 @@ pub const feature_avx512bitalg = Feature{
92pub const feature_bmi = Feature{82pub const feature_bmi = Feature{
93 .name = "bmi",83 .name = "bmi",
94 .description = "Support BMI instructions",84 .description = "Support BMI instructions",
95 .llvm_name = "bmi",
96 .subfeatures = &[_]*const Feature {85 .subfeatures = &[_]*const Feature {
97 },86 },
98};87};
...@@ -100,7 +89,6 @@ pub const feature_bmi = Feature{...@@ -100,7 +89,6 @@ pub const feature_bmi = Feature{
100pub const feature_bmi2 = Feature{89pub const feature_bmi2 = Feature{
101 .name = "bmi2",90 .name = "bmi2",
102 .description = "Support BMI2 instructions",91 .description = "Support BMI2 instructions",
103 .llvm_name = "bmi2",
104 .subfeatures = &[_]*const Feature {92 .subfeatures = &[_]*const Feature {
105 },93 },
106};94};
...@@ -108,7 +96,6 @@ pub const feature_bmi2 = Feature{...@@ -108,7 +96,6 @@ pub const feature_bmi2 = Feature{
108pub const feature_avx512bw = Feature{96pub const feature_avx512bw = Feature{
109 .name = "avx512bw",97 .name = "avx512bw",
110 .description = "Enable AVX-512 Byte and Word Instructions",98 .description = "Enable AVX-512 Byte and Word Instructions",
111 .llvm_name = "avx512bw",
112 .subfeatures = &[_]*const Feature {99 .subfeatures = &[_]*const Feature {
113 &feature_sse,100 &feature_sse,
114 },101 },
...@@ -117,7 +104,6 @@ pub const feature_avx512bw = Feature{...@@ -117,7 +104,6 @@ pub const feature_avx512bw = Feature{
117pub const feature_branchfusion = Feature{104pub const feature_branchfusion = Feature{
118 .name = "branchfusion",105 .name = "branchfusion",
119 .description = "CMP/TEST can be fused with conditional branches",106 .description = "CMP/TEST can be fused with conditional branches",
120 .llvm_name = "branchfusion",
121 .subfeatures = &[_]*const Feature {107 .subfeatures = &[_]*const Feature {
122 },108 },
123};109};
...@@ -125,7 +111,6 @@ pub const feature_branchfusion = Feature{...@@ -125,7 +111,6 @@ pub const feature_branchfusion = Feature{
125pub const feature_avx512cd = Feature{111pub const feature_avx512cd = Feature{
126 .name = "avx512cd",112 .name = "avx512cd",
127 .description = "Enable AVX-512 Conflict Detection Instructions",113 .description = "Enable AVX-512 Conflict Detection Instructions",
128 .llvm_name = "avx512cd",
129 .subfeatures = &[_]*const Feature {114 .subfeatures = &[_]*const Feature {
130 &feature_sse,115 &feature_sse,
131 },116 },
...@@ -134,7 +119,6 @@ pub const feature_avx512cd = Feature{...@@ -134,7 +119,6 @@ pub const feature_avx512cd = Feature{
134pub const feature_cldemote = Feature{119pub const feature_cldemote = Feature{
135 .name = "cldemote",120 .name = "cldemote",
136 .description = "Enable Cache Demote",121 .description = "Enable Cache Demote",
137 .llvm_name = "cldemote",
138 .subfeatures = &[_]*const Feature {122 .subfeatures = &[_]*const Feature {
139 },123 },
140};124};
...@@ -142,7 +126,6 @@ pub const feature_cldemote = Feature{...@@ -142,7 +126,6 @@ pub const feature_cldemote = Feature{
142pub const feature_clflushopt = Feature{126pub const feature_clflushopt = Feature{
143 .name = "clflushopt",127 .name = "clflushopt",
144 .description = "Flush A Cache Line Optimized",128 .description = "Flush A Cache Line Optimized",
145 .llvm_name = "clflushopt",
146 .subfeatures = &[_]*const Feature {129 .subfeatures = &[_]*const Feature {
147 },130 },
148};131};
...@@ -150,7 +133,6 @@ pub const feature_clflushopt = Feature{...@@ -150,7 +133,6 @@ pub const feature_clflushopt = Feature{
150pub const feature_clwb = Feature{133pub const feature_clwb = Feature{
151 .name = "clwb",134 .name = "clwb",
152 .description = "Cache Line Write Back",135 .description = "Cache Line Write Back",
153 .llvm_name = "clwb",
154 .subfeatures = &[_]*const Feature {136 .subfeatures = &[_]*const Feature {
155 },137 },
156};138};
...@@ -158,7 +140,6 @@ pub const feature_clwb = Feature{...@@ -158,7 +140,6 @@ pub const feature_clwb = Feature{
158pub const feature_clzero = Feature{140pub const feature_clzero = Feature{
159 .name = "clzero",141 .name = "clzero",
160 .description = "Enable Cache Line Zero",142 .description = "Enable Cache Line Zero",
161 .llvm_name = "clzero",
162 .subfeatures = &[_]*const Feature {143 .subfeatures = &[_]*const Feature {
163 },144 },
164};145};
...@@ -166,7 +147,6 @@ pub const feature_clzero = Feature{...@@ -166,7 +147,6 @@ pub const feature_clzero = Feature{
166pub const feature_cmov = Feature{147pub const feature_cmov = Feature{
167 .name = "cmov",148 .name = "cmov",
168 .description = "Enable conditional move instructions",149 .description = "Enable conditional move instructions",
169 .llvm_name = "cmov",
170 .subfeatures = &[_]*const Feature {150 .subfeatures = &[_]*const Feature {
171 },151 },
172};152};
...@@ -174,7 +154,6 @@ pub const feature_cmov = Feature{...@@ -174,7 +154,6 @@ pub const feature_cmov = Feature{
174pub const feature_cx8 = Feature{154pub const feature_cx8 = Feature{
175 .name = "cx8",155 .name = "cx8",
176 .description = "Support CMPXCHG8B instructions",156 .description = "Support CMPXCHG8B instructions",
177 .llvm_name = "cx8",
178 .subfeatures = &[_]*const Feature {157 .subfeatures = &[_]*const Feature {
179 },158 },
180};159};
...@@ -182,7 +161,6 @@ pub const feature_cx8 = Feature{...@@ -182,7 +161,6 @@ pub const feature_cx8 = Feature{
182pub const feature_cx16 = Feature{161pub const feature_cx16 = Feature{
183 .name = "cx16",162 .name = "cx16",
184 .description = "64-bit with cmpxchg16b",163 .description = "64-bit with cmpxchg16b",
185 .llvm_name = "cx16",
186 .subfeatures = &[_]*const Feature {164 .subfeatures = &[_]*const Feature {
187 &feature_cx8,165 &feature_cx8,
188 },166 },
...@@ -191,7 +169,6 @@ pub const feature_cx16 = Feature{...@@ -191,7 +169,6 @@ pub const feature_cx16 = Feature{
191pub const feature_avx512dq = Feature{169pub const feature_avx512dq = Feature{
192 .name = "avx512dq",170 .name = "avx512dq",
193 .description = "Enable AVX-512 Doubleword and Quadword Instructions",171 .description = "Enable AVX-512 Doubleword and Quadword Instructions",
194 .llvm_name = "avx512dq",
195 .subfeatures = &[_]*const Feature {172 .subfeatures = &[_]*const Feature {
196 &feature_sse,173 &feature_sse,
197 },174 },
...@@ -200,7 +177,6 @@ pub const feature_avx512dq = Feature{...@@ -200,7 +177,6 @@ pub const feature_avx512dq = Feature{
200pub const feature_mpx = Feature{177pub const feature_mpx = Feature{
201 .name = "mpx",178 .name = "mpx",
202 .description = "Deprecated. Support MPX instructions",179 .description = "Deprecated. Support MPX instructions",
203 .llvm_name = "mpx",
204 .subfeatures = &[_]*const Feature {180 .subfeatures = &[_]*const Feature {
205 },181 },
206};182};
...@@ -208,7 +184,6 @@ pub const feature_mpx = Feature{...@@ -208,7 +184,6 @@ pub const feature_mpx = Feature{
208pub const feature_enqcmd = Feature{184pub const feature_enqcmd = Feature{
209 .name = "enqcmd",185 .name = "enqcmd",
210 .description = "Has ENQCMD instructions",186 .description = "Has ENQCMD instructions",
211 .llvm_name = "enqcmd",
212 .subfeatures = &[_]*const Feature {187 .subfeatures = &[_]*const Feature {
213 },188 },
214};189};
...@@ -216,7 +191,6 @@ pub const feature_enqcmd = Feature{...@@ -216,7 +191,6 @@ pub const feature_enqcmd = Feature{
216pub const feature_avx512er = Feature{191pub const feature_avx512er = Feature{
217 .name = "avx512er",192 .name = "avx512er",
218 .description = "Enable AVX-512 Exponential and Reciprocal Instructions",193 .description = "Enable AVX-512 Exponential and Reciprocal Instructions",
219 .llvm_name = "avx512er",
220 .subfeatures = &[_]*const Feature {194 .subfeatures = &[_]*const Feature {
221 &feature_sse,195 &feature_sse,
222 },196 },
...@@ -225,7 +199,6 @@ pub const feature_avx512er = Feature{...@@ -225,7 +199,6 @@ pub const feature_avx512er = Feature{
225pub const feature_ermsb = Feature{199pub const feature_ermsb = Feature{
226 .name = "ermsb",200 .name = "ermsb",
227 .description = "REP MOVS/STOS are fast",201 .description = "REP MOVS/STOS are fast",
228 .llvm_name = "ermsb",
229 .subfeatures = &[_]*const Feature {202 .subfeatures = &[_]*const Feature {
230 },203 },
231};204};
...@@ -233,7 +206,6 @@ pub const feature_ermsb = Feature{...@@ -233,7 +206,6 @@ pub const feature_ermsb = Feature{
233pub const feature_f16c = Feature{206pub const feature_f16c = Feature{
234 .name = "f16c",207 .name = "f16c",
235 .description = "Support 16-bit floating point conversion instructions",208 .description = "Support 16-bit floating point conversion instructions",
236 .llvm_name = "f16c",
237 .subfeatures = &[_]*const Feature {209 .subfeatures = &[_]*const Feature {
238 &feature_sse,210 &feature_sse,
239 },211 },
...@@ -242,7 +214,6 @@ pub const feature_f16c = Feature{...@@ -242,7 +214,6 @@ pub const feature_f16c = Feature{
242pub const feature_fma = Feature{214pub const feature_fma = Feature{
243 .name = "fma",215 .name = "fma",
244 .description = "Enable three-operand fused multiple-add",216 .description = "Enable three-operand fused multiple-add",
245 .llvm_name = "fma",
246 .subfeatures = &[_]*const Feature {217 .subfeatures = &[_]*const Feature {
247 &feature_sse,218 &feature_sse,
248 },219 },
...@@ -251,7 +222,6 @@ pub const feature_fma = Feature{...@@ -251,7 +222,6 @@ pub const feature_fma = Feature{
251pub const feature_fma4 = Feature{222pub const feature_fma4 = Feature{
252 .name = "fma4",223 .name = "fma4",
253 .description = "Enable four-operand fused multiple-add",224 .description = "Enable four-operand fused multiple-add",
254 .llvm_name = "fma4",
255 .subfeatures = &[_]*const Feature {225 .subfeatures = &[_]*const Feature {
256 &feature_sse,226 &feature_sse,
257 },227 },
...@@ -260,7 +230,6 @@ pub const feature_fma4 = Feature{...@@ -260,7 +230,6 @@ pub const feature_fma4 = Feature{
260pub const feature_fsgsbase = Feature{230pub const feature_fsgsbase = Feature{
261 .name = "fsgsbase",231 .name = "fsgsbase",
262 .description = "Support FS/GS Base instructions",232 .description = "Support FS/GS Base instructions",
263 .llvm_name = "fsgsbase",
264 .subfeatures = &[_]*const Feature {233 .subfeatures = &[_]*const Feature {
265 },234 },
266};235};
...@@ -268,7 +237,6 @@ pub const feature_fsgsbase = Feature{...@@ -268,7 +237,6 @@ pub const feature_fsgsbase = Feature{
268pub const feature_fxsr = Feature{237pub const feature_fxsr = Feature{
269 .name = "fxsr",238 .name = "fxsr",
270 .description = "Support fxsave/fxrestore instructions",239 .description = "Support fxsave/fxrestore instructions",
271 .llvm_name = "fxsr",
272 .subfeatures = &[_]*const Feature {240 .subfeatures = &[_]*const Feature {
273 },241 },
274};242};
...@@ -276,7 +244,6 @@ pub const feature_fxsr = Feature{...@@ -276,7 +244,6 @@ pub const feature_fxsr = Feature{
276pub const feature_fast11bytenop = Feature{244pub const feature_fast11bytenop = Feature{
277 .name = "fast-11bytenop",245 .name = "fast-11bytenop",
278 .description = "Target can quickly decode up to 11 byte NOPs",246 .description = "Target can quickly decode up to 11 byte NOPs",
279 .llvm_name = "fast-11bytenop",
280 .subfeatures = &[_]*const Feature {247 .subfeatures = &[_]*const Feature {
281 },248 },
282};249};
...@@ -284,7 +251,6 @@ pub const feature_fast11bytenop = Feature{...@@ -284,7 +251,6 @@ pub const feature_fast11bytenop = Feature{
284pub const feature_fast15bytenop = Feature{251pub const feature_fast15bytenop = Feature{
285 .name = "fast-15bytenop",252 .name = "fast-15bytenop",
286 .description = "Target can quickly decode up to 15 byte NOPs",253 .description = "Target can quickly decode up to 15 byte NOPs",
287 .llvm_name = "fast-15bytenop",
288 .subfeatures = &[_]*const Feature {254 .subfeatures = &[_]*const Feature {
289 },255 },
290};256};
...@@ -292,7 +258,6 @@ pub const feature_fast15bytenop = Feature{...@@ -292,7 +258,6 @@ pub const feature_fast15bytenop = Feature{
292pub const feature_fastBextr = Feature{258pub const feature_fastBextr = Feature{
293 .name = "fast-bextr",259 .name = "fast-bextr",
294 .description = "Indicates that the BEXTR instruction is implemented as a single uop with good throughput",260 .description = "Indicates that the BEXTR instruction is implemented as a single uop with good throughput",
295 .llvm_name = "fast-bextr",
296 .subfeatures = &[_]*const Feature {261 .subfeatures = &[_]*const Feature {
297 },262 },
298};263};
...@@ -300,7 +265,6 @@ pub const feature_fastBextr = Feature{...@@ -300,7 +265,6 @@ pub const feature_fastBextr = Feature{
300pub const feature_fastHops = Feature{265pub const feature_fastHops = Feature{
301 .name = "fast-hops",266 .name = "fast-hops",
302 .description = "Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles",267 .description = "Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles",
303 .llvm_name = "fast-hops",
304 .subfeatures = &[_]*const Feature {268 .subfeatures = &[_]*const Feature {
305 &feature_sse,269 &feature_sse,
306 },270 },
...@@ -309,7 +273,6 @@ pub const feature_fastHops = Feature{...@@ -309,7 +273,6 @@ pub const feature_fastHops = Feature{
309pub const feature_fastLzcnt = Feature{273pub const feature_fastLzcnt = Feature{
310 .name = "fast-lzcnt",274 .name = "fast-lzcnt",
311 .description = "LZCNT instructions are as fast as most simple integer ops",275 .description = "LZCNT instructions are as fast as most simple integer ops",
312 .llvm_name = "fast-lzcnt",
313 .subfeatures = &[_]*const Feature {276 .subfeatures = &[_]*const Feature {
314 },277 },
315};278};
...@@ -317,7 +280,6 @@ pub const feature_fastLzcnt = Feature{...@@ -317,7 +280,6 @@ pub const feature_fastLzcnt = Feature{
317pub const feature_fastPartialYmmOrZmmWrite = Feature{280pub const feature_fastPartialYmmOrZmmWrite = Feature{
318 .name = "fast-partial-ymm-or-zmm-write",281 .name = "fast-partial-ymm-or-zmm-write",
319 .description = "Partial writes to YMM/ZMM registers are fast",282 .description = "Partial writes to YMM/ZMM registers are fast",
320 .llvm_name = "fast-partial-ymm-or-zmm-write",
321 .subfeatures = &[_]*const Feature {283 .subfeatures = &[_]*const Feature {
322 },284 },
323};285};
...@@ -325,7 +287,6 @@ pub const feature_fastPartialYmmOrZmmWrite = Feature{...@@ -325,7 +287,6 @@ pub const feature_fastPartialYmmOrZmmWrite = Feature{
325pub const feature_fastShldRotate = Feature{287pub const feature_fastShldRotate = Feature{
326 .name = "fast-shld-rotate",288 .name = "fast-shld-rotate",
327 .description = "SHLD can be used as a faster rotate",289 .description = "SHLD can be used as a faster rotate",
328 .llvm_name = "fast-shld-rotate",
329 .subfeatures = &[_]*const Feature {290 .subfeatures = &[_]*const Feature {
330 },291 },
331};292};
...@@ -333,7 +294,6 @@ pub const feature_fastShldRotate = Feature{...@@ -333,7 +294,6 @@ pub const feature_fastShldRotate = Feature{
333pub const feature_fastScalarFsqrt = Feature{294pub const feature_fastScalarFsqrt = Feature{
334 .name = "fast-scalar-fsqrt",295 .name = "fast-scalar-fsqrt",
335 .description = "Scalar SQRT is fast (disable Newton-Raphson)",296 .description = "Scalar SQRT is fast (disable Newton-Raphson)",
336 .llvm_name = "fast-scalar-fsqrt",
337 .subfeatures = &[_]*const Feature {297 .subfeatures = &[_]*const Feature {
338 },298 },
339};299};
...@@ -341,7 +301,6 @@ pub const feature_fastScalarFsqrt = Feature{...@@ -341,7 +301,6 @@ pub const feature_fastScalarFsqrt = Feature{
341pub const feature_fastScalarShiftMasks = Feature{301pub const feature_fastScalarShiftMasks = Feature{
342 .name = "fast-scalar-shift-masks",302 .name = "fast-scalar-shift-masks",
343 .description = "Prefer a left/right scalar logical shift pair over a shift+and pair",303 .description = "Prefer a left/right scalar logical shift pair over a shift+and pair",
344 .llvm_name = "fast-scalar-shift-masks",
345 .subfeatures = &[_]*const Feature {304 .subfeatures = &[_]*const Feature {
346 },305 },
347};306};
...@@ -349,7 +308,6 @@ pub const feature_fastScalarShiftMasks = Feature{...@@ -349,7 +308,6 @@ pub const feature_fastScalarShiftMasks = Feature{
349pub const feature_fastVariableShuffle = Feature{308pub const feature_fastVariableShuffle = Feature{
350 .name = "fast-variable-shuffle",309 .name = "fast-variable-shuffle",
351 .description = "Shuffles with variable masks are fast",310 .description = "Shuffles with variable masks are fast",
352 .llvm_name = "fast-variable-shuffle",
353 .subfeatures = &[_]*const Feature {311 .subfeatures = &[_]*const Feature {
354 },312 },
355};313};
...@@ -357,7 +315,6 @@ pub const feature_fastVariableShuffle = Feature{...@@ -357,7 +315,6 @@ pub const feature_fastVariableShuffle = Feature{
357pub const feature_fastVectorFsqrt = Feature{315pub const feature_fastVectorFsqrt = Feature{
358 .name = "fast-vector-fsqrt",316 .name = "fast-vector-fsqrt",
359 .description = "Vector SQRT is fast (disable Newton-Raphson)",317 .description = "Vector SQRT is fast (disable Newton-Raphson)",
360 .llvm_name = "fast-vector-fsqrt",
361 .subfeatures = &[_]*const Feature {318 .subfeatures = &[_]*const Feature {
362 },319 },
363};320};
...@@ -365,7 +322,6 @@ pub const feature_fastVectorFsqrt = Feature{...@@ -365,7 +322,6 @@ pub const feature_fastVectorFsqrt = Feature{
365pub const feature_fastVectorShiftMasks = Feature{322pub const feature_fastVectorShiftMasks = Feature{
366 .name = "fast-vector-shift-masks",323 .name = "fast-vector-shift-masks",
367 .description = "Prefer a left/right vector logical shift pair over a shift+and pair",324 .description = "Prefer a left/right vector logical shift pair over a shift+and pair",
368 .llvm_name = "fast-vector-shift-masks",
369 .subfeatures = &[_]*const Feature {325 .subfeatures = &[_]*const Feature {
370 },326 },
371};327};
...@@ -373,7 +329,6 @@ pub const feature_fastVectorShiftMasks = Feature{...@@ -373,7 +329,6 @@ pub const feature_fastVectorShiftMasks = Feature{
373pub const feature_gfni = Feature{329pub const feature_gfni = Feature{
374 .name = "gfni",330 .name = "gfni",
375 .description = "Enable Galois Field Arithmetic Instructions",331 .description = "Enable Galois Field Arithmetic Instructions",
376 .llvm_name = "gfni",
377 .subfeatures = &[_]*const Feature {332 .subfeatures = &[_]*const Feature {
378 &feature_sse,333 &feature_sse,
379 },334 },
...@@ -382,7 +337,6 @@ pub const feature_gfni = Feature{...@@ -382,7 +337,6 @@ pub const feature_gfni = Feature{
382pub const feature_fastGather = Feature{337pub const feature_fastGather = Feature{
383 .name = "fast-gather",338 .name = "fast-gather",
384 .description = "Indicates if gather is reasonably fast",339 .description = "Indicates if gather is reasonably fast",
385 .llvm_name = "fast-gather",
386 .subfeatures = &[_]*const Feature {340 .subfeatures = &[_]*const Feature {
387 },341 },
388};342};
...@@ -390,7 +344,6 @@ pub const feature_fastGather = Feature{...@@ -390,7 +344,6 @@ pub const feature_fastGather = Feature{
390pub const feature_avx512ifma = Feature{344pub const feature_avx512ifma = Feature{
391 .name = "avx512ifma",345 .name = "avx512ifma",
392 .description = "Enable AVX-512 Integer Fused Multiple-Add",346 .description = "Enable AVX-512 Integer Fused Multiple-Add",
393 .llvm_name = "avx512ifma",
394 .subfeatures = &[_]*const Feature {347 .subfeatures = &[_]*const Feature {
395 &feature_sse,348 &feature_sse,
396 },349 },
...@@ -399,7 +352,6 @@ pub const feature_avx512ifma = Feature{...@@ -399,7 +352,6 @@ pub const feature_avx512ifma = Feature{
399pub const feature_invpcid = Feature{352pub const feature_invpcid = Feature{
400 .name = "invpcid",353 .name = "invpcid",
401 .description = "Invalidate Process-Context Identifier",354 .description = "Invalidate Process-Context Identifier",
402 .llvm_name = "invpcid",
403 .subfeatures = &[_]*const Feature {355 .subfeatures = &[_]*const Feature {
404 },356 },
405};357};
...@@ -407,7 +359,6 @@ pub const feature_invpcid = Feature{...@@ -407,7 +359,6 @@ pub const feature_invpcid = Feature{
407pub const feature_sahf = Feature{359pub const feature_sahf = Feature{
408 .name = "sahf",360 .name = "sahf",
409 .description = "Support LAHF and SAHF instructions",361 .description = "Support LAHF and SAHF instructions",
410 .llvm_name = "sahf",
411 .subfeatures = &[_]*const Feature {362 .subfeatures = &[_]*const Feature {
412 },363 },
413};364};
...@@ -415,7 +366,6 @@ pub const feature_sahf = Feature{...@@ -415,7 +366,6 @@ pub const feature_sahf = Feature{
415pub const feature_leaSp = Feature{366pub const feature_leaSp = Feature{
416 .name = "lea-sp",367 .name = "lea-sp",
417 .description = "Use LEA for adjusting the stack pointer",368 .description = "Use LEA for adjusting the stack pointer",
418 .llvm_name = "lea-sp",
419 .subfeatures = &[_]*const Feature {369 .subfeatures = &[_]*const Feature {
420 },370 },
421};371};
...@@ -423,7 +373,6 @@ pub const feature_leaSp = Feature{...@@ -423,7 +373,6 @@ pub const feature_leaSp = Feature{
423pub const feature_leaUsesAg = Feature{373pub const feature_leaUsesAg = Feature{
424 .name = "lea-uses-ag",374 .name = "lea-uses-ag",
425 .description = "LEA instruction needs inputs at AG stage",375 .description = "LEA instruction needs inputs at AG stage",
426 .llvm_name = "lea-uses-ag",
427 .subfeatures = &[_]*const Feature {376 .subfeatures = &[_]*const Feature {
428 },377 },
429};378};
...@@ -431,7 +380,6 @@ pub const feature_leaUsesAg = Feature{...@@ -431,7 +380,6 @@ pub const feature_leaUsesAg = Feature{
431pub const feature_lwp = Feature{380pub const feature_lwp = Feature{
432 .name = "lwp",381 .name = "lwp",
433 .description = "Enable LWP instructions",382 .description = "Enable LWP instructions",
434 .llvm_name = "lwp",
435 .subfeatures = &[_]*const Feature {383 .subfeatures = &[_]*const Feature {
436 },384 },
437};385};
...@@ -439,7 +387,6 @@ pub const feature_lwp = Feature{...@@ -439,7 +387,6 @@ pub const feature_lwp = Feature{
439pub const feature_lzcnt = Feature{387pub const feature_lzcnt = Feature{
440 .name = "lzcnt",388 .name = "lzcnt",
441 .description = "Support LZCNT instruction",389 .description = "Support LZCNT instruction",
442 .llvm_name = "lzcnt",
443 .subfeatures = &[_]*const Feature {390 .subfeatures = &[_]*const Feature {
444 },391 },
445};392};
...@@ -447,7 +394,6 @@ pub const feature_lzcnt = Feature{...@@ -447,7 +394,6 @@ pub const feature_lzcnt = Feature{
447pub const feature_falseDepsLzcntTzcnt = Feature{394pub const feature_falseDepsLzcntTzcnt = Feature{
448 .name = "false-deps-lzcnt-tzcnt",395 .name = "false-deps-lzcnt-tzcnt",
449 .description = "LZCNT/TZCNT have a false dependency on dest register",396 .description = "LZCNT/TZCNT have a false dependency on dest register",
450 .llvm_name = "false-deps-lzcnt-tzcnt",
451 .subfeatures = &[_]*const Feature {397 .subfeatures = &[_]*const Feature {
452 },398 },
453};399};
...@@ -455,7 +401,6 @@ pub const feature_falseDepsLzcntTzcnt = Feature{...@@ -455,7 +401,6 @@ pub const feature_falseDepsLzcntTzcnt = Feature{
455pub const feature_mmx = Feature{401pub const feature_mmx = Feature{
456 .name = "mmx",402 .name = "mmx",
457 .description = "Enable MMX instructions",403 .description = "Enable MMX instructions",
458 .llvm_name = "mmx",
459 .subfeatures = &[_]*const Feature {404 .subfeatures = &[_]*const Feature {
460 },405 },
461};406};
...@@ -463,7 +408,6 @@ pub const feature_mmx = Feature{...@@ -463,7 +408,6 @@ pub const feature_mmx = Feature{
463pub const feature_movbe = Feature{408pub const feature_movbe = Feature{
464 .name = "movbe",409 .name = "movbe",
465 .description = "Support MOVBE instruction",410 .description = "Support MOVBE instruction",
466 .llvm_name = "movbe",
467 .subfeatures = &[_]*const Feature {411 .subfeatures = &[_]*const Feature {
468 },412 },
469};413};
...@@ -471,7 +415,6 @@ pub const feature_movbe = Feature{...@@ -471,7 +415,6 @@ pub const feature_movbe = Feature{
471pub const feature_movdir64b = Feature{415pub const feature_movdir64b = Feature{
472 .name = "movdir64b",416 .name = "movdir64b",
473 .description = "Support movdir64b instruction",417 .description = "Support movdir64b instruction",
474 .llvm_name = "movdir64b",
475 .subfeatures = &[_]*const Feature {418 .subfeatures = &[_]*const Feature {
476 },419 },
477};420};
...@@ -479,7 +422,6 @@ pub const feature_movdir64b = Feature{...@@ -479,7 +422,6 @@ pub const feature_movdir64b = Feature{
479pub const feature_movdiri = Feature{422pub const feature_movdiri = Feature{
480 .name = "movdiri",423 .name = "movdiri",
481 .description = "Support movdiri instruction",424 .description = "Support movdiri instruction",
482 .llvm_name = "movdiri",
483 .subfeatures = &[_]*const Feature {425 .subfeatures = &[_]*const Feature {
484 },426 },
485};427};
...@@ -487,7 +429,6 @@ pub const feature_movdiri = Feature{...@@ -487,7 +429,6 @@ pub const feature_movdiri = Feature{
487pub const feature_mwaitx = Feature{429pub const feature_mwaitx = Feature{
488 .name = "mwaitx",430 .name = "mwaitx",
489 .description = "Enable MONITORX/MWAITX timer functionality",431 .description = "Enable MONITORX/MWAITX timer functionality",
490 .llvm_name = "mwaitx",
491 .subfeatures = &[_]*const Feature {432 .subfeatures = &[_]*const Feature {
492 },433 },
493};434};
...@@ -495,7 +436,6 @@ pub const feature_mwaitx = Feature{...@@ -495,7 +436,6 @@ pub const feature_mwaitx = Feature{
495pub const feature_macrofusion = Feature{436pub const feature_macrofusion = Feature{
496 .name = "macrofusion",437 .name = "macrofusion",
497 .description = "Various instructions can be fused with conditional branches",438 .description = "Various instructions can be fused with conditional branches",
498 .llvm_name = "macrofusion",
499 .subfeatures = &[_]*const Feature {439 .subfeatures = &[_]*const Feature {
500 },440 },
501};441};
...@@ -503,7 +443,6 @@ pub const feature_macrofusion = Feature{...@@ -503,7 +443,6 @@ pub const feature_macrofusion = Feature{
503pub const feature_mergeToThreewayBranch = Feature{443pub const feature_mergeToThreewayBranch = Feature{
504 .name = "merge-to-threeway-branch",444 .name = "merge-to-threeway-branch",
505 .description = "Merge branches to a three-way conditional branch",445 .description = "Merge branches to a three-way conditional branch",
506 .llvm_name = "merge-to-threeway-branch",
507 .subfeatures = &[_]*const Feature {446 .subfeatures = &[_]*const Feature {
508 },447 },
509};448};
...@@ -511,7 +450,6 @@ pub const feature_mergeToThreewayBranch = Feature{...@@ -511,7 +450,6 @@ pub const feature_mergeToThreewayBranch = Feature{
511pub const feature_nopl = Feature{450pub const feature_nopl = Feature{
512 .name = "nopl",451 .name = "nopl",
513 .description = "Enable NOPL instruction",452 .description = "Enable NOPL instruction",
514 .llvm_name = "nopl",
515 .subfeatures = &[_]*const Feature {453 .subfeatures = &[_]*const Feature {
516 },454 },
517};455};
...@@ -519,7 +457,6 @@ pub const feature_nopl = Feature{...@@ -519,7 +457,6 @@ pub const feature_nopl = Feature{
519pub const feature_pclmul = Feature{457pub const feature_pclmul = Feature{
520 .name = "pclmul",458 .name = "pclmul",
521 .description = "Enable packed carry-less multiplication instructions",459 .description = "Enable packed carry-less multiplication instructions",
522 .llvm_name = "pclmul",
523 .subfeatures = &[_]*const Feature {460 .subfeatures = &[_]*const Feature {
524 &feature_sse,461 &feature_sse,
525 },462 },
...@@ -528,7 +465,6 @@ pub const feature_pclmul = Feature{...@@ -528,7 +465,6 @@ pub const feature_pclmul = Feature{
528pub const feature_pconfig = Feature{465pub const feature_pconfig = Feature{
529 .name = "pconfig",466 .name = "pconfig",
530 .description = "platform configuration instruction",467 .description = "platform configuration instruction",
531 .llvm_name = "pconfig",
532 .subfeatures = &[_]*const Feature {468 .subfeatures = &[_]*const Feature {
533 },469 },
534};470};
...@@ -536,7 +472,6 @@ pub const feature_pconfig = Feature{...@@ -536,7 +472,6 @@ pub const feature_pconfig = Feature{
536pub const feature_avx512pf = Feature{472pub const feature_avx512pf = Feature{
537 .name = "avx512pf",473 .name = "avx512pf",
538 .description = "Enable AVX-512 PreFetch Instructions",474 .description = "Enable AVX-512 PreFetch Instructions",
539 .llvm_name = "avx512pf",
540 .subfeatures = &[_]*const Feature {475 .subfeatures = &[_]*const Feature {
541 &feature_sse,476 &feature_sse,
542 },477 },
...@@ -545,7 +480,6 @@ pub const feature_avx512pf = Feature{...@@ -545,7 +480,6 @@ pub const feature_avx512pf = Feature{
545pub const feature_pku = Feature{480pub const feature_pku = Feature{
546 .name = "pku",481 .name = "pku",
547 .description = "Enable protection keys",482 .description = "Enable protection keys",
548 .llvm_name = "pku",
549 .subfeatures = &[_]*const Feature {483 .subfeatures = &[_]*const Feature {
550 },484 },
551};485};
...@@ -553,7 +487,6 @@ pub const feature_pku = Feature{...@@ -553,7 +487,6 @@ pub const feature_pku = Feature{
553pub const feature_popcnt = Feature{487pub const feature_popcnt = Feature{
554 .name = "popcnt",488 .name = "popcnt",
555 .description = "Support POPCNT instruction",489 .description = "Support POPCNT instruction",
556 .llvm_name = "popcnt",
557 .subfeatures = &[_]*const Feature {490 .subfeatures = &[_]*const Feature {
558 },491 },
559};492};
...@@ -561,7 +494,6 @@ pub const feature_popcnt = Feature{...@@ -561,7 +494,6 @@ pub const feature_popcnt = Feature{
561pub const feature_falseDepsPopcnt = Feature{494pub const feature_falseDepsPopcnt = Feature{
562 .name = "false-deps-popcnt",495 .name = "false-deps-popcnt",
563 .description = "POPCNT has a false dependency on dest register",496 .description = "POPCNT has a false dependency on dest register",
564 .llvm_name = "false-deps-popcnt",
565 .subfeatures = &[_]*const Feature {497 .subfeatures = &[_]*const Feature {
566 },498 },
567};499};
...@@ -569,7 +501,6 @@ pub const feature_falseDepsPopcnt = Feature{...@@ -569,7 +501,6 @@ pub const feature_falseDepsPopcnt = Feature{
569pub const feature_prefetchwt1 = Feature{501pub const feature_prefetchwt1 = Feature{
570 .name = "prefetchwt1",502 .name = "prefetchwt1",
571 .description = "Prefetch with Intent to Write and T1 Hint",503 .description = "Prefetch with Intent to Write and T1 Hint",
572 .llvm_name = "prefetchwt1",
573 .subfeatures = &[_]*const Feature {504 .subfeatures = &[_]*const Feature {
574 },505 },
575};506};
...@@ -577,7 +508,6 @@ pub const feature_prefetchwt1 = Feature{...@@ -577,7 +508,6 @@ pub const feature_prefetchwt1 = Feature{
577pub const feature_prfchw = Feature{508pub const feature_prfchw = Feature{
578 .name = "prfchw",509 .name = "prfchw",
579 .description = "Support PRFCHW instructions",510 .description = "Support PRFCHW instructions",
580 .llvm_name = "prfchw",
581 .subfeatures = &[_]*const Feature {511 .subfeatures = &[_]*const Feature {
582 },512 },
583};513};
...@@ -585,7 +515,6 @@ pub const feature_prfchw = Feature{...@@ -585,7 +515,6 @@ pub const feature_prfchw = Feature{
585pub const feature_ptwrite = Feature{515pub const feature_ptwrite = Feature{
586 .name = "ptwrite",516 .name = "ptwrite",
587 .description = "Support ptwrite instruction",517 .description = "Support ptwrite instruction",
588 .llvm_name = "ptwrite",
589 .subfeatures = &[_]*const Feature {518 .subfeatures = &[_]*const Feature {
590 },519 },
591};520};
...@@ -593,7 +522,6 @@ pub const feature_ptwrite = Feature{...@@ -593,7 +522,6 @@ pub const feature_ptwrite = Feature{
593pub const feature_padShortFunctions = Feature{522pub const feature_padShortFunctions = Feature{
594 .name = "pad-short-functions",523 .name = "pad-short-functions",
595 .description = "Pad short functions",524 .description = "Pad short functions",
596 .llvm_name = "pad-short-functions",
597 .subfeatures = &[_]*const Feature {525 .subfeatures = &[_]*const Feature {
598 },526 },
599};527};
...@@ -601,7 +529,6 @@ pub const feature_padShortFunctions = Feature{...@@ -601,7 +529,6 @@ pub const feature_padShortFunctions = Feature{
601pub const feature_prefer128Bit = Feature{529pub const feature_prefer128Bit = Feature{
602 .name = "prefer-128-bit",530 .name = "prefer-128-bit",
603 .description = "Prefer 128-bit AVX instructions",531 .description = "Prefer 128-bit AVX instructions",
604 .llvm_name = "prefer-128-bit",
605 .subfeatures = &[_]*const Feature {532 .subfeatures = &[_]*const Feature {
606 },533 },
607};534};
...@@ -609,7 +536,6 @@ pub const feature_prefer128Bit = Feature{...@@ -609,7 +536,6 @@ pub const feature_prefer128Bit = Feature{
609pub const feature_prefer256Bit = Feature{536pub const feature_prefer256Bit = Feature{
610 .name = "prefer-256-bit",537 .name = "prefer-256-bit",
611 .description = "Prefer 256-bit AVX instructions",538 .description = "Prefer 256-bit AVX instructions",
612 .llvm_name = "prefer-256-bit",
613 .subfeatures = &[_]*const Feature {539 .subfeatures = &[_]*const Feature {
614 },540 },
615};541};
...@@ -617,7 +543,6 @@ pub const feature_prefer256Bit = Feature{...@@ -617,7 +543,6 @@ pub const feature_prefer256Bit = Feature{
617pub const feature_rdpid = Feature{543pub const feature_rdpid = Feature{
618 .name = "rdpid",544 .name = "rdpid",
619 .description = "Support RDPID instructions",545 .description = "Support RDPID instructions",
620 .llvm_name = "rdpid",
621 .subfeatures = &[_]*const Feature {546 .subfeatures = &[_]*const Feature {
622 },547 },
623};548};
...@@ -625,7 +550,6 @@ pub const feature_rdpid = Feature{...@@ -625,7 +550,6 @@ pub const feature_rdpid = Feature{
625pub const feature_rdrnd = Feature{550pub const feature_rdrnd = Feature{
626 .name = "rdrnd",551 .name = "rdrnd",
627 .description = "Support RDRAND instruction",552 .description = "Support RDRAND instruction",
628 .llvm_name = "rdrnd",
629 .subfeatures = &[_]*const Feature {553 .subfeatures = &[_]*const Feature {
630 },554 },
631};555};
...@@ -633,7 +557,6 @@ pub const feature_rdrnd = Feature{...@@ -633,7 +557,6 @@ pub const feature_rdrnd = Feature{
633pub const feature_rdseed = Feature{557pub const feature_rdseed = Feature{
634 .name = "rdseed",558 .name = "rdseed",
635 .description = "Support RDSEED instruction",559 .description = "Support RDSEED instruction",
636 .llvm_name = "rdseed",
637 .subfeatures = &[_]*const Feature {560 .subfeatures = &[_]*const Feature {
638 },561 },
639};562};
...@@ -641,7 +564,6 @@ pub const feature_rdseed = Feature{...@@ -641,7 +564,6 @@ pub const feature_rdseed = Feature{
641pub const feature_rtm = Feature{564pub const feature_rtm = Feature{
642 .name = "rtm",565 .name = "rtm",
643 .description = "Support RTM instructions",566 .description = "Support RTM instructions",
644 .llvm_name = "rtm",
645 .subfeatures = &[_]*const Feature {567 .subfeatures = &[_]*const Feature {
646 },568 },
647};569};
...@@ -649,17 +571,15 @@ pub const feature_rtm = Feature{...@@ -649,17 +571,15 @@ pub const feature_rtm = Feature{
649pub const feature_retpoline = Feature{571pub const feature_retpoline = Feature{
650 .name = "retpoline",572 .name = "retpoline",
651 .description = "Remove speculation of indirect branches from the generated code, either by avoiding them entirely or lowering them with a speculation blocking construct",573 .description = "Remove speculation of indirect branches from the generated code, either by avoiding them entirely or lowering them with a speculation blocking construct",
652 .llvm_name = "retpoline",
653 .subfeatures = &[_]*const Feature {574 .subfeatures = &[_]*const Feature {
654 &feature_retpolineIndirectCalls,
655 &feature_retpolineIndirectBranches,575 &feature_retpolineIndirectBranches,
576 &feature_retpolineIndirectCalls,
656 },577 },
657};578};
658579
659pub const feature_retpolineExternalThunk = Feature{580pub const feature_retpolineExternalThunk = Feature{
660 .name = "retpoline-external-thunk",581 .name = "retpoline-external-thunk",
661 .description = "When lowering an indirect call or branch using a `retpoline`, rely on the specified user provided thunk rather than emitting one ourselves. Only has effect when combined with some other retpoline feature",582 .description = "When lowering an indirect call or branch using a `retpoline`, rely on the specified user provided thunk rather than emitting one ourselves. Only has effect when combined with some other retpoline feature",
662 .llvm_name = "retpoline-external-thunk",
663 .subfeatures = &[_]*const Feature {583 .subfeatures = &[_]*const Feature {
664 &feature_retpolineIndirectCalls,584 &feature_retpolineIndirectCalls,
665 },585 },
...@@ -668,7 +588,6 @@ pub const feature_retpolineExternalThunk = Feature{...@@ -668,7 +588,6 @@ pub const feature_retpolineExternalThunk = Feature{
668pub const feature_retpolineIndirectBranches = Feature{588pub const feature_retpolineIndirectBranches = Feature{
669 .name = "retpoline-indirect-branches",589 .name = "retpoline-indirect-branches",
670 .description = "Remove speculation of indirect branches from the generated code",590 .description = "Remove speculation of indirect branches from the generated code",
671 .llvm_name = "retpoline-indirect-branches",
672 .subfeatures = &[_]*const Feature {591 .subfeatures = &[_]*const Feature {
673 },592 },
674};593};
...@@ -676,7 +595,6 @@ pub const feature_retpolineIndirectBranches = Feature{...@@ -676,7 +595,6 @@ pub const feature_retpolineIndirectBranches = Feature{
676pub const feature_retpolineIndirectCalls = Feature{595pub const feature_retpolineIndirectCalls = Feature{
677 .name = "retpoline-indirect-calls",596 .name = "retpoline-indirect-calls",
678 .description = "Remove speculation of indirect calls from the generated code",597 .description = "Remove speculation of indirect calls from the generated code",
679 .llvm_name = "retpoline-indirect-calls",
680 .subfeatures = &[_]*const Feature {598 .subfeatures = &[_]*const Feature {
681 },599 },
682};600};
...@@ -684,7 +602,6 @@ pub const feature_retpolineIndirectCalls = Feature{...@@ -684,7 +602,6 @@ pub const feature_retpolineIndirectCalls = Feature{
684pub const feature_sgx = Feature{602pub const feature_sgx = Feature{
685 .name = "sgx",603 .name = "sgx",
686 .description = "Enable Software Guard Extensions",604 .description = "Enable Software Guard Extensions",
687 .llvm_name = "sgx",
688 .subfeatures = &[_]*const Feature {605 .subfeatures = &[_]*const Feature {
689 },606 },
690};607};
...@@ -692,7 +609,6 @@ pub const feature_sgx = Feature{...@@ -692,7 +609,6 @@ pub const feature_sgx = Feature{
692pub const feature_sha = Feature{609pub const feature_sha = Feature{
693 .name = "sha",610 .name = "sha",
694 .description = "Enable SHA instructions",611 .description = "Enable SHA instructions",
695 .llvm_name = "sha",
696 .subfeatures = &[_]*const Feature {612 .subfeatures = &[_]*const Feature {
697 &feature_sse,613 &feature_sse,
698 },614 },
...@@ -701,7 +617,6 @@ pub const feature_sha = Feature{...@@ -701,7 +617,6 @@ pub const feature_sha = Feature{
701pub const feature_shstk = Feature{617pub const feature_shstk = Feature{
702 .name = "shstk",618 .name = "shstk",
703 .description = "Support CET Shadow-Stack instructions",619 .description = "Support CET Shadow-Stack instructions",
704 .llvm_name = "shstk",
705 .subfeatures = &[_]*const Feature {620 .subfeatures = &[_]*const Feature {
706 },621 },
707};622};
...@@ -709,7 +624,6 @@ pub const feature_shstk = Feature{...@@ -709,7 +624,6 @@ pub const feature_shstk = Feature{
709pub const feature_sse = Feature{624pub const feature_sse = Feature{
710 .name = "sse",625 .name = "sse",
711 .description = "Enable SSE instructions",626 .description = "Enable SSE instructions",
712 .llvm_name = "sse",
713 .subfeatures = &[_]*const Feature {627 .subfeatures = &[_]*const Feature {
714 },628 },
715};629};
...@@ -717,7 +631,6 @@ pub const feature_sse = Feature{...@@ -717,7 +631,6 @@ pub const feature_sse = Feature{
717pub const feature_sse2 = Feature{631pub const feature_sse2 = Feature{
718 .name = "sse2",632 .name = "sse2",
719 .description = "Enable SSE2 instructions",633 .description = "Enable SSE2 instructions",
720 .llvm_name = "sse2",
721 .subfeatures = &[_]*const Feature {634 .subfeatures = &[_]*const Feature {
722 &feature_sse,635 &feature_sse,
723 },636 },
...@@ -726,7 +639,6 @@ pub const feature_sse2 = Feature{...@@ -726,7 +639,6 @@ pub const feature_sse2 = Feature{
726pub const feature_sse3 = Feature{639pub const feature_sse3 = Feature{
727 .name = "sse3",640 .name = "sse3",
728 .description = "Enable SSE3 instructions",641 .description = "Enable SSE3 instructions",
729 .llvm_name = "sse3",
730 .subfeatures = &[_]*const Feature {642 .subfeatures = &[_]*const Feature {
731 &feature_sse,643 &feature_sse,
732 },644 },
...@@ -735,7 +647,6 @@ pub const feature_sse3 = Feature{...@@ -735,7 +647,6 @@ pub const feature_sse3 = Feature{
735pub const feature_sse4a = Feature{647pub const feature_sse4a = Feature{
736 .name = "sse4a",648 .name = "sse4a",
737 .description = "Support SSE 4a instructions",649 .description = "Support SSE 4a instructions",
738 .llvm_name = "sse4a",
739 .subfeatures = &[_]*const Feature {650 .subfeatures = &[_]*const Feature {
740 &feature_sse,651 &feature_sse,
741 },652 },
...@@ -744,7 +655,6 @@ pub const feature_sse4a = Feature{...@@ -744,7 +655,6 @@ pub const feature_sse4a = Feature{
744pub const feature_sse41 = Feature{655pub const feature_sse41 = Feature{
745 .name = "sse4.1",656 .name = "sse4.1",
746 .description = "Enable SSE 4.1 instructions",657 .description = "Enable SSE 4.1 instructions",
747 .llvm_name = "sse4.1",
748 .subfeatures = &[_]*const Feature {658 .subfeatures = &[_]*const Feature {
749 &feature_sse,659 &feature_sse,
750 },660 },
...@@ -753,7 +663,6 @@ pub const feature_sse41 = Feature{...@@ -753,7 +663,6 @@ pub const feature_sse41 = Feature{
753pub const feature_sse42 = Feature{663pub const feature_sse42 = Feature{
754 .name = "sse4.2",664 .name = "sse4.2",
755 .description = "Enable SSE 4.2 instructions",665 .description = "Enable SSE 4.2 instructions",
756 .llvm_name = "sse4.2",
757 .subfeatures = &[_]*const Feature {666 .subfeatures = &[_]*const Feature {
758 &feature_sse,667 &feature_sse,
759 },668 },
...@@ -762,7 +671,6 @@ pub const feature_sse42 = Feature{...@@ -762,7 +671,6 @@ pub const feature_sse42 = Feature{
762pub const feature_sseUnalignedMem = Feature{671pub const feature_sseUnalignedMem = Feature{
763 .name = "sse-unaligned-mem",672 .name = "sse-unaligned-mem",
764 .description = "Allow unaligned memory operands with SSE instructions",673 .description = "Allow unaligned memory operands with SSE instructions",
765 .llvm_name = "sse-unaligned-mem",
766 .subfeatures = &[_]*const Feature {674 .subfeatures = &[_]*const Feature {
767 },675 },
768};676};
...@@ -770,7 +678,6 @@ pub const feature_sseUnalignedMem = Feature{...@@ -770,7 +678,6 @@ pub const feature_sseUnalignedMem = Feature{
770pub const feature_ssse3 = Feature{678pub const feature_ssse3 = Feature{
771 .name = "ssse3",679 .name = "ssse3",
772 .description = "Enable SSSE3 instructions",680 .description = "Enable SSSE3 instructions",
773 .llvm_name = "ssse3",
774 .subfeatures = &[_]*const Feature {681 .subfeatures = &[_]*const Feature {
775 &feature_sse,682 &feature_sse,
776 },683 },
...@@ -779,7 +686,6 @@ pub const feature_ssse3 = Feature{...@@ -779,7 +686,6 @@ pub const feature_ssse3 = Feature{
779pub const feature_slow3opsLea = Feature{686pub const feature_slow3opsLea = Feature{
780 .name = "slow-3ops-lea",687 .name = "slow-3ops-lea",
781 .description = "LEA instruction with 3 ops or certain registers is slow",688 .description = "LEA instruction with 3 ops or certain registers is slow",
782 .llvm_name = "slow-3ops-lea",
783 .subfeatures = &[_]*const Feature {689 .subfeatures = &[_]*const Feature {
784 },690 },
785};691};
...@@ -787,7 +693,6 @@ pub const feature_slow3opsLea = Feature{...@@ -787,7 +693,6 @@ pub const feature_slow3opsLea = Feature{
787pub const feature_idivlToDivb = Feature{693pub const feature_idivlToDivb = Feature{
788 .name = "idivl-to-divb",694 .name = "idivl-to-divb",
789 .description = "Use 8-bit divide for positive values less than 256",695 .description = "Use 8-bit divide for positive values less than 256",
790 .llvm_name = "idivl-to-divb",
791 .subfeatures = &[_]*const Feature {696 .subfeatures = &[_]*const Feature {
792 },697 },
793};698};
...@@ -795,7 +700,6 @@ pub const feature_idivlToDivb = Feature{...@@ -795,7 +700,6 @@ pub const feature_idivlToDivb = Feature{
795pub const feature_idivqToDivl = Feature{700pub const feature_idivqToDivl = Feature{
796 .name = "idivq-to-divl",701 .name = "idivq-to-divl",
797 .description = "Use 32-bit divide for positive values less than 2^32",702 .description = "Use 32-bit divide for positive values less than 2^32",
798 .llvm_name = "idivq-to-divl",
799 .subfeatures = &[_]*const Feature {703 .subfeatures = &[_]*const Feature {
800 },704 },
801};705};
...@@ -803,7 +707,6 @@ pub const feature_idivqToDivl = Feature{...@@ -803,7 +707,6 @@ pub const feature_idivqToDivl = Feature{
803pub const feature_slowIncdec = Feature{707pub const feature_slowIncdec = Feature{
804 .name = "slow-incdec",708 .name = "slow-incdec",
805 .description = "INC and DEC instructions are slower than ADD and SUB",709 .description = "INC and DEC instructions are slower than ADD and SUB",
806 .llvm_name = "slow-incdec",
807 .subfeatures = &[_]*const Feature {710 .subfeatures = &[_]*const Feature {
808 },711 },
809};712};
...@@ -811,7 +714,6 @@ pub const feature_slowIncdec = Feature{...@@ -811,7 +714,6 @@ pub const feature_slowIncdec = Feature{
811pub const feature_slowLea = Feature{714pub const feature_slowLea = Feature{
812 .name = "slow-lea",715 .name = "slow-lea",
813 .description = "LEA instruction with certain arguments is slow",716 .description = "LEA instruction with certain arguments is slow",
814 .llvm_name = "slow-lea",
815 .subfeatures = &[_]*const Feature {717 .subfeatures = &[_]*const Feature {
816 },718 },
817};719};
...@@ -819,7 +721,6 @@ pub const feature_slowLea = Feature{...@@ -819,7 +721,6 @@ pub const feature_slowLea = Feature{
819pub const feature_slowPmaddwd = Feature{721pub const feature_slowPmaddwd = Feature{
820 .name = "slow-pmaddwd",722 .name = "slow-pmaddwd",
821 .description = "PMADDWD is slower than PMULLD",723 .description = "PMADDWD is slower than PMULLD",
822 .llvm_name = "slow-pmaddwd",
823 .subfeatures = &[_]*const Feature {724 .subfeatures = &[_]*const Feature {
824 },725 },
825};726};
...@@ -827,7 +728,6 @@ pub const feature_slowPmaddwd = Feature{...@@ -827,7 +728,6 @@ pub const feature_slowPmaddwd = Feature{
827pub const feature_slowPmulld = Feature{728pub const feature_slowPmulld = Feature{
828 .name = "slow-pmulld",729 .name = "slow-pmulld",
829 .description = "PMULLD instruction is slow",730 .description = "PMULLD instruction is slow",
830 .llvm_name = "slow-pmulld",
831 .subfeatures = &[_]*const Feature {731 .subfeatures = &[_]*const Feature {
832 },732 },
833};733};
...@@ -835,7 +735,6 @@ pub const feature_slowPmulld = Feature{...@@ -835,7 +735,6 @@ pub const feature_slowPmulld = Feature{
835pub const feature_slowShld = Feature{735pub const feature_slowShld = Feature{
836 .name = "slow-shld",736 .name = "slow-shld",
837 .description = "SHLD instruction is slow",737 .description = "SHLD instruction is slow",
838 .llvm_name = "slow-shld",
839 .subfeatures = &[_]*const Feature {738 .subfeatures = &[_]*const Feature {
840 },739 },
841};740};
...@@ -843,7 +742,6 @@ pub const feature_slowShld = Feature{...@@ -843,7 +742,6 @@ pub const feature_slowShld = Feature{
843pub const feature_slowTwoMemOps = Feature{742pub const feature_slowTwoMemOps = Feature{
844 .name = "slow-two-mem-ops",743 .name = "slow-two-mem-ops",
845 .description = "Two memory operand instructions are slow",744 .description = "Two memory operand instructions are slow",
846 .llvm_name = "slow-two-mem-ops",
847 .subfeatures = &[_]*const Feature {745 .subfeatures = &[_]*const Feature {
848 },746 },
849};747};
...@@ -851,7 +749,6 @@ pub const feature_slowTwoMemOps = Feature{...@@ -851,7 +749,6 @@ pub const feature_slowTwoMemOps = Feature{
851pub const feature_slowUnalignedMem16 = Feature{749pub const feature_slowUnalignedMem16 = Feature{
852 .name = "slow-unaligned-mem-16",750 .name = "slow-unaligned-mem-16",
853 .description = "Slow unaligned 16-byte memory access",751 .description = "Slow unaligned 16-byte memory access",
854 .llvm_name = "slow-unaligned-mem-16",
855 .subfeatures = &[_]*const Feature {752 .subfeatures = &[_]*const Feature {
856 },753 },
857};754};
...@@ -859,7 +756,6 @@ pub const feature_slowUnalignedMem16 = Feature{...@@ -859,7 +756,6 @@ pub const feature_slowUnalignedMem16 = Feature{
859pub const feature_slowUnalignedMem32 = Feature{756pub const feature_slowUnalignedMem32 = Feature{
860 .name = "slow-unaligned-mem-32",757 .name = "slow-unaligned-mem-32",
861 .description = "Slow unaligned 32-byte memory access",758 .description = "Slow unaligned 32-byte memory access",
862 .llvm_name = "slow-unaligned-mem-32",
863 .subfeatures = &[_]*const Feature {759 .subfeatures = &[_]*const Feature {
864 },760 },
865};761};
...@@ -867,7 +763,6 @@ pub const feature_slowUnalignedMem32 = Feature{...@@ -867,7 +763,6 @@ pub const feature_slowUnalignedMem32 = Feature{
867pub const feature_softFloat = Feature{763pub const feature_softFloat = Feature{
868 .name = "soft-float",764 .name = "soft-float",
869 .description = "Use software floating point features",765 .description = "Use software floating point features",
870 .llvm_name = "soft-float",
871 .subfeatures = &[_]*const Feature {766 .subfeatures = &[_]*const Feature {
872 },767 },
873};768};
...@@ -875,7 +770,6 @@ pub const feature_softFloat = Feature{...@@ -875,7 +770,6 @@ pub const feature_softFloat = Feature{
875pub const feature_tbm = Feature{770pub const feature_tbm = Feature{
876 .name = "tbm",771 .name = "tbm",
877 .description = "Enable TBM instructions",772 .description = "Enable TBM instructions",
878 .llvm_name = "tbm",
879 .subfeatures = &[_]*const Feature {773 .subfeatures = &[_]*const Feature {
880 },774 },
881};775};
...@@ -883,7 +777,6 @@ pub const feature_tbm = Feature{...@@ -883,7 +777,6 @@ pub const feature_tbm = Feature{
883pub const feature_useAa = Feature{777pub const feature_useAa = Feature{
884 .name = "use-aa",778 .name = "use-aa",
885 .description = "Use alias analysis during codegen",779 .description = "Use alias analysis during codegen",
886 .llvm_name = "use-aa",
887 .subfeatures = &[_]*const Feature {780 .subfeatures = &[_]*const Feature {
888 },781 },
889};782};
...@@ -891,7 +784,6 @@ pub const feature_useAa = Feature{...@@ -891,7 +784,6 @@ pub const feature_useAa = Feature{
891pub const feature_vaes = Feature{784pub const feature_vaes = Feature{
892 .name = "vaes",785 .name = "vaes",
893 .description = "Promote selected AES instructions to AVX512/AVX registers",786 .description = "Promote selected AES instructions to AVX512/AVX registers",
894 .llvm_name = "vaes",
895 .subfeatures = &[_]*const Feature {787 .subfeatures = &[_]*const Feature {
896 &feature_sse,788 &feature_sse,
897 },789 },
...@@ -900,7 +792,6 @@ pub const feature_vaes = Feature{...@@ -900,7 +792,6 @@ pub const feature_vaes = Feature{
900pub const feature_avx512vbmi = Feature{792pub const feature_avx512vbmi = Feature{
901 .name = "avx512vbmi",793 .name = "avx512vbmi",
902 .description = "Enable AVX-512 Vector Byte Manipulation Instructions",794 .description = "Enable AVX-512 Vector Byte Manipulation Instructions",
903 .llvm_name = "avx512vbmi",
904 .subfeatures = &[_]*const Feature {795 .subfeatures = &[_]*const Feature {
905 &feature_sse,796 &feature_sse,
906 },797 },
...@@ -909,7 +800,6 @@ pub const feature_avx512vbmi = Feature{...@@ -909,7 +800,6 @@ pub const feature_avx512vbmi = Feature{
909pub const feature_avx512vbmi2 = Feature{800pub const feature_avx512vbmi2 = Feature{
910 .name = "avx512vbmi2",801 .name = "avx512vbmi2",
911 .description = "Enable AVX-512 further Vector Byte Manipulation Instructions",802 .description = "Enable AVX-512 further Vector Byte Manipulation Instructions",
912 .llvm_name = "avx512vbmi2",
913 .subfeatures = &[_]*const Feature {803 .subfeatures = &[_]*const Feature {
914 &feature_sse,804 &feature_sse,
915 },805 },
...@@ -918,7 +808,6 @@ pub const feature_avx512vbmi2 = Feature{...@@ -918,7 +808,6 @@ pub const feature_avx512vbmi2 = Feature{
918pub const feature_avx512vl = Feature{808pub const feature_avx512vl = Feature{
919 .name = "avx512vl",809 .name = "avx512vl",
920 .description = "Enable AVX-512 Vector Length eXtensions",810 .description = "Enable AVX-512 Vector Length eXtensions",
921 .llvm_name = "avx512vl",
922 .subfeatures = &[_]*const Feature {811 .subfeatures = &[_]*const Feature {
923 &feature_sse,812 &feature_sse,
924 },813 },
...@@ -927,7 +816,6 @@ pub const feature_avx512vl = Feature{...@@ -927,7 +816,6 @@ pub const feature_avx512vl = Feature{
927pub const feature_avx512vnni = Feature{816pub const feature_avx512vnni = Feature{
928 .name = "avx512vnni",817 .name = "avx512vnni",
929 .description = "Enable AVX-512 Vector Neural Network Instructions",818 .description = "Enable AVX-512 Vector Neural Network Instructions",
930 .llvm_name = "avx512vnni",
931 .subfeatures = &[_]*const Feature {819 .subfeatures = &[_]*const Feature {
932 &feature_sse,820 &feature_sse,
933 },821 },
...@@ -936,7 +824,6 @@ pub const feature_avx512vnni = Feature{...@@ -936,7 +824,6 @@ pub const feature_avx512vnni = Feature{
936pub const feature_avx512vp2intersect = Feature{824pub const feature_avx512vp2intersect = Feature{
937 .name = "avx512vp2intersect",825 .name = "avx512vp2intersect",
938 .description = "Enable AVX-512 vp2intersect",826 .description = "Enable AVX-512 vp2intersect",
939 .llvm_name = "avx512vp2intersect",
940 .subfeatures = &[_]*const Feature {827 .subfeatures = &[_]*const Feature {
941 &feature_sse,828 &feature_sse,
942 },829 },
...@@ -945,7 +832,6 @@ pub const feature_avx512vp2intersect = Feature{...@@ -945,7 +832,6 @@ pub const feature_avx512vp2intersect = Feature{
945pub const feature_vpclmulqdq = Feature{832pub const feature_vpclmulqdq = Feature{
946 .name = "vpclmulqdq",833 .name = "vpclmulqdq",
947 .description = "Enable vpclmulqdq instructions",834 .description = "Enable vpclmulqdq instructions",
948 .llvm_name = "vpclmulqdq",
949 .subfeatures = &[_]*const Feature {835 .subfeatures = &[_]*const Feature {
950 &feature_sse,836 &feature_sse,
951 },837 },
...@@ -954,7 +840,6 @@ pub const feature_vpclmulqdq = Feature{...@@ -954,7 +840,6 @@ pub const feature_vpclmulqdq = Feature{
954pub const feature_avx512vpopcntdq = Feature{840pub const feature_avx512vpopcntdq = Feature{
955 .name = "avx512vpopcntdq",841 .name = "avx512vpopcntdq",
956 .description = "Enable AVX-512 Population Count Instructions",842 .description = "Enable AVX-512 Population Count Instructions",
957 .llvm_name = "avx512vpopcntdq",
958 .subfeatures = &[_]*const Feature {843 .subfeatures = &[_]*const Feature {
959 &feature_sse,844 &feature_sse,
960 },845 },
...@@ -963,7 +848,6 @@ pub const feature_avx512vpopcntdq = Feature{...@@ -963,7 +848,6 @@ pub const feature_avx512vpopcntdq = Feature{
963pub const feature_waitpkg = Feature{848pub const feature_waitpkg = Feature{
964 .name = "waitpkg",849 .name = "waitpkg",
965 .description = "Wait and pause enhancements",850 .description = "Wait and pause enhancements",
966 .llvm_name = "waitpkg",
967 .subfeatures = &[_]*const Feature {851 .subfeatures = &[_]*const Feature {
968 },852 },
969};853};
...@@ -971,7 +855,6 @@ pub const feature_waitpkg = Feature{...@@ -971,7 +855,6 @@ pub const feature_waitpkg = Feature{
971pub const feature_wbnoinvd = Feature{855pub const feature_wbnoinvd = Feature{
972 .name = "wbnoinvd",856 .name = "wbnoinvd",
973 .description = "Write Back No Invalidate",857 .description = "Write Back No Invalidate",
974 .llvm_name = "wbnoinvd",
975 .subfeatures = &[_]*const Feature {858 .subfeatures = &[_]*const Feature {
976 },859 },
977};860};
...@@ -979,7 +862,6 @@ pub const feature_wbnoinvd = Feature{...@@ -979,7 +862,6 @@ pub const feature_wbnoinvd = Feature{
979pub const feature_x87 = Feature{862pub const feature_x87 = Feature{
980 .name = "x87",863 .name = "x87",
981 .description = "Enable X87 float instructions",864 .description = "Enable X87 float instructions",
982 .llvm_name = "x87",
983 .subfeatures = &[_]*const Feature {865 .subfeatures = &[_]*const Feature {
984 },866 },
985};867};
...@@ -987,7 +869,6 @@ pub const feature_x87 = Feature{...@@ -987,7 +869,6 @@ pub const feature_x87 = Feature{
987pub const feature_xop = Feature{869pub const feature_xop = Feature{
988 .name = "xop",870 .name = "xop",
989 .description = "Enable XOP instructions",871 .description = "Enable XOP instructions",
990 .llvm_name = "xop",
991 .subfeatures = &[_]*const Feature {872 .subfeatures = &[_]*const Feature {
992 &feature_sse,873 &feature_sse,
993 },874 },
...@@ -996,7 +877,6 @@ pub const feature_xop = Feature{...@@ -996,7 +877,6 @@ pub const feature_xop = Feature{
996pub const feature_xsave = Feature{877pub const feature_xsave = Feature{
997 .name = "xsave",878 .name = "xsave",
998 .description = "Support xsave instructions",879 .description = "Support xsave instructions",
999 .llvm_name = "xsave",
1000 .subfeatures = &[_]*const Feature {880 .subfeatures = &[_]*const Feature {
1001 },881 },
1002};882};
...@@ -1004,7 +884,6 @@ pub const feature_xsave = Feature{...@@ -1004,7 +884,6 @@ pub const feature_xsave = Feature{
1004pub const feature_xsavec = Feature{884pub const feature_xsavec = Feature{
1005 .name = "xsavec",885 .name = "xsavec",
1006 .description = "Support xsavec instructions",886 .description = "Support xsavec instructions",
1007 .llvm_name = "xsavec",
1008 .subfeatures = &[_]*const Feature {887 .subfeatures = &[_]*const Feature {
1009 },888 },
1010};889};
...@@ -1012,7 +891,6 @@ pub const feature_xsavec = Feature{...@@ -1012,7 +891,6 @@ pub const feature_xsavec = Feature{
1012pub const feature_xsaveopt = Feature{891pub const feature_xsaveopt = Feature{
1013 .name = "xsaveopt",892 .name = "xsaveopt",
1014 .description = "Support xsaveopt instructions",893 .description = "Support xsaveopt instructions",
1015 .llvm_name = "xsaveopt",
1016 .subfeatures = &[_]*const Feature {894 .subfeatures = &[_]*const Feature {
1017 },895 },
1018};896};
...@@ -1020,7 +898,6 @@ pub const feature_xsaveopt = Feature{...@@ -1020,7 +898,6 @@ pub const feature_xsaveopt = Feature{
1020pub const feature_xsaves = Feature{898pub const feature_xsaves = Feature{
1021 .name = "xsaves",899 .name = "xsaves",
1022 .description = "Support xsaves instructions",900 .description = "Support xsaves instructions",
1023 .llvm_name = "xsaves",
1024 .subfeatures = &[_]*const Feature {901 .subfeatures = &[_]*const Feature {
1025 },902 },
1026};903};
...@@ -1028,7 +905,6 @@ pub const feature_xsaves = Feature{...@@ -1028,7 +905,6 @@ pub const feature_xsaves = Feature{
1028pub const feature_bitMode16 = Feature{905pub const feature_bitMode16 = Feature{
1029 .name = "16bit-mode",906 .name = "16bit-mode",
1030 .description = "16-bit mode (i8086)",907 .description = "16-bit mode (i8086)",
1031 .llvm_name = "16bit-mode",
1032 .subfeatures = &[_]*const Feature {908 .subfeatures = &[_]*const Feature {
1033 },909 },
1034};910};
...@@ -1036,7 +912,6 @@ pub const feature_bitMode16 = Feature{...@@ -1036,7 +912,6 @@ pub const feature_bitMode16 = Feature{
1036pub const feature_bitMode32 = Feature{912pub const feature_bitMode32 = Feature{
1037 .name = "32bit-mode",913 .name = "32bit-mode",
1038 .description = "32-bit mode (80386)",914 .description = "32-bit mode (80386)",
1039 .llvm_name = "32bit-mode",
1040 .subfeatures = &[_]*const Feature {915 .subfeatures = &[_]*const Feature {
1041 },916 },
1042};917};
...@@ -1044,7 +919,6 @@ pub const feature_bitMode32 = Feature{...@@ -1044,7 +919,6 @@ pub const feature_bitMode32 = Feature{
1044pub const feature_bitMode64 = Feature{919pub const feature_bitMode64 = Feature{
1045 .name = "64bit-mode",920 .name = "64bit-mode",
1046 .description = "64-bit mode (x86_64)",921 .description = "64-bit mode (x86_64)",
1047 .llvm_name = "64bit-mode",
1048 .subfeatures = &[_]*const Feature {922 .subfeatures = &[_]*const Feature {
1049 },923 },
1050};924};