authorgravatar for lgustaf1@binghamton.eduLayne Gustafson <lgustaf1@binghamton.edu> 2020-01-08 20:27:05-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-19 20:53:19-05:00
log79a2747de490ca2bb1603fd1ce55637fb5278671
treed8b642345aeebec49fd08ceee5ada1bb1730e477
parente4ecdefa9a668d34c830816eea242b110c30c475
signaturelock-open Commit is signed but in an unrecognized format.

Add llvm_name to feature defs


15 files changed, 3139 insertions(+), 2467 deletions(-)

lib/std/target/aarch64.zig+330-207
...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
4pub const feature_aes = Feature{4pub const feature_aes = Feature{
5 .name = "aes",5 .name = "aes",
6 .llvm_name = "aes",
6 .description = "Enable AES support",7 .description = "Enable AES support",
7 .dependencies = &[_]*const Feature {8 .dependencies = &[_]*const Feature {
8 &feature_fpArmv8,9 &feature_fpArmv8,
...@@ -11,6 +12,7 @@ pub const feature_aes = Feature{...@@ -11,6 +12,7 @@ pub const feature_aes = Feature{
1112
12pub const feature_am = Feature{13pub const feature_am = Feature{
13 .name = "am",14 .name = "am",
15 .llvm_name = "am",
14 .description = "Enable v8.4-A Activity Monitors extension",16 .description = "Enable v8.4-A Activity Monitors extension",
15 .dependencies = &[_]*const Feature {17 .dependencies = &[_]*const Feature {
16 },18 },
...@@ -18,6 +20,7 @@ pub const feature_am = Feature{...@@ -18,6 +20,7 @@ pub const feature_am = Feature{
1820
19pub const feature_aggressiveFma = Feature{21pub const feature_aggressiveFma = Feature{
20 .name = "aggressive-fma",22 .name = "aggressive-fma",
23 .llvm_name = "aggressive-fma",
21 .description = "Enable Aggressive FMA for floating-point.",24 .description = "Enable Aggressive FMA for floating-point.",
22 .dependencies = &[_]*const Feature {25 .dependencies = &[_]*const Feature {
23 },26 },
...@@ -25,6 +28,7 @@ pub const feature_aggressiveFma = Feature{...@@ -25,6 +28,7 @@ pub const feature_aggressiveFma = Feature{
2528
26pub const feature_altnzcv = Feature{29pub const feature_altnzcv = Feature{
27 .name = "altnzcv",30 .name = "altnzcv",
31 .llvm_name = "altnzcv",
28 .description = "Enable alternative NZCV format for floating point comparisons",32 .description = "Enable alternative NZCV format for floating point comparisons",
29 .dependencies = &[_]*const Feature {33 .dependencies = &[_]*const Feature {
30 },34 },
...@@ -32,6 +36,7 @@ pub const feature_altnzcv = Feature{...@@ -32,6 +36,7 @@ pub const feature_altnzcv = Feature{
3236
33pub const feature_alternateSextloadCvtF32Pattern = Feature{37pub const feature_alternateSextloadCvtF32Pattern = Feature{
34 .name = "alternate-sextload-cvt-f32-pattern",38 .name = "alternate-sextload-cvt-f32-pattern",
39 .llvm_name = "alternate-sextload-cvt-f32-pattern",
35 .description = "Use alternative pattern for sextload convert to f32",40 .description = "Use alternative pattern for sextload convert to f32",
36 .dependencies = &[_]*const Feature {41 .dependencies = &[_]*const Feature {
37 },42 },
...@@ -39,6 +44,7 @@ pub const feature_alternateSextloadCvtF32Pattern = Feature{...@@ -39,6 +44,7 @@ pub const feature_alternateSextloadCvtF32Pattern = Feature{
3944
40pub const feature_arithBccFusion = Feature{45pub const feature_arithBccFusion = Feature{
41 .name = "arith-bcc-fusion",46 .name = "arith-bcc-fusion",
47 .llvm_name = "arith-bcc-fusion",
42 .description = "CPU fuses arithmetic+bcc operations",48 .description = "CPU fuses arithmetic+bcc operations",
43 .dependencies = &[_]*const Feature {49 .dependencies = &[_]*const Feature {
44 },50 },
...@@ -46,6 +52,7 @@ pub const feature_arithBccFusion = Feature{...@@ -46,6 +52,7 @@ pub const feature_arithBccFusion = Feature{
4652
47pub const feature_arithCbzFusion = Feature{53pub const feature_arithCbzFusion = Feature{
48 .name = "arith-cbz-fusion",54 .name = "arith-cbz-fusion",
55 .llvm_name = "arith-cbz-fusion",
49 .description = "CPU fuses arithmetic + cbz/cbnz operations",56 .description = "CPU fuses arithmetic + cbz/cbnz operations",
50 .dependencies = &[_]*const Feature {57 .dependencies = &[_]*const Feature {
51 },58 },
...@@ -53,6 +60,7 @@ pub const feature_arithCbzFusion = Feature{...@@ -53,6 +60,7 @@ pub const feature_arithCbzFusion = Feature{
5360
54pub const feature_balanceFpOps = Feature{61pub const feature_balanceFpOps = Feature{
55 .name = "balance-fp-ops",62 .name = "balance-fp-ops",
63 .llvm_name = "balance-fp-ops",
56 .description = "balance mix of odd and even D-registers for fp multiply(-accumulate) ops",64 .description = "balance mix of odd and even D-registers for fp multiply(-accumulate) ops",
57 .dependencies = &[_]*const Feature {65 .dependencies = &[_]*const Feature {
58 },66 },
...@@ -60,6 +68,7 @@ pub const feature_balanceFpOps = Feature{...@@ -60,6 +68,7 @@ pub const feature_balanceFpOps = Feature{
6068
61pub const feature_bti = Feature{69pub const feature_bti = Feature{
62 .name = "bti",70 .name = "bti",
71 .llvm_name = "bti",
63 .description = "Enable Branch Target Identification",72 .description = "Enable Branch Target Identification",
64 .dependencies = &[_]*const Feature {73 .dependencies = &[_]*const Feature {
65 },74 },
...@@ -67,6 +76,7 @@ pub const feature_bti = Feature{...@@ -67,6 +76,7 @@ pub const feature_bti = Feature{
6776
68pub const feature_ccidx = Feature{77pub const feature_ccidx = Feature{
69 .name = "ccidx",78 .name = "ccidx",
79 .llvm_name = "ccidx",
70 .description = "Enable v8.3-A Extend of the CCSIDR number of sets",80 .description = "Enable v8.3-A Extend of the CCSIDR number of sets",
71 .dependencies = &[_]*const Feature {81 .dependencies = &[_]*const Feature {
72 },82 },
...@@ -74,6 +84,7 @@ pub const feature_ccidx = Feature{...@@ -74,6 +84,7 @@ pub const feature_ccidx = Feature{
7484
75pub const feature_ccpp = Feature{85pub const feature_ccpp = Feature{
76 .name = "ccpp",86 .name = "ccpp",
87 .llvm_name = "ccpp",
77 .description = "Enable v8.2 data Cache Clean to Point of Persistence",88 .description = "Enable v8.2 data Cache Clean to Point of Persistence",
78 .dependencies = &[_]*const Feature {89 .dependencies = &[_]*const Feature {
79 },90 },
...@@ -81,6 +92,7 @@ pub const feature_ccpp = Feature{...@@ -81,6 +92,7 @@ pub const feature_ccpp = Feature{
8192
82pub const feature_crc = Feature{93pub const feature_crc = Feature{
83 .name = "crc",94 .name = "crc",
95 .llvm_name = "crc",
84 .description = "Enable ARMv8 CRC-32 checksum instructions",96 .description = "Enable ARMv8 CRC-32 checksum instructions",
85 .dependencies = &[_]*const Feature {97 .dependencies = &[_]*const Feature {
86 },98 },
...@@ -88,6 +100,7 @@ pub const feature_crc = Feature{...@@ -88,6 +100,7 @@ pub const feature_crc = Feature{
88100
89pub const feature_ccdp = Feature{101pub const feature_ccdp = Feature{
90 .name = "ccdp",102 .name = "ccdp",
103 .llvm_name = "ccdp",
91 .description = "Enable v8.5 Cache Clean to Point of Deep Persistence",104 .description = "Enable v8.5 Cache Clean to Point of Deep Persistence",
92 .dependencies = &[_]*const Feature {105 .dependencies = &[_]*const Feature {
93 },106 },
...@@ -95,6 +108,7 @@ pub const feature_ccdp = Feature{...@@ -95,6 +108,7 @@ pub const feature_ccdp = Feature{
95108
96pub const feature_callSavedX8 = Feature{109pub const feature_callSavedX8 = Feature{
97 .name = "call-saved-x8",110 .name = "call-saved-x8",
111 .llvm_name = "call-saved-x8",
98 .description = "Make X8 callee saved.",112 .description = "Make X8 callee saved.",
99 .dependencies = &[_]*const Feature {113 .dependencies = &[_]*const Feature {
100 },114 },
...@@ -102,6 +116,7 @@ pub const feature_callSavedX8 = Feature{...@@ -102,6 +116,7 @@ pub const feature_callSavedX8 = Feature{
102116
103pub const feature_callSavedX9 = Feature{117pub const feature_callSavedX9 = Feature{
104 .name = "call-saved-x9",118 .name = "call-saved-x9",
119 .llvm_name = "call-saved-x9",
105 .description = "Make X9 callee saved.",120 .description = "Make X9 callee saved.",
106 .dependencies = &[_]*const Feature {121 .dependencies = &[_]*const Feature {
107 },122 },
...@@ -109,6 +124,7 @@ pub const feature_callSavedX9 = Feature{...@@ -109,6 +124,7 @@ pub const feature_callSavedX9 = Feature{
109124
110pub const feature_callSavedX10 = Feature{125pub const feature_callSavedX10 = Feature{
111 .name = "call-saved-x10",126 .name = "call-saved-x10",
127 .llvm_name = "call-saved-x10",
112 .description = "Make X10 callee saved.",128 .description = "Make X10 callee saved.",
113 .dependencies = &[_]*const Feature {129 .dependencies = &[_]*const Feature {
114 },130 },
...@@ -116,6 +132,7 @@ pub const feature_callSavedX10 = Feature{...@@ -116,6 +132,7 @@ pub const feature_callSavedX10 = Feature{
116132
117pub const feature_callSavedX11 = Feature{133pub const feature_callSavedX11 = Feature{
118 .name = "call-saved-x11",134 .name = "call-saved-x11",
135 .llvm_name = "call-saved-x11",
119 .description = "Make X11 callee saved.",136 .description = "Make X11 callee saved.",
120 .dependencies = &[_]*const Feature {137 .dependencies = &[_]*const Feature {
121 },138 },
...@@ -123,6 +140,7 @@ pub const feature_callSavedX11 = Feature{...@@ -123,6 +140,7 @@ pub const feature_callSavedX11 = Feature{
123140
124pub const feature_callSavedX12 = Feature{141pub const feature_callSavedX12 = Feature{
125 .name = "call-saved-x12",142 .name = "call-saved-x12",
143 .llvm_name = "call-saved-x12",
126 .description = "Make X12 callee saved.",144 .description = "Make X12 callee saved.",
127 .dependencies = &[_]*const Feature {145 .dependencies = &[_]*const Feature {
128 },146 },
...@@ -130,6 +148,7 @@ pub const feature_callSavedX12 = Feature{...@@ -130,6 +148,7 @@ pub const feature_callSavedX12 = Feature{
130148
131pub const feature_callSavedX13 = Feature{149pub const feature_callSavedX13 = Feature{
132 .name = "call-saved-x13",150 .name = "call-saved-x13",
151 .llvm_name = "call-saved-x13",
133 .description = "Make X13 callee saved.",152 .description = "Make X13 callee saved.",
134 .dependencies = &[_]*const Feature {153 .dependencies = &[_]*const Feature {
135 },154 },
...@@ -137,6 +156,7 @@ pub const feature_callSavedX13 = Feature{...@@ -137,6 +156,7 @@ pub const feature_callSavedX13 = Feature{
137156
138pub const feature_callSavedX14 = Feature{157pub const feature_callSavedX14 = Feature{
139 .name = "call-saved-x14",158 .name = "call-saved-x14",
159 .llvm_name = "call-saved-x14",
140 .description = "Make X14 callee saved.",160 .description = "Make X14 callee saved.",
141 .dependencies = &[_]*const Feature {161 .dependencies = &[_]*const Feature {
142 },162 },
...@@ -144,6 +164,7 @@ pub const feature_callSavedX14 = Feature{...@@ -144,6 +164,7 @@ pub const feature_callSavedX14 = Feature{
144164
145pub const feature_callSavedX15 = Feature{165pub const feature_callSavedX15 = Feature{
146 .name = "call-saved-x15",166 .name = "call-saved-x15",
167 .llvm_name = "call-saved-x15",
147 .description = "Make X15 callee saved.",168 .description = "Make X15 callee saved.",
148 .dependencies = &[_]*const Feature {169 .dependencies = &[_]*const Feature {
149 },170 },
...@@ -151,6 +172,7 @@ pub const feature_callSavedX15 = Feature{...@@ -151,6 +172,7 @@ pub const feature_callSavedX15 = Feature{
151172
152pub const feature_callSavedX18 = Feature{173pub const feature_callSavedX18 = Feature{
153 .name = "call-saved-x18",174 .name = "call-saved-x18",
175 .llvm_name = "call-saved-x18",
154 .description = "Make X18 callee saved.",176 .description = "Make X18 callee saved.",
155 .dependencies = &[_]*const Feature {177 .dependencies = &[_]*const Feature {
156 },178 },
...@@ -158,6 +180,7 @@ pub const feature_callSavedX18 = Feature{...@@ -158,6 +180,7 @@ pub const feature_callSavedX18 = Feature{
158180
159pub const feature_complxnum = Feature{181pub const feature_complxnum = Feature{
160 .name = "complxnum",182 .name = "complxnum",
183 .llvm_name = "complxnum",
161 .description = "Enable v8.3-A Floating-point complex number support",184 .description = "Enable v8.3-A Floating-point complex number support",
162 .dependencies = &[_]*const Feature {185 .dependencies = &[_]*const Feature {
163 &feature_fpArmv8,186 &feature_fpArmv8,
...@@ -166,6 +189,7 @@ pub const feature_complxnum = Feature{...@@ -166,6 +189,7 @@ pub const feature_complxnum = Feature{
166189
167pub const feature_crypto = Feature{190pub const feature_crypto = Feature{
168 .name = "crypto",191 .name = "crypto",
192 .llvm_name = "crypto",
169 .description = "Enable cryptographic instructions",193 .description = "Enable cryptographic instructions",
170 .dependencies = &[_]*const Feature {194 .dependencies = &[_]*const Feature {
171 &feature_fpArmv8,195 &feature_fpArmv8,
...@@ -174,6 +198,7 @@ pub const feature_crypto = Feature{...@@ -174,6 +198,7 @@ pub const feature_crypto = Feature{
174198
175pub const feature_customCheapAsMove = Feature{199pub const feature_customCheapAsMove = Feature{
176 .name = "custom-cheap-as-move",200 .name = "custom-cheap-as-move",
201 .llvm_name = "custom-cheap-as-move",
177 .description = "Use custom handling of cheap instructions",202 .description = "Use custom handling of cheap instructions",
178 .dependencies = &[_]*const Feature {203 .dependencies = &[_]*const Feature {
179 },204 },
...@@ -181,6 +206,7 @@ pub const feature_customCheapAsMove = Feature{...@@ -181,6 +206,7 @@ pub const feature_customCheapAsMove = Feature{
181206
182pub const feature_dit = Feature{207pub const feature_dit = Feature{
183 .name = "dit",208 .name = "dit",
209 .llvm_name = "dit",
184 .description = "Enable v8.4-A Data Independent Timing instructions",210 .description = "Enable v8.4-A Data Independent Timing instructions",
185 .dependencies = &[_]*const Feature {211 .dependencies = &[_]*const Feature {
186 },212 },
...@@ -188,6 +214,7 @@ pub const feature_dit = Feature{...@@ -188,6 +214,7 @@ pub const feature_dit = Feature{
188214
189pub const feature_disableLatencySchedHeuristic = Feature{215pub const feature_disableLatencySchedHeuristic = Feature{
190 .name = "disable-latency-sched-heuristic",216 .name = "disable-latency-sched-heuristic",
217 .llvm_name = "disable-latency-sched-heuristic",
191 .description = "Disable latency scheduling heuristic",218 .description = "Disable latency scheduling heuristic",
192 .dependencies = &[_]*const Feature {219 .dependencies = &[_]*const Feature {
193 },220 },
...@@ -195,6 +222,7 @@ pub const feature_disableLatencySchedHeuristic = Feature{...@@ -195,6 +222,7 @@ pub const feature_disableLatencySchedHeuristic = Feature{
195222
196pub const feature_dotprod = Feature{223pub const feature_dotprod = Feature{
197 .name = "dotprod",224 .name = "dotprod",
225 .llvm_name = "dotprod",
198 .description = "Enable dot product support",226 .description = "Enable dot product support",
199 .dependencies = &[_]*const Feature {227 .dependencies = &[_]*const Feature {
200 },228 },
...@@ -202,6 +230,7 @@ pub const feature_dotprod = Feature{...@@ -202,6 +230,7 @@ pub const feature_dotprod = Feature{
202230
203pub const feature_ete = Feature{231pub const feature_ete = Feature{
204 .name = "ete",232 .name = "ete",
233 .llvm_name = "ete",
205 .description = "Enable Embedded Trace Extension",234 .description = "Enable Embedded Trace Extension",
206 .dependencies = &[_]*const Feature {235 .dependencies = &[_]*const Feature {
207 &feature_trbe,236 &feature_trbe,
...@@ -210,6 +239,7 @@ pub const feature_ete = Feature{...@@ -210,6 +239,7 @@ pub const feature_ete = Feature{
210239
211pub const feature_exynosCheapAsMove = Feature{240pub const feature_exynosCheapAsMove = Feature{
212 .name = "exynos-cheap-as-move",241 .name = "exynos-cheap-as-move",
242 .llvm_name = "exynos-cheap-as-move",
213 .description = "Use Exynos specific handling of cheap instructions",243 .description = "Use Exynos specific handling of cheap instructions",
214 .dependencies = &[_]*const Feature {244 .dependencies = &[_]*const Feature {
215 &feature_customCheapAsMove,245 &feature_customCheapAsMove,
...@@ -218,6 +248,7 @@ pub const feature_exynosCheapAsMove = Feature{...@@ -218,6 +248,7 @@ pub const feature_exynosCheapAsMove = Feature{
218248
219pub const feature_fmi = Feature{249pub const feature_fmi = Feature{
220 .name = "fmi",250 .name = "fmi",
251 .llvm_name = "fmi",
221 .description = "Enable v8.4-A Flag Manipulation Instructions",252 .description = "Enable v8.4-A Flag Manipulation Instructions",
222 .dependencies = &[_]*const Feature {253 .dependencies = &[_]*const Feature {
223 },254 },
...@@ -225,6 +256,7 @@ pub const feature_fmi = Feature{...@@ -225,6 +256,7 @@ pub const feature_fmi = Feature{
225256
226pub const feature_fp16fml = Feature{257pub const feature_fp16fml = Feature{
227 .name = "fp16fml",258 .name = "fp16fml",
259 .llvm_name = "fp16fml",
228 .description = "Enable FP16 FML instructions",260 .description = "Enable FP16 FML instructions",
229 .dependencies = &[_]*const Feature {261 .dependencies = &[_]*const Feature {
230 &feature_fpArmv8,262 &feature_fpArmv8,
...@@ -233,6 +265,7 @@ pub const feature_fp16fml = Feature{...@@ -233,6 +265,7 @@ pub const feature_fp16fml = Feature{
233265
234pub const feature_fpArmv8 = Feature{266pub const feature_fpArmv8 = Feature{
235 .name = "fp-armv8",267 .name = "fp-armv8",
268 .llvm_name = "fp-armv8",
236 .description = "Enable ARMv8 FP",269 .description = "Enable ARMv8 FP",
237 .dependencies = &[_]*const Feature {270 .dependencies = &[_]*const Feature {
238 },271 },
...@@ -240,6 +273,7 @@ pub const feature_fpArmv8 = Feature{...@@ -240,6 +273,7 @@ pub const feature_fpArmv8 = Feature{
240273
241pub const feature_fptoint = Feature{274pub const feature_fptoint = Feature{
242 .name = "fptoint",275 .name = "fptoint",
276 .llvm_name = "fptoint",
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 .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",
244 .dependencies = &[_]*const Feature {278 .dependencies = &[_]*const Feature {
245 },279 },
...@@ -247,6 +281,7 @@ pub const feature_fptoint = Feature{...@@ -247,6 +281,7 @@ pub const feature_fptoint = Feature{
247281
248pub const feature_force32bitJumpTables = Feature{282pub const feature_force32bitJumpTables = Feature{
249 .name = "force-32bit-jump-tables",283 .name = "force-32bit-jump-tables",
284 .llvm_name = "force-32bit-jump-tables",
250 .description = "Force jump table entries to be 32-bits wide except at MinSize",285 .description = "Force jump table entries to be 32-bits wide except at MinSize",
251 .dependencies = &[_]*const Feature {286 .dependencies = &[_]*const Feature {
252 },287 },
...@@ -254,6 +289,7 @@ pub const feature_force32bitJumpTables = Feature{...@@ -254,6 +289,7 @@ pub const feature_force32bitJumpTables = Feature{
254289
255pub const feature_fullfp16 = Feature{290pub const feature_fullfp16 = Feature{
256 .name = "fullfp16",291 .name = "fullfp16",
292 .llvm_name = "fullfp16",
257 .description = "Full FP16",293 .description = "Full FP16",
258 .dependencies = &[_]*const Feature {294 .dependencies = &[_]*const Feature {
259 &feature_fpArmv8,295 &feature_fpArmv8,
...@@ -262,6 +298,7 @@ pub const feature_fullfp16 = Feature{...@@ -262,6 +298,7 @@ pub const feature_fullfp16 = Feature{
262298
263pub const feature_fuseAes = Feature{299pub const feature_fuseAes = Feature{
264 .name = "fuse-aes",300 .name = "fuse-aes",
301 .llvm_name = "fuse-aes",
265 .description = "CPU fuses AES crypto operations",302 .description = "CPU fuses AES crypto operations",
266 .dependencies = &[_]*const Feature {303 .dependencies = &[_]*const Feature {
267 },304 },
...@@ -269,6 +306,7 @@ pub const feature_fuseAes = Feature{...@@ -269,6 +306,7 @@ pub const feature_fuseAes = Feature{
269306
270pub const feature_fuseAddress = Feature{307pub const feature_fuseAddress = Feature{
271 .name = "fuse-address",308 .name = "fuse-address",
309 .llvm_name = "fuse-address",
272 .description = "CPU fuses address generation and memory operations",310 .description = "CPU fuses address generation and memory operations",
273 .dependencies = &[_]*const Feature {311 .dependencies = &[_]*const Feature {
274 },312 },
...@@ -276,6 +314,7 @@ pub const feature_fuseAddress = Feature{...@@ -276,6 +314,7 @@ pub const feature_fuseAddress = Feature{
276314
277pub const feature_fuseArithLogic = Feature{315pub const feature_fuseArithLogic = Feature{
278 .name = "fuse-arith-logic",316 .name = "fuse-arith-logic",
317 .llvm_name = "fuse-arith-logic",
279 .description = "CPU fuses arithmetic and logic operations",318 .description = "CPU fuses arithmetic and logic operations",
280 .dependencies = &[_]*const Feature {319 .dependencies = &[_]*const Feature {
281 },320 },
...@@ -283,6 +322,7 @@ pub const feature_fuseArithLogic = Feature{...@@ -283,6 +322,7 @@ pub const feature_fuseArithLogic = Feature{
283322
284pub const feature_fuseCsel = Feature{323pub const feature_fuseCsel = Feature{
285 .name = "fuse-csel",324 .name = "fuse-csel",
325 .llvm_name = "fuse-csel",
286 .description = "CPU fuses conditional select operations",326 .description = "CPU fuses conditional select operations",
287 .dependencies = &[_]*const Feature {327 .dependencies = &[_]*const Feature {
288 },328 },
...@@ -290,6 +330,7 @@ pub const feature_fuseCsel = Feature{...@@ -290,6 +330,7 @@ pub const feature_fuseCsel = Feature{
290330
291pub const feature_fuseCryptoEor = Feature{331pub const feature_fuseCryptoEor = Feature{
292 .name = "fuse-crypto-eor",332 .name = "fuse-crypto-eor",
333 .llvm_name = "fuse-crypto-eor",
293 .description = "CPU fuses AES/PMULL and EOR operations",334 .description = "CPU fuses AES/PMULL and EOR operations",
294 .dependencies = &[_]*const Feature {335 .dependencies = &[_]*const Feature {
295 },336 },
...@@ -297,6 +338,7 @@ pub const feature_fuseCryptoEor = Feature{...@@ -297,6 +338,7 @@ pub const feature_fuseCryptoEor = Feature{
297338
298pub const feature_fuseLiterals = Feature{339pub const feature_fuseLiterals = Feature{
299 .name = "fuse-literals",340 .name = "fuse-literals",
341 .llvm_name = "fuse-literals",
300 .description = "CPU fuses literal generation operations",342 .description = "CPU fuses literal generation operations",
301 .dependencies = &[_]*const Feature {343 .dependencies = &[_]*const Feature {
302 },344 },
...@@ -304,6 +346,7 @@ pub const feature_fuseLiterals = Feature{...@@ -304,6 +346,7 @@ pub const feature_fuseLiterals = Feature{
304346
305pub const feature_jsconv = Feature{347pub const feature_jsconv = Feature{
306 .name = "jsconv",348 .name = "jsconv",
349 .llvm_name = "jsconv",
307 .description = "Enable v8.3-A JavaScript FP conversion enchancement",350 .description = "Enable v8.3-A JavaScript FP conversion enchancement",
308 .dependencies = &[_]*const Feature {351 .dependencies = &[_]*const Feature {
309 &feature_fpArmv8,352 &feature_fpArmv8,
...@@ -312,6 +355,7 @@ pub const feature_jsconv = Feature{...@@ -312,6 +355,7 @@ pub const feature_jsconv = Feature{
312355
313pub const feature_lor = Feature{356pub const feature_lor = Feature{
314 .name = "lor",357 .name = "lor",
358 .llvm_name = "lor",
315 .description = "Enables ARM v8.1 Limited Ordering Regions extension",359 .description = "Enables ARM v8.1 Limited Ordering Regions extension",
316 .dependencies = &[_]*const Feature {360 .dependencies = &[_]*const Feature {
317 },361 },
...@@ -319,6 +363,7 @@ pub const feature_lor = Feature{...@@ -319,6 +363,7 @@ pub const feature_lor = Feature{
319363
320pub const feature_lse = Feature{364pub const feature_lse = Feature{
321 .name = "lse",365 .name = "lse",
366 .llvm_name = "lse",
322 .description = "Enable ARMv8.1 Large System Extension (LSE) atomic instructions",367 .description = "Enable ARMv8.1 Large System Extension (LSE) atomic instructions",
323 .dependencies = &[_]*const Feature {368 .dependencies = &[_]*const Feature {
324 },369 },
...@@ -326,6 +371,7 @@ pub const feature_lse = Feature{...@@ -326,6 +371,7 @@ pub const feature_lse = Feature{
326371
327pub const feature_lslFast = Feature{372pub const feature_lslFast = Feature{
328 .name = "lsl-fast",373 .name = "lsl-fast",
374 .llvm_name = "lsl-fast",
329 .description = "CPU has a fastpath logical shift of up to 3 places",375 .description = "CPU has a fastpath logical shift of up to 3 places",
330 .dependencies = &[_]*const Feature {376 .dependencies = &[_]*const Feature {
331 },377 },
...@@ -333,6 +379,7 @@ pub const feature_lslFast = Feature{...@@ -333,6 +379,7 @@ pub const feature_lslFast = Feature{
333379
334pub const feature_mpam = Feature{380pub const feature_mpam = Feature{
335 .name = "mpam",381 .name = "mpam",
382 .llvm_name = "mpam",
336 .description = "Enable v8.4-A Memory system Partitioning and Monitoring extension",383 .description = "Enable v8.4-A Memory system Partitioning and Monitoring extension",
337 .dependencies = &[_]*const Feature {384 .dependencies = &[_]*const Feature {
338 },385 },
...@@ -340,6 +387,7 @@ pub const feature_mpam = Feature{...@@ -340,6 +387,7 @@ pub const feature_mpam = Feature{
340387
341pub const feature_mte = Feature{388pub const feature_mte = Feature{
342 .name = "mte",389 .name = "mte",
390 .llvm_name = "mte",
343 .description = "Enable Memory Tagging Extension",391 .description = "Enable Memory Tagging Extension",
344 .dependencies = &[_]*const Feature {392 .dependencies = &[_]*const Feature {
345 },393 },
...@@ -347,6 +395,7 @@ pub const feature_mte = Feature{...@@ -347,6 +395,7 @@ pub const feature_mte = Feature{
347395
348pub const feature_neon = Feature{396pub const feature_neon = Feature{
349 .name = "neon",397 .name = "neon",
398 .llvm_name = "neon",
350 .description = "Enable Advanced SIMD instructions",399 .description = "Enable Advanced SIMD instructions",
351 .dependencies = &[_]*const Feature {400 .dependencies = &[_]*const Feature {
352 &feature_fpArmv8,401 &feature_fpArmv8,
...@@ -355,6 +404,7 @@ pub const feature_neon = Feature{...@@ -355,6 +404,7 @@ pub const feature_neon = Feature{
355404
356pub const feature_nv = Feature{405pub const feature_nv = Feature{
357 .name = "nv",406 .name = "nv",
407 .llvm_name = "nv",
358 .description = "Enable v8.4-A Nested Virtualization Enchancement",408 .description = "Enable v8.4-A Nested Virtualization Enchancement",
359 .dependencies = &[_]*const Feature {409 .dependencies = &[_]*const Feature {
360 },410 },
...@@ -362,6 +412,7 @@ pub const feature_nv = Feature{...@@ -362,6 +412,7 @@ pub const feature_nv = Feature{
362412
363pub const feature_noNegImmediates = Feature{413pub const feature_noNegImmediates = Feature{
364 .name = "no-neg-immediates",414 .name = "no-neg-immediates",
415 .llvm_name = "no-neg-immediates",
365 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",416 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",
366 .dependencies = &[_]*const Feature {417 .dependencies = &[_]*const Feature {
367 },418 },
...@@ -369,6 +420,7 @@ pub const feature_noNegImmediates = Feature{...@@ -369,6 +420,7 @@ pub const feature_noNegImmediates = Feature{
369420
370pub const feature_pa = Feature{421pub const feature_pa = Feature{
371 .name = "pa",422 .name = "pa",
423 .llvm_name = "pa",
372 .description = "Enable v8.3-A Pointer Authentication enchancement",424 .description = "Enable v8.3-A Pointer Authentication enchancement",
373 .dependencies = &[_]*const Feature {425 .dependencies = &[_]*const Feature {
374 },426 },
...@@ -376,6 +428,7 @@ pub const feature_pa = Feature{...@@ -376,6 +428,7 @@ pub const feature_pa = Feature{
376428
377pub const feature_pan = Feature{429pub const feature_pan = Feature{
378 .name = "pan",430 .name = "pan",
431 .llvm_name = "pan",
379 .description = "Enables ARM v8.1 Privileged Access-Never extension",432 .description = "Enables ARM v8.1 Privileged Access-Never extension",
380 .dependencies = &[_]*const Feature {433 .dependencies = &[_]*const Feature {
381 },434 },
...@@ -383,6 +436,7 @@ pub const feature_pan = Feature{...@@ -383,6 +436,7 @@ pub const feature_pan = Feature{
383436
384pub const feature_panRwv = Feature{437pub const feature_panRwv = Feature{
385 .name = "pan-rwv",438 .name = "pan-rwv",
439 .llvm_name = "pan-rwv",
386 .description = "Enable v8.2 PAN s1e1R and s1e1W Variants",440 .description = "Enable v8.2 PAN s1e1R and s1e1W Variants",
387 .dependencies = &[_]*const Feature {441 .dependencies = &[_]*const Feature {
388 &feature_pan,442 &feature_pan,
...@@ -391,6 +445,7 @@ pub const feature_panRwv = Feature{...@@ -391,6 +445,7 @@ pub const feature_panRwv = Feature{
391445
392pub const feature_perfmon = Feature{446pub const feature_perfmon = Feature{
393 .name = "perfmon",447 .name = "perfmon",
448 .llvm_name = "perfmon",
394 .description = "Enable ARMv8 PMUv3 Performance Monitors extension",449 .description = "Enable ARMv8 PMUv3 Performance Monitors extension",
395 .dependencies = &[_]*const Feature {450 .dependencies = &[_]*const Feature {
396 },451 },
...@@ -398,6 +453,7 @@ pub const feature_perfmon = Feature{...@@ -398,6 +453,7 @@ pub const feature_perfmon = Feature{
398453
399pub const feature_usePostraScheduler = Feature{454pub const feature_usePostraScheduler = Feature{
400 .name = "use-postra-scheduler",455 .name = "use-postra-scheduler",
456 .llvm_name = "use-postra-scheduler",
401 .description = "Schedule again after register allocation",457 .description = "Schedule again after register allocation",
402 .dependencies = &[_]*const Feature {458 .dependencies = &[_]*const Feature {
403 },459 },
...@@ -405,6 +461,7 @@ pub const feature_usePostraScheduler = Feature{...@@ -405,6 +461,7 @@ pub const feature_usePostraScheduler = Feature{
405461
406pub const feature_predres = Feature{462pub const feature_predres = Feature{
407 .name = "predres",463 .name = "predres",
464 .llvm_name = "predres",
408 .description = "Enable v8.5a execution and data prediction invalidation instructions",465 .description = "Enable v8.5a execution and data prediction invalidation instructions",
409 .dependencies = &[_]*const Feature {466 .dependencies = &[_]*const Feature {
410 },467 },
...@@ -412,6 +469,7 @@ pub const feature_predres = Feature{...@@ -412,6 +469,7 @@ pub const feature_predres = Feature{
412469
413pub const feature_predictableSelectExpensive = Feature{470pub const feature_predictableSelectExpensive = Feature{
414 .name = "predictable-select-expensive",471 .name = "predictable-select-expensive",
472 .llvm_name = "predictable-select-expensive",
415 .description = "Prefer likely predicted branches over selects",473 .description = "Prefer likely predicted branches over selects",
416 .dependencies = &[_]*const Feature {474 .dependencies = &[_]*const Feature {
417 },475 },
...@@ -419,6 +477,7 @@ pub const feature_predictableSelectExpensive = Feature{...@@ -419,6 +477,7 @@ pub const feature_predictableSelectExpensive = Feature{
419477
420pub const feature_uaops = Feature{478pub const feature_uaops = Feature{
421 .name = "uaops",479 .name = "uaops",
480 .llvm_name = "uaops",
422 .description = "Enable v8.2 UAO PState",481 .description = "Enable v8.2 UAO PState",
423 .dependencies = &[_]*const Feature {482 .dependencies = &[_]*const Feature {
424 },483 },
...@@ -426,6 +485,7 @@ pub const feature_uaops = Feature{...@@ -426,6 +485,7 @@ pub const feature_uaops = Feature{
426485
427pub const feature_ras = Feature{486pub const feature_ras = Feature{
428 .name = "ras",487 .name = "ras",
488 .llvm_name = "ras",
429 .description = "Enable ARMv8 Reliability, Availability and Serviceability Extensions",489 .description = "Enable ARMv8 Reliability, Availability and Serviceability Extensions",
430 .dependencies = &[_]*const Feature {490 .dependencies = &[_]*const Feature {
431 },491 },
...@@ -433,6 +493,7 @@ pub const feature_ras = Feature{...@@ -433,6 +493,7 @@ pub const feature_ras = Feature{
433493
434pub const feature_rasv8_4 = Feature{494pub const feature_rasv8_4 = Feature{
435 .name = "rasv8_4",495 .name = "rasv8_4",
496 .llvm_name = "rasv8_4",
436 .description = "Enable v8.4-A Reliability, Availability and Serviceability extension",497 .description = "Enable v8.4-A Reliability, Availability and Serviceability extension",
437 .dependencies = &[_]*const Feature {498 .dependencies = &[_]*const Feature {
438 &feature_ras,499 &feature_ras,
...@@ -441,6 +502,7 @@ pub const feature_rasv8_4 = Feature{...@@ -441,6 +502,7 @@ pub const feature_rasv8_4 = Feature{
441502
442pub const feature_rcpc = Feature{503pub const feature_rcpc = Feature{
443 .name = "rcpc",504 .name = "rcpc",
505 .llvm_name = "rcpc",
444 .description = "Enable support for RCPC extension",506 .description = "Enable support for RCPC extension",
445 .dependencies = &[_]*const Feature {507 .dependencies = &[_]*const Feature {
446 },508 },
...@@ -448,6 +510,7 @@ pub const feature_rcpc = Feature{...@@ -448,6 +510,7 @@ pub const feature_rcpc = Feature{
448510
449pub const feature_rcpcImmo = Feature{511pub const feature_rcpcImmo = Feature{
450 .name = "rcpc-immo",512 .name = "rcpc-immo",
513 .llvm_name = "rcpc-immo",
451 .description = "Enable v8.4-A RCPC instructions with Immediate Offsets",514 .description = "Enable v8.4-A RCPC instructions with Immediate Offsets",
452 .dependencies = &[_]*const Feature {515 .dependencies = &[_]*const Feature {
453 &feature_rcpc,516 &feature_rcpc,
...@@ -456,6 +519,7 @@ pub const feature_rcpcImmo = Feature{...@@ -456,6 +519,7 @@ pub const feature_rcpcImmo = Feature{
456519
457pub const feature_rdm = Feature{520pub const feature_rdm = Feature{
458 .name = "rdm",521 .name = "rdm",
522 .llvm_name = "rdm",
459 .description = "Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions",523 .description = "Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions",
460 .dependencies = &[_]*const Feature {524 .dependencies = &[_]*const Feature {
461 },525 },
...@@ -463,6 +527,7 @@ pub const feature_rdm = Feature{...@@ -463,6 +527,7 @@ pub const feature_rdm = Feature{
463527
464pub const feature_rand = Feature{528pub const feature_rand = Feature{
465 .name = "rand",529 .name = "rand",
530 .llvm_name = "rand",
466 .description = "Enable Random Number generation instructions",531 .description = "Enable Random Number generation instructions",
467 .dependencies = &[_]*const Feature {532 .dependencies = &[_]*const Feature {
468 },533 },
...@@ -470,6 +535,7 @@ pub const feature_rand = Feature{...@@ -470,6 +535,7 @@ pub const feature_rand = Feature{
470535
471pub const feature_reserveX1 = Feature{536pub const feature_reserveX1 = Feature{
472 .name = "reserve-x1",537 .name = "reserve-x1",
538 .llvm_name = "reserve-x1",
473 .description = "Reserve X1, making it unavailable as a GPR",539 .description = "Reserve X1, making it unavailable as a GPR",
474 .dependencies = &[_]*const Feature {540 .dependencies = &[_]*const Feature {
475 },541 },
...@@ -477,6 +543,7 @@ pub const feature_reserveX1 = Feature{...@@ -477,6 +543,7 @@ pub const feature_reserveX1 = Feature{
477543
478pub const feature_reserveX2 = Feature{544pub const feature_reserveX2 = Feature{
479 .name = "reserve-x2",545 .name = "reserve-x2",
546 .llvm_name = "reserve-x2",
480 .description = "Reserve X2, making it unavailable as a GPR",547 .description = "Reserve X2, making it unavailable as a GPR",
481 .dependencies = &[_]*const Feature {548 .dependencies = &[_]*const Feature {
482 },549 },
...@@ -484,6 +551,7 @@ pub const feature_reserveX2 = Feature{...@@ -484,6 +551,7 @@ pub const feature_reserveX2 = Feature{
484551
485pub const feature_reserveX3 = Feature{552pub const feature_reserveX3 = Feature{
486 .name = "reserve-x3",553 .name = "reserve-x3",
554 .llvm_name = "reserve-x3",
487 .description = "Reserve X3, making it unavailable as a GPR",555 .description = "Reserve X3, making it unavailable as a GPR",
488 .dependencies = &[_]*const Feature {556 .dependencies = &[_]*const Feature {
489 },557 },
...@@ -491,6 +559,7 @@ pub const feature_reserveX3 = Feature{...@@ -491,6 +559,7 @@ pub const feature_reserveX3 = Feature{
491559
492pub const feature_reserveX4 = Feature{560pub const feature_reserveX4 = Feature{
493 .name = "reserve-x4",561 .name = "reserve-x4",
562 .llvm_name = "reserve-x4",
494 .description = "Reserve X4, making it unavailable as a GPR",563 .description = "Reserve X4, making it unavailable as a GPR",
495 .dependencies = &[_]*const Feature {564 .dependencies = &[_]*const Feature {
496 },565 },
...@@ -498,6 +567,7 @@ pub const feature_reserveX4 = Feature{...@@ -498,6 +567,7 @@ pub const feature_reserveX4 = Feature{
498567
499pub const feature_reserveX5 = Feature{568pub const feature_reserveX5 = Feature{
500 .name = "reserve-x5",569 .name = "reserve-x5",
570 .llvm_name = "reserve-x5",
501 .description = "Reserve X5, making it unavailable as a GPR",571 .description = "Reserve X5, making it unavailable as a GPR",
502 .dependencies = &[_]*const Feature {572 .dependencies = &[_]*const Feature {
503 },573 },
...@@ -505,6 +575,7 @@ pub const feature_reserveX5 = Feature{...@@ -505,6 +575,7 @@ pub const feature_reserveX5 = Feature{
505575
506pub const feature_reserveX6 = Feature{576pub const feature_reserveX6 = Feature{
507 .name = "reserve-x6",577 .name = "reserve-x6",
578 .llvm_name = "reserve-x6",
508 .description = "Reserve X6, making it unavailable as a GPR",579 .description = "Reserve X6, making it unavailable as a GPR",
509 .dependencies = &[_]*const Feature {580 .dependencies = &[_]*const Feature {
510 },581 },
...@@ -512,6 +583,7 @@ pub const feature_reserveX6 = Feature{...@@ -512,6 +583,7 @@ pub const feature_reserveX6 = Feature{
512583
513pub const feature_reserveX7 = Feature{584pub const feature_reserveX7 = Feature{
514 .name = "reserve-x7",585 .name = "reserve-x7",
586 .llvm_name = "reserve-x7",
515 .description = "Reserve X7, making it unavailable as a GPR",587 .description = "Reserve X7, making it unavailable as a GPR",
516 .dependencies = &[_]*const Feature {588 .dependencies = &[_]*const Feature {
517 },589 },
...@@ -519,6 +591,7 @@ pub const feature_reserveX7 = Feature{...@@ -519,6 +591,7 @@ pub const feature_reserveX7 = Feature{
519591
520pub const feature_reserveX9 = Feature{592pub const feature_reserveX9 = Feature{
521 .name = "reserve-x9",593 .name = "reserve-x9",
594 .llvm_name = "reserve-x9",
522 .description = "Reserve X9, making it unavailable as a GPR",595 .description = "Reserve X9, making it unavailable as a GPR",
523 .dependencies = &[_]*const Feature {596 .dependencies = &[_]*const Feature {
524 },597 },
...@@ -526,6 +599,7 @@ pub const feature_reserveX9 = Feature{...@@ -526,6 +599,7 @@ pub const feature_reserveX9 = Feature{
526599
527pub const feature_reserveX10 = Feature{600pub const feature_reserveX10 = Feature{
528 .name = "reserve-x10",601 .name = "reserve-x10",
602 .llvm_name = "reserve-x10",
529 .description = "Reserve X10, making it unavailable as a GPR",603 .description = "Reserve X10, making it unavailable as a GPR",
530 .dependencies = &[_]*const Feature {604 .dependencies = &[_]*const Feature {
531 },605 },
...@@ -533,6 +607,7 @@ pub const feature_reserveX10 = Feature{...@@ -533,6 +607,7 @@ pub const feature_reserveX10 = Feature{
533607
534pub const feature_reserveX11 = Feature{608pub const feature_reserveX11 = Feature{
535 .name = "reserve-x11",609 .name = "reserve-x11",
610 .llvm_name = "reserve-x11",
536 .description = "Reserve X11, making it unavailable as a GPR",611 .description = "Reserve X11, making it unavailable as a GPR",
537 .dependencies = &[_]*const Feature {612 .dependencies = &[_]*const Feature {
538 },613 },
...@@ -540,6 +615,7 @@ pub const feature_reserveX11 = Feature{...@@ -540,6 +615,7 @@ pub const feature_reserveX11 = Feature{
540615
541pub const feature_reserveX12 = Feature{616pub const feature_reserveX12 = Feature{
542 .name = "reserve-x12",617 .name = "reserve-x12",
618 .llvm_name = "reserve-x12",
543 .description = "Reserve X12, making it unavailable as a GPR",619 .description = "Reserve X12, making it unavailable as a GPR",
544 .dependencies = &[_]*const Feature {620 .dependencies = &[_]*const Feature {
545 },621 },
...@@ -547,6 +623,7 @@ pub const feature_reserveX12 = Feature{...@@ -547,6 +623,7 @@ pub const feature_reserveX12 = Feature{
547623
548pub const feature_reserveX13 = Feature{624pub const feature_reserveX13 = Feature{
549 .name = "reserve-x13",625 .name = "reserve-x13",
626 .llvm_name = "reserve-x13",
550 .description = "Reserve X13, making it unavailable as a GPR",627 .description = "Reserve X13, making it unavailable as a GPR",
551 .dependencies = &[_]*const Feature {628 .dependencies = &[_]*const Feature {
552 },629 },
...@@ -554,6 +631,7 @@ pub const feature_reserveX13 = Feature{...@@ -554,6 +631,7 @@ pub const feature_reserveX13 = Feature{
554631
555pub const feature_reserveX14 = Feature{632pub const feature_reserveX14 = Feature{
556 .name = "reserve-x14",633 .name = "reserve-x14",
634 .llvm_name = "reserve-x14",
557 .description = "Reserve X14, making it unavailable as a GPR",635 .description = "Reserve X14, making it unavailable as a GPR",
558 .dependencies = &[_]*const Feature {636 .dependencies = &[_]*const Feature {
559 },637 },
...@@ -561,6 +639,7 @@ pub const feature_reserveX14 = Feature{...@@ -561,6 +639,7 @@ pub const feature_reserveX14 = Feature{
561639
562pub const feature_reserveX15 = Feature{640pub const feature_reserveX15 = Feature{
563 .name = "reserve-x15",641 .name = "reserve-x15",
642 .llvm_name = "reserve-x15",
564 .description = "Reserve X15, making it unavailable as a GPR",643 .description = "Reserve X15, making it unavailable as a GPR",
565 .dependencies = &[_]*const Feature {644 .dependencies = &[_]*const Feature {
566 },645 },
...@@ -568,6 +647,7 @@ pub const feature_reserveX15 = Feature{...@@ -568,6 +647,7 @@ pub const feature_reserveX15 = Feature{
568647
569pub const feature_reserveX18 = Feature{648pub const feature_reserveX18 = Feature{
570 .name = "reserve-x18",649 .name = "reserve-x18",
650 .llvm_name = "reserve-x18",
571 .description = "Reserve X18, making it unavailable as a GPR",651 .description = "Reserve X18, making it unavailable as a GPR",
572 .dependencies = &[_]*const Feature {652 .dependencies = &[_]*const Feature {
573 },653 },
...@@ -575,6 +655,7 @@ pub const feature_reserveX18 = Feature{...@@ -575,6 +655,7 @@ pub const feature_reserveX18 = Feature{
575655
576pub const feature_reserveX20 = Feature{656pub const feature_reserveX20 = Feature{
577 .name = "reserve-x20",657 .name = "reserve-x20",
658 .llvm_name = "reserve-x20",
578 .description = "Reserve X20, making it unavailable as a GPR",659 .description = "Reserve X20, making it unavailable as a GPR",
579 .dependencies = &[_]*const Feature {660 .dependencies = &[_]*const Feature {
580 },661 },
...@@ -582,6 +663,7 @@ pub const feature_reserveX20 = Feature{...@@ -582,6 +663,7 @@ pub const feature_reserveX20 = Feature{
582663
583pub const feature_reserveX21 = Feature{664pub const feature_reserveX21 = Feature{
584 .name = "reserve-x21",665 .name = "reserve-x21",
666 .llvm_name = "reserve-x21",
585 .description = "Reserve X21, making it unavailable as a GPR",667 .description = "Reserve X21, making it unavailable as a GPR",
586 .dependencies = &[_]*const Feature {668 .dependencies = &[_]*const Feature {
587 },669 },
...@@ -589,6 +671,7 @@ pub const feature_reserveX21 = Feature{...@@ -589,6 +671,7 @@ pub const feature_reserveX21 = Feature{
589671
590pub const feature_reserveX22 = Feature{672pub const feature_reserveX22 = Feature{
591 .name = "reserve-x22",673 .name = "reserve-x22",
674 .llvm_name = "reserve-x22",
592 .description = "Reserve X22, making it unavailable as a GPR",675 .description = "Reserve X22, making it unavailable as a GPR",
593 .dependencies = &[_]*const Feature {676 .dependencies = &[_]*const Feature {
594 },677 },
...@@ -596,6 +679,7 @@ pub const feature_reserveX22 = Feature{...@@ -596,6 +679,7 @@ pub const feature_reserveX22 = Feature{
596679
597pub const feature_reserveX23 = Feature{680pub const feature_reserveX23 = Feature{
598 .name = "reserve-x23",681 .name = "reserve-x23",
682 .llvm_name = "reserve-x23",
599 .description = "Reserve X23, making it unavailable as a GPR",683 .description = "Reserve X23, making it unavailable as a GPR",
600 .dependencies = &[_]*const Feature {684 .dependencies = &[_]*const Feature {
601 },685 },
...@@ -603,6 +687,7 @@ pub const feature_reserveX23 = Feature{...@@ -603,6 +687,7 @@ pub const feature_reserveX23 = Feature{
603687
604pub const feature_reserveX24 = Feature{688pub const feature_reserveX24 = Feature{
605 .name = "reserve-x24",689 .name = "reserve-x24",
690 .llvm_name = "reserve-x24",
606 .description = "Reserve X24, making it unavailable as a GPR",691 .description = "Reserve X24, making it unavailable as a GPR",
607 .dependencies = &[_]*const Feature {692 .dependencies = &[_]*const Feature {
608 },693 },
...@@ -610,6 +695,7 @@ pub const feature_reserveX24 = Feature{...@@ -610,6 +695,7 @@ pub const feature_reserveX24 = Feature{
610695
611pub const feature_reserveX25 = Feature{696pub const feature_reserveX25 = Feature{
612 .name = "reserve-x25",697 .name = "reserve-x25",
698 .llvm_name = "reserve-x25",
613 .description = "Reserve X25, making it unavailable as a GPR",699 .description = "Reserve X25, making it unavailable as a GPR",
614 .dependencies = &[_]*const Feature {700 .dependencies = &[_]*const Feature {
615 },701 },
...@@ -617,6 +703,7 @@ pub const feature_reserveX25 = Feature{...@@ -617,6 +703,7 @@ pub const feature_reserveX25 = Feature{
617703
618pub const feature_reserveX26 = Feature{704pub const feature_reserveX26 = Feature{
619 .name = "reserve-x26",705 .name = "reserve-x26",
706 .llvm_name = "reserve-x26",
620 .description = "Reserve X26, making it unavailable as a GPR",707 .description = "Reserve X26, making it unavailable as a GPR",
621 .dependencies = &[_]*const Feature {708 .dependencies = &[_]*const Feature {
622 },709 },
...@@ -624,6 +711,7 @@ pub const feature_reserveX26 = Feature{...@@ -624,6 +711,7 @@ pub const feature_reserveX26 = Feature{
624711
625pub const feature_reserveX27 = Feature{712pub const feature_reserveX27 = Feature{
626 .name = "reserve-x27",713 .name = "reserve-x27",
714 .llvm_name = "reserve-x27",
627 .description = "Reserve X27, making it unavailable as a GPR",715 .description = "Reserve X27, making it unavailable as a GPR",
628 .dependencies = &[_]*const Feature {716 .dependencies = &[_]*const Feature {
629 },717 },
...@@ -631,6 +719,7 @@ pub const feature_reserveX27 = Feature{...@@ -631,6 +719,7 @@ pub const feature_reserveX27 = Feature{
631719
632pub const feature_reserveX28 = Feature{720pub const feature_reserveX28 = Feature{
633 .name = "reserve-x28",721 .name = "reserve-x28",
722 .llvm_name = "reserve-x28",
634 .description = "Reserve X28, making it unavailable as a GPR",723 .description = "Reserve X28, making it unavailable as a GPR",
635 .dependencies = &[_]*const Feature {724 .dependencies = &[_]*const Feature {
636 },725 },
...@@ -638,6 +727,7 @@ pub const feature_reserveX28 = Feature{...@@ -638,6 +727,7 @@ pub const feature_reserveX28 = Feature{
638727
639pub const feature_sb = Feature{728pub const feature_sb = Feature{
640 .name = "sb",729 .name = "sb",
730 .llvm_name = "sb",
641 .description = "Enable v8.5 Speculation Barrier",731 .description = "Enable v8.5 Speculation Barrier",
642 .dependencies = &[_]*const Feature {732 .dependencies = &[_]*const Feature {
643 },733 },
...@@ -645,6 +735,7 @@ pub const feature_sb = Feature{...@@ -645,6 +735,7 @@ pub const feature_sb = Feature{
645735
646pub const feature_sel2 = Feature{736pub const feature_sel2 = Feature{
647 .name = "sel2",737 .name = "sel2",
738 .llvm_name = "sel2",
648 .description = "Enable v8.4-A Secure Exception Level 2 extension",739 .description = "Enable v8.4-A Secure Exception Level 2 extension",
649 .dependencies = &[_]*const Feature {740 .dependencies = &[_]*const Feature {
650 },741 },
...@@ -652,6 +743,7 @@ pub const feature_sel2 = Feature{...@@ -652,6 +743,7 @@ pub const feature_sel2 = Feature{
652743
653pub const feature_sha2 = Feature{744pub const feature_sha2 = Feature{
654 .name = "sha2",745 .name = "sha2",
746 .llvm_name = "sha2",
655 .description = "Enable SHA1 and SHA256 support",747 .description = "Enable SHA1 and SHA256 support",
656 .dependencies = &[_]*const Feature {748 .dependencies = &[_]*const Feature {
657 &feature_fpArmv8,749 &feature_fpArmv8,
...@@ -660,6 +752,7 @@ pub const feature_sha2 = Feature{...@@ -660,6 +752,7 @@ pub const feature_sha2 = Feature{
660752
661pub const feature_sha3 = Feature{753pub const feature_sha3 = Feature{
662 .name = "sha3",754 .name = "sha3",
755 .llvm_name = "sha3",
663 .description = "Enable SHA512 and SHA3 support",756 .description = "Enable SHA512 and SHA3 support",
664 .dependencies = &[_]*const Feature {757 .dependencies = &[_]*const Feature {
665 &feature_fpArmv8,758 &feature_fpArmv8,
...@@ -668,6 +761,7 @@ pub const feature_sha3 = Feature{...@@ -668,6 +761,7 @@ pub const feature_sha3 = Feature{
668761
669pub const feature_sm4 = Feature{762pub const feature_sm4 = Feature{
670 .name = "sm4",763 .name = "sm4",
764 .llvm_name = "sm4",
671 .description = "Enable SM3 and SM4 support",765 .description = "Enable SM3 and SM4 support",
672 .dependencies = &[_]*const Feature {766 .dependencies = &[_]*const Feature {
673 &feature_fpArmv8,767 &feature_fpArmv8,
...@@ -676,6 +770,7 @@ pub const feature_sm4 = Feature{...@@ -676,6 +770,7 @@ pub const feature_sm4 = Feature{
676770
677pub const feature_spe = Feature{771pub const feature_spe = Feature{
678 .name = "spe",772 .name = "spe",
773 .llvm_name = "spe",
679 .description = "Enable Statistical Profiling extension",774 .description = "Enable Statistical Profiling extension",
680 .dependencies = &[_]*const Feature {775 .dependencies = &[_]*const Feature {
681 },776 },
...@@ -683,6 +778,7 @@ pub const feature_spe = Feature{...@@ -683,6 +778,7 @@ pub const feature_spe = Feature{
683778
684pub const feature_ssbs = Feature{779pub const feature_ssbs = Feature{
685 .name = "ssbs",780 .name = "ssbs",
781 .llvm_name = "ssbs",
686 .description = "Enable Speculative Store Bypass Safe bit",782 .description = "Enable Speculative Store Bypass Safe bit",
687 .dependencies = &[_]*const Feature {783 .dependencies = &[_]*const Feature {
688 },784 },
...@@ -690,6 +786,7 @@ pub const feature_ssbs = Feature{...@@ -690,6 +786,7 @@ pub const feature_ssbs = Feature{
690786
691pub const feature_sve = Feature{787pub const feature_sve = Feature{
692 .name = "sve",788 .name = "sve",
789 .llvm_name = "sve",
693 .description = "Enable Scalable Vector Extension (SVE) instructions",790 .description = "Enable Scalable Vector Extension (SVE) instructions",
694 .dependencies = &[_]*const Feature {791 .dependencies = &[_]*const Feature {
695 },792 },
...@@ -697,6 +794,7 @@ pub const feature_sve = Feature{...@@ -697,6 +794,7 @@ pub const feature_sve = Feature{
697794
698pub const feature_sve2 = Feature{795pub const feature_sve2 = Feature{
699 .name = "sve2",796 .name = "sve2",
797 .llvm_name = "sve2",
700 .description = "Enable Scalable Vector Extension 2 (SVE2) instructions",798 .description = "Enable Scalable Vector Extension 2 (SVE2) instructions",
701 .dependencies = &[_]*const Feature {799 .dependencies = &[_]*const Feature {
702 &feature_sve,800 &feature_sve,
...@@ -705,6 +803,7 @@ pub const feature_sve2 = Feature{...@@ -705,6 +803,7 @@ pub const feature_sve2 = Feature{
705803
706pub const feature_sve2Aes = Feature{804pub const feature_sve2Aes = Feature{
707 .name = "sve2-aes",805 .name = "sve2-aes",
806 .llvm_name = "sve2-aes",
708 .description = "Enable AES SVE2 instructions",807 .description = "Enable AES SVE2 instructions",
709 .dependencies = &[_]*const Feature {808 .dependencies = &[_]*const Feature {
710 &feature_fpArmv8,809 &feature_fpArmv8,
...@@ -714,6 +813,7 @@ pub const feature_sve2Aes = Feature{...@@ -714,6 +813,7 @@ pub const feature_sve2Aes = Feature{
714813
715pub const feature_sve2Bitperm = Feature{814pub const feature_sve2Bitperm = Feature{
716 .name = "sve2-bitperm",815 .name = "sve2-bitperm",
816 .llvm_name = "sve2-bitperm",
717 .description = "Enable bit permutation SVE2 instructions",817 .description = "Enable bit permutation SVE2 instructions",
718 .dependencies = &[_]*const Feature {818 .dependencies = &[_]*const Feature {
719 &feature_sve,819 &feature_sve,
...@@ -722,6 +822,7 @@ pub const feature_sve2Bitperm = Feature{...@@ -722,6 +822,7 @@ pub const feature_sve2Bitperm = Feature{
722822
723pub const feature_sve2Sha3 = Feature{823pub const feature_sve2Sha3 = Feature{
724 .name = "sve2-sha3",824 .name = "sve2-sha3",
825 .llvm_name = "sve2-sha3",
725 .description = "Enable SHA3 SVE2 instructions",826 .description = "Enable SHA3 SVE2 instructions",
726 .dependencies = &[_]*const Feature {827 .dependencies = &[_]*const Feature {
727 &feature_fpArmv8,828 &feature_fpArmv8,
...@@ -731,6 +832,7 @@ pub const feature_sve2Sha3 = Feature{...@@ -731,6 +832,7 @@ pub const feature_sve2Sha3 = Feature{
731832
732pub const feature_sve2Sm4 = Feature{833pub const feature_sve2Sm4 = Feature{
733 .name = "sve2-sm4",834 .name = "sve2-sm4",
835 .llvm_name = "sve2-sm4",
734 .description = "Enable SM4 SVE2 instructions",836 .description = "Enable SM4 SVE2 instructions",
735 .dependencies = &[_]*const Feature {837 .dependencies = &[_]*const Feature {
736 &feature_fpArmv8,838 &feature_fpArmv8,
...@@ -740,6 +842,7 @@ pub const feature_sve2Sm4 = Feature{...@@ -740,6 +842,7 @@ pub const feature_sve2Sm4 = Feature{
740842
741pub const feature_slowMisaligned128store = Feature{843pub const feature_slowMisaligned128store = Feature{
742 .name = "slow-misaligned-128store",844 .name = "slow-misaligned-128store",
845 .llvm_name = "slow-misaligned-128store",
743 .description = "Misaligned 128 bit stores are slow",846 .description = "Misaligned 128 bit stores are slow",
744 .dependencies = &[_]*const Feature {847 .dependencies = &[_]*const Feature {
745 },848 },
...@@ -747,6 +850,7 @@ pub const feature_slowMisaligned128store = Feature{...@@ -747,6 +850,7 @@ pub const feature_slowMisaligned128store = Feature{
747850
748pub const feature_slowPaired128 = Feature{851pub const feature_slowPaired128 = Feature{
749 .name = "slow-paired-128",852 .name = "slow-paired-128",
853 .llvm_name = "slow-paired-128",
750 .description = "Paired 128 bit loads and stores are slow",854 .description = "Paired 128 bit loads and stores are slow",
751 .dependencies = &[_]*const Feature {855 .dependencies = &[_]*const Feature {
752 },856 },
...@@ -754,6 +858,7 @@ pub const feature_slowPaired128 = Feature{...@@ -754,6 +858,7 @@ pub const feature_slowPaired128 = Feature{
754858
755pub const feature_slowStrqroStore = Feature{859pub const feature_slowStrqroStore = Feature{
756 .name = "slow-strqro-store",860 .name = "slow-strqro-store",
861 .llvm_name = "slow-strqro-store",
757 .description = "STR of Q register with register offset is slow",862 .description = "STR of Q register with register offset is slow",
758 .dependencies = &[_]*const Feature {863 .dependencies = &[_]*const Feature {
759 },864 },
...@@ -761,6 +866,7 @@ pub const feature_slowStrqroStore = Feature{...@@ -761,6 +866,7 @@ pub const feature_slowStrqroStore = Feature{
761866
762pub const feature_specrestrict = Feature{867pub const feature_specrestrict = Feature{
763 .name = "specrestrict",868 .name = "specrestrict",
869 .llvm_name = "specrestrict",
764 .description = "Enable architectural speculation restriction",870 .description = "Enable architectural speculation restriction",
765 .dependencies = &[_]*const Feature {871 .dependencies = &[_]*const Feature {
766 },872 },
...@@ -768,6 +874,7 @@ pub const feature_specrestrict = Feature{...@@ -768,6 +874,7 @@ pub const feature_specrestrict = Feature{
768874
769pub const feature_strictAlign = Feature{875pub const feature_strictAlign = Feature{
770 .name = "strict-align",876 .name = "strict-align",
877 .llvm_name = "strict-align",
771 .description = "Disallow all unaligned memory access",878 .description = "Disallow all unaligned memory access",
772 .dependencies = &[_]*const Feature {879 .dependencies = &[_]*const Feature {
773 },880 },
...@@ -775,6 +882,7 @@ pub const feature_strictAlign = Feature{...@@ -775,6 +882,7 @@ pub const feature_strictAlign = Feature{
775882
776pub const feature_tlbRmi = Feature{883pub const feature_tlbRmi = Feature{
777 .name = "tlb-rmi",884 .name = "tlb-rmi",
885 .llvm_name = "tlb-rmi",
778 .description = "Enable v8.4-A TLB Range and Maintenance Instructions",886 .description = "Enable v8.4-A TLB Range and Maintenance Instructions",
779 .dependencies = &[_]*const Feature {887 .dependencies = &[_]*const Feature {
780 },888 },
...@@ -782,6 +890,7 @@ pub const feature_tlbRmi = Feature{...@@ -782,6 +890,7 @@ pub const feature_tlbRmi = Feature{
782890
783pub const feature_tme = Feature{891pub const feature_tme = Feature{
784 .name = "tme",892 .name = "tme",
893 .llvm_name = "tme",
785 .description = "Enable Transactional Memory Extension",894 .description = "Enable Transactional Memory Extension",
786 .dependencies = &[_]*const Feature {895 .dependencies = &[_]*const Feature {
787 },896 },
...@@ -789,6 +898,7 @@ pub const feature_tme = Feature{...@@ -789,6 +898,7 @@ pub const feature_tme = Feature{
789898
790pub const feature_tracev84 = Feature{899pub const feature_tracev84 = Feature{
791 .name = "tracev8.4",900 .name = "tracev8.4",
901 .llvm_name = "tracev8.4",
792 .description = "Enable v8.4-A Trace extension",902 .description = "Enable v8.4-A Trace extension",
793 .dependencies = &[_]*const Feature {903 .dependencies = &[_]*const Feature {
794 },904 },
...@@ -796,6 +906,7 @@ pub const feature_tracev84 = Feature{...@@ -796,6 +906,7 @@ pub const feature_tracev84 = Feature{
796906
797pub const feature_trbe = Feature{907pub const feature_trbe = Feature{
798 .name = "trbe",908 .name = "trbe",
909 .llvm_name = "trbe",
799 .description = "Enable Trace Buffer Extension",910 .description = "Enable Trace Buffer Extension",
800 .dependencies = &[_]*const Feature {911 .dependencies = &[_]*const Feature {
801 },912 },
...@@ -803,6 +914,7 @@ pub const feature_trbe = Feature{...@@ -803,6 +914,7 @@ pub const feature_trbe = Feature{
803914
804pub const feature_taggedGlobals = Feature{915pub const feature_taggedGlobals = Feature{
805 .name = "tagged-globals",916 .name = "tagged-globals",
917 .llvm_name = "tagged-globals",
806 .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits",918 .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits",
807 .dependencies = &[_]*const Feature {919 .dependencies = &[_]*const Feature {
808 },920 },
...@@ -810,6 +922,7 @@ pub const feature_taggedGlobals = Feature{...@@ -810,6 +922,7 @@ pub const feature_taggedGlobals = Feature{
810922
811pub const feature_useAa = Feature{923pub const feature_useAa = Feature{
812 .name = "use-aa",924 .name = "use-aa",
925 .llvm_name = "use-aa",
813 .description = "Use alias analysis during codegen",926 .description = "Use alias analysis during codegen",
814 .dependencies = &[_]*const Feature {927 .dependencies = &[_]*const Feature {
815 },928 },
...@@ -817,6 +930,7 @@ pub const feature_useAa = Feature{...@@ -817,6 +930,7 @@ pub const feature_useAa = Feature{
817930
818pub const feature_tpidrEl1 = Feature{931pub const feature_tpidrEl1 = Feature{
819 .name = "tpidr-el1",932 .name = "tpidr-el1",
933 .llvm_name = "tpidr-el1",
820 .description = "Permit use of TPIDR_EL1 for the TLS base",934 .description = "Permit use of TPIDR_EL1 for the TLS base",
821 .dependencies = &[_]*const Feature {935 .dependencies = &[_]*const Feature {
822 },936 },
...@@ -824,6 +938,7 @@ pub const feature_tpidrEl1 = Feature{...@@ -824,6 +938,7 @@ pub const feature_tpidrEl1 = Feature{
824938
825pub const feature_tpidrEl2 = Feature{939pub const feature_tpidrEl2 = Feature{
826 .name = "tpidr-el2",940 .name = "tpidr-el2",
941 .llvm_name = "tpidr-el2",
827 .description = "Permit use of TPIDR_EL2 for the TLS base",942 .description = "Permit use of TPIDR_EL2 for the TLS base",
828 .dependencies = &[_]*const Feature {943 .dependencies = &[_]*const Feature {
829 },944 },
...@@ -831,6 +946,7 @@ pub const feature_tpidrEl2 = Feature{...@@ -831,6 +946,7 @@ pub const feature_tpidrEl2 = Feature{
831946
832pub const feature_tpidrEl3 = Feature{947pub const feature_tpidrEl3 = Feature{
833 .name = "tpidr-el3",948 .name = "tpidr-el3",
949 .llvm_name = "tpidr-el3",
834 .description = "Permit use of TPIDR_EL3 for the TLS base",950 .description = "Permit use of TPIDR_EL3 for the TLS base",
835 .dependencies = &[_]*const Feature {951 .dependencies = &[_]*const Feature {
836 },952 },
...@@ -838,6 +954,7 @@ pub const feature_tpidrEl3 = Feature{...@@ -838,6 +954,7 @@ pub const feature_tpidrEl3 = Feature{
838954
839pub const feature_useReciprocalSquareRoot = Feature{955pub const feature_useReciprocalSquareRoot = Feature{
840 .name = "use-reciprocal-square-root",956 .name = "use-reciprocal-square-root",
957 .llvm_name = "use-reciprocal-square-root",
841 .description = "Use the reciprocal square root approximation",958 .description = "Use the reciprocal square root approximation",
842 .dependencies = &[_]*const Feature {959 .dependencies = &[_]*const Feature {
843 },960 },
...@@ -845,6 +962,7 @@ pub const feature_useReciprocalSquareRoot = Feature{...@@ -845,6 +962,7 @@ pub const feature_useReciprocalSquareRoot = Feature{
845962
846pub const feature_vh = Feature{963pub const feature_vh = Feature{
847 .name = "vh",964 .name = "vh",
965 .llvm_name = "vh",
848 .description = "Enables ARM v8.1 Virtual Host extension",966 .description = "Enables ARM v8.1 Virtual Host extension",
849 .dependencies = &[_]*const Feature {967 .dependencies = &[_]*const Feature {
850 },968 },
...@@ -852,6 +970,7 @@ pub const feature_vh = Feature{...@@ -852,6 +970,7 @@ pub const feature_vh = Feature{
852970
853pub const feature_zcm = Feature{971pub const feature_zcm = Feature{
854 .name = "zcm",972 .name = "zcm",
973 .llvm_name = "zcm",
855 .description = "Has zero-cycle register moves",974 .description = "Has zero-cycle register moves",
856 .dependencies = &[_]*const Feature {975 .dependencies = &[_]*const Feature {
857 },976 },
...@@ -859,6 +978,7 @@ pub const feature_zcm = Feature{...@@ -859,6 +978,7 @@ pub const feature_zcm = Feature{
859978
860pub const feature_zcz = Feature{979pub const feature_zcz = Feature{
861 .name = "zcz",980 .name = "zcz",
981 .llvm_name = "zcz",
862 .description = "Has zero-cycle zeroing instructions",982 .description = "Has zero-cycle zeroing instructions",
863 .dependencies = &[_]*const Feature {983 .dependencies = &[_]*const Feature {
864 &feature_zczGp,984 &feature_zczGp,
...@@ -868,6 +988,7 @@ pub const feature_zcz = Feature{...@@ -868,6 +988,7 @@ pub const feature_zcz = Feature{
868988
869pub const feature_zczFp = Feature{989pub const feature_zczFp = Feature{
870 .name = "zcz-fp",990 .name = "zcz-fp",
991 .llvm_name = "zcz-fp",
871 .description = "Has zero-cycle zeroing instructions for FP registers",992 .description = "Has zero-cycle zeroing instructions for FP registers",
872 .dependencies = &[_]*const Feature {993 .dependencies = &[_]*const Feature {
873 },994 },
...@@ -875,6 +996,7 @@ pub const feature_zczFp = Feature{...@@ -875,6 +996,7 @@ pub const feature_zczFp = Feature{
875996
876pub const feature_zczFpWorkaround = Feature{997pub const feature_zczFpWorkaround = Feature{
877 .name = "zcz-fp-workaround",998 .name = "zcz-fp-workaround",
999 .llvm_name = "zcz-fp-workaround",
878 .description = "The zero-cycle floating-point zeroing instruction has a bug",1000 .description = "The zero-cycle floating-point zeroing instruction has a bug",
879 .dependencies = &[_]*const Feature {1001 .dependencies = &[_]*const Feature {
880 },1002 },
...@@ -882,6 +1004,7 @@ pub const feature_zczFpWorkaround = Feature{...@@ -882,6 +1004,7 @@ pub const feature_zczFpWorkaround = Feature{
8821004
883pub const feature_zczGp = Feature{1005pub const feature_zczGp = Feature{
884 .name = "zcz-gp",1006 .name = "zcz-gp",
1007 .llvm_name = "zcz-gp",
885 .description = "Has zero-cycle zeroing instructions for generic registers",1008 .description = "Has zero-cycle zeroing instructions for generic registers",
886 .dependencies = &[_]*const Feature {1009 .dependencies = &[_]*const Feature {
887 },1010 },
...@@ -1017,18 +1140,18 @@ pub const cpu_appleLatest = Cpu{...@@ -1017,18 +1140,18 @@ pub const cpu_appleLatest = Cpu{
1017 .name = "apple-latest",1140 .name = "apple-latest",
1018 .llvm_name = "apple-latest",1141 .llvm_name = "apple-latest",
1019 .dependencies = &[_]*const Feature {1142 .dependencies = &[_]*const Feature {
1020 &feature_alternateSextloadCvtF32Pattern,
1021 &feature_fuseCryptoEor,
1022 &feature_fuseAes,1143 &feature_fuseAes,
1023 &feature_zczGp,
1024 &feature_zczFpWorkaround,1144 &feature_zczFpWorkaround,
1025 &feature_disableLatencySchedHeuristic,
1026 &feature_perfmon,1145 &feature_perfmon,
1027 &feature_fpArmv8,
1028 &feature_arithBccFusion,
1029 &feature_arithCbzFusion,1146 &feature_arithCbzFusion,
1030 &feature_zczFp,1147 &feature_alternateSextloadCvtF32Pattern,
1148 &feature_fuseCryptoEor,
1149 &feature_disableLatencySchedHeuristic,
1031 &feature_zcm,1150 &feature_zcm,
1151 &feature_zczFp,
1152 &feature_zczGp,
1153 &feature_fpArmv8,
1154 &feature_arithBccFusion,
1032 },1155 },
1033};1156};
10341157
...@@ -1036,9 +1159,9 @@ pub const cpu_cortexA35 = Cpu{...@@ -1036,9 +1159,9 @@ pub const cpu_cortexA35 = Cpu{
1036 .name = "cortex-a35",1159 .name = "cortex-a35",
1037 .llvm_name = "cortex-a35",1160 .llvm_name = "cortex-a35",
1038 .dependencies = &[_]*const Feature {1161 .dependencies = &[_]*const Feature {
1039 &feature_crc,
1040 &feature_fpArmv8,1162 &feature_fpArmv8,
1041 &feature_perfmon,1163 &feature_perfmon,
1164 &feature_crc,
1042 },1165 },
1043};1166};
10441167
...@@ -1046,13 +1169,13 @@ pub const cpu_cortexA53 = Cpu{...@@ -1046,13 +1169,13 @@ pub const cpu_cortexA53 = Cpu{
1046 .name = "cortex-a53",1169 .name = "cortex-a53",
1047 .llvm_name = "cortex-a53",1170 .llvm_name = "cortex-a53",
1048 .dependencies = &[_]*const Feature {1171 .dependencies = &[_]*const Feature {
1049 &feature_customCheapAsMove,
1050 &feature_fuseAes,1172 &feature_fuseAes,
1051 &feature_usePostraScheduler,1173 &feature_balanceFpOps,
1052 &feature_perfmon,1174 &feature_perfmon,
1053 &feature_fpArmv8,
1054 &feature_crc,1175 &feature_crc,
1055 &feature_balanceFpOps,1176 &feature_customCheapAsMove,
1177 &feature_fpArmv8,
1178 &feature_usePostraScheduler,
1056 &feature_useAa,1179 &feature_useAa,
1057 },1180 },
1058};1181};
...@@ -1061,20 +1184,20 @@ pub const cpu_cortexA55 = Cpu{...@@ -1061,20 +1184,20 @@ pub const cpu_cortexA55 = Cpu{
1061 .name = "cortex-a55",1184 .name = "cortex-a55",
1062 .llvm_name = "cortex-a55",1185 .llvm_name = "cortex-a55",
1063 .dependencies = &[_]*const Feature {1186 .dependencies = &[_]*const Feature {
1064 &feature_rdm,
1065 &feature_ccpp,
1066 &feature_fuseAes,1187 &feature_fuseAes,
1067 &feature_lse,
1068 &feature_perfmon,
1069 &feature_fpArmv8,1188 &feature_fpArmv8,
1070 &feature_lor,
1071 &feature_ras,1189 &feature_ras,
1072 &feature_vh,
1073 &feature_rcpc,
1074 &feature_dotprod,1190 &feature_dotprod,
1075 &feature_uaops,1191 &feature_vh,
1076 &feature_crc,1192 &feature_crc,
1077 &feature_pan,1193 &feature_pan,
1194 &feature_ccpp,
1195 &feature_rdm,
1196 &feature_rcpc,
1197 &feature_uaops,
1198 &feature_perfmon,
1199 &feature_lse,
1200 &feature_lor,
1078 },1201 },
1079};1202};
10801203
...@@ -1082,15 +1205,15 @@ pub const cpu_cortexA57 = Cpu{...@@ -1082,15 +1205,15 @@ pub const cpu_cortexA57 = Cpu{
1082 .name = "cortex-a57",1205 .name = "cortex-a57",
1083 .llvm_name = "cortex-a57",1206 .llvm_name = "cortex-a57",
1084 .dependencies = &[_]*const Feature {1207 .dependencies = &[_]*const Feature {
1085 &feature_customCheapAsMove,
1086 &feature_fuseAes,1208 &feature_fuseAes,
1087 &feature_usePostraScheduler,1209 &feature_balanceFpOps,
1088 &feature_perfmon,1210 &feature_perfmon,
1089 &feature_fpArmv8,
1090 &feature_crc,1211 &feature_crc,
1091 &feature_balanceFpOps,
1092 &feature_fuseLiterals,1212 &feature_fuseLiterals,
1093 &feature_predictableSelectExpensive,1213 &feature_predictableSelectExpensive,
1214 &feature_customCheapAsMove,
1215 &feature_fpArmv8,
1216 &feature_usePostraScheduler,
1094 },1217 },
1095};1218};
10961219
...@@ -1098,19 +1221,19 @@ pub const cpu_cortexA65 = Cpu{...@@ -1098,19 +1221,19 @@ pub const cpu_cortexA65 = Cpu{
1098 .name = "cortex-a65",1221 .name = "cortex-a65",
1099 .llvm_name = "cortex-a65",1222 .llvm_name = "cortex-a65",
1100 .dependencies = &[_]*const Feature {1223 .dependencies = &[_]*const Feature {
1101 &feature_rdm,
1102 &feature_ccpp,
1103 &feature_lse,
1104 &feature_fpArmv8,
1105 &feature_ras,1224 &feature_ras,
1106 &feature_lor,
1107 &feature_vh,
1108 &feature_rcpc,
1109 &feature_dotprod,1225 &feature_dotprod,
1110 &feature_ssbs,1226 &feature_vh,
1111 &feature_uaops,
1112 &feature_crc,1227 &feature_crc,
1113 &feature_pan,1228 &feature_pan,
1229 &feature_ccpp,
1230 &feature_rdm,
1231 &feature_rcpc,
1232 &feature_uaops,
1233 &feature_ssbs,
1234 &feature_fpArmv8,
1235 &feature_lse,
1236 &feature_lor,
1114 },1237 },
1115};1238};
11161239
...@@ -1118,19 +1241,19 @@ pub const cpu_cortexA65ae = Cpu{...@@ -1118,19 +1241,19 @@ pub const cpu_cortexA65ae = Cpu{
1118 .name = "cortex-a65ae",1241 .name = "cortex-a65ae",
1119 .llvm_name = "cortex-a65ae",1242 .llvm_name = "cortex-a65ae",
1120 .dependencies = &[_]*const Feature {1243 .dependencies = &[_]*const Feature {
1121 &feature_rdm,
1122 &feature_ccpp,
1123 &feature_lse,
1124 &feature_fpArmv8,
1125 &feature_ras,1244 &feature_ras,
1126 &feature_lor,
1127 &feature_vh,
1128 &feature_rcpc,
1129 &feature_dotprod,1245 &feature_dotprod,
1130 &feature_ssbs,1246 &feature_vh,
1131 &feature_uaops,
1132 &feature_crc,1247 &feature_crc,
1133 &feature_pan,1248 &feature_pan,
1249 &feature_ccpp,
1250 &feature_rdm,
1251 &feature_rcpc,
1252 &feature_uaops,
1253 &feature_ssbs,
1254 &feature_fpArmv8,
1255 &feature_lse,
1256 &feature_lor,
1134 },1257 },
1135};1258};
11361259
...@@ -1138,10 +1261,10 @@ pub const cpu_cortexA72 = Cpu{...@@ -1138,10 +1261,10 @@ pub const cpu_cortexA72 = Cpu{
1138 .name = "cortex-a72",1261 .name = "cortex-a72",
1139 .llvm_name = "cortex-a72",1262 .llvm_name = "cortex-a72",
1140 .dependencies = &[_]*const Feature {1263 .dependencies = &[_]*const Feature {
1141 &feature_crc,
1142 &feature_fuseAes,
1143 &feature_fpArmv8,1264 &feature_fpArmv8,
1265 &feature_fuseAes,
1144 &feature_perfmon,1266 &feature_perfmon,
1267 &feature_crc,
1145 },1268 },
1146};1269};
11471270
...@@ -1149,10 +1272,10 @@ pub const cpu_cortexA73 = Cpu{...@@ -1149,10 +1272,10 @@ pub const cpu_cortexA73 = Cpu{
1149 .name = "cortex-a73",1272 .name = "cortex-a73",
1150 .llvm_name = "cortex-a73",1273 .llvm_name = "cortex-a73",
1151 .dependencies = &[_]*const Feature {1274 .dependencies = &[_]*const Feature {
1152 &feature_crc,
1153 &feature_fuseAes,
1154 &feature_fpArmv8,1275 &feature_fpArmv8,
1276 &feature_fuseAes,
1155 &feature_perfmon,1277 &feature_perfmon,
1278 &feature_crc,
1156 },1279 },
1157};1280};
11581281
...@@ -1160,20 +1283,20 @@ pub const cpu_cortexA75 = Cpu{...@@ -1160,20 +1283,20 @@ pub const cpu_cortexA75 = Cpu{
1160 .name = "cortex-a75",1283 .name = "cortex-a75",
1161 .llvm_name = "cortex-a75",1284 .llvm_name = "cortex-a75",
1162 .dependencies = &[_]*const Feature {1285 .dependencies = &[_]*const Feature {
1163 &feature_rdm,
1164 &feature_ccpp,
1165 &feature_fuseAes,1286 &feature_fuseAes,
1166 &feature_lse,
1167 &feature_perfmon,
1168 &feature_fpArmv8,1287 &feature_fpArmv8,
1169 &feature_lor,
1170 &feature_ras,1288 &feature_ras,
1171 &feature_vh,
1172 &feature_rcpc,
1173 &feature_dotprod,1289 &feature_dotprod,
1174 &feature_uaops,1290 &feature_vh,
1175 &feature_crc,1291 &feature_crc,
1176 &feature_pan,1292 &feature_pan,
1293 &feature_ccpp,
1294 &feature_rdm,
1295 &feature_rcpc,
1296 &feature_uaops,
1297 &feature_perfmon,
1298 &feature_lse,
1299 &feature_lor,
1177 },1300 },
1178};1301};
11791302
...@@ -1181,19 +1304,19 @@ pub const cpu_cortexA76 = Cpu{...@@ -1181,19 +1304,19 @@ pub const cpu_cortexA76 = Cpu{
1181 .name = "cortex-a76",1304 .name = "cortex-a76",
1182 .llvm_name = "cortex-a76",1305 .llvm_name = "cortex-a76",
1183 .dependencies = &[_]*const Feature {1306 .dependencies = &[_]*const Feature {
1184 &feature_rdm,
1185 &feature_ccpp,
1186 &feature_lse,
1187 &feature_fpArmv8,
1188 &feature_lor,
1189 &feature_ras,1307 &feature_ras,
1190 &feature_vh,
1191 &feature_rcpc,
1192 &feature_dotprod,1308 &feature_dotprod,
1193 &feature_ssbs,1309 &feature_vh,
1194 &feature_uaops,
1195 &feature_crc,1310 &feature_crc,
1196 &feature_pan,1311 &feature_pan,
1312 &feature_ccpp,
1313 &feature_rdm,
1314 &feature_rcpc,
1315 &feature_uaops,
1316 &feature_ssbs,
1317 &feature_fpArmv8,
1318 &feature_lse,
1319 &feature_lor,
1197 },1320 },
1198};1321};
11991322
...@@ -1201,19 +1324,19 @@ pub const cpu_cortexA76ae = Cpu{...@@ -1201,19 +1324,19 @@ pub const cpu_cortexA76ae = Cpu{
1201 .name = "cortex-a76ae",1324 .name = "cortex-a76ae",
1202 .llvm_name = "cortex-a76ae",1325 .llvm_name = "cortex-a76ae",
1203 .dependencies = &[_]*const Feature {1326 .dependencies = &[_]*const Feature {
1204 &feature_rdm,
1205 &feature_ccpp,
1206 &feature_lse,
1207 &feature_fpArmv8,
1208 &feature_lor,
1209 &feature_ras,1327 &feature_ras,
1210 &feature_vh,
1211 &feature_rcpc,
1212 &feature_dotprod,1328 &feature_dotprod,
1213 &feature_ssbs,1329 &feature_vh,
1214 &feature_uaops,
1215 &feature_crc,1330 &feature_crc,
1216 &feature_pan,1331 &feature_pan,
1332 &feature_ccpp,
1333 &feature_rdm,
1334 &feature_rcpc,
1335 &feature_uaops,
1336 &feature_ssbs,
1337 &feature_fpArmv8,
1338 &feature_lse,
1339 &feature_lor,
1217 },1340 },
1218};1341};
12191342
...@@ -1221,18 +1344,18 @@ pub const cpu_cyclone = Cpu{...@@ -1221,18 +1344,18 @@ pub const cpu_cyclone = Cpu{
1221 .name = "cyclone",1344 .name = "cyclone",
1222 .llvm_name = "cyclone",1345 .llvm_name = "cyclone",
1223 .dependencies = &[_]*const Feature {1346 .dependencies = &[_]*const Feature {
1224 &feature_alternateSextloadCvtF32Pattern,
1225 &feature_fuseCryptoEor,
1226 &feature_fuseAes,1347 &feature_fuseAes,
1227 &feature_zczGp,
1228 &feature_zczFpWorkaround,1348 &feature_zczFpWorkaround,
1229 &feature_disableLatencySchedHeuristic,
1230 &feature_perfmon,1349 &feature_perfmon,
1231 &feature_fpArmv8,
1232 &feature_arithBccFusion,
1233 &feature_arithCbzFusion,1350 &feature_arithCbzFusion,
1234 &feature_zczFp,1351 &feature_alternateSextloadCvtF32Pattern,
1352 &feature_fuseCryptoEor,
1353 &feature_disableLatencySchedHeuristic,
1235 &feature_zcm,1354 &feature_zcm,
1355 &feature_zczFp,
1356 &feature_zczGp,
1357 &feature_fpArmv8,
1358 &feature_arithBccFusion,
1236 },1359 },
1237};1360};
12381361
...@@ -1240,17 +1363,17 @@ pub const cpu_exynosM1 = Cpu{...@@ -1240,17 +1363,17 @@ pub const cpu_exynosM1 = Cpu{
1240 .name = "exynos-m1",1363 .name = "exynos-m1",
1241 .llvm_name = "exynos-m1",1364 .llvm_name = "exynos-m1",
1242 .dependencies = &[_]*const Feature {1365 .dependencies = &[_]*const Feature {
1243 &feature_customCheapAsMove,
1244 &feature_fuseAes,1366 &feature_fuseAes,
1245 &feature_force32bitJumpTables,1367 &feature_force32bitJumpTables,
1246 &feature_usePostraScheduler,
1247 &feature_perfmon,1368 &feature_perfmon,
1248 &feature_fpArmv8,
1249 &feature_slowMisaligned128store,
1250 &feature_useReciprocalSquareRoot,
1251 &feature_crc,1369 &feature_crc,
1370 &feature_useReciprocalSquareRoot,
1252 &feature_slowPaired128,1371 &feature_slowPaired128,
1253 &feature_zczFp,1372 &feature_zczFp,
1373 &feature_slowMisaligned128store,
1374 &feature_customCheapAsMove,
1375 &feature_fpArmv8,
1376 &feature_usePostraScheduler,
1254 },1377 },
1255};1378};
12561379
...@@ -1258,16 +1381,16 @@ pub const cpu_exynosM2 = Cpu{...@@ -1258,16 +1381,16 @@ pub const cpu_exynosM2 = Cpu{
1258 .name = "exynos-m2",1381 .name = "exynos-m2",
1259 .llvm_name = "exynos-m2",1382 .llvm_name = "exynos-m2",
1260 .dependencies = &[_]*const Feature {1383 .dependencies = &[_]*const Feature {
1261 &feature_customCheapAsMove,
1262 &feature_fuseAes,1384 &feature_fuseAes,
1263 &feature_force32bitJumpTables,1385 &feature_force32bitJumpTables,
1264 &feature_usePostraScheduler,
1265 &feature_perfmon,1386 &feature_perfmon,
1266 &feature_fpArmv8,
1267 &feature_slowMisaligned128store,
1268 &feature_crc,1387 &feature_crc,
1269 &feature_slowPaired128,1388 &feature_slowPaired128,
1270 &feature_zczFp,1389 &feature_zczFp,
1390 &feature_slowMisaligned128store,
1391 &feature_customCheapAsMove,
1392 &feature_fpArmv8,
1393 &feature_usePostraScheduler,
1271 },1394 },
1272};1395};
12731396
...@@ -1275,19 +1398,19 @@ pub const cpu_exynosM3 = Cpu{...@@ -1275,19 +1398,19 @@ pub const cpu_exynosM3 = Cpu{
1275 .name = "exynos-m3",1398 .name = "exynos-m3",
1276 .llvm_name = "exynos-m3",1399 .llvm_name = "exynos-m3",
1277 .dependencies = &[_]*const Feature {1400 .dependencies = &[_]*const Feature {
1278 &feature_customCheapAsMove,
1279 &feature_fuseAes,1401 &feature_fuseAes,
1402 &feature_lslFast,
1280 &feature_force32bitJumpTables,1403 &feature_force32bitJumpTables,
1281 &feature_usePostraScheduler,
1282 &feature_perfmon,1404 &feature_perfmon,
1283 &feature_fpArmv8,
1284 &feature_fuseAddress,
1285 &feature_fuseCsel,
1286 &feature_lslFast,
1287 &feature_zczFp,
1288 &feature_crc,1405 &feature_crc,
1289 &feature_fuseLiterals,1406 &feature_fuseLiterals,
1407 &feature_fuseCsel,
1408 &feature_zczFp,
1290 &feature_predictableSelectExpensive,1409 &feature_predictableSelectExpensive,
1410 &feature_customCheapAsMove,
1411 &feature_fpArmv8,
1412 &feature_usePostraScheduler,
1413 &feature_fuseAddress,
1291 },1414 },
1292};1415};
12931416
...@@ -1295,31 +1418,31 @@ pub const cpu_exynosM4 = Cpu{...@@ -1295,31 +1418,31 @@ pub const cpu_exynosM4 = Cpu{
1295 .name = "exynos-m4",1418 .name = "exynos-m4",
1296 .llvm_name = "exynos-m4",1419 .llvm_name = "exynos-m4",
1297 .dependencies = &[_]*const Feature {1420 .dependencies = &[_]*const Feature {
1298 &feature_customCheapAsMove,
1299 &feature_lse,
1300 &feature_perfmon,
1301 &feature_fuseAddress,
1302 &feature_dotprod,
1303 &feature_arithCbzFusion,
1304 &feature_zczFp,
1305 &feature_fuseArithLogic,
1306 &feature_ccpp,
1307 &feature_fuseAes,1421 &feature_fuseAes,
1308 &feature_fuseCsel,
1309 &feature_rdm,
1310 &feature_zczGp,
1311 &feature_force32bitJumpTables,
1312 &feature_usePostraScheduler,
1313 &feature_lslFast,1422 &feature_lslFast,
1423 &feature_force32bitJumpTables,
1314 &feature_crc,1424 &feature_crc,
1315 &feature_fuseLiterals,1425 &feature_rdm,
1316 &feature_pan,
1317 &feature_fpArmv8,1426 &feature_fpArmv8,
1318 &feature_lor,1427 &feature_lse,
1319 &feature_ras,
1320 &feature_vh,1428 &feature_vh,
1429 &feature_arithCbzFusion,
1430 &feature_fuseLiterals,
1431 &feature_ccpp,
1432 &feature_lor,
1321 &feature_arithBccFusion,1433 &feature_arithBccFusion,
1434 &feature_ras,
1435 &feature_dotprod,
1436 &feature_fuseCsel,
1437 &feature_zczFp,
1322 &feature_uaops,1438 &feature_uaops,
1439 &feature_zczGp,
1440 &feature_perfmon,
1441 &feature_usePostraScheduler,
1442 &feature_fuseAddress,
1443 &feature_fuseArithLogic,
1444 &feature_customCheapAsMove,
1445 &feature_pan,
1323 },1446 },
1324};1447};
13251448
...@@ -1327,31 +1450,31 @@ pub const cpu_exynosM5 = Cpu{...@@ -1327,31 +1450,31 @@ pub const cpu_exynosM5 = Cpu{
1327 .name = "exynos-m5",1450 .name = "exynos-m5",
1328 .llvm_name = "exynos-m5",1451 .llvm_name = "exynos-m5",
1329 .dependencies = &[_]*const Feature {1452 .dependencies = &[_]*const Feature {
1330 &feature_customCheapAsMove,
1331 &feature_lse,
1332 &feature_perfmon,
1333 &feature_fuseAddress,
1334 &feature_dotprod,
1335 &feature_arithCbzFusion,
1336 &feature_zczFp,
1337 &feature_fuseArithLogic,
1338 &feature_ccpp,
1339 &feature_fuseAes,1453 &feature_fuseAes,
1340 &feature_fuseCsel,
1341 &feature_rdm,
1342 &feature_zczGp,
1343 &feature_force32bitJumpTables,
1344 &feature_usePostraScheduler,
1345 &feature_lslFast,1454 &feature_lslFast,
1455 &feature_force32bitJumpTables,
1346 &feature_crc,1456 &feature_crc,
1347 &feature_fuseLiterals,1457 &feature_rdm,
1348 &feature_pan,
1349 &feature_fpArmv8,1458 &feature_fpArmv8,
1350 &feature_lor,1459 &feature_lse,
1351 &feature_ras,
1352 &feature_vh,1460 &feature_vh,
1461 &feature_arithCbzFusion,
1462 &feature_fuseLiterals,
1463 &feature_ccpp,
1464 &feature_lor,
1353 &feature_arithBccFusion,1465 &feature_arithBccFusion,
1466 &feature_ras,
1467 &feature_dotprod,
1468 &feature_fuseCsel,
1469 &feature_zczFp,
1354 &feature_uaops,1470 &feature_uaops,
1471 &feature_zczGp,
1472 &feature_perfmon,
1473 &feature_usePostraScheduler,
1474 &feature_fuseAddress,
1475 &feature_fuseArithLogic,
1476 &feature_customCheapAsMove,
1477 &feature_pan,
1355 },1478 },
1356};1479};
13571480
...@@ -1359,17 +1482,17 @@ pub const cpu_falkor = Cpu{...@@ -1359,17 +1482,17 @@ pub const cpu_falkor = Cpu{
1359 .name = "falkor",1482 .name = "falkor",
1360 .llvm_name = "falkor",1483 .llvm_name = "falkor",
1361 .dependencies = &[_]*const Feature {1484 .dependencies = &[_]*const Feature {
1362 &feature_customCheapAsMove,
1363 &feature_rdm,
1364 &feature_zczGp,
1365 &feature_usePostraScheduler,
1366 &feature_perfmon,
1367 &feature_fpArmv8,
1368 &feature_lslFast,1485 &feature_lslFast,
1369 &feature_zczFp,1486 &feature_perfmon,
1370 &feature_crc,1487 &feature_crc,
1371 &feature_slowStrqroStore,1488 &feature_slowStrqroStore,
1489 &feature_rdm,
1490 &feature_zczFp,
1372 &feature_predictableSelectExpensive,1491 &feature_predictableSelectExpensive,
1492 &feature_customCheapAsMove,
1493 &feature_zczGp,
1494 &feature_fpArmv8,
1495 &feature_usePostraScheduler,
1373 },1496 },
1374};1497};
13751498
...@@ -1391,15 +1514,15 @@ pub const cpu_kryo = Cpu{...@@ -1391,15 +1514,15 @@ pub const cpu_kryo = Cpu{
1391 .name = "kryo",1514 .name = "kryo",
1392 .llvm_name = "kryo",1515 .llvm_name = "kryo",
1393 .dependencies = &[_]*const Feature {1516 .dependencies = &[_]*const Feature {
1394 &feature_customCheapAsMove,
1395 &feature_zczGp,
1396 &feature_usePostraScheduler,
1397 &feature_perfmon,
1398 &feature_fpArmv8,
1399 &feature_lslFast,1517 &feature_lslFast,
1400 &feature_zczFp,1518 &feature_perfmon,
1401 &feature_crc,1519 &feature_crc,
1520 &feature_zczFp,
1402 &feature_predictableSelectExpensive,1521 &feature_predictableSelectExpensive,
1522 &feature_customCheapAsMove,
1523 &feature_zczGp,
1524 &feature_fpArmv8,
1525 &feature_usePostraScheduler,
1403 },1526 },
1404};1527};
14051528
...@@ -1407,19 +1530,19 @@ pub const cpu_neoverseE1 = Cpu{...@@ -1407,19 +1530,19 @@ pub const cpu_neoverseE1 = Cpu{
1407 .name = "neoverse-e1",1530 .name = "neoverse-e1",
1408 .llvm_name = "neoverse-e1",1531 .llvm_name = "neoverse-e1",
1409 .dependencies = &[_]*const Feature {1532 .dependencies = &[_]*const Feature {
1410 &feature_rdm,
1411 &feature_ccpp,
1412 &feature_lse,
1413 &feature_fpArmv8,
1414 &feature_lor,
1415 &feature_ras,1533 &feature_ras,
1416 &feature_vh,
1417 &feature_rcpc,
1418 &feature_dotprod,1534 &feature_dotprod,
1419 &feature_ssbs,1535 &feature_vh,
1420 &feature_uaops,
1421 &feature_crc,1536 &feature_crc,
1422 &feature_pan,1537 &feature_pan,
1538 &feature_ccpp,
1539 &feature_rdm,
1540 &feature_rcpc,
1541 &feature_uaops,
1542 &feature_ssbs,
1543 &feature_fpArmv8,
1544 &feature_lse,
1545 &feature_lor,
1423 },1546 },
1424};1547};
14251548
...@@ -1427,20 +1550,20 @@ pub const cpu_neoverseN1 = Cpu{...@@ -1427,20 +1550,20 @@ pub const cpu_neoverseN1 = Cpu{
1427 .name = "neoverse-n1",1550 .name = "neoverse-n1",
1428 .llvm_name = "neoverse-n1",1551 .llvm_name = "neoverse-n1",
1429 .dependencies = &[_]*const Feature {1552 .dependencies = &[_]*const Feature {
1430 &feature_rdm,
1431 &feature_ccpp,
1432 &feature_lse,
1433 &feature_fpArmv8,
1434 &feature_lor,
1435 &feature_ras,1553 &feature_ras,
1436 &feature_vh,
1437 &feature_rcpc,
1438 &feature_dotprod,1554 &feature_dotprod,
1439 &feature_ssbs,1555 &feature_vh,
1440 &feature_uaops,
1441 &feature_crc,1556 &feature_crc,
1442 &feature_pan,1557 &feature_pan,
1558 &feature_ccpp,
1559 &feature_rdm,
1443 &feature_spe,1560 &feature_spe,
1561 &feature_rcpc,
1562 &feature_uaops,
1563 &feature_ssbs,
1564 &feature_fpArmv8,
1565 &feature_lse,
1566 &feature_lor,
1444 },1567 },
1445};1568};
14461569
...@@ -1448,36 +1571,36 @@ pub const cpu_saphira = Cpu{...@@ -1448,36 +1571,36 @@ pub const cpu_saphira = Cpu{
1448 .name = "saphira",1571 .name = "saphira",
1449 .llvm_name = "saphira",1572 .llvm_name = "saphira",
1450 .dependencies = &[_]*const Feature {1573 .dependencies = &[_]*const Feature {
1451 &feature_customCheapAsMove,1574 &feature_lslFast,
1452 &feature_lse,1575 &feature_crc,
1453 &feature_fmi,1576 &feature_rdm,
1454 &feature_perfmon,
1455 &feature_sel2,
1456 &feature_dotprod,
1457 &feature_am,1577 &feature_am,
1458 &feature_zczFp,
1459 &feature_mpam,1578 &feature_mpam,
1460 &feature_ccpp,1579 &feature_fmi,
1580 &feature_fpArmv8,
1581 &feature_lse,
1461 &feature_dit,1582 &feature_dit,
1462 &feature_tracev84,1583 &feature_vh,
1463 &feature_spe,1584 &feature_ccpp,
1464 &feature_rdm,1585 &feature_sel2,
1465 &feature_zczGp,1586 &feature_lor,
1466 &feature_usePostraScheduler,
1467 &feature_nv,1587 &feature_nv,
1468 &feature_tlbRmi,
1469 &feature_lslFast,
1470 &feature_crc,
1471 &feature_pan,
1472 &feature_ccidx,
1473 &feature_fpArmv8,
1474 &feature_ras,1588 &feature_ras,
1475 &feature_lor,1589 &feature_tlbRmi,
1476 &feature_vh,1590 &feature_dotprod,
1591 &feature_zczFp,
1592 &feature_spe,
1477 &feature_rcpc,1593 &feature_rcpc,
1594 &feature_predictableSelectExpensive,
1478 &feature_uaops,1595 &feature_uaops,
1596 &feature_zczGp,
1597 &feature_perfmon,
1598 &feature_usePostraScheduler,
1479 &feature_pa,1599 &feature_pa,
1480 &feature_predictableSelectExpensive,1600 &feature_ccidx,
1601 &feature_customCheapAsMove,
1602 &feature_pan,
1603 &feature_tracev84,
1481 },1604 },
1482};1605};
14831606
...@@ -1485,11 +1608,11 @@ pub const cpu_thunderx = Cpu{...@@ -1485,11 +1608,11 @@ pub const cpu_thunderx = Cpu{
1485 .name = "thunderx",1608 .name = "thunderx",
1486 .llvm_name = "thunderx",1609 .llvm_name = "thunderx",
1487 .dependencies = &[_]*const Feature {1610 .dependencies = &[_]*const Feature {
1488 &feature_usePostraScheduler,
1489 &feature_perfmon,1611 &feature_perfmon,
1490 &feature_fpArmv8,
1491 &feature_crc,1612 &feature_crc,
1492 &feature_predictableSelectExpensive,1613 &feature_predictableSelectExpensive,
1614 &feature_fpArmv8,
1615 &feature_usePostraScheduler,
1493 },1616 },
1494};1617};
14951618
...@@ -1497,17 +1620,17 @@ pub const cpu_thunderx2t99 = Cpu{...@@ -1497,17 +1620,17 @@ pub const cpu_thunderx2t99 = Cpu{
1497 .name = "thunderx2t99",1620 .name = "thunderx2t99",
1498 .llvm_name = "thunderx2t99",1621 .llvm_name = "thunderx2t99",
1499 .dependencies = &[_]*const Feature {1622 .dependencies = &[_]*const Feature {
1500 &feature_rdm,
1501 &feature_lse,
1502 &feature_usePostraScheduler,
1503 &feature_aggressiveFma,1623 &feature_aggressiveFma,
1504 &feature_fpArmv8,
1505 &feature_lor,
1506 &feature_vh,1624 &feature_vh,
1507 &feature_arithBccFusion,
1508 &feature_crc,1625 &feature_crc,
1509 &feature_pan,1626 &feature_pan,
1627 &feature_rdm,
1510 &feature_predictableSelectExpensive,1628 &feature_predictableSelectExpensive,
1629 &feature_fpArmv8,
1630 &feature_lse,
1631 &feature_lor,
1632 &feature_usePostraScheduler,
1633 &feature_arithBccFusion,
1511 },1634 },
1512};1635};
15131636
...@@ -1515,11 +1638,11 @@ pub const cpu_thunderxt81 = Cpu{...@@ -1515,11 +1638,11 @@ pub const cpu_thunderxt81 = Cpu{
1515 .name = "thunderxt81",1638 .name = "thunderxt81",
1516 .llvm_name = "thunderxt81",1639 .llvm_name = "thunderxt81",
1517 .dependencies = &[_]*const Feature {1640 .dependencies = &[_]*const Feature {
1518 &feature_usePostraScheduler,
1519 &feature_perfmon,1641 &feature_perfmon,
1520 &feature_fpArmv8,
1521 &feature_crc,1642 &feature_crc,
1522 &feature_predictableSelectExpensive,1643 &feature_predictableSelectExpensive,
1644 &feature_fpArmv8,
1645 &feature_usePostraScheduler,
1523 },1646 },
1524};1647};
15251648
...@@ -1527,11 +1650,11 @@ pub const cpu_thunderxt83 = Cpu{...@@ -1527,11 +1650,11 @@ pub const cpu_thunderxt83 = Cpu{
1527 .name = "thunderxt83",1650 .name = "thunderxt83",
1528 .llvm_name = "thunderxt83",1651 .llvm_name = "thunderxt83",
1529 .dependencies = &[_]*const Feature {1652 .dependencies = &[_]*const Feature {
1530 &feature_usePostraScheduler,
1531 &feature_perfmon,1653 &feature_perfmon,
1532 &feature_fpArmv8,
1533 &feature_crc,1654 &feature_crc,
1534 &feature_predictableSelectExpensive,1655 &feature_predictableSelectExpensive,
1656 &feature_fpArmv8,
1657 &feature_usePostraScheduler,
1535 },1658 },
1536};1659};
15371660
...@@ -1539,11 +1662,11 @@ pub const cpu_thunderxt88 = Cpu{...@@ -1539,11 +1662,11 @@ pub const cpu_thunderxt88 = Cpu{
1539 .name = "thunderxt88",1662 .name = "thunderxt88",
1540 .llvm_name = "thunderxt88",1663 .llvm_name = "thunderxt88",
1541 .dependencies = &[_]*const Feature {1664 .dependencies = &[_]*const Feature {
1542 &feature_usePostraScheduler,
1543 &feature_perfmon,1665 &feature_perfmon,
1544 &feature_fpArmv8,
1545 &feature_crc,1666 &feature_crc,
1546 &feature_predictableSelectExpensive,1667 &feature_predictableSelectExpensive,
1668 &feature_fpArmv8,
1669 &feature_usePostraScheduler,
1547 },1670 },
1548};1671};
15491672
...@@ -1551,22 +1674,22 @@ pub const cpu_tsv110 = Cpu{...@@ -1551,22 +1674,22 @@ pub const cpu_tsv110 = Cpu{
1551 .name = "tsv110",1674 .name = "tsv110",
1552 .llvm_name = "tsv110",1675 .llvm_name = "tsv110",
1553 .dependencies = &[_]*const Feature {1676 .dependencies = &[_]*const Feature {
1554 &feature_customCheapAsMove,
1555 &feature_rdm,
1556 &feature_ccpp,
1557 &feature_fuseAes,1677 &feature_fuseAes,
1558 &feature_lse,
1559 &feature_usePostraScheduler,
1560 &feature_perfmon,
1561 &feature_fpArmv8,1678 &feature_fpArmv8,
1562 &feature_lor,
1563 &feature_ras,1679 &feature_ras,
1564 &feature_vh,
1565 &feature_dotprod,1680 &feature_dotprod,
1566 &feature_uaops,1681 &feature_vh,
1567 &feature_crc,1682 &feature_crc,
1568 &feature_pan,1683 &feature_pan,
1684 &feature_ccpp,
1685 &feature_rdm,
1569 &feature_spe,1686 &feature_spe,
1687 &feature_uaops,
1688 &feature_customCheapAsMove,
1689 &feature_perfmon,
1690 &feature_lse,
1691 &feature_lor,
1692 &feature_usePostraScheduler,
1570 },1693 },
1571};1694};
15721695
lib/std/target/amdgpu.zig+570-467
...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
4pub const feature_BitInsts16 = Feature{4pub const feature_BitInsts16 = Feature{
5 .name = "16-bit-insts",5 .name = "16-bit-insts",
6 .llvm_name = "16-bit-insts",
6 .description = "Has i16/f16 instructions",7 .description = "Has i16/f16 instructions",
7 .dependencies = &[_]*const Feature {8 .dependencies = &[_]*const Feature {
8 },9 },
...@@ -10,6 +11,7 @@ pub const feature_BitInsts16 = Feature{...@@ -10,6 +11,7 @@ pub const feature_BitInsts16 = Feature{
1011
11pub const feature_addNoCarryInsts = Feature{12pub const feature_addNoCarryInsts = Feature{
12 .name = "add-no-carry-insts",13 .name = "add-no-carry-insts",
14 .llvm_name = "add-no-carry-insts",
13 .description = "Have VALU add/sub instructions without carry out",15 .description = "Have VALU add/sub instructions without carry out",
14 .dependencies = &[_]*const Feature {16 .dependencies = &[_]*const Feature {
15 },17 },
...@@ -17,6 +19,7 @@ pub const feature_addNoCarryInsts = Feature{...@@ -17,6 +19,7 @@ pub const feature_addNoCarryInsts = Feature{
1719
18pub const feature_apertureRegs = Feature{20pub const feature_apertureRegs = Feature{
19 .name = "aperture-regs",21 .name = "aperture-regs",
22 .llvm_name = "aperture-regs",
20 .description = "Has Memory Aperture Base and Size Registers",23 .description = "Has Memory Aperture Base and Size Registers",
21 .dependencies = &[_]*const Feature {24 .dependencies = &[_]*const Feature {
22 },25 },
...@@ -24,6 +27,7 @@ pub const feature_apertureRegs = Feature{...@@ -24,6 +27,7 @@ pub const feature_apertureRegs = Feature{
2427
25pub const feature_atomicFaddInsts = Feature{28pub const feature_atomicFaddInsts = Feature{
26 .name = "atomic-fadd-insts",29 .name = "atomic-fadd-insts",
30 .llvm_name = "atomic-fadd-insts",
27 .description = "Has buffer_atomic_add_f32, buffer_atomic_pk_add_f16, global_atomic_add_f32, global_atomic_pk_add_f16 instructions",31 .description = "Has buffer_atomic_add_f32, buffer_atomic_pk_add_f16, global_atomic_add_f32, global_atomic_pk_add_f16 instructions",
28 .dependencies = &[_]*const Feature {32 .dependencies = &[_]*const Feature {
29 },33 },
...@@ -31,6 +35,7 @@ pub const feature_atomicFaddInsts = Feature{...@@ -31,6 +35,7 @@ pub const feature_atomicFaddInsts = Feature{
3135
32pub const feature_autoWaitcntBeforeBarrier = Feature{36pub const feature_autoWaitcntBeforeBarrier = Feature{
33 .name = "auto-waitcnt-before-barrier",37 .name = "auto-waitcnt-before-barrier",
38 .llvm_name = "auto-waitcnt-before-barrier",
34 .description = "Hardware automatically inserts waitcnt before barrier",39 .description = "Hardware automatically inserts waitcnt before barrier",
35 .dependencies = &[_]*const Feature {40 .dependencies = &[_]*const Feature {
36 },41 },
...@@ -38,6 +43,7 @@ pub const feature_autoWaitcntBeforeBarrier = Feature{...@@ -38,6 +43,7 @@ pub const feature_autoWaitcntBeforeBarrier = Feature{
3843
39pub const feature_ciInsts = Feature{44pub const feature_ciInsts = Feature{
40 .name = "ci-insts",45 .name = "ci-insts",
46 .llvm_name = "ci-insts",
41 .description = "Additional instructions for CI+",47 .description = "Additional instructions for CI+",
42 .dependencies = &[_]*const Feature {48 .dependencies = &[_]*const Feature {
43 },49 },
...@@ -45,6 +51,7 @@ pub const feature_ciInsts = Feature{...@@ -45,6 +51,7 @@ pub const feature_ciInsts = Feature{
4551
46pub const feature_codeObjectV3 = Feature{52pub const feature_codeObjectV3 = Feature{
47 .name = "code-object-v3",53 .name = "code-object-v3",
54 .llvm_name = "code-object-v3",
48 .description = "Generate code object version 3",55 .description = "Generate code object version 3",
49 .dependencies = &[_]*const Feature {56 .dependencies = &[_]*const Feature {
50 },57 },
...@@ -52,6 +59,7 @@ pub const feature_codeObjectV3 = Feature{...@@ -52,6 +59,7 @@ pub const feature_codeObjectV3 = Feature{
5259
53pub const feature_cumode = Feature{60pub const feature_cumode = Feature{
54 .name = "cumode",61 .name = "cumode",
62 .llvm_name = "cumode",
55 .description = "Enable CU wavefront execution mode",63 .description = "Enable CU wavefront execution mode",
56 .dependencies = &[_]*const Feature {64 .dependencies = &[_]*const Feature {
57 },65 },
...@@ -59,6 +67,7 @@ pub const feature_cumode = Feature{...@@ -59,6 +67,7 @@ pub const feature_cumode = Feature{
5967
60pub const feature_dlInsts = Feature{68pub const feature_dlInsts = Feature{
61 .name = "dl-insts",69 .name = "dl-insts",
70 .llvm_name = "dl-insts",
62 .description = "Has v_fmac_f32 and v_xnor_b32 instructions",71 .description = "Has v_fmac_f32 and v_xnor_b32 instructions",
63 .dependencies = &[_]*const Feature {72 .dependencies = &[_]*const Feature {
64 },73 },
...@@ -66,6 +75,7 @@ pub const feature_dlInsts = Feature{...@@ -66,6 +75,7 @@ pub const feature_dlInsts = Feature{
6675
67pub const feature_dpp = Feature{76pub const feature_dpp = Feature{
68 .name = "dpp",77 .name = "dpp",
78 .llvm_name = "dpp",
69 .description = "Support DPP (Data Parallel Primitives) extension",79 .description = "Support DPP (Data Parallel Primitives) extension",
70 .dependencies = &[_]*const Feature {80 .dependencies = &[_]*const Feature {
71 },81 },
...@@ -73,6 +83,7 @@ pub const feature_dpp = Feature{...@@ -73,6 +83,7 @@ pub const feature_dpp = Feature{
7383
74pub const feature_dpp8 = Feature{84pub const feature_dpp8 = Feature{
75 .name = "dpp8",85 .name = "dpp8",
86 .llvm_name = "dpp8",
76 .description = "Support DPP8 (Data Parallel Primitives) extension",87 .description = "Support DPP8 (Data Parallel Primitives) extension",
77 .dependencies = &[_]*const Feature {88 .dependencies = &[_]*const Feature {
78 },89 },
...@@ -80,6 +91,7 @@ pub const feature_dpp8 = Feature{...@@ -80,6 +91,7 @@ pub const feature_dpp8 = Feature{
8091
81pub const feature_noSramEccSupport = Feature{92pub const feature_noSramEccSupport = Feature{
82 .name = "no-sram-ecc-support",93 .name = "no-sram-ecc-support",
94 .llvm_name = "no-sram-ecc-support",
83 .description = "Hardware does not support SRAM ECC",95 .description = "Hardware does not support SRAM ECC",
84 .dependencies = &[_]*const Feature {96 .dependencies = &[_]*const Feature {
85 },97 },
...@@ -87,6 +99,7 @@ pub const feature_noSramEccSupport = Feature{...@@ -87,6 +99,7 @@ pub const feature_noSramEccSupport = Feature{
8799
88pub const feature_noXnackSupport = Feature{100pub const feature_noXnackSupport = Feature{
89 .name = "no-xnack-support",101 .name = "no-xnack-support",
102 .llvm_name = "no-xnack-support",
90 .description = "Hardware does not support XNACK",103 .description = "Hardware does not support XNACK",
91 .dependencies = &[_]*const Feature {104 .dependencies = &[_]*const Feature {
92 },105 },
...@@ -94,6 +107,7 @@ pub const feature_noXnackSupport = Feature{...@@ -94,6 +107,7 @@ pub const feature_noXnackSupport = Feature{
94107
95pub const feature_dot1Insts = Feature{108pub const feature_dot1Insts = Feature{
96 .name = "dot1-insts",109 .name = "dot1-insts",
110 .llvm_name = "dot1-insts",
97 .description = "Has v_dot4_i32_i8 and v_dot8_i32_i4 instructions",111 .description = "Has v_dot4_i32_i8 and v_dot8_i32_i4 instructions",
98 .dependencies = &[_]*const Feature {112 .dependencies = &[_]*const Feature {
99 },113 },
...@@ -101,6 +115,7 @@ pub const feature_dot1Insts = Feature{...@@ -101,6 +115,7 @@ pub const feature_dot1Insts = Feature{
101115
102pub const feature_dot2Insts = Feature{116pub const feature_dot2Insts = Feature{
103 .name = "dot2-insts",117 .name = "dot2-insts",
118 .llvm_name = "dot2-insts",
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 .description = "Has v_dot2_f32_f16, v_dot2_i32_i16, v_dot2_u32_u16, v_dot4_u32_u8, v_dot8_u32_u4 instructions",
105 .dependencies = &[_]*const Feature {120 .dependencies = &[_]*const Feature {
106 },121 },
...@@ -108,6 +123,7 @@ pub const feature_dot2Insts = Feature{...@@ -108,6 +123,7 @@ pub const feature_dot2Insts = Feature{
108123
109pub const feature_dot3Insts = Feature{124pub const feature_dot3Insts = Feature{
110 .name = "dot3-insts",125 .name = "dot3-insts",
126 .llvm_name = "dot3-insts",
111 .description = "Has v_dot8c_i32_i4 instruction",127 .description = "Has v_dot8c_i32_i4 instruction",
112 .dependencies = &[_]*const Feature {128 .dependencies = &[_]*const Feature {
113 },129 },
...@@ -115,6 +131,7 @@ pub const feature_dot3Insts = Feature{...@@ -115,6 +131,7 @@ pub const feature_dot3Insts = Feature{
115131
116pub const feature_dot4Insts = Feature{132pub const feature_dot4Insts = Feature{
117 .name = "dot4-insts",133 .name = "dot4-insts",
134 .llvm_name = "dot4-insts",
118 .description = "Has v_dot2c_i32_i16 instruction",135 .description = "Has v_dot2c_i32_i16 instruction",
119 .dependencies = &[_]*const Feature {136 .dependencies = &[_]*const Feature {
120 },137 },
...@@ -122,6 +139,7 @@ pub const feature_dot4Insts = Feature{...@@ -122,6 +139,7 @@ pub const feature_dot4Insts = Feature{
122139
123pub const feature_dot5Insts = Feature{140pub const feature_dot5Insts = Feature{
124 .name = "dot5-insts",141 .name = "dot5-insts",
142 .llvm_name = "dot5-insts",
125 .description = "Has v_dot2c_f32_f16 instruction",143 .description = "Has v_dot2c_f32_f16 instruction",
126 .dependencies = &[_]*const Feature {144 .dependencies = &[_]*const Feature {
127 },145 },
...@@ -129,6 +147,7 @@ pub const feature_dot5Insts = Feature{...@@ -129,6 +147,7 @@ pub const feature_dot5Insts = Feature{
129147
130pub const feature_dot6Insts = Feature{148pub const feature_dot6Insts = Feature{
131 .name = "dot6-insts",149 .name = "dot6-insts",
150 .llvm_name = "dot6-insts",
132 .description = "Has v_dot4c_i32_i8 instruction",151 .description = "Has v_dot4c_i32_i8 instruction",
133 .dependencies = &[_]*const Feature {152 .dependencies = &[_]*const Feature {
134 },153 },
...@@ -136,6 +155,7 @@ pub const feature_dot6Insts = Feature{...@@ -136,6 +155,7 @@ pub const feature_dot6Insts = Feature{
136155
137pub const feature_DumpCode = Feature{156pub const feature_DumpCode = Feature{
138 .name = "DumpCode",157 .name = "DumpCode",
158 .llvm_name = "DumpCode",
139 .description = "Dump MachineInstrs in the CodeEmitter",159 .description = "Dump MachineInstrs in the CodeEmitter",
140 .dependencies = &[_]*const Feature {160 .dependencies = &[_]*const Feature {
141 },161 },
...@@ -143,6 +163,7 @@ pub const feature_DumpCode = Feature{...@@ -143,6 +163,7 @@ pub const feature_DumpCode = Feature{
143163
144pub const feature_dumpcode = Feature{164pub const feature_dumpcode = Feature{
145 .name = "dumpcode",165 .name = "dumpcode",
166 .llvm_name = "dumpcode",
146 .description = "Dump MachineInstrs in the CodeEmitter",167 .description = "Dump MachineInstrs in the CodeEmitter",
147 .dependencies = &[_]*const Feature {168 .dependencies = &[_]*const Feature {
148 },169 },
...@@ -150,6 +171,7 @@ pub const feature_dumpcode = Feature{...@@ -150,6 +171,7 @@ pub const feature_dumpcode = Feature{
150171
151pub const feature_enableDs128 = Feature{172pub const feature_enableDs128 = Feature{
152 .name = "enable-ds128",173 .name = "enable-ds128",
174 .llvm_name = "enable-ds128",
153 .description = "Use ds_{read|write}_b128",175 .description = "Use ds_{read|write}_b128",
154 .dependencies = &[_]*const Feature {176 .dependencies = &[_]*const Feature {
155 },177 },
...@@ -157,6 +179,7 @@ pub const feature_enableDs128 = Feature{...@@ -157,6 +179,7 @@ pub const feature_enableDs128 = Feature{
157179
158pub const feature_loadStoreOpt = Feature{180pub const feature_loadStoreOpt = Feature{
159 .name = "load-store-opt",181 .name = "load-store-opt",
182 .llvm_name = "load-store-opt",
160 .description = "Enable SI load/store optimizer pass",183 .description = "Enable SI load/store optimizer pass",
161 .dependencies = &[_]*const Feature {184 .dependencies = &[_]*const Feature {
162 },185 },
...@@ -164,6 +187,7 @@ pub const feature_loadStoreOpt = Feature{...@@ -164,6 +187,7 @@ pub const feature_loadStoreOpt = Feature{
164187
165pub const feature_enablePrtStrictNull = Feature{188pub const feature_enablePrtStrictNull = Feature{
166 .name = "enable-prt-strict-null",189 .name = "enable-prt-strict-null",
190 .llvm_name = "enable-prt-strict-null",
167 .description = "Enable zeroing of result registers for sparse texture fetches",191 .description = "Enable zeroing of result registers for sparse texture fetches",
168 .dependencies = &[_]*const Feature {192 .dependencies = &[_]*const Feature {
169 },193 },
...@@ -171,6 +195,7 @@ pub const feature_enablePrtStrictNull = Feature{...@@ -171,6 +195,7 @@ pub const feature_enablePrtStrictNull = Feature{
171195
172pub const feature_siScheduler = Feature{196pub const feature_siScheduler = Feature{
173 .name = "si-scheduler",197 .name = "si-scheduler",
198 .llvm_name = "si-scheduler",
174 .description = "Enable SI Machine Scheduler",199 .description = "Enable SI Machine Scheduler",
175 .dependencies = &[_]*const Feature {200 .dependencies = &[_]*const Feature {
176 },201 },
...@@ -178,6 +203,7 @@ pub const feature_siScheduler = Feature{...@@ -178,6 +203,7 @@ pub const feature_siScheduler = Feature{
178203
179pub const feature_unsafeDsOffsetFolding = Feature{204pub const feature_unsafeDsOffsetFolding = Feature{
180 .name = "unsafe-ds-offset-folding",205 .name = "unsafe-ds-offset-folding",
206 .llvm_name = "unsafe-ds-offset-folding",
181 .description = "Force using DS instruction immediate offsets on SI",207 .description = "Force using DS instruction immediate offsets on SI",
182 .dependencies = &[_]*const Feature {208 .dependencies = &[_]*const Feature {
183 },209 },
...@@ -185,6 +211,7 @@ pub const feature_unsafeDsOffsetFolding = Feature{...@@ -185,6 +211,7 @@ pub const feature_unsafeDsOffsetFolding = Feature{
185211
186pub const feature_fmaf = Feature{212pub const feature_fmaf = Feature{
187 .name = "fmaf",213 .name = "fmaf",
214 .llvm_name = "fmaf",
188 .description = "Enable single precision FMA (not as fast as mul+add, but fused)",215 .description = "Enable single precision FMA (not as fast as mul+add, but fused)",
189 .dependencies = &[_]*const Feature {216 .dependencies = &[_]*const Feature {
190 },217 },
...@@ -192,6 +219,7 @@ pub const feature_fmaf = Feature{...@@ -192,6 +219,7 @@ pub const feature_fmaf = Feature{
192219
193pub const feature_fp16Denormals = Feature{220pub const feature_fp16Denormals = Feature{
194 .name = "fp16-denormals",221 .name = "fp16-denormals",
222 .llvm_name = "fp16-denormals",
195 .description = "Enable half precision denormal handling",223 .description = "Enable half precision denormal handling",
196 .dependencies = &[_]*const Feature {224 .dependencies = &[_]*const Feature {
197 &feature_fp64,225 &feature_fp64,
...@@ -200,6 +228,7 @@ pub const feature_fp16Denormals = Feature{...@@ -200,6 +228,7 @@ pub const feature_fp16Denormals = Feature{
200228
201pub const feature_fp32Denormals = Feature{229pub const feature_fp32Denormals = Feature{
202 .name = "fp32-denormals",230 .name = "fp32-denormals",
231 .llvm_name = "fp32-denormals",
203 .description = "Enable single precision denormal handling",232 .description = "Enable single precision denormal handling",
204 .dependencies = &[_]*const Feature {233 .dependencies = &[_]*const Feature {
205 },234 },
...@@ -207,6 +236,7 @@ pub const feature_fp32Denormals = Feature{...@@ -207,6 +236,7 @@ pub const feature_fp32Denormals = Feature{
207236
208pub const feature_fp64 = Feature{237pub const feature_fp64 = Feature{
209 .name = "fp64",238 .name = "fp64",
239 .llvm_name = "fp64",
210 .description = "Enable double precision operations",240 .description = "Enable double precision operations",
211 .dependencies = &[_]*const Feature {241 .dependencies = &[_]*const Feature {
212 },242 },
...@@ -214,6 +244,7 @@ pub const feature_fp64 = Feature{...@@ -214,6 +244,7 @@ pub const feature_fp64 = Feature{
214244
215pub const feature_fp64Denormals = Feature{245pub const feature_fp64Denormals = Feature{
216 .name = "fp64-denormals",246 .name = "fp64-denormals",
247 .llvm_name = "fp64-denormals",
217 .description = "Enable double and half precision denormal handling",248 .description = "Enable double and half precision denormal handling",
218 .dependencies = &[_]*const Feature {249 .dependencies = &[_]*const Feature {
219 &feature_fp64,250 &feature_fp64,
...@@ -222,6 +253,7 @@ pub const feature_fp64Denormals = Feature{...@@ -222,6 +253,7 @@ pub const feature_fp64Denormals = Feature{
222253
223pub const feature_fp64Fp16Denormals = Feature{254pub const feature_fp64Fp16Denormals = Feature{
224 .name = "fp64-fp16-denormals",255 .name = "fp64-fp16-denormals",
256 .llvm_name = "fp64-fp16-denormals",
225 .description = "Enable double and half precision denormal handling",257 .description = "Enable double and half precision denormal handling",
226 .dependencies = &[_]*const Feature {258 .dependencies = &[_]*const Feature {
227 &feature_fp64,259 &feature_fp64,
...@@ -230,6 +262,7 @@ pub const feature_fp64Fp16Denormals = Feature{...@@ -230,6 +262,7 @@ pub const feature_fp64Fp16Denormals = Feature{
230262
231pub const feature_fpExceptions = Feature{263pub const feature_fpExceptions = Feature{
232 .name = "fp-exceptions",264 .name = "fp-exceptions",
265 .llvm_name = "fp-exceptions",
233 .description = "Enable floating point exceptions",266 .description = "Enable floating point exceptions",
234 .dependencies = &[_]*const Feature {267 .dependencies = &[_]*const Feature {
235 },268 },
...@@ -237,6 +270,7 @@ pub const feature_fpExceptions = Feature{...@@ -237,6 +270,7 @@ pub const feature_fpExceptions = Feature{
237270
238pub const feature_fastFmaf = Feature{271pub const feature_fastFmaf = Feature{
239 .name = "fast-fmaf",272 .name = "fast-fmaf",
273 .llvm_name = "fast-fmaf",
240 .description = "Assuming f32 fma is at least as fast as mul + add",274 .description = "Assuming f32 fma is at least as fast as mul + add",
241 .dependencies = &[_]*const Feature {275 .dependencies = &[_]*const Feature {
242 },276 },
...@@ -244,6 +278,7 @@ pub const feature_fastFmaf = Feature{...@@ -244,6 +278,7 @@ pub const feature_fastFmaf = Feature{
244278
245pub const feature_flatAddressSpace = Feature{279pub const feature_flatAddressSpace = Feature{
246 .name = "flat-address-space",280 .name = "flat-address-space",
281 .llvm_name = "flat-address-space",
247 .description = "Support flat address space",282 .description = "Support flat address space",
248 .dependencies = &[_]*const Feature {283 .dependencies = &[_]*const Feature {
249 },284 },
...@@ -251,6 +286,7 @@ pub const feature_flatAddressSpace = Feature{...@@ -251,6 +286,7 @@ pub const feature_flatAddressSpace = Feature{
251286
252pub const feature_flatForGlobal = Feature{287pub const feature_flatForGlobal = Feature{
253 .name = "flat-for-global",288 .name = "flat-for-global",
289 .llvm_name = "flat-for-global",
254 .description = "Force to generate flat instruction for global",290 .description = "Force to generate flat instruction for global",
255 .dependencies = &[_]*const Feature {291 .dependencies = &[_]*const Feature {
256 },292 },
...@@ -258,6 +294,7 @@ pub const feature_flatForGlobal = Feature{...@@ -258,6 +294,7 @@ pub const feature_flatForGlobal = Feature{
258294
259pub const feature_flatGlobalInsts = Feature{295pub const feature_flatGlobalInsts = Feature{
260 .name = "flat-global-insts",296 .name = "flat-global-insts",
297 .llvm_name = "flat-global-insts",
261 .description = "Have global_* flat memory instructions",298 .description = "Have global_* flat memory instructions",
262 .dependencies = &[_]*const Feature {299 .dependencies = &[_]*const Feature {
263 },300 },
...@@ -265,6 +302,7 @@ pub const feature_flatGlobalInsts = Feature{...@@ -265,6 +302,7 @@ pub const feature_flatGlobalInsts = Feature{
265302
266pub const feature_flatInstOffsets = Feature{303pub const feature_flatInstOffsets = Feature{
267 .name = "flat-inst-offsets",304 .name = "flat-inst-offsets",
305 .llvm_name = "flat-inst-offsets",
268 .description = "Flat instructions have immediate offset addressing mode",306 .description = "Flat instructions have immediate offset addressing mode",
269 .dependencies = &[_]*const Feature {307 .dependencies = &[_]*const Feature {
270 },308 },
...@@ -272,6 +310,7 @@ pub const feature_flatInstOffsets = Feature{...@@ -272,6 +310,7 @@ pub const feature_flatInstOffsets = Feature{
272310
273pub const feature_flatScratchInsts = Feature{311pub const feature_flatScratchInsts = Feature{
274 .name = "flat-scratch-insts",312 .name = "flat-scratch-insts",
313 .llvm_name = "flat-scratch-insts",
275 .description = "Have scratch_* flat memory instructions",314 .description = "Have scratch_* flat memory instructions",
276 .dependencies = &[_]*const Feature {315 .dependencies = &[_]*const Feature {
277 },316 },
...@@ -279,6 +318,7 @@ pub const feature_flatScratchInsts = Feature{...@@ -279,6 +318,7 @@ pub const feature_flatScratchInsts = Feature{
279318
280pub const feature_flatSegmentOffsetBug = Feature{319pub const feature_flatSegmentOffsetBug = Feature{
281 .name = "flat-segment-offset-bug",320 .name = "flat-segment-offset-bug",
321 .llvm_name = "flat-segment-offset-bug",
282 .description = "GFX10 bug, inst_offset ignored in flat segment",322 .description = "GFX10 bug, inst_offset ignored in flat segment",
283 .dependencies = &[_]*const Feature {323 .dependencies = &[_]*const Feature {
284 },324 },
...@@ -286,6 +326,7 @@ pub const feature_flatSegmentOffsetBug = Feature{...@@ -286,6 +326,7 @@ pub const feature_flatSegmentOffsetBug = Feature{
286326
287pub const feature_fmaMixInsts = Feature{327pub const feature_fmaMixInsts = Feature{
288 .name = "fma-mix-insts",328 .name = "fma-mix-insts",
329 .llvm_name = "fma-mix-insts",
289 .description = "Has v_fma_mix_f32, v_fma_mixlo_f16, v_fma_mixhi_f16 instructions",330 .description = "Has v_fma_mix_f32, v_fma_mixlo_f16, v_fma_mixhi_f16 instructions",
290 .dependencies = &[_]*const Feature {331 .dependencies = &[_]*const Feature {
291 },332 },
...@@ -293,6 +334,7 @@ pub const feature_fmaMixInsts = Feature{...@@ -293,6 +334,7 @@ pub const feature_fmaMixInsts = Feature{
293334
294pub const feature_gcn3Encoding = Feature{335pub const feature_gcn3Encoding = Feature{
295 .name = "gcn3-encoding",336 .name = "gcn3-encoding",
337 .llvm_name = "gcn3-encoding",
296 .description = "Encoding format for VI",338 .description = "Encoding format for VI",
297 .dependencies = &[_]*const Feature {339 .dependencies = &[_]*const Feature {
298 },340 },
...@@ -300,6 +342,7 @@ pub const feature_gcn3Encoding = Feature{...@@ -300,6 +342,7 @@ pub const feature_gcn3Encoding = Feature{
300342
301pub const feature_gfx7Gfx8Gfx9Insts = Feature{343pub const feature_gfx7Gfx8Gfx9Insts = Feature{
302 .name = "gfx7-gfx8-gfx9-insts",344 .name = "gfx7-gfx8-gfx9-insts",
345 .llvm_name = "gfx7-gfx8-gfx9-insts",
303 .description = "Instructions shared in GFX7, GFX8, GFX9",346 .description = "Instructions shared in GFX7, GFX8, GFX9",
304 .dependencies = &[_]*const Feature {347 .dependencies = &[_]*const Feature {
305 },348 },
...@@ -307,6 +350,7 @@ pub const feature_gfx7Gfx8Gfx9Insts = Feature{...@@ -307,6 +350,7 @@ pub const feature_gfx7Gfx8Gfx9Insts = Feature{
307350
308pub const feature_gfx8Insts = Feature{351pub const feature_gfx8Insts = Feature{
309 .name = "gfx8-insts",352 .name = "gfx8-insts",
353 .llvm_name = "gfx8-insts",
310 .description = "Additional instructions for GFX8+",354 .description = "Additional instructions for GFX8+",
311 .dependencies = &[_]*const Feature {355 .dependencies = &[_]*const Feature {
312 },356 },
...@@ -314,6 +358,7 @@ pub const feature_gfx8Insts = Feature{...@@ -314,6 +358,7 @@ pub const feature_gfx8Insts = Feature{
314358
315pub const feature_gfx9Insts = Feature{359pub const feature_gfx9Insts = Feature{
316 .name = "gfx9-insts",360 .name = "gfx9-insts",
361 .llvm_name = "gfx9-insts",
317 .description = "Additional instructions for GFX9+",362 .description = "Additional instructions for GFX9+",
318 .dependencies = &[_]*const Feature {363 .dependencies = &[_]*const Feature {
319 },364 },
...@@ -321,6 +366,7 @@ pub const feature_gfx9Insts = Feature{...@@ -321,6 +366,7 @@ pub const feature_gfx9Insts = Feature{
321366
322pub const feature_gfx10Insts = Feature{367pub const feature_gfx10Insts = Feature{
323 .name = "gfx10-insts",368 .name = "gfx10-insts",
369 .llvm_name = "gfx10-insts",
324 .description = "Additional instructions for GFX10+",370 .description = "Additional instructions for GFX10+",
325 .dependencies = &[_]*const Feature {371 .dependencies = &[_]*const Feature {
326 },372 },
...@@ -328,6 +374,7 @@ pub const feature_gfx10Insts = Feature{...@@ -328,6 +374,7 @@ pub const feature_gfx10Insts = Feature{
328374
329pub const feature_instFwdPrefetchBug = Feature{375pub const feature_instFwdPrefetchBug = Feature{
330 .name = "inst-fwd-prefetch-bug",376 .name = "inst-fwd-prefetch-bug",
377 .llvm_name = "inst-fwd-prefetch-bug",
331 .description = "S_INST_PREFETCH instruction causes shader to hang",378 .description = "S_INST_PREFETCH instruction causes shader to hang",
332 .dependencies = &[_]*const Feature {379 .dependencies = &[_]*const Feature {
333 },380 },
...@@ -335,6 +382,7 @@ pub const feature_instFwdPrefetchBug = Feature{...@@ -335,6 +382,7 @@ pub const feature_instFwdPrefetchBug = Feature{
335382
336pub const feature_intClampInsts = Feature{383pub const feature_intClampInsts = Feature{
337 .name = "int-clamp-insts",384 .name = "int-clamp-insts",
385 .llvm_name = "int-clamp-insts",
338 .description = "Support clamp for integer destination",386 .description = "Support clamp for integer destination",
339 .dependencies = &[_]*const Feature {387 .dependencies = &[_]*const Feature {
340 },388 },
...@@ -342,6 +390,7 @@ pub const feature_intClampInsts = Feature{...@@ -342,6 +390,7 @@ pub const feature_intClampInsts = Feature{
342390
343pub const feature_inv2piInlineImm = Feature{391pub const feature_inv2piInlineImm = Feature{
344 .name = "inv-2pi-inline-imm",392 .name = "inv-2pi-inline-imm",
393 .llvm_name = "inv-2pi-inline-imm",
345 .description = "Has 1 / (2 * pi) as inline immediate",394 .description = "Has 1 / (2 * pi) as inline immediate",
346 .dependencies = &[_]*const Feature {395 .dependencies = &[_]*const Feature {
347 },396 },
...@@ -349,6 +398,7 @@ pub const feature_inv2piInlineImm = Feature{...@@ -349,6 +398,7 @@ pub const feature_inv2piInlineImm = Feature{
349398
350pub const feature_ldsbankcount16 = Feature{399pub const feature_ldsbankcount16 = Feature{
351 .name = "ldsbankcount16",400 .name = "ldsbankcount16",
401 .llvm_name = "ldsbankcount16",
352 .description = "The number of LDS banks per compute unit.",402 .description = "The number of LDS banks per compute unit.",
353 .dependencies = &[_]*const Feature {403 .dependencies = &[_]*const Feature {
354 },404 },
...@@ -356,6 +406,7 @@ pub const feature_ldsbankcount16 = Feature{...@@ -356,6 +406,7 @@ pub const feature_ldsbankcount16 = Feature{
356406
357pub const feature_ldsbankcount32 = Feature{407pub const feature_ldsbankcount32 = Feature{
358 .name = "ldsbankcount32",408 .name = "ldsbankcount32",
409 .llvm_name = "ldsbankcount32",
359 .description = "The number of LDS banks per compute unit.",410 .description = "The number of LDS banks per compute unit.",
360 .dependencies = &[_]*const Feature {411 .dependencies = &[_]*const Feature {
361 },412 },
...@@ -363,6 +414,7 @@ pub const feature_ldsbankcount32 = Feature{...@@ -363,6 +414,7 @@ pub const feature_ldsbankcount32 = Feature{
363414
364pub const feature_ldsBranchVmemWarHazard = Feature{415pub const feature_ldsBranchVmemWarHazard = Feature{
365 .name = "lds-branch-vmem-war-hazard",416 .name = "lds-branch-vmem-war-hazard",
417 .llvm_name = "lds-branch-vmem-war-hazard",
366 .description = "Switching between LDS and VMEM-tex not waiting VM_VSRC=0",418 .description = "Switching between LDS and VMEM-tex not waiting VM_VSRC=0",
367 .dependencies = &[_]*const Feature {419 .dependencies = &[_]*const Feature {
368 },420 },
...@@ -370,6 +422,7 @@ pub const feature_ldsBranchVmemWarHazard = Feature{...@@ -370,6 +422,7 @@ pub const feature_ldsBranchVmemWarHazard = Feature{
370422
371pub const feature_ldsMisalignedBug = Feature{423pub const feature_ldsMisalignedBug = Feature{
372 .name = "lds-misaligned-bug",424 .name = "lds-misaligned-bug",
425 .llvm_name = "lds-misaligned-bug",
373 .description = "Some GFX10 bug with misaligned multi-dword LDS access in WGP mode",426 .description = "Some GFX10 bug with misaligned multi-dword LDS access in WGP mode",
374 .dependencies = &[_]*const Feature {427 .dependencies = &[_]*const Feature {
375 },428 },
...@@ -377,6 +430,7 @@ pub const feature_ldsMisalignedBug = Feature{...@@ -377,6 +430,7 @@ pub const feature_ldsMisalignedBug = Feature{
377430
378pub const feature_localmemorysize0 = Feature{431pub const feature_localmemorysize0 = Feature{
379 .name = "localmemorysize0",432 .name = "localmemorysize0",
433 .llvm_name = "localmemorysize0",
380 .description = "The size of local memory in bytes",434 .description = "The size of local memory in bytes",
381 .dependencies = &[_]*const Feature {435 .dependencies = &[_]*const Feature {
382 },436 },
...@@ -384,6 +438,7 @@ pub const feature_localmemorysize0 = Feature{...@@ -384,6 +438,7 @@ pub const feature_localmemorysize0 = Feature{
384438
385pub const feature_localmemorysize32768 = Feature{439pub const feature_localmemorysize32768 = Feature{
386 .name = "localmemorysize32768",440 .name = "localmemorysize32768",
441 .llvm_name = "localmemorysize32768",
387 .description = "The size of local memory in bytes",442 .description = "The size of local memory in bytes",
388 .dependencies = &[_]*const Feature {443 .dependencies = &[_]*const Feature {
389 },444 },
...@@ -391,6 +446,7 @@ pub const feature_localmemorysize32768 = Feature{...@@ -391,6 +446,7 @@ pub const feature_localmemorysize32768 = Feature{
391446
392pub const feature_localmemorysize65536 = Feature{447pub const feature_localmemorysize65536 = Feature{
393 .name = "localmemorysize65536",448 .name = "localmemorysize65536",
449 .llvm_name = "localmemorysize65536",
394 .description = "The size of local memory in bytes",450 .description = "The size of local memory in bytes",
395 .dependencies = &[_]*const Feature {451 .dependencies = &[_]*const Feature {
396 },452 },
...@@ -398,6 +454,7 @@ pub const feature_localmemorysize65536 = Feature{...@@ -398,6 +454,7 @@ pub const feature_localmemorysize65536 = Feature{
398454
399pub const feature_maiInsts = Feature{455pub const feature_maiInsts = Feature{
400 .name = "mai-insts",456 .name = "mai-insts",
457 .llvm_name = "mai-insts",
401 .description = "Has mAI instructions",458 .description = "Has mAI instructions",
402 .dependencies = &[_]*const Feature {459 .dependencies = &[_]*const Feature {
403 },460 },
...@@ -405,6 +462,7 @@ pub const feature_maiInsts = Feature{...@@ -405,6 +462,7 @@ pub const feature_maiInsts = Feature{
405462
406pub const feature_mfmaInlineLiteralBug = Feature{463pub const feature_mfmaInlineLiteralBug = Feature{
407 .name = "mfma-inline-literal-bug",464 .name = "mfma-inline-literal-bug",
465 .llvm_name = "mfma-inline-literal-bug",
408 .description = "MFMA cannot use inline literal as SrcC",466 .description = "MFMA cannot use inline literal as SrcC",
409 .dependencies = &[_]*const Feature {467 .dependencies = &[_]*const Feature {
410 },468 },
...@@ -412,6 +470,7 @@ pub const feature_mfmaInlineLiteralBug = Feature{...@@ -412,6 +470,7 @@ pub const feature_mfmaInlineLiteralBug = Feature{
412470
413pub const feature_mimgR128 = Feature{471pub const feature_mimgR128 = Feature{
414 .name = "mimg-r128",472 .name = "mimg-r128",
473 .llvm_name = "mimg-r128",
415 .description = "Support 128-bit texture resources",474 .description = "Support 128-bit texture resources",
416 .dependencies = &[_]*const Feature {475 .dependencies = &[_]*const Feature {
417 },476 },
...@@ -419,6 +478,7 @@ pub const feature_mimgR128 = Feature{...@@ -419,6 +478,7 @@ pub const feature_mimgR128 = Feature{
419478
420pub const feature_madMixInsts = Feature{479pub const feature_madMixInsts = Feature{
421 .name = "mad-mix-insts",480 .name = "mad-mix-insts",
481 .llvm_name = "mad-mix-insts",
422 .description = "Has v_mad_mix_f32, v_mad_mixlo_f16, v_mad_mixhi_f16 instructions",482 .description = "Has v_mad_mix_f32, v_mad_mixlo_f16, v_mad_mixhi_f16 instructions",
423 .dependencies = &[_]*const Feature {483 .dependencies = &[_]*const Feature {
424 },484 },
...@@ -426,6 +486,7 @@ pub const feature_madMixInsts = Feature{...@@ -426,6 +486,7 @@ pub const feature_madMixInsts = Feature{
426486
427pub const feature_maxPrivateElementSize4 = Feature{487pub const feature_maxPrivateElementSize4 = Feature{
428 .name = "max-private-element-size-4",488 .name = "max-private-element-size-4",
489 .llvm_name = "max-private-element-size-4",
429 .description = "Maximum private access size may be 4",490 .description = "Maximum private access size may be 4",
430 .dependencies = &[_]*const Feature {491 .dependencies = &[_]*const Feature {
431 },492 },
...@@ -433,6 +494,7 @@ pub const feature_maxPrivateElementSize4 = Feature{...@@ -433,6 +494,7 @@ pub const feature_maxPrivateElementSize4 = Feature{
433494
434pub const feature_maxPrivateElementSize8 = Feature{495pub const feature_maxPrivateElementSize8 = Feature{
435 .name = "max-private-element-size-8",496 .name = "max-private-element-size-8",
497 .llvm_name = "max-private-element-size-8",
436 .description = "Maximum private access size may be 8",498 .description = "Maximum private access size may be 8",
437 .dependencies = &[_]*const Feature {499 .dependencies = &[_]*const Feature {
438 },500 },
...@@ -440,6 +502,7 @@ pub const feature_maxPrivateElementSize8 = Feature{...@@ -440,6 +502,7 @@ pub const feature_maxPrivateElementSize8 = Feature{
440502
441pub const feature_maxPrivateElementSize16 = Feature{503pub const feature_maxPrivateElementSize16 = Feature{
442 .name = "max-private-element-size-16",504 .name = "max-private-element-size-16",
505 .llvm_name = "max-private-element-size-16",
443 .description = "Maximum private access size may be 16",506 .description = "Maximum private access size may be 16",
444 .dependencies = &[_]*const Feature {507 .dependencies = &[_]*const Feature {
445 },508 },
...@@ -447,6 +510,7 @@ pub const feature_maxPrivateElementSize16 = Feature{...@@ -447,6 +510,7 @@ pub const feature_maxPrivateElementSize16 = Feature{
447510
448pub const feature_movrel = Feature{511pub const feature_movrel = Feature{
449 .name = "movrel",512 .name = "movrel",
513 .llvm_name = "movrel",
450 .description = "Has v_movrel*_b32 instructions",514 .description = "Has v_movrel*_b32 instructions",
451 .dependencies = &[_]*const Feature {515 .dependencies = &[_]*const Feature {
452 },516 },
...@@ -454,6 +518,7 @@ pub const feature_movrel = Feature{...@@ -454,6 +518,7 @@ pub const feature_movrel = Feature{
454518
455pub const feature_nsaEncoding = Feature{519pub const feature_nsaEncoding = Feature{
456 .name = "nsa-encoding",520 .name = "nsa-encoding",
521 .llvm_name = "nsa-encoding",
457 .description = "Support NSA encoding for image instructions",522 .description = "Support NSA encoding for image instructions",
458 .dependencies = &[_]*const Feature {523 .dependencies = &[_]*const Feature {
459 },524 },
...@@ -461,6 +526,7 @@ pub const feature_nsaEncoding = Feature{...@@ -461,6 +526,7 @@ pub const feature_nsaEncoding = Feature{
461526
462pub const feature_nsaToVmemBug = Feature{527pub const feature_nsaToVmemBug = Feature{
463 .name = "nsa-to-vmem-bug",528 .name = "nsa-to-vmem-bug",
529 .llvm_name = "nsa-to-vmem-bug",
464 .description = "MIMG-NSA followed by VMEM fail if EXEC_LO or EXEC_HI equals zero",530 .description = "MIMG-NSA followed by VMEM fail if EXEC_LO or EXEC_HI equals zero",
465 .dependencies = &[_]*const Feature {531 .dependencies = &[_]*const Feature {
466 },532 },
...@@ -468,6 +534,7 @@ pub const feature_nsaToVmemBug = Feature{...@@ -468,6 +534,7 @@ pub const feature_nsaToVmemBug = Feature{
468534
469pub const feature_noDataDepHazard = Feature{535pub const feature_noDataDepHazard = Feature{
470 .name = "no-data-dep-hazard",536 .name = "no-data-dep-hazard",
537 .llvm_name = "no-data-dep-hazard",
471 .description = "Does not need SW waitstates",538 .description = "Does not need SW waitstates",
472 .dependencies = &[_]*const Feature {539 .dependencies = &[_]*const Feature {
473 },540 },
...@@ -475,6 +542,7 @@ pub const feature_noDataDepHazard = Feature{...@@ -475,6 +542,7 @@ pub const feature_noDataDepHazard = Feature{
475542
476pub const feature_noSdstCmpx = Feature{543pub const feature_noSdstCmpx = Feature{
477 .name = "no-sdst-cmpx",544 .name = "no-sdst-cmpx",
545 .llvm_name = "no-sdst-cmpx",
478 .description = "V_CMPX does not write VCC/SGPR in addition to EXEC",546 .description = "V_CMPX does not write VCC/SGPR in addition to EXEC",
479 .dependencies = &[_]*const Feature {547 .dependencies = &[_]*const Feature {
480 },548 },
...@@ -482,6 +550,7 @@ pub const feature_noSdstCmpx = Feature{...@@ -482,6 +550,7 @@ pub const feature_noSdstCmpx = Feature{
482550
483pub const feature_offset3fBug = Feature{551pub const feature_offset3fBug = Feature{
484 .name = "offset-3f-bug",552 .name = "offset-3f-bug",
553 .llvm_name = "offset-3f-bug",
485 .description = "Branch offset of 3f hardware bug",554 .description = "Branch offset of 3f hardware bug",
486 .dependencies = &[_]*const Feature {555 .dependencies = &[_]*const Feature {
487 },556 },
...@@ -489,6 +558,7 @@ pub const feature_offset3fBug = Feature{...@@ -489,6 +558,7 @@ pub const feature_offset3fBug = Feature{
489558
490pub const feature_pkFmacF16Inst = Feature{559pub const feature_pkFmacF16Inst = Feature{
491 .name = "pk-fmac-f16-inst",560 .name = "pk-fmac-f16-inst",
561 .llvm_name = "pk-fmac-f16-inst",
492 .description = "Has v_pk_fmac_f16 instruction",562 .description = "Has v_pk_fmac_f16 instruction",
493 .dependencies = &[_]*const Feature {563 .dependencies = &[_]*const Feature {
494 },564 },
...@@ -496,6 +566,7 @@ pub const feature_pkFmacF16Inst = Feature{...@@ -496,6 +566,7 @@ pub const feature_pkFmacF16Inst = Feature{
496566
497pub const feature_promoteAlloca = Feature{567pub const feature_promoteAlloca = Feature{
498 .name = "promote-alloca",568 .name = "promote-alloca",
569 .llvm_name = "promote-alloca",
499 .description = "Enable promote alloca pass",570 .description = "Enable promote alloca pass",
500 .dependencies = &[_]*const Feature {571 .dependencies = &[_]*const Feature {
501 },572 },
...@@ -503,6 +574,7 @@ pub const feature_promoteAlloca = Feature{...@@ -503,6 +574,7 @@ pub const feature_promoteAlloca = Feature{
503574
504pub const feature_r128A16 = Feature{575pub const feature_r128A16 = Feature{
505 .name = "r128-a16",576 .name = "r128-a16",
577 .llvm_name = "r128-a16",
506 .description = "Support 16 bit coordindates/gradients/lod/clamp/mip types on gfx9",578 .description = "Support 16 bit coordindates/gradients/lod/clamp/mip types on gfx9",
507 .dependencies = &[_]*const Feature {579 .dependencies = &[_]*const Feature {
508 },580 },
...@@ -510,6 +582,7 @@ pub const feature_r128A16 = Feature{...@@ -510,6 +582,7 @@ pub const feature_r128A16 = Feature{
510582
511pub const feature_registerBanking = Feature{583pub const feature_registerBanking = Feature{
512 .name = "register-banking",584 .name = "register-banking",
585 .llvm_name = "register-banking",
513 .description = "Has register banking",586 .description = "Has register banking",
514 .dependencies = &[_]*const Feature {587 .dependencies = &[_]*const Feature {
515 },588 },
...@@ -517,6 +590,7 @@ pub const feature_registerBanking = Feature{...@@ -517,6 +590,7 @@ pub const feature_registerBanking = Feature{
517590
518pub const feature_sdwa = Feature{591pub const feature_sdwa = Feature{
519 .name = "sdwa",592 .name = "sdwa",
593 .llvm_name = "sdwa",
520 .description = "Support SDWA (Sub-DWORD Addressing) extension",594 .description = "Support SDWA (Sub-DWORD Addressing) extension",
521 .dependencies = &[_]*const Feature {595 .dependencies = &[_]*const Feature {
522 },596 },
...@@ -524,6 +598,7 @@ pub const feature_sdwa = Feature{...@@ -524,6 +598,7 @@ pub const feature_sdwa = Feature{
524598
525pub const feature_sdwaMav = Feature{599pub const feature_sdwaMav = Feature{
526 .name = "sdwa-mav",600 .name = "sdwa-mav",
601 .llvm_name = "sdwa-mav",
527 .description = "Support v_mac_f32/f16 with SDWA (Sub-DWORD Addressing) extension",602 .description = "Support v_mac_f32/f16 with SDWA (Sub-DWORD Addressing) extension",
528 .dependencies = &[_]*const Feature {603 .dependencies = &[_]*const Feature {
529 },604 },
...@@ -531,6 +606,7 @@ pub const feature_sdwaMav = Feature{...@@ -531,6 +606,7 @@ pub const feature_sdwaMav = Feature{
531606
532pub const feature_sdwaOmod = Feature{607pub const feature_sdwaOmod = Feature{
533 .name = "sdwa-omod",608 .name = "sdwa-omod",
609 .llvm_name = "sdwa-omod",
534 .description = "Support OMod with SDWA (Sub-DWORD Addressing) extension",610 .description = "Support OMod with SDWA (Sub-DWORD Addressing) extension",
535 .dependencies = &[_]*const Feature {611 .dependencies = &[_]*const Feature {
536 },612 },
...@@ -538,6 +614,7 @@ pub const feature_sdwaOmod = Feature{...@@ -538,6 +614,7 @@ pub const feature_sdwaOmod = Feature{
538614
539pub const feature_sdwaOutModsVopc = Feature{615pub const feature_sdwaOutModsVopc = Feature{
540 .name = "sdwa-out-mods-vopc",616 .name = "sdwa-out-mods-vopc",
617 .llvm_name = "sdwa-out-mods-vopc",
541 .description = "Support clamp for VOPC with SDWA (Sub-DWORD Addressing) extension",618 .description = "Support clamp for VOPC with SDWA (Sub-DWORD Addressing) extension",
542 .dependencies = &[_]*const Feature {619 .dependencies = &[_]*const Feature {
543 },620 },
...@@ -545,6 +622,7 @@ pub const feature_sdwaOutModsVopc = Feature{...@@ -545,6 +622,7 @@ pub const feature_sdwaOutModsVopc = Feature{
545622
546pub const feature_sdwaScalar = Feature{623pub const feature_sdwaScalar = Feature{
547 .name = "sdwa-scalar",624 .name = "sdwa-scalar",
625 .llvm_name = "sdwa-scalar",
548 .description = "Support scalar register with SDWA (Sub-DWORD Addressing) extension",626 .description = "Support scalar register with SDWA (Sub-DWORD Addressing) extension",
549 .dependencies = &[_]*const Feature {627 .dependencies = &[_]*const Feature {
550 },628 },
...@@ -552,6 +630,7 @@ pub const feature_sdwaScalar = Feature{...@@ -552,6 +630,7 @@ pub const feature_sdwaScalar = Feature{
552630
553pub const feature_sdwaSdst = Feature{631pub const feature_sdwaSdst = Feature{
554 .name = "sdwa-sdst",632 .name = "sdwa-sdst",
633 .llvm_name = "sdwa-sdst",
555 .description = "Support scalar dst for VOPC with SDWA (Sub-DWORD Addressing) extension",634 .description = "Support scalar dst for VOPC with SDWA (Sub-DWORD Addressing) extension",
556 .dependencies = &[_]*const Feature {635 .dependencies = &[_]*const Feature {
557 },636 },
...@@ -559,6 +638,7 @@ pub const feature_sdwaSdst = Feature{...@@ -559,6 +638,7 @@ pub const feature_sdwaSdst = Feature{
559638
560pub const feature_sgprInitBug = Feature{639pub const feature_sgprInitBug = Feature{
561 .name = "sgpr-init-bug",640 .name = "sgpr-init-bug",
641 .llvm_name = "sgpr-init-bug",
562 .description = "VI SGPR initialization bug requiring a fixed SGPR allocation size",642 .description = "VI SGPR initialization bug requiring a fixed SGPR allocation size",
563 .dependencies = &[_]*const Feature {643 .dependencies = &[_]*const Feature {
564 },644 },
...@@ -566,6 +646,7 @@ pub const feature_sgprInitBug = Feature{...@@ -566,6 +646,7 @@ pub const feature_sgprInitBug = Feature{
566646
567pub const feature_smemToVectorWriteHazard = Feature{647pub const feature_smemToVectorWriteHazard = Feature{
568 .name = "smem-to-vector-write-hazard",648 .name = "smem-to-vector-write-hazard",
649 .llvm_name = "smem-to-vector-write-hazard",
569 .description = "s_load_dword followed by v_cmp page faults",650 .description = "s_load_dword followed by v_cmp page faults",
570 .dependencies = &[_]*const Feature {651 .dependencies = &[_]*const Feature {
571 },652 },
...@@ -573,6 +654,7 @@ pub const feature_smemToVectorWriteHazard = Feature{...@@ -573,6 +654,7 @@ pub const feature_smemToVectorWriteHazard = Feature{
573654
574pub const feature_sMemrealtime = Feature{655pub const feature_sMemrealtime = Feature{
575 .name = "s-memrealtime",656 .name = "s-memrealtime",
657 .llvm_name = "s-memrealtime",
576 .description = "Has s_memrealtime instruction",658 .description = "Has s_memrealtime instruction",
577 .dependencies = &[_]*const Feature {659 .dependencies = &[_]*const Feature {
578 },660 },
...@@ -580,6 +662,7 @@ pub const feature_sMemrealtime = Feature{...@@ -580,6 +662,7 @@ pub const feature_sMemrealtime = Feature{
580662
581pub const feature_sramEcc = Feature{663pub const feature_sramEcc = Feature{
582 .name = "sram-ecc",664 .name = "sram-ecc",
665 .llvm_name = "sram-ecc",
583 .description = "Enable SRAM ECC",666 .description = "Enable SRAM ECC",
584 .dependencies = &[_]*const Feature {667 .dependencies = &[_]*const Feature {
585 },668 },
...@@ -587,6 +670,7 @@ pub const feature_sramEcc = Feature{...@@ -587,6 +670,7 @@ pub const feature_sramEcc = Feature{
587670
588pub const feature_scalarAtomics = Feature{671pub const feature_scalarAtomics = Feature{
589 .name = "scalar-atomics",672 .name = "scalar-atomics",
673 .llvm_name = "scalar-atomics",
590 .description = "Has atomic scalar memory instructions",674 .description = "Has atomic scalar memory instructions",
591 .dependencies = &[_]*const Feature {675 .dependencies = &[_]*const Feature {
592 },676 },
...@@ -594,6 +678,7 @@ pub const feature_scalarAtomics = Feature{...@@ -594,6 +678,7 @@ pub const feature_scalarAtomics = Feature{
594678
595pub const feature_scalarFlatScratchInsts = Feature{679pub const feature_scalarFlatScratchInsts = Feature{
596 .name = "scalar-flat-scratch-insts",680 .name = "scalar-flat-scratch-insts",
681 .llvm_name = "scalar-flat-scratch-insts",
597 .description = "Have s_scratch_* flat memory instructions",682 .description = "Have s_scratch_* flat memory instructions",
598 .dependencies = &[_]*const Feature {683 .dependencies = &[_]*const Feature {
599 },684 },
...@@ -601,6 +686,7 @@ pub const feature_scalarFlatScratchInsts = Feature{...@@ -601,6 +686,7 @@ pub const feature_scalarFlatScratchInsts = Feature{
601686
602pub const feature_scalarStores = Feature{687pub const feature_scalarStores = Feature{
603 .name = "scalar-stores",688 .name = "scalar-stores",
689 .llvm_name = "scalar-stores",
604 .description = "Has store scalar memory instructions",690 .description = "Has store scalar memory instructions",
605 .dependencies = &[_]*const Feature {691 .dependencies = &[_]*const Feature {
606 },692 },
...@@ -608,6 +694,7 @@ pub const feature_scalarStores = Feature{...@@ -608,6 +694,7 @@ pub const feature_scalarStores = Feature{
608694
609pub const feature_trapHandler = Feature{695pub const feature_trapHandler = Feature{
610 .name = "trap-handler",696 .name = "trap-handler",
697 .llvm_name = "trap-handler",
611 .description = "Trap handler support",698 .description = "Trap handler support",
612 .dependencies = &[_]*const Feature {699 .dependencies = &[_]*const Feature {
613 },700 },
...@@ -615,6 +702,7 @@ pub const feature_trapHandler = Feature{...@@ -615,6 +702,7 @@ pub const feature_trapHandler = Feature{
615702
616pub const feature_trigReducedRange = Feature{703pub const feature_trigReducedRange = Feature{
617 .name = "trig-reduced-range",704 .name = "trig-reduced-range",
705 .llvm_name = "trig-reduced-range",
618 .description = "Requires use of fract on arguments to trig instructions",706 .description = "Requires use of fract on arguments to trig instructions",
619 .dependencies = &[_]*const Feature {707 .dependencies = &[_]*const Feature {
620 },708 },
...@@ -622,6 +710,7 @@ pub const feature_trigReducedRange = Feature{...@@ -622,6 +710,7 @@ pub const feature_trigReducedRange = Feature{
622710
623pub const feature_unalignedBufferAccess = Feature{711pub const feature_unalignedBufferAccess = Feature{
624 .name = "unaligned-buffer-access",712 .name = "unaligned-buffer-access",
713 .llvm_name = "unaligned-buffer-access",
625 .description = "Support unaligned global loads and stores",714 .description = "Support unaligned global loads and stores",
626 .dependencies = &[_]*const Feature {715 .dependencies = &[_]*const Feature {
627 },716 },
...@@ -629,6 +718,7 @@ pub const feature_unalignedBufferAccess = Feature{...@@ -629,6 +718,7 @@ pub const feature_unalignedBufferAccess = Feature{
629718
630pub const feature_unalignedScratchAccess = Feature{719pub const feature_unalignedScratchAccess = Feature{
631 .name = "unaligned-scratch-access",720 .name = "unaligned-scratch-access",
721 .llvm_name = "unaligned-scratch-access",
632 .description = "Support unaligned scratch loads and stores",722 .description = "Support unaligned scratch loads and stores",
633 .dependencies = &[_]*const Feature {723 .dependencies = &[_]*const Feature {
634 },724 },
...@@ -636,6 +726,7 @@ pub const feature_unalignedScratchAccess = Feature{...@@ -636,6 +726,7 @@ pub const feature_unalignedScratchAccess = Feature{
636726
637pub const feature_unpackedD16Vmem = Feature{727pub const feature_unpackedD16Vmem = Feature{
638 .name = "unpacked-d16-vmem",728 .name = "unpacked-d16-vmem",
729 .llvm_name = "unpacked-d16-vmem",
639 .description = "Has unpacked d16 vmem instructions",730 .description = "Has unpacked d16 vmem instructions",
640 .dependencies = &[_]*const Feature {731 .dependencies = &[_]*const Feature {
641 },732 },
...@@ -643,6 +734,7 @@ pub const feature_unpackedD16Vmem = Feature{...@@ -643,6 +734,7 @@ pub const feature_unpackedD16Vmem = Feature{
643734
644pub const feature_vgprIndexMode = Feature{735pub const feature_vgprIndexMode = Feature{
645 .name = "vgpr-index-mode",736 .name = "vgpr-index-mode",
737 .llvm_name = "vgpr-index-mode",
646 .description = "Has VGPR mode register indexing",738 .description = "Has VGPR mode register indexing",
647 .dependencies = &[_]*const Feature {739 .dependencies = &[_]*const Feature {
648 },740 },
...@@ -650,6 +742,7 @@ pub const feature_vgprIndexMode = Feature{...@@ -650,6 +742,7 @@ pub const feature_vgprIndexMode = Feature{
650742
651pub const feature_vmemToScalarWriteHazard = Feature{743pub const feature_vmemToScalarWriteHazard = Feature{
652 .name = "vmem-to-scalar-write-hazard",744 .name = "vmem-to-scalar-write-hazard",
745 .llvm_name = "vmem-to-scalar-write-hazard",
653 .description = "VMEM instruction followed by scalar writing to EXEC mask, M0 or SGPR leads to incorrect execution.",746 .description = "VMEM instruction followed by scalar writing to EXEC mask, M0 or SGPR leads to incorrect execution.",
654 .dependencies = &[_]*const Feature {747 .dependencies = &[_]*const Feature {
655 },748 },
...@@ -657,6 +750,7 @@ pub const feature_vmemToScalarWriteHazard = Feature{...@@ -657,6 +750,7 @@ pub const feature_vmemToScalarWriteHazard = Feature{
657750
658pub const feature_vop3Literal = Feature{751pub const feature_vop3Literal = Feature{
659 .name = "vop3-literal",752 .name = "vop3-literal",
753 .llvm_name = "vop3-literal",
660 .description = "Can use one literal in VOP3",754 .description = "Can use one literal in VOP3",
661 .dependencies = &[_]*const Feature {755 .dependencies = &[_]*const Feature {
662 },756 },
...@@ -664,6 +758,7 @@ pub const feature_vop3Literal = Feature{...@@ -664,6 +758,7 @@ pub const feature_vop3Literal = Feature{
664758
665pub const feature_vop3p = Feature{759pub const feature_vop3p = Feature{
666 .name = "vop3p",760 .name = "vop3p",
761 .llvm_name = "vop3p",
667 .description = "Has VOP3P packed instructions",762 .description = "Has VOP3P packed instructions",
668 .dependencies = &[_]*const Feature {763 .dependencies = &[_]*const Feature {
669 },764 },
...@@ -671,6 +766,7 @@ pub const feature_vop3p = Feature{...@@ -671,6 +766,7 @@ pub const feature_vop3p = Feature{
671766
672pub const feature_vcmpxExecWarHazard = Feature{767pub const feature_vcmpxExecWarHazard = Feature{
673 .name = "vcmpx-exec-war-hazard",768 .name = "vcmpx-exec-war-hazard",
769 .llvm_name = "vcmpx-exec-war-hazard",
674 .description = "V_CMPX WAR hazard on EXEC (V_CMPX issue ONLY)",770 .description = "V_CMPX WAR hazard on EXEC (V_CMPX issue ONLY)",
675 .dependencies = &[_]*const Feature {771 .dependencies = &[_]*const Feature {
676 },772 },
...@@ -678,6 +774,7 @@ pub const feature_vcmpxExecWarHazard = Feature{...@@ -678,6 +774,7 @@ pub const feature_vcmpxExecWarHazard = Feature{
678774
679pub const feature_vcmpxPermlaneHazard = Feature{775pub const feature_vcmpxPermlaneHazard = Feature{
680 .name = "vcmpx-permlane-hazard",776 .name = "vcmpx-permlane-hazard",
777 .llvm_name = "vcmpx-permlane-hazard",
681 .description = "TODO: describe me",778 .description = "TODO: describe me",
682 .dependencies = &[_]*const Feature {779 .dependencies = &[_]*const Feature {
683 },780 },
...@@ -685,6 +782,7 @@ pub const feature_vcmpxPermlaneHazard = Feature{...@@ -685,6 +782,7 @@ pub const feature_vcmpxPermlaneHazard = Feature{
685782
686pub const feature_vscnt = Feature{783pub const feature_vscnt = Feature{
687 .name = "vscnt",784 .name = "vscnt",
785 .llvm_name = "vscnt",
688 .description = "Has separate store vscnt counter",786 .description = "Has separate store vscnt counter",
689 .dependencies = &[_]*const Feature {787 .dependencies = &[_]*const Feature {
690 },788 },
...@@ -692,6 +790,7 @@ pub const feature_vscnt = Feature{...@@ -692,6 +790,7 @@ pub const feature_vscnt = Feature{
692790
693pub const feature_wavefrontsize16 = Feature{791pub const feature_wavefrontsize16 = Feature{
694 .name = "wavefrontsize16",792 .name = "wavefrontsize16",
793 .llvm_name = "wavefrontsize16",
695 .description = "The number of threads per wavefront",794 .description = "The number of threads per wavefront",
696 .dependencies = &[_]*const Feature {795 .dependencies = &[_]*const Feature {
697 },796 },
...@@ -699,6 +798,7 @@ pub const feature_wavefrontsize16 = Feature{...@@ -699,6 +798,7 @@ pub const feature_wavefrontsize16 = Feature{
699798
700pub const feature_wavefrontsize32 = Feature{799pub const feature_wavefrontsize32 = Feature{
701 .name = "wavefrontsize32",800 .name = "wavefrontsize32",
801 .llvm_name = "wavefrontsize32",
702 .description = "The number of threads per wavefront",802 .description = "The number of threads per wavefront",
703 .dependencies = &[_]*const Feature {803 .dependencies = &[_]*const Feature {
704 },804 },
...@@ -706,6 +806,7 @@ pub const feature_wavefrontsize32 = Feature{...@@ -706,6 +806,7 @@ pub const feature_wavefrontsize32 = Feature{
706806
707pub const feature_wavefrontsize64 = Feature{807pub const feature_wavefrontsize64 = Feature{
708 .name = "wavefrontsize64",808 .name = "wavefrontsize64",
809 .llvm_name = "wavefrontsize64",
709 .description = "The number of threads per wavefront",810 .description = "The number of threads per wavefront",
710 .dependencies = &[_]*const Feature {811 .dependencies = &[_]*const Feature {
711 },812 },
...@@ -713,6 +814,7 @@ pub const feature_wavefrontsize64 = Feature{...@@ -713,6 +814,7 @@ pub const feature_wavefrontsize64 = Feature{
713814
714pub const feature_xnack = Feature{815pub const feature_xnack = Feature{
715 .name = "xnack",816 .name = "xnack",
817 .llvm_name = "xnack",
716 .description = "Enable XNACK support",818 .description = "Enable XNACK support",
717 .dependencies = &[_]*const Feature {819 .dependencies = &[_]*const Feature {
718 },820 },
...@@ -720,6 +822,7 @@ pub const feature_xnack = Feature{...@@ -720,6 +822,7 @@ pub const feature_xnack = Feature{
720822
721pub const feature_halfRate64Ops = Feature{823pub const feature_halfRate64Ops = Feature{
722 .name = "half-rate-64-ops",824 .name = "half-rate-64-ops",
825 .llvm_name = "half-rate-64-ops",
723 .description = "Most fp64 instructions are half rate instead of quarter",826 .description = "Most fp64 instructions are half rate instead of quarter",
724 .dependencies = &[_]*const Feature {827 .dependencies = &[_]*const Feature {
725 },828 },
...@@ -838,16 +941,16 @@ pub const cpu_bonaire = Cpu{...@@ -838,16 +941,16 @@ pub const cpu_bonaire = Cpu{
838 &feature_codeObjectV3,941 &feature_codeObjectV3,
839 &feature_noXnackSupport,942 &feature_noXnackSupport,
840 &feature_ldsbankcount32,943 &feature_ldsbankcount32,
944 &feature_movrel,
841 &feature_flatAddressSpace,945 &feature_flatAddressSpace,
842 &feature_fp64,946 &feature_trigReducedRange,
843 &feature_mimgR128,
844 &feature_gfx7Gfx8Gfx9Insts,947 &feature_gfx7Gfx8Gfx9Insts,
845 &feature_movrel,948 &feature_wavefrontsize64,
949 &feature_mimgR128,
950 &feature_noSramEccSupport,
846 &feature_localmemorysize65536,951 &feature_localmemorysize65536,
952 &feature_fp64,
847 &feature_ciInsts,953 &feature_ciInsts,
848 &feature_noSramEccSupport,
849 &feature_wavefrontsize64,
850 &feature_trigReducedRange,
851 },954 },
852};955};
853956
...@@ -859,28 +962,28 @@ pub const cpu_carrizo = Cpu{...@@ -859,28 +962,28 @@ pub const cpu_carrizo = Cpu{
859 &feature_fastFmaf,962 &feature_fastFmaf,
860 &feature_ldsbankcount32,963 &feature_ldsbankcount32,
861 &feature_unpackedD16Vmem,964 &feature_unpackedD16Vmem,
862 &feature_fp64,
863 &feature_sMemrealtime,965 &feature_sMemrealtime,
864 &feature_BitInsts16,966 &feature_scalarStores,
865 &feature_wavefrontsize64,
866 &feature_sdwa,
867 &feature_flatAddressSpace,967 &feature_flatAddressSpace,
868 &feature_sdwaMav,
869 &feature_mimgR128,
870 &feature_ciInsts,
871 &feature_noSramEccSupport,
872 &feature_inv2piInlineImm,
873 &feature_vgprIndexMode,968 &feature_vgprIndexMode,
874 &feature_gcn3Encoding,969 &feature_wavefrontsize64,
875 &feature_gfx8Insts,970 &feature_mimgR128,
876 &feature_scalarStores,
877 &feature_intClampInsts,971 &feature_intClampInsts,
972 &feature_dpp,
878 &feature_movrel,973 &feature_movrel,
974 &feature_gcn3Encoding,
975 &feature_gfx8Insts,
976 &feature_trigReducedRange,
977 &feature_gfx7Gfx8Gfx9Insts,
978 &feature_sdwaMav,
979 &feature_sdwa,
879 &feature_localmemorysize65536,980 &feature_localmemorysize65536,
981 &feature_BitInsts16,
880 &feature_sdwaOutModsVopc,982 &feature_sdwaOutModsVopc,
881 &feature_dpp,983 &feature_inv2piInlineImm,
882 &feature_gfx7Gfx8Gfx9Insts,984 &feature_noSramEccSupport,
883 &feature_trigReducedRange,985 &feature_fp64,
986 &feature_ciInsts,
884 &feature_xnack,987 &feature_xnack,
885 &feature_halfRate64Ops,988 &feature_halfRate64Ops,
886 },989 },
...@@ -894,28 +997,28 @@ pub const cpu_fiji = Cpu{...@@ -894,28 +997,28 @@ pub const cpu_fiji = Cpu{
894 &feature_noXnackSupport,997 &feature_noXnackSupport,
895 &feature_ldsbankcount32,998 &feature_ldsbankcount32,
896 &feature_unpackedD16Vmem,999 &feature_unpackedD16Vmem,
897 &feature_fp64,
898 &feature_sMemrealtime,1000 &feature_sMemrealtime,
899 &feature_BitInsts16,1001 &feature_scalarStores,
900 &feature_wavefrontsize64,
901 &feature_sdwa,
902 &feature_flatAddressSpace,1002 &feature_flatAddressSpace,
903 &feature_sdwaMav,
904 &feature_mimgR128,
905 &feature_ciInsts,
906 &feature_noSramEccSupport,
907 &feature_inv2piInlineImm,
908 &feature_vgprIndexMode,1003 &feature_vgprIndexMode,
909 &feature_gcn3Encoding,1004 &feature_wavefrontsize64,
910 &feature_gfx8Insts,1005 &feature_mimgR128,
911 &feature_scalarStores,
912 &feature_intClampInsts,1006 &feature_intClampInsts,
1007 &feature_dpp,
913 &feature_movrel,1008 &feature_movrel,
1009 &feature_gcn3Encoding,
1010 &feature_gfx8Insts,
1011 &feature_trigReducedRange,
1012 &feature_gfx7Gfx8Gfx9Insts,
1013 &feature_sdwaMav,
1014 &feature_sdwa,
914 &feature_localmemorysize65536,1015 &feature_localmemorysize65536,
1016 &feature_BitInsts16,
915 &feature_sdwaOutModsVopc,1017 &feature_sdwaOutModsVopc,
916 &feature_dpp,1018 &feature_inv2piInlineImm,
917 &feature_gfx7Gfx8Gfx9Insts,1019 &feature_noSramEccSupport,
918 &feature_trigReducedRange,1020 &feature_fp64,
1021 &feature_ciInsts,
919 },1022 },
920};1023};
9211024
...@@ -944,40 +1047,40 @@ pub const cpu_gfx1010 = Cpu{...@@ -944,40 +1047,40 @@ pub const cpu_gfx1010 = Cpu{
944 &feature_dlInsts,1047 &feature_dlInsts,
945 &feature_noXnackSupport,1048 &feature_noXnackSupport,
946 &feature_flatSegmentOffsetBug,1049 &feature_flatSegmentOffsetBug,
947 &feature_noSdstCmpx,1050 &feature_sdwaOmod,
948 &feature_flatScratchInsts,
949 &feature_fp64,
950 &feature_sMemrealtime,1051 &feature_sMemrealtime,
951 &feature_addNoCarryInsts,
952 &feature_vop3p,
953 &feature_fastFmaf,
954 &feature_BitInsts16,
955 &feature_sdwa,
956 &feature_gfx9Insts,
957 &feature_flatAddressSpace,1052 &feature_flatAddressSpace,
958 &feature_vop3Literal,1053 &feature_gfx9Insts,
959 &feature_apertureRegs,1054 &feature_fastFmaf,
1055 &feature_flatScratchInsts,
960 &feature_mimgR128,1056 &feature_mimgR128,
961 &feature_sdwaScalar,1057 &feature_noSdstCmpx,
962 &feature_ciInsts,1058 &feature_sdwaSdst,
963 &feature_noSramEccSupport,1059 &feature_vop3p,
964 &feature_inv2piInlineImm,
965 &feature_gfx8Insts,
966 &feature_intClampInsts,1060 &feature_intClampInsts,
967 &feature_vscnt,1061 &feature_dpp,
1062 &feature_registerBanking,
968 &feature_movrel,1063 &feature_movrel,
969 &feature_localmemorysize65536,1064 &feature_gfx8Insts,
970 &feature_gfx10Insts,1065 &feature_sdwa,
1066 &feature_noDataDepHazard,
971 &feature_flatGlobalInsts,1067 &feature_flatGlobalInsts,
972 &feature_sdwaOmod,1068 &feature_gfx10Insts,
973 &feature_dpp8,1069 &feature_localmemorysize65536,
1070 &feature_BitInsts16,
1071 &feature_addNoCarryInsts,
974 &feature_pkFmacF16Inst,1072 &feature_pkFmacF16Inst,
975 &feature_dpp,
976 &feature_sdwaSdst,
977 &feature_flatInstOffsets,1073 &feature_flatInstOffsets,
978 &feature_fmaMixInsts,1074 &feature_fmaMixInsts,
979 &feature_registerBanking,1075 &feature_sdwaScalar,
980 &feature_noDataDepHazard,1076 &feature_inv2piInlineImm,
1077 &feature_vscnt,
1078 &feature_apertureRegs,
1079 &feature_dpp8,
1080 &feature_noSramEccSupport,
1081 &feature_fp64,
1082 &feature_ciInsts,
1083 &feature_vop3Literal,
981 &feature_instFwdPrefetchBug,1084 &feature_instFwdPrefetchBug,
982 &feature_ldsbankcount32,1085 &feature_ldsbankcount32,
983 &feature_ldsBranchVmemWarHazard,1086 &feature_ldsBranchVmemWarHazard,
...@@ -1008,40 +1111,40 @@ pub const cpu_gfx1011 = Cpu{...@@ -1008,40 +1111,40 @@ pub const cpu_gfx1011 = Cpu{
1008 &feature_dot5Insts,1111 &feature_dot5Insts,
1009 &feature_dot6Insts,1112 &feature_dot6Insts,
1010 &feature_flatSegmentOffsetBug,1113 &feature_flatSegmentOffsetBug,
1011 &feature_noSdstCmpx,1114 &feature_sdwaOmod,
1012 &feature_flatScratchInsts,
1013 &feature_fp64,
1014 &feature_sMemrealtime,1115 &feature_sMemrealtime,
1015 &feature_addNoCarryInsts,
1016 &feature_vop3p,
1017 &feature_fastFmaf,
1018 &feature_BitInsts16,
1019 &feature_sdwa,
1020 &feature_gfx9Insts,
1021 &feature_flatAddressSpace,1116 &feature_flatAddressSpace,
1022 &feature_vop3Literal,1117 &feature_gfx9Insts,
1023 &feature_apertureRegs,1118 &feature_fastFmaf,
1119 &feature_flatScratchInsts,
1024 &feature_mimgR128,1120 &feature_mimgR128,
1025 &feature_sdwaScalar,1121 &feature_noSdstCmpx,
1026 &feature_ciInsts,1122 &feature_sdwaSdst,
1027 &feature_noSramEccSupport,1123 &feature_vop3p,
1028 &feature_inv2piInlineImm,
1029 &feature_gfx8Insts,
1030 &feature_intClampInsts,1124 &feature_intClampInsts,
1031 &feature_vscnt,1125 &feature_dpp,
1126 &feature_registerBanking,
1032 &feature_movrel,1127 &feature_movrel,
1033 &feature_localmemorysize65536,1128 &feature_gfx8Insts,
1034 &feature_gfx10Insts,1129 &feature_sdwa,
1130 &feature_noDataDepHazard,
1035 &feature_flatGlobalInsts,1131 &feature_flatGlobalInsts,
1036 &feature_sdwaOmod,1132 &feature_gfx10Insts,
1037 &feature_dpp8,1133 &feature_localmemorysize65536,
1134 &feature_BitInsts16,
1135 &feature_addNoCarryInsts,
1038 &feature_pkFmacF16Inst,1136 &feature_pkFmacF16Inst,
1039 &feature_dpp,
1040 &feature_sdwaSdst,
1041 &feature_flatInstOffsets,1137 &feature_flatInstOffsets,
1042 &feature_fmaMixInsts,1138 &feature_fmaMixInsts,
1043 &feature_registerBanking,1139 &feature_sdwaScalar,
1044 &feature_noDataDepHazard,1140 &feature_inv2piInlineImm,
1141 &feature_vscnt,
1142 &feature_apertureRegs,
1143 &feature_dpp8,
1144 &feature_noSramEccSupport,
1145 &feature_fp64,
1146 &feature_ciInsts,
1147 &feature_vop3Literal,
1045 &feature_instFwdPrefetchBug,1148 &feature_instFwdPrefetchBug,
1046 &feature_ldsbankcount32,1149 &feature_ldsbankcount32,
1047 &feature_ldsBranchVmemWarHazard,1150 &feature_ldsBranchVmemWarHazard,
...@@ -1071,40 +1174,40 @@ pub const cpu_gfx1012 = Cpu{...@@ -1071,40 +1174,40 @@ pub const cpu_gfx1012 = Cpu{
1071 &feature_dot5Insts,1174 &feature_dot5Insts,
1072 &feature_dot6Insts,1175 &feature_dot6Insts,
1073 &feature_flatSegmentOffsetBug,1176 &feature_flatSegmentOffsetBug,
1074 &feature_noSdstCmpx,1177 &feature_sdwaOmod,
1075 &feature_flatScratchInsts,
1076 &feature_fp64,
1077 &feature_sMemrealtime,1178 &feature_sMemrealtime,
1078 &feature_addNoCarryInsts,
1079 &feature_vop3p,
1080 &feature_fastFmaf,
1081 &feature_BitInsts16,
1082 &feature_sdwa,
1083 &feature_gfx9Insts,
1084 &feature_flatAddressSpace,1179 &feature_flatAddressSpace,
1085 &feature_vop3Literal,1180 &feature_gfx9Insts,
1086 &feature_apertureRegs,1181 &feature_fastFmaf,
1182 &feature_flatScratchInsts,
1087 &feature_mimgR128,1183 &feature_mimgR128,
1088 &feature_sdwaScalar,1184 &feature_noSdstCmpx,
1089 &feature_ciInsts,1185 &feature_sdwaSdst,
1090 &feature_noSramEccSupport,1186 &feature_vop3p,
1091 &feature_inv2piInlineImm,
1092 &feature_gfx8Insts,
1093 &feature_intClampInsts,1187 &feature_intClampInsts,
1094 &feature_vscnt,1188 &feature_dpp,
1189 &feature_registerBanking,
1095 &feature_movrel,1190 &feature_movrel,
1096 &feature_localmemorysize65536,1191 &feature_gfx8Insts,
1097 &feature_gfx10Insts,1192 &feature_sdwa,
1193 &feature_noDataDepHazard,
1098 &feature_flatGlobalInsts,1194 &feature_flatGlobalInsts,
1099 &feature_sdwaOmod,1195 &feature_gfx10Insts,
1100 &feature_dpp8,1196 &feature_localmemorysize65536,
1197 &feature_BitInsts16,
1198 &feature_addNoCarryInsts,
1101 &feature_pkFmacF16Inst,1199 &feature_pkFmacF16Inst,
1102 &feature_dpp,
1103 &feature_sdwaSdst,
1104 &feature_flatInstOffsets,1200 &feature_flatInstOffsets,
1105 &feature_fmaMixInsts,1201 &feature_fmaMixInsts,
1106 &feature_registerBanking,1202 &feature_sdwaScalar,
1107 &feature_noDataDepHazard,1203 &feature_inv2piInlineImm,
1204 &feature_vscnt,
1205 &feature_apertureRegs,
1206 &feature_dpp8,
1207 &feature_noSramEccSupport,
1208 &feature_fp64,
1209 &feature_ciInsts,
1210 &feature_vop3Literal,
1108 &feature_instFwdPrefetchBug,1211 &feature_instFwdPrefetchBug,
1109 &feature_ldsbankcount32,1212 &feature_ldsbankcount32,
1110 &feature_ldsBranchVmemWarHazard,1213 &feature_ldsBranchVmemWarHazard,
...@@ -1131,13 +1234,13 @@ pub const cpu_gfx600 = Cpu{...@@ -1131,13 +1234,13 @@ pub const cpu_gfx600 = Cpu{
1131 &feature_noXnackSupport,1234 &feature_noXnackSupport,
1132 &feature_fastFmaf,1235 &feature_fastFmaf,
1133 &feature_ldsbankcount32,1236 &feature_ldsbankcount32,
1134 &feature_localmemorysize32768,
1135 &feature_fp64,
1136 &feature_mimgR128,
1137 &feature_movrel,1237 &feature_movrel,
1138 &feature_noSramEccSupport,
1139 &feature_wavefrontsize64,
1140 &feature_trigReducedRange,1238 &feature_trigReducedRange,
1239 &feature_mimgR128,
1240 &feature_localmemorysize32768,
1241 &feature_wavefrontsize64,
1242 &feature_noSramEccSupport,
1243 &feature_fp64,
1141 &feature_halfRate64Ops,1244 &feature_halfRate64Ops,
1142 },1245 },
1143};1246};
...@@ -1149,13 +1252,13 @@ pub const cpu_gfx601 = Cpu{...@@ -1149,13 +1252,13 @@ pub const cpu_gfx601 = Cpu{
1149 &feature_codeObjectV3,1252 &feature_codeObjectV3,
1150 &feature_noXnackSupport,1253 &feature_noXnackSupport,
1151 &feature_ldsbankcount32,1254 &feature_ldsbankcount32,
1152 &feature_localmemorysize32768,
1153 &feature_fp64,
1154 &feature_mimgR128,
1155 &feature_movrel,1255 &feature_movrel,
1156 &feature_noSramEccSupport,
1157 &feature_wavefrontsize64,
1158 &feature_trigReducedRange,1256 &feature_trigReducedRange,
1257 &feature_mimgR128,
1258 &feature_localmemorysize32768,
1259 &feature_wavefrontsize64,
1260 &feature_noSramEccSupport,
1261 &feature_fp64,
1159 },1262 },
1160};1263};
11611264
...@@ -1166,16 +1269,16 @@ pub const cpu_gfx700 = Cpu{...@@ -1166,16 +1269,16 @@ pub const cpu_gfx700 = Cpu{
1166 &feature_codeObjectV3,1269 &feature_codeObjectV3,
1167 &feature_noXnackSupport,1270 &feature_noXnackSupport,
1168 &feature_ldsbankcount32,1271 &feature_ldsbankcount32,
1272 &feature_movrel,
1169 &feature_flatAddressSpace,1273 &feature_flatAddressSpace,
1170 &feature_fp64,1274 &feature_trigReducedRange,
1171 &feature_mimgR128,
1172 &feature_gfx7Gfx8Gfx9Insts,1275 &feature_gfx7Gfx8Gfx9Insts,
1173 &feature_movrel,1276 &feature_wavefrontsize64,
1277 &feature_mimgR128,
1278 &feature_noSramEccSupport,
1174 &feature_localmemorysize65536,1279 &feature_localmemorysize65536,
1280 &feature_fp64,
1175 &feature_ciInsts,1281 &feature_ciInsts,
1176 &feature_noSramEccSupport,
1177 &feature_wavefrontsize64,
1178 &feature_trigReducedRange,
1179 },1282 },
1180};1283};
11811284
...@@ -1187,16 +1290,16 @@ pub const cpu_gfx701 = Cpu{...@@ -1187,16 +1290,16 @@ pub const cpu_gfx701 = Cpu{
1187 &feature_noXnackSupport,1290 &feature_noXnackSupport,
1188 &feature_fastFmaf,1291 &feature_fastFmaf,
1189 &feature_ldsbankcount32,1292 &feature_ldsbankcount32,
1293 &feature_movrel,
1190 &feature_flatAddressSpace,1294 &feature_flatAddressSpace,
1191 &feature_fp64,1295 &feature_trigReducedRange,
1192 &feature_mimgR128,
1193 &feature_gfx7Gfx8Gfx9Insts,1296 &feature_gfx7Gfx8Gfx9Insts,
1194 &feature_movrel,1297 &feature_wavefrontsize64,
1298 &feature_mimgR128,
1299 &feature_noSramEccSupport,
1195 &feature_localmemorysize65536,1300 &feature_localmemorysize65536,
1301 &feature_fp64,
1196 &feature_ciInsts,1302 &feature_ciInsts,
1197 &feature_noSramEccSupport,
1198 &feature_wavefrontsize64,
1199 &feature_trigReducedRange,
1200 &feature_halfRate64Ops,1303 &feature_halfRate64Ops,
1201 },1304 },
1202};1305};
...@@ -1209,16 +1312,16 @@ pub const cpu_gfx702 = Cpu{...@@ -1209,16 +1312,16 @@ pub const cpu_gfx702 = Cpu{
1209 &feature_noXnackSupport,1312 &feature_noXnackSupport,
1210 &feature_fastFmaf,1313 &feature_fastFmaf,
1211 &feature_ldsbankcount16,1314 &feature_ldsbankcount16,
1315 &feature_movrel,
1212 &feature_flatAddressSpace,1316 &feature_flatAddressSpace,
1213 &feature_fp64,1317 &feature_trigReducedRange,
1214 &feature_mimgR128,
1215 &feature_gfx7Gfx8Gfx9Insts,1318 &feature_gfx7Gfx8Gfx9Insts,
1216 &feature_movrel,1319 &feature_wavefrontsize64,
1320 &feature_mimgR128,
1321 &feature_noSramEccSupport,
1217 &feature_localmemorysize65536,1322 &feature_localmemorysize65536,
1323 &feature_fp64,
1218 &feature_ciInsts,1324 &feature_ciInsts,
1219 &feature_noSramEccSupport,
1220 &feature_wavefrontsize64,
1221 &feature_trigReducedRange,
1222 },1325 },
1223};1326};
12241327
...@@ -1229,16 +1332,16 @@ pub const cpu_gfx703 = Cpu{...@@ -1229,16 +1332,16 @@ pub const cpu_gfx703 = Cpu{
1229 &feature_codeObjectV3,1332 &feature_codeObjectV3,
1230 &feature_noXnackSupport,1333 &feature_noXnackSupport,
1231 &feature_ldsbankcount16,1334 &feature_ldsbankcount16,
1335 &feature_movrel,
1232 &feature_flatAddressSpace,1336 &feature_flatAddressSpace,
1233 &feature_fp64,1337 &feature_trigReducedRange,
1234 &feature_mimgR128,
1235 &feature_gfx7Gfx8Gfx9Insts,1338 &feature_gfx7Gfx8Gfx9Insts,
1236 &feature_movrel,1339 &feature_wavefrontsize64,
1340 &feature_mimgR128,
1341 &feature_noSramEccSupport,
1237 &feature_localmemorysize65536,1342 &feature_localmemorysize65536,
1343 &feature_fp64,
1238 &feature_ciInsts,1344 &feature_ciInsts,
1239 &feature_noSramEccSupport,
1240 &feature_wavefrontsize64,
1241 &feature_trigReducedRange,
1242 },1345 },
1243};1346};
12441347
...@@ -1249,16 +1352,16 @@ pub const cpu_gfx704 = Cpu{...@@ -1249,16 +1352,16 @@ pub const cpu_gfx704 = Cpu{
1249 &feature_codeObjectV3,1352 &feature_codeObjectV3,
1250 &feature_noXnackSupport,1353 &feature_noXnackSupport,
1251 &feature_ldsbankcount32,1354 &feature_ldsbankcount32,
1355 &feature_movrel,
1252 &feature_flatAddressSpace,1356 &feature_flatAddressSpace,
1253 &feature_fp64,1357 &feature_trigReducedRange,
1254 &feature_mimgR128,
1255 &feature_gfx7Gfx8Gfx9Insts,1358 &feature_gfx7Gfx8Gfx9Insts,
1256 &feature_movrel,1359 &feature_wavefrontsize64,
1360 &feature_mimgR128,
1361 &feature_noSramEccSupport,
1257 &feature_localmemorysize65536,1362 &feature_localmemorysize65536,
1363 &feature_fp64,
1258 &feature_ciInsts,1364 &feature_ciInsts,
1259 &feature_noSramEccSupport,
1260 &feature_wavefrontsize64,
1261 &feature_trigReducedRange,
1262 },1365 },
1263};1366};
12641367
...@@ -1270,28 +1373,28 @@ pub const cpu_gfx801 = Cpu{...@@ -1270,28 +1373,28 @@ pub const cpu_gfx801 = Cpu{
1270 &feature_fastFmaf,1373 &feature_fastFmaf,
1271 &feature_ldsbankcount32,1374 &feature_ldsbankcount32,
1272 &feature_unpackedD16Vmem,1375 &feature_unpackedD16Vmem,
1273 &feature_fp64,
1274 &feature_sMemrealtime,1376 &feature_sMemrealtime,
1275 &feature_BitInsts16,1377 &feature_scalarStores,
1276 &feature_wavefrontsize64,
1277 &feature_sdwa,
1278 &feature_flatAddressSpace,1378 &feature_flatAddressSpace,
1279 &feature_sdwaMav,
1280 &feature_mimgR128,
1281 &feature_ciInsts,
1282 &feature_noSramEccSupport,
1283 &feature_inv2piInlineImm,
1284 &feature_vgprIndexMode,1379 &feature_vgprIndexMode,
1285 &feature_gcn3Encoding,1380 &feature_wavefrontsize64,
1286 &feature_gfx8Insts,1381 &feature_mimgR128,
1287 &feature_scalarStores,
1288 &feature_intClampInsts,1382 &feature_intClampInsts,
1383 &feature_dpp,
1289 &feature_movrel,1384 &feature_movrel,
1385 &feature_gcn3Encoding,
1386 &feature_gfx8Insts,
1387 &feature_trigReducedRange,
1388 &feature_gfx7Gfx8Gfx9Insts,
1389 &feature_sdwaMav,
1390 &feature_sdwa,
1290 &feature_localmemorysize65536,1391 &feature_localmemorysize65536,
1392 &feature_BitInsts16,
1291 &feature_sdwaOutModsVopc,1393 &feature_sdwaOutModsVopc,
1292 &feature_dpp,1394 &feature_inv2piInlineImm,
1293 &feature_gfx7Gfx8Gfx9Insts,1395 &feature_noSramEccSupport,
1294 &feature_trigReducedRange,1396 &feature_fp64,
1397 &feature_ciInsts,
1295 &feature_xnack,1398 &feature_xnack,
1296 &feature_halfRate64Ops,1399 &feature_halfRate64Ops,
1297 },1400 },
...@@ -1306,28 +1409,28 @@ pub const cpu_gfx802 = Cpu{...@@ -1306,28 +1409,28 @@ pub const cpu_gfx802 = Cpu{
1306 &feature_ldsbankcount32,1409 &feature_ldsbankcount32,
1307 &feature_sgprInitBug,1410 &feature_sgprInitBug,
1308 &feature_unpackedD16Vmem,1411 &feature_unpackedD16Vmem,
1309 &feature_fp64,
1310 &feature_sMemrealtime,1412 &feature_sMemrealtime,
1311 &feature_BitInsts16,1413 &feature_scalarStores,
1312 &feature_wavefrontsize64,
1313 &feature_sdwa,
1314 &feature_flatAddressSpace,1414 &feature_flatAddressSpace,
1315 &feature_sdwaMav,
1316 &feature_mimgR128,
1317 &feature_ciInsts,
1318 &feature_noSramEccSupport,
1319 &feature_inv2piInlineImm,
1320 &feature_vgprIndexMode,1415 &feature_vgprIndexMode,
1321 &feature_gcn3Encoding,1416 &feature_wavefrontsize64,
1322 &feature_gfx8Insts,1417 &feature_mimgR128,
1323 &feature_scalarStores,
1324 &feature_intClampInsts,1418 &feature_intClampInsts,
1419 &feature_dpp,
1325 &feature_movrel,1420 &feature_movrel,
1421 &feature_gcn3Encoding,
1422 &feature_gfx8Insts,
1423 &feature_trigReducedRange,
1424 &feature_gfx7Gfx8Gfx9Insts,
1425 &feature_sdwaMav,
1426 &feature_sdwa,
1326 &feature_localmemorysize65536,1427 &feature_localmemorysize65536,
1428 &feature_BitInsts16,
1327 &feature_sdwaOutModsVopc,1429 &feature_sdwaOutModsVopc,
1328 &feature_dpp,1430 &feature_inv2piInlineImm,
1329 &feature_gfx7Gfx8Gfx9Insts,1431 &feature_noSramEccSupport,
1330 &feature_trigReducedRange,1432 &feature_fp64,
1433 &feature_ciInsts,
1331 },1434 },
1332};1435};
13331436
...@@ -1339,28 +1442,28 @@ pub const cpu_gfx803 = Cpu{...@@ -1339,28 +1442,28 @@ pub const cpu_gfx803 = Cpu{
1339 &feature_noXnackSupport,1442 &feature_noXnackSupport,
1340 &feature_ldsbankcount32,1443 &feature_ldsbankcount32,
1341 &feature_unpackedD16Vmem,1444 &feature_unpackedD16Vmem,
1342 &feature_fp64,
1343 &feature_sMemrealtime,1445 &feature_sMemrealtime,
1344 &feature_BitInsts16,1446 &feature_scalarStores,
1345 &feature_wavefrontsize64,
1346 &feature_sdwa,
1347 &feature_flatAddressSpace,1447 &feature_flatAddressSpace,
1348 &feature_sdwaMav,
1349 &feature_mimgR128,
1350 &feature_ciInsts,
1351 &feature_noSramEccSupport,
1352 &feature_inv2piInlineImm,
1353 &feature_vgprIndexMode,1448 &feature_vgprIndexMode,
1354 &feature_gcn3Encoding,1449 &feature_wavefrontsize64,
1355 &feature_gfx8Insts,1450 &feature_mimgR128,
1356 &feature_scalarStores,
1357 &feature_intClampInsts,1451 &feature_intClampInsts,
1452 &feature_dpp,
1358 &feature_movrel,1453 &feature_movrel,
1454 &feature_gcn3Encoding,
1455 &feature_gfx8Insts,
1456 &feature_trigReducedRange,
1457 &feature_gfx7Gfx8Gfx9Insts,
1458 &feature_sdwaMav,
1459 &feature_sdwa,
1359 &feature_localmemorysize65536,1460 &feature_localmemorysize65536,
1461 &feature_BitInsts16,
1360 &feature_sdwaOutModsVopc,1462 &feature_sdwaOutModsVopc,
1361 &feature_dpp,1463 &feature_inv2piInlineImm,
1362 &feature_gfx7Gfx8Gfx9Insts,1464 &feature_noSramEccSupport,
1363 &feature_trigReducedRange,1465 &feature_fp64,
1466 &feature_ciInsts,
1364 },1467 },
1365};1468};
13661469
...@@ -1370,28 +1473,28 @@ pub const cpu_gfx810 = Cpu{...@@ -1370,28 +1473,28 @@ pub const cpu_gfx810 = Cpu{
1370 .dependencies = &[_]*const Feature {1473 .dependencies = &[_]*const Feature {
1371 &feature_codeObjectV3,1474 &feature_codeObjectV3,
1372 &feature_ldsbankcount16,1475 &feature_ldsbankcount16,
1373 &feature_fp64,
1374 &feature_sMemrealtime,1476 &feature_sMemrealtime,
1375 &feature_BitInsts16,1477 &feature_scalarStores,
1376 &feature_wavefrontsize64,
1377 &feature_sdwa,
1378 &feature_flatAddressSpace,1478 &feature_flatAddressSpace,
1379 &feature_sdwaMav,
1380 &feature_mimgR128,
1381 &feature_ciInsts,
1382 &feature_noSramEccSupport,
1383 &feature_inv2piInlineImm,
1384 &feature_vgprIndexMode,1479 &feature_vgprIndexMode,
1385 &feature_gcn3Encoding,1480 &feature_wavefrontsize64,
1386 &feature_gfx8Insts,1481 &feature_mimgR128,
1387 &feature_scalarStores,
1388 &feature_intClampInsts,1482 &feature_intClampInsts,
1483 &feature_dpp,
1389 &feature_movrel,1484 &feature_movrel,
1485 &feature_gcn3Encoding,
1486 &feature_gfx8Insts,
1487 &feature_trigReducedRange,
1488 &feature_gfx7Gfx8Gfx9Insts,
1489 &feature_sdwaMav,
1490 &feature_sdwa,
1390 &feature_localmemorysize65536,1491 &feature_localmemorysize65536,
1492 &feature_BitInsts16,
1391 &feature_sdwaOutModsVopc,1493 &feature_sdwaOutModsVopc,
1392 &feature_dpp,1494 &feature_inv2piInlineImm,
1393 &feature_gfx7Gfx8Gfx9Insts,1495 &feature_noSramEccSupport,
1394 &feature_trigReducedRange,1496 &feature_fp64,
1497 &feature_ciInsts,
1395 &feature_xnack,1498 &feature_xnack,
1396 },1499 },
1397};1500};
...@@ -1403,36 +1506,36 @@ pub const cpu_gfx900 = Cpu{...@@ -1403,36 +1506,36 @@ pub const cpu_gfx900 = Cpu{
1403 &feature_codeObjectV3,1506 &feature_codeObjectV3,
1404 &feature_noSramEccSupport,1507 &feature_noSramEccSupport,
1405 &feature_noXnackSupport,1508 &feature_noXnackSupport,
1406 &feature_flatScratchInsts,1509 &feature_sdwaOmod,
1407 &feature_fp64,
1408 &feature_r128A16,
1409 &feature_sMemrealtime,1510 &feature_sMemrealtime,
1410 &feature_addNoCarryInsts,1511 &feature_scalarStores,
1411 &feature_vop3p,1512 &feature_flatAddressSpace,
1513 &feature_vgprIndexMode,
1514 &feature_gfx9Insts,
1515 &feature_r128A16,
1412 &feature_fastFmaf,1516 &feature_fastFmaf,
1413 &feature_BitInsts16,
1414 &feature_wavefrontsize64,1517 &feature_wavefrontsize64,
1415 &feature_sdwa,1518 &feature_flatScratchInsts,
1416 &feature_gfx9Insts,1519 &feature_sdwaSdst,
1417 &feature_flatAddressSpace,1520 &feature_vop3p,
1418 &feature_apertureRegs,1521 &feature_intClampInsts,
1419 &feature_sdwaScalar,1522 &feature_dpp,
1420 &feature_ciInsts,
1421 &feature_scalarAtomics,1523 &feature_scalarAtomics,
1422 &feature_scalarFlatScratchInsts,
1423 &feature_inv2piInlineImm,
1424 &feature_vgprIndexMode,
1425 &feature_gcn3Encoding,1524 &feature_gcn3Encoding,
1426 &feature_gfx8Insts,1525 &feature_gfx8Insts,
1427 &feature_scalarStores,
1428 &feature_intClampInsts,
1429 &feature_localmemorysize65536,
1430 &feature_flatGlobalInsts,
1431 &feature_sdwaOmod,
1432 &feature_dpp,
1433 &feature_gfx7Gfx8Gfx9Insts,1526 &feature_gfx7Gfx8Gfx9Insts,
1434 &feature_sdwaSdst,1527 &feature_sdwa,
1528 &feature_flatGlobalInsts,
1529 &feature_localmemorysize65536,
1530 &feature_BitInsts16,
1531 &feature_addNoCarryInsts,
1435 &feature_flatInstOffsets,1532 &feature_flatInstOffsets,
1533 &feature_sdwaScalar,
1534 &feature_inv2piInlineImm,
1535 &feature_apertureRegs,
1536 &feature_fp64,
1537 &feature_ciInsts,
1538 &feature_scalarFlatScratchInsts,
1436 &feature_ldsbankcount32,1539 &feature_ldsbankcount32,
1437 &feature_madMixInsts,1540 &feature_madMixInsts,
1438 },1541 },
...@@ -1444,36 +1547,36 @@ pub const cpu_gfx902 = Cpu{...@@ -1444,36 +1547,36 @@ pub const cpu_gfx902 = Cpu{
1444 .dependencies = &[_]*const Feature {1547 .dependencies = &[_]*const Feature {
1445 &feature_codeObjectV3,1548 &feature_codeObjectV3,
1446 &feature_noSramEccSupport,1549 &feature_noSramEccSupport,
1447 &feature_flatScratchInsts,1550 &feature_sdwaOmod,
1448 &feature_fp64,
1449 &feature_r128A16,
1450 &feature_sMemrealtime,1551 &feature_sMemrealtime,
1451 &feature_addNoCarryInsts,1552 &feature_scalarStores,
1452 &feature_vop3p,1553 &feature_flatAddressSpace,
1554 &feature_vgprIndexMode,
1555 &feature_gfx9Insts,
1556 &feature_r128A16,
1453 &feature_fastFmaf,1557 &feature_fastFmaf,
1454 &feature_BitInsts16,
1455 &feature_wavefrontsize64,1558 &feature_wavefrontsize64,
1456 &feature_sdwa,1559 &feature_flatScratchInsts,
1457 &feature_gfx9Insts,1560 &feature_sdwaSdst,
1458 &feature_flatAddressSpace,1561 &feature_vop3p,
1459 &feature_apertureRegs,1562 &feature_intClampInsts,
1460 &feature_sdwaScalar,1563 &feature_dpp,
1461 &feature_ciInsts,
1462 &feature_scalarAtomics,1564 &feature_scalarAtomics,
1463 &feature_scalarFlatScratchInsts,
1464 &feature_inv2piInlineImm,
1465 &feature_vgprIndexMode,
1466 &feature_gcn3Encoding,1565 &feature_gcn3Encoding,
1467 &feature_gfx8Insts,1566 &feature_gfx8Insts,
1468 &feature_scalarStores,
1469 &feature_intClampInsts,
1470 &feature_localmemorysize65536,
1471 &feature_flatGlobalInsts,
1472 &feature_sdwaOmod,
1473 &feature_dpp,
1474 &feature_gfx7Gfx8Gfx9Insts,1567 &feature_gfx7Gfx8Gfx9Insts,
1475 &feature_sdwaSdst,1568 &feature_sdwa,
1569 &feature_flatGlobalInsts,
1570 &feature_localmemorysize65536,
1571 &feature_BitInsts16,
1572 &feature_addNoCarryInsts,
1476 &feature_flatInstOffsets,1573 &feature_flatInstOffsets,
1574 &feature_sdwaScalar,
1575 &feature_inv2piInlineImm,
1576 &feature_apertureRegs,
1577 &feature_fp64,
1578 &feature_ciInsts,
1579 &feature_scalarFlatScratchInsts,
1477 &feature_ldsbankcount32,1580 &feature_ldsbankcount32,
1478 &feature_madMixInsts,1581 &feature_madMixInsts,
1479 &feature_xnack,1582 &feature_xnack,
...@@ -1488,36 +1591,36 @@ pub const cpu_gfx904 = Cpu{...@@ -1488,36 +1591,36 @@ pub const cpu_gfx904 = Cpu{
1488 &feature_noSramEccSupport,1591 &feature_noSramEccSupport,
1489 &feature_noXnackSupport,1592 &feature_noXnackSupport,
1490 &feature_fmaMixInsts,1593 &feature_fmaMixInsts,
1491 &feature_flatScratchInsts,1594 &feature_sdwaOmod,
1492 &feature_fp64,
1493 &feature_r128A16,
1494 &feature_sMemrealtime,1595 &feature_sMemrealtime,
1495 &feature_addNoCarryInsts,1596 &feature_scalarStores,
1496 &feature_vop3p,1597 &feature_flatAddressSpace,
1598 &feature_vgprIndexMode,
1599 &feature_gfx9Insts,
1600 &feature_r128A16,
1497 &feature_fastFmaf,1601 &feature_fastFmaf,
1498 &feature_BitInsts16,
1499 &feature_wavefrontsize64,1602 &feature_wavefrontsize64,
1500 &feature_sdwa,1603 &feature_flatScratchInsts,
1501 &feature_gfx9Insts,1604 &feature_sdwaSdst,
1502 &feature_flatAddressSpace,1605 &feature_vop3p,
1503 &feature_apertureRegs,1606 &feature_intClampInsts,
1504 &feature_sdwaScalar,1607 &feature_dpp,
1505 &feature_ciInsts,
1506 &feature_scalarAtomics,1608 &feature_scalarAtomics,
1507 &feature_scalarFlatScratchInsts,
1508 &feature_inv2piInlineImm,
1509 &feature_vgprIndexMode,
1510 &feature_gcn3Encoding,1609 &feature_gcn3Encoding,
1511 &feature_gfx8Insts,1610 &feature_gfx8Insts,
1512 &feature_scalarStores,
1513 &feature_intClampInsts,
1514 &feature_localmemorysize65536,
1515 &feature_flatGlobalInsts,
1516 &feature_sdwaOmod,
1517 &feature_dpp,
1518 &feature_gfx7Gfx8Gfx9Insts,1611 &feature_gfx7Gfx8Gfx9Insts,
1519 &feature_sdwaSdst,1612 &feature_sdwa,
1613 &feature_flatGlobalInsts,
1614 &feature_localmemorysize65536,
1615 &feature_BitInsts16,
1616 &feature_addNoCarryInsts,
1520 &feature_flatInstOffsets,1617 &feature_flatInstOffsets,
1618 &feature_sdwaScalar,
1619 &feature_inv2piInlineImm,
1620 &feature_apertureRegs,
1621 &feature_fp64,
1622 &feature_ciInsts,
1623 &feature_scalarFlatScratchInsts,
1521 &feature_ldsbankcount32,1624 &feature_ldsbankcount32,
1522 },1625 },
1523};1626};
...@@ -1532,36 +1635,36 @@ pub const cpu_gfx906 = Cpu{...@@ -1532,36 +1635,36 @@ pub const cpu_gfx906 = Cpu{
1532 &feature_dot1Insts,1635 &feature_dot1Insts,
1533 &feature_dot2Insts,1636 &feature_dot2Insts,
1534 &feature_fmaMixInsts,1637 &feature_fmaMixInsts,
1535 &feature_flatScratchInsts,1638 &feature_sdwaOmod,
1536 &feature_fp64,
1537 &feature_r128A16,
1538 &feature_sMemrealtime,1639 &feature_sMemrealtime,
1539 &feature_addNoCarryInsts,1640 &feature_scalarStores,
1540 &feature_vop3p,1641 &feature_flatAddressSpace,
1642 &feature_vgprIndexMode,
1643 &feature_gfx9Insts,
1644 &feature_r128A16,
1541 &feature_fastFmaf,1645 &feature_fastFmaf,
1542 &feature_BitInsts16,
1543 &feature_wavefrontsize64,1646 &feature_wavefrontsize64,
1544 &feature_sdwa,1647 &feature_flatScratchInsts,
1545 &feature_gfx9Insts,1648 &feature_sdwaSdst,
1546 &feature_flatAddressSpace,1649 &feature_vop3p,
1547 &feature_apertureRegs,1650 &feature_intClampInsts,
1548 &feature_sdwaScalar,1651 &feature_dpp,
1549 &feature_ciInsts,
1550 &feature_scalarAtomics,1652 &feature_scalarAtomics,
1551 &feature_scalarFlatScratchInsts,
1552 &feature_inv2piInlineImm,
1553 &feature_vgprIndexMode,
1554 &feature_gcn3Encoding,1653 &feature_gcn3Encoding,
1555 &feature_gfx8Insts,1654 &feature_gfx8Insts,
1556 &feature_scalarStores,
1557 &feature_intClampInsts,
1558 &feature_localmemorysize65536,
1559 &feature_flatGlobalInsts,
1560 &feature_sdwaOmod,
1561 &feature_dpp,
1562 &feature_gfx7Gfx8Gfx9Insts,1655 &feature_gfx7Gfx8Gfx9Insts,
1563 &feature_sdwaSdst,1656 &feature_sdwa,
1657 &feature_flatGlobalInsts,
1658 &feature_localmemorysize65536,
1659 &feature_BitInsts16,
1660 &feature_addNoCarryInsts,
1564 &feature_flatInstOffsets,1661 &feature_flatInstOffsets,
1662 &feature_sdwaScalar,
1663 &feature_inv2piInlineImm,
1664 &feature_apertureRegs,
1665 &feature_fp64,
1666 &feature_ciInsts,
1667 &feature_scalarFlatScratchInsts,
1565 &feature_ldsbankcount32,1668 &feature_ldsbankcount32,
1566 &feature_halfRate64Ops,1669 &feature_halfRate64Ops,
1567 },1670 },
...@@ -1581,36 +1684,36 @@ pub const cpu_gfx908 = Cpu{...@@ -1581,36 +1684,36 @@ pub const cpu_gfx908 = Cpu{
1581 &feature_dot5Insts,1684 &feature_dot5Insts,
1582 &feature_dot6Insts,1685 &feature_dot6Insts,
1583 &feature_fmaMixInsts,1686 &feature_fmaMixInsts,
1584 &feature_flatScratchInsts,1687 &feature_sdwaOmod,
1585 &feature_fp64,
1586 &feature_r128A16,
1587 &feature_sMemrealtime,1688 &feature_sMemrealtime,
1588 &feature_addNoCarryInsts,1689 &feature_scalarStores,
1589 &feature_vop3p,1690 &feature_flatAddressSpace,
1691 &feature_vgprIndexMode,
1692 &feature_gfx9Insts,
1693 &feature_r128A16,
1590 &feature_fastFmaf,1694 &feature_fastFmaf,
1591 &feature_BitInsts16,
1592 &feature_wavefrontsize64,1695 &feature_wavefrontsize64,
1593 &feature_sdwa,1696 &feature_flatScratchInsts,
1594 &feature_gfx9Insts,1697 &feature_sdwaSdst,
1595 &feature_flatAddressSpace,1698 &feature_vop3p,
1596 &feature_apertureRegs,1699 &feature_intClampInsts,
1597 &feature_sdwaScalar,1700 &feature_dpp,
1598 &feature_ciInsts,
1599 &feature_scalarAtomics,1701 &feature_scalarAtomics,
1600 &feature_scalarFlatScratchInsts,
1601 &feature_inv2piInlineImm,
1602 &feature_vgprIndexMode,
1603 &feature_gcn3Encoding,1702 &feature_gcn3Encoding,
1604 &feature_gfx8Insts,1703 &feature_gfx8Insts,
1605 &feature_scalarStores,
1606 &feature_intClampInsts,
1607 &feature_localmemorysize65536,
1608 &feature_flatGlobalInsts,
1609 &feature_sdwaOmod,
1610 &feature_dpp,
1611 &feature_gfx7Gfx8Gfx9Insts,1704 &feature_gfx7Gfx8Gfx9Insts,
1612 &feature_sdwaSdst,1705 &feature_sdwa,
1706 &feature_flatGlobalInsts,
1707 &feature_localmemorysize65536,
1708 &feature_BitInsts16,
1709 &feature_addNoCarryInsts,
1613 &feature_flatInstOffsets,1710 &feature_flatInstOffsets,
1711 &feature_sdwaScalar,
1712 &feature_inv2piInlineImm,
1713 &feature_apertureRegs,
1714 &feature_fp64,
1715 &feature_ciInsts,
1716 &feature_scalarFlatScratchInsts,
1614 &feature_ldsbankcount32,1717 &feature_ldsbankcount32,
1615 &feature_maiInsts,1718 &feature_maiInsts,
1616 &feature_mfmaInlineLiteralBug,1719 &feature_mfmaInlineLiteralBug,
...@@ -1625,36 +1728,36 @@ pub const cpu_gfx909 = Cpu{...@@ -1625,36 +1728,36 @@ pub const cpu_gfx909 = Cpu{
1625 .llvm_name = "gfx909",1728 .llvm_name = "gfx909",
1626 .dependencies = &[_]*const Feature {1729 .dependencies = &[_]*const Feature {
1627 &feature_codeObjectV3,1730 &feature_codeObjectV3,
1628 &feature_flatScratchInsts,1731 &feature_sdwaOmod,
1629 &feature_fp64,
1630 &feature_r128A16,
1631 &feature_sMemrealtime,1732 &feature_sMemrealtime,
1632 &feature_addNoCarryInsts,1733 &feature_scalarStores,
1633 &feature_vop3p,1734 &feature_flatAddressSpace,
1735 &feature_vgprIndexMode,
1736 &feature_gfx9Insts,
1737 &feature_r128A16,
1634 &feature_fastFmaf,1738 &feature_fastFmaf,
1635 &feature_BitInsts16,
1636 &feature_wavefrontsize64,1739 &feature_wavefrontsize64,
1637 &feature_sdwa,1740 &feature_flatScratchInsts,
1638 &feature_gfx9Insts,1741 &feature_sdwaSdst,
1639 &feature_flatAddressSpace,1742 &feature_vop3p,
1640 &feature_apertureRegs,1743 &feature_intClampInsts,
1641 &feature_sdwaScalar,1744 &feature_dpp,
1642 &feature_ciInsts,
1643 &feature_scalarAtomics,1745 &feature_scalarAtomics,
1644 &feature_scalarFlatScratchInsts,
1645 &feature_inv2piInlineImm,
1646 &feature_vgprIndexMode,
1647 &feature_gcn3Encoding,1746 &feature_gcn3Encoding,
1648 &feature_gfx8Insts,1747 &feature_gfx8Insts,
1649 &feature_scalarStores,
1650 &feature_intClampInsts,
1651 &feature_localmemorysize65536,
1652 &feature_flatGlobalInsts,
1653 &feature_sdwaOmod,
1654 &feature_dpp,
1655 &feature_gfx7Gfx8Gfx9Insts,1748 &feature_gfx7Gfx8Gfx9Insts,
1656 &feature_sdwaSdst,1749 &feature_sdwa,
1750 &feature_flatGlobalInsts,
1751 &feature_localmemorysize65536,
1752 &feature_BitInsts16,
1753 &feature_addNoCarryInsts,
1657 &feature_flatInstOffsets,1754 &feature_flatInstOffsets,
1755 &feature_sdwaScalar,
1756 &feature_inv2piInlineImm,
1757 &feature_apertureRegs,
1758 &feature_fp64,
1759 &feature_ciInsts,
1760 &feature_scalarFlatScratchInsts,
1658 &feature_ldsbankcount32,1761 &feature_ldsbankcount32,
1659 &feature_madMixInsts,1762 &feature_madMixInsts,
1660 &feature_xnack,1763 &feature_xnack,
...@@ -1668,13 +1771,13 @@ pub const cpu_hainan = Cpu{...@@ -1668,13 +1771,13 @@ pub const cpu_hainan = Cpu{
1668 &feature_codeObjectV3,1771 &feature_codeObjectV3,
1669 &feature_noXnackSupport,1772 &feature_noXnackSupport,
1670 &feature_ldsbankcount32,1773 &feature_ldsbankcount32,
1671 &feature_localmemorysize32768,
1672 &feature_fp64,
1673 &feature_mimgR128,
1674 &feature_movrel,1774 &feature_movrel,
1675 &feature_noSramEccSupport,
1676 &feature_wavefrontsize64,
1677 &feature_trigReducedRange,1775 &feature_trigReducedRange,
1776 &feature_mimgR128,
1777 &feature_localmemorysize32768,
1778 &feature_wavefrontsize64,
1779 &feature_noSramEccSupport,
1780 &feature_fp64,
1678 },1781 },
1679};1782};
16801783
...@@ -1686,16 +1789,16 @@ pub const cpu_hawaii = Cpu{...@@ -1686,16 +1789,16 @@ pub const cpu_hawaii = Cpu{
1686 &feature_noXnackSupport,1789 &feature_noXnackSupport,
1687 &feature_fastFmaf,1790 &feature_fastFmaf,
1688 &feature_ldsbankcount32,1791 &feature_ldsbankcount32,
1792 &feature_movrel,
1689 &feature_flatAddressSpace,1793 &feature_flatAddressSpace,
1690 &feature_fp64,1794 &feature_trigReducedRange,
1691 &feature_mimgR128,
1692 &feature_gfx7Gfx8Gfx9Insts,1795 &feature_gfx7Gfx8Gfx9Insts,
1693 &feature_movrel,1796 &feature_wavefrontsize64,
1797 &feature_mimgR128,
1798 &feature_noSramEccSupport,
1694 &feature_localmemorysize65536,1799 &feature_localmemorysize65536,
1800 &feature_fp64,
1695 &feature_ciInsts,1801 &feature_ciInsts,
1696 &feature_noSramEccSupport,
1697 &feature_wavefrontsize64,
1698 &feature_trigReducedRange,
1699 &feature_halfRate64Ops,1802 &feature_halfRate64Ops,
1700 },1803 },
1701};1804};
...@@ -1709,28 +1812,28 @@ pub const cpu_iceland = Cpu{...@@ -1709,28 +1812,28 @@ pub const cpu_iceland = Cpu{
1709 &feature_ldsbankcount32,1812 &feature_ldsbankcount32,
1710 &feature_sgprInitBug,1813 &feature_sgprInitBug,
1711 &feature_unpackedD16Vmem,1814 &feature_unpackedD16Vmem,
1712 &feature_fp64,
1713 &feature_sMemrealtime,1815 &feature_sMemrealtime,
1714 &feature_BitInsts16,1816 &feature_scalarStores,
1715 &feature_wavefrontsize64,
1716 &feature_sdwa,
1717 &feature_flatAddressSpace,1817 &feature_flatAddressSpace,
1718 &feature_sdwaMav,
1719 &feature_mimgR128,
1720 &feature_ciInsts,
1721 &feature_noSramEccSupport,
1722 &feature_inv2piInlineImm,
1723 &feature_vgprIndexMode,1818 &feature_vgprIndexMode,
1724 &feature_gcn3Encoding,1819 &feature_wavefrontsize64,
1725 &feature_gfx8Insts,1820 &feature_mimgR128,
1726 &feature_scalarStores,
1727 &feature_intClampInsts,1821 &feature_intClampInsts,
1822 &feature_dpp,
1728 &feature_movrel,1823 &feature_movrel,
1824 &feature_gcn3Encoding,
1825 &feature_gfx8Insts,
1826 &feature_trigReducedRange,
1827 &feature_gfx7Gfx8Gfx9Insts,
1828 &feature_sdwaMav,
1829 &feature_sdwa,
1729 &feature_localmemorysize65536,1830 &feature_localmemorysize65536,
1831 &feature_BitInsts16,
1730 &feature_sdwaOutModsVopc,1832 &feature_sdwaOutModsVopc,
1731 &feature_dpp,1833 &feature_inv2piInlineImm,
1732 &feature_gfx7Gfx8Gfx9Insts,1834 &feature_noSramEccSupport,
1733 &feature_trigReducedRange,1835 &feature_fp64,
1836 &feature_ciInsts,
1734 },1837 },
1735};1838};
17361839
...@@ -1741,16 +1844,16 @@ pub const cpu_kabini = Cpu{...@@ -1741,16 +1844,16 @@ pub const cpu_kabini = Cpu{
1741 &feature_codeObjectV3,1844 &feature_codeObjectV3,
1742 &feature_noXnackSupport,1845 &feature_noXnackSupport,
1743 &feature_ldsbankcount16,1846 &feature_ldsbankcount16,
1847 &feature_movrel,
1744 &feature_flatAddressSpace,1848 &feature_flatAddressSpace,
1745 &feature_fp64,1849 &feature_trigReducedRange,
1746 &feature_mimgR128,
1747 &feature_gfx7Gfx8Gfx9Insts,1850 &feature_gfx7Gfx8Gfx9Insts,
1748 &feature_movrel,1851 &feature_wavefrontsize64,
1852 &feature_mimgR128,
1853 &feature_noSramEccSupport,
1749 &feature_localmemorysize65536,1854 &feature_localmemorysize65536,
1855 &feature_fp64,
1750 &feature_ciInsts,1856 &feature_ciInsts,
1751 &feature_noSramEccSupport,
1752 &feature_wavefrontsize64,
1753 &feature_trigReducedRange,
1754 },1857 },
1755};1858};
17561859
...@@ -1761,16 +1864,16 @@ pub const cpu_kaveri = Cpu{...@@ -1761,16 +1864,16 @@ pub const cpu_kaveri = Cpu{
1761 &feature_codeObjectV3,1864 &feature_codeObjectV3,
1762 &feature_noXnackSupport,1865 &feature_noXnackSupport,
1763 &feature_ldsbankcount32,1866 &feature_ldsbankcount32,
1867 &feature_movrel,
1764 &feature_flatAddressSpace,1868 &feature_flatAddressSpace,
1765 &feature_fp64,1869 &feature_trigReducedRange,
1766 &feature_mimgR128,
1767 &feature_gfx7Gfx8Gfx9Insts,1870 &feature_gfx7Gfx8Gfx9Insts,
1768 &feature_movrel,1871 &feature_wavefrontsize64,
1872 &feature_mimgR128,
1873 &feature_noSramEccSupport,
1769 &feature_localmemorysize65536,1874 &feature_localmemorysize65536,
1875 &feature_fp64,
1770 &feature_ciInsts,1876 &feature_ciInsts,
1771 &feature_noSramEccSupport,
1772 &feature_wavefrontsize64,
1773 &feature_trigReducedRange,
1774 },1877 },
1775};1878};
17761879
...@@ -1781,16 +1884,16 @@ pub const cpu_mullins = Cpu{...@@ -1781,16 +1884,16 @@ pub const cpu_mullins = Cpu{
1781 &feature_codeObjectV3,1884 &feature_codeObjectV3,
1782 &feature_noXnackSupport,1885 &feature_noXnackSupport,
1783 &feature_ldsbankcount16,1886 &feature_ldsbankcount16,
1887 &feature_movrel,
1784 &feature_flatAddressSpace,1888 &feature_flatAddressSpace,
1785 &feature_fp64,1889 &feature_trigReducedRange,
1786 &feature_mimgR128,
1787 &feature_gfx7Gfx8Gfx9Insts,1890 &feature_gfx7Gfx8Gfx9Insts,
1788 &feature_movrel,1891 &feature_wavefrontsize64,
1892 &feature_mimgR128,
1893 &feature_noSramEccSupport,
1789 &feature_localmemorysize65536,1894 &feature_localmemorysize65536,
1895 &feature_fp64,
1790 &feature_ciInsts,1896 &feature_ciInsts,
1791 &feature_noSramEccSupport,
1792 &feature_wavefrontsize64,
1793 &feature_trigReducedRange,
1794 },1897 },
1795};1898};
17961899
...@@ -1801,13 +1904,13 @@ pub const cpu_oland = Cpu{...@@ -1801,13 +1904,13 @@ pub const cpu_oland = Cpu{
1801 &feature_codeObjectV3,1904 &feature_codeObjectV3,
1802 &feature_noXnackSupport,1905 &feature_noXnackSupport,
1803 &feature_ldsbankcount32,1906 &feature_ldsbankcount32,
1804 &feature_localmemorysize32768,
1805 &feature_fp64,
1806 &feature_mimgR128,
1807 &feature_movrel,1907 &feature_movrel,
1808 &feature_noSramEccSupport,
1809 &feature_wavefrontsize64,
1810 &feature_trigReducedRange,1908 &feature_trigReducedRange,
1909 &feature_mimgR128,
1910 &feature_localmemorysize32768,
1911 &feature_wavefrontsize64,
1912 &feature_noSramEccSupport,
1913 &feature_fp64,
1811 },1914 },
1812};1915};
18131916
...@@ -1818,13 +1921,13 @@ pub const cpu_pitcairn = Cpu{...@@ -1818,13 +1921,13 @@ pub const cpu_pitcairn = Cpu{
1818 &feature_codeObjectV3,1921 &feature_codeObjectV3,
1819 &feature_noXnackSupport,1922 &feature_noXnackSupport,
1820 &feature_ldsbankcount32,1923 &feature_ldsbankcount32,
1821 &feature_localmemorysize32768,
1822 &feature_fp64,
1823 &feature_mimgR128,
1824 &feature_movrel,1924 &feature_movrel,
1825 &feature_noSramEccSupport,
1826 &feature_wavefrontsize64,
1827 &feature_trigReducedRange,1925 &feature_trigReducedRange,
1926 &feature_mimgR128,
1927 &feature_localmemorysize32768,
1928 &feature_wavefrontsize64,
1929 &feature_noSramEccSupport,
1930 &feature_fp64,
1828 },1931 },
1829};1932};
18301933
...@@ -1836,28 +1939,28 @@ pub const cpu_polaris10 = Cpu{...@@ -1836,28 +1939,28 @@ pub const cpu_polaris10 = Cpu{
1836 &feature_noXnackSupport,1939 &feature_noXnackSupport,
1837 &feature_ldsbankcount32,1940 &feature_ldsbankcount32,
1838 &feature_unpackedD16Vmem,1941 &feature_unpackedD16Vmem,
1839 &feature_fp64,
1840 &feature_sMemrealtime,1942 &feature_sMemrealtime,
1841 &feature_BitInsts16,1943 &feature_scalarStores,
1842 &feature_wavefrontsize64,
1843 &feature_sdwa,
1844 &feature_flatAddressSpace,1944 &feature_flatAddressSpace,
1845 &feature_sdwaMav,
1846 &feature_mimgR128,
1847 &feature_ciInsts,
1848 &feature_noSramEccSupport,
1849 &feature_inv2piInlineImm,
1850 &feature_vgprIndexMode,1945 &feature_vgprIndexMode,
1851 &feature_gcn3Encoding,1946 &feature_wavefrontsize64,
1852 &feature_gfx8Insts,1947 &feature_mimgR128,
1853 &feature_scalarStores,
1854 &feature_intClampInsts,1948 &feature_intClampInsts,
1949 &feature_dpp,
1855 &feature_movrel,1950 &feature_movrel,
1951 &feature_gcn3Encoding,
1952 &feature_gfx8Insts,
1953 &feature_trigReducedRange,
1954 &feature_gfx7Gfx8Gfx9Insts,
1955 &feature_sdwaMav,
1956 &feature_sdwa,
1856 &feature_localmemorysize65536,1957 &feature_localmemorysize65536,
1958 &feature_BitInsts16,
1857 &feature_sdwaOutModsVopc,1959 &feature_sdwaOutModsVopc,
1858 &feature_dpp,1960 &feature_inv2piInlineImm,
1859 &feature_gfx7Gfx8Gfx9Insts,1961 &feature_noSramEccSupport,
1860 &feature_trigReducedRange,1962 &feature_fp64,
1963 &feature_ciInsts,
1861 },1964 },
1862};1965};
18631966
...@@ -1869,28 +1972,28 @@ pub const cpu_polaris11 = Cpu{...@@ -1869,28 +1972,28 @@ pub const cpu_polaris11 = Cpu{
1869 &feature_noXnackSupport,1972 &feature_noXnackSupport,
1870 &feature_ldsbankcount32,1973 &feature_ldsbankcount32,
1871 &feature_unpackedD16Vmem,1974 &feature_unpackedD16Vmem,
1872 &feature_fp64,
1873 &feature_sMemrealtime,1975 &feature_sMemrealtime,
1874 &feature_BitInsts16,1976 &feature_scalarStores,
1875 &feature_wavefrontsize64,
1876 &feature_sdwa,
1877 &feature_flatAddressSpace,1977 &feature_flatAddressSpace,
1878 &feature_sdwaMav,
1879 &feature_mimgR128,
1880 &feature_ciInsts,
1881 &feature_noSramEccSupport,
1882 &feature_inv2piInlineImm,
1883 &feature_vgprIndexMode,1978 &feature_vgprIndexMode,
1884 &feature_gcn3Encoding,1979 &feature_wavefrontsize64,
1885 &feature_gfx8Insts,1980 &feature_mimgR128,
1886 &feature_scalarStores,
1887 &feature_intClampInsts,1981 &feature_intClampInsts,
1982 &feature_dpp,
1888 &feature_movrel,1983 &feature_movrel,
1984 &feature_gcn3Encoding,
1985 &feature_gfx8Insts,
1986 &feature_trigReducedRange,
1987 &feature_gfx7Gfx8Gfx9Insts,
1988 &feature_sdwaMav,
1989 &feature_sdwa,
1889 &feature_localmemorysize65536,1990 &feature_localmemorysize65536,
1991 &feature_BitInsts16,
1890 &feature_sdwaOutModsVopc,1992 &feature_sdwaOutModsVopc,
1891 &feature_dpp,1993 &feature_inv2piInlineImm,
1892 &feature_gfx7Gfx8Gfx9Insts,1994 &feature_noSramEccSupport,
1893 &feature_trigReducedRange,1995 &feature_fp64,
1996 &feature_ciInsts,
1894 },1997 },
1895};1998};
18961999
...@@ -1900,28 +2003,28 @@ pub const cpu_stoney = Cpu{...@@ -1900,28 +2003,28 @@ pub const cpu_stoney = Cpu{
1900 .dependencies = &[_]*const Feature {2003 .dependencies = &[_]*const Feature {
1901 &feature_codeObjectV3,2004 &feature_codeObjectV3,
1902 &feature_ldsbankcount16,2005 &feature_ldsbankcount16,
1903 &feature_fp64,
1904 &feature_sMemrealtime,2006 &feature_sMemrealtime,
1905 &feature_BitInsts16,2007 &feature_scalarStores,
1906 &feature_wavefrontsize64,
1907 &feature_sdwa,
1908 &feature_flatAddressSpace,2008 &feature_flatAddressSpace,
1909 &feature_sdwaMav,
1910 &feature_mimgR128,
1911 &feature_ciInsts,
1912 &feature_noSramEccSupport,
1913 &feature_inv2piInlineImm,
1914 &feature_vgprIndexMode,2009 &feature_vgprIndexMode,
1915 &feature_gcn3Encoding,2010 &feature_wavefrontsize64,
1916 &feature_gfx8Insts,2011 &feature_mimgR128,
1917 &feature_scalarStores,
1918 &feature_intClampInsts,2012 &feature_intClampInsts,
2013 &feature_dpp,
1919 &feature_movrel,2014 &feature_movrel,
2015 &feature_gcn3Encoding,
2016 &feature_gfx8Insts,
2017 &feature_trigReducedRange,
2018 &feature_gfx7Gfx8Gfx9Insts,
2019 &feature_sdwaMav,
2020 &feature_sdwa,
1920 &feature_localmemorysize65536,2021 &feature_localmemorysize65536,
2022 &feature_BitInsts16,
1921 &feature_sdwaOutModsVopc,2023 &feature_sdwaOutModsVopc,
1922 &feature_dpp,2024 &feature_inv2piInlineImm,
1923 &feature_gfx7Gfx8Gfx9Insts,2025 &feature_noSramEccSupport,
1924 &feature_trigReducedRange,2026 &feature_fp64,
2027 &feature_ciInsts,
1925 &feature_xnack,2028 &feature_xnack,
1926 },2029 },
1927};2030};
...@@ -1934,13 +2037,13 @@ pub const cpu_tahiti = Cpu{...@@ -1934,13 +2037,13 @@ pub const cpu_tahiti = Cpu{
1934 &feature_noXnackSupport,2037 &feature_noXnackSupport,
1935 &feature_fastFmaf,2038 &feature_fastFmaf,
1936 &feature_ldsbankcount32,2039 &feature_ldsbankcount32,
1937 &feature_localmemorysize32768,
1938 &feature_fp64,
1939 &feature_mimgR128,
1940 &feature_movrel,2040 &feature_movrel,
1941 &feature_noSramEccSupport,
1942 &feature_wavefrontsize64,
1943 &feature_trigReducedRange,2041 &feature_trigReducedRange,
2042 &feature_mimgR128,
2043 &feature_localmemorysize32768,
2044 &feature_wavefrontsize64,
2045 &feature_noSramEccSupport,
2046 &feature_fp64,
1944 &feature_halfRate64Ops,2047 &feature_halfRate64Ops,
1945 },2048 },
1946};2049};
...@@ -1954,28 +2057,28 @@ pub const cpu_tonga = Cpu{...@@ -1954,28 +2057,28 @@ pub const cpu_tonga = Cpu{
1954 &feature_ldsbankcount32,2057 &feature_ldsbankcount32,
1955 &feature_sgprInitBug,2058 &feature_sgprInitBug,
1956 &feature_unpackedD16Vmem,2059 &feature_unpackedD16Vmem,
1957 &feature_fp64,
1958 &feature_sMemrealtime,2060 &feature_sMemrealtime,
1959 &feature_BitInsts16,2061 &feature_scalarStores,
1960 &feature_wavefrontsize64,
1961 &feature_sdwa,
1962 &feature_flatAddressSpace,2062 &feature_flatAddressSpace,
1963 &feature_sdwaMav,
1964 &feature_mimgR128,
1965 &feature_ciInsts,
1966 &feature_noSramEccSupport,
1967 &feature_inv2piInlineImm,
1968 &feature_vgprIndexMode,2063 &feature_vgprIndexMode,
1969 &feature_gcn3Encoding,2064 &feature_wavefrontsize64,
1970 &feature_gfx8Insts,2065 &feature_mimgR128,
1971 &feature_scalarStores,
1972 &feature_intClampInsts,2066 &feature_intClampInsts,
2067 &feature_dpp,
1973 &feature_movrel,2068 &feature_movrel,
2069 &feature_gcn3Encoding,
2070 &feature_gfx8Insts,
2071 &feature_trigReducedRange,
2072 &feature_gfx7Gfx8Gfx9Insts,
2073 &feature_sdwaMav,
2074 &feature_sdwa,
1974 &feature_localmemorysize65536,2075 &feature_localmemorysize65536,
2076 &feature_BitInsts16,
1975 &feature_sdwaOutModsVopc,2077 &feature_sdwaOutModsVopc,
1976 &feature_dpp,2078 &feature_inv2piInlineImm,
1977 &feature_gfx7Gfx8Gfx9Insts,2079 &feature_noSramEccSupport,
1978 &feature_trigReducedRange,2080 &feature_fp64,
2081 &feature_ciInsts,
1979 },2082 },
1980};2083};
19812084
...@@ -1986,13 +2089,13 @@ pub const cpu_verde = Cpu{...@@ -1986,13 +2089,13 @@ pub const cpu_verde = Cpu{
1986 &feature_codeObjectV3,2089 &feature_codeObjectV3,
1987 &feature_noXnackSupport,2090 &feature_noXnackSupport,
1988 &feature_ldsbankcount32,2091 &feature_ldsbankcount32,
1989 &feature_localmemorysize32768,
1990 &feature_fp64,
1991 &feature_mimgR128,
1992 &feature_movrel,2092 &feature_movrel,
1993 &feature_noSramEccSupport,
1994 &feature_wavefrontsize64,
1995 &feature_trigReducedRange,2093 &feature_trigReducedRange,
2094 &feature_mimgR128,
2095 &feature_localmemorysize32768,
2096 &feature_wavefrontsize64,
2097 &feature_noSramEccSupport,
2098 &feature_fp64,
1996 },2099 },
1997};2100};
19982101
lib/std/target/arm.zig+390-297
...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
4pub const feature_msecext8 = Feature{4pub const feature_msecext8 = Feature{
5 .name = "8msecext",5 .name = "8msecext",
6 .llvm_name = "8msecext",
6 .description = "Enable support for ARMv8-M Security Extensions",7 .description = "Enable support for ARMv8-M Security Extensions",
7 .dependencies = &[_]*const Feature {8 .dependencies = &[_]*const Feature {
8 },9 },
...@@ -10,6 +11,7 @@ pub const feature_msecext8 = Feature{...@@ -10,6 +11,7 @@ pub const feature_msecext8 = Feature{
1011
11pub const feature_aclass = Feature{12pub const feature_aclass = Feature{
12 .name = "aclass",13 .name = "aclass",
14 .llvm_name = "aclass",
13 .description = "Is application profile ('A' series)",15 .description = "Is application profile ('A' series)",
14 .dependencies = &[_]*const Feature {16 .dependencies = &[_]*const Feature {
15 },17 },
...@@ -17,6 +19,7 @@ pub const feature_aclass = Feature{...@@ -17,6 +19,7 @@ pub const feature_aclass = Feature{
1719
18pub const feature_aes = Feature{20pub const feature_aes = Feature{
19 .name = "aes",21 .name = "aes",
22 .llvm_name = "aes",
20 .description = "Enable AES support",23 .description = "Enable AES support",
21 .dependencies = &[_]*const Feature {24 .dependencies = &[_]*const Feature {
22 &feature_d32,25 &feature_d32,
...@@ -26,6 +29,7 @@ pub const feature_aes = Feature{...@@ -26,6 +29,7 @@ pub const feature_aes = Feature{
2629
27pub const feature_acquireRelease = Feature{30pub const feature_acquireRelease = Feature{
28 .name = "acquire-release",31 .name = "acquire-release",
32 .llvm_name = "acquire-release",
29 .description = "Has v8 acquire/release (lda/ldaex etc) instructions",33 .description = "Has v8 acquire/release (lda/ldaex etc) instructions",
30 .dependencies = &[_]*const Feature {34 .dependencies = &[_]*const Feature {
31 },35 },
...@@ -33,6 +37,7 @@ pub const feature_acquireRelease = Feature{...@@ -33,6 +37,7 @@ pub const feature_acquireRelease = Feature{
3337
34pub const feature_avoidMovsShop = Feature{38pub const feature_avoidMovsShop = Feature{
35 .name = "avoid-movs-shop",39 .name = "avoid-movs-shop",
40 .llvm_name = "avoid-movs-shop",
36 .description = "Avoid movs instructions with shifter operand",41 .description = "Avoid movs instructions with shifter operand",
37 .dependencies = &[_]*const Feature {42 .dependencies = &[_]*const Feature {
38 },43 },
...@@ -40,6 +45,7 @@ pub const feature_avoidMovsShop = Feature{...@@ -40,6 +45,7 @@ pub const feature_avoidMovsShop = Feature{
4045
41pub const feature_avoidPartialCpsr = Feature{46pub const feature_avoidPartialCpsr = Feature{
42 .name = "avoid-partial-cpsr",47 .name = "avoid-partial-cpsr",
48 .llvm_name = "avoid-partial-cpsr",
43 .description = "Avoid CPSR partial update for OOO execution",49 .description = "Avoid CPSR partial update for OOO execution",
44 .dependencies = &[_]*const Feature {50 .dependencies = &[_]*const Feature {
45 },51 },
...@@ -47,6 +53,7 @@ pub const feature_avoidPartialCpsr = Feature{...@@ -47,6 +53,7 @@ pub const feature_avoidPartialCpsr = Feature{
4753
48pub const feature_crc = Feature{54pub const feature_crc = Feature{
49 .name = "crc",55 .name = "crc",
56 .llvm_name = "crc",
50 .description = "Enable support for CRC instructions",57 .description = "Enable support for CRC instructions",
51 .dependencies = &[_]*const Feature {58 .dependencies = &[_]*const Feature {
52 },59 },
...@@ -54,6 +61,7 @@ pub const feature_crc = Feature{...@@ -54,6 +61,7 @@ pub const feature_crc = Feature{
5461
55pub const feature_cheapPredicableCpsr = Feature{62pub const feature_cheapPredicableCpsr = Feature{
56 .name = "cheap-predicable-cpsr",63 .name = "cheap-predicable-cpsr",
64 .llvm_name = "cheap-predicable-cpsr",
57 .description = "Disable +1 predication cost for instructions updating CPSR",65 .description = "Disable +1 predication cost for instructions updating CPSR",
58 .dependencies = &[_]*const Feature {66 .dependencies = &[_]*const Feature {
59 },67 },
...@@ -61,6 +69,7 @@ pub const feature_cheapPredicableCpsr = Feature{...@@ -61,6 +69,7 @@ pub const feature_cheapPredicableCpsr = Feature{
6169
62pub const feature_vldnAlign = Feature{70pub const feature_vldnAlign = Feature{
63 .name = "vldn-align",71 .name = "vldn-align",
72 .llvm_name = "vldn-align",
64 .description = "Check for VLDn unaligned access",73 .description = "Check for VLDn unaligned access",
65 .dependencies = &[_]*const Feature {74 .dependencies = &[_]*const Feature {
66 },75 },
...@@ -68,6 +77,7 @@ pub const feature_vldnAlign = Feature{...@@ -68,6 +77,7 @@ pub const feature_vldnAlign = Feature{
6877
69pub const feature_crypto = Feature{78pub const feature_crypto = Feature{
70 .name = "crypto",79 .name = "crypto",
80 .llvm_name = "crypto",
71 .description = "Enable support for Cryptography extensions",81 .description = "Enable support for Cryptography extensions",
72 .dependencies = &[_]*const Feature {82 .dependencies = &[_]*const Feature {
73 &feature_d32,83 &feature_d32,
...@@ -77,6 +87,7 @@ pub const feature_crypto = Feature{...@@ -77,6 +87,7 @@ pub const feature_crypto = Feature{
7787
78pub const feature_d32 = Feature{88pub const feature_d32 = Feature{
79 .name = "d32",89 .name = "d32",
90 .llvm_name = "d32",
80 .description = "Extend FP to 32 double registers",91 .description = "Extend FP to 32 double registers",
81 .dependencies = &[_]*const Feature {92 .dependencies = &[_]*const Feature {
82 },93 },
...@@ -84,6 +95,7 @@ pub const feature_d32 = Feature{...@@ -84,6 +95,7 @@ pub const feature_d32 = Feature{
8495
85pub const feature_db = Feature{96pub const feature_db = Feature{
86 .name = "db",97 .name = "db",
98 .llvm_name = "db",
87 .description = "Has data barrier (dmb/dsb) instructions",99 .description = "Has data barrier (dmb/dsb) instructions",
88 .dependencies = &[_]*const Feature {100 .dependencies = &[_]*const Feature {
89 },101 },
...@@ -91,6 +103,7 @@ pub const feature_db = Feature{...@@ -91,6 +103,7 @@ pub const feature_db = Feature{
91103
92pub const feature_dfb = Feature{104pub const feature_dfb = Feature{
93 .name = "dfb",105 .name = "dfb",
106 .llvm_name = "dfb",
94 .description = "Has full data barrier (dfb) instruction",107 .description = "Has full data barrier (dfb) instruction",
95 .dependencies = &[_]*const Feature {108 .dependencies = &[_]*const Feature {
96 },109 },
...@@ -98,6 +111,7 @@ pub const feature_dfb = Feature{...@@ -98,6 +111,7 @@ pub const feature_dfb = Feature{
98111
99pub const feature_dsp = Feature{112pub const feature_dsp = Feature{
100 .name = "dsp",113 .name = "dsp",
114 .llvm_name = "dsp",
101 .description = "Supports DSP instructions in ARM and/or Thumb2",115 .description = "Supports DSP instructions in ARM and/or Thumb2",
102 .dependencies = &[_]*const Feature {116 .dependencies = &[_]*const Feature {
103 },117 },
...@@ -105,6 +119,7 @@ pub const feature_dsp = Feature{...@@ -105,6 +119,7 @@ pub const feature_dsp = Feature{
105119
106pub const feature_dontWidenVmovs = Feature{120pub const feature_dontWidenVmovs = Feature{
107 .name = "dont-widen-vmovs",121 .name = "dont-widen-vmovs",
122 .llvm_name = "dont-widen-vmovs",
108 .description = "Don't widen VMOVS to VMOVD",123 .description = "Don't widen VMOVS to VMOVD",
109 .dependencies = &[_]*const Feature {124 .dependencies = &[_]*const Feature {
110 },125 },
...@@ -112,6 +127,7 @@ pub const feature_dontWidenVmovs = Feature{...@@ -112,6 +127,7 @@ pub const feature_dontWidenVmovs = Feature{
112127
113pub const feature_dotprod = Feature{128pub const feature_dotprod = Feature{
114 .name = "dotprod",129 .name = "dotprod",
130 .llvm_name = "dotprod",
115 .description = "Enable support for dot product instructions",131 .description = "Enable support for dot product instructions",
116 .dependencies = &[_]*const Feature {132 .dependencies = &[_]*const Feature {
117 &feature_d32,133 &feature_d32,
...@@ -121,6 +137,7 @@ pub const feature_dotprod = Feature{...@@ -121,6 +137,7 @@ pub const feature_dotprod = Feature{
121137
122pub const feature_executeOnly = Feature{138pub const feature_executeOnly = Feature{
123 .name = "execute-only",139 .name = "execute-only",
140 .llvm_name = "execute-only",
124 .description = "Enable the generation of execute only code.",141 .description = "Enable the generation of execute only code.",
125 .dependencies = &[_]*const Feature {142 .dependencies = &[_]*const Feature {
126 },143 },
...@@ -128,6 +145,7 @@ pub const feature_executeOnly = Feature{...@@ -128,6 +145,7 @@ pub const feature_executeOnly = Feature{
128145
129pub const feature_expandFpMlx = Feature{146pub const feature_expandFpMlx = Feature{
130 .name = "expand-fp-mlx",147 .name = "expand-fp-mlx",
148 .llvm_name = "expand-fp-mlx",
131 .description = "Expand VFP/NEON MLA/MLS instructions",149 .description = "Expand VFP/NEON MLA/MLS instructions",
132 .dependencies = &[_]*const Feature {150 .dependencies = &[_]*const Feature {
133 },151 },
...@@ -135,6 +153,7 @@ pub const feature_expandFpMlx = Feature{...@@ -135,6 +153,7 @@ pub const feature_expandFpMlx = Feature{
135153
136pub const feature_fp16 = Feature{154pub const feature_fp16 = Feature{
137 .name = "fp16",155 .name = "fp16",
156 .llvm_name = "fp16",
138 .description = "Enable half-precision floating point",157 .description = "Enable half-precision floating point",
139 .dependencies = &[_]*const Feature {158 .dependencies = &[_]*const Feature {
140 },159 },
...@@ -142,6 +161,7 @@ pub const feature_fp16 = Feature{...@@ -142,6 +161,7 @@ pub const feature_fp16 = Feature{
142161
143pub const feature_fp16fml = Feature{162pub const feature_fp16fml = Feature{
144 .name = "fp16fml",163 .name = "fp16fml",
164 .llvm_name = "fp16fml",
145 .description = "Enable full half-precision floating point fml instructions",165 .description = "Enable full half-precision floating point fml instructions",
146 .dependencies = &[_]*const Feature {166 .dependencies = &[_]*const Feature {
147 &feature_fp16,167 &feature_fp16,
...@@ -151,6 +171,7 @@ pub const feature_fp16fml = Feature{...@@ -151,6 +171,7 @@ pub const feature_fp16fml = Feature{
151171
152pub const feature_fp64 = Feature{172pub const feature_fp64 = Feature{
153 .name = "fp64",173 .name = "fp64",
174 .llvm_name = "fp64",
154 .description = "Floating point unit supports double precision",175 .description = "Floating point unit supports double precision",
155 .dependencies = &[_]*const Feature {176 .dependencies = &[_]*const Feature {
156 &feature_fpregs,177 &feature_fpregs,
...@@ -159,6 +180,7 @@ pub const feature_fp64 = Feature{...@@ -159,6 +180,7 @@ pub const feature_fp64 = Feature{
159180
160pub const feature_fpao = Feature{181pub const feature_fpao = Feature{
161 .name = "fpao",182 .name = "fpao",
183 .llvm_name = "fpao",
162 .description = "Enable fast computation of positive address offsets",184 .description = "Enable fast computation of positive address offsets",
163 .dependencies = &[_]*const Feature {185 .dependencies = &[_]*const Feature {
164 },186 },
...@@ -166,16 +188,18 @@ pub const feature_fpao = Feature{...@@ -166,16 +188,18 @@ pub const feature_fpao = Feature{
166188
167pub const feature_fpArmv8 = Feature{189pub const feature_fpArmv8 = Feature{
168 .name = "fp-armv8",190 .name = "fp-armv8",
191 .llvm_name = "fp-armv8",
169 .description = "Enable ARMv8 FP",192 .description = "Enable ARMv8 FP",
170 .dependencies = &[_]*const Feature {193 .dependencies = &[_]*const Feature {
171 &feature_fpregs,
172 &feature_d32,
173 &feature_fp16,194 &feature_fp16,
195 &feature_d32,
196 &feature_fpregs,
174 },197 },
175};198};
176199
177pub const feature_fpArmv8d16 = Feature{200pub const feature_fpArmv8d16 = Feature{
178 .name = "fp-armv8d16",201 .name = "fp-armv8d16",
202 .llvm_name = "fp-armv8d16",
179 .description = "Enable ARMv8 FP with only 16 d-registers",203 .description = "Enable ARMv8 FP with only 16 d-registers",
180 .dependencies = &[_]*const Feature {204 .dependencies = &[_]*const Feature {
181 &feature_fp16,205 &feature_fp16,
...@@ -185,6 +209,7 @@ pub const feature_fpArmv8d16 = Feature{...@@ -185,6 +209,7 @@ pub const feature_fpArmv8d16 = Feature{
185209
186pub const feature_fpArmv8d16sp = Feature{210pub const feature_fpArmv8d16sp = Feature{
187 .name = "fp-armv8d16sp",211 .name = "fp-armv8d16sp",
212 .llvm_name = "fp-armv8d16sp",
188 .description = "Enable ARMv8 FP with only 16 d-registers and no double precision",213 .description = "Enable ARMv8 FP with only 16 d-registers and no double precision",
189 .dependencies = &[_]*const Feature {214 .dependencies = &[_]*const Feature {
190 &feature_fp16,215 &feature_fp16,
...@@ -194,16 +219,18 @@ pub const feature_fpArmv8d16sp = Feature{...@@ -194,16 +219,18 @@ pub const feature_fpArmv8d16sp = Feature{
194219
195pub const feature_fpArmv8sp = Feature{220pub const feature_fpArmv8sp = Feature{
196 .name = "fp-armv8sp",221 .name = "fp-armv8sp",
222 .llvm_name = "fp-armv8sp",
197 .description = "Enable ARMv8 FP with no double precision",223 .description = "Enable ARMv8 FP with no double precision",
198 .dependencies = &[_]*const Feature {224 .dependencies = &[_]*const Feature {
199 &feature_fpregs,
200 &feature_d32,
201 &feature_fp16,225 &feature_fp16,
226 &feature_d32,
227 &feature_fpregs,
202 },228 },
203};229};
204230
205pub const feature_fpregs = Feature{231pub const feature_fpregs = Feature{
206 .name = "fpregs",232 .name = "fpregs",
233 .llvm_name = "fpregs",
207 .description = "Enable FP registers",234 .description = "Enable FP registers",
208 .dependencies = &[_]*const Feature {235 .dependencies = &[_]*const Feature {
209 },236 },
...@@ -211,6 +238,7 @@ pub const feature_fpregs = Feature{...@@ -211,6 +238,7 @@ pub const feature_fpregs = Feature{
211238
212pub const feature_fpregs16 = Feature{239pub const feature_fpregs16 = Feature{
213 .name = "fpregs16",240 .name = "fpregs16",
241 .llvm_name = "fpregs16",
214 .description = "Enable 16-bit FP registers",242 .description = "Enable 16-bit FP registers",
215 .dependencies = &[_]*const Feature {243 .dependencies = &[_]*const Feature {
216 &feature_fpregs,244 &feature_fpregs,
...@@ -219,6 +247,7 @@ pub const feature_fpregs16 = Feature{...@@ -219,6 +247,7 @@ pub const feature_fpregs16 = Feature{
219247
220pub const feature_fpregs64 = Feature{248pub const feature_fpregs64 = Feature{
221 .name = "fpregs64",249 .name = "fpregs64",
250 .llvm_name = "fpregs64",
222 .description = "Enable 64-bit FP registers",251 .description = "Enable 64-bit FP registers",
223 .dependencies = &[_]*const Feature {252 .dependencies = &[_]*const Feature {
224 &feature_fpregs,253 &feature_fpregs,
...@@ -227,15 +256,17 @@ pub const feature_fpregs64 = Feature{...@@ -227,15 +256,17 @@ pub const feature_fpregs64 = Feature{
227256
228pub const feature_fullfp16 = Feature{257pub const feature_fullfp16 = Feature{
229 .name = "fullfp16",258 .name = "fullfp16",
259 .llvm_name = "fullfp16",
230 .description = "Enable full half-precision floating point",260 .description = "Enable full half-precision floating point",
231 .dependencies = &[_]*const Feature {261 .dependencies = &[_]*const Feature {
232 &feature_fpregs,
233 &feature_fp16,262 &feature_fp16,
263 &feature_fpregs,
234 },264 },
235};265};
236266
237pub const feature_fuseAes = Feature{267pub const feature_fuseAes = Feature{
238 .name = "fuse-aes",268 .name = "fuse-aes",
269 .llvm_name = "fuse-aes",
239 .description = "CPU fuses AES crypto operations",270 .description = "CPU fuses AES crypto operations",
240 .dependencies = &[_]*const Feature {271 .dependencies = &[_]*const Feature {
241 },272 },
...@@ -243,6 +274,7 @@ pub const feature_fuseAes = Feature{...@@ -243,6 +274,7 @@ pub const feature_fuseAes = Feature{
243274
244pub const feature_fuseLiterals = Feature{275pub const feature_fuseLiterals = Feature{
245 .name = "fuse-literals",276 .name = "fuse-literals",
277 .llvm_name = "fuse-literals",
246 .description = "CPU fuses literal generation operations",278 .description = "CPU fuses literal generation operations",
247 .dependencies = &[_]*const Feature {279 .dependencies = &[_]*const Feature {
248 },280 },
...@@ -250,6 +282,7 @@ pub const feature_fuseLiterals = Feature{...@@ -250,6 +282,7 @@ pub const feature_fuseLiterals = Feature{
250282
251pub const feature_hwdivArm = Feature{283pub const feature_hwdivArm = Feature{
252 .name = "hwdiv-arm",284 .name = "hwdiv-arm",
285 .llvm_name = "hwdiv-arm",
253 .description = "Enable divide instructions in ARM mode",286 .description = "Enable divide instructions in ARM mode",
254 .dependencies = &[_]*const Feature {287 .dependencies = &[_]*const Feature {
255 },288 },
...@@ -257,6 +290,7 @@ pub const feature_hwdivArm = Feature{...@@ -257,6 +290,7 @@ pub const feature_hwdivArm = Feature{
257290
258pub const feature_hwdiv = Feature{291pub const feature_hwdiv = Feature{
259 .name = "hwdiv",292 .name = "hwdiv",
293 .llvm_name = "hwdiv",
260 .description = "Enable divide instructions in Thumb",294 .description = "Enable divide instructions in Thumb",
261 .dependencies = &[_]*const Feature {295 .dependencies = &[_]*const Feature {
262 },296 },
...@@ -264,6 +298,7 @@ pub const feature_hwdiv = Feature{...@@ -264,6 +298,7 @@ pub const feature_hwdiv = Feature{
264298
265pub const feature_noBranchPredictor = Feature{299pub const feature_noBranchPredictor = Feature{
266 .name = "no-branch-predictor",300 .name = "no-branch-predictor",
301 .llvm_name = "no-branch-predictor",
267 .description = "Has no branch predictor",302 .description = "Has no branch predictor",
268 .dependencies = &[_]*const Feature {303 .dependencies = &[_]*const Feature {
269 },304 },
...@@ -271,6 +306,7 @@ pub const feature_noBranchPredictor = Feature{...@@ -271,6 +306,7 @@ pub const feature_noBranchPredictor = Feature{
271306
272pub const feature_retAddrStack = Feature{307pub const feature_retAddrStack = Feature{
273 .name = "ret-addr-stack",308 .name = "ret-addr-stack",
309 .llvm_name = "ret-addr-stack",
274 .description = "Has return address stack",310 .description = "Has return address stack",
275 .dependencies = &[_]*const Feature {311 .dependencies = &[_]*const Feature {
276 },312 },
...@@ -278,6 +314,7 @@ pub const feature_retAddrStack = Feature{...@@ -278,6 +314,7 @@ pub const feature_retAddrStack = Feature{
278314
279pub const feature_slowfpvmlx = Feature{315pub const feature_slowfpvmlx = Feature{
280 .name = "slowfpvmlx",316 .name = "slowfpvmlx",
317 .llvm_name = "slowfpvmlx",
281 .description = "Disable VFP / NEON MAC instructions",318 .description = "Disable VFP / NEON MAC instructions",
282 .dependencies = &[_]*const Feature {319 .dependencies = &[_]*const Feature {
283 },320 },
...@@ -285,6 +322,7 @@ pub const feature_slowfpvmlx = Feature{...@@ -285,6 +322,7 @@ pub const feature_slowfpvmlx = Feature{
285322
286pub const feature_vmlxHazards = Feature{323pub const feature_vmlxHazards = Feature{
287 .name = "vmlx-hazards",324 .name = "vmlx-hazards",
325 .llvm_name = "vmlx-hazards",
288 .description = "Has VMLx hazards",326 .description = "Has VMLx hazards",
289 .dependencies = &[_]*const Feature {327 .dependencies = &[_]*const Feature {
290 },328 },
...@@ -292,6 +330,7 @@ pub const feature_vmlxHazards = Feature{...@@ -292,6 +330,7 @@ pub const feature_vmlxHazards = Feature{
292330
293pub const feature_lob = Feature{331pub const feature_lob = Feature{
294 .name = "lob",332 .name = "lob",
333 .llvm_name = "lob",
295 .description = "Enable Low Overhead Branch extensions",334 .description = "Enable Low Overhead Branch extensions",
296 .dependencies = &[_]*const Feature {335 .dependencies = &[_]*const Feature {
297 },336 },
...@@ -299,6 +338,7 @@ pub const feature_lob = Feature{...@@ -299,6 +338,7 @@ pub const feature_lob = Feature{
299338
300pub const feature_longCalls = Feature{339pub const feature_longCalls = Feature{
301 .name = "long-calls",340 .name = "long-calls",
341 .llvm_name = "long-calls",
302 .description = "Generate calls via indirect call instructions",342 .description = "Generate calls via indirect call instructions",
303 .dependencies = &[_]*const Feature {343 .dependencies = &[_]*const Feature {
304 },344 },
...@@ -306,6 +346,7 @@ pub const feature_longCalls = Feature{...@@ -306,6 +346,7 @@ pub const feature_longCalls = Feature{
306346
307pub const feature_mclass = Feature{347pub const feature_mclass = Feature{
308 .name = "mclass",348 .name = "mclass",
349 .llvm_name = "mclass",
309 .description = "Is microcontroller profile ('M' series)",350 .description = "Is microcontroller profile ('M' series)",
310 .dependencies = &[_]*const Feature {351 .dependencies = &[_]*const Feature {
311 },352 },
...@@ -313,6 +354,7 @@ pub const feature_mclass = Feature{...@@ -313,6 +354,7 @@ pub const feature_mclass = Feature{
313354
314pub const feature_mp = Feature{355pub const feature_mp = Feature{
315 .name = "mp",356 .name = "mp",
357 .llvm_name = "mp",
316 .description = "Supports Multiprocessing extension",358 .description = "Supports Multiprocessing extension",
317 .dependencies = &[_]*const Feature {359 .dependencies = &[_]*const Feature {
318 },360 },
...@@ -320,6 +362,7 @@ pub const feature_mp = Feature{...@@ -320,6 +362,7 @@ pub const feature_mp = Feature{
320362
321pub const feature_mve1beat = Feature{363pub const feature_mve1beat = Feature{
322 .name = "mve1beat",364 .name = "mve1beat",
365 .llvm_name = "mve1beat",
323 .description = "Model MVE instructions as a 1 beat per tick architecture",366 .description = "Model MVE instructions as a 1 beat per tick architecture",
324 .dependencies = &[_]*const Feature {367 .dependencies = &[_]*const Feature {
325 },368 },
...@@ -327,6 +370,7 @@ pub const feature_mve1beat = Feature{...@@ -327,6 +370,7 @@ pub const feature_mve1beat = Feature{
327370
328pub const feature_mve2beat = Feature{371pub const feature_mve2beat = Feature{
329 .name = "mve2beat",372 .name = "mve2beat",
373 .llvm_name = "mve2beat",
330 .description = "Model MVE instructions as a 2 beats per tick architecture",374 .description = "Model MVE instructions as a 2 beats per tick architecture",
331 .dependencies = &[_]*const Feature {375 .dependencies = &[_]*const Feature {
332 },376 },
...@@ -334,6 +378,7 @@ pub const feature_mve2beat = Feature{...@@ -334,6 +378,7 @@ pub const feature_mve2beat = Feature{
334378
335pub const feature_mve4beat = Feature{379pub const feature_mve4beat = Feature{
336 .name = "mve4beat",380 .name = "mve4beat",
381 .llvm_name = "mve4beat",
337 .description = "Model MVE instructions as a 4 beats per tick architecture",382 .description = "Model MVE instructions as a 4 beats per tick architecture",
338 .dependencies = &[_]*const Feature {383 .dependencies = &[_]*const Feature {
339 },384 },
...@@ -341,6 +386,7 @@ pub const feature_mve4beat = Feature{...@@ -341,6 +386,7 @@ pub const feature_mve4beat = Feature{
341386
342pub const feature_muxedUnits = Feature{387pub const feature_muxedUnits = Feature{
343 .name = "muxed-units",388 .name = "muxed-units",
389 .llvm_name = "muxed-units",
344 .description = "Has muxed AGU and NEON/FPU",390 .description = "Has muxed AGU and NEON/FPU",
345 .dependencies = &[_]*const Feature {391 .dependencies = &[_]*const Feature {
346 },392 },
...@@ -348,6 +394,7 @@ pub const feature_muxedUnits = Feature{...@@ -348,6 +394,7 @@ pub const feature_muxedUnits = Feature{
348394
349pub const feature_neon = Feature{395pub const feature_neon = Feature{
350 .name = "neon",396 .name = "neon",
397 .llvm_name = "neon",
351 .description = "Enable NEON instructions",398 .description = "Enable NEON instructions",
352 .dependencies = &[_]*const Feature {399 .dependencies = &[_]*const Feature {
353 &feature_d32,400 &feature_d32,
...@@ -357,6 +404,7 @@ pub const feature_neon = Feature{...@@ -357,6 +404,7 @@ pub const feature_neon = Feature{
357404
358pub const feature_neonfp = Feature{405pub const feature_neonfp = Feature{
359 .name = "neonfp",406 .name = "neonfp",
407 .llvm_name = "neonfp",
360 .description = "Use NEON for single precision FP",408 .description = "Use NEON for single precision FP",
361 .dependencies = &[_]*const Feature {409 .dependencies = &[_]*const Feature {
362 },410 },
...@@ -364,6 +412,7 @@ pub const feature_neonfp = Feature{...@@ -364,6 +412,7 @@ pub const feature_neonfp = Feature{
364412
365pub const feature_neonFpmovs = Feature{413pub const feature_neonFpmovs = Feature{
366 .name = "neon-fpmovs",414 .name = "neon-fpmovs",
415 .llvm_name = "neon-fpmovs",
367 .description = "Convert VMOVSR, VMOVRS, VMOVS to NEON",416 .description = "Convert VMOVSR, VMOVRS, VMOVS to NEON",
368 .dependencies = &[_]*const Feature {417 .dependencies = &[_]*const Feature {
369 },418 },
...@@ -371,6 +420,7 @@ pub const feature_neonFpmovs = Feature{...@@ -371,6 +420,7 @@ pub const feature_neonFpmovs = Feature{
371420
372pub const feature_naclTrap = Feature{421pub const feature_naclTrap = Feature{
373 .name = "nacl-trap",422 .name = "nacl-trap",
423 .llvm_name = "nacl-trap",
374 .description = "NaCl trap",424 .description = "NaCl trap",
375 .dependencies = &[_]*const Feature {425 .dependencies = &[_]*const Feature {
376 },426 },
...@@ -378,6 +428,7 @@ pub const feature_naclTrap = Feature{...@@ -378,6 +428,7 @@ pub const feature_naclTrap = Feature{
378428
379pub const feature_noarm = Feature{429pub const feature_noarm = Feature{
380 .name = "noarm",430 .name = "noarm",
431 .llvm_name = "noarm",
381 .description = "Does not support ARM mode execution",432 .description = "Does not support ARM mode execution",
382 .dependencies = &[_]*const Feature {433 .dependencies = &[_]*const Feature {
383 },434 },
...@@ -385,6 +436,7 @@ pub const feature_noarm = Feature{...@@ -385,6 +436,7 @@ pub const feature_noarm = Feature{
385436
386pub const feature_noMovt = Feature{437pub const feature_noMovt = Feature{
387 .name = "no-movt",438 .name = "no-movt",
439 .llvm_name = "no-movt",
388 .description = "Don't use movt/movw pairs for 32-bit imms",440 .description = "Don't use movt/movw pairs for 32-bit imms",
389 .dependencies = &[_]*const Feature {441 .dependencies = &[_]*const Feature {
390 },442 },
...@@ -392,6 +444,7 @@ pub const feature_noMovt = Feature{...@@ -392,6 +444,7 @@ pub const feature_noMovt = Feature{
392444
393pub const feature_noNegImmediates = Feature{445pub const feature_noNegImmediates = Feature{
394 .name = "no-neg-immediates",446 .name = "no-neg-immediates",
447 .llvm_name = "no-neg-immediates",
395 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",448 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",
396 .dependencies = &[_]*const Feature {449 .dependencies = &[_]*const Feature {
397 },450 },
...@@ -399,6 +452,7 @@ pub const feature_noNegImmediates = Feature{...@@ -399,6 +452,7 @@ pub const feature_noNegImmediates = Feature{
399452
400pub const feature_disablePostraScheduler = Feature{453pub const feature_disablePostraScheduler = Feature{
401 .name = "disable-postra-scheduler",454 .name = "disable-postra-scheduler",
455 .llvm_name = "disable-postra-scheduler",
402 .description = "Don't schedule again after register allocation",456 .description = "Don't schedule again after register allocation",
403 .dependencies = &[_]*const Feature {457 .dependencies = &[_]*const Feature {
404 },458 },
...@@ -406,6 +460,7 @@ pub const feature_disablePostraScheduler = Feature{...@@ -406,6 +460,7 @@ pub const feature_disablePostraScheduler = Feature{
406460
407pub const feature_nonpipelinedVfp = Feature{461pub const feature_nonpipelinedVfp = Feature{
408 .name = "nonpipelined-vfp",462 .name = "nonpipelined-vfp",
463 .llvm_name = "nonpipelined-vfp",
409 .description = "VFP instructions are not pipelined",464 .description = "VFP instructions are not pipelined",
410 .dependencies = &[_]*const Feature {465 .dependencies = &[_]*const Feature {
411 },466 },
...@@ -413,6 +468,7 @@ pub const feature_nonpipelinedVfp = Feature{...@@ -413,6 +468,7 @@ pub const feature_nonpipelinedVfp = Feature{
413468
414pub const feature_perfmon = Feature{469pub const feature_perfmon = Feature{
415 .name = "perfmon",470 .name = "perfmon",
471 .llvm_name = "perfmon",
416 .description = "Enable support for Performance Monitor extensions",472 .description = "Enable support for Performance Monitor extensions",
417 .dependencies = &[_]*const Feature {473 .dependencies = &[_]*const Feature {
418 },474 },
...@@ -420,6 +476,7 @@ pub const feature_perfmon = Feature{...@@ -420,6 +476,7 @@ pub const feature_perfmon = Feature{
420476
421pub const feature_bit32 = Feature{477pub const feature_bit32 = Feature{
422 .name = "32bit",478 .name = "32bit",
479 .llvm_name = "32bit",
423 .description = "Prefer 32-bit Thumb instrs",480 .description = "Prefer 32-bit Thumb instrs",
424 .dependencies = &[_]*const Feature {481 .dependencies = &[_]*const Feature {
425 },482 },
...@@ -427,6 +484,7 @@ pub const feature_bit32 = Feature{...@@ -427,6 +484,7 @@ pub const feature_bit32 = Feature{
427484
428pub const feature_preferIshst = Feature{485pub const feature_preferIshst = Feature{
429 .name = "prefer-ishst",486 .name = "prefer-ishst",
487 .llvm_name = "prefer-ishst",
430 .description = "Prefer ISHST barriers",488 .description = "Prefer ISHST barriers",
431 .dependencies = &[_]*const Feature {489 .dependencies = &[_]*const Feature {
432 },490 },
...@@ -434,6 +492,7 @@ pub const feature_preferIshst = Feature{...@@ -434,6 +492,7 @@ pub const feature_preferIshst = Feature{
434492
435pub const feature_loopAlign = Feature{493pub const feature_loopAlign = Feature{
436 .name = "loop-align",494 .name = "loop-align",
495 .llvm_name = "loop-align",
437 .description = "Prefer 32-bit alignment for loops",496 .description = "Prefer 32-bit alignment for loops",
438 .dependencies = &[_]*const Feature {497 .dependencies = &[_]*const Feature {
439 },498 },
...@@ -441,6 +500,7 @@ pub const feature_loopAlign = Feature{...@@ -441,6 +500,7 @@ pub const feature_loopAlign = Feature{
441500
442pub const feature_preferVmovsr = Feature{501pub const feature_preferVmovsr = Feature{
443 .name = "prefer-vmovsr",502 .name = "prefer-vmovsr",
503 .llvm_name = "prefer-vmovsr",
444 .description = "Prefer VMOVSR",504 .description = "Prefer VMOVSR",
445 .dependencies = &[_]*const Feature {505 .dependencies = &[_]*const Feature {
446 },506 },
...@@ -448,6 +508,7 @@ pub const feature_preferVmovsr = Feature{...@@ -448,6 +508,7 @@ pub const feature_preferVmovsr = Feature{
448508
449pub const feature_profUnpr = Feature{509pub const feature_profUnpr = Feature{
450 .name = "prof-unpr",510 .name = "prof-unpr",
511 .llvm_name = "prof-unpr",
451 .description = "Is profitable to unpredicate",512 .description = "Is profitable to unpredicate",
452 .dependencies = &[_]*const Feature {513 .dependencies = &[_]*const Feature {
453 },514 },
...@@ -455,6 +516,7 @@ pub const feature_profUnpr = Feature{...@@ -455,6 +516,7 @@ pub const feature_profUnpr = Feature{
455516
456pub const feature_ras = Feature{517pub const feature_ras = Feature{
457 .name = "ras",518 .name = "ras",
519 .llvm_name = "ras",
458 .description = "Enable Reliability, Availability and Serviceability extensions",520 .description = "Enable Reliability, Availability and Serviceability extensions",
459 .dependencies = &[_]*const Feature {521 .dependencies = &[_]*const Feature {
460 },522 },
...@@ -462,6 +524,7 @@ pub const feature_ras = Feature{...@@ -462,6 +524,7 @@ pub const feature_ras = Feature{
462524
463pub const feature_rclass = Feature{525pub const feature_rclass = Feature{
464 .name = "rclass",526 .name = "rclass",
527 .llvm_name = "rclass",
465 .description = "Is realtime profile ('R' series)",528 .description = "Is realtime profile ('R' series)",
466 .dependencies = &[_]*const Feature {529 .dependencies = &[_]*const Feature {
467 },530 },
...@@ -469,6 +532,7 @@ pub const feature_rclass = Feature{...@@ -469,6 +532,7 @@ pub const feature_rclass = Feature{
469532
470pub const feature_readTpHard = Feature{533pub const feature_readTpHard = Feature{
471 .name = "read-tp-hard",534 .name = "read-tp-hard",
535 .llvm_name = "read-tp-hard",
472 .description = "Reading thread pointer from register",536 .description = "Reading thread pointer from register",
473 .dependencies = &[_]*const Feature {537 .dependencies = &[_]*const Feature {
474 },538 },
...@@ -476,6 +540,7 @@ pub const feature_readTpHard = Feature{...@@ -476,6 +540,7 @@ pub const feature_readTpHard = Feature{
476540
477pub const feature_reserveR9 = Feature{541pub const feature_reserveR9 = Feature{
478 .name = "reserve-r9",542 .name = "reserve-r9",
543 .llvm_name = "reserve-r9",
479 .description = "Reserve R9, making it unavailable as GPR",544 .description = "Reserve R9, making it unavailable as GPR",
480 .dependencies = &[_]*const Feature {545 .dependencies = &[_]*const Feature {
481 },546 },
...@@ -483,6 +548,7 @@ pub const feature_reserveR9 = Feature{...@@ -483,6 +548,7 @@ pub const feature_reserveR9 = Feature{
483548
484pub const feature_sb = Feature{549pub const feature_sb = Feature{
485 .name = "sb",550 .name = "sb",
551 .llvm_name = "sb",
486 .description = "Enable v8.5a Speculation Barrier",552 .description = "Enable v8.5a Speculation Barrier",
487 .dependencies = &[_]*const Feature {553 .dependencies = &[_]*const Feature {
488 },554 },
...@@ -490,6 +556,7 @@ pub const feature_sb = Feature{...@@ -490,6 +556,7 @@ pub const feature_sb = Feature{
490556
491pub const feature_sha2 = Feature{557pub const feature_sha2 = Feature{
492 .name = "sha2",558 .name = "sha2",
559 .llvm_name = "sha2",
493 .description = "Enable SHA1 and SHA256 support",560 .description = "Enable SHA1 and SHA256 support",
494 .dependencies = &[_]*const Feature {561 .dependencies = &[_]*const Feature {
495 &feature_d32,562 &feature_d32,
...@@ -499,6 +566,7 @@ pub const feature_sha2 = Feature{...@@ -499,6 +566,7 @@ pub const feature_sha2 = Feature{
499566
500pub const feature_slowFpBrcc = Feature{567pub const feature_slowFpBrcc = Feature{
501 .name = "slow-fp-brcc",568 .name = "slow-fp-brcc",
569 .llvm_name = "slow-fp-brcc",
502 .description = "FP compare + branch is slow",570 .description = "FP compare + branch is slow",
503 .dependencies = &[_]*const Feature {571 .dependencies = &[_]*const Feature {
504 },572 },
...@@ -506,6 +574,7 @@ pub const feature_slowFpBrcc = Feature{...@@ -506,6 +574,7 @@ pub const feature_slowFpBrcc = Feature{
506574
507pub const feature_slowLoadDSubreg = Feature{575pub const feature_slowLoadDSubreg = Feature{
508 .name = "slow-load-D-subreg",576 .name = "slow-load-D-subreg",
577 .llvm_name = "slow-load-D-subreg",
509 .description = "Loading into D subregs is slow",578 .description = "Loading into D subregs is slow",
510 .dependencies = &[_]*const Feature {579 .dependencies = &[_]*const Feature {
511 },580 },
...@@ -513,6 +582,7 @@ pub const feature_slowLoadDSubreg = Feature{...@@ -513,6 +582,7 @@ pub const feature_slowLoadDSubreg = Feature{
513582
514pub const feature_slowOddReg = Feature{583pub const feature_slowOddReg = Feature{
515 .name = "slow-odd-reg",584 .name = "slow-odd-reg",
585 .llvm_name = "slow-odd-reg",
516 .description = "VLDM/VSTM starting with an odd register is slow",586 .description = "VLDM/VSTM starting with an odd register is slow",
517 .dependencies = &[_]*const Feature {587 .dependencies = &[_]*const Feature {
518 },588 },
...@@ -520,6 +590,7 @@ pub const feature_slowOddReg = Feature{...@@ -520,6 +590,7 @@ pub const feature_slowOddReg = Feature{
520590
521pub const feature_slowVdup32 = Feature{591pub const feature_slowVdup32 = Feature{
522 .name = "slow-vdup32",592 .name = "slow-vdup32",
593 .llvm_name = "slow-vdup32",
523 .description = "Has slow VDUP32 - prefer VMOV",594 .description = "Has slow VDUP32 - prefer VMOV",
524 .dependencies = &[_]*const Feature {595 .dependencies = &[_]*const Feature {
525 },596 },
...@@ -527,6 +598,7 @@ pub const feature_slowVdup32 = Feature{...@@ -527,6 +598,7 @@ pub const feature_slowVdup32 = Feature{
527598
528pub const feature_slowVgetlni32 = Feature{599pub const feature_slowVgetlni32 = Feature{
529 .name = "slow-vgetlni32",600 .name = "slow-vgetlni32",
601 .llvm_name = "slow-vgetlni32",
530 .description = "Has slow VGETLNi32 - prefer VMOV",602 .description = "Has slow VGETLNi32 - prefer VMOV",
531 .dependencies = &[_]*const Feature {603 .dependencies = &[_]*const Feature {
532 },604 },
...@@ -534,6 +606,7 @@ pub const feature_slowVgetlni32 = Feature{...@@ -534,6 +606,7 @@ pub const feature_slowVgetlni32 = Feature{
534606
535pub const feature_splatVfpNeon = Feature{607pub const feature_splatVfpNeon = Feature{
536 .name = "splat-vfp-neon",608 .name = "splat-vfp-neon",
609 .llvm_name = "splat-vfp-neon",
537 .description = "Splat register from VFP to NEON",610 .description = "Splat register from VFP to NEON",
538 .dependencies = &[_]*const Feature {611 .dependencies = &[_]*const Feature {
539 &feature_dontWidenVmovs,612 &feature_dontWidenVmovs,
...@@ -542,6 +615,7 @@ pub const feature_splatVfpNeon = Feature{...@@ -542,6 +615,7 @@ pub const feature_splatVfpNeon = Feature{
542615
543pub const feature_strictAlign = Feature{616pub const feature_strictAlign = Feature{
544 .name = "strict-align",617 .name = "strict-align",
618 .llvm_name = "strict-align",
545 .description = "Disallow all unaligned memory access",619 .description = "Disallow all unaligned memory access",
546 .dependencies = &[_]*const Feature {620 .dependencies = &[_]*const Feature {
547 },621 },
...@@ -549,6 +623,7 @@ pub const feature_strictAlign = Feature{...@@ -549,6 +623,7 @@ pub const feature_strictAlign = Feature{
549623
550pub const feature_thumb2 = Feature{624pub const feature_thumb2 = Feature{
551 .name = "thumb2",625 .name = "thumb2",
626 .llvm_name = "thumb2",
552 .description = "Enable Thumb2 instructions",627 .description = "Enable Thumb2 instructions",
553 .dependencies = &[_]*const Feature {628 .dependencies = &[_]*const Feature {
554 },629 },
...@@ -556,6 +631,7 @@ pub const feature_thumb2 = Feature{...@@ -556,6 +631,7 @@ pub const feature_thumb2 = Feature{
556631
557pub const feature_trustzone = Feature{632pub const feature_trustzone = Feature{
558 .name = "trustzone",633 .name = "trustzone",
634 .llvm_name = "trustzone",
559 .description = "Enable support for TrustZone security extensions",635 .description = "Enable support for TrustZone security extensions",
560 .dependencies = &[_]*const Feature {636 .dependencies = &[_]*const Feature {
561 },637 },
...@@ -563,6 +639,7 @@ pub const feature_trustzone = Feature{...@@ -563,6 +639,7 @@ pub const feature_trustzone = Feature{
563639
564pub const feature_useAa = Feature{640pub const feature_useAa = Feature{
565 .name = "use-aa",641 .name = "use-aa",
642 .llvm_name = "use-aa",
566 .description = "Use alias analysis during codegen",643 .description = "Use alias analysis during codegen",
567 .dependencies = &[_]*const Feature {644 .dependencies = &[_]*const Feature {
568 },645 },
...@@ -570,6 +647,7 @@ pub const feature_useAa = Feature{...@@ -570,6 +647,7 @@ pub const feature_useAa = Feature{
570647
571pub const feature_useMisched = Feature{648pub const feature_useMisched = Feature{
572 .name = "use-misched",649 .name = "use-misched",
650 .llvm_name = "use-misched",
573 .description = "Use the MachineScheduler",651 .description = "Use the MachineScheduler",
574 .dependencies = &[_]*const Feature {652 .dependencies = &[_]*const Feature {
575 },653 },
...@@ -577,6 +655,7 @@ pub const feature_useMisched = Feature{...@@ -577,6 +655,7 @@ pub const feature_useMisched = Feature{
577655
578pub const feature_wideStrideVfp = Feature{656pub const feature_wideStrideVfp = Feature{
579 .name = "wide-stride-vfp",657 .name = "wide-stride-vfp",
658 .llvm_name = "wide-stride-vfp",
580 .description = "Use a wide stride when allocating VFP registers",659 .description = "Use a wide stride when allocating VFP registers",
581 .dependencies = &[_]*const Feature {660 .dependencies = &[_]*const Feature {
582 },661 },
...@@ -584,6 +663,7 @@ pub const feature_wideStrideVfp = Feature{...@@ -584,6 +663,7 @@ pub const feature_wideStrideVfp = Feature{
584663
585pub const feature_v7clrex = Feature{664pub const feature_v7clrex = Feature{
586 .name = "v7clrex",665 .name = "v7clrex",
666 .llvm_name = "v7clrex",
587 .description = "Has v7 clrex instruction",667 .description = "Has v7 clrex instruction",
588 .dependencies = &[_]*const Feature {668 .dependencies = &[_]*const Feature {
589 },669 },
...@@ -591,6 +671,7 @@ pub const feature_v7clrex = Feature{...@@ -591,6 +671,7 @@ pub const feature_v7clrex = Feature{
591671
592pub const feature_vfp2 = Feature{672pub const feature_vfp2 = Feature{
593 .name = "vfp2",673 .name = "vfp2",
674 .llvm_name = "vfp2",
594 .description = "Enable VFP2 instructions",675 .description = "Enable VFP2 instructions",
595 .dependencies = &[_]*const Feature {676 .dependencies = &[_]*const Feature {
596 &feature_fpregs,677 &feature_fpregs,
...@@ -599,6 +680,7 @@ pub const feature_vfp2 = Feature{...@@ -599,6 +680,7 @@ pub const feature_vfp2 = Feature{
599680
600pub const feature_vfp2sp = Feature{681pub const feature_vfp2sp = Feature{
601 .name = "vfp2sp",682 .name = "vfp2sp",
683 .llvm_name = "vfp2sp",
602 .description = "Enable VFP2 instructions with no double precision",684 .description = "Enable VFP2 instructions with no double precision",
603 .dependencies = &[_]*const Feature {685 .dependencies = &[_]*const Feature {
604 &feature_fpregs,686 &feature_fpregs,
...@@ -607,6 +689,7 @@ pub const feature_vfp2sp = Feature{...@@ -607,6 +689,7 @@ pub const feature_vfp2sp = Feature{
607689
608pub const feature_vfp3 = Feature{690pub const feature_vfp3 = Feature{
609 .name = "vfp3",691 .name = "vfp3",
692 .llvm_name = "vfp3",
610 .description = "Enable VFP3 instructions",693 .description = "Enable VFP3 instructions",
611 .dependencies = &[_]*const Feature {694 .dependencies = &[_]*const Feature {
612 &feature_d32,695 &feature_d32,
...@@ -616,6 +699,7 @@ pub const feature_vfp3 = Feature{...@@ -616,6 +699,7 @@ pub const feature_vfp3 = Feature{
616699
617pub const feature_vfp3d16 = Feature{700pub const feature_vfp3d16 = Feature{
618 .name = "vfp3d16",701 .name = "vfp3d16",
702 .llvm_name = "vfp3d16",
619 .description = "Enable VFP3 instructions with only 16 d-registers",703 .description = "Enable VFP3 instructions with only 16 d-registers",
620 .dependencies = &[_]*const Feature {704 .dependencies = &[_]*const Feature {
621 &feature_fpregs,705 &feature_fpregs,
...@@ -624,6 +708,7 @@ pub const feature_vfp3d16 = Feature{...@@ -624,6 +708,7 @@ pub const feature_vfp3d16 = Feature{
624708
625pub const feature_vfp3d16sp = Feature{709pub const feature_vfp3d16sp = Feature{
626 .name = "vfp3d16sp",710 .name = "vfp3d16sp",
711 .llvm_name = "vfp3d16sp",
627 .description = "Enable VFP3 instructions with only 16 d-registers and no double precision",712 .description = "Enable VFP3 instructions with only 16 d-registers and no double precision",
628 .dependencies = &[_]*const Feature {713 .dependencies = &[_]*const Feature {
629 &feature_fpregs,714 &feature_fpregs,
...@@ -632,6 +717,7 @@ pub const feature_vfp3d16sp = Feature{...@@ -632,6 +717,7 @@ pub const feature_vfp3d16sp = Feature{
632717
633pub const feature_vfp3sp = Feature{718pub const feature_vfp3sp = Feature{
634 .name = "vfp3sp",719 .name = "vfp3sp",
720 .llvm_name = "vfp3sp",
635 .description = "Enable VFP3 instructions with no double precision",721 .description = "Enable VFP3 instructions with no double precision",
636 .dependencies = &[_]*const Feature {722 .dependencies = &[_]*const Feature {
637 &feature_d32,723 &feature_d32,
...@@ -641,44 +727,49 @@ pub const feature_vfp3sp = Feature{...@@ -641,44 +727,49 @@ pub const feature_vfp3sp = Feature{
641727
642pub const feature_vfp4 = Feature{728pub const feature_vfp4 = Feature{
643 .name = "vfp4",729 .name = "vfp4",
730 .llvm_name = "vfp4",
644 .description = "Enable VFP4 instructions",731 .description = "Enable VFP4 instructions",
645 .dependencies = &[_]*const Feature {732 .dependencies = &[_]*const Feature {
646 &feature_fpregs,
647 &feature_d32,
648 &feature_fp16,733 &feature_fp16,
734 &feature_d32,
735 &feature_fpregs,
649 },736 },
650};737};
651738
652pub const feature_vfp4d16 = Feature{739pub const feature_vfp4d16 = Feature{
653 .name = "vfp4d16",740 .name = "vfp4d16",
741 .llvm_name = "vfp4d16",
654 .description = "Enable VFP4 instructions with only 16 d-registers",742 .description = "Enable VFP4 instructions with only 16 d-registers",
655 .dependencies = &[_]*const Feature {743 .dependencies = &[_]*const Feature {
656 &feature_fpregs,
657 &feature_fp16,744 &feature_fp16,
745 &feature_fpregs,
658 },746 },
659};747};
660748
661pub const feature_vfp4d16sp = Feature{749pub const feature_vfp4d16sp = Feature{
662 .name = "vfp4d16sp",750 .name = "vfp4d16sp",
751 .llvm_name = "vfp4d16sp",
663 .description = "Enable VFP4 instructions with only 16 d-registers and no double precision",752 .description = "Enable VFP4 instructions with only 16 d-registers and no double precision",
664 .dependencies = &[_]*const Feature {753 .dependencies = &[_]*const Feature {
665 &feature_fpregs,
666 &feature_fp16,754 &feature_fp16,
755 &feature_fpregs,
667 },756 },
668};757};
669758
670pub const feature_vfp4sp = Feature{759pub const feature_vfp4sp = Feature{
671 .name = "vfp4sp",760 .name = "vfp4sp",
761 .llvm_name = "vfp4sp",
672 .description = "Enable VFP4 instructions with no double precision",762 .description = "Enable VFP4 instructions with no double precision",
673 .dependencies = &[_]*const Feature {763 .dependencies = &[_]*const Feature {
674 &feature_fpregs,
675 &feature_d32,
676 &feature_fp16,764 &feature_fp16,
765 &feature_d32,
766 &feature_fpregs,
677 },767 },
678};768};
679769
680pub const feature_vmlxForwarding = Feature{770pub const feature_vmlxForwarding = Feature{
681 .name = "vmlx-forwarding",771 .name = "vmlx-forwarding",
772 .llvm_name = "vmlx-forwarding",
682 .description = "Has multiplier accumulator forwarding",773 .description = "Has multiplier accumulator forwarding",
683 .dependencies = &[_]*const Feature {774 .dependencies = &[_]*const Feature {
684 },775 },
...@@ -686,6 +777,7 @@ pub const feature_vmlxForwarding = Feature{...@@ -686,6 +777,7 @@ pub const feature_vmlxForwarding = Feature{
686777
687pub const feature_virtualization = Feature{778pub const feature_virtualization = Feature{
688 .name = "virtualization",779 .name = "virtualization",
780 .llvm_name = "virtualization",
689 .description = "Supports Virtualization extension",781 .description = "Supports Virtualization extension",
690 .dependencies = &[_]*const Feature {782 .dependencies = &[_]*const Feature {
691 &feature_hwdiv,783 &feature_hwdiv,
...@@ -695,6 +787,7 @@ pub const feature_virtualization = Feature{...@@ -695,6 +787,7 @@ pub const feature_virtualization = Feature{
695787
696pub const feature_zcz = Feature{788pub const feature_zcz = Feature{
697 .name = "zcz",789 .name = "zcz",
790 .llvm_name = "zcz",
698 .description = "Has zero-cycle zeroing instructions",791 .description = "Has zero-cycle zeroing instructions",
699 .dependencies = &[_]*const Feature {792 .dependencies = &[_]*const Feature {
700 },793 },
...@@ -854,8 +947,8 @@ pub const cpu_arm1156t2S = Cpu{...@@ -854,8 +947,8 @@ pub const cpu_arm1156t2S = Cpu{
854 .name = "arm1156t2-s",947 .name = "arm1156t2-s",
855 .llvm_name = "arm1156t2-s",948 .llvm_name = "arm1156t2-s",
856 .dependencies = &[_]*const Feature {949 .dependencies = &[_]*const Feature {
857 &feature_thumb2,
858 &feature_dsp,950 &feature_dsp,
951 &feature_thumb2,
859 },952 },
860};953};
861954
...@@ -863,8 +956,8 @@ pub const cpu_arm1156t2fS = Cpu{...@@ -863,8 +956,8 @@ pub const cpu_arm1156t2fS = Cpu{
863 .name = "arm1156t2f-s",956 .name = "arm1156t2f-s",
864 .llvm_name = "arm1156t2f-s",957 .llvm_name = "arm1156t2f-s",
865 .dependencies = &[_]*const Feature {958 .dependencies = &[_]*const Feature {
866 &feature_thumb2,
867 &feature_dsp,959 &feature_dsp,
960 &feature_thumb2,
868 &feature_slowfpvmlx,961 &feature_slowfpvmlx,
869 &feature_fpregs,962 &feature_fpregs,
870 &feature_vfp2,963 &feature_vfp2,
...@@ -1021,13 +1114,13 @@ pub const cpu_cortexA12 = Cpu{...@@ -1021,13 +1114,13 @@ pub const cpu_cortexA12 = Cpu{
1021 .name = "cortex-a12",1114 .name = "cortex-a12",
1022 .llvm_name = "cortex-a12",1115 .llvm_name = "cortex-a12",
1023 .dependencies = &[_]*const Feature {1116 .dependencies = &[_]*const Feature {
1024 &feature_d32,1117 &feature_db,
1025 &feature_perfmon,1118 &feature_perfmon,
1026 &feature_fpregs,1119 &feature_fpregs,
1027 &feature_db,1120 &feature_d32,
1028 &feature_thumb2,
1029 &feature_v7clrex,1121 &feature_v7clrex,
1030 &feature_dsp,1122 &feature_dsp,
1123 &feature_thumb2,
1031 &feature_aclass,1124 &feature_aclass,
1032 &feature_avoidPartialCpsr,1125 &feature_avoidPartialCpsr,
1033 &feature_retAddrStack,1126 &feature_retAddrStack,
...@@ -1046,13 +1139,13 @@ pub const cpu_cortexA15 = Cpu{...@@ -1046,13 +1139,13 @@ pub const cpu_cortexA15 = Cpu{
1046 .name = "cortex-a15",1139 .name = "cortex-a15",
1047 .llvm_name = "cortex-a15",1140 .llvm_name = "cortex-a15",
1048 .dependencies = &[_]*const Feature {1141 .dependencies = &[_]*const Feature {
1049 &feature_d32,1142 &feature_db,
1050 &feature_perfmon,1143 &feature_perfmon,
1051 &feature_fpregs,1144 &feature_fpregs,
1052 &feature_db,1145 &feature_d32,
1053 &feature_thumb2,
1054 &feature_v7clrex,1146 &feature_v7clrex,
1055 &feature_dsp,1147 &feature_dsp,
1148 &feature_thumb2,
1056 &feature_aclass,1149 &feature_aclass,
1057 &feature_avoidPartialCpsr,1150 &feature_avoidPartialCpsr,
1058 &feature_vldnAlign,1151 &feature_vldnAlign,
...@@ -1074,13 +1167,13 @@ pub const cpu_cortexA17 = Cpu{...@@ -1074,13 +1167,13 @@ pub const cpu_cortexA17 = Cpu{
1074 .name = "cortex-a17",1167 .name = "cortex-a17",
1075 .llvm_name = "cortex-a17",1168 .llvm_name = "cortex-a17",
1076 .dependencies = &[_]*const Feature {1169 .dependencies = &[_]*const Feature {
1077 &feature_d32,1170 &feature_db,
1078 &feature_perfmon,1171 &feature_perfmon,
1079 &feature_fpregs,1172 &feature_fpregs,
1080 &feature_db,1173 &feature_d32,
1081 &feature_thumb2,
1082 &feature_v7clrex,1174 &feature_v7clrex,
1083 &feature_dsp,1175 &feature_dsp,
1176 &feature_thumb2,
1084 &feature_aclass,1177 &feature_aclass,
1085 &feature_avoidPartialCpsr,1178 &feature_avoidPartialCpsr,
1086 &feature_retAddrStack,1179 &feature_retAddrStack,
...@@ -1099,20 +1192,20 @@ pub const cpu_cortexA32 = Cpu{...@@ -1099,20 +1192,20 @@ pub const cpu_cortexA32 = Cpu{
1099 .name = "cortex-a32",1192 .name = "cortex-a32",
1100 .llvm_name = "cortex-a32",1193 .llvm_name = "cortex-a32",
1101 .dependencies = &[_]*const Feature {1194 .dependencies = &[_]*const Feature {
1102 &feature_d32,
1103 &feature_hwdivArm,
1104 &feature_fpregs,
1105 &feature_db,1195 &feature_db,
1106 &feature_crc,1196 &feature_trustzone,
1107 &feature_fp16,
1108 &feature_perfmon,1197 &feature_perfmon,
1109 &feature_thumb2,1198 &feature_fpregs,
1110 &feature_mp,
1111 &feature_acquireRelease,1199 &feature_acquireRelease,
1112 &feature_hwdiv,1200 &feature_mp,
1113 &feature_trustzone,1201 &feature_d32,
1114 &feature_v7clrex,1202 &feature_v7clrex,
1115 &feature_dsp,1203 &feature_dsp,
1204 &feature_crc,
1205 &feature_fp16,
1206 &feature_hwdiv,
1207 &feature_hwdivArm,
1208 &feature_thumb2,
1116 &feature_aclass,1209 &feature_aclass,
1117 &feature_crypto,1210 &feature_crypto,
1118 },1211 },
...@@ -1122,20 +1215,20 @@ pub const cpu_cortexA35 = Cpu{...@@ -1122,20 +1215,20 @@ pub const cpu_cortexA35 = Cpu{
1122 .name = "cortex-a35",1215 .name = "cortex-a35",
1123 .llvm_name = "cortex-a35",1216 .llvm_name = "cortex-a35",
1124 .dependencies = &[_]*const Feature {1217 .dependencies = &[_]*const Feature {
1125 &feature_d32,
1126 &feature_hwdivArm,
1127 &feature_fpregs,
1128 &feature_db,1218 &feature_db,
1129 &feature_crc,1219 &feature_trustzone,
1130 &feature_fp16,
1131 &feature_perfmon,1220 &feature_perfmon,
1132 &feature_thumb2,1221 &feature_fpregs,
1133 &feature_mp,
1134 &feature_acquireRelease,1222 &feature_acquireRelease,
1135 &feature_hwdiv,1223 &feature_mp,
1136 &feature_trustzone,1224 &feature_d32,
1137 &feature_v7clrex,1225 &feature_v7clrex,
1138 &feature_dsp,1226 &feature_dsp,
1227 &feature_crc,
1228 &feature_fp16,
1229 &feature_hwdiv,
1230 &feature_hwdivArm,
1231 &feature_thumb2,
1139 &feature_aclass,1232 &feature_aclass,
1140 &feature_crypto,1233 &feature_crypto,
1141 },1234 },
...@@ -1145,13 +1238,13 @@ pub const cpu_cortexA5 = Cpu{...@@ -1145,13 +1238,13 @@ pub const cpu_cortexA5 = Cpu{
1145 .name = "cortex-a5",1238 .name = "cortex-a5",
1146 .llvm_name = "cortex-a5",1239 .llvm_name = "cortex-a5",
1147 .dependencies = &[_]*const Feature {1240 .dependencies = &[_]*const Feature {
1148 &feature_d32,1241 &feature_db,
1149 &feature_perfmon,1242 &feature_perfmon,
1150 &feature_fpregs,1243 &feature_fpregs,
1151 &feature_db,1244 &feature_d32,
1152 &feature_thumb2,
1153 &feature_v7clrex,1245 &feature_v7clrex,
1154 &feature_dsp,1246 &feature_dsp,
1247 &feature_thumb2,
1155 &feature_aclass,1248 &feature_aclass,
1156 &feature_retAddrStack,1249 &feature_retAddrStack,
1157 &feature_slowfpvmlx,1250 &feature_slowfpvmlx,
...@@ -1168,20 +1261,20 @@ pub const cpu_cortexA53 = Cpu{...@@ -1168,20 +1261,20 @@ pub const cpu_cortexA53 = Cpu{
1168 .name = "cortex-a53",1261 .name = "cortex-a53",
1169 .llvm_name = "cortex-a53",1262 .llvm_name = "cortex-a53",
1170 .dependencies = &[_]*const Feature {1263 .dependencies = &[_]*const Feature {
1171 &feature_d32,
1172 &feature_hwdivArm,
1173 &feature_fpregs,
1174 &feature_db,1264 &feature_db,
1175 &feature_crc,1265 &feature_trustzone,
1176 &feature_fp16,
1177 &feature_perfmon,1266 &feature_perfmon,
1178 &feature_thumb2,1267 &feature_fpregs,
1179 &feature_mp,
1180 &feature_acquireRelease,1268 &feature_acquireRelease,
1181 &feature_hwdiv,1269 &feature_mp,
1182 &feature_trustzone,1270 &feature_d32,
1183 &feature_v7clrex,1271 &feature_v7clrex,
1184 &feature_dsp,1272 &feature_dsp,
1273 &feature_crc,
1274 &feature_fp16,
1275 &feature_hwdiv,
1276 &feature_hwdivArm,
1277 &feature_thumb2,
1185 &feature_aclass,1278 &feature_aclass,
1186 &feature_crypto,1279 &feature_crypto,
1187 &feature_fpao,1280 &feature_fpao,
...@@ -1192,21 +1285,21 @@ pub const cpu_cortexA55 = Cpu{...@@ -1192,21 +1285,21 @@ pub const cpu_cortexA55 = Cpu{
1192 .name = "cortex-a55",1285 .name = "cortex-a55",
1193 .llvm_name = "cortex-a55",1286 .llvm_name = "cortex-a55",
1194 .dependencies = &[_]*const Feature {1287 .dependencies = &[_]*const Feature {
1195 &feature_d32,
1196 &feature_hwdivArm,
1197 &feature_fpregs,
1198 &feature_db,
1199 &feature_crc,
1200 &feature_fp16,
1201 &feature_ras,1288 &feature_ras,
1289 &feature_db,
1290 &feature_trustzone,
1202 &feature_perfmon,1291 &feature_perfmon,
1203 &feature_thumb2,1292 &feature_fpregs,
1204 &feature_mp,
1205 &feature_acquireRelease,1293 &feature_acquireRelease,
1206 &feature_hwdiv,1294 &feature_mp,
1207 &feature_trustzone,1295 &feature_d32,
1208 &feature_v7clrex,1296 &feature_v7clrex,
1209 &feature_dsp,1297 &feature_dsp,
1298 &feature_crc,
1299 &feature_fp16,
1300 &feature_hwdiv,
1301 &feature_hwdivArm,
1302 &feature_thumb2,
1210 &feature_aclass,1303 &feature_aclass,
1211 &feature_dotprod,1304 &feature_dotprod,
1212 },1305 },
...@@ -1216,20 +1309,20 @@ pub const cpu_cortexA57 = Cpu{...@@ -1216,20 +1309,20 @@ pub const cpu_cortexA57 = Cpu{
1216 .name = "cortex-a57",1309 .name = "cortex-a57",
1217 .llvm_name = "cortex-a57",1310 .llvm_name = "cortex-a57",
1218 .dependencies = &[_]*const Feature {1311 .dependencies = &[_]*const Feature {
1219 &feature_d32,
1220 &feature_hwdivArm,
1221 &feature_fpregs,
1222 &feature_db,1312 &feature_db,
1223 &feature_crc,1313 &feature_trustzone,
1224 &feature_fp16,
1225 &feature_perfmon,1314 &feature_perfmon,
1226 &feature_thumb2,1315 &feature_fpregs,
1227 &feature_mp,
1228 &feature_acquireRelease,1316 &feature_acquireRelease,
1229 &feature_hwdiv,1317 &feature_mp,
1230 &feature_trustzone,1318 &feature_d32,
1231 &feature_v7clrex,1319 &feature_v7clrex,
1232 &feature_dsp,1320 &feature_dsp,
1321 &feature_crc,
1322 &feature_fp16,
1323 &feature_hwdiv,
1324 &feature_hwdivArm,
1325 &feature_thumb2,
1233 &feature_aclass,1326 &feature_aclass,
1234 &feature_avoidPartialCpsr,1327 &feature_avoidPartialCpsr,
1235 &feature_cheapPredicableCpsr,1328 &feature_cheapPredicableCpsr,
...@@ -1242,13 +1335,13 @@ pub const cpu_cortexA7 = Cpu{...@@ -1242,13 +1335,13 @@ pub const cpu_cortexA7 = Cpu{
1242 .name = "cortex-a7",1335 .name = "cortex-a7",
1243 .llvm_name = "cortex-a7",1336 .llvm_name = "cortex-a7",
1244 .dependencies = &[_]*const Feature {1337 .dependencies = &[_]*const Feature {
1245 &feature_d32,1338 &feature_db,
1246 &feature_perfmon,1339 &feature_perfmon,
1247 &feature_fpregs,1340 &feature_fpregs,
1248 &feature_db,1341 &feature_d32,
1249 &feature_thumb2,
1250 &feature_v7clrex,1342 &feature_v7clrex,
1251 &feature_dsp,1343 &feature_dsp,
1344 &feature_thumb2,
1252 &feature_aclass,1345 &feature_aclass,
1253 &feature_retAddrStack,1346 &feature_retAddrStack,
1254 &feature_slowfpvmlx,1347 &feature_slowfpvmlx,
...@@ -1269,20 +1362,20 @@ pub const cpu_cortexA72 = Cpu{...@@ -1269,20 +1362,20 @@ pub const cpu_cortexA72 = Cpu{
1269 .name = "cortex-a72",1362 .name = "cortex-a72",
1270 .llvm_name = "cortex-a72",1363 .llvm_name = "cortex-a72",
1271 .dependencies = &[_]*const Feature {1364 .dependencies = &[_]*const Feature {
1272 &feature_d32,
1273 &feature_hwdivArm,
1274 &feature_fpregs,
1275 &feature_db,1365 &feature_db,
1276 &feature_crc,1366 &feature_trustzone,
1277 &feature_fp16,
1278 &feature_perfmon,1367 &feature_perfmon,
1279 &feature_thumb2,1368 &feature_fpregs,
1280 &feature_mp,
1281 &feature_acquireRelease,1369 &feature_acquireRelease,
1282 &feature_hwdiv,1370 &feature_mp,
1283 &feature_trustzone,1371 &feature_d32,
1284 &feature_v7clrex,1372 &feature_v7clrex,
1285 &feature_dsp,1373 &feature_dsp,
1374 &feature_crc,
1375 &feature_fp16,
1376 &feature_hwdiv,
1377 &feature_hwdivArm,
1378 &feature_thumb2,
1286 &feature_aclass,1379 &feature_aclass,
1287 &feature_crypto,1380 &feature_crypto,
1288 },1381 },
...@@ -1292,20 +1385,20 @@ pub const cpu_cortexA73 = Cpu{...@@ -1292,20 +1385,20 @@ pub const cpu_cortexA73 = Cpu{
1292 .name = "cortex-a73",1385 .name = "cortex-a73",
1293 .llvm_name = "cortex-a73",1386 .llvm_name = "cortex-a73",
1294 .dependencies = &[_]*const Feature {1387 .dependencies = &[_]*const Feature {
1295 &feature_d32,
1296 &feature_hwdivArm,
1297 &feature_fpregs,
1298 &feature_db,1388 &feature_db,
1299 &feature_crc,1389 &feature_trustzone,
1300 &feature_fp16,
1301 &feature_perfmon,1390 &feature_perfmon,
1302 &feature_thumb2,1391 &feature_fpregs,
1303 &feature_mp,
1304 &feature_acquireRelease,1392 &feature_acquireRelease,
1305 &feature_hwdiv,1393 &feature_mp,
1306 &feature_trustzone,1394 &feature_d32,
1307 &feature_v7clrex,1395 &feature_v7clrex,
1308 &feature_dsp,1396 &feature_dsp,
1397 &feature_crc,
1398 &feature_fp16,
1399 &feature_hwdiv,
1400 &feature_hwdivArm,
1401 &feature_thumb2,
1309 &feature_aclass,1402 &feature_aclass,
1310 &feature_crypto,1403 &feature_crypto,
1311 },1404 },
...@@ -1315,21 +1408,21 @@ pub const cpu_cortexA75 = Cpu{...@@ -1315,21 +1408,21 @@ pub const cpu_cortexA75 = Cpu{
1315 .name = "cortex-a75",1408 .name = "cortex-a75",
1316 .llvm_name = "cortex-a75",1409 .llvm_name = "cortex-a75",
1317 .dependencies = &[_]*const Feature {1410 .dependencies = &[_]*const Feature {
1318 &feature_d32,
1319 &feature_hwdivArm,
1320 &feature_fpregs,
1321 &feature_db,
1322 &feature_crc,
1323 &feature_fp16,
1324 &feature_ras,1411 &feature_ras,
1412 &feature_db,
1413 &feature_trustzone,
1325 &feature_perfmon,1414 &feature_perfmon,
1326 &feature_thumb2,1415 &feature_fpregs,
1327 &feature_mp,
1328 &feature_acquireRelease,1416 &feature_acquireRelease,
1329 &feature_hwdiv,1417 &feature_mp,
1330 &feature_trustzone,1418 &feature_d32,
1331 &feature_v7clrex,1419 &feature_v7clrex,
1332 &feature_dsp,1420 &feature_dsp,
1421 &feature_crc,
1422 &feature_fp16,
1423 &feature_hwdiv,
1424 &feature_hwdivArm,
1425 &feature_thumb2,
1333 &feature_aclass,1426 &feature_aclass,
1334 &feature_dotprod,1427 &feature_dotprod,
1335 },1428 },
...@@ -1339,21 +1432,21 @@ pub const cpu_cortexA76 = Cpu{...@@ -1339,21 +1432,21 @@ pub const cpu_cortexA76 = Cpu{
1339 .name = "cortex-a76",1432 .name = "cortex-a76",
1340 .llvm_name = "cortex-a76",1433 .llvm_name = "cortex-a76",
1341 .dependencies = &[_]*const Feature {1434 .dependencies = &[_]*const Feature {
1342 &feature_d32,
1343 &feature_hwdivArm,
1344 &feature_fpregs,
1345 &feature_db,
1346 &feature_crc,
1347 &feature_fp16,
1348 &feature_ras,1435 &feature_ras,
1436 &feature_db,
1437 &feature_trustzone,
1349 &feature_perfmon,1438 &feature_perfmon,
1350 &feature_thumb2,1439 &feature_fpregs,
1351 &feature_mp,
1352 &feature_acquireRelease,1440 &feature_acquireRelease,
1353 &feature_hwdiv,1441 &feature_mp,
1354 &feature_trustzone,1442 &feature_d32,
1355 &feature_v7clrex,1443 &feature_v7clrex,
1356 &feature_dsp,1444 &feature_dsp,
1445 &feature_crc,
1446 &feature_fp16,
1447 &feature_hwdiv,
1448 &feature_hwdivArm,
1449 &feature_thumb2,
1357 &feature_aclass,1450 &feature_aclass,
1358 &feature_crypto,1451 &feature_crypto,
1359 &feature_dotprod,1452 &feature_dotprod,
...@@ -1365,21 +1458,21 @@ pub const cpu_cortexA76ae = Cpu{...@@ -1365,21 +1458,21 @@ pub const cpu_cortexA76ae = Cpu{
1365 .name = "cortex-a76ae",1458 .name = "cortex-a76ae",
1366 .llvm_name = "cortex-a76ae",1459 .llvm_name = "cortex-a76ae",
1367 .dependencies = &[_]*const Feature {1460 .dependencies = &[_]*const Feature {
1368 &feature_d32,
1369 &feature_hwdivArm,
1370 &feature_fpregs,
1371 &feature_db,
1372 &feature_crc,
1373 &feature_fp16,
1374 &feature_ras,1461 &feature_ras,
1462 &feature_db,
1463 &feature_trustzone,
1375 &feature_perfmon,1464 &feature_perfmon,
1376 &feature_thumb2,1465 &feature_fpregs,
1377 &feature_mp,
1378 &feature_acquireRelease,1466 &feature_acquireRelease,
1379 &feature_hwdiv,1467 &feature_mp,
1380 &feature_trustzone,1468 &feature_d32,
1381 &feature_v7clrex,1469 &feature_v7clrex,
1382 &feature_dsp,1470 &feature_dsp,
1471 &feature_crc,
1472 &feature_fp16,
1473 &feature_hwdiv,
1474 &feature_hwdivArm,
1475 &feature_thumb2,
1383 &feature_aclass,1476 &feature_aclass,
1384 &feature_crypto,1477 &feature_crypto,
1385 &feature_dotprod,1478 &feature_dotprod,
...@@ -1391,13 +1484,13 @@ pub const cpu_cortexA8 = Cpu{...@@ -1391,13 +1484,13 @@ pub const cpu_cortexA8 = Cpu{
1391 .name = "cortex-a8",1484 .name = "cortex-a8",
1392 .llvm_name = "cortex-a8",1485 .llvm_name = "cortex-a8",
1393 .dependencies = &[_]*const Feature {1486 .dependencies = &[_]*const Feature {
1394 &feature_d32,1487 &feature_db,
1395 &feature_perfmon,1488 &feature_perfmon,
1396 &feature_fpregs,1489 &feature_fpregs,
1397 &feature_db,1490 &feature_d32,
1398 &feature_thumb2,
1399 &feature_v7clrex,1491 &feature_v7clrex,
1400 &feature_dsp,1492 &feature_dsp,
1493 &feature_thumb2,
1401 &feature_aclass,1494 &feature_aclass,
1402 &feature_retAddrStack,1495 &feature_retAddrStack,
1403 &feature_slowfpvmlx,1496 &feature_slowfpvmlx,
...@@ -1413,13 +1506,13 @@ pub const cpu_cortexA9 = Cpu{...@@ -1413,13 +1506,13 @@ pub const cpu_cortexA9 = Cpu{
1413 .name = "cortex-a9",1506 .name = "cortex-a9",
1414 .llvm_name = "cortex-a9",1507 .llvm_name = "cortex-a9",
1415 .dependencies = &[_]*const Feature {1508 .dependencies = &[_]*const Feature {
1416 &feature_d32,1509 &feature_db,
1417 &feature_perfmon,1510 &feature_perfmon,
1418 &feature_fpregs,1511 &feature_fpregs,
1419 &feature_db,1512 &feature_d32,
1420 &feature_thumb2,
1421 &feature_v7clrex,1513 &feature_v7clrex,
1422 &feature_dsp,1514 &feature_dsp,
1515 &feature_thumb2,
1423 &feature_aclass,1516 &feature_aclass,
1424 &feature_avoidPartialCpsr,1517 &feature_avoidPartialCpsr,
1425 &feature_vldnAlign,1518 &feature_vldnAlign,
...@@ -1441,9 +1534,9 @@ pub const cpu_cortexM0 = Cpu{...@@ -1441,9 +1534,9 @@ pub const cpu_cortexM0 = Cpu{
1441 .llvm_name = "cortex-m0",1534 .llvm_name = "cortex-m0",
1442 .dependencies = &[_]*const Feature {1535 .dependencies = &[_]*const Feature {
1443 &feature_db,1536 &feature_db,
1444 &feature_mclass,
1445 &feature_strictAlign,1537 &feature_strictAlign,
1446 &feature_noarm,1538 &feature_noarm,
1539 &feature_mclass,
1447 },1540 },
1448};1541};
14491542
...@@ -1452,9 +1545,9 @@ pub const cpu_cortexM0plus = Cpu{...@@ -1452,9 +1545,9 @@ pub const cpu_cortexM0plus = Cpu{
1452 .llvm_name = "cortex-m0plus",1545 .llvm_name = "cortex-m0plus",
1453 .dependencies = &[_]*const Feature {1546 .dependencies = &[_]*const Feature {
1454 &feature_db,1547 &feature_db,
1455 &feature_mclass,
1456 &feature_strictAlign,1548 &feature_strictAlign,
1457 &feature_noarm,1549 &feature_noarm,
1550 &feature_mclass,
1458 },1551 },
1459};1552};
14601553
...@@ -1463,9 +1556,9 @@ pub const cpu_cortexM1 = Cpu{...@@ -1463,9 +1556,9 @@ pub const cpu_cortexM1 = Cpu{
1463 .llvm_name = "cortex-m1",1556 .llvm_name = "cortex-m1",
1464 .dependencies = &[_]*const Feature {1557 .dependencies = &[_]*const Feature {
1465 &feature_db,1558 &feature_db,
1466 &feature_mclass,
1467 &feature_strictAlign,1559 &feature_strictAlign,
1468 &feature_noarm,1560 &feature_noarm,
1561 &feature_mclass,
1469 },1562 },
1470};1563};
14711564
...@@ -1473,14 +1566,14 @@ pub const cpu_cortexM23 = Cpu{...@@ -1473,14 +1566,14 @@ pub const cpu_cortexM23 = Cpu{
1473 .name = "cortex-m23",1566 .name = "cortex-m23",
1474 .llvm_name = "cortex-m23",1567 .llvm_name = "cortex-m23",
1475 .dependencies = &[_]*const Feature {1568 .dependencies = &[_]*const Feature {
1476 &feature_mclass,
1477 &feature_db,1569 &feature_db,
1478 &feature_msecext8,
1479 &feature_strictAlign,1570 &feature_strictAlign,
1480 &feature_acquireRelease,1571 &feature_acquireRelease,
1481 &feature_hwdiv,
1482 &feature_v7clrex,1572 &feature_v7clrex,
1483 &feature_noarm,1573 &feature_noarm,
1574 &feature_mclass,
1575 &feature_hwdiv,
1576 &feature_msecext8,
1484 &feature_noMovt,1577 &feature_noMovt,
1485 },1578 },
1486};1579};
...@@ -1489,13 +1582,13 @@ pub const cpu_cortexM3 = Cpu{...@@ -1489,13 +1582,13 @@ pub const cpu_cortexM3 = Cpu{
1489 .name = "cortex-m3",1582 .name = "cortex-m3",
1490 .llvm_name = "cortex-m3",1583 .llvm_name = "cortex-m3",
1491 .dependencies = &[_]*const Feature {1584 .dependencies = &[_]*const Feature {
1492 &feature_perfmon,
1493 &feature_db,1585 &feature_db,
1494 &feature_mclass,1586 &feature_perfmon,
1495 &feature_thumb2,
1496 &feature_hwdiv,
1497 &feature_v7clrex,1587 &feature_v7clrex,
1498 &feature_noarm,1588 &feature_noarm,
1589 &feature_mclass,
1590 &feature_hwdiv,
1591 &feature_thumb2,
1499 &feature_noBranchPredictor,1592 &feature_noBranchPredictor,
1500 &feature_loopAlign,1593 &feature_loopAlign,
1501 &feature_useAa,1594 &feature_useAa,
...@@ -1507,15 +1600,15 @@ pub const cpu_cortexM33 = Cpu{...@@ -1507,15 +1600,15 @@ pub const cpu_cortexM33 = Cpu{
1507 .name = "cortex-m33",1600 .name = "cortex-m33",
1508 .llvm_name = "cortex-m33",1601 .llvm_name = "cortex-m33",
1509 .dependencies = &[_]*const Feature {1602 .dependencies = &[_]*const Feature {
1510 &feature_perfmon,
1511 &feature_mclass,
1512 &feature_db,1603 &feature_db,
1513 &feature_msecext8,1604 &feature_perfmon,
1514 &feature_thumb2,
1515 &feature_acquireRelease,1605 &feature_acquireRelease,
1516 &feature_hwdiv,
1517 &feature_v7clrex,1606 &feature_v7clrex,
1518 &feature_noarm,1607 &feature_noarm,
1608 &feature_mclass,
1609 &feature_hwdiv,
1610 &feature_thumb2,
1611 &feature_msecext8,
1519 &feature_dsp,1612 &feature_dsp,
1520 &feature_fp16,1613 &feature_fp16,
1521 &feature_fpregs,1614 &feature_fpregs,
...@@ -1532,15 +1625,15 @@ pub const cpu_cortexM35p = Cpu{...@@ -1532,15 +1625,15 @@ pub const cpu_cortexM35p = Cpu{
1532 .name = "cortex-m35p",1625 .name = "cortex-m35p",
1533 .llvm_name = "cortex-m35p",1626 .llvm_name = "cortex-m35p",
1534 .dependencies = &[_]*const Feature {1627 .dependencies = &[_]*const Feature {
1535 &feature_perfmon,
1536 &feature_mclass,
1537 &feature_db,1628 &feature_db,
1538 &feature_msecext8,1629 &feature_perfmon,
1539 &feature_thumb2,
1540 &feature_acquireRelease,1630 &feature_acquireRelease,
1541 &feature_hwdiv,
1542 &feature_v7clrex,1631 &feature_v7clrex,
1543 &feature_noarm,1632 &feature_noarm,
1633 &feature_mclass,
1634 &feature_hwdiv,
1635 &feature_thumb2,
1636 &feature_msecext8,
1544 &feature_dsp,1637 &feature_dsp,
1545 &feature_fp16,1638 &feature_fp16,
1546 &feature_fpregs,1639 &feature_fpregs,
...@@ -1557,21 +1650,21 @@ pub const cpu_cortexM4 = Cpu{...@@ -1557,21 +1650,21 @@ pub const cpu_cortexM4 = Cpu{
1557 .name = "cortex-m4",1650 .name = "cortex-m4",
1558 .llvm_name = "cortex-m4",1651 .llvm_name = "cortex-m4",
1559 .dependencies = &[_]*const Feature {1652 .dependencies = &[_]*const Feature {
1560 &feature_perfmon,
1561 &feature_db,1653 &feature_db,
1562 &feature_mclass,1654 &feature_perfmon,
1563 &feature_thumb2,
1564 &feature_hwdiv,
1565 &feature_v7clrex,1655 &feature_v7clrex,
1566 &feature_dsp,1656 &feature_dsp,
1567 &feature_noarm,1657 &feature_noarm,
1658 &feature_mclass,
1659 &feature_hwdiv,
1660 &feature_thumb2,
1568 &feature_noBranchPredictor,1661 &feature_noBranchPredictor,
1569 &feature_slowfpvmlx,1662 &feature_slowfpvmlx,
1570 &feature_loopAlign,1663 &feature_loopAlign,
1571 &feature_useAa,1664 &feature_useAa,
1572 &feature_useMisched,1665 &feature_useMisched,
1573 &feature_fpregs,
1574 &feature_fp16,1666 &feature_fp16,
1667 &feature_fpregs,
1575 &feature_vfp4d16sp,1668 &feature_vfp4d16sp,
1576 },1669 },
1577};1670};
...@@ -1580,14 +1673,14 @@ pub const cpu_cortexM7 = Cpu{...@@ -1580,14 +1673,14 @@ pub const cpu_cortexM7 = Cpu{
1580 .name = "cortex-m7",1673 .name = "cortex-m7",
1581 .llvm_name = "cortex-m7",1674 .llvm_name = "cortex-m7",
1582 .dependencies = &[_]*const Feature {1675 .dependencies = &[_]*const Feature {
1583 &feature_perfmon,
1584 &feature_db,1676 &feature_db,
1585 &feature_mclass,1677 &feature_perfmon,
1586 &feature_thumb2,
1587 &feature_hwdiv,
1588 &feature_v7clrex,1678 &feature_v7clrex,
1589 &feature_dsp,1679 &feature_dsp,
1590 &feature_noarm,1680 &feature_noarm,
1681 &feature_mclass,
1682 &feature_hwdiv,
1683 &feature_thumb2,
1591 &feature_fp16,1684 &feature_fp16,
1592 &feature_fpregs,1685 &feature_fpregs,
1593 &feature_fpArmv8d16,1686 &feature_fpArmv8d16,
...@@ -1598,13 +1691,13 @@ pub const cpu_cortexR4 = Cpu{...@@ -1598,13 +1691,13 @@ pub const cpu_cortexR4 = Cpu{
1598 .name = "cortex-r4",1691 .name = "cortex-r4",
1599 .llvm_name = "cortex-r4",1692 .llvm_name = "cortex-r4",
1600 .dependencies = &[_]*const Feature {1693 .dependencies = &[_]*const Feature {
1601 &feature_perfmon,
1602 &feature_db,1694 &feature_db,
1603 &feature_thumb2,1695 &feature_perfmon,
1604 &feature_rclass,1696 &feature_rclass,
1605 &feature_hwdiv,
1606 &feature_v7clrex,1697 &feature_v7clrex,
1607 &feature_dsp,1698 &feature_dsp,
1699 &feature_hwdiv,
1700 &feature_thumb2,
1608 &feature_avoidPartialCpsr,1701 &feature_avoidPartialCpsr,
1609 &feature_retAddrStack,1702 &feature_retAddrStack,
1610 },1703 },
...@@ -1614,13 +1707,13 @@ pub const cpu_cortexR4f = Cpu{...@@ -1614,13 +1707,13 @@ pub const cpu_cortexR4f = Cpu{
1614 .name = "cortex-r4f",1707 .name = "cortex-r4f",
1615 .llvm_name = "cortex-r4f",1708 .llvm_name = "cortex-r4f",
1616 .dependencies = &[_]*const Feature {1709 .dependencies = &[_]*const Feature {
1617 &feature_perfmon,
1618 &feature_db,1710 &feature_db,
1619 &feature_thumb2,1711 &feature_perfmon,
1620 &feature_rclass,1712 &feature_rclass,
1621 &feature_hwdiv,
1622 &feature_v7clrex,1713 &feature_v7clrex,
1623 &feature_dsp,1714 &feature_dsp,
1715 &feature_hwdiv,
1716 &feature_thumb2,
1624 &feature_avoidPartialCpsr,1717 &feature_avoidPartialCpsr,
1625 &feature_retAddrStack,1718 &feature_retAddrStack,
1626 &feature_slowfpvmlx,1719 &feature_slowfpvmlx,
...@@ -1634,13 +1727,13 @@ pub const cpu_cortexR5 = Cpu{...@@ -1634,13 +1727,13 @@ pub const cpu_cortexR5 = Cpu{
1634 .name = "cortex-r5",1727 .name = "cortex-r5",
1635 .llvm_name = "cortex-r5",1728 .llvm_name = "cortex-r5",
1636 .dependencies = &[_]*const Feature {1729 .dependencies = &[_]*const Feature {
1637 &feature_perfmon,
1638 &feature_db,1730 &feature_db,
1639 &feature_thumb2,1731 &feature_perfmon,
1640 &feature_rclass,1732 &feature_rclass,
1641 &feature_hwdiv,
1642 &feature_v7clrex,1733 &feature_v7clrex,
1643 &feature_dsp,1734 &feature_dsp,
1735 &feature_hwdiv,
1736 &feature_thumb2,
1644 &feature_avoidPartialCpsr,1737 &feature_avoidPartialCpsr,
1645 &feature_hwdivArm,1738 &feature_hwdivArm,
1646 &feature_retAddrStack,1739 &feature_retAddrStack,
...@@ -1655,21 +1748,21 @@ pub const cpu_cortexR52 = Cpu{...@@ -1655,21 +1748,21 @@ pub const cpu_cortexR52 = Cpu{
1655 .name = "cortex-r52",1748 .name = "cortex-r52",
1656 .llvm_name = "cortex-r52",1749 .llvm_name = "cortex-r52",
1657 .dependencies = &[_]*const Feature {1750 .dependencies = &[_]*const Feature {
1658 &feature_d32,
1659 &feature_hwdivArm,
1660 &feature_fpregs,
1661 &feature_db,1751 &feature_db,
1662 &feature_crc,
1663 &feature_fp16,
1664 &feature_perfmon,1752 &feature_perfmon,
1665 &feature_thumb2,1753 &feature_fpregs,
1666 &feature_rclass,1754 &feature_rclass,
1667 &feature_mp,
1668 &feature_acquireRelease,1755 &feature_acquireRelease,
1669 &feature_hwdiv,1756 &feature_mp,
1757 &feature_d32,
1670 &feature_v7clrex,1758 &feature_v7clrex,
1671 &feature_dfb,
1672 &feature_dsp,1759 &feature_dsp,
1760 &feature_crc,
1761 &feature_fp16,
1762 &feature_hwdiv,
1763 &feature_hwdivArm,
1764 &feature_thumb2,
1765 &feature_dfb,
1673 &feature_fpao,1766 &feature_fpao,
1674 &feature_useAa,1767 &feature_useAa,
1675 &feature_useMisched,1768 &feature_useMisched,
...@@ -1680,13 +1773,13 @@ pub const cpu_cortexR7 = Cpu{...@@ -1680,13 +1773,13 @@ pub const cpu_cortexR7 = Cpu{
1680 .name = "cortex-r7",1773 .name = "cortex-r7",
1681 .llvm_name = "cortex-r7",1774 .llvm_name = "cortex-r7",
1682 .dependencies = &[_]*const Feature {1775 .dependencies = &[_]*const Feature {
1683 &feature_perfmon,
1684 &feature_db,1776 &feature_db,
1685 &feature_thumb2,1777 &feature_perfmon,
1686 &feature_rclass,1778 &feature_rclass,
1687 &feature_hwdiv,
1688 &feature_v7clrex,1779 &feature_v7clrex,
1689 &feature_dsp,1780 &feature_dsp,
1781 &feature_hwdiv,
1782 &feature_thumb2,
1690 &feature_avoidPartialCpsr,1783 &feature_avoidPartialCpsr,
1691 &feature_fp16,1784 &feature_fp16,
1692 &feature_hwdivArm,1785 &feature_hwdivArm,
...@@ -1703,13 +1796,13 @@ pub const cpu_cortexR8 = Cpu{...@@ -1703,13 +1796,13 @@ pub const cpu_cortexR8 = Cpu{
1703 .name = "cortex-r8",1796 .name = "cortex-r8",
1704 .llvm_name = "cortex-r8",1797 .llvm_name = "cortex-r8",
1705 .dependencies = &[_]*const Feature {1798 .dependencies = &[_]*const Feature {
1706 &feature_perfmon,
1707 &feature_db,1799 &feature_db,
1708 &feature_thumb2,1800 &feature_perfmon,
1709 &feature_rclass,1801 &feature_rclass,
1710 &feature_hwdiv,
1711 &feature_v7clrex,1802 &feature_v7clrex,
1712 &feature_dsp,1803 &feature_dsp,
1804 &feature_hwdiv,
1805 &feature_thumb2,
1713 &feature_avoidPartialCpsr,1806 &feature_avoidPartialCpsr,
1714 &feature_fp16,1807 &feature_fp16,
1715 &feature_hwdivArm,1808 &feature_hwdivArm,
...@@ -1726,20 +1819,20 @@ pub const cpu_cyclone = Cpu{...@@ -1726,20 +1819,20 @@ pub const cpu_cyclone = Cpu{
1726 .name = "cyclone",1819 .name = "cyclone",
1727 .llvm_name = "cyclone",1820 .llvm_name = "cyclone",
1728 .dependencies = &[_]*const Feature {1821 .dependencies = &[_]*const Feature {
1729 &feature_d32,
1730 &feature_hwdivArm,
1731 &feature_fpregs,
1732 &feature_db,1822 &feature_db,
1733 &feature_crc,1823 &feature_trustzone,
1734 &feature_fp16,
1735 &feature_perfmon,1824 &feature_perfmon,
1736 &feature_thumb2,1825 &feature_fpregs,
1737 &feature_mp,
1738 &feature_acquireRelease,1826 &feature_acquireRelease,
1739 &feature_hwdiv,1827 &feature_mp,
1740 &feature_trustzone,1828 &feature_d32,
1741 &feature_v7clrex,1829 &feature_v7clrex,
1742 &feature_dsp,1830 &feature_dsp,
1831 &feature_crc,
1832 &feature_fp16,
1833 &feature_hwdiv,
1834 &feature_hwdivArm,
1835 &feature_thumb2,
1743 &feature_aclass,1836 &feature_aclass,
1744 &feature_avoidMovsShop,1837 &feature_avoidMovsShop,
1745 &feature_avoidPartialCpsr,1838 &feature_avoidPartialCpsr,
...@@ -1765,33 +1858,33 @@ pub const cpu_exynosM1 = Cpu{...@@ -1765,33 +1858,33 @@ pub const cpu_exynosM1 = Cpu{
1765 .name = "exynos-m1",1858 .name = "exynos-m1",
1766 .llvm_name = "exynos-m1",1859 .llvm_name = "exynos-m1",
1767 .dependencies = &[_]*const Feature {1860 .dependencies = &[_]*const Feature {
1768 &feature_d32,
1769 &feature_hwdivArm,
1770 &feature_fpregs,
1771 &feature_db,1861 &feature_db,
1772 &feature_crc,1862 &feature_trustzone,
1773 &feature_fp16,
1774 &feature_perfmon,1863 &feature_perfmon,
1775 &feature_thumb2,1864 &feature_fpregs,
1776 &feature_mp,
1777 &feature_acquireRelease,1865 &feature_acquireRelease,
1778 &feature_hwdiv,1866 &feature_mp,
1779 &feature_trustzone,1867 &feature_d32,
1780 &feature_v7clrex,1868 &feature_v7clrex,
1781 &feature_dsp,1869 &feature_dsp,
1870 &feature_crc,
1871 &feature_fp16,
1872 &feature_hwdiv,
1873 &feature_hwdivArm,
1874 &feature_thumb2,
1782 &feature_aclass,1875 &feature_aclass,
1876 &feature_expandFpMlx,
1783 &feature_fuseLiterals,1877 &feature_fuseLiterals,
1784 &feature_profUnpr,1878 &feature_fuseAes,
1879 &feature_slowVgetlni32,
1785 &feature_wideStrideVfp,1880 &feature_wideStrideVfp,
1881 &feature_profUnpr,
1786 &feature_slowVdup32,1882 &feature_slowVdup32,
1787 &feature_slowVgetlni32,1883 &feature_slowfpvmlx,
1788 &feature_dontWidenVmovs,1884 &feature_dontWidenVmovs,
1789 &feature_fuseAes,1885 &feature_useAa,
1790 &feature_retAddrStack,1886 &feature_retAddrStack,
1791 &feature_expandFpMlx,
1792 &feature_zcz,1887 &feature_zcz,
1793 &feature_useAa,
1794 &feature_slowfpvmlx,
1795 &feature_slowFpBrcc,1888 &feature_slowFpBrcc,
1796 },1889 },
1797};1890};
...@@ -1800,33 +1893,33 @@ pub const cpu_exynosM2 = Cpu{...@@ -1800,33 +1893,33 @@ pub const cpu_exynosM2 = Cpu{
1800 .name = "exynos-m2",1893 .name = "exynos-m2",
1801 .llvm_name = "exynos-m2",1894 .llvm_name = "exynos-m2",
1802 .dependencies = &[_]*const Feature {1895 .dependencies = &[_]*const Feature {
1803 &feature_d32,
1804 &feature_hwdivArm,
1805 &feature_fpregs,
1806 &feature_db,1896 &feature_db,
1807 &feature_crc,1897 &feature_trustzone,
1808 &feature_fp16,
1809 &feature_perfmon,1898 &feature_perfmon,
1810 &feature_thumb2,1899 &feature_fpregs,
1811 &feature_mp,
1812 &feature_acquireRelease,1900 &feature_acquireRelease,
1813 &feature_hwdiv,1901 &feature_mp,
1814 &feature_trustzone,1902 &feature_d32,
1815 &feature_v7clrex,1903 &feature_v7clrex,
1816 &feature_dsp,1904 &feature_dsp,
1905 &feature_crc,
1906 &feature_fp16,
1907 &feature_hwdiv,
1908 &feature_hwdivArm,
1909 &feature_thumb2,
1817 &feature_aclass,1910 &feature_aclass,
1911 &feature_expandFpMlx,
1818 &feature_fuseLiterals,1912 &feature_fuseLiterals,
1819 &feature_profUnpr,1913 &feature_fuseAes,
1914 &feature_slowVgetlni32,
1820 &feature_wideStrideVfp,1915 &feature_wideStrideVfp,
1916 &feature_profUnpr,
1821 &feature_slowVdup32,1917 &feature_slowVdup32,
1822 &feature_slowVgetlni32,1918 &feature_slowfpvmlx,
1823 &feature_dontWidenVmovs,1919 &feature_dontWidenVmovs,
1824 &feature_fuseAes,1920 &feature_useAa,
1825 &feature_retAddrStack,1921 &feature_retAddrStack,
1826 &feature_expandFpMlx,
1827 &feature_zcz,1922 &feature_zcz,
1828 &feature_useAa,
1829 &feature_slowfpvmlx,
1830 &feature_slowFpBrcc,1923 &feature_slowFpBrcc,
1831 },1924 },
1832};1925};
...@@ -1835,33 +1928,33 @@ pub const cpu_exynosM3 = Cpu{...@@ -1835,33 +1928,33 @@ pub const cpu_exynosM3 = Cpu{
1835 .name = "exynos-m3",1928 .name = "exynos-m3",
1836 .llvm_name = "exynos-m3",1929 .llvm_name = "exynos-m3",
1837 .dependencies = &[_]*const Feature {1930 .dependencies = &[_]*const Feature {
1838 &feature_d32,
1839 &feature_hwdivArm,
1840 &feature_fpregs,
1841 &feature_db,1931 &feature_db,
1842 &feature_crc,1932 &feature_trustzone,
1843 &feature_fp16,
1844 &feature_perfmon,1933 &feature_perfmon,
1845 &feature_thumb2,1934 &feature_fpregs,
1846 &feature_mp,
1847 &feature_acquireRelease,1935 &feature_acquireRelease,
1848 &feature_hwdiv,1936 &feature_mp,
1849 &feature_trustzone,1937 &feature_d32,
1850 &feature_v7clrex,1938 &feature_v7clrex,
1851 &feature_dsp,1939 &feature_dsp,
1940 &feature_crc,
1941 &feature_fp16,
1942 &feature_hwdiv,
1943 &feature_hwdivArm,
1944 &feature_thumb2,
1852 &feature_aclass,1945 &feature_aclass,
1946 &feature_expandFpMlx,
1853 &feature_fuseLiterals,1947 &feature_fuseLiterals,
1854 &feature_profUnpr,1948 &feature_fuseAes,
1949 &feature_slowVgetlni32,
1855 &feature_wideStrideVfp,1950 &feature_wideStrideVfp,
1951 &feature_profUnpr,
1856 &feature_slowVdup32,1952 &feature_slowVdup32,
1857 &feature_slowVgetlni32,1953 &feature_slowfpvmlx,
1858 &feature_dontWidenVmovs,1954 &feature_dontWidenVmovs,
1859 &feature_fuseAes,1955 &feature_useAa,
1860 &feature_retAddrStack,1956 &feature_retAddrStack,
1861 &feature_expandFpMlx,
1862 &feature_zcz,1957 &feature_zcz,
1863 &feature_useAa,
1864 &feature_slowfpvmlx,
1865 &feature_slowFpBrcc,1958 &feature_slowFpBrcc,
1866 },1959 },
1867};1960};
...@@ -1870,36 +1963,36 @@ pub const cpu_exynosM4 = Cpu{...@@ -1870,36 +1963,36 @@ pub const cpu_exynosM4 = Cpu{
1870 .name = "exynos-m4",1963 .name = "exynos-m4",
1871 .llvm_name = "exynos-m4",1964 .llvm_name = "exynos-m4",
1872 .dependencies = &[_]*const Feature {1965 .dependencies = &[_]*const Feature {
1873 &feature_d32,
1874 &feature_hwdivArm,
1875 &feature_fpregs,
1876 &feature_db,
1877 &feature_crc,
1878 &feature_fp16,
1879 &feature_ras,1966 &feature_ras,
1967 &feature_db,
1968 &feature_trustzone,
1880 &feature_perfmon,1969 &feature_perfmon,
1881 &feature_thumb2,1970 &feature_fpregs,
1882 &feature_mp,
1883 &feature_acquireRelease,1971 &feature_acquireRelease,
1884 &feature_hwdiv,1972 &feature_mp,
1885 &feature_trustzone,1973 &feature_d32,
1886 &feature_v7clrex,1974 &feature_v7clrex,
1887 &feature_dsp,1975 &feature_dsp,
1976 &feature_crc,
1977 &feature_fp16,
1978 &feature_hwdiv,
1979 &feature_hwdivArm,
1980 &feature_thumb2,
1888 &feature_aclass,1981 &feature_aclass,
1889 &feature_dotprod,1982 &feature_dotprod,
1890 &feature_fullfp16,1983 &feature_fullfp16,
1984 &feature_expandFpMlx,
1891 &feature_fuseLiterals,1985 &feature_fuseLiterals,
1892 &feature_profUnpr,1986 &feature_fuseAes,
1987 &feature_slowVgetlni32,
1893 &feature_wideStrideVfp,1988 &feature_wideStrideVfp,
1989 &feature_profUnpr,
1894 &feature_slowVdup32,1990 &feature_slowVdup32,
1895 &feature_slowVgetlni32,1991 &feature_slowfpvmlx,
1896 &feature_dontWidenVmovs,1992 &feature_dontWidenVmovs,
1897 &feature_fuseAes,1993 &feature_useAa,
1898 &feature_retAddrStack,1994 &feature_retAddrStack,
1899 &feature_expandFpMlx,
1900 &feature_zcz,1995 &feature_zcz,
1901 &feature_useAa,
1902 &feature_slowfpvmlx,
1903 &feature_slowFpBrcc,1996 &feature_slowFpBrcc,
1904 },1997 },
1905};1998};
...@@ -1908,36 +2001,36 @@ pub const cpu_exynosM5 = Cpu{...@@ -1908,36 +2001,36 @@ pub const cpu_exynosM5 = Cpu{
1908 .name = "exynos-m5",2001 .name = "exynos-m5",
1909 .llvm_name = "exynos-m5",2002 .llvm_name = "exynos-m5",
1910 .dependencies = &[_]*const Feature {2003 .dependencies = &[_]*const Feature {
1911 &feature_d32,
1912 &feature_hwdivArm,
1913 &feature_fpregs,
1914 &feature_db,
1915 &feature_crc,
1916 &feature_fp16,
1917 &feature_ras,2004 &feature_ras,
2005 &feature_db,
2006 &feature_trustzone,
1918 &feature_perfmon,2007 &feature_perfmon,
1919 &feature_thumb2,2008 &feature_fpregs,
1920 &feature_mp,
1921 &feature_acquireRelease,2009 &feature_acquireRelease,
1922 &feature_hwdiv,2010 &feature_mp,
1923 &feature_trustzone,2011 &feature_d32,
1924 &feature_v7clrex,2012 &feature_v7clrex,
1925 &feature_dsp,2013 &feature_dsp,
2014 &feature_crc,
2015 &feature_fp16,
2016 &feature_hwdiv,
2017 &feature_hwdivArm,
2018 &feature_thumb2,
1926 &feature_aclass,2019 &feature_aclass,
1927 &feature_dotprod,2020 &feature_dotprod,
1928 &feature_fullfp16,2021 &feature_fullfp16,
2022 &feature_expandFpMlx,
1929 &feature_fuseLiterals,2023 &feature_fuseLiterals,
1930 &feature_profUnpr,2024 &feature_fuseAes,
2025 &feature_slowVgetlni32,
1931 &feature_wideStrideVfp,2026 &feature_wideStrideVfp,
2027 &feature_profUnpr,
1932 &feature_slowVdup32,2028 &feature_slowVdup32,
1933 &feature_slowVgetlni32,2029 &feature_slowfpvmlx,
1934 &feature_dontWidenVmovs,2030 &feature_dontWidenVmovs,
1935 &feature_fuseAes,2031 &feature_useAa,
1936 &feature_retAddrStack,2032 &feature_retAddrStack,
1937 &feature_expandFpMlx,
1938 &feature_zcz,2033 &feature_zcz,
1939 &feature_useAa,
1940 &feature_slowfpvmlx,
1941 &feature_slowFpBrcc,2034 &feature_slowFpBrcc,
1942 },2035 },
1943};2036};
...@@ -1960,13 +2053,13 @@ pub const cpu_krait = Cpu{...@@ -1960,13 +2053,13 @@ pub const cpu_krait = Cpu{
1960 .name = "krait",2053 .name = "krait",
1961 .llvm_name = "krait",2054 .llvm_name = "krait",
1962 .dependencies = &[_]*const Feature {2055 .dependencies = &[_]*const Feature {
1963 &feature_d32,2056 &feature_db,
1964 &feature_perfmon,2057 &feature_perfmon,
1965 &feature_fpregs,2058 &feature_fpregs,
1966 &feature_db,2059 &feature_d32,
1967 &feature_thumb2,
1968 &feature_v7clrex,2060 &feature_v7clrex,
1969 &feature_dsp,2061 &feature_dsp,
2062 &feature_thumb2,
1970 &feature_aclass,2063 &feature_aclass,
1971 &feature_avoidPartialCpsr,2064 &feature_avoidPartialCpsr,
1972 &feature_vldnAlign,2065 &feature_vldnAlign,
...@@ -1984,20 +2077,20 @@ pub const cpu_kryo = Cpu{...@@ -1984,20 +2077,20 @@ pub const cpu_kryo = Cpu{
1984 .name = "kryo",2077 .name = "kryo",
1985 .llvm_name = "kryo",2078 .llvm_name = "kryo",
1986 .dependencies = &[_]*const Feature {2079 .dependencies = &[_]*const Feature {
1987 &feature_d32,
1988 &feature_hwdivArm,
1989 &feature_fpregs,
1990 &feature_db,2080 &feature_db,
1991 &feature_crc,2081 &feature_trustzone,
1992 &feature_fp16,
1993 &feature_perfmon,2082 &feature_perfmon,
1994 &feature_thumb2,2083 &feature_fpregs,
1995 &feature_mp,
1996 &feature_acquireRelease,2084 &feature_acquireRelease,
1997 &feature_hwdiv,2085 &feature_mp,
1998 &feature_trustzone,2086 &feature_d32,
1999 &feature_v7clrex,2087 &feature_v7clrex,
2000 &feature_dsp,2088 &feature_dsp,
2089 &feature_crc,
2090 &feature_fp16,
2091 &feature_hwdiv,
2092 &feature_hwdivArm,
2093 &feature_thumb2,
2001 &feature_aclass,2094 &feature_aclass,
2002 &feature_crypto,2095 &feature_crypto,
2003 },2096 },
...@@ -2024,21 +2117,21 @@ pub const cpu_neoverseN1 = Cpu{...@@ -2024,21 +2117,21 @@ pub const cpu_neoverseN1 = Cpu{
2024 .name = "neoverse-n1",2117 .name = "neoverse-n1",
2025 .llvm_name = "neoverse-n1",2118 .llvm_name = "neoverse-n1",
2026 .dependencies = &[_]*const Feature {2119 .dependencies = &[_]*const Feature {
2027 &feature_d32,
2028 &feature_hwdivArm,
2029 &feature_fpregs,
2030 &feature_db,
2031 &feature_crc,
2032 &feature_fp16,
2033 &feature_ras,2120 &feature_ras,
2121 &feature_db,
2122 &feature_trustzone,
2034 &feature_perfmon,2123 &feature_perfmon,
2035 &feature_thumb2,2124 &feature_fpregs,
2036 &feature_mp,
2037 &feature_acquireRelease,2125 &feature_acquireRelease,
2038 &feature_hwdiv,2126 &feature_mp,
2039 &feature_trustzone,2127 &feature_d32,
2040 &feature_v7clrex,2128 &feature_v7clrex,
2041 &feature_dsp,2129 &feature_dsp,
2130 &feature_crc,
2131 &feature_fp16,
2132 &feature_hwdiv,
2133 &feature_hwdivArm,
2134 &feature_thumb2,
2042 &feature_aclass,2135 &feature_aclass,
2043 &feature_crypto,2136 &feature_crypto,
2044 &feature_dotprod,2137 &feature_dotprod,
...@@ -2050,9 +2143,9 @@ pub const cpu_sc000 = Cpu{...@@ -2050,9 +2143,9 @@ pub const cpu_sc000 = Cpu{
2050 .llvm_name = "sc000",2143 .llvm_name = "sc000",
2051 .dependencies = &[_]*const Feature {2144 .dependencies = &[_]*const Feature {
2052 &feature_db,2145 &feature_db,
2053 &feature_mclass,
2054 &feature_strictAlign,2146 &feature_strictAlign,
2055 &feature_noarm,2147 &feature_noarm,
2148 &feature_mclass,
2056 },2149 },
2057};2150};
20582151
...@@ -2060,13 +2153,13 @@ pub const cpu_sc300 = Cpu{...@@ -2060,13 +2153,13 @@ pub const cpu_sc300 = Cpu{
2060 .name = "sc300",2153 .name = "sc300",
2061 .llvm_name = "sc300",2154 .llvm_name = "sc300",
2062 .dependencies = &[_]*const Feature {2155 .dependencies = &[_]*const Feature {
2063 &feature_perfmon,
2064 &feature_db,2156 &feature_db,
2065 &feature_mclass,2157 &feature_perfmon,
2066 &feature_thumb2,
2067 &feature_hwdiv,
2068 &feature_v7clrex,2158 &feature_v7clrex,
2069 &feature_noarm,2159 &feature_noarm,
2160 &feature_mclass,
2161 &feature_hwdiv,
2162 &feature_thumb2,
2070 &feature_noBranchPredictor,2163 &feature_noBranchPredictor,
2071 &feature_useAa,2164 &feature_useAa,
2072 &feature_useMisched,2165 &feature_useMisched,
...@@ -2105,13 +2198,13 @@ pub const cpu_swift = Cpu{...@@ -2105,13 +2198,13 @@ pub const cpu_swift = Cpu{
2105 .name = "swift",2198 .name = "swift",
2106 .llvm_name = "swift",2199 .llvm_name = "swift",
2107 .dependencies = &[_]*const Feature {2200 .dependencies = &[_]*const Feature {
2108 &feature_d32,2201 &feature_db,
2109 &feature_perfmon,2202 &feature_perfmon,
2110 &feature_fpregs,2203 &feature_fpregs,
2111 &feature_db,2204 &feature_d32,
2112 &feature_thumb2,
2113 &feature_v7clrex,2205 &feature_v7clrex,
2114 &feature_dsp,2206 &feature_dsp,
2207 &feature_thumb2,
2115 &feature_aclass,2208 &feature_aclass,
2116 &feature_avoidMovsShop,2209 &feature_avoidMovsShop,
2117 &feature_avoidPartialCpsr,2210 &feature_avoidPartialCpsr,
lib/std/target/avr.zig+1416-1398
...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
4pub const feature_addsubiw = Feature{4pub const feature_addsubiw = Feature{
5 .name = "addsubiw",5 .name = "addsubiw",
6 .llvm_name = "addsubiw",
6 .description = "Enable 16-bit register-immediate addition and subtraction instructions",7 .description = "Enable 16-bit register-immediate addition and subtraction instructions",
7 .dependencies = &[_]*const Feature {8 .dependencies = &[_]*const Feature {
8 },9 },
...@@ -10,6 +11,7 @@ pub const feature_addsubiw = Feature{...@@ -10,6 +11,7 @@ pub const feature_addsubiw = Feature{
1011
11pub const feature_break = Feature{12pub const feature_break = Feature{
12 .name = "break",13 .name = "break",
14 .llvm_name = "break",
13 .description = "The device supports the `BREAK` debugging instruction",15 .description = "The device supports the `BREAK` debugging instruction",
14 .dependencies = &[_]*const Feature {16 .dependencies = &[_]*const Feature {
15 },17 },
...@@ -17,6 +19,7 @@ pub const feature_break = Feature{...@@ -17,6 +19,7 @@ pub const feature_break = Feature{
1719
18pub const feature_des = Feature{20pub const feature_des = Feature{
19 .name = "des",21 .name = "des",
22 .llvm_name = "des",
20 .description = "The device supports the `DES k` encryption instruction",23 .description = "The device supports the `DES k` encryption instruction",
21 .dependencies = &[_]*const Feature {24 .dependencies = &[_]*const Feature {
22 },25 },
...@@ -24,6 +27,7 @@ pub const feature_des = Feature{...@@ -24,6 +27,7 @@ pub const feature_des = Feature{
2427
25pub const feature_eijmpcall = Feature{28pub const feature_eijmpcall = Feature{
26 .name = "eijmpcall",29 .name = "eijmpcall",
30 .llvm_name = "eijmpcall",
27 .description = "The device supports the `EIJMP`/`EICALL` instructions",31 .description = "The device supports the `EIJMP`/`EICALL` instructions",
28 .dependencies = &[_]*const Feature {32 .dependencies = &[_]*const Feature {
29 },33 },
...@@ -31,6 +35,7 @@ pub const feature_eijmpcall = Feature{...@@ -31,6 +35,7 @@ pub const feature_eijmpcall = Feature{
3135
32pub const feature_elpm = Feature{36pub const feature_elpm = Feature{
33 .name = "elpm",37 .name = "elpm",
38 .llvm_name = "elpm",
34 .description = "The device supports the ELPM instruction",39 .description = "The device supports the ELPM instruction",
35 .dependencies = &[_]*const Feature {40 .dependencies = &[_]*const Feature {
36 },41 },
...@@ -38,6 +43,7 @@ pub const feature_elpm = Feature{...@@ -38,6 +43,7 @@ pub const feature_elpm = Feature{
3843
39pub const feature_elpmx = Feature{44pub const feature_elpmx = Feature{
40 .name = "elpmx",45 .name = "elpmx",
46 .llvm_name = "elpmx",
41 .description = "The device supports the `ELPM Rd, Z[+]` instructions",47 .description = "The device supports the `ELPM Rd, Z[+]` instructions",
42 .dependencies = &[_]*const Feature {48 .dependencies = &[_]*const Feature {
43 },49 },
...@@ -45,6 +51,7 @@ pub const feature_elpmx = Feature{...@@ -45,6 +51,7 @@ pub const feature_elpmx = Feature{
4551
46pub const feature_ijmpcall = Feature{52pub const feature_ijmpcall = Feature{
47 .name = "ijmpcall",53 .name = "ijmpcall",
54 .llvm_name = "ijmpcall",
48 .description = "The device supports `IJMP`/`ICALL`instructions",55 .description = "The device supports `IJMP`/`ICALL`instructions",
49 .dependencies = &[_]*const Feature {56 .dependencies = &[_]*const Feature {
50 },57 },
...@@ -52,6 +59,7 @@ pub const feature_ijmpcall = Feature{...@@ -52,6 +59,7 @@ pub const feature_ijmpcall = Feature{
5259
53pub const feature_jmpcall = Feature{60pub const feature_jmpcall = Feature{
54 .name = "jmpcall",61 .name = "jmpcall",
62 .llvm_name = "jmpcall",
55 .description = "The device supports the `JMP` and `CALL` instructions",63 .description = "The device supports the `JMP` and `CALL` instructions",
56 .dependencies = &[_]*const Feature {64 .dependencies = &[_]*const Feature {
57 },65 },
...@@ -59,6 +67,7 @@ pub const feature_jmpcall = Feature{...@@ -59,6 +67,7 @@ pub const feature_jmpcall = Feature{
5967
60pub const feature_lpm = Feature{68pub const feature_lpm = Feature{
61 .name = "lpm",69 .name = "lpm",
70 .llvm_name = "lpm",
62 .description = "The device supports the `LPM` instruction",71 .description = "The device supports the `LPM` instruction",
63 .dependencies = &[_]*const Feature {72 .dependencies = &[_]*const Feature {
64 },73 },
...@@ -66,6 +75,7 @@ pub const feature_lpm = Feature{...@@ -66,6 +75,7 @@ pub const feature_lpm = Feature{
6675
67pub const feature_lpmx = Feature{76pub const feature_lpmx = Feature{
68 .name = "lpmx",77 .name = "lpmx",
78 .llvm_name = "lpmx",
69 .description = "The device supports the `LPM Rd, Z[+]` instruction",79 .description = "The device supports the `LPM Rd, Z[+]` instruction",
70 .dependencies = &[_]*const Feature {80 .dependencies = &[_]*const Feature {
71 },81 },
...@@ -73,6 +83,7 @@ pub const feature_lpmx = Feature{...@@ -73,6 +83,7 @@ pub const feature_lpmx = Feature{
7383
74pub const feature_movw = Feature{84pub const feature_movw = Feature{
75 .name = "movw",85 .name = "movw",
86 .llvm_name = "movw",
76 .description = "The device supports the 16-bit MOVW instruction",87 .description = "The device supports the 16-bit MOVW instruction",
77 .dependencies = &[_]*const Feature {88 .dependencies = &[_]*const Feature {
78 },89 },
...@@ -80,6 +91,7 @@ pub const feature_movw = Feature{...@@ -80,6 +91,7 @@ pub const feature_movw = Feature{
8091
81pub const feature_mul = Feature{92pub const feature_mul = Feature{
82 .name = "mul",93 .name = "mul",
94 .llvm_name = "mul",
83 .description = "The device supports the multiplication instructions",95 .description = "The device supports the multiplication instructions",
84 .dependencies = &[_]*const Feature {96 .dependencies = &[_]*const Feature {
85 },97 },
...@@ -87,6 +99,7 @@ pub const feature_mul = Feature{...@@ -87,6 +99,7 @@ pub const feature_mul = Feature{
8799
88pub const feature_rmw = Feature{100pub const feature_rmw = Feature{
89 .name = "rmw",101 .name = "rmw",
102 .llvm_name = "rmw",
90 .description = "The device supports the read-write-modify instructions: XCH, LAS, LAC, LAT",103 .description = "The device supports the read-write-modify instructions: XCH, LAS, LAC, LAT",
91 .dependencies = &[_]*const Feature {104 .dependencies = &[_]*const Feature {
92 },105 },
...@@ -94,6 +107,7 @@ pub const feature_rmw = Feature{...@@ -94,6 +107,7 @@ pub const feature_rmw = Feature{
94107
95pub const feature_spm = Feature{108pub const feature_spm = Feature{
96 .name = "spm",109 .name = "spm",
110 .llvm_name = "spm",
97 .description = "The device supports the `SPM` instruction",111 .description = "The device supports the `SPM` instruction",
98 .dependencies = &[_]*const Feature {112 .dependencies = &[_]*const Feature {
99 },113 },
...@@ -101,6 +115,7 @@ pub const feature_spm = Feature{...@@ -101,6 +115,7 @@ pub const feature_spm = Feature{
101115
102pub const feature_spmx = Feature{116pub const feature_spmx = Feature{
103 .name = "spmx",117 .name = "spmx",
118 .llvm_name = "spmx",
104 .description = "The device supports the `SPM Z+` instruction",119 .description = "The device supports the `SPM Z+` instruction",
105 .dependencies = &[_]*const Feature {120 .dependencies = &[_]*const Feature {
106 },121 },
...@@ -108,6 +123,7 @@ pub const feature_spmx = Feature{...@@ -108,6 +123,7 @@ pub const feature_spmx = Feature{
108123
109pub const feature_sram = Feature{124pub const feature_sram = Feature{
110 .name = "sram",125 .name = "sram",
126 .llvm_name = "sram",
111 .description = "The device has random access memory",127 .description = "The device has random access memory",
112 .dependencies = &[_]*const Feature {128 .dependencies = &[_]*const Feature {
113 },129 },
...@@ -115,6 +131,7 @@ pub const feature_sram = Feature{...@@ -115,6 +131,7 @@ pub const feature_sram = Feature{
115131
116pub const feature_smallstack = Feature{132pub const feature_smallstack = Feature{
117 .name = "smallstack",133 .name = "smallstack",
134 .llvm_name = "smallstack",
118 .description = "The device has an 8-bit stack pointer",135 .description = "The device has an 8-bit stack pointer",
119 .dependencies = &[_]*const Feature {136 .dependencies = &[_]*const Feature {
120 },137 },
...@@ -122,6 +139,7 @@ pub const feature_smallstack = Feature{...@@ -122,6 +139,7 @@ pub const feature_smallstack = Feature{
122139
123pub const feature_tinyencoding = Feature{140pub const feature_tinyencoding = Feature{
124 .name = "tinyencoding",141 .name = "tinyencoding",
142 .llvm_name = "tinyencoding",
125 .description = "The device has Tiny core specific instruction encodings",143 .description = "The device has Tiny core specific instruction encodings",
126 .dependencies = &[_]*const Feature {144 .dependencies = &[_]*const Feature {
127 },145 },
...@@ -152,12 +170,12 @@ pub const cpu_at43usb320 = Cpu{...@@ -152,12 +170,12 @@ pub const cpu_at43usb320 = Cpu{
152 .name = "at43usb320",170 .name = "at43usb320",
153 .llvm_name = "at43usb320",171 .llvm_name = "at43usb320",
154 .dependencies = &[_]*const Feature {172 .dependencies = &[_]*const Feature {
155 &feature_elpm,
156 &feature_lpm,
157 &feature_ijmpcall,
158 &feature_sram,173 &feature_sram,
159 &feature_jmpcall,174 &feature_jmpcall,
175 &feature_elpm,
176 &feature_lpm,
160 &feature_addsubiw,177 &feature_addsubiw,
178 &feature_ijmpcall,
161 },179 },
162};180};
163181
...@@ -165,11 +183,11 @@ pub const cpu_at43usb355 = Cpu{...@@ -165,11 +183,11 @@ pub const cpu_at43usb355 = Cpu{
165 .name = "at43usb355",183 .name = "at43usb355",
166 .llvm_name = "at43usb355",184 .llvm_name = "at43usb355",
167 .dependencies = &[_]*const Feature {185 .dependencies = &[_]*const Feature {
168 &feature_lpm,
169 &feature_ijmpcall,
170 &feature_sram,186 &feature_sram,
171 &feature_jmpcall,187 &feature_jmpcall,
188 &feature_lpm,
172 &feature_addsubiw,189 &feature_addsubiw,
190 &feature_ijmpcall,
173 },191 },
174};192};
175193
...@@ -177,11 +195,11 @@ pub const cpu_at76c711 = Cpu{...@@ -177,11 +195,11 @@ pub const cpu_at76c711 = Cpu{
177 .name = "at76c711",195 .name = "at76c711",
178 .llvm_name = "at76c711",196 .llvm_name = "at76c711",
179 .dependencies = &[_]*const Feature {197 .dependencies = &[_]*const Feature {
180 &feature_lpm,
181 &feature_ijmpcall,
182 &feature_sram,198 &feature_sram,
183 &feature_jmpcall,199 &feature_jmpcall,
200 &feature_lpm,
184 &feature_addsubiw,201 &feature_addsubiw,
202 &feature_ijmpcall,
185 },203 },
186};204};
187205
...@@ -189,10 +207,10 @@ pub const cpu_at86rf401 = Cpu{...@@ -189,10 +207,10 @@ pub const cpu_at86rf401 = Cpu{
189 .name = "at86rf401",207 .name = "at86rf401",
190 .llvm_name = "at86rf401",208 .llvm_name = "at86rf401",
191 .dependencies = &[_]*const Feature {209 .dependencies = &[_]*const Feature {
192 &feature_lpm,
193 &feature_ijmpcall,
194 &feature_sram,210 &feature_sram,
211 &feature_lpm,
195 &feature_addsubiw,212 &feature_addsubiw,
213 &feature_ijmpcall,
196 &feature_lpmx,214 &feature_lpmx,
197 &feature_movw,215 &feature_movw,
198 },216 },
...@@ -202,10 +220,10 @@ pub const cpu_at90c8534 = Cpu{...@@ -202,10 +220,10 @@ pub const cpu_at90c8534 = Cpu{
202 .name = "at90c8534",220 .name = "at90c8534",
203 .llvm_name = "at90c8534",221 .llvm_name = "at90c8534",
204 .dependencies = &[_]*const Feature {222 .dependencies = &[_]*const Feature {
205 &feature_lpm,
206 &feature_ijmpcall,
207 &feature_sram,223 &feature_sram,
224 &feature_lpm,
208 &feature_addsubiw,225 &feature_addsubiw,
226 &feature_ijmpcall,
209 },227 },
210};228};
211229
...@@ -213,18 +231,18 @@ pub const cpu_at90can128 = Cpu{...@@ -213,18 +231,18 @@ pub const cpu_at90can128 = Cpu{
213 .name = "at90can128",231 .name = "at90can128",
214 .llvm_name = "at90can128",232 .llvm_name = "at90can128",
215 .dependencies = &[_]*const Feature {233 .dependencies = &[_]*const Feature {
216 &feature_lpmx,234 &feature_sram,
235 &feature_jmpcall,
236 &feature_mul,
217 &feature_elpm,237 &feature_elpm,
218 &feature_spm,
219 &feature_lpm,238 &feature_lpm,
239 &feature_lpmx,
240 &feature_spm,
241 &feature_addsubiw,
220 &feature_ijmpcall,242 &feature_ijmpcall,
221 &feature_elpmx,243 &feature_elpmx,
222 &feature_sram,
223 &feature_break,244 &feature_break,
224 &feature_jmpcall,
225 &feature_mul,
226 &feature_movw,245 &feature_movw,
227 &feature_addsubiw,
228 },246 },
229};247};
230248
...@@ -232,16 +250,16 @@ pub const cpu_at90can32 = Cpu{...@@ -232,16 +250,16 @@ pub const cpu_at90can32 = Cpu{
232 .name = "at90can32",250 .name = "at90can32",
233 .llvm_name = "at90can32",251 .llvm_name = "at90can32",
234 .dependencies = &[_]*const Feature {252 .dependencies = &[_]*const Feature {
235 &feature_lpmx,253 &feature_sram,
254 &feature_jmpcall,
255 &feature_mul,
236 &feature_lpm,256 &feature_lpm,
257 &feature_lpmx,
237 &feature_spm,258 &feature_spm,
259 &feature_addsubiw,
238 &feature_ijmpcall,260 &feature_ijmpcall,
239 &feature_sram,
240 &feature_break,261 &feature_break,
241 &feature_jmpcall,
242 &feature_mul,
243 &feature_movw,262 &feature_movw,
244 &feature_addsubiw,
245 },263 },
246};264};
247265
...@@ -249,16 +267,16 @@ pub const cpu_at90can64 = Cpu{...@@ -249,16 +267,16 @@ pub const cpu_at90can64 = Cpu{
249 .name = "at90can64",267 .name = "at90can64",
250 .llvm_name = "at90can64",268 .llvm_name = "at90can64",
251 .dependencies = &[_]*const Feature {269 .dependencies = &[_]*const Feature {
252 &feature_lpmx,270 &feature_sram,
271 &feature_jmpcall,
272 &feature_mul,
253 &feature_lpm,273 &feature_lpm,
274 &feature_lpmx,
254 &feature_spm,275 &feature_spm,
276 &feature_addsubiw,
255 &feature_ijmpcall,277 &feature_ijmpcall,
256 &feature_sram,
257 &feature_break,278 &feature_break,
258 &feature_jmpcall,
259 &feature_mul,
260 &feature_movw,279 &feature_movw,
261 &feature_addsubiw,
262 },280 },
263};281};
264282
...@@ -266,15 +284,15 @@ pub const cpu_at90pwm1 = Cpu{...@@ -266,15 +284,15 @@ pub const cpu_at90pwm1 = Cpu{
266 .name = "at90pwm1",284 .name = "at90pwm1",
267 .llvm_name = "at90pwm1",285 .llvm_name = "at90pwm1",
268 .dependencies = &[_]*const Feature {286 .dependencies = &[_]*const Feature {
269 &feature_lpmx,287 &feature_sram,
288 &feature_mul,
270 &feature_lpm,289 &feature_lpm,
290 &feature_lpmx,
271 &feature_spm,291 &feature_spm,
292 &feature_addsubiw,
272 &feature_ijmpcall,293 &feature_ijmpcall,
273 &feature_sram,
274 &feature_break,294 &feature_break,
275 &feature_mul,
276 &feature_movw,295 &feature_movw,
277 &feature_addsubiw,
278 },296 },
279};297};
280298
...@@ -282,16 +300,16 @@ pub const cpu_at90pwm161 = Cpu{...@@ -282,16 +300,16 @@ pub const cpu_at90pwm161 = Cpu{
282 .name = "at90pwm161",300 .name = "at90pwm161",
283 .llvm_name = "at90pwm161",301 .llvm_name = "at90pwm161",
284 .dependencies = &[_]*const Feature {302 .dependencies = &[_]*const Feature {
285 &feature_lpmx,303 &feature_sram,
304 &feature_jmpcall,
305 &feature_mul,
286 &feature_lpm,306 &feature_lpm,
307 &feature_lpmx,
287 &feature_spm,308 &feature_spm,
309 &feature_addsubiw,
288 &feature_ijmpcall,310 &feature_ijmpcall,
289 &feature_sram,
290 &feature_break,311 &feature_break,
291 &feature_jmpcall,
292 &feature_mul,
293 &feature_movw,312 &feature_movw,
294 &feature_addsubiw,
295 },313 },
296};314};
297315
...@@ -299,15 +317,15 @@ pub const cpu_at90pwm2 = Cpu{...@@ -299,15 +317,15 @@ pub const cpu_at90pwm2 = Cpu{
299 .name = "at90pwm2",317 .name = "at90pwm2",
300 .llvm_name = "at90pwm2",318 .llvm_name = "at90pwm2",
301 .dependencies = &[_]*const Feature {319 .dependencies = &[_]*const Feature {
302 &feature_lpmx,320 &feature_sram,
321 &feature_mul,
303 &feature_lpm,322 &feature_lpm,
323 &feature_lpmx,
304 &feature_spm,324 &feature_spm,
325 &feature_addsubiw,
305 &feature_ijmpcall,326 &feature_ijmpcall,
306 &feature_sram,
307 &feature_break,327 &feature_break,
308 &feature_mul,
309 &feature_movw,328 &feature_movw,
310 &feature_addsubiw,
311 },329 },
312};330};
313331
...@@ -315,16 +333,16 @@ pub const cpu_at90pwm216 = Cpu{...@@ -315,16 +333,16 @@ pub const cpu_at90pwm216 = Cpu{
315 .name = "at90pwm216",333 .name = "at90pwm216",
316 .llvm_name = "at90pwm216",334 .llvm_name = "at90pwm216",
317 .dependencies = &[_]*const Feature {335 .dependencies = &[_]*const Feature {
318 &feature_lpmx,336 &feature_sram,
337 &feature_jmpcall,
338 &feature_mul,
319 &feature_lpm,339 &feature_lpm,
340 &feature_lpmx,
320 &feature_spm,341 &feature_spm,
342 &feature_addsubiw,
321 &feature_ijmpcall,343 &feature_ijmpcall,
322 &feature_sram,
323 &feature_break,344 &feature_break,
324 &feature_jmpcall,
325 &feature_mul,
326 &feature_movw,345 &feature_movw,
327 &feature_addsubiw,
328 },346 },
329};347};
330348
...@@ -332,15 +350,15 @@ pub const cpu_at90pwm2b = Cpu{...@@ -332,15 +350,15 @@ pub const cpu_at90pwm2b = Cpu{
332 .name = "at90pwm2b",350 .name = "at90pwm2b",
333 .llvm_name = "at90pwm2b",351 .llvm_name = "at90pwm2b",
334 .dependencies = &[_]*const Feature {352 .dependencies = &[_]*const Feature {
335 &feature_lpmx,353 &feature_sram,
354 &feature_mul,
336 &feature_lpm,355 &feature_lpm,
356 &feature_lpmx,
337 &feature_spm,357 &feature_spm,
358 &feature_addsubiw,
338 &feature_ijmpcall,359 &feature_ijmpcall,
339 &feature_sram,
340 &feature_break,360 &feature_break,
341 &feature_mul,
342 &feature_movw,361 &feature_movw,
343 &feature_addsubiw,
344 },362 },
345};363};
346364
...@@ -348,15 +366,15 @@ pub const cpu_at90pwm3 = Cpu{...@@ -348,15 +366,15 @@ pub const cpu_at90pwm3 = Cpu{
348 .name = "at90pwm3",366 .name = "at90pwm3",
349 .llvm_name = "at90pwm3",367 .llvm_name = "at90pwm3",
350 .dependencies = &[_]*const Feature {368 .dependencies = &[_]*const Feature {
351 &feature_lpmx,369 &feature_sram,
370 &feature_mul,
352 &feature_lpm,371 &feature_lpm,
372 &feature_lpmx,
353 &feature_spm,373 &feature_spm,
374 &feature_addsubiw,
354 &feature_ijmpcall,375 &feature_ijmpcall,
355 &feature_sram,
356 &feature_break,376 &feature_break,
357 &feature_mul,
358 &feature_movw,377 &feature_movw,
359 &feature_addsubiw,
360 },378 },
361};379};
362380
...@@ -364,16 +382,16 @@ pub const cpu_at90pwm316 = Cpu{...@@ -364,16 +382,16 @@ pub const cpu_at90pwm316 = Cpu{
364 .name = "at90pwm316",382 .name = "at90pwm316",
365 .llvm_name = "at90pwm316",383 .llvm_name = "at90pwm316",
366 .dependencies = &[_]*const Feature {384 .dependencies = &[_]*const Feature {
367 &feature_lpmx,385 &feature_sram,
386 &feature_jmpcall,
387 &feature_mul,
368 &feature_lpm,388 &feature_lpm,
389 &feature_lpmx,
369 &feature_spm,390 &feature_spm,
391 &feature_addsubiw,
370 &feature_ijmpcall,392 &feature_ijmpcall,
371 &feature_sram,
372 &feature_break,393 &feature_break,
373 &feature_jmpcall,
374 &feature_mul,
375 &feature_movw,394 &feature_movw,
376 &feature_addsubiw,
377 },395 },
378};396};
379397
...@@ -381,15 +399,15 @@ pub const cpu_at90pwm3b = Cpu{...@@ -381,15 +399,15 @@ pub const cpu_at90pwm3b = Cpu{
381 .name = "at90pwm3b",399 .name = "at90pwm3b",
382 .llvm_name = "at90pwm3b",400 .llvm_name = "at90pwm3b",
383 .dependencies = &[_]*const Feature {401 .dependencies = &[_]*const Feature {
384 &feature_lpmx,402 &feature_sram,
403 &feature_mul,
385 &feature_lpm,404 &feature_lpm,
405 &feature_lpmx,
386 &feature_spm,406 &feature_spm,
407 &feature_addsubiw,
387 &feature_ijmpcall,408 &feature_ijmpcall,
388 &feature_sram,
389 &feature_break,409 &feature_break,
390 &feature_mul,
391 &feature_movw,410 &feature_movw,
392 &feature_addsubiw,
393 },411 },
394};412};
395413
...@@ -397,15 +415,15 @@ pub const cpu_at90pwm81 = Cpu{...@@ -397,15 +415,15 @@ pub const cpu_at90pwm81 = Cpu{
397 .name = "at90pwm81",415 .name = "at90pwm81",
398 .llvm_name = "at90pwm81",416 .llvm_name = "at90pwm81",
399 .dependencies = &[_]*const Feature {417 .dependencies = &[_]*const Feature {
400 &feature_lpmx,418 &feature_sram,
419 &feature_mul,
401 &feature_lpm,420 &feature_lpm,
421 &feature_lpmx,
402 &feature_spm,422 &feature_spm,
423 &feature_addsubiw,
403 &feature_ijmpcall,424 &feature_ijmpcall,
404 &feature_sram,
405 &feature_break,425 &feature_break,
406 &feature_mul,
407 &feature_movw,426 &feature_movw,
408 &feature_addsubiw,
409 },427 },
410};428};
411429
...@@ -420,10 +438,10 @@ pub const cpu_at90s2313 = Cpu{...@@ -420,10 +438,10 @@ pub const cpu_at90s2313 = Cpu{
420 .name = "at90s2313",438 .name = "at90s2313",
421 .llvm_name = "at90s2313",439 .llvm_name = "at90s2313",
422 .dependencies = &[_]*const Feature {440 .dependencies = &[_]*const Feature {
423 &feature_lpm,
424 &feature_ijmpcall,
425 &feature_sram,441 &feature_sram,
442 &feature_lpm,
426 &feature_addsubiw,443 &feature_addsubiw,
444 &feature_ijmpcall,
427 },445 },
428};446};
429447
...@@ -431,10 +449,10 @@ pub const cpu_at90s2323 = Cpu{...@@ -431,10 +449,10 @@ pub const cpu_at90s2323 = Cpu{
431 .name = "at90s2323",449 .name = "at90s2323",
432 .llvm_name = "at90s2323",450 .llvm_name = "at90s2323",
433 .dependencies = &[_]*const Feature {451 .dependencies = &[_]*const Feature {
434 &feature_lpm,
435 &feature_ijmpcall,
436 &feature_sram,452 &feature_sram,
453 &feature_lpm,
437 &feature_addsubiw,454 &feature_addsubiw,
455 &feature_ijmpcall,
438 },456 },
439};457};
440458
...@@ -442,10 +460,10 @@ pub const cpu_at90s2333 = Cpu{...@@ -442,10 +460,10 @@ pub const cpu_at90s2333 = Cpu{
442 .name = "at90s2333",460 .name = "at90s2333",
443 .llvm_name = "at90s2333",461 .llvm_name = "at90s2333",
444 .dependencies = &[_]*const Feature {462 .dependencies = &[_]*const Feature {
445 &feature_lpm,
446 &feature_ijmpcall,
447 &feature_sram,463 &feature_sram,
464 &feature_lpm,
448 &feature_addsubiw,465 &feature_addsubiw,
466 &feature_ijmpcall,
449 },467 },
450};468};
451469
...@@ -453,10 +471,10 @@ pub const cpu_at90s2343 = Cpu{...@@ -453,10 +471,10 @@ pub const cpu_at90s2343 = Cpu{
453 .name = "at90s2343",471 .name = "at90s2343",
454 .llvm_name = "at90s2343",472 .llvm_name = "at90s2343",
455 .dependencies = &[_]*const Feature {473 .dependencies = &[_]*const Feature {
456 &feature_lpm,
457 &feature_ijmpcall,
458 &feature_sram,474 &feature_sram,
475 &feature_lpm,
459 &feature_addsubiw,476 &feature_addsubiw,
477 &feature_ijmpcall,
460 },478 },
461};479};
462480
...@@ -464,10 +482,10 @@ pub const cpu_at90s4414 = Cpu{...@@ -464,10 +482,10 @@ pub const cpu_at90s4414 = Cpu{
464 .name = "at90s4414",482 .name = "at90s4414",
465 .llvm_name = "at90s4414",483 .llvm_name = "at90s4414",
466 .dependencies = &[_]*const Feature {484 .dependencies = &[_]*const Feature {
467 &feature_lpm,
468 &feature_ijmpcall,
469 &feature_sram,485 &feature_sram,
486 &feature_lpm,
470 &feature_addsubiw,487 &feature_addsubiw,
488 &feature_ijmpcall,
471 },489 },
472};490};
473491
...@@ -475,10 +493,10 @@ pub const cpu_at90s4433 = Cpu{...@@ -475,10 +493,10 @@ pub const cpu_at90s4433 = Cpu{
475 .name = "at90s4433",493 .name = "at90s4433",
476 .llvm_name = "at90s4433",494 .llvm_name = "at90s4433",
477 .dependencies = &[_]*const Feature {495 .dependencies = &[_]*const Feature {
478 &feature_lpm,
479 &feature_ijmpcall,
480 &feature_sram,496 &feature_sram,
497 &feature_lpm,
481 &feature_addsubiw,498 &feature_addsubiw,
499 &feature_ijmpcall,
482 },500 },
483};501};
484502
...@@ -486,10 +504,10 @@ pub const cpu_at90s4434 = Cpu{...@@ -486,10 +504,10 @@ pub const cpu_at90s4434 = Cpu{
486 .name = "at90s4434",504 .name = "at90s4434",
487 .llvm_name = "at90s4434",505 .llvm_name = "at90s4434",
488 .dependencies = &[_]*const Feature {506 .dependencies = &[_]*const Feature {
489 &feature_lpm,
490 &feature_ijmpcall,
491 &feature_sram,507 &feature_sram,
508 &feature_lpm,
492 &feature_addsubiw,509 &feature_addsubiw,
510 &feature_ijmpcall,
493 },511 },
494};512};
495513
...@@ -497,10 +515,10 @@ pub const cpu_at90s8515 = Cpu{...@@ -497,10 +515,10 @@ pub const cpu_at90s8515 = Cpu{
497 .name = "at90s8515",515 .name = "at90s8515",
498 .llvm_name = "at90s8515",516 .llvm_name = "at90s8515",
499 .dependencies = &[_]*const Feature {517 .dependencies = &[_]*const Feature {
500 &feature_lpm,
501 &feature_ijmpcall,
502 &feature_sram,518 &feature_sram,
519 &feature_lpm,
503 &feature_addsubiw,520 &feature_addsubiw,
521 &feature_ijmpcall,
504 },522 },
505};523};
506524
...@@ -508,10 +526,10 @@ pub const cpu_at90s8535 = Cpu{...@@ -508,10 +526,10 @@ pub const cpu_at90s8535 = Cpu{
508 .name = "at90s8535",526 .name = "at90s8535",
509 .llvm_name = "at90s8535",527 .llvm_name = "at90s8535",
510 .dependencies = &[_]*const Feature {528 .dependencies = &[_]*const Feature {
511 &feature_lpm,
512 &feature_ijmpcall,
513 &feature_sram,529 &feature_sram,
530 &feature_lpm,
514 &feature_addsubiw,531 &feature_addsubiw,
532 &feature_ijmpcall,
515 },533 },
516};534};
517535
...@@ -519,16 +537,16 @@ pub const cpu_at90scr100 = Cpu{...@@ -519,16 +537,16 @@ pub const cpu_at90scr100 = Cpu{
519 .name = "at90scr100",537 .name = "at90scr100",
520 .llvm_name = "at90scr100",538 .llvm_name = "at90scr100",
521 .dependencies = &[_]*const Feature {539 .dependencies = &[_]*const Feature {
522 &feature_lpmx,540 &feature_sram,
541 &feature_jmpcall,
542 &feature_mul,
523 &feature_lpm,543 &feature_lpm,
544 &feature_lpmx,
524 &feature_spm,545 &feature_spm,
546 &feature_addsubiw,
525 &feature_ijmpcall,547 &feature_ijmpcall,
526 &feature_sram,
527 &feature_break,548 &feature_break,
528 &feature_jmpcall,
529 &feature_mul,
530 &feature_movw,549 &feature_movw,
531 &feature_addsubiw,
532 },550 },
533};551};
534552
...@@ -536,18 +554,18 @@ pub const cpu_at90usb1286 = Cpu{...@@ -536,18 +554,18 @@ pub const cpu_at90usb1286 = Cpu{
536 .name = "at90usb1286",554 .name = "at90usb1286",
537 .llvm_name = "at90usb1286",555 .llvm_name = "at90usb1286",
538 .dependencies = &[_]*const Feature {556 .dependencies = &[_]*const Feature {
539 &feature_lpmx,557 &feature_sram,
558 &feature_jmpcall,
559 &feature_mul,
540 &feature_elpm,560 &feature_elpm,
541 &feature_spm,
542 &feature_lpm,561 &feature_lpm,
562 &feature_lpmx,
563 &feature_spm,
564 &feature_addsubiw,
543 &feature_ijmpcall,565 &feature_ijmpcall,
544 &feature_elpmx,566 &feature_elpmx,
545 &feature_sram,
546 &feature_break,567 &feature_break,
547 &feature_jmpcall,
548 &feature_mul,
549 &feature_movw,568 &feature_movw,
550 &feature_addsubiw,
551 },569 },
552};570};
553571
...@@ -555,18 +573,18 @@ pub const cpu_at90usb1287 = Cpu{...@@ -555,18 +573,18 @@ pub const cpu_at90usb1287 = Cpu{
555 .name = "at90usb1287",573 .name = "at90usb1287",
556 .llvm_name = "at90usb1287",574 .llvm_name = "at90usb1287",
557 .dependencies = &[_]*const Feature {575 .dependencies = &[_]*const Feature {
558 &feature_lpmx,576 &feature_sram,
577 &feature_jmpcall,
578 &feature_mul,
559 &feature_elpm,579 &feature_elpm,
560 &feature_spm,
561 &feature_lpm,580 &feature_lpm,
581 &feature_lpmx,
582 &feature_spm,
583 &feature_addsubiw,
562 &feature_ijmpcall,584 &feature_ijmpcall,
563 &feature_elpmx,585 &feature_elpmx,
564 &feature_sram,
565 &feature_break,586 &feature_break,
566 &feature_jmpcall,
567 &feature_mul,
568 &feature_movw,587 &feature_movw,
569 &feature_addsubiw,
570 },588 },
571};589};
572590
...@@ -574,15 +592,15 @@ pub const cpu_at90usb162 = Cpu{...@@ -574,15 +592,15 @@ pub const cpu_at90usb162 = Cpu{
574 .name = "at90usb162",592 .name = "at90usb162",
575 .llvm_name = "at90usb162",593 .llvm_name = "at90usb162",
576 .dependencies = &[_]*const Feature {594 .dependencies = &[_]*const Feature {
577 &feature_lpmx,595 &feature_sram,
596 &feature_jmpcall,
578 &feature_lpm,597 &feature_lpm,
598 &feature_lpmx,
579 &feature_spm,599 &feature_spm,
600 &feature_addsubiw,
580 &feature_ijmpcall,601 &feature_ijmpcall,
581 &feature_sram,
582 &feature_break,602 &feature_break,
583 &feature_jmpcall,
584 &feature_movw,603 &feature_movw,
585 &feature_addsubiw,
586 },604 },
587};605};
588606
...@@ -590,16 +608,16 @@ pub const cpu_at90usb646 = Cpu{...@@ -590,16 +608,16 @@ pub const cpu_at90usb646 = Cpu{
590 .name = "at90usb646",608 .name = "at90usb646",
591 .llvm_name = "at90usb646",609 .llvm_name = "at90usb646",
592 .dependencies = &[_]*const Feature {610 .dependencies = &[_]*const Feature {
593 &feature_lpmx,611 &feature_sram,
612 &feature_jmpcall,
613 &feature_mul,
594 &feature_lpm,614 &feature_lpm,
615 &feature_lpmx,
595 &feature_spm,616 &feature_spm,
617 &feature_addsubiw,
596 &feature_ijmpcall,618 &feature_ijmpcall,
597 &feature_sram,
598 &feature_break,619 &feature_break,
599 &feature_jmpcall,
600 &feature_mul,
601 &feature_movw,620 &feature_movw,
602 &feature_addsubiw,
603 },621 },
604};622};
605623
...@@ -607,16 +625,16 @@ pub const cpu_at90usb647 = Cpu{...@@ -607,16 +625,16 @@ pub const cpu_at90usb647 = Cpu{
607 .name = "at90usb647",625 .name = "at90usb647",
608 .llvm_name = "at90usb647",626 .llvm_name = "at90usb647",
609 .dependencies = &[_]*const Feature {627 .dependencies = &[_]*const Feature {
610 &feature_lpmx,628 &feature_sram,
629 &feature_jmpcall,
630 &feature_mul,
611 &feature_lpm,631 &feature_lpm,
632 &feature_lpmx,
612 &feature_spm,633 &feature_spm,
634 &feature_addsubiw,
613 &feature_ijmpcall,635 &feature_ijmpcall,
614 &feature_sram,
615 &feature_break,636 &feature_break,
616 &feature_jmpcall,
617 &feature_mul,
618 &feature_movw,637 &feature_movw,
619 &feature_addsubiw,
620 },638 },
621};639};
622640
...@@ -624,15 +642,15 @@ pub const cpu_at90usb82 = Cpu{...@@ -624,15 +642,15 @@ pub const cpu_at90usb82 = Cpu{
624 .name = "at90usb82",642 .name = "at90usb82",
625 .llvm_name = "at90usb82",643 .llvm_name = "at90usb82",
626 .dependencies = &[_]*const Feature {644 .dependencies = &[_]*const Feature {
627 &feature_lpmx,645 &feature_sram,
646 &feature_jmpcall,
628 &feature_lpm,647 &feature_lpm,
648 &feature_lpmx,
629 &feature_spm,649 &feature_spm,
650 &feature_addsubiw,
630 &feature_ijmpcall,651 &feature_ijmpcall,
631 &feature_sram,
632 &feature_break,652 &feature_break,
633 &feature_jmpcall,
634 &feature_movw,653 &feature_movw,
635 &feature_addsubiw,
636 },654 },
637};655};
638656
...@@ -640,11 +658,11 @@ pub const cpu_at94k = Cpu{...@@ -640,11 +658,11 @@ pub const cpu_at94k = Cpu{
640 .name = "at94k",658 .name = "at94k",
641 .llvm_name = "at94k",659 .llvm_name = "at94k",
642 .dependencies = &[_]*const Feature {660 .dependencies = &[_]*const Feature {
643 &feature_lpm,
644 &feature_ijmpcall,
645 &feature_sram,661 &feature_sram,
646 &feature_jmpcall,662 &feature_jmpcall,
663 &feature_lpm,
647 &feature_addsubiw,664 &feature_addsubiw,
665 &feature_ijmpcall,
648 &feature_lpmx,666 &feature_lpmx,
649 &feature_movw,667 &feature_movw,
650 &feature_mul,668 &feature_mul,
...@@ -655,14 +673,14 @@ pub const cpu_ata5272 = Cpu{...@@ -655,14 +673,14 @@ pub const cpu_ata5272 = Cpu{
655 .name = "ata5272",673 .name = "ata5272",
656 .llvm_name = "ata5272",674 .llvm_name = "ata5272",
657 .dependencies = &[_]*const Feature {675 .dependencies = &[_]*const Feature {
658 &feature_lpmx,676 &feature_sram,
659 &feature_lpm,677 &feature_lpm,
678 &feature_lpmx,
660 &feature_spm,679 &feature_spm,
680 &feature_addsubiw,
661 &feature_ijmpcall,681 &feature_ijmpcall,
662 &feature_sram,
663 &feature_break,682 &feature_break,
664 &feature_movw,683 &feature_movw,
665 &feature_addsubiw,
666 },684 },
667};685};
668686
...@@ -670,15 +688,15 @@ pub const cpu_ata5505 = Cpu{...@@ -670,15 +688,15 @@ pub const cpu_ata5505 = Cpu{
670 .name = "ata5505",688 .name = "ata5505",
671 .llvm_name = "ata5505",689 .llvm_name = "ata5505",
672 .dependencies = &[_]*const Feature {690 .dependencies = &[_]*const Feature {
673 &feature_lpmx,691 &feature_sram,
692 &feature_jmpcall,
674 &feature_lpm,693 &feature_lpm,
694 &feature_lpmx,
675 &feature_spm,695 &feature_spm,
696 &feature_addsubiw,
676 &feature_ijmpcall,697 &feature_ijmpcall,
677 &feature_sram,
678 &feature_break,698 &feature_break,
679 &feature_jmpcall,
680 &feature_movw,699 &feature_movw,
681 &feature_addsubiw,
682 },700 },
683};701};
684702
...@@ -686,16 +704,16 @@ pub const cpu_ata5790 = Cpu{...@@ -686,16 +704,16 @@ pub const cpu_ata5790 = Cpu{
686 .name = "ata5790",704 .name = "ata5790",
687 .llvm_name = "ata5790",705 .llvm_name = "ata5790",
688 .dependencies = &[_]*const Feature {706 .dependencies = &[_]*const Feature {
689 &feature_lpmx,707 &feature_sram,
708 &feature_jmpcall,
709 &feature_mul,
690 &feature_lpm,710 &feature_lpm,
711 &feature_lpmx,
691 &feature_spm,712 &feature_spm,
713 &feature_addsubiw,
692 &feature_ijmpcall,714 &feature_ijmpcall,
693 &feature_sram,
694 &feature_break,715 &feature_break,
695 &feature_jmpcall,
696 &feature_mul,
697 &feature_movw,716 &feature_movw,
698 &feature_addsubiw,
699 },717 },
700};718};
701719
...@@ -703,16 +721,16 @@ pub const cpu_ata5795 = Cpu{...@@ -703,16 +721,16 @@ pub const cpu_ata5795 = Cpu{
703 .name = "ata5795",721 .name = "ata5795",
704 .llvm_name = "ata5795",722 .llvm_name = "ata5795",
705 .dependencies = &[_]*const Feature {723 .dependencies = &[_]*const Feature {
706 &feature_lpmx,724 &feature_sram,
725 &feature_jmpcall,
726 &feature_mul,
707 &feature_lpm,727 &feature_lpm,
728 &feature_lpmx,
708 &feature_spm,729 &feature_spm,
730 &feature_addsubiw,
709 &feature_ijmpcall,731 &feature_ijmpcall,
710 &feature_sram,
711 &feature_break,732 &feature_break,
712 &feature_jmpcall,
713 &feature_mul,
714 &feature_movw,733 &feature_movw,
715 &feature_addsubiw,
716 },734 },
717};735};
718736
...@@ -720,15 +738,15 @@ pub const cpu_ata6285 = Cpu{...@@ -720,15 +738,15 @@ pub const cpu_ata6285 = Cpu{
720 .name = "ata6285",738 .name = "ata6285",
721 .llvm_name = "ata6285",739 .llvm_name = "ata6285",
722 .dependencies = &[_]*const Feature {740 .dependencies = &[_]*const Feature {
723 &feature_lpmx,741 &feature_sram,
742 &feature_mul,
724 &feature_lpm,743 &feature_lpm,
744 &feature_lpmx,
725 &feature_spm,745 &feature_spm,
746 &feature_addsubiw,
726 &feature_ijmpcall,747 &feature_ijmpcall,
727 &feature_sram,
728 &feature_break,748 &feature_break,
729 &feature_mul,
730 &feature_movw,749 &feature_movw,
731 &feature_addsubiw,
732 },750 },
733};751};
734752
...@@ -736,15 +754,15 @@ pub const cpu_ata6286 = Cpu{...@@ -736,15 +754,15 @@ pub const cpu_ata6286 = Cpu{
736 .name = "ata6286",754 .name = "ata6286",
737 .llvm_name = "ata6286",755 .llvm_name = "ata6286",
738 .dependencies = &[_]*const Feature {756 .dependencies = &[_]*const Feature {
739 &feature_lpmx,757 &feature_sram,
758 &feature_mul,
740 &feature_lpm,759 &feature_lpm,
760 &feature_lpmx,
741 &feature_spm,761 &feature_spm,
762 &feature_addsubiw,
742 &feature_ijmpcall,763 &feature_ijmpcall,
743 &feature_sram,
744 &feature_break,764 &feature_break,
745 &feature_mul,
746 &feature_movw,765 &feature_movw,
747 &feature_addsubiw,
748 },766 },
749};767};
750768
...@@ -752,15 +770,15 @@ pub const cpu_ata6289 = Cpu{...@@ -752,15 +770,15 @@ pub const cpu_ata6289 = Cpu{
752 .name = "ata6289",770 .name = "ata6289",
753 .llvm_name = "ata6289",771 .llvm_name = "ata6289",
754 .dependencies = &[_]*const Feature {772 .dependencies = &[_]*const Feature {
755 &feature_lpmx,773 &feature_sram,
774 &feature_mul,
756 &feature_lpm,775 &feature_lpm,
776 &feature_lpmx,
757 &feature_spm,777 &feature_spm,
778 &feature_addsubiw,
758 &feature_ijmpcall,779 &feature_ijmpcall,
759 &feature_sram,
760 &feature_break,780 &feature_break,
761 &feature_mul,
762 &feature_movw,781 &feature_movw,
763 &feature_addsubiw,
764 },782 },
765};783};
766784
...@@ -768,12 +786,12 @@ pub const cpu_atmega103 = Cpu{...@@ -768,12 +786,12 @@ pub const cpu_atmega103 = Cpu{
768 .name = "atmega103",786 .name = "atmega103",
769 .llvm_name = "atmega103",787 .llvm_name = "atmega103",
770 .dependencies = &[_]*const Feature {788 .dependencies = &[_]*const Feature {
771 &feature_elpm,
772 &feature_lpm,
773 &feature_ijmpcall,
774 &feature_sram,789 &feature_sram,
775 &feature_jmpcall,790 &feature_jmpcall,
791 &feature_elpm,
792 &feature_lpm,
776 &feature_addsubiw,793 &feature_addsubiw,
794 &feature_ijmpcall,
777 },795 },
778};796};
779797
...@@ -781,18 +799,18 @@ pub const cpu_atmega128 = Cpu{...@@ -781,18 +799,18 @@ pub const cpu_atmega128 = Cpu{
781 .name = "atmega128",799 .name = "atmega128",
782 .llvm_name = "atmega128",800 .llvm_name = "atmega128",
783 .dependencies = &[_]*const Feature {801 .dependencies = &[_]*const Feature {
784 &feature_lpmx,802 &feature_sram,
803 &feature_jmpcall,
804 &feature_mul,
785 &feature_elpm,805 &feature_elpm,
786 &feature_spm,
787 &feature_lpm,806 &feature_lpm,
807 &feature_lpmx,
808 &feature_spm,
809 &feature_addsubiw,
788 &feature_ijmpcall,810 &feature_ijmpcall,
789 &feature_elpmx,811 &feature_elpmx,
790 &feature_sram,
791 &feature_break,812 &feature_break,
792 &feature_jmpcall,
793 &feature_mul,
794 &feature_movw,813 &feature_movw,
795 &feature_addsubiw,
796 },814 },
797};815};
798816
...@@ -800,18 +818,18 @@ pub const cpu_atmega1280 = Cpu{...@@ -800,18 +818,18 @@ pub const cpu_atmega1280 = Cpu{
800 .name = "atmega1280",818 .name = "atmega1280",
801 .llvm_name = "atmega1280",819 .llvm_name = "atmega1280",
802 .dependencies = &[_]*const Feature {820 .dependencies = &[_]*const Feature {
803 &feature_lpmx,821 &feature_sram,
822 &feature_jmpcall,
823 &feature_mul,
804 &feature_elpm,824 &feature_elpm,
805 &feature_spm,
806 &feature_lpm,825 &feature_lpm,
826 &feature_lpmx,
827 &feature_spm,
828 &feature_addsubiw,
807 &feature_ijmpcall,829 &feature_ijmpcall,
808 &feature_elpmx,830 &feature_elpmx,
809 &feature_sram,
810 &feature_break,831 &feature_break,
811 &feature_jmpcall,
812 &feature_mul,
813 &feature_movw,832 &feature_movw,
814 &feature_addsubiw,
815 },833 },
816};834};
817835
...@@ -819,18 +837,18 @@ pub const cpu_atmega1281 = Cpu{...@@ -819,18 +837,18 @@ pub const cpu_atmega1281 = Cpu{
819 .name = "atmega1281",837 .name = "atmega1281",
820 .llvm_name = "atmega1281",838 .llvm_name = "atmega1281",
821 .dependencies = &[_]*const Feature {839 .dependencies = &[_]*const Feature {
822 &feature_lpmx,840 &feature_sram,
841 &feature_jmpcall,
842 &feature_mul,
823 &feature_elpm,843 &feature_elpm,
824 &feature_spm,
825 &feature_lpm,844 &feature_lpm,
845 &feature_lpmx,
846 &feature_spm,
847 &feature_addsubiw,
826 &feature_ijmpcall,848 &feature_ijmpcall,
827 &feature_elpmx,849 &feature_elpmx,
828 &feature_sram,
829 &feature_break,850 &feature_break,
830 &feature_jmpcall,
831 &feature_mul,
832 &feature_movw,851 &feature_movw,
833 &feature_addsubiw,
834 },852 },
835};853};
836854
...@@ -838,18 +856,18 @@ pub const cpu_atmega1284 = Cpu{...@@ -838,18 +856,18 @@ pub const cpu_atmega1284 = Cpu{
838 .name = "atmega1284",856 .name = "atmega1284",
839 .llvm_name = "atmega1284",857 .llvm_name = "atmega1284",
840 .dependencies = &[_]*const Feature {858 .dependencies = &[_]*const Feature {
841 &feature_lpmx,859 &feature_sram,
860 &feature_jmpcall,
861 &feature_mul,
842 &feature_elpm,862 &feature_elpm,
843 &feature_spm,
844 &feature_lpm,863 &feature_lpm,
864 &feature_lpmx,
865 &feature_spm,
866 &feature_addsubiw,
845 &feature_ijmpcall,867 &feature_ijmpcall,
846 &feature_elpmx,868 &feature_elpmx,
847 &feature_sram,
848 &feature_break,869 &feature_break,
849 &feature_jmpcall,
850 &feature_mul,
851 &feature_movw,870 &feature_movw,
852 &feature_addsubiw,
853 },871 },
854};872};
855873
...@@ -857,18 +875,18 @@ pub const cpu_atmega1284p = Cpu{...@@ -857,18 +875,18 @@ pub const cpu_atmega1284p = Cpu{
857 .name = "atmega1284p",875 .name = "atmega1284p",
858 .llvm_name = "atmega1284p",876 .llvm_name = "atmega1284p",
859 .dependencies = &[_]*const Feature {877 .dependencies = &[_]*const Feature {
860 &feature_lpmx,878 &feature_sram,
879 &feature_jmpcall,
880 &feature_mul,
861 &feature_elpm,881 &feature_elpm,
862 &feature_spm,
863 &feature_lpm,882 &feature_lpm,
883 &feature_lpmx,
884 &feature_spm,
885 &feature_addsubiw,
864 &feature_ijmpcall,886 &feature_ijmpcall,
865 &feature_elpmx,887 &feature_elpmx,
866 &feature_sram,
867 &feature_break,888 &feature_break,
868 &feature_jmpcall,
869 &feature_mul,
870 &feature_movw,889 &feature_movw,
871 &feature_addsubiw,
872 },890 },
873};891};
874892
...@@ -876,18 +894,18 @@ pub const cpu_atmega1284rfr2 = Cpu{...@@ -876,18 +894,18 @@ pub const cpu_atmega1284rfr2 = Cpu{
876 .name = "atmega1284rfr2",894 .name = "atmega1284rfr2",
877 .llvm_name = "atmega1284rfr2",895 .llvm_name = "atmega1284rfr2",
878 .dependencies = &[_]*const Feature {896 .dependencies = &[_]*const Feature {
879 &feature_lpmx,897 &feature_sram,
898 &feature_jmpcall,
899 &feature_mul,
880 &feature_elpm,900 &feature_elpm,
881 &feature_spm,
882 &feature_lpm,901 &feature_lpm,
902 &feature_lpmx,
903 &feature_spm,
904 &feature_addsubiw,
883 &feature_ijmpcall,905 &feature_ijmpcall,
884 &feature_elpmx,906 &feature_elpmx,
885 &feature_sram,
886 &feature_break,907 &feature_break,
887 &feature_jmpcall,
888 &feature_mul,
889 &feature_movw,908 &feature_movw,
890 &feature_addsubiw,
891 },909 },
892};910};
893911
...@@ -895,18 +913,18 @@ pub const cpu_atmega128a = Cpu{...@@ -895,18 +913,18 @@ pub const cpu_atmega128a = Cpu{
895 .name = "atmega128a",913 .name = "atmega128a",
896 .llvm_name = "atmega128a",914 .llvm_name = "atmega128a",
897 .dependencies = &[_]*const Feature {915 .dependencies = &[_]*const Feature {
898 &feature_lpmx,916 &feature_sram,
917 &feature_jmpcall,
918 &feature_mul,
899 &feature_elpm,919 &feature_elpm,
900 &feature_spm,
901 &feature_lpm,920 &feature_lpm,
921 &feature_lpmx,
922 &feature_spm,
923 &feature_addsubiw,
902 &feature_ijmpcall,924 &feature_ijmpcall,
903 &feature_elpmx,925 &feature_elpmx,
904 &feature_sram,
905 &feature_break,926 &feature_break,
906 &feature_jmpcall,
907 &feature_mul,
908 &feature_movw,927 &feature_movw,
909 &feature_addsubiw,
910 },928 },
911};929};
912930
...@@ -914,18 +932,18 @@ pub const cpu_atmega128rfa1 = Cpu{...@@ -914,18 +932,18 @@ pub const cpu_atmega128rfa1 = Cpu{
914 .name = "atmega128rfa1",932 .name = "atmega128rfa1",
915 .llvm_name = "atmega128rfa1",933 .llvm_name = "atmega128rfa1",
916 .dependencies = &[_]*const Feature {934 .dependencies = &[_]*const Feature {
917 &feature_lpmx,935 &feature_sram,
936 &feature_jmpcall,
937 &feature_mul,
918 &feature_elpm,938 &feature_elpm,
919 &feature_spm,
920 &feature_lpm,939 &feature_lpm,
940 &feature_lpmx,
941 &feature_spm,
942 &feature_addsubiw,
921 &feature_ijmpcall,943 &feature_ijmpcall,
922 &feature_elpmx,944 &feature_elpmx,
923 &feature_sram,
924 &feature_break,945 &feature_break,
925 &feature_jmpcall,
926 &feature_mul,
927 &feature_movw,946 &feature_movw,
928 &feature_addsubiw,
929 },947 },
930};948};
931949
...@@ -933,18 +951,18 @@ pub const cpu_atmega128rfr2 = Cpu{...@@ -933,18 +951,18 @@ pub const cpu_atmega128rfr2 = Cpu{
933 .name = "atmega128rfr2",951 .name = "atmega128rfr2",
934 .llvm_name = "atmega128rfr2",952 .llvm_name = "atmega128rfr2",
935 .dependencies = &[_]*const Feature {953 .dependencies = &[_]*const Feature {
936 &feature_lpmx,954 &feature_sram,
955 &feature_jmpcall,
956 &feature_mul,
937 &feature_elpm,957 &feature_elpm,
938 &feature_spm,
939 &feature_lpm,958 &feature_lpm,
959 &feature_lpmx,
960 &feature_spm,
961 &feature_addsubiw,
940 &feature_ijmpcall,962 &feature_ijmpcall,
941 &feature_elpmx,963 &feature_elpmx,
942 &feature_sram,
943 &feature_break,964 &feature_break,
944 &feature_jmpcall,
945 &feature_mul,
946 &feature_movw,965 &feature_movw,
947 &feature_addsubiw,
948 },966 },
949};967};
950968
...@@ -952,16 +970,16 @@ pub const cpu_atmega16 = Cpu{...@@ -952,16 +970,16 @@ pub const cpu_atmega16 = Cpu{
952 .name = "atmega16",970 .name = "atmega16",
953 .llvm_name = "atmega16",971 .llvm_name = "atmega16",
954 .dependencies = &[_]*const Feature {972 .dependencies = &[_]*const Feature {
955 &feature_lpmx,973 &feature_sram,
974 &feature_jmpcall,
975 &feature_mul,
956 &feature_lpm,976 &feature_lpm,
977 &feature_lpmx,
957 &feature_spm,978 &feature_spm,
979 &feature_addsubiw,
958 &feature_ijmpcall,980 &feature_ijmpcall,
959 &feature_sram,
960 &feature_break,981 &feature_break,
961 &feature_jmpcall,
962 &feature_mul,
963 &feature_movw,982 &feature_movw,
964 &feature_addsubiw,
965 },983 },
966};984};
967985
...@@ -969,11 +987,11 @@ pub const cpu_atmega161 = Cpu{...@@ -969,11 +987,11 @@ pub const cpu_atmega161 = Cpu{
969 .name = "atmega161",987 .name = "atmega161",
970 .llvm_name = "atmega161",988 .llvm_name = "atmega161",
971 .dependencies = &[_]*const Feature {989 .dependencies = &[_]*const Feature {
972 &feature_lpm,
973 &feature_ijmpcall,
974 &feature_sram,990 &feature_sram,
975 &feature_jmpcall,991 &feature_jmpcall,
992 &feature_lpm,
976 &feature_addsubiw,993 &feature_addsubiw,
994 &feature_ijmpcall,
977 &feature_lpmx,995 &feature_lpmx,
978 &feature_movw,996 &feature_movw,
979 &feature_mul,997 &feature_mul,
...@@ -985,16 +1003,16 @@ pub const cpu_atmega162 = Cpu{...@@ -985,16 +1003,16 @@ pub const cpu_atmega162 = Cpu{
985 .name = "atmega162",1003 .name = "atmega162",
986 .llvm_name = "atmega162",1004 .llvm_name = "atmega162",
987 .dependencies = &[_]*const Feature {1005 .dependencies = &[_]*const Feature {
988 &feature_lpmx,1006 &feature_sram,
1007 &feature_jmpcall,
1008 &feature_mul,
989 &feature_lpm,1009 &feature_lpm,
1010 &feature_lpmx,
990 &feature_spm,1011 &feature_spm,
1012 &feature_addsubiw,
991 &feature_ijmpcall,1013 &feature_ijmpcall,
992 &feature_sram,
993 &feature_break,1014 &feature_break,
994 &feature_jmpcall,
995 &feature_mul,
996 &feature_movw,1015 &feature_movw,
997 &feature_addsubiw,
998 },1016 },
999};1017};
10001018
...@@ -1002,11 +1020,11 @@ pub const cpu_atmega163 = Cpu{...@@ -1002,11 +1020,11 @@ pub const cpu_atmega163 = Cpu{
1002 .name = "atmega163",1020 .name = "atmega163",
1003 .llvm_name = "atmega163",1021 .llvm_name = "atmega163",
1004 .dependencies = &[_]*const Feature {1022 .dependencies = &[_]*const Feature {
1005 &feature_lpm,
1006 &feature_ijmpcall,
1007 &feature_sram,1023 &feature_sram,
1008 &feature_jmpcall,1024 &feature_jmpcall,
1025 &feature_lpm,
1009 &feature_addsubiw,1026 &feature_addsubiw,
1027 &feature_ijmpcall,
1010 &feature_lpmx,1028 &feature_lpmx,
1011 &feature_movw,1029 &feature_movw,
1012 &feature_mul,1030 &feature_mul,
...@@ -1018,16 +1036,16 @@ pub const cpu_atmega164a = Cpu{...@@ -1018,16 +1036,16 @@ pub const cpu_atmega164a = Cpu{
1018 .name = "atmega164a",1036 .name = "atmega164a",
1019 .llvm_name = "atmega164a",1037 .llvm_name = "atmega164a",
1020 .dependencies = &[_]*const Feature {1038 .dependencies = &[_]*const Feature {
1021 &feature_lpmx,1039 &feature_sram,
1040 &feature_jmpcall,
1041 &feature_mul,
1022 &feature_lpm,1042 &feature_lpm,
1043 &feature_lpmx,
1023 &feature_spm,1044 &feature_spm,
1045 &feature_addsubiw,
1024 &feature_ijmpcall,1046 &feature_ijmpcall,
1025 &feature_sram,
1026 &feature_break,1047 &feature_break,
1027 &feature_jmpcall,
1028 &feature_mul,
1029 &feature_movw,1048 &feature_movw,
1030 &feature_addsubiw,
1031 },1049 },
1032};1050};
10331051
...@@ -1035,16 +1053,16 @@ pub const cpu_atmega164p = Cpu{...@@ -1035,16 +1053,16 @@ pub const cpu_atmega164p = Cpu{
1035 .name = "atmega164p",1053 .name = "atmega164p",
1036 .llvm_name = "atmega164p",1054 .llvm_name = "atmega164p",
1037 .dependencies = &[_]*const Feature {1055 .dependencies = &[_]*const Feature {
1038 &feature_lpmx,1056 &feature_sram,
1057 &feature_jmpcall,
1058 &feature_mul,
1039 &feature_lpm,1059 &feature_lpm,
1060 &feature_lpmx,
1040 &feature_spm,1061 &feature_spm,
1062 &feature_addsubiw,
1041 &feature_ijmpcall,1063 &feature_ijmpcall,
1042 &feature_sram,
1043 &feature_break,1064 &feature_break,
1044 &feature_jmpcall,
1045 &feature_mul,
1046 &feature_movw,1065 &feature_movw,
1047 &feature_addsubiw,
1048 },1066 },
1049};1067};
10501068
...@@ -1052,16 +1070,16 @@ pub const cpu_atmega164pa = Cpu{...@@ -1052,16 +1070,16 @@ pub const cpu_atmega164pa = Cpu{
1052 .name = "atmega164pa",1070 .name = "atmega164pa",
1053 .llvm_name = "atmega164pa",1071 .llvm_name = "atmega164pa",
1054 .dependencies = &[_]*const Feature {1072 .dependencies = &[_]*const Feature {
1055 &feature_lpmx,1073 &feature_sram,
1074 &feature_jmpcall,
1075 &feature_mul,
1056 &feature_lpm,1076 &feature_lpm,
1077 &feature_lpmx,
1057 &feature_spm,1078 &feature_spm,
1079 &feature_addsubiw,
1058 &feature_ijmpcall,1080 &feature_ijmpcall,
1059 &feature_sram,
1060 &feature_break,1081 &feature_break,
1061 &feature_jmpcall,
1062 &feature_mul,
1063 &feature_movw,1082 &feature_movw,
1064 &feature_addsubiw,
1065 },1083 },
1066};1084};
10671085
...@@ -1069,16 +1087,16 @@ pub const cpu_atmega165 = Cpu{...@@ -1069,16 +1087,16 @@ pub const cpu_atmega165 = Cpu{
1069 .name = "atmega165",1087 .name = "atmega165",
1070 .llvm_name = "atmega165",1088 .llvm_name = "atmega165",
1071 .dependencies = &[_]*const Feature {1089 .dependencies = &[_]*const Feature {
1072 &feature_lpmx,1090 &feature_sram,
1091 &feature_jmpcall,
1092 &feature_mul,
1073 &feature_lpm,1093 &feature_lpm,
1094 &feature_lpmx,
1074 &feature_spm,1095 &feature_spm,
1096 &feature_addsubiw,
1075 &feature_ijmpcall,1097 &feature_ijmpcall,
1076 &feature_sram,
1077 &feature_break,1098 &feature_break,
1078 &feature_jmpcall,
1079 &feature_mul,
1080 &feature_movw,1099 &feature_movw,
1081 &feature_addsubiw,
1082 },1100 },
1083};1101};
10841102
...@@ -1086,16 +1104,16 @@ pub const cpu_atmega165a = Cpu{...@@ -1086,16 +1104,16 @@ pub const cpu_atmega165a = Cpu{
1086 .name = "atmega165a",1104 .name = "atmega165a",
1087 .llvm_name = "atmega165a",1105 .llvm_name = "atmega165a",
1088 .dependencies = &[_]*const Feature {1106 .dependencies = &[_]*const Feature {
1089 &feature_lpmx,1107 &feature_sram,
1108 &feature_jmpcall,
1109 &feature_mul,
1090 &feature_lpm,1110 &feature_lpm,
1111 &feature_lpmx,
1091 &feature_spm,1112 &feature_spm,
1113 &feature_addsubiw,
1092 &feature_ijmpcall,1114 &feature_ijmpcall,
1093 &feature_sram,
1094 &feature_break,1115 &feature_break,
1095 &feature_jmpcall,
1096 &feature_mul,
1097 &feature_movw,1116 &feature_movw,
1098 &feature_addsubiw,
1099 },1117 },
1100};1118};
11011119
...@@ -1103,16 +1121,16 @@ pub const cpu_atmega165p = Cpu{...@@ -1103,16 +1121,16 @@ pub const cpu_atmega165p = Cpu{
1103 .name = "atmega165p",1121 .name = "atmega165p",
1104 .llvm_name = "atmega165p",1122 .llvm_name = "atmega165p",
1105 .dependencies = &[_]*const Feature {1123 .dependencies = &[_]*const Feature {
1106 &feature_lpmx,1124 &feature_sram,
1125 &feature_jmpcall,
1126 &feature_mul,
1107 &feature_lpm,1127 &feature_lpm,
1128 &feature_lpmx,
1108 &feature_spm,1129 &feature_spm,
1130 &feature_addsubiw,
1109 &feature_ijmpcall,1131 &feature_ijmpcall,
1110 &feature_sram,
1111 &feature_break,1132 &feature_break,
1112 &feature_jmpcall,
1113 &feature_mul,
1114 &feature_movw,1133 &feature_movw,
1115 &feature_addsubiw,
1116 },1134 },
1117};1135};
11181136
...@@ -1120,16 +1138,16 @@ pub const cpu_atmega165pa = Cpu{...@@ -1120,16 +1138,16 @@ pub const cpu_atmega165pa = Cpu{
1120 .name = "atmega165pa",1138 .name = "atmega165pa",
1121 .llvm_name = "atmega165pa",1139 .llvm_name = "atmega165pa",
1122 .dependencies = &[_]*const Feature {1140 .dependencies = &[_]*const Feature {
1123 &feature_lpmx,1141 &feature_sram,
1142 &feature_jmpcall,
1143 &feature_mul,
1124 &feature_lpm,1144 &feature_lpm,
1145 &feature_lpmx,
1125 &feature_spm,1146 &feature_spm,
1147 &feature_addsubiw,
1126 &feature_ijmpcall,1148 &feature_ijmpcall,
1127 &feature_sram,
1128 &feature_break,1149 &feature_break,
1129 &feature_jmpcall,
1130 &feature_mul,
1131 &feature_movw,1150 &feature_movw,
1132 &feature_addsubiw,
1133 },1151 },
1134};1152};
11351153
...@@ -1137,16 +1155,16 @@ pub const cpu_atmega168 = Cpu{...@@ -1137,16 +1155,16 @@ pub const cpu_atmega168 = Cpu{
1137 .name = "atmega168",1155 .name = "atmega168",
1138 .llvm_name = "atmega168",1156 .llvm_name = "atmega168",
1139 .dependencies = &[_]*const Feature {1157 .dependencies = &[_]*const Feature {
1140 &feature_lpmx,1158 &feature_sram,
1159 &feature_jmpcall,
1160 &feature_mul,
1141 &feature_lpm,1161 &feature_lpm,
1162 &feature_lpmx,
1142 &feature_spm,1163 &feature_spm,
1164 &feature_addsubiw,
1143 &feature_ijmpcall,1165 &feature_ijmpcall,
1144 &feature_sram,
1145 &feature_break,1166 &feature_break,
1146 &feature_jmpcall,
1147 &feature_mul,
1148 &feature_movw,1167 &feature_movw,
1149 &feature_addsubiw,
1150 },1168 },
1151};1169};
11521170
...@@ -1154,16 +1172,16 @@ pub const cpu_atmega168a = Cpu{...@@ -1154,16 +1172,16 @@ pub const cpu_atmega168a = Cpu{
1154 .name = "atmega168a",1172 .name = "atmega168a",
1155 .llvm_name = "atmega168a",1173 .llvm_name = "atmega168a",
1156 .dependencies = &[_]*const Feature {1174 .dependencies = &[_]*const Feature {
1157 &feature_lpmx,1175 &feature_sram,
1176 &feature_jmpcall,
1177 &feature_mul,
1158 &feature_lpm,1178 &feature_lpm,
1179 &feature_lpmx,
1159 &feature_spm,1180 &feature_spm,
1181 &feature_addsubiw,
1160 &feature_ijmpcall,1182 &feature_ijmpcall,
1161 &feature_sram,
1162 &feature_break,1183 &feature_break,
1163 &feature_jmpcall,
1164 &feature_mul,
1165 &feature_movw,1184 &feature_movw,
1166 &feature_addsubiw,
1167 },1185 },
1168};1186};
11691187
...@@ -1171,16 +1189,16 @@ pub const cpu_atmega168p = Cpu{...@@ -1171,16 +1189,16 @@ pub const cpu_atmega168p = Cpu{
1171 .name = "atmega168p",1189 .name = "atmega168p",
1172 .llvm_name = "atmega168p",1190 .llvm_name = "atmega168p",
1173 .dependencies = &[_]*const Feature {1191 .dependencies = &[_]*const Feature {
1174 &feature_lpmx,1192 &feature_sram,
1193 &feature_jmpcall,
1194 &feature_mul,
1175 &feature_lpm,1195 &feature_lpm,
1196 &feature_lpmx,
1176 &feature_spm,1197 &feature_spm,
1198 &feature_addsubiw,
1177 &feature_ijmpcall,1199 &feature_ijmpcall,
1178 &feature_sram,
1179 &feature_break,1200 &feature_break,
1180 &feature_jmpcall,
1181 &feature_mul,
1182 &feature_movw,1201 &feature_movw,
1183 &feature_addsubiw,
1184 },1202 },
1185};1203};
11861204
...@@ -1188,16 +1206,16 @@ pub const cpu_atmega168pa = Cpu{...@@ -1188,16 +1206,16 @@ pub const cpu_atmega168pa = Cpu{
1188 .name = "atmega168pa",1206 .name = "atmega168pa",
1189 .llvm_name = "atmega168pa",1207 .llvm_name = "atmega168pa",
1190 .dependencies = &[_]*const Feature {1208 .dependencies = &[_]*const Feature {
1191 &feature_lpmx,1209 &feature_sram,
1210 &feature_jmpcall,
1211 &feature_mul,
1192 &feature_lpm,1212 &feature_lpm,
1213 &feature_lpmx,
1193 &feature_spm,1214 &feature_spm,
1215 &feature_addsubiw,
1194 &feature_ijmpcall,1216 &feature_ijmpcall,
1195 &feature_sram,
1196 &feature_break,1217 &feature_break,
1197 &feature_jmpcall,
1198 &feature_mul,
1199 &feature_movw,1218 &feature_movw,
1200 &feature_addsubiw,
1201 },1219 },
1202};1220};
12031221
...@@ -1205,16 +1223,16 @@ pub const cpu_atmega169 = Cpu{...@@ -1205,16 +1223,16 @@ pub const cpu_atmega169 = Cpu{
1205 .name = "atmega169",1223 .name = "atmega169",
1206 .llvm_name = "atmega169",1224 .llvm_name = "atmega169",
1207 .dependencies = &[_]*const Feature {1225 .dependencies = &[_]*const Feature {
1208 &feature_lpmx,1226 &feature_sram,
1227 &feature_jmpcall,
1228 &feature_mul,
1209 &feature_lpm,1229 &feature_lpm,
1230 &feature_lpmx,
1210 &feature_spm,1231 &feature_spm,
1232 &feature_addsubiw,
1211 &feature_ijmpcall,1233 &feature_ijmpcall,
1212 &feature_sram,
1213 &feature_break,1234 &feature_break,
1214 &feature_jmpcall,
1215 &feature_mul,
1216 &feature_movw,1235 &feature_movw,
1217 &feature_addsubiw,
1218 },1236 },
1219};1237};
12201238
...@@ -1222,16 +1240,16 @@ pub const cpu_atmega169a = Cpu{...@@ -1222,16 +1240,16 @@ pub const cpu_atmega169a = Cpu{
1222 .name = "atmega169a",1240 .name = "atmega169a",
1223 .llvm_name = "atmega169a",1241 .llvm_name = "atmega169a",
1224 .dependencies = &[_]*const Feature {1242 .dependencies = &[_]*const Feature {
1225 &feature_lpmx,1243 &feature_sram,
1244 &feature_jmpcall,
1245 &feature_mul,
1226 &feature_lpm,1246 &feature_lpm,
1247 &feature_lpmx,
1227 &feature_spm,1248 &feature_spm,
1249 &feature_addsubiw,
1228 &feature_ijmpcall,1250 &feature_ijmpcall,
1229 &feature_sram,
1230 &feature_break,1251 &feature_break,
1231 &feature_jmpcall,
1232 &feature_mul,
1233 &feature_movw,1252 &feature_movw,
1234 &feature_addsubiw,
1235 },1253 },
1236};1254};
12371255
...@@ -1239,16 +1257,16 @@ pub const cpu_atmega169p = Cpu{...@@ -1239,16 +1257,16 @@ pub const cpu_atmega169p = Cpu{
1239 .name = "atmega169p",1257 .name = "atmega169p",
1240 .llvm_name = "atmega169p",1258 .llvm_name = "atmega169p",
1241 .dependencies = &[_]*const Feature {1259 .dependencies = &[_]*const Feature {
1242 &feature_lpmx,1260 &feature_sram,
1261 &feature_jmpcall,
1262 &feature_mul,
1243 &feature_lpm,1263 &feature_lpm,
1264 &feature_lpmx,
1244 &feature_spm,1265 &feature_spm,
1266 &feature_addsubiw,
1245 &feature_ijmpcall,1267 &feature_ijmpcall,
1246 &feature_sram,
1247 &feature_break,1268 &feature_break,
1248 &feature_jmpcall,
1249 &feature_mul,
1250 &feature_movw,1269 &feature_movw,
1251 &feature_addsubiw,
1252 },1270 },
1253};1271};
12541272
...@@ -1256,16 +1274,16 @@ pub const cpu_atmega169pa = Cpu{...@@ -1256,16 +1274,16 @@ pub const cpu_atmega169pa = Cpu{
1256 .name = "atmega169pa",1274 .name = "atmega169pa",
1257 .llvm_name = "atmega169pa",1275 .llvm_name = "atmega169pa",
1258 .dependencies = &[_]*const Feature {1276 .dependencies = &[_]*const Feature {
1259 &feature_lpmx,1277 &feature_sram,
1278 &feature_jmpcall,
1279 &feature_mul,
1260 &feature_lpm,1280 &feature_lpm,
1281 &feature_lpmx,
1261 &feature_spm,1282 &feature_spm,
1283 &feature_addsubiw,
1262 &feature_ijmpcall,1284 &feature_ijmpcall,
1263 &feature_sram,
1264 &feature_break,1285 &feature_break,
1265 &feature_jmpcall,
1266 &feature_mul,
1267 &feature_movw,1286 &feature_movw,
1268 &feature_addsubiw,
1269 },1287 },
1270};1288};
12711289
...@@ -1273,16 +1291,16 @@ pub const cpu_atmega16a = Cpu{...@@ -1273,16 +1291,16 @@ pub const cpu_atmega16a = Cpu{
1273 .name = "atmega16a",1291 .name = "atmega16a",
1274 .llvm_name = "atmega16a",1292 .llvm_name = "atmega16a",
1275 .dependencies = &[_]*const Feature {1293 .dependencies = &[_]*const Feature {
1276 &feature_lpmx,1294 &feature_sram,
1295 &feature_jmpcall,
1296 &feature_mul,
1277 &feature_lpm,1297 &feature_lpm,
1298 &feature_lpmx,
1278 &feature_spm,1299 &feature_spm,
1300 &feature_addsubiw,
1279 &feature_ijmpcall,1301 &feature_ijmpcall,
1280 &feature_sram,
1281 &feature_break,1302 &feature_break,
1282 &feature_jmpcall,
1283 &feature_mul,
1284 &feature_movw,1303 &feature_movw,
1285 &feature_addsubiw,
1286 },1304 },
1287};1305};
12881306
...@@ -1290,16 +1308,16 @@ pub const cpu_atmega16hva = Cpu{...@@ -1290,16 +1308,16 @@ pub const cpu_atmega16hva = Cpu{
1290 .name = "atmega16hva",1308 .name = "atmega16hva",
1291 .llvm_name = "atmega16hva",1309 .llvm_name = "atmega16hva",
1292 .dependencies = &[_]*const Feature {1310 .dependencies = &[_]*const Feature {
1293 &feature_lpmx,1311 &feature_sram,
1312 &feature_jmpcall,
1313 &feature_mul,
1294 &feature_lpm,1314 &feature_lpm,
1315 &feature_lpmx,
1295 &feature_spm,1316 &feature_spm,
1317 &feature_addsubiw,
1296 &feature_ijmpcall,1318 &feature_ijmpcall,
1297 &feature_sram,
1298 &feature_break,1319 &feature_break,
1299 &feature_jmpcall,
1300 &feature_mul,
1301 &feature_movw,1320 &feature_movw,
1302 &feature_addsubiw,
1303 },1321 },
1304};1322};
13051323
...@@ -1307,16 +1325,16 @@ pub const cpu_atmega16hva2 = Cpu{...@@ -1307,16 +1325,16 @@ pub const cpu_atmega16hva2 = Cpu{
1307 .name = "atmega16hva2",1325 .name = "atmega16hva2",
1308 .llvm_name = "atmega16hva2",1326 .llvm_name = "atmega16hva2",
1309 .dependencies = &[_]*const Feature {1327 .dependencies = &[_]*const Feature {
1310 &feature_lpmx,1328 &feature_sram,
1329 &feature_jmpcall,
1330 &feature_mul,
1311 &feature_lpm,1331 &feature_lpm,
1332 &feature_lpmx,
1312 &feature_spm,1333 &feature_spm,
1334 &feature_addsubiw,
1313 &feature_ijmpcall,1335 &feature_ijmpcall,
1314 &feature_sram,
1315 &feature_break,1336 &feature_break,
1316 &feature_jmpcall,
1317 &feature_mul,
1318 &feature_movw,1337 &feature_movw,
1319 &feature_addsubiw,
1320 },1338 },
1321};1339};
13221340
...@@ -1324,16 +1342,16 @@ pub const cpu_atmega16hvb = Cpu{...@@ -1324,16 +1342,16 @@ pub const cpu_atmega16hvb = Cpu{
1324 .name = "atmega16hvb",1342 .name = "atmega16hvb",
1325 .llvm_name = "atmega16hvb",1343 .llvm_name = "atmega16hvb",
1326 .dependencies = &[_]*const Feature {1344 .dependencies = &[_]*const Feature {
1327 &feature_lpmx,1345 &feature_sram,
1346 &feature_jmpcall,
1347 &feature_mul,
1328 &feature_lpm,1348 &feature_lpm,
1349 &feature_lpmx,
1329 &feature_spm,1350 &feature_spm,
1351 &feature_addsubiw,
1330 &feature_ijmpcall,1352 &feature_ijmpcall,
1331 &feature_sram,
1332 &feature_break,1353 &feature_break,
1333 &feature_jmpcall,
1334 &feature_mul,
1335 &feature_movw,1354 &feature_movw,
1336 &feature_addsubiw,
1337 },1355 },
1338};1356};
13391357
...@@ -1341,16 +1359,16 @@ pub const cpu_atmega16hvbrevb = Cpu{...@@ -1341,16 +1359,16 @@ pub const cpu_atmega16hvbrevb = Cpu{
1341 .name = "atmega16hvbrevb",1359 .name = "atmega16hvbrevb",
1342 .llvm_name = "atmega16hvbrevb",1360 .llvm_name = "atmega16hvbrevb",
1343 .dependencies = &[_]*const Feature {1361 .dependencies = &[_]*const Feature {
1344 &feature_lpmx,1362 &feature_sram,
1363 &feature_jmpcall,
1364 &feature_mul,
1345 &feature_lpm,1365 &feature_lpm,
1366 &feature_lpmx,
1346 &feature_spm,1367 &feature_spm,
1368 &feature_addsubiw,
1347 &feature_ijmpcall,1369 &feature_ijmpcall,
1348 &feature_sram,
1349 &feature_break,1370 &feature_break,
1350 &feature_jmpcall,
1351 &feature_mul,
1352 &feature_movw,1371 &feature_movw,
1353 &feature_addsubiw,
1354 },1372 },
1355};1373};
13561374
...@@ -1358,16 +1376,16 @@ pub const cpu_atmega16m1 = Cpu{...@@ -1358,16 +1376,16 @@ pub const cpu_atmega16m1 = Cpu{
1358 .name = "atmega16m1",1376 .name = "atmega16m1",
1359 .llvm_name = "atmega16m1",1377 .llvm_name = "atmega16m1",
1360 .dependencies = &[_]*const Feature {1378 .dependencies = &[_]*const Feature {
1361 &feature_lpmx,1379 &feature_sram,
1380 &feature_jmpcall,
1381 &feature_mul,
1362 &feature_lpm,1382 &feature_lpm,
1383 &feature_lpmx,
1363 &feature_spm,1384 &feature_spm,
1385 &feature_addsubiw,
1364 &feature_ijmpcall,1386 &feature_ijmpcall,
1365 &feature_sram,
1366 &feature_break,1387 &feature_break,
1367 &feature_jmpcall,
1368 &feature_mul,
1369 &feature_movw,1388 &feature_movw,
1370 &feature_addsubiw,
1371 },1389 },
1372};1390};
13731391
...@@ -1375,15 +1393,15 @@ pub const cpu_atmega16u2 = Cpu{...@@ -1375,15 +1393,15 @@ pub const cpu_atmega16u2 = Cpu{
1375 .name = "atmega16u2",1393 .name = "atmega16u2",
1376 .llvm_name = "atmega16u2",1394 .llvm_name = "atmega16u2",
1377 .dependencies = &[_]*const Feature {1395 .dependencies = &[_]*const Feature {
1378 &feature_lpmx,1396 &feature_sram,
1397 &feature_jmpcall,
1379 &feature_lpm,1398 &feature_lpm,
1399 &feature_lpmx,
1380 &feature_spm,1400 &feature_spm,
1401 &feature_addsubiw,
1381 &feature_ijmpcall,1402 &feature_ijmpcall,
1382 &feature_sram,
1383 &feature_break,1403 &feature_break,
1384 &feature_jmpcall,
1385 &feature_movw,1404 &feature_movw,
1386 &feature_addsubiw,
1387 },1405 },
1388};1406};
13891407
...@@ -1391,16 +1409,16 @@ pub const cpu_atmega16u4 = Cpu{...@@ -1391,16 +1409,16 @@ pub const cpu_atmega16u4 = Cpu{
1391 .name = "atmega16u4",1409 .name = "atmega16u4",
1392 .llvm_name = "atmega16u4",1410 .llvm_name = "atmega16u4",
1393 .dependencies = &[_]*const Feature {1411 .dependencies = &[_]*const Feature {
1394 &feature_lpmx,1412 &feature_sram,
1413 &feature_jmpcall,
1414 &feature_mul,
1395 &feature_lpm,1415 &feature_lpm,
1416 &feature_lpmx,
1396 &feature_spm,1417 &feature_spm,
1418 &feature_addsubiw,
1397 &feature_ijmpcall,1419 &feature_ijmpcall,
1398 &feature_sram,
1399 &feature_break,1420 &feature_break,
1400 &feature_jmpcall,
1401 &feature_mul,
1402 &feature_movw,1421 &feature_movw,
1403 &feature_addsubiw,
1404 },1422 },
1405};1423};
14061424
...@@ -1408,18 +1426,18 @@ pub const cpu_atmega2560 = Cpu{...@@ -1408,18 +1426,18 @@ pub const cpu_atmega2560 = Cpu{
1408 .name = "atmega2560",1426 .name = "atmega2560",
1409 .llvm_name = "atmega2560",1427 .llvm_name = "atmega2560",
1410 .dependencies = &[_]*const Feature {1428 .dependencies = &[_]*const Feature {
1411 &feature_lpmx,1429 &feature_sram,
1430 &feature_jmpcall,
1431 &feature_mul,
1412 &feature_elpm,1432 &feature_elpm,
1413 &feature_lpm,1433 &feature_lpm,
1434 &feature_lpmx,
1414 &feature_spm,1435 &feature_spm,
1436 &feature_addsubiw,
1415 &feature_ijmpcall,1437 &feature_ijmpcall,
1416 &feature_movw,
1417 &feature_sram,
1418 &feature_break,
1419 &feature_jmpcall,
1420 &feature_mul,
1421 &feature_elpmx,1438 &feature_elpmx,
1422 &feature_addsubiw,1439 &feature_break,
1440 &feature_movw,
1423 },1441 },
1424};1442};
14251443
...@@ -1427,18 +1445,18 @@ pub const cpu_atmega2561 = Cpu{...@@ -1427,18 +1445,18 @@ pub const cpu_atmega2561 = Cpu{
1427 .name = "atmega2561",1445 .name = "atmega2561",
1428 .llvm_name = "atmega2561",1446 .llvm_name = "atmega2561",
1429 .dependencies = &[_]*const Feature {1447 .dependencies = &[_]*const Feature {
1430 &feature_lpmx,1448 &feature_sram,
1449 &feature_jmpcall,
1450 &feature_mul,
1431 &feature_elpm,1451 &feature_elpm,
1432 &feature_lpm,1452 &feature_lpm,
1453 &feature_lpmx,
1433 &feature_spm,1454 &feature_spm,
1455 &feature_addsubiw,
1434 &feature_ijmpcall,1456 &feature_ijmpcall,
1435 &feature_movw,
1436 &feature_sram,
1437 &feature_break,
1438 &feature_jmpcall,
1439 &feature_mul,
1440 &feature_elpmx,1457 &feature_elpmx,
1441 &feature_addsubiw,1458 &feature_break,
1459 &feature_movw,
1442 },1460 },
1443};1461};
14441462
...@@ -1446,18 +1464,18 @@ pub const cpu_atmega2564rfr2 = Cpu{...@@ -1446,18 +1464,18 @@ pub const cpu_atmega2564rfr2 = Cpu{
1446 .name = "atmega2564rfr2",1464 .name = "atmega2564rfr2",
1447 .llvm_name = "atmega2564rfr2",1465 .llvm_name = "atmega2564rfr2",
1448 .dependencies = &[_]*const Feature {1466 .dependencies = &[_]*const Feature {
1449 &feature_lpmx,1467 &feature_sram,
1468 &feature_jmpcall,
1469 &feature_mul,
1450 &feature_elpm,1470 &feature_elpm,
1451 &feature_lpm,1471 &feature_lpm,
1472 &feature_lpmx,
1452 &feature_spm,1473 &feature_spm,
1474 &feature_addsubiw,
1453 &feature_ijmpcall,1475 &feature_ijmpcall,
1454 &feature_movw,
1455 &feature_sram,
1456 &feature_break,
1457 &feature_jmpcall,
1458 &feature_mul,
1459 &feature_elpmx,1476 &feature_elpmx,
1460 &feature_addsubiw,1477 &feature_break,
1478 &feature_movw,
1461 },1479 },
1462};1480};
14631481
...@@ -1465,18 +1483,18 @@ pub const cpu_atmega256rfr2 = Cpu{...@@ -1465,18 +1483,18 @@ pub const cpu_atmega256rfr2 = Cpu{
1465 .name = "atmega256rfr2",1483 .name = "atmega256rfr2",
1466 .llvm_name = "atmega256rfr2",1484 .llvm_name = "atmega256rfr2",
1467 .dependencies = &[_]*const Feature {1485 .dependencies = &[_]*const Feature {
1468 &feature_lpmx,1486 &feature_sram,
1487 &feature_jmpcall,
1488 &feature_mul,
1469 &feature_elpm,1489 &feature_elpm,
1470 &feature_lpm,1490 &feature_lpm,
1491 &feature_lpmx,
1471 &feature_spm,1492 &feature_spm,
1493 &feature_addsubiw,
1472 &feature_ijmpcall,1494 &feature_ijmpcall,
1473 &feature_movw,
1474 &feature_sram,
1475 &feature_break,
1476 &feature_jmpcall,
1477 &feature_mul,
1478 &feature_elpmx,1495 &feature_elpmx,
1479 &feature_addsubiw,1496 &feature_break,
1497 &feature_movw,
1480 },1498 },
1481};1499};
14821500
...@@ -1484,16 +1502,16 @@ pub const cpu_atmega32 = Cpu{...@@ -1484,16 +1502,16 @@ pub const cpu_atmega32 = Cpu{
1484 .name = "atmega32",1502 .name = "atmega32",
1485 .llvm_name = "atmega32",1503 .llvm_name = "atmega32",
1486 .dependencies = &[_]*const Feature {1504 .dependencies = &[_]*const Feature {
1487 &feature_lpmx,1505 &feature_sram,
1506 &feature_jmpcall,
1507 &feature_mul,
1488 &feature_lpm,1508 &feature_lpm,
1509 &feature_lpmx,
1489 &feature_spm,1510 &feature_spm,
1511 &feature_addsubiw,
1490 &feature_ijmpcall,1512 &feature_ijmpcall,
1491 &feature_sram,
1492 &feature_break,1513 &feature_break,
1493 &feature_jmpcall,
1494 &feature_mul,
1495 &feature_movw,1514 &feature_movw,
1496 &feature_addsubiw,
1497 },1515 },
1498};1516};
14991517
...@@ -1501,16 +1519,16 @@ pub const cpu_atmega323 = Cpu{...@@ -1501,16 +1519,16 @@ pub const cpu_atmega323 = Cpu{
1501 .name = "atmega323",1519 .name = "atmega323",
1502 .llvm_name = "atmega323",1520 .llvm_name = "atmega323",
1503 .dependencies = &[_]*const Feature {1521 .dependencies = &[_]*const Feature {
1504 &feature_lpmx,1522 &feature_sram,
1523 &feature_jmpcall,
1524 &feature_mul,
1505 &feature_lpm,1525 &feature_lpm,
1526 &feature_lpmx,
1506 &feature_spm,1527 &feature_spm,
1528 &feature_addsubiw,
1507 &feature_ijmpcall,1529 &feature_ijmpcall,
1508 &feature_sram,
1509 &feature_break,1530 &feature_break,
1510 &feature_jmpcall,
1511 &feature_mul,
1512 &feature_movw,1531 &feature_movw,
1513 &feature_addsubiw,
1514 },1532 },
1515};1533};
15161534
...@@ -1518,16 +1536,16 @@ pub const cpu_atmega324a = Cpu{...@@ -1518,16 +1536,16 @@ pub const cpu_atmega324a = Cpu{
1518 .name = "atmega324a",1536 .name = "atmega324a",
1519 .llvm_name = "atmega324a",1537 .llvm_name = "atmega324a",
1520 .dependencies = &[_]*const Feature {1538 .dependencies = &[_]*const Feature {
1521 &feature_lpmx,1539 &feature_sram,
1540 &feature_jmpcall,
1541 &feature_mul,
1522 &feature_lpm,1542 &feature_lpm,
1543 &feature_lpmx,
1523 &feature_spm,1544 &feature_spm,
1545 &feature_addsubiw,
1524 &feature_ijmpcall,1546 &feature_ijmpcall,
1525 &feature_sram,
1526 &feature_break,1547 &feature_break,
1527 &feature_jmpcall,
1528 &feature_mul,
1529 &feature_movw,1548 &feature_movw,
1530 &feature_addsubiw,
1531 },1549 },
1532};1550};
15331551
...@@ -1535,16 +1553,16 @@ pub const cpu_atmega324p = Cpu{...@@ -1535,16 +1553,16 @@ pub const cpu_atmega324p = Cpu{
1535 .name = "atmega324p",1553 .name = "atmega324p",
1536 .llvm_name = "atmega324p",1554 .llvm_name = "atmega324p",
1537 .dependencies = &[_]*const Feature {1555 .dependencies = &[_]*const Feature {
1538 &feature_lpmx,1556 &feature_sram,
1557 &feature_jmpcall,
1558 &feature_mul,
1539 &feature_lpm,1559 &feature_lpm,
1560 &feature_lpmx,
1540 &feature_spm,1561 &feature_spm,
1562 &feature_addsubiw,
1541 &feature_ijmpcall,1563 &feature_ijmpcall,
1542 &feature_sram,
1543 &feature_break,1564 &feature_break,
1544 &feature_jmpcall,
1545 &feature_mul,
1546 &feature_movw,1565 &feature_movw,
1547 &feature_addsubiw,
1548 },1566 },
1549};1567};
15501568
...@@ -1552,16 +1570,16 @@ pub const cpu_atmega324pa = Cpu{...@@ -1552,16 +1570,16 @@ pub const cpu_atmega324pa = Cpu{
1552 .name = "atmega324pa",1570 .name = "atmega324pa",
1553 .llvm_name = "atmega324pa",1571 .llvm_name = "atmega324pa",
1554 .dependencies = &[_]*const Feature {1572 .dependencies = &[_]*const Feature {
1555 &feature_lpmx,
1556 &feature_lpm,
1557 &feature_spm,
1558 &feature_ijmpcall,
1559 &feature_sram,1573 &feature_sram,
1560 &feature_break,
1561 &feature_jmpcall,1574 &feature_jmpcall,
1562 &feature_mul,1575 &feature_mul,
1563 &feature_movw,1576 &feature_lpm,
1577 &feature_lpmx,
1578 &feature_spm,
1564 &feature_addsubiw,1579 &feature_addsubiw,
1580 &feature_ijmpcall,
1581 &feature_break,
1582 &feature_movw,
1565 },1583 },
1566};1584};
15671585
...@@ -1569,16 +1587,16 @@ pub const cpu_atmega325 = Cpu{...@@ -1569,16 +1587,16 @@ pub const cpu_atmega325 = Cpu{
1569 .name = "atmega325",1587 .name = "atmega325",
1570 .llvm_name = "atmega325",1588 .llvm_name = "atmega325",
1571 .dependencies = &[_]*const Feature {1589 .dependencies = &[_]*const Feature {
1572 &feature_lpmx,1590 &feature_sram,
1591 &feature_jmpcall,
1592 &feature_mul,
1573 &feature_lpm,1593 &feature_lpm,
1594 &feature_lpmx,
1574 &feature_spm,1595 &feature_spm,
1596 &feature_addsubiw,
1575 &feature_ijmpcall,1597 &feature_ijmpcall,
1576 &feature_sram,
1577 &feature_break,1598 &feature_break,
1578 &feature_jmpcall,
1579 &feature_mul,
1580 &feature_movw,1599 &feature_movw,
1581 &feature_addsubiw,
1582 },1600 },
1583};1601};
15841602
...@@ -1586,16 +1604,16 @@ pub const cpu_atmega3250 = Cpu{...@@ -1586,16 +1604,16 @@ pub const cpu_atmega3250 = Cpu{
1586 .name = "atmega3250",1604 .name = "atmega3250",
1587 .llvm_name = "atmega3250",1605 .llvm_name = "atmega3250",
1588 .dependencies = &[_]*const Feature {1606 .dependencies = &[_]*const Feature {
1589 &feature_lpmx,1607 &feature_sram,
1608 &feature_jmpcall,
1609 &feature_mul,
1590 &feature_lpm,1610 &feature_lpm,
1611 &feature_lpmx,
1591 &feature_spm,1612 &feature_spm,
1613 &feature_addsubiw,
1592 &feature_ijmpcall,1614 &feature_ijmpcall,
1593 &feature_sram,
1594 &feature_break,1615 &feature_break,
1595 &feature_jmpcall,
1596 &feature_mul,
1597 &feature_movw,1616 &feature_movw,
1598 &feature_addsubiw,
1599 },1617 },
1600};1618};
16011619
...@@ -1603,16 +1621,16 @@ pub const cpu_atmega3250a = Cpu{...@@ -1603,16 +1621,16 @@ pub const cpu_atmega3250a = Cpu{
1603 .name = "atmega3250a",1621 .name = "atmega3250a",
1604 .llvm_name = "atmega3250a",1622 .llvm_name = "atmega3250a",
1605 .dependencies = &[_]*const Feature {1623 .dependencies = &[_]*const Feature {
1606 &feature_lpmx,1624 &feature_sram,
1625 &feature_jmpcall,
1626 &feature_mul,
1607 &feature_lpm,1627 &feature_lpm,
1628 &feature_lpmx,
1608 &feature_spm,1629 &feature_spm,
1630 &feature_addsubiw,
1609 &feature_ijmpcall,1631 &feature_ijmpcall,
1610 &feature_sram,
1611 &feature_break,1632 &feature_break,
1612 &feature_jmpcall,
1613 &feature_mul,
1614 &feature_movw,1633 &feature_movw,
1615 &feature_addsubiw,
1616 },1634 },
1617};1635};
16181636
...@@ -1620,16 +1638,16 @@ pub const cpu_atmega3250p = Cpu{...@@ -1620,16 +1638,16 @@ pub const cpu_atmega3250p = Cpu{
1620 .name = "atmega3250p",1638 .name = "atmega3250p",
1621 .llvm_name = "atmega3250p",1639 .llvm_name = "atmega3250p",
1622 .dependencies = &[_]*const Feature {1640 .dependencies = &[_]*const Feature {
1623 &feature_lpmx,1641 &feature_sram,
1642 &feature_jmpcall,
1643 &feature_mul,
1624 &feature_lpm,1644 &feature_lpm,
1645 &feature_lpmx,
1625 &feature_spm,1646 &feature_spm,
1647 &feature_addsubiw,
1626 &feature_ijmpcall,1648 &feature_ijmpcall,
1627 &feature_sram,
1628 &feature_break,1649 &feature_break,
1629 &feature_jmpcall,
1630 &feature_mul,
1631 &feature_movw,1650 &feature_movw,
1632 &feature_addsubiw,
1633 },1651 },
1634};1652};
16351653
...@@ -1637,16 +1655,16 @@ pub const cpu_atmega3250pa = Cpu{...@@ -1637,16 +1655,16 @@ pub const cpu_atmega3250pa = Cpu{
1637 .name = "atmega3250pa",1655 .name = "atmega3250pa",
1638 .llvm_name = "atmega3250pa",1656 .llvm_name = "atmega3250pa",
1639 .dependencies = &[_]*const Feature {1657 .dependencies = &[_]*const Feature {
1640 &feature_lpmx,1658 &feature_sram,
1659 &feature_jmpcall,
1660 &feature_mul,
1641 &feature_lpm,1661 &feature_lpm,
1662 &feature_lpmx,
1642 &feature_spm,1663 &feature_spm,
1664 &feature_addsubiw,
1643 &feature_ijmpcall,1665 &feature_ijmpcall,
1644 &feature_sram,
1645 &feature_break,1666 &feature_break,
1646 &feature_jmpcall,
1647 &feature_mul,
1648 &feature_movw,1667 &feature_movw,
1649 &feature_addsubiw,
1650 },1668 },
1651};1669};
16521670
...@@ -1654,16 +1672,16 @@ pub const cpu_atmega325a = Cpu{...@@ -1654,16 +1672,16 @@ pub const cpu_atmega325a = Cpu{
1654 .name = "atmega325a",1672 .name = "atmega325a",
1655 .llvm_name = "atmega325a",1673 .llvm_name = "atmega325a",
1656 .dependencies = &[_]*const Feature {1674 .dependencies = &[_]*const Feature {
1657 &feature_lpmx,1675 &feature_sram,
1676 &feature_jmpcall,
1677 &feature_mul,
1658 &feature_lpm,1678 &feature_lpm,
1679 &feature_lpmx,
1659 &feature_spm,1680 &feature_spm,
1681 &feature_addsubiw,
1660 &feature_ijmpcall,1682 &feature_ijmpcall,
1661 &feature_sram,
1662 &feature_break,1683 &feature_break,
1663 &feature_jmpcall,
1664 &feature_mul,
1665 &feature_movw,1684 &feature_movw,
1666 &feature_addsubiw,
1667 },1685 },
1668};1686};
16691687
...@@ -1671,16 +1689,16 @@ pub const cpu_atmega325p = Cpu{...@@ -1671,16 +1689,16 @@ pub const cpu_atmega325p = Cpu{
1671 .name = "atmega325p",1689 .name = "atmega325p",
1672 .llvm_name = "atmega325p",1690 .llvm_name = "atmega325p",
1673 .dependencies = &[_]*const Feature {1691 .dependencies = &[_]*const Feature {
1674 &feature_lpmx,1692 &feature_sram,
1693 &feature_jmpcall,
1694 &feature_mul,
1675 &feature_lpm,1695 &feature_lpm,
1696 &feature_lpmx,
1676 &feature_spm,1697 &feature_spm,
1698 &feature_addsubiw,
1677 &feature_ijmpcall,1699 &feature_ijmpcall,
1678 &feature_sram,
1679 &feature_break,1700 &feature_break,
1680 &feature_jmpcall,
1681 &feature_mul,
1682 &feature_movw,1701 &feature_movw,
1683 &feature_addsubiw,
1684 },1702 },
1685};1703};
16861704
...@@ -1688,16 +1706,16 @@ pub const cpu_atmega325pa = Cpu{...@@ -1688,16 +1706,16 @@ pub const cpu_atmega325pa = Cpu{
1688 .name = "atmega325pa",1706 .name = "atmega325pa",
1689 .llvm_name = "atmega325pa",1707 .llvm_name = "atmega325pa",
1690 .dependencies = &[_]*const Feature {1708 .dependencies = &[_]*const Feature {
1691 &feature_lpmx,1709 &feature_sram,
1710 &feature_jmpcall,
1711 &feature_mul,
1692 &feature_lpm,1712 &feature_lpm,
1713 &feature_lpmx,
1693 &feature_spm,1714 &feature_spm,
1715 &feature_addsubiw,
1694 &feature_ijmpcall,1716 &feature_ijmpcall,
1695 &feature_sram,
1696 &feature_break,1717 &feature_break,
1697 &feature_jmpcall,
1698 &feature_mul,
1699 &feature_movw,1718 &feature_movw,
1700 &feature_addsubiw,
1701 },1719 },
1702};1720};
17031721
...@@ -1705,16 +1723,16 @@ pub const cpu_atmega328 = Cpu{...@@ -1705,16 +1723,16 @@ pub const cpu_atmega328 = Cpu{
1705 .name = "atmega328",1723 .name = "atmega328",
1706 .llvm_name = "atmega328",1724 .llvm_name = "atmega328",
1707 .dependencies = &[_]*const Feature {1725 .dependencies = &[_]*const Feature {
1708 &feature_lpmx,1726 &feature_sram,
1727 &feature_jmpcall,
1728 &feature_mul,
1709 &feature_lpm,1729 &feature_lpm,
1730 &feature_lpmx,
1710 &feature_spm,1731 &feature_spm,
1732 &feature_addsubiw,
1711 &feature_ijmpcall,1733 &feature_ijmpcall,
1712 &feature_sram,
1713 &feature_break,1734 &feature_break,
1714 &feature_jmpcall,
1715 &feature_mul,
1716 &feature_movw,1735 &feature_movw,
1717 &feature_addsubiw,
1718 },1736 },
1719};1737};
17201738
...@@ -1722,16 +1740,16 @@ pub const cpu_atmega328p = Cpu{...@@ -1722,16 +1740,16 @@ pub const cpu_atmega328p = Cpu{
1722 .name = "atmega328p",1740 .name = "atmega328p",
1723 .llvm_name = "atmega328p",1741 .llvm_name = "atmega328p",
1724 .dependencies = &[_]*const Feature {1742 .dependencies = &[_]*const Feature {
1725 &feature_lpmx,1743 &feature_sram,
1744 &feature_jmpcall,
1745 &feature_mul,
1726 &feature_lpm,1746 &feature_lpm,
1747 &feature_lpmx,
1727 &feature_spm,1748 &feature_spm,
1749 &feature_addsubiw,
1728 &feature_ijmpcall,1750 &feature_ijmpcall,
1729 &feature_sram,
1730 &feature_break,1751 &feature_break,
1731 &feature_jmpcall,
1732 &feature_mul,
1733 &feature_movw,1752 &feature_movw,
1734 &feature_addsubiw,
1735 },1753 },
1736};1754};
17371755
...@@ -1739,16 +1757,16 @@ pub const cpu_atmega329 = Cpu{...@@ -1739,16 +1757,16 @@ pub const cpu_atmega329 = Cpu{
1739 .name = "atmega329",1757 .name = "atmega329",
1740 .llvm_name = "atmega329",1758 .llvm_name = "atmega329",
1741 .dependencies = &[_]*const Feature {1759 .dependencies = &[_]*const Feature {
1742 &feature_lpmx,1760 &feature_sram,
1761 &feature_jmpcall,
1762 &feature_mul,
1743 &feature_lpm,1763 &feature_lpm,
1764 &feature_lpmx,
1744 &feature_spm,1765 &feature_spm,
1766 &feature_addsubiw,
1745 &feature_ijmpcall,1767 &feature_ijmpcall,
1746 &feature_sram,
1747 &feature_break,1768 &feature_break,
1748 &feature_jmpcall,
1749 &feature_mul,
1750 &feature_movw,1769 &feature_movw,
1751 &feature_addsubiw,
1752 },1770 },
1753};1771};
17541772
...@@ -1756,16 +1774,16 @@ pub const cpu_atmega3290 = Cpu{...@@ -1756,16 +1774,16 @@ pub const cpu_atmega3290 = Cpu{
1756 .name = "atmega3290",1774 .name = "atmega3290",
1757 .llvm_name = "atmega3290",1775 .llvm_name = "atmega3290",
1758 .dependencies = &[_]*const Feature {1776 .dependencies = &[_]*const Feature {
1759 &feature_lpmx,1777 &feature_sram,
1778 &feature_jmpcall,
1779 &feature_mul,
1760 &feature_lpm,1780 &feature_lpm,
1781 &feature_lpmx,
1761 &feature_spm,1782 &feature_spm,
1783 &feature_addsubiw,
1762 &feature_ijmpcall,1784 &feature_ijmpcall,
1763 &feature_sram,
1764 &feature_break,1785 &feature_break,
1765 &feature_jmpcall,
1766 &feature_mul,
1767 &feature_movw,1786 &feature_movw,
1768 &feature_addsubiw,
1769 },1787 },
1770};1788};
17711789
...@@ -1773,16 +1791,16 @@ pub const cpu_atmega3290a = Cpu{...@@ -1773,16 +1791,16 @@ pub const cpu_atmega3290a = Cpu{
1773 .name = "atmega3290a",1791 .name = "atmega3290a",
1774 .llvm_name = "atmega3290a",1792 .llvm_name = "atmega3290a",
1775 .dependencies = &[_]*const Feature {1793 .dependencies = &[_]*const Feature {
1776 &feature_lpmx,1794 &feature_sram,
1795 &feature_jmpcall,
1796 &feature_mul,
1777 &feature_lpm,1797 &feature_lpm,
1798 &feature_lpmx,
1778 &feature_spm,1799 &feature_spm,
1800 &feature_addsubiw,
1779 &feature_ijmpcall,1801 &feature_ijmpcall,
1780 &feature_sram,
1781 &feature_break,1802 &feature_break,
1782 &feature_jmpcall,
1783 &feature_mul,
1784 &feature_movw,1803 &feature_movw,
1785 &feature_addsubiw,
1786 },1804 },
1787};1805};
17881806
...@@ -1790,16 +1808,16 @@ pub const cpu_atmega3290p = Cpu{...@@ -1790,16 +1808,16 @@ pub const cpu_atmega3290p = Cpu{
1790 .name = "atmega3290p",1808 .name = "atmega3290p",
1791 .llvm_name = "atmega3290p",1809 .llvm_name = "atmega3290p",
1792 .dependencies = &[_]*const Feature {1810 .dependencies = &[_]*const Feature {
1793 &feature_lpmx,1811 &feature_sram,
1812 &feature_jmpcall,
1813 &feature_mul,
1794 &feature_lpm,1814 &feature_lpm,
1815 &feature_lpmx,
1795 &feature_spm,1816 &feature_spm,
1817 &feature_addsubiw,
1796 &feature_ijmpcall,1818 &feature_ijmpcall,
1797 &feature_sram,
1798 &feature_break,1819 &feature_break,
1799 &feature_jmpcall,
1800 &feature_mul,
1801 &feature_movw,1820 &feature_movw,
1802 &feature_addsubiw,
1803 },1821 },
1804};1822};
18051823
...@@ -1807,16 +1825,16 @@ pub const cpu_atmega3290pa = Cpu{...@@ -1807,16 +1825,16 @@ pub const cpu_atmega3290pa = Cpu{
1807 .name = "atmega3290pa",1825 .name = "atmega3290pa",
1808 .llvm_name = "atmega3290pa",1826 .llvm_name = "atmega3290pa",
1809 .dependencies = &[_]*const Feature {1827 .dependencies = &[_]*const Feature {
1810 &feature_lpmx,1828 &feature_sram,
1829 &feature_jmpcall,
1830 &feature_mul,
1811 &feature_lpm,1831 &feature_lpm,
1832 &feature_lpmx,
1812 &feature_spm,1833 &feature_spm,
1834 &feature_addsubiw,
1813 &feature_ijmpcall,1835 &feature_ijmpcall,
1814 &feature_sram,
1815 &feature_break,1836 &feature_break,
1816 &feature_jmpcall,
1817 &feature_mul,
1818 &feature_movw,1837 &feature_movw,
1819 &feature_addsubiw,
1820 },1838 },
1821};1839};
18221840
...@@ -1824,16 +1842,16 @@ pub const cpu_atmega329a = Cpu{...@@ -1824,16 +1842,16 @@ pub const cpu_atmega329a = Cpu{
1824 .name = "atmega329a",1842 .name = "atmega329a",
1825 .llvm_name = "atmega329a",1843 .llvm_name = "atmega329a",
1826 .dependencies = &[_]*const Feature {1844 .dependencies = &[_]*const Feature {
1827 &feature_lpmx,1845 &feature_sram,
1846 &feature_jmpcall,
1847 &feature_mul,
1828 &feature_lpm,1848 &feature_lpm,
1849 &feature_lpmx,
1829 &feature_spm,1850 &feature_spm,
1851 &feature_addsubiw,
1830 &feature_ijmpcall,1852 &feature_ijmpcall,
1831 &feature_sram,
1832 &feature_break,1853 &feature_break,
1833 &feature_jmpcall,
1834 &feature_mul,
1835 &feature_movw,1854 &feature_movw,
1836 &feature_addsubiw,
1837 },1855 },
1838};1856};
18391857
...@@ -1841,16 +1859,16 @@ pub const cpu_atmega329p = Cpu{...@@ -1841,16 +1859,16 @@ pub const cpu_atmega329p = Cpu{
1841 .name = "atmega329p",1859 .name = "atmega329p",
1842 .llvm_name = "atmega329p",1860 .llvm_name = "atmega329p",
1843 .dependencies = &[_]*const Feature {1861 .dependencies = &[_]*const Feature {
1844 &feature_lpmx,1862 &feature_sram,
1863 &feature_jmpcall,
1864 &feature_mul,
1845 &feature_lpm,1865 &feature_lpm,
1866 &feature_lpmx,
1846 &feature_spm,1867 &feature_spm,
1868 &feature_addsubiw,
1847 &feature_ijmpcall,1869 &feature_ijmpcall,
1848 &feature_sram,
1849 &feature_break,1870 &feature_break,
1850 &feature_jmpcall,
1851 &feature_mul,
1852 &feature_movw,1871 &feature_movw,
1853 &feature_addsubiw,
1854 },1872 },
1855};1873};
18561874
...@@ -1858,16 +1876,16 @@ pub const cpu_atmega329pa = Cpu{...@@ -1858,16 +1876,16 @@ pub const cpu_atmega329pa = Cpu{
1858 .name = "atmega329pa",1876 .name = "atmega329pa",
1859 .llvm_name = "atmega329pa",1877 .llvm_name = "atmega329pa",
1860 .dependencies = &[_]*const Feature {1878 .dependencies = &[_]*const Feature {
1861 &feature_lpmx,1879 &feature_sram,
1880 &feature_jmpcall,
1881 &feature_mul,
1862 &feature_lpm,1882 &feature_lpm,
1883 &feature_lpmx,
1863 &feature_spm,1884 &feature_spm,
1885 &feature_addsubiw,
1864 &feature_ijmpcall,1886 &feature_ijmpcall,
1865 &feature_sram,
1866 &feature_break,1887 &feature_break,
1867 &feature_jmpcall,
1868 &feature_mul,
1869 &feature_movw,1888 &feature_movw,
1870 &feature_addsubiw,
1871 },1889 },
1872};1890};
18731891
...@@ -1875,16 +1893,16 @@ pub const cpu_atmega32a = Cpu{...@@ -1875,16 +1893,16 @@ pub const cpu_atmega32a = Cpu{
1875 .name = "atmega32a",1893 .name = "atmega32a",
1876 .llvm_name = "atmega32a",1894 .llvm_name = "atmega32a",
1877 .dependencies = &[_]*const Feature {1895 .dependencies = &[_]*const Feature {
1878 &feature_lpmx,1896 &feature_sram,
1897 &feature_jmpcall,
1898 &feature_mul,
1879 &feature_lpm,1899 &feature_lpm,
1900 &feature_lpmx,
1880 &feature_spm,1901 &feature_spm,
1902 &feature_addsubiw,
1881 &feature_ijmpcall,1903 &feature_ijmpcall,
1882 &feature_sram,
1883 &feature_break,1904 &feature_break,
1884 &feature_jmpcall,
1885 &feature_mul,
1886 &feature_movw,1905 &feature_movw,
1887 &feature_addsubiw,
1888 },1906 },
1889};1907};
18901908
...@@ -1892,16 +1910,16 @@ pub const cpu_atmega32c1 = Cpu{...@@ -1892,16 +1910,16 @@ pub const cpu_atmega32c1 = Cpu{
1892 .name = "atmega32c1",1910 .name = "atmega32c1",
1893 .llvm_name = "atmega32c1",1911 .llvm_name = "atmega32c1",
1894 .dependencies = &[_]*const Feature {1912 .dependencies = &[_]*const Feature {
1895 &feature_lpmx,1913 &feature_sram,
1914 &feature_jmpcall,
1915 &feature_mul,
1896 &feature_lpm,1916 &feature_lpm,
1917 &feature_lpmx,
1897 &feature_spm,1918 &feature_spm,
1919 &feature_addsubiw,
1898 &feature_ijmpcall,1920 &feature_ijmpcall,
1899 &feature_sram,
1900 &feature_break,1921 &feature_break,
1901 &feature_jmpcall,
1902 &feature_mul,
1903 &feature_movw,1922 &feature_movw,
1904 &feature_addsubiw,
1905 },1923 },
1906};1924};
19071925
...@@ -1909,16 +1927,16 @@ pub const cpu_atmega32hvb = Cpu{...@@ -1909,16 +1927,16 @@ pub const cpu_atmega32hvb = Cpu{
1909 .name = "atmega32hvb",1927 .name = "atmega32hvb",
1910 .llvm_name = "atmega32hvb",1928 .llvm_name = "atmega32hvb",
1911 .dependencies = &[_]*const Feature {1929 .dependencies = &[_]*const Feature {
1912 &feature_lpmx,1930 &feature_sram,
1931 &feature_jmpcall,
1932 &feature_mul,
1913 &feature_lpm,1933 &feature_lpm,
1934 &feature_lpmx,
1914 &feature_spm,1935 &feature_spm,
1936 &feature_addsubiw,
1915 &feature_ijmpcall,1937 &feature_ijmpcall,
1916 &feature_sram,
1917 &feature_break,1938 &feature_break,
1918 &feature_jmpcall,
1919 &feature_mul,
1920 &feature_movw,1939 &feature_movw,
1921 &feature_addsubiw,
1922 },1940 },
1923};1941};
19241942
...@@ -1926,16 +1944,16 @@ pub const cpu_atmega32hvbrevb = Cpu{...@@ -1926,16 +1944,16 @@ pub const cpu_atmega32hvbrevb = Cpu{
1926 .name = "atmega32hvbrevb",1944 .name = "atmega32hvbrevb",
1927 .llvm_name = "atmega32hvbrevb",1945 .llvm_name = "atmega32hvbrevb",
1928 .dependencies = &[_]*const Feature {1946 .dependencies = &[_]*const Feature {
1929 &feature_lpmx,1947 &feature_sram,
1948 &feature_jmpcall,
1949 &feature_mul,
1930 &feature_lpm,1950 &feature_lpm,
1951 &feature_lpmx,
1931 &feature_spm,1952 &feature_spm,
1953 &feature_addsubiw,
1932 &feature_ijmpcall,1954 &feature_ijmpcall,
1933 &feature_sram,
1934 &feature_break,1955 &feature_break,
1935 &feature_jmpcall,
1936 &feature_mul,
1937 &feature_movw,1956 &feature_movw,
1938 &feature_addsubiw,
1939 },1957 },
1940};1958};
19411959
...@@ -1943,16 +1961,16 @@ pub const cpu_atmega32m1 = Cpu{...@@ -1943,16 +1961,16 @@ pub const cpu_atmega32m1 = Cpu{
1943 .name = "atmega32m1",1961 .name = "atmega32m1",
1944 .llvm_name = "atmega32m1",1962 .llvm_name = "atmega32m1",
1945 .dependencies = &[_]*const Feature {1963 .dependencies = &[_]*const Feature {
1946 &feature_lpmx,1964 &feature_sram,
1965 &feature_jmpcall,
1966 &feature_mul,
1947 &feature_lpm,1967 &feature_lpm,
1968 &feature_lpmx,
1948 &feature_spm,1969 &feature_spm,
1970 &feature_addsubiw,
1949 &feature_ijmpcall,1971 &feature_ijmpcall,
1950 &feature_sram,
1951 &feature_break,1972 &feature_break,
1952 &feature_jmpcall,
1953 &feature_mul,
1954 &feature_movw,1973 &feature_movw,
1955 &feature_addsubiw,
1956 },1974 },
1957};1975};
19581976
...@@ -1960,15 +1978,15 @@ pub const cpu_atmega32u2 = Cpu{...@@ -1960,15 +1978,15 @@ pub const cpu_atmega32u2 = Cpu{
1960 .name = "atmega32u2",1978 .name = "atmega32u2",
1961 .llvm_name = "atmega32u2",1979 .llvm_name = "atmega32u2",
1962 .dependencies = &[_]*const Feature {1980 .dependencies = &[_]*const Feature {
1963 &feature_lpmx,1981 &feature_sram,
1982 &feature_jmpcall,
1964 &feature_lpm,1983 &feature_lpm,
1984 &feature_lpmx,
1965 &feature_spm,1985 &feature_spm,
1986 &feature_addsubiw,
1966 &feature_ijmpcall,1987 &feature_ijmpcall,
1967 &feature_sram,
1968 &feature_break,1988 &feature_break,
1969 &feature_jmpcall,
1970 &feature_movw,1989 &feature_movw,
1971 &feature_addsubiw,
1972 },1990 },
1973};1991};
19741992
...@@ -1976,16 +1994,16 @@ pub const cpu_atmega32u4 = Cpu{...@@ -1976,16 +1994,16 @@ pub const cpu_atmega32u4 = Cpu{
1976 .name = "atmega32u4",1994 .name = "atmega32u4",
1977 .llvm_name = "atmega32u4",1995 .llvm_name = "atmega32u4",
1978 .dependencies = &[_]*const Feature {1996 .dependencies = &[_]*const Feature {
1979 &feature_lpmx,1997 &feature_sram,
1998 &feature_jmpcall,
1999 &feature_mul,
1980 &feature_lpm,2000 &feature_lpm,
2001 &feature_lpmx,
1981 &feature_spm,2002 &feature_spm,
2003 &feature_addsubiw,
1982 &feature_ijmpcall,2004 &feature_ijmpcall,
1983 &feature_sram,
1984 &feature_break,2005 &feature_break,
1985 &feature_jmpcall,
1986 &feature_mul,
1987 &feature_movw,2006 &feature_movw,
1988 &feature_addsubiw,
1989 },2007 },
1990};2008};
19912009
...@@ -1993,16 +2011,16 @@ pub const cpu_atmega32u6 = Cpu{...@@ -1993,16 +2011,16 @@ pub const cpu_atmega32u6 = Cpu{
1993 .name = "atmega32u6",2011 .name = "atmega32u6",
1994 .llvm_name = "atmega32u6",2012 .llvm_name = "atmega32u6",
1995 .dependencies = &[_]*const Feature {2013 .dependencies = &[_]*const Feature {
1996 &feature_lpmx,2014 &feature_sram,
2015 &feature_jmpcall,
2016 &feature_mul,
1997 &feature_lpm,2017 &feature_lpm,
2018 &feature_lpmx,
1998 &feature_spm,2019 &feature_spm,
2020 &feature_addsubiw,
1999 &feature_ijmpcall,2021 &feature_ijmpcall,
2000 &feature_sram,
2001 &feature_break,2022 &feature_break,
2002 &feature_jmpcall,
2003 &feature_mul,
2004 &feature_movw,2023 &feature_movw,
2005 &feature_addsubiw,
2006 },2024 },
2007};2025};
20082026
...@@ -2010,16 +2028,16 @@ pub const cpu_atmega406 = Cpu{...@@ -2010,16 +2028,16 @@ pub const cpu_atmega406 = Cpu{
2010 .name = "atmega406",2028 .name = "atmega406",
2011 .llvm_name = "atmega406",2029 .llvm_name = "atmega406",
2012 .dependencies = &[_]*const Feature {2030 .dependencies = &[_]*const Feature {
2013 &feature_lpmx,2031 &feature_sram,
2032 &feature_jmpcall,
2033 &feature_mul,
2014 &feature_lpm,2034 &feature_lpm,
2035 &feature_lpmx,
2015 &feature_spm,2036 &feature_spm,
2037 &feature_addsubiw,
2016 &feature_ijmpcall,2038 &feature_ijmpcall,
2017 &feature_sram,
2018 &feature_break,2039 &feature_break,
2019 &feature_jmpcall,
2020 &feature_mul,
2021 &feature_movw,2040 &feature_movw,
2022 &feature_addsubiw,
2023 },2041 },
2024};2042};
20252043
...@@ -2027,15 +2045,15 @@ pub const cpu_atmega48 = Cpu{...@@ -2027,15 +2045,15 @@ pub const cpu_atmega48 = Cpu{
2027 .name = "atmega48",2045 .name = "atmega48",
2028 .llvm_name = "atmega48",2046 .llvm_name = "atmega48",
2029 .dependencies = &[_]*const Feature {2047 .dependencies = &[_]*const Feature {
2030 &feature_lpmx,2048 &feature_sram,
2049 &feature_mul,
2031 &feature_lpm,2050 &feature_lpm,
2051 &feature_lpmx,
2032 &feature_spm,2052 &feature_spm,
2053 &feature_addsubiw,
2033 &feature_ijmpcall,2054 &feature_ijmpcall,
2034 &feature_sram,
2035 &feature_break,2055 &feature_break,
2036 &feature_mul,
2037 &feature_movw,2056 &feature_movw,
2038 &feature_addsubiw,
2039 },2057 },
2040};2058};
20412059
...@@ -2043,15 +2061,15 @@ pub const cpu_atmega48a = Cpu{...@@ -2043,15 +2061,15 @@ pub const cpu_atmega48a = Cpu{
2043 .name = "atmega48a",2061 .name = "atmega48a",
2044 .llvm_name = "atmega48a",2062 .llvm_name = "atmega48a",
2045 .dependencies = &[_]*const Feature {2063 .dependencies = &[_]*const Feature {
2046 &feature_lpmx,2064 &feature_sram,
2065 &feature_mul,
2047 &feature_lpm,2066 &feature_lpm,
2067 &feature_lpmx,
2048 &feature_spm,2068 &feature_spm,
2069 &feature_addsubiw,
2049 &feature_ijmpcall,2070 &feature_ijmpcall,
2050 &feature_sram,
2051 &feature_break,2071 &feature_break,
2052 &feature_mul,
2053 &feature_movw,2072 &feature_movw,
2054 &feature_addsubiw,
2055 },2073 },
2056};2074};
20572075
...@@ -2059,15 +2077,15 @@ pub const cpu_atmega48p = Cpu{...@@ -2059,15 +2077,15 @@ pub const cpu_atmega48p = Cpu{
2059 .name = "atmega48p",2077 .name = "atmega48p",
2060 .llvm_name = "atmega48p",2078 .llvm_name = "atmega48p",
2061 .dependencies = &[_]*const Feature {2079 .dependencies = &[_]*const Feature {
2062 &feature_lpmx,2080 &feature_sram,
2081 &feature_mul,
2063 &feature_lpm,2082 &feature_lpm,
2083 &feature_lpmx,
2064 &feature_spm,2084 &feature_spm,
2085 &feature_addsubiw,
2065 &feature_ijmpcall,2086 &feature_ijmpcall,
2066 &feature_sram,
2067 &feature_break,2087 &feature_break,
2068 &feature_mul,
2069 &feature_movw,2088 &feature_movw,
2070 &feature_addsubiw,
2071 },2089 },
2072};2090};
20732091
...@@ -2075,15 +2093,15 @@ pub const cpu_atmega48pa = Cpu{...@@ -2075,15 +2093,15 @@ pub const cpu_atmega48pa = Cpu{
2075 .name = "atmega48pa",2093 .name = "atmega48pa",
2076 .llvm_name = "atmega48pa",2094 .llvm_name = "atmega48pa",
2077 .dependencies = &[_]*const Feature {2095 .dependencies = &[_]*const Feature {
2078 &feature_lpmx,2096 &feature_sram,
2097 &feature_mul,
2079 &feature_lpm,2098 &feature_lpm,
2099 &feature_lpmx,
2080 &feature_spm,2100 &feature_spm,
2101 &feature_addsubiw,
2081 &feature_ijmpcall,2102 &feature_ijmpcall,
2082 &feature_sram,
2083 &feature_break,2103 &feature_break,
2084 &feature_mul,
2085 &feature_movw,2104 &feature_movw,
2086 &feature_addsubiw,
2087 },2105 },
2088};2106};
20892107
...@@ -2091,16 +2109,16 @@ pub const cpu_atmega64 = Cpu{...@@ -2091,16 +2109,16 @@ pub const cpu_atmega64 = Cpu{
2091 .name = "atmega64",2109 .name = "atmega64",
2092 .llvm_name = "atmega64",2110 .llvm_name = "atmega64",
2093 .dependencies = &[_]*const Feature {2111 .dependencies = &[_]*const Feature {
2094 &feature_lpmx,2112 &feature_sram,
2113 &feature_jmpcall,
2114 &feature_mul,
2095 &feature_lpm,2115 &feature_lpm,
2116 &feature_lpmx,
2096 &feature_spm,2117 &feature_spm,
2118 &feature_addsubiw,
2097 &feature_ijmpcall,2119 &feature_ijmpcall,
2098 &feature_sram,
2099 &feature_break,2120 &feature_break,
2100 &feature_jmpcall,
2101 &feature_mul,
2102 &feature_movw,2121 &feature_movw,
2103 &feature_addsubiw,
2104 },2122 },
2105};2123};
21062124
...@@ -2108,16 +2126,16 @@ pub const cpu_atmega640 = Cpu{...@@ -2108,16 +2126,16 @@ pub const cpu_atmega640 = Cpu{
2108 .name = "atmega640",2126 .name = "atmega640",
2109 .llvm_name = "atmega640",2127 .llvm_name = "atmega640",
2110 .dependencies = &[_]*const Feature {2128 .dependencies = &[_]*const Feature {
2111 &feature_lpmx,2129 &feature_sram,
2130 &feature_jmpcall,
2131 &feature_mul,
2112 &feature_lpm,2132 &feature_lpm,
2133 &feature_lpmx,
2113 &feature_spm,2134 &feature_spm,
2135 &feature_addsubiw,
2114 &feature_ijmpcall,2136 &feature_ijmpcall,
2115 &feature_sram,
2116 &feature_break,2137 &feature_break,
2117 &feature_jmpcall,
2118 &feature_mul,
2119 &feature_movw,2138 &feature_movw,
2120 &feature_addsubiw,
2121 },2139 },
2122};2140};
21232141
...@@ -2125,16 +2143,16 @@ pub const cpu_atmega644 = Cpu{...@@ -2125,16 +2143,16 @@ pub const cpu_atmega644 = Cpu{
2125 .name = "atmega644",2143 .name = "atmega644",
2126 .llvm_name = "atmega644",2144 .llvm_name = "atmega644",
2127 .dependencies = &[_]*const Feature {2145 .dependencies = &[_]*const Feature {
2128 &feature_lpmx,2146 &feature_sram,
2147 &feature_jmpcall,
2148 &feature_mul,
2129 &feature_lpm,2149 &feature_lpm,
2150 &feature_lpmx,
2130 &feature_spm,2151 &feature_spm,
2152 &feature_addsubiw,
2131 &feature_ijmpcall,2153 &feature_ijmpcall,
2132 &feature_sram,
2133 &feature_break,2154 &feature_break,
2134 &feature_jmpcall,
2135 &feature_mul,
2136 &feature_movw,2155 &feature_movw,
2137 &feature_addsubiw,
2138 },2156 },
2139};2157};
21402158
...@@ -2142,16 +2160,16 @@ pub const cpu_atmega644a = Cpu{...@@ -2142,16 +2160,16 @@ pub const cpu_atmega644a = Cpu{
2142 .name = "atmega644a",2160 .name = "atmega644a",
2143 .llvm_name = "atmega644a",2161 .llvm_name = "atmega644a",
2144 .dependencies = &[_]*const Feature {2162 .dependencies = &[_]*const Feature {
2145 &feature_lpmx,2163 &feature_sram,
2164 &feature_jmpcall,
2165 &feature_mul,
2146 &feature_lpm,2166 &feature_lpm,
2167 &feature_lpmx,
2147 &feature_spm,2168 &feature_spm,
2169 &feature_addsubiw,
2148 &feature_ijmpcall,2170 &feature_ijmpcall,
2149 &feature_sram,
2150 &feature_break,2171 &feature_break,
2151 &feature_jmpcall,
2152 &feature_mul,
2153 &feature_movw,2172 &feature_movw,
2154 &feature_addsubiw,
2155 },2173 },
2156};2174};
21572175
...@@ -2159,16 +2177,16 @@ pub const cpu_atmega644p = Cpu{...@@ -2159,16 +2177,16 @@ pub const cpu_atmega644p = Cpu{
2159 .name = "atmega644p",2177 .name = "atmega644p",
2160 .llvm_name = "atmega644p",2178 .llvm_name = "atmega644p",
2161 .dependencies = &[_]*const Feature {2179 .dependencies = &[_]*const Feature {
2162 &feature_lpmx,2180 &feature_sram,
2181 &feature_jmpcall,
2182 &feature_mul,
2163 &feature_lpm,2183 &feature_lpm,
2184 &feature_lpmx,
2164 &feature_spm,2185 &feature_spm,
2186 &feature_addsubiw,
2165 &feature_ijmpcall,2187 &feature_ijmpcall,
2166 &feature_sram,
2167 &feature_break,2188 &feature_break,
2168 &feature_jmpcall,
2169 &feature_mul,
2170 &feature_movw,2189 &feature_movw,
2171 &feature_addsubiw,
2172 },2190 },
2173};2191};
21742192
...@@ -2176,16 +2194,16 @@ pub const cpu_atmega644pa = Cpu{...@@ -2176,16 +2194,16 @@ pub const cpu_atmega644pa = Cpu{
2176 .name = "atmega644pa",2194 .name = "atmega644pa",
2177 .llvm_name = "atmega644pa",2195 .llvm_name = "atmega644pa",
2178 .dependencies = &[_]*const Feature {2196 .dependencies = &[_]*const Feature {
2179 &feature_lpmx,2197 &feature_sram,
2198 &feature_jmpcall,
2199 &feature_mul,
2180 &feature_lpm,2200 &feature_lpm,
2201 &feature_lpmx,
2181 &feature_spm,2202 &feature_spm,
2203 &feature_addsubiw,
2182 &feature_ijmpcall,2204 &feature_ijmpcall,
2183 &feature_sram,
2184 &feature_break,2205 &feature_break,
2185 &feature_jmpcall,
2186 &feature_mul,
2187 &feature_movw,2206 &feature_movw,
2188 &feature_addsubiw,
2189 },2207 },
2190};2208};
21912209
...@@ -2193,16 +2211,16 @@ pub const cpu_atmega644rfr2 = Cpu{...@@ -2193,16 +2211,16 @@ pub const cpu_atmega644rfr2 = Cpu{
2193 .name = "atmega644rfr2",2211 .name = "atmega644rfr2",
2194 .llvm_name = "atmega644rfr2",2212 .llvm_name = "atmega644rfr2",
2195 .dependencies = &[_]*const Feature {2213 .dependencies = &[_]*const Feature {
2196 &feature_lpmx,2214 &feature_sram,
2215 &feature_jmpcall,
2216 &feature_mul,
2197 &feature_lpm,2217 &feature_lpm,
2218 &feature_lpmx,
2198 &feature_spm,2219 &feature_spm,
2220 &feature_addsubiw,
2199 &feature_ijmpcall,2221 &feature_ijmpcall,
2200 &feature_sram,
2201 &feature_break,2222 &feature_break,
2202 &feature_jmpcall,
2203 &feature_mul,
2204 &feature_movw,2223 &feature_movw,
2205 &feature_addsubiw,
2206 },2224 },
2207};2225};
22082226
...@@ -2210,16 +2228,16 @@ pub const cpu_atmega645 = Cpu{...@@ -2210,16 +2228,16 @@ pub const cpu_atmega645 = Cpu{
2210 .name = "atmega645",2228 .name = "atmega645",
2211 .llvm_name = "atmega645",2229 .llvm_name = "atmega645",
2212 .dependencies = &[_]*const Feature {2230 .dependencies = &[_]*const Feature {
2213 &feature_lpmx,2231 &feature_sram,
2232 &feature_jmpcall,
2233 &feature_mul,
2214 &feature_lpm,2234 &feature_lpm,
2235 &feature_lpmx,
2215 &feature_spm,2236 &feature_spm,
2237 &feature_addsubiw,
2216 &feature_ijmpcall,2238 &feature_ijmpcall,
2217 &feature_sram,
2218 &feature_break,2239 &feature_break,
2219 &feature_jmpcall,
2220 &feature_mul,
2221 &feature_movw,2240 &feature_movw,
2222 &feature_addsubiw,
2223 },2241 },
2224};2242};
22252243
...@@ -2227,16 +2245,16 @@ pub const cpu_atmega6450 = Cpu{...@@ -2227,16 +2245,16 @@ pub const cpu_atmega6450 = Cpu{
2227 .name = "atmega6450",2245 .name = "atmega6450",
2228 .llvm_name = "atmega6450",2246 .llvm_name = "atmega6450",
2229 .dependencies = &[_]*const Feature {2247 .dependencies = &[_]*const Feature {
2230 &feature_lpmx,2248 &feature_sram,
2249 &feature_jmpcall,
2250 &feature_mul,
2231 &feature_lpm,2251 &feature_lpm,
2252 &feature_lpmx,
2232 &feature_spm,2253 &feature_spm,
2254 &feature_addsubiw,
2233 &feature_ijmpcall,2255 &feature_ijmpcall,
2234 &feature_sram,
2235 &feature_break,2256 &feature_break,
2236 &feature_jmpcall,
2237 &feature_mul,
2238 &feature_movw,2257 &feature_movw,
2239 &feature_addsubiw,
2240 },2258 },
2241};2259};
22422260
...@@ -2244,16 +2262,16 @@ pub const cpu_atmega6450a = Cpu{...@@ -2244,16 +2262,16 @@ pub const cpu_atmega6450a = Cpu{
2244 .name = "atmega6450a",2262 .name = "atmega6450a",
2245 .llvm_name = "atmega6450a",2263 .llvm_name = "atmega6450a",
2246 .dependencies = &[_]*const Feature {2264 .dependencies = &[_]*const Feature {
2247 &feature_lpmx,2265 &feature_sram,
2266 &feature_jmpcall,
2267 &feature_mul,
2248 &feature_lpm,2268 &feature_lpm,
2269 &feature_lpmx,
2249 &feature_spm,2270 &feature_spm,
2271 &feature_addsubiw,
2250 &feature_ijmpcall,2272 &feature_ijmpcall,
2251 &feature_sram,
2252 &feature_break,2273 &feature_break,
2253 &feature_jmpcall,
2254 &feature_mul,
2255 &feature_movw,2274 &feature_movw,
2256 &feature_addsubiw,
2257 },2275 },
2258};2276};
22592277
...@@ -2261,16 +2279,16 @@ pub const cpu_atmega6450p = Cpu{...@@ -2261,16 +2279,16 @@ pub const cpu_atmega6450p = Cpu{
2261 .name = "atmega6450p",2279 .name = "atmega6450p",
2262 .llvm_name = "atmega6450p",2280 .llvm_name = "atmega6450p",
2263 .dependencies = &[_]*const Feature {2281 .dependencies = &[_]*const Feature {
2264 &feature_lpmx,2282 &feature_sram,
2283 &feature_jmpcall,
2284 &feature_mul,
2265 &feature_lpm,2285 &feature_lpm,
2286 &feature_lpmx,
2266 &feature_spm,2287 &feature_spm,
2288 &feature_addsubiw,
2267 &feature_ijmpcall,2289 &feature_ijmpcall,
2268 &feature_sram,
2269 &feature_break,2290 &feature_break,
2270 &feature_jmpcall,
2271 &feature_mul,
2272 &feature_movw,2291 &feature_movw,
2273 &feature_addsubiw,
2274 },2292 },
2275};2293};
22762294
...@@ -2278,16 +2296,16 @@ pub const cpu_atmega645a = Cpu{...@@ -2278,16 +2296,16 @@ pub const cpu_atmega645a = Cpu{
2278 .name = "atmega645a",2296 .name = "atmega645a",
2279 .llvm_name = "atmega645a",2297 .llvm_name = "atmega645a",
2280 .dependencies = &[_]*const Feature {2298 .dependencies = &[_]*const Feature {
2281 &feature_lpmx,2299 &feature_sram,
2300 &feature_jmpcall,
2301 &feature_mul,
2282 &feature_lpm,2302 &feature_lpm,
2303 &feature_lpmx,
2283 &feature_spm,2304 &feature_spm,
2305 &feature_addsubiw,
2284 &feature_ijmpcall,2306 &feature_ijmpcall,
2285 &feature_sram,
2286 &feature_break,2307 &feature_break,
2287 &feature_jmpcall,
2288 &feature_mul,
2289 &feature_movw,2308 &feature_movw,
2290 &feature_addsubiw,
2291 },2309 },
2292};2310};
22932311
...@@ -2295,16 +2313,16 @@ pub const cpu_atmega645p = Cpu{...@@ -2295,16 +2313,16 @@ pub const cpu_atmega645p = Cpu{
2295 .name = "atmega645p",2313 .name = "atmega645p",
2296 .llvm_name = "atmega645p",2314 .llvm_name = "atmega645p",
2297 .dependencies = &[_]*const Feature {2315 .dependencies = &[_]*const Feature {
2298 &feature_lpmx,2316 &feature_sram,
2317 &feature_jmpcall,
2318 &feature_mul,
2299 &feature_lpm,2319 &feature_lpm,
2320 &feature_lpmx,
2300 &feature_spm,2321 &feature_spm,
2322 &feature_addsubiw,
2301 &feature_ijmpcall,2323 &feature_ijmpcall,
2302 &feature_sram,
2303 &feature_break,2324 &feature_break,
2304 &feature_jmpcall,
2305 &feature_mul,
2306 &feature_movw,2325 &feature_movw,
2307 &feature_addsubiw,
2308 },2326 },
2309};2327};
23102328
...@@ -2312,16 +2330,16 @@ pub const cpu_atmega649 = Cpu{...@@ -2312,16 +2330,16 @@ pub const cpu_atmega649 = Cpu{
2312 .name = "atmega649",2330 .name = "atmega649",
2313 .llvm_name = "atmega649",2331 .llvm_name = "atmega649",
2314 .dependencies = &[_]*const Feature {2332 .dependencies = &[_]*const Feature {
2315 &feature_lpmx,2333 &feature_sram,
2334 &feature_jmpcall,
2335 &feature_mul,
2316 &feature_lpm,2336 &feature_lpm,
2337 &feature_lpmx,
2317 &feature_spm,2338 &feature_spm,
2339 &feature_addsubiw,
2318 &feature_ijmpcall,2340 &feature_ijmpcall,
2319 &feature_sram,
2320 &feature_break,2341 &feature_break,
2321 &feature_jmpcall,
2322 &feature_mul,
2323 &feature_movw,2342 &feature_movw,
2324 &feature_addsubiw,
2325 },2343 },
2326};2344};
23272345
...@@ -2329,16 +2347,16 @@ pub const cpu_atmega6490 = Cpu{...@@ -2329,16 +2347,16 @@ pub const cpu_atmega6490 = Cpu{
2329 .name = "atmega6490",2347 .name = "atmega6490",
2330 .llvm_name = "atmega6490",2348 .llvm_name = "atmega6490",
2331 .dependencies = &[_]*const Feature {2349 .dependencies = &[_]*const Feature {
2332 &feature_lpmx,2350 &feature_sram,
2351 &feature_jmpcall,
2352 &feature_mul,
2333 &feature_lpm,2353 &feature_lpm,
2354 &feature_lpmx,
2334 &feature_spm,2355 &feature_spm,
2356 &feature_addsubiw,
2335 &feature_ijmpcall,2357 &feature_ijmpcall,
2336 &feature_sram,
2337 &feature_break,2358 &feature_break,
2338 &feature_jmpcall,
2339 &feature_mul,
2340 &feature_movw,2359 &feature_movw,
2341 &feature_addsubiw,
2342 },2360 },
2343};2361};
23442362
...@@ -2346,16 +2364,16 @@ pub const cpu_atmega6490a = Cpu{...@@ -2346,16 +2364,16 @@ pub const cpu_atmega6490a = Cpu{
2346 .name = "atmega6490a",2364 .name = "atmega6490a",
2347 .llvm_name = "atmega6490a",2365 .llvm_name = "atmega6490a",
2348 .dependencies = &[_]*const Feature {2366 .dependencies = &[_]*const Feature {
2349 &feature_lpmx,2367 &feature_sram,
2368 &feature_jmpcall,
2369 &feature_mul,
2350 &feature_lpm,2370 &feature_lpm,
2371 &feature_lpmx,
2351 &feature_spm,2372 &feature_spm,
2373 &feature_addsubiw,
2352 &feature_ijmpcall,2374 &feature_ijmpcall,
2353 &feature_sram,
2354 &feature_break,2375 &feature_break,
2355 &feature_jmpcall,
2356 &feature_mul,
2357 &feature_movw,2376 &feature_movw,
2358 &feature_addsubiw,
2359 },2377 },
2360};2378};
23612379
...@@ -2363,16 +2381,16 @@ pub const cpu_atmega6490p = Cpu{...@@ -2363,16 +2381,16 @@ pub const cpu_atmega6490p = Cpu{
2363 .name = "atmega6490p",2381 .name = "atmega6490p",
2364 .llvm_name = "atmega6490p",2382 .llvm_name = "atmega6490p",
2365 .dependencies = &[_]*const Feature {2383 .dependencies = &[_]*const Feature {
2366 &feature_lpmx,2384 &feature_sram,
2385 &feature_jmpcall,
2386 &feature_mul,
2367 &feature_lpm,2387 &feature_lpm,
2388 &feature_lpmx,
2368 &feature_spm,2389 &feature_spm,
2390 &feature_addsubiw,
2369 &feature_ijmpcall,2391 &feature_ijmpcall,
2370 &feature_sram,
2371 &feature_break,2392 &feature_break,
2372 &feature_jmpcall,
2373 &feature_mul,
2374 &feature_movw,2393 &feature_movw,
2375 &feature_addsubiw,
2376 },2394 },
2377};2395};
23782396
...@@ -2380,16 +2398,16 @@ pub const cpu_atmega649a = Cpu{...@@ -2380,16 +2398,16 @@ pub const cpu_atmega649a = Cpu{
2380 .name = "atmega649a",2398 .name = "atmega649a",
2381 .llvm_name = "atmega649a",2399 .llvm_name = "atmega649a",
2382 .dependencies = &[_]*const Feature {2400 .dependencies = &[_]*const Feature {
2383 &feature_lpmx,2401 &feature_sram,
2402 &feature_jmpcall,
2403 &feature_mul,
2384 &feature_lpm,2404 &feature_lpm,
2405 &feature_lpmx,
2385 &feature_spm,2406 &feature_spm,
2407 &feature_addsubiw,
2386 &feature_ijmpcall,2408 &feature_ijmpcall,
2387 &feature_sram,
2388 &feature_break,2409 &feature_break,
2389 &feature_jmpcall,
2390 &feature_mul,
2391 &feature_movw,2410 &feature_movw,
2392 &feature_addsubiw,
2393 },2411 },
2394};2412};
23952413
...@@ -2397,16 +2415,16 @@ pub const cpu_atmega649p = Cpu{...@@ -2397,16 +2415,16 @@ pub const cpu_atmega649p = Cpu{
2397 .name = "atmega649p",2415 .name = "atmega649p",
2398 .llvm_name = "atmega649p",2416 .llvm_name = "atmega649p",
2399 .dependencies = &[_]*const Feature {2417 .dependencies = &[_]*const Feature {
2400 &feature_lpmx,2418 &feature_sram,
2419 &feature_jmpcall,
2420 &feature_mul,
2401 &feature_lpm,2421 &feature_lpm,
2422 &feature_lpmx,
2402 &feature_spm,2423 &feature_spm,
2424 &feature_addsubiw,
2403 &feature_ijmpcall,2425 &feature_ijmpcall,
2404 &feature_sram,
2405 &feature_break,2426 &feature_break,
2406 &feature_jmpcall,
2407 &feature_mul,
2408 &feature_movw,2427 &feature_movw,
2409 &feature_addsubiw,
2410 },2428 },
2411};2429};
24122430
...@@ -2414,16 +2432,16 @@ pub const cpu_atmega64a = Cpu{...@@ -2414,16 +2432,16 @@ pub const cpu_atmega64a = Cpu{
2414 .name = "atmega64a",2432 .name = "atmega64a",
2415 .llvm_name = "atmega64a",2433 .llvm_name = "atmega64a",
2416 .dependencies = &[_]*const Feature {2434 .dependencies = &[_]*const Feature {
2417 &feature_lpmx,2435 &feature_sram,
2436 &feature_jmpcall,
2437 &feature_mul,
2418 &feature_lpm,2438 &feature_lpm,
2439 &feature_lpmx,
2419 &feature_spm,2440 &feature_spm,
2441 &feature_addsubiw,
2420 &feature_ijmpcall,2442 &feature_ijmpcall,
2421 &feature_sram,
2422 &feature_break,2443 &feature_break,
2423 &feature_jmpcall,
2424 &feature_mul,
2425 &feature_movw,2444 &feature_movw,
2426 &feature_addsubiw,
2427 },2445 },
2428};2446};
24292447
...@@ -2431,16 +2449,16 @@ pub const cpu_atmega64c1 = Cpu{...@@ -2431,16 +2449,16 @@ pub const cpu_atmega64c1 = Cpu{
2431 .name = "atmega64c1",2449 .name = "atmega64c1",
2432 .llvm_name = "atmega64c1",2450 .llvm_name = "atmega64c1",
2433 .dependencies = &[_]*const Feature {2451 .dependencies = &[_]*const Feature {
2434 &feature_lpmx,
2435 &feature_lpm,
2436 &feature_spm,
2437 &feature_ijmpcall,
2438 &feature_sram,2452 &feature_sram,
2439 &feature_break,
2440 &feature_jmpcall,2453 &feature_jmpcall,
2441 &feature_mul,2454 &feature_mul,
2442 &feature_movw,2455 &feature_lpm,
2456 &feature_lpmx,
2457 &feature_spm,
2443 &feature_addsubiw,2458 &feature_addsubiw,
2459 &feature_ijmpcall,
2460 &feature_break,
2461 &feature_movw,
2444 },2462 },
2445};2463};
24462464
...@@ -2448,16 +2466,16 @@ pub const cpu_atmega64hve = Cpu{...@@ -2448,16 +2466,16 @@ pub const cpu_atmega64hve = Cpu{
2448 .name = "atmega64hve",2466 .name = "atmega64hve",
2449 .llvm_name = "atmega64hve",2467 .llvm_name = "atmega64hve",
2450 .dependencies = &[_]*const Feature {2468 .dependencies = &[_]*const Feature {
2451 &feature_lpmx,2469 &feature_sram,
2470 &feature_jmpcall,
2471 &feature_mul,
2452 &feature_lpm,2472 &feature_lpm,
2473 &feature_lpmx,
2453 &feature_spm,2474 &feature_spm,
2475 &feature_addsubiw,
2454 &feature_ijmpcall,2476 &feature_ijmpcall,
2455 &feature_sram,
2456 &feature_break,2477 &feature_break,
2457 &feature_jmpcall,
2458 &feature_mul,
2459 &feature_movw,2478 &feature_movw,
2460 &feature_addsubiw,
2461 },2479 },
2462};2480};
24632481
...@@ -2465,16 +2483,16 @@ pub const cpu_atmega64m1 = Cpu{...@@ -2465,16 +2483,16 @@ pub const cpu_atmega64m1 = Cpu{
2465 .name = "atmega64m1",2483 .name = "atmega64m1",
2466 .llvm_name = "atmega64m1",2484 .llvm_name = "atmega64m1",
2467 .dependencies = &[_]*const Feature {2485 .dependencies = &[_]*const Feature {
2468 &feature_lpmx,2486 &feature_sram,
2487 &feature_jmpcall,
2488 &feature_mul,
2469 &feature_lpm,2489 &feature_lpm,
2490 &feature_lpmx,
2470 &feature_spm,2491 &feature_spm,
2492 &feature_addsubiw,
2471 &feature_ijmpcall,2493 &feature_ijmpcall,
2472 &feature_sram,
2473 &feature_break,2494 &feature_break,
2474 &feature_jmpcall,
2475 &feature_mul,
2476 &feature_movw,2495 &feature_movw,
2477 &feature_addsubiw,
2478 },2496 },
2479};2497};
24802498
...@@ -2482,16 +2500,16 @@ pub const cpu_atmega64rfr2 = Cpu{...@@ -2482,16 +2500,16 @@ pub const cpu_atmega64rfr2 = Cpu{
2482 .name = "atmega64rfr2",2500 .name = "atmega64rfr2",
2483 .llvm_name = "atmega64rfr2",2501 .llvm_name = "atmega64rfr2",
2484 .dependencies = &[_]*const Feature {2502 .dependencies = &[_]*const Feature {
2485 &feature_lpmx,2503 &feature_sram,
2504 &feature_jmpcall,
2505 &feature_mul,
2486 &feature_lpm,2506 &feature_lpm,
2507 &feature_lpmx,
2487 &feature_spm,2508 &feature_spm,
2509 &feature_addsubiw,
2488 &feature_ijmpcall,2510 &feature_ijmpcall,
2489 &feature_sram,
2490 &feature_break,2511 &feature_break,
2491 &feature_jmpcall,
2492 &feature_mul,
2493 &feature_movw,2512 &feature_movw,
2494 &feature_addsubiw,
2495 },2513 },
2496};2514};
24972515
...@@ -2499,15 +2517,15 @@ pub const cpu_atmega8 = Cpu{...@@ -2499,15 +2517,15 @@ pub const cpu_atmega8 = Cpu{
2499 .name = "atmega8",2517 .name = "atmega8",
2500 .llvm_name = "atmega8",2518 .llvm_name = "atmega8",
2501 .dependencies = &[_]*const Feature {2519 .dependencies = &[_]*const Feature {
2502 &feature_lpmx,2520 &feature_sram,
2521 &feature_mul,
2503 &feature_lpm,2522 &feature_lpm,
2523 &feature_lpmx,
2504 &feature_spm,2524 &feature_spm,
2525 &feature_addsubiw,
2505 &feature_ijmpcall,2526 &feature_ijmpcall,
2506 &feature_sram,
2507 &feature_break,2527 &feature_break,
2508 &feature_mul,
2509 &feature_movw,2528 &feature_movw,
2510 &feature_addsubiw,
2511 },2529 },
2512};2530};
25132531
...@@ -2515,10 +2533,10 @@ pub const cpu_atmega8515 = Cpu{...@@ -2515,10 +2533,10 @@ pub const cpu_atmega8515 = Cpu{
2515 .name = "atmega8515",2533 .name = "atmega8515",
2516 .llvm_name = "atmega8515",2534 .llvm_name = "atmega8515",
2517 .dependencies = &[_]*const Feature {2535 .dependencies = &[_]*const Feature {
2518 &feature_lpm,
2519 &feature_ijmpcall,
2520 &feature_sram,2536 &feature_sram,
2537 &feature_lpm,
2521 &feature_addsubiw,2538 &feature_addsubiw,
2539 &feature_ijmpcall,
2522 &feature_lpmx,2540 &feature_lpmx,
2523 &feature_movw,2541 &feature_movw,
2524 &feature_mul,2542 &feature_mul,
...@@ -2530,10 +2548,10 @@ pub const cpu_atmega8535 = Cpu{...@@ -2530,10 +2548,10 @@ pub const cpu_atmega8535 = Cpu{
2530 .name = "atmega8535",2548 .name = "atmega8535",
2531 .llvm_name = "atmega8535",2549 .llvm_name = "atmega8535",
2532 .dependencies = &[_]*const Feature {2550 .dependencies = &[_]*const Feature {
2533 &feature_lpm,
2534 &feature_ijmpcall,
2535 &feature_sram,2551 &feature_sram,
2552 &feature_lpm,
2536 &feature_addsubiw,2553 &feature_addsubiw,
2554 &feature_ijmpcall,
2537 &feature_lpmx,2555 &feature_lpmx,
2538 &feature_movw,2556 &feature_movw,
2539 &feature_mul,2557 &feature_mul,
...@@ -2545,15 +2563,15 @@ pub const cpu_atmega88 = Cpu{...@@ -2545,15 +2563,15 @@ pub const cpu_atmega88 = Cpu{
2545 .name = "atmega88",2563 .name = "atmega88",
2546 .llvm_name = "atmega88",2564 .llvm_name = "atmega88",
2547 .dependencies = &[_]*const Feature {2565 .dependencies = &[_]*const Feature {
2548 &feature_lpmx,2566 &feature_sram,
2567 &feature_mul,
2549 &feature_lpm,2568 &feature_lpm,
2569 &feature_lpmx,
2550 &feature_spm,2570 &feature_spm,
2571 &feature_addsubiw,
2551 &feature_ijmpcall,2572 &feature_ijmpcall,
2552 &feature_sram,
2553 &feature_break,2573 &feature_break,
2554 &feature_mul,
2555 &feature_movw,2574 &feature_movw,
2556 &feature_addsubiw,
2557 },2575 },
2558};2576};
25592577
...@@ -2561,15 +2579,15 @@ pub const cpu_atmega88a = Cpu{...@@ -2561,15 +2579,15 @@ pub const cpu_atmega88a = Cpu{
2561 .name = "atmega88a",2579 .name = "atmega88a",
2562 .llvm_name = "atmega88a",2580 .llvm_name = "atmega88a",
2563 .dependencies = &[_]*const Feature {2581 .dependencies = &[_]*const Feature {
2564 &feature_lpmx,2582 &feature_sram,
2583 &feature_mul,
2565 &feature_lpm,2584 &feature_lpm,
2585 &feature_lpmx,
2566 &feature_spm,2586 &feature_spm,
2587 &feature_addsubiw,
2567 &feature_ijmpcall,2588 &feature_ijmpcall,
2568 &feature_sram,
2569 &feature_break,2589 &feature_break,
2570 &feature_mul,
2571 &feature_movw,2590 &feature_movw,
2572 &feature_addsubiw,
2573 },2591 },
2574};2592};
25752593
...@@ -2577,15 +2595,15 @@ pub const cpu_atmega88p = Cpu{...@@ -2577,15 +2595,15 @@ pub const cpu_atmega88p = Cpu{
2577 .name = "atmega88p",2595 .name = "atmega88p",
2578 .llvm_name = "atmega88p",2596 .llvm_name = "atmega88p",
2579 .dependencies = &[_]*const Feature {2597 .dependencies = &[_]*const Feature {
2580 &feature_lpmx,2598 &feature_sram,
2599 &feature_mul,
2581 &feature_lpm,2600 &feature_lpm,
2601 &feature_lpmx,
2582 &feature_spm,2602 &feature_spm,
2603 &feature_addsubiw,
2583 &feature_ijmpcall,2604 &feature_ijmpcall,
2584 &feature_sram,
2585 &feature_break,2605 &feature_break,
2586 &feature_mul,
2587 &feature_movw,2606 &feature_movw,
2588 &feature_addsubiw,
2589 },2607 },
2590};2608};
25912609
...@@ -2593,15 +2611,15 @@ pub const cpu_atmega88pa = Cpu{...@@ -2593,15 +2611,15 @@ pub const cpu_atmega88pa = Cpu{
2593 .name = "atmega88pa",2611 .name = "atmega88pa",
2594 .llvm_name = "atmega88pa",2612 .llvm_name = "atmega88pa",
2595 .dependencies = &[_]*const Feature {2613 .dependencies = &[_]*const Feature {
2596 &feature_lpmx,2614 &feature_sram,
2615 &feature_mul,
2597 &feature_lpm,2616 &feature_lpm,
2617 &feature_lpmx,
2598 &feature_spm,2618 &feature_spm,
2619 &feature_addsubiw,
2599 &feature_ijmpcall,2620 &feature_ijmpcall,
2600 &feature_sram,
2601 &feature_break,2621 &feature_break,
2602 &feature_mul,
2603 &feature_movw,2622 &feature_movw,
2604 &feature_addsubiw,
2605 },2623 },
2606};2624};
26072625
...@@ -2609,15 +2627,15 @@ pub const cpu_atmega8a = Cpu{...@@ -2609,15 +2627,15 @@ pub const cpu_atmega8a = Cpu{
2609 .name = "atmega8a",2627 .name = "atmega8a",
2610 .llvm_name = "atmega8a",2628 .llvm_name = "atmega8a",
2611 .dependencies = &[_]*const Feature {2629 .dependencies = &[_]*const Feature {
2612 &feature_lpmx,2630 &feature_sram,
2631 &feature_mul,
2613 &feature_lpm,2632 &feature_lpm,
2633 &feature_lpmx,
2614 &feature_spm,2634 &feature_spm,
2635 &feature_addsubiw,
2615 &feature_ijmpcall,2636 &feature_ijmpcall,
2616 &feature_sram,
2617 &feature_break,2637 &feature_break,
2618 &feature_mul,
2619 &feature_movw,2638 &feature_movw,
2620 &feature_addsubiw,
2621 },2639 },
2622};2640};
26232641
...@@ -2625,15 +2643,15 @@ pub const cpu_atmega8hva = Cpu{...@@ -2625,15 +2643,15 @@ pub const cpu_atmega8hva = Cpu{
2625 .name = "atmega8hva",2643 .name = "atmega8hva",
2626 .llvm_name = "atmega8hva",2644 .llvm_name = "atmega8hva",
2627 .dependencies = &[_]*const Feature {2645 .dependencies = &[_]*const Feature {
2628 &feature_lpmx,2646 &feature_sram,
2647 &feature_mul,
2629 &feature_lpm,2648 &feature_lpm,
2649 &feature_lpmx,
2630 &feature_spm,2650 &feature_spm,
2651 &feature_addsubiw,
2631 &feature_ijmpcall,2652 &feature_ijmpcall,
2632 &feature_sram,
2633 &feature_break,2653 &feature_break,
2634 &feature_mul,
2635 &feature_movw,2654 &feature_movw,
2636 &feature_addsubiw,
2637 },2655 },
2638};2656};
26392657
...@@ -2641,15 +2659,15 @@ pub const cpu_atmega8u2 = Cpu{...@@ -2641,15 +2659,15 @@ pub const cpu_atmega8u2 = Cpu{
2641 .name = "atmega8u2",2659 .name = "atmega8u2",
2642 .llvm_name = "atmega8u2",2660 .llvm_name = "atmega8u2",
2643 .dependencies = &[_]*const Feature {2661 .dependencies = &[_]*const Feature {
2644 &feature_lpmx,2662 &feature_sram,
2663 &feature_jmpcall,
2645 &feature_lpm,2664 &feature_lpm,
2665 &feature_lpmx,
2646 &feature_spm,2666 &feature_spm,
2667 &feature_addsubiw,
2647 &feature_ijmpcall,2668 &feature_ijmpcall,
2648 &feature_sram,
2649 &feature_break,2669 &feature_break,
2650 &feature_jmpcall,
2651 &feature_movw,2670 &feature_movw,
2652 &feature_addsubiw,
2653 },2671 },
2654};2672};
26552673
...@@ -2657,9 +2675,9 @@ pub const cpu_attiny10 = Cpu{...@@ -2657,9 +2675,9 @@ pub const cpu_attiny10 = Cpu{
2657 .name = "attiny10",2675 .name = "attiny10",
2658 .llvm_name = "attiny10",2676 .llvm_name = "attiny10",
2659 .dependencies = &[_]*const Feature {2677 .dependencies = &[_]*const Feature {
2660 &feature_break,
2661 &feature_tinyencoding,
2662 &feature_sram,2678 &feature_sram,
2679 &feature_tinyencoding,
2680 &feature_break,
2663 },2681 },
2664};2682};
26652683
...@@ -2667,9 +2685,9 @@ pub const cpu_attiny102 = Cpu{...@@ -2667,9 +2685,9 @@ pub const cpu_attiny102 = Cpu{
2667 .name = "attiny102",2685 .name = "attiny102",
2668 .llvm_name = "attiny102",2686 .llvm_name = "attiny102",
2669 .dependencies = &[_]*const Feature {2687 .dependencies = &[_]*const Feature {
2670 &feature_break,
2671 &feature_tinyencoding,
2672 &feature_sram,2688 &feature_sram,
2689 &feature_tinyencoding,
2690 &feature_break,
2673 },2691 },
2674};2692};
26752693
...@@ -2677,9 +2695,9 @@ pub const cpu_attiny104 = Cpu{...@@ -2677,9 +2695,9 @@ pub const cpu_attiny104 = Cpu{
2677 .name = "attiny104",2695 .name = "attiny104",
2678 .llvm_name = "attiny104",2696 .llvm_name = "attiny104",
2679 .dependencies = &[_]*const Feature {2697 .dependencies = &[_]*const Feature {
2680 &feature_break,
2681 &feature_tinyencoding,
2682 &feature_sram,2698 &feature_sram,
2699 &feature_tinyencoding,
2700 &feature_break,
2683 },2701 },
2684};2702};
26852703
...@@ -2703,14 +2721,14 @@ pub const cpu_attiny13 = Cpu{...@@ -2703,14 +2721,14 @@ pub const cpu_attiny13 = Cpu{
2703 .name = "attiny13",2721 .name = "attiny13",
2704 .llvm_name = "attiny13",2722 .llvm_name = "attiny13",
2705 .dependencies = &[_]*const Feature {2723 .dependencies = &[_]*const Feature {
2706 &feature_lpmx,2724 &feature_sram,
2707 &feature_lpm,2725 &feature_lpm,
2726 &feature_lpmx,
2708 &feature_spm,2727 &feature_spm,
2728 &feature_addsubiw,
2709 &feature_ijmpcall,2729 &feature_ijmpcall,
2710 &feature_sram,
2711 &feature_break,2730 &feature_break,
2712 &feature_movw,2731 &feature_movw,
2713 &feature_addsubiw,
2714 },2732 },
2715};2733};
27162734
...@@ -2718,14 +2736,14 @@ pub const cpu_attiny13a = Cpu{...@@ -2718,14 +2736,14 @@ pub const cpu_attiny13a = Cpu{
2718 .name = "attiny13a",2736 .name = "attiny13a",
2719 .llvm_name = "attiny13a",2737 .llvm_name = "attiny13a",
2720 .dependencies = &[_]*const Feature {2738 .dependencies = &[_]*const Feature {
2721 &feature_lpmx,2739 &feature_sram,
2722 &feature_lpm,2740 &feature_lpm,
2741 &feature_lpmx,
2723 &feature_spm,2742 &feature_spm,
2743 &feature_addsubiw,
2724 &feature_ijmpcall,2744 &feature_ijmpcall,
2725 &feature_sram,
2726 &feature_break,2745 &feature_break,
2727 &feature_movw,2746 &feature_movw,
2728 &feature_addsubiw,
2729 },2747 },
2730};2748};
27312749
...@@ -2741,15 +2759,15 @@ pub const cpu_attiny1634 = Cpu{...@@ -2741,15 +2759,15 @@ pub const cpu_attiny1634 = Cpu{
2741 .name = "attiny1634",2759 .name = "attiny1634",
2742 .llvm_name = "attiny1634",2760 .llvm_name = "attiny1634",
2743 .dependencies = &[_]*const Feature {2761 .dependencies = &[_]*const Feature {
2744 &feature_lpmx,2762 &feature_sram,
2763 &feature_jmpcall,
2745 &feature_lpm,2764 &feature_lpm,
2765 &feature_lpmx,
2746 &feature_spm,2766 &feature_spm,
2767 &feature_addsubiw,
2747 &feature_ijmpcall,2768 &feature_ijmpcall,
2748 &feature_sram,
2749 &feature_break,2769 &feature_break,
2750 &feature_jmpcall,
2751 &feature_movw,2770 &feature_movw,
2752 &feature_addsubiw,
2753 },2771 },
2754};2772};
27552773
...@@ -2757,15 +2775,15 @@ pub const cpu_attiny167 = Cpu{...@@ -2757,15 +2775,15 @@ pub const cpu_attiny167 = Cpu{
2757 .name = "attiny167",2775 .name = "attiny167",
2758 .llvm_name = "attiny167",2776 .llvm_name = "attiny167",
2759 .dependencies = &[_]*const Feature {2777 .dependencies = &[_]*const Feature {
2760 &feature_lpmx,2778 &feature_sram,
2779 &feature_jmpcall,
2761 &feature_lpm,2780 &feature_lpm,
2781 &feature_lpmx,
2762 &feature_spm,2782 &feature_spm,
2783 &feature_addsubiw,
2763 &feature_ijmpcall,2784 &feature_ijmpcall,
2764 &feature_sram,
2765 &feature_break,2785 &feature_break,
2766 &feature_jmpcall,
2767 &feature_movw,2786 &feature_movw,
2768 &feature_addsubiw,
2769 },2787 },
2770};2788};
27712789
...@@ -2773,9 +2791,9 @@ pub const cpu_attiny20 = Cpu{...@@ -2773,9 +2791,9 @@ pub const cpu_attiny20 = Cpu{
2773 .name = "attiny20",2791 .name = "attiny20",
2774 .llvm_name = "attiny20",2792 .llvm_name = "attiny20",
2775 .dependencies = &[_]*const Feature {2793 .dependencies = &[_]*const Feature {
2776 &feature_break,
2777 &feature_tinyencoding,
2778 &feature_sram,2794 &feature_sram,
2795 &feature_tinyencoding,
2796 &feature_break,
2779 },2797 },
2780};2798};
27812799
...@@ -2783,10 +2801,10 @@ pub const cpu_attiny22 = Cpu{...@@ -2783,10 +2801,10 @@ pub const cpu_attiny22 = Cpu{
2783 .name = "attiny22",2801 .name = "attiny22",
2784 .llvm_name = "attiny22",2802 .llvm_name = "attiny22",
2785 .dependencies = &[_]*const Feature {2803 .dependencies = &[_]*const Feature {
2786 &feature_lpm,
2787 &feature_ijmpcall,
2788 &feature_sram,2804 &feature_sram,
2805 &feature_lpm,
2789 &feature_addsubiw,2806 &feature_addsubiw,
2807 &feature_ijmpcall,
2790 },2808 },
2791};2809};
27922810
...@@ -2794,14 +2812,14 @@ pub const cpu_attiny2313 = Cpu{...@@ -2794,14 +2812,14 @@ pub const cpu_attiny2313 = Cpu{
2794 .name = "attiny2313",2812 .name = "attiny2313",
2795 .llvm_name = "attiny2313",2813 .llvm_name = "attiny2313",
2796 .dependencies = &[_]*const Feature {2814 .dependencies = &[_]*const Feature {
2797 &feature_lpmx,2815 &feature_sram,
2798 &feature_lpm,2816 &feature_lpm,
2817 &feature_lpmx,
2799 &feature_spm,2818 &feature_spm,
2819 &feature_addsubiw,
2800 &feature_ijmpcall,2820 &feature_ijmpcall,
2801 &feature_sram,
2802 &feature_break,2821 &feature_break,
2803 &feature_movw,2822 &feature_movw,
2804 &feature_addsubiw,
2805 },2823 },
2806};2824};
28072825
...@@ -2809,14 +2827,14 @@ pub const cpu_attiny2313a = Cpu{...@@ -2809,14 +2827,14 @@ pub const cpu_attiny2313a = Cpu{
2809 .name = "attiny2313a",2827 .name = "attiny2313a",
2810 .llvm_name = "attiny2313a",2828 .llvm_name = "attiny2313a",
2811 .dependencies = &[_]*const Feature {2829 .dependencies = &[_]*const Feature {
2812 &feature_lpmx,2830 &feature_sram,
2813 &feature_lpm,2831 &feature_lpm,
2832 &feature_lpmx,
2814 &feature_spm,2833 &feature_spm,
2834 &feature_addsubiw,
2815 &feature_ijmpcall,2835 &feature_ijmpcall,
2816 &feature_sram,
2817 &feature_break,2836 &feature_break,
2818 &feature_movw,2837 &feature_movw,
2819 &feature_addsubiw,
2820 },2838 },
2821};2839};
28222840
...@@ -2824,14 +2842,14 @@ pub const cpu_attiny24 = Cpu{...@@ -2824,14 +2842,14 @@ pub const cpu_attiny24 = Cpu{
2824 .name = "attiny24",2842 .name = "attiny24",
2825 .llvm_name = "attiny24",2843 .llvm_name = "attiny24",
2826 .dependencies = &[_]*const Feature {2844 .dependencies = &[_]*const Feature {
2827 &feature_lpmx,2845 &feature_sram,
2828 &feature_lpm,2846 &feature_lpm,
2847 &feature_lpmx,
2829 &feature_spm,2848 &feature_spm,
2849 &feature_addsubiw,
2830 &feature_ijmpcall,2850 &feature_ijmpcall,
2831 &feature_sram,
2832 &feature_break,2851 &feature_break,
2833 &feature_movw,2852 &feature_movw,
2834 &feature_addsubiw,
2835 },2853 },
2836};2854};
28372855
...@@ -2839,14 +2857,14 @@ pub const cpu_attiny24a = Cpu{...@@ -2839,14 +2857,14 @@ pub const cpu_attiny24a = Cpu{
2839 .name = "attiny24a",2857 .name = "attiny24a",
2840 .llvm_name = "attiny24a",2858 .llvm_name = "attiny24a",
2841 .dependencies = &[_]*const Feature {2859 .dependencies = &[_]*const Feature {
2842 &feature_lpmx,2860 &feature_sram,
2843 &feature_lpm,2861 &feature_lpm,
2862 &feature_lpmx,
2844 &feature_spm,2863 &feature_spm,
2864 &feature_addsubiw,
2845 &feature_ijmpcall,2865 &feature_ijmpcall,
2846 &feature_sram,
2847 &feature_break,2866 &feature_break,
2848 &feature_movw,2867 &feature_movw,
2849 &feature_addsubiw,
2850 },2868 },
2851};2869};
28522870
...@@ -2854,14 +2872,14 @@ pub const cpu_attiny25 = Cpu{...@@ -2854,14 +2872,14 @@ pub const cpu_attiny25 = Cpu{
2854 .name = "attiny25",2872 .name = "attiny25",
2855 .llvm_name = "attiny25",2873 .llvm_name = "attiny25",
2856 .dependencies = &[_]*const Feature {2874 .dependencies = &[_]*const Feature {
2857 &feature_lpmx,2875 &feature_sram,
2858 &feature_lpm,2876 &feature_lpm,
2877 &feature_lpmx,
2859 &feature_spm,2878 &feature_spm,
2879 &feature_addsubiw,
2860 &feature_ijmpcall,2880 &feature_ijmpcall,
2861 &feature_sram,
2862 &feature_break,2881 &feature_break,
2863 &feature_movw,2882 &feature_movw,
2864 &feature_addsubiw,
2865 },2883 },
2866};2884};
28672885
...@@ -2869,10 +2887,10 @@ pub const cpu_attiny26 = Cpu{...@@ -2869,10 +2887,10 @@ pub const cpu_attiny26 = Cpu{
2869 .name = "attiny26",2887 .name = "attiny26",
2870 .llvm_name = "attiny26",2888 .llvm_name = "attiny26",
2871 .dependencies = &[_]*const Feature {2889 .dependencies = &[_]*const Feature {
2872 &feature_lpm,
2873 &feature_ijmpcall,
2874 &feature_sram,2890 &feature_sram,
2891 &feature_lpm,
2875 &feature_addsubiw,2892 &feature_addsubiw,
2893 &feature_ijmpcall,
2876 &feature_lpmx,2894 &feature_lpmx,
2877 },2895 },
2878};2896};
...@@ -2881,14 +2899,14 @@ pub const cpu_attiny261 = Cpu{...@@ -2881,14 +2899,14 @@ pub const cpu_attiny261 = Cpu{
2881 .name = "attiny261",2899 .name = "attiny261",
2882 .llvm_name = "attiny261",2900 .llvm_name = "attiny261",
2883 .dependencies = &[_]*const Feature {2901 .dependencies = &[_]*const Feature {
2884 &feature_lpmx,2902 &feature_sram,
2885 &feature_lpm,2903 &feature_lpm,
2904 &feature_lpmx,
2886 &feature_spm,2905 &feature_spm,
2906 &feature_addsubiw,
2887 &feature_ijmpcall,2907 &feature_ijmpcall,
2888 &feature_sram,
2889 &feature_break,2908 &feature_break,
2890 &feature_movw,2909 &feature_movw,
2891 &feature_addsubiw,
2892 },2910 },
2893};2911};
28942912
...@@ -2896,14 +2914,14 @@ pub const cpu_attiny261a = Cpu{...@@ -2896,14 +2914,14 @@ pub const cpu_attiny261a = Cpu{
2896 .name = "attiny261a",2914 .name = "attiny261a",
2897 .llvm_name = "attiny261a",2915 .llvm_name = "attiny261a",
2898 .dependencies = &[_]*const Feature {2916 .dependencies = &[_]*const Feature {
2899 &feature_lpmx,2917 &feature_sram,
2900 &feature_lpm,2918 &feature_lpm,
2919 &feature_lpmx,
2901 &feature_spm,2920 &feature_spm,
2921 &feature_addsubiw,
2902 &feature_ijmpcall,2922 &feature_ijmpcall,
2903 &feature_sram,
2904 &feature_break,2923 &feature_break,
2905 &feature_movw,2924 &feature_movw,
2906 &feature_addsubiw,
2907 },2925 },
2908};2926};
29092927
...@@ -2919,9 +2937,9 @@ pub const cpu_attiny4 = Cpu{...@@ -2919,9 +2937,9 @@ pub const cpu_attiny4 = Cpu{
2919 .name = "attiny4",2937 .name = "attiny4",
2920 .llvm_name = "attiny4",2938 .llvm_name = "attiny4",
2921 .dependencies = &[_]*const Feature {2939 .dependencies = &[_]*const Feature {
2922 &feature_break,
2923 &feature_tinyencoding,
2924 &feature_sram,2940 &feature_sram,
2941 &feature_tinyencoding,
2942 &feature_break,
2925 },2943 },
2926};2944};
29272945
...@@ -2929,9 +2947,9 @@ pub const cpu_attiny40 = Cpu{...@@ -2929,9 +2947,9 @@ pub const cpu_attiny40 = Cpu{
2929 .name = "attiny40",2947 .name = "attiny40",
2930 .llvm_name = "attiny40",2948 .llvm_name = "attiny40",
2931 .dependencies = &[_]*const Feature {2949 .dependencies = &[_]*const Feature {
2932 &feature_break,
2933 &feature_tinyencoding,
2934 &feature_sram,2950 &feature_sram,
2951 &feature_tinyencoding,
2952 &feature_break,
2935 },2953 },
2936};2954};
29372955
...@@ -2939,14 +2957,14 @@ pub const cpu_attiny4313 = Cpu{...@@ -2939,14 +2957,14 @@ pub const cpu_attiny4313 = Cpu{
2939 .name = "attiny4313",2957 .name = "attiny4313",
2940 .llvm_name = "attiny4313",2958 .llvm_name = "attiny4313",
2941 .dependencies = &[_]*const Feature {2959 .dependencies = &[_]*const Feature {
2942 &feature_lpmx,2960 &feature_sram,
2943 &feature_lpm,2961 &feature_lpm,
2962 &feature_lpmx,
2944 &feature_spm,2963 &feature_spm,
2964 &feature_addsubiw,
2945 &feature_ijmpcall,2965 &feature_ijmpcall,
2946 &feature_sram,
2947 &feature_break,2966 &feature_break,
2948 &feature_movw,2967 &feature_movw,
2949 &feature_addsubiw,
2950 },2968 },
2951};2969};
29522970
...@@ -2954,14 +2972,14 @@ pub const cpu_attiny43u = Cpu{...@@ -2954,14 +2972,14 @@ pub const cpu_attiny43u = Cpu{
2954 .name = "attiny43u",2972 .name = "attiny43u",
2955 .llvm_name = "attiny43u",2973 .llvm_name = "attiny43u",
2956 .dependencies = &[_]*const Feature {2974 .dependencies = &[_]*const Feature {
2957 &feature_lpmx,2975 &feature_sram,
2958 &feature_lpm,2976 &feature_lpm,
2977 &feature_lpmx,
2959 &feature_spm,2978 &feature_spm,
2979 &feature_addsubiw,
2960 &feature_ijmpcall,2980 &feature_ijmpcall,
2961 &feature_sram,
2962 &feature_break,2981 &feature_break,
2963 &feature_movw,2982 &feature_movw,
2964 &feature_addsubiw,
2965 },2983 },
2966};2984};
29672985
...@@ -2969,14 +2987,14 @@ pub const cpu_attiny44 = Cpu{...@@ -2969,14 +2987,14 @@ pub const cpu_attiny44 = Cpu{
2969 .name = "attiny44",2987 .name = "attiny44",
2970 .llvm_name = "attiny44",2988 .llvm_name = "attiny44",
2971 .dependencies = &[_]*const Feature {2989 .dependencies = &[_]*const Feature {
2972 &feature_lpmx,2990 &feature_sram,
2973 &feature_lpm,2991 &feature_lpm,
2992 &feature_lpmx,
2974 &feature_spm,2993 &feature_spm,
2994 &feature_addsubiw,
2975 &feature_ijmpcall,2995 &feature_ijmpcall,
2976 &feature_sram,
2977 &feature_break,2996 &feature_break,
2978 &feature_movw,2997 &feature_movw,
2979 &feature_addsubiw,
2980 },2998 },
2981};2999};
29823000
...@@ -2984,14 +3002,14 @@ pub const cpu_attiny44a = Cpu{...@@ -2984,14 +3002,14 @@ pub const cpu_attiny44a = Cpu{
2984 .name = "attiny44a",3002 .name = "attiny44a",
2985 .llvm_name = "attiny44a",3003 .llvm_name = "attiny44a",
2986 .dependencies = &[_]*const Feature {3004 .dependencies = &[_]*const Feature {
2987 &feature_lpmx,3005 &feature_sram,
2988 &feature_lpm,3006 &feature_lpm,
3007 &feature_lpmx,
2989 &feature_spm,3008 &feature_spm,
3009 &feature_addsubiw,
2990 &feature_ijmpcall,3010 &feature_ijmpcall,
2991 &feature_sram,
2992 &feature_break,3011 &feature_break,
2993 &feature_movw,3012 &feature_movw,
2994 &feature_addsubiw,
2995 },3013 },
2996};3014};
29973015
...@@ -2999,14 +3017,14 @@ pub const cpu_attiny45 = Cpu{...@@ -2999,14 +3017,14 @@ pub const cpu_attiny45 = Cpu{
2999 .name = "attiny45",3017 .name = "attiny45",
3000 .llvm_name = "attiny45",3018 .llvm_name = "attiny45",
3001 .dependencies = &[_]*const Feature {3019 .dependencies = &[_]*const Feature {
3002 &feature_lpmx,3020 &feature_sram,
3003 &feature_lpm,3021 &feature_lpm,
3022 &feature_lpmx,
3004 &feature_spm,3023 &feature_spm,
3024 &feature_addsubiw,
3005 &feature_ijmpcall,3025 &feature_ijmpcall,
3006 &feature_sram,
3007 &feature_break,3026 &feature_break,
3008 &feature_movw,3027 &feature_movw,
3009 &feature_addsubiw,
3010 },3028 },
3011};3029};
30123030
...@@ -3014,14 +3032,14 @@ pub const cpu_attiny461 = Cpu{...@@ -3014,14 +3032,14 @@ pub const cpu_attiny461 = Cpu{
3014 .name = "attiny461",3032 .name = "attiny461",
3015 .llvm_name = "attiny461",3033 .llvm_name = "attiny461",
3016 .dependencies = &[_]*const Feature {3034 .dependencies = &[_]*const Feature {
3017 &feature_lpmx,3035 &feature_sram,
3018 &feature_lpm,3036 &feature_lpm,
3037 &feature_lpmx,
3019 &feature_spm,3038 &feature_spm,
3039 &feature_addsubiw,
3020 &feature_ijmpcall,3040 &feature_ijmpcall,
3021 &feature_sram,
3022 &feature_break,3041 &feature_break,
3023 &feature_movw,3042 &feature_movw,
3024 &feature_addsubiw,
3025 },3043 },
3026};3044};
30273045
...@@ -3029,14 +3047,14 @@ pub const cpu_attiny461a = Cpu{...@@ -3029,14 +3047,14 @@ pub const cpu_attiny461a = Cpu{
3029 .name = "attiny461a",3047 .name = "attiny461a",
3030 .llvm_name = "attiny461a",3048 .llvm_name = "attiny461a",
3031 .dependencies = &[_]*const Feature {3049 .dependencies = &[_]*const Feature {
3032 &feature_lpmx,3050 &feature_sram,
3033 &feature_lpm,3051 &feature_lpm,
3052 &feature_lpmx,
3034 &feature_spm,3053 &feature_spm,
3054 &feature_addsubiw,
3035 &feature_ijmpcall,3055 &feature_ijmpcall,
3036 &feature_sram,
3037 &feature_break,3056 &feature_break,
3038 &feature_movw,3057 &feature_movw,
3039 &feature_addsubiw,
3040 },3058 },
3041};3059};
30423060
...@@ -3044,14 +3062,14 @@ pub const cpu_attiny48 = Cpu{...@@ -3044,14 +3062,14 @@ pub const cpu_attiny48 = Cpu{
3044 .name = "attiny48",3062 .name = "attiny48",
3045 .llvm_name = "attiny48",3063 .llvm_name = "attiny48",
3046 .dependencies = &[_]*const Feature {3064 .dependencies = &[_]*const Feature {
3047 &feature_lpmx,3065 &feature_sram,
3048 &feature_lpm,3066 &feature_lpm,
3067 &feature_lpmx,
3049 &feature_spm,3068 &feature_spm,
3069 &feature_addsubiw,
3050 &feature_ijmpcall,3070 &feature_ijmpcall,
3051 &feature_sram,
3052 &feature_break,3071 &feature_break,
3053 &feature_movw,3072 &feature_movw,
3054 &feature_addsubiw,
3055 },3073 },
3056};3074};
30573075
...@@ -3059,9 +3077,9 @@ pub const cpu_attiny5 = Cpu{...@@ -3059,9 +3077,9 @@ pub const cpu_attiny5 = Cpu{
3059 .name = "attiny5",3077 .name = "attiny5",
3060 .llvm_name = "attiny5",3078 .llvm_name = "attiny5",
3061 .dependencies = &[_]*const Feature {3079 .dependencies = &[_]*const Feature {
3062 &feature_break,
3063 &feature_tinyencoding,
3064 &feature_sram,3080 &feature_sram,
3081 &feature_tinyencoding,
3082 &feature_break,
3065 },3083 },
3066};3084};
30673085
...@@ -3069,14 +3087,14 @@ pub const cpu_attiny828 = Cpu{...@@ -3069,14 +3087,14 @@ pub const cpu_attiny828 = Cpu{
3069 .name = "attiny828",3087 .name = "attiny828",
3070 .llvm_name = "attiny828",3088 .llvm_name = "attiny828",
3071 .dependencies = &[_]*const Feature {3089 .dependencies = &[_]*const Feature {
3072 &feature_lpmx,3090 &feature_sram,
3073 &feature_lpm,3091 &feature_lpm,
3092 &feature_lpmx,
3074 &feature_spm,3093 &feature_spm,
3094 &feature_addsubiw,
3075 &feature_ijmpcall,3095 &feature_ijmpcall,
3076 &feature_sram,
3077 &feature_break,3096 &feature_break,
3078 &feature_movw,3097 &feature_movw,
3079 &feature_addsubiw,
3080 },3098 },
3081};3099};
30823100
...@@ -3084,14 +3102,14 @@ pub const cpu_attiny84 = Cpu{...@@ -3084,14 +3102,14 @@ pub const cpu_attiny84 = Cpu{
3084 .name = "attiny84",3102 .name = "attiny84",
3085 .llvm_name = "attiny84",3103 .llvm_name = "attiny84",
3086 .dependencies = &[_]*const Feature {3104 .dependencies = &[_]*const Feature {
3087 &feature_lpmx,3105 &feature_sram,
3088 &feature_lpm,3106 &feature_lpm,
3107 &feature_lpmx,
3089 &feature_spm,3108 &feature_spm,
3109 &feature_addsubiw,
3090 &feature_ijmpcall,3110 &feature_ijmpcall,
3091 &feature_sram,
3092 &feature_break,3111 &feature_break,
3093 &feature_movw,3112 &feature_movw,
3094 &feature_addsubiw,
3095 },3113 },
3096};3114};
30973115
...@@ -3099,14 +3117,14 @@ pub const cpu_attiny84a = Cpu{...@@ -3099,14 +3117,14 @@ pub const cpu_attiny84a = Cpu{
3099 .name = "attiny84a",3117 .name = "attiny84a",
3100 .llvm_name = "attiny84a",3118 .llvm_name = "attiny84a",
3101 .dependencies = &[_]*const Feature {3119 .dependencies = &[_]*const Feature {
3102 &feature_lpmx,3120 &feature_sram,
3103 &feature_lpm,3121 &feature_lpm,
3122 &feature_lpmx,
3104 &feature_spm,3123 &feature_spm,
3124 &feature_addsubiw,
3105 &feature_ijmpcall,3125 &feature_ijmpcall,
3106 &feature_sram,
3107 &feature_break,3126 &feature_break,
3108 &feature_movw,3127 &feature_movw,
3109 &feature_addsubiw,
3110 },3128 },
3111};3129};
31123130
...@@ -3114,14 +3132,14 @@ pub const cpu_attiny85 = Cpu{...@@ -3114,14 +3132,14 @@ pub const cpu_attiny85 = Cpu{
3114 .name = "attiny85",3132 .name = "attiny85",
3115 .llvm_name = "attiny85",3133 .llvm_name = "attiny85",
3116 .dependencies = &[_]*const Feature {3134 .dependencies = &[_]*const Feature {
3117 &feature_lpmx,3135 &feature_sram,
3118 &feature_lpm,3136 &feature_lpm,
3137 &feature_lpmx,
3119 &feature_spm,3138 &feature_spm,
3139 &feature_addsubiw,
3120 &feature_ijmpcall,3140 &feature_ijmpcall,
3121 &feature_sram,
3122 &feature_break,3141 &feature_break,
3123 &feature_movw,3142 &feature_movw,
3124 &feature_addsubiw,
3125 },3143 },
3126};3144};
31273145
...@@ -3129,14 +3147,14 @@ pub const cpu_attiny861 = Cpu{...@@ -3129,14 +3147,14 @@ pub const cpu_attiny861 = Cpu{
3129 .name = "attiny861",3147 .name = "attiny861",
3130 .llvm_name = "attiny861",3148 .llvm_name = "attiny861",
3131 .dependencies = &[_]*const Feature {3149 .dependencies = &[_]*const Feature {
3132 &feature_lpmx,3150 &feature_sram,
3133 &feature_lpm,3151 &feature_lpm,
3152 &feature_lpmx,
3134 &feature_spm,3153 &feature_spm,
3154 &feature_addsubiw,
3135 &feature_ijmpcall,3155 &feature_ijmpcall,
3136 &feature_sram,
3137 &feature_break,3156 &feature_break,
3138 &feature_movw,3157 &feature_movw,
3139 &feature_addsubiw,
3140 },3158 },
3141};3159};
31423160
...@@ -3144,14 +3162,14 @@ pub const cpu_attiny861a = Cpu{...@@ -3144,14 +3162,14 @@ pub const cpu_attiny861a = Cpu{
3144 .name = "attiny861a",3162 .name = "attiny861a",
3145 .llvm_name = "attiny861a",3163 .llvm_name = "attiny861a",
3146 .dependencies = &[_]*const Feature {3164 .dependencies = &[_]*const Feature {
3147 &feature_lpmx,3165 &feature_sram,
3148 &feature_lpm,3166 &feature_lpm,
3167 &feature_lpmx,
3149 &feature_spm,3168 &feature_spm,
3169 &feature_addsubiw,
3150 &feature_ijmpcall,3170 &feature_ijmpcall,
3151 &feature_sram,
3152 &feature_break,3171 &feature_break,
3153 &feature_movw,3172 &feature_movw,
3154 &feature_addsubiw,
3155 },3173 },
3156};3174};
31573175
...@@ -3159,14 +3177,14 @@ pub const cpu_attiny87 = Cpu{...@@ -3159,14 +3177,14 @@ pub const cpu_attiny87 = Cpu{
3159 .name = "attiny87",3177 .name = "attiny87",
3160 .llvm_name = "attiny87",3178 .llvm_name = "attiny87",
3161 .dependencies = &[_]*const Feature {3179 .dependencies = &[_]*const Feature {
3162 &feature_lpmx,3180 &feature_sram,
3163 &feature_lpm,3181 &feature_lpm,
3182 &feature_lpmx,
3164 &feature_spm,3183 &feature_spm,
3184 &feature_addsubiw,
3165 &feature_ijmpcall,3185 &feature_ijmpcall,
3166 &feature_sram,
3167 &feature_break,3186 &feature_break,
3168 &feature_movw,3187 &feature_movw,
3169 &feature_addsubiw,
3170 },3188 },
3171};3189};
31723190
...@@ -3174,14 +3192,14 @@ pub const cpu_attiny88 = Cpu{...@@ -3174,14 +3192,14 @@ pub const cpu_attiny88 = Cpu{
3174 .name = "attiny88",3192 .name = "attiny88",
3175 .llvm_name = "attiny88",3193 .llvm_name = "attiny88",
3176 .dependencies = &[_]*const Feature {3194 .dependencies = &[_]*const Feature {
3177 &feature_lpmx,3195 &feature_sram,
3178 &feature_lpm,3196 &feature_lpm,
3197 &feature_lpmx,
3179 &feature_spm,3198 &feature_spm,
3199 &feature_addsubiw,
3180 &feature_ijmpcall,3200 &feature_ijmpcall,
3181 &feature_sram,
3182 &feature_break,3201 &feature_break,
3183 &feature_movw,3202 &feature_movw,
3184 &feature_addsubiw,
3185 },3203 },
3186};3204};
31873205
...@@ -3189,9 +3207,9 @@ pub const cpu_attiny9 = Cpu{...@@ -3189,9 +3207,9 @@ pub const cpu_attiny9 = Cpu{
3189 .name = "attiny9",3207 .name = "attiny9",
3190 .llvm_name = "attiny9",3208 .llvm_name = "attiny9",
3191 .dependencies = &[_]*const Feature {3209 .dependencies = &[_]*const Feature {
3192 &feature_break,
3193 &feature_tinyencoding,
3194 &feature_sram,3210 &feature_sram,
3211 &feature_tinyencoding,
3212 &feature_break,
3195 },3213 },
3196};3214};
31973215
...@@ -3199,21 +3217,21 @@ pub const cpu_atxmega128a1 = Cpu{...@@ -3199,21 +3217,21 @@ pub const cpu_atxmega128a1 = Cpu{
3199 .name = "atxmega128a1",3217 .name = "atxmega128a1",
3200 .llvm_name = "atxmega128a1",3218 .llvm_name = "atxmega128a1",
3201 .dependencies = &[_]*const Feature {3219 .dependencies = &[_]*const Feature {
3202 &feature_lpmx,3220 &feature_des,
3221 &feature_sram,
3222 &feature_eijmpcall,
3223 &feature_jmpcall,
3224 &feature_mul,
3203 &feature_elpm,3225 &feature_elpm,
3226 &feature_spmx,
3204 &feature_lpm,3227 &feature_lpm,
3228 &feature_lpmx,
3205 &feature_spm,3229 &feature_spm,
3230 &feature_addsubiw,
3206 &feature_ijmpcall,3231 &feature_ijmpcall,
3207 &feature_movw,
3208 &feature_sram,
3209 &feature_spmx,
3210 &feature_break,
3211 &feature_jmpcall,
3212 &feature_des,
3213 &feature_mul,
3214 &feature_eijmpcall,
3215 &feature_elpmx,3232 &feature_elpmx,
3216 &feature_addsubiw,3233 &feature_break,
3234 &feature_movw,
3217 },3235 },
3218};3236};
32193237
...@@ -3221,22 +3239,22 @@ pub const cpu_atxmega128a1u = Cpu{...@@ -3221,22 +3239,22 @@ pub const cpu_atxmega128a1u = Cpu{
3221 .name = "atxmega128a1u",3239 .name = "atxmega128a1u",
3222 .llvm_name = "atxmega128a1u",3240 .llvm_name = "atxmega128a1u",
3223 .dependencies = &[_]*const Feature {3241 .dependencies = &[_]*const Feature {
3224 &feature_lpmx,3242 &feature_des,
3225 &feature_elpm,
3226 &feature_spm,
3227 &feature_lpm,
3228 &feature_ijmpcall,
3229 &feature_elpmx,
3230 &feature_sram,3243 &feature_sram,
3231 &feature_spmx,3244 &feature_movw,
3232 &feature_break,
3233 &feature_jmpcall,3245 &feature_jmpcall,
3234 &feature_des,
3235 &feature_rmw,
3236 &feature_mul,3246 &feature_mul,
3237 &feature_eijmpcall,3247 &feature_elpm,
3238 &feature_movw,3248 &feature_spmx,
3249 &feature_lpm,
3250 &feature_lpmx,
3251 &feature_spm,
3239 &feature_addsubiw,3252 &feature_addsubiw,
3253 &feature_rmw,
3254 &feature_ijmpcall,
3255 &feature_eijmpcall,
3256 &feature_break,
3257 &feature_elpmx,
3240 },3258 },
3241};3259};
32423260
...@@ -3244,21 +3262,21 @@ pub const cpu_atxmega128a3 = Cpu{...@@ -3244,21 +3262,21 @@ pub const cpu_atxmega128a3 = Cpu{
3244 .name = "atxmega128a3",3262 .name = "atxmega128a3",
3245 .llvm_name = "atxmega128a3",3263 .llvm_name = "atxmega128a3",
3246 .dependencies = &[_]*const Feature {3264 .dependencies = &[_]*const Feature {
3247 &feature_lpmx,3265 &feature_des,
3266 &feature_sram,
3267 &feature_eijmpcall,
3268 &feature_jmpcall,
3269 &feature_mul,
3248 &feature_elpm,3270 &feature_elpm,
3271 &feature_spmx,
3249 &feature_lpm,3272 &feature_lpm,
3273 &feature_lpmx,
3250 &feature_spm,3274 &feature_spm,
3275 &feature_addsubiw,
3251 &feature_ijmpcall,3276 &feature_ijmpcall,
3252 &feature_movw,
3253 &feature_sram,
3254 &feature_spmx,
3255 &feature_break,
3256 &feature_jmpcall,
3257 &feature_des,
3258 &feature_mul,
3259 &feature_eijmpcall,
3260 &feature_elpmx,3277 &feature_elpmx,
3261 &feature_addsubiw,3278 &feature_break,
3279 &feature_movw,
3262 },3280 },
3263};3281};
32643282
...@@ -3266,22 +3284,22 @@ pub const cpu_atxmega128a3u = Cpu{...@@ -3266,22 +3284,22 @@ pub const cpu_atxmega128a3u = Cpu{
3266 .name = "atxmega128a3u",3284 .name = "atxmega128a3u",
3267 .llvm_name = "atxmega128a3u",3285 .llvm_name = "atxmega128a3u",
3268 .dependencies = &[_]*const Feature {3286 .dependencies = &[_]*const Feature {
3269 &feature_lpmx,3287 &feature_des,
3270 &feature_elpm,
3271 &feature_spm,
3272 &feature_lpm,
3273 &feature_ijmpcall,
3274 &feature_elpmx,
3275 &feature_sram,3288 &feature_sram,
3276 &feature_spmx,3289 &feature_movw,
3277 &feature_break,
3278 &feature_jmpcall,3290 &feature_jmpcall,
3279 &feature_des,
3280 &feature_rmw,
3281 &feature_mul,3291 &feature_mul,
3282 &feature_eijmpcall,3292 &feature_elpm,
3283 &feature_movw,3293 &feature_spmx,
3294 &feature_lpm,
3295 &feature_lpmx,
3296 &feature_spm,
3284 &feature_addsubiw,3297 &feature_addsubiw,
3298 &feature_rmw,
3299 &feature_ijmpcall,
3300 &feature_eijmpcall,
3301 &feature_break,
3302 &feature_elpmx,
3285 },3303 },
3286};3304};
32873305
...@@ -3289,22 +3307,22 @@ pub const cpu_atxmega128a4u = Cpu{...@@ -3289,22 +3307,22 @@ pub const cpu_atxmega128a4u = Cpu{
3289 .name = "atxmega128a4u",3307 .name = "atxmega128a4u",
3290 .llvm_name = "atxmega128a4u",3308 .llvm_name = "atxmega128a4u",
3291 .dependencies = &[_]*const Feature {3309 .dependencies = &[_]*const Feature {
3292 &feature_lpmx,3310 &feature_des,
3293 &feature_elpm,
3294 &feature_spm,
3295 &feature_lpm,
3296 &feature_ijmpcall,
3297 &feature_elpmx,
3298 &feature_sram,3311 &feature_sram,
3299 &feature_spmx,3312 &feature_movw,
3300 &feature_break,
3301 &feature_jmpcall,3313 &feature_jmpcall,
3302 &feature_des,
3303 &feature_rmw,
3304 &feature_mul,3314 &feature_mul,
3305 &feature_eijmpcall,3315 &feature_elpm,
3306 &feature_movw,3316 &feature_spmx,
3317 &feature_lpm,
3318 &feature_lpmx,
3319 &feature_spm,
3307 &feature_addsubiw,3320 &feature_addsubiw,
3321 &feature_rmw,
3322 &feature_ijmpcall,
3323 &feature_eijmpcall,
3324 &feature_break,
3325 &feature_elpmx,
3308 },3326 },
3309};3327};
33103328
...@@ -3312,22 +3330,22 @@ pub const cpu_atxmega128b1 = Cpu{...@@ -3312,22 +3330,22 @@ pub const cpu_atxmega128b1 = Cpu{
3312 .name = "atxmega128b1",3330 .name = "atxmega128b1",
3313 .llvm_name = "atxmega128b1",3331 .llvm_name = "atxmega128b1",
3314 .dependencies = &[_]*const Feature {3332 .dependencies = &[_]*const Feature {
3315 &feature_lpmx,3333 &feature_des,
3316 &feature_elpm,
3317 &feature_spm,
3318 &feature_lpm,
3319 &feature_ijmpcall,
3320 &feature_elpmx,
3321 &feature_sram,3334 &feature_sram,
3322 &feature_spmx,3335 &feature_movw,
3323 &feature_break,
3324 &feature_jmpcall,3336 &feature_jmpcall,
3325 &feature_des,
3326 &feature_rmw,
3327 &feature_mul,3337 &feature_mul,
3328 &feature_eijmpcall,3338 &feature_elpm,
3329 &feature_movw,3339 &feature_spmx,
3340 &feature_lpm,
3341 &feature_lpmx,
3342 &feature_spm,
3330 &feature_addsubiw,3343 &feature_addsubiw,
3344 &feature_rmw,
3345 &feature_ijmpcall,
3346 &feature_eijmpcall,
3347 &feature_break,
3348 &feature_elpmx,
3331 },3349 },
3332};3350};
33333351
...@@ -3335,22 +3353,22 @@ pub const cpu_atxmega128b3 = Cpu{...@@ -3335,22 +3353,22 @@ pub const cpu_atxmega128b3 = Cpu{
3335 .name = "atxmega128b3",3353 .name = "atxmega128b3",
3336 .llvm_name = "atxmega128b3",3354 .llvm_name = "atxmega128b3",
3337 .dependencies = &[_]*const Feature {3355 .dependencies = &[_]*const Feature {
3338 &feature_lpmx,3356 &feature_des,
3339 &feature_elpm,
3340 &feature_spm,
3341 &feature_lpm,
3342 &feature_ijmpcall,
3343 &feature_elpmx,
3344 &feature_sram,3357 &feature_sram,
3345 &feature_spmx,3358 &feature_movw,
3346 &feature_break,
3347 &feature_jmpcall,3359 &feature_jmpcall,
3348 &feature_des,
3349 &feature_rmw,
3350 &feature_mul,3360 &feature_mul,
3351 &feature_eijmpcall,3361 &feature_elpm,
3352 &feature_movw,3362 &feature_spmx,
3363 &feature_lpm,
3364 &feature_lpmx,
3365 &feature_spm,
3353 &feature_addsubiw,3366 &feature_addsubiw,
3367 &feature_rmw,
3368 &feature_ijmpcall,
3369 &feature_eijmpcall,
3370 &feature_break,
3371 &feature_elpmx,
3354 },3372 },
3355};3373};
33563374
...@@ -3358,22 +3376,22 @@ pub const cpu_atxmega128c3 = Cpu{...@@ -3358,22 +3376,22 @@ pub const cpu_atxmega128c3 = Cpu{
3358 .name = "atxmega128c3",3376 .name = "atxmega128c3",
3359 .llvm_name = "atxmega128c3",3377 .llvm_name = "atxmega128c3",
3360 .dependencies = &[_]*const Feature {3378 .dependencies = &[_]*const Feature {
3361 &feature_lpmx,3379 &feature_des,
3362 &feature_elpm,
3363 &feature_spm,
3364 &feature_lpm,
3365 &feature_ijmpcall,
3366 &feature_elpmx,
3367 &feature_sram,3380 &feature_sram,
3368 &feature_spmx,3381 &feature_movw,
3369 &feature_break,
3370 &feature_jmpcall,3382 &feature_jmpcall,
3371 &feature_des,
3372 &feature_rmw,
3373 &feature_mul,3383 &feature_mul,
3374 &feature_eijmpcall,3384 &feature_elpm,
3375 &feature_movw,3385 &feature_spmx,
3386 &feature_lpm,
3387 &feature_lpmx,
3388 &feature_spm,
3376 &feature_addsubiw,3389 &feature_addsubiw,
3390 &feature_rmw,
3391 &feature_ijmpcall,
3392 &feature_eijmpcall,
3393 &feature_break,
3394 &feature_elpmx,
3377 },3395 },
3378};3396};
33793397
...@@ -3381,21 +3399,21 @@ pub const cpu_atxmega128d3 = Cpu{...@@ -3381,21 +3399,21 @@ pub const cpu_atxmega128d3 = Cpu{
3381 .name = "atxmega128d3",3399 .name = "atxmega128d3",
3382 .llvm_name = "atxmega128d3",3400 .llvm_name = "atxmega128d3",
3383 .dependencies = &[_]*const Feature {3401 .dependencies = &[_]*const Feature {
3384 &feature_lpmx,3402 &feature_des,
3403 &feature_sram,
3404 &feature_eijmpcall,
3405 &feature_jmpcall,
3406 &feature_mul,
3385 &feature_elpm,3407 &feature_elpm,
3408 &feature_spmx,
3386 &feature_lpm,3409 &feature_lpm,
3410 &feature_lpmx,
3387 &feature_spm,3411 &feature_spm,
3412 &feature_addsubiw,
3388 &feature_ijmpcall,3413 &feature_ijmpcall,
3389 &feature_movw,
3390 &feature_sram,
3391 &feature_spmx,
3392 &feature_break,
3393 &feature_jmpcall,
3394 &feature_des,
3395 &feature_mul,
3396 &feature_eijmpcall,
3397 &feature_elpmx,3414 &feature_elpmx,
3398 &feature_addsubiw,3415 &feature_break,
3416 &feature_movw,
3399 },3417 },
3400};3418};
34013419
...@@ -3403,21 +3421,21 @@ pub const cpu_atxmega128d4 = Cpu{...@@ -3403,21 +3421,21 @@ pub const cpu_atxmega128d4 = Cpu{
3403 .name = "atxmega128d4",3421 .name = "atxmega128d4",
3404 .llvm_name = "atxmega128d4",3422 .llvm_name = "atxmega128d4",
3405 .dependencies = &[_]*const Feature {3423 .dependencies = &[_]*const Feature {
3406 &feature_lpmx,3424 &feature_des,
3425 &feature_sram,
3426 &feature_eijmpcall,
3427 &feature_jmpcall,
3428 &feature_mul,
3407 &feature_elpm,3429 &feature_elpm,
3430 &feature_spmx,
3408 &feature_lpm,3431 &feature_lpm,
3432 &feature_lpmx,
3409 &feature_spm,3433 &feature_spm,
3434 &feature_addsubiw,
3410 &feature_ijmpcall,3435 &feature_ijmpcall,
3411 &feature_movw,
3412 &feature_sram,
3413 &feature_spmx,
3414 &feature_break,
3415 &feature_jmpcall,
3416 &feature_des,
3417 &feature_mul,
3418 &feature_eijmpcall,
3419 &feature_elpmx,3436 &feature_elpmx,
3420 &feature_addsubiw,3437 &feature_break,
3438 &feature_movw,
3421 },3439 },
3422};3440};
34233441
...@@ -3425,21 +3443,21 @@ pub const cpu_atxmega16a4 = Cpu{...@@ -3425,21 +3443,21 @@ pub const cpu_atxmega16a4 = Cpu{
3425 .name = "atxmega16a4",3443 .name = "atxmega16a4",
3426 .llvm_name = "atxmega16a4",3444 .llvm_name = "atxmega16a4",
3427 .dependencies = &[_]*const Feature {3445 .dependencies = &[_]*const Feature {
3428 &feature_lpmx,3446 &feature_des,
3447 &feature_sram,
3448 &feature_eijmpcall,
3449 &feature_jmpcall,
3450 &feature_mul,
3429 &feature_elpm,3451 &feature_elpm,
3452 &feature_spmx,
3430 &feature_lpm,3453 &feature_lpm,
3454 &feature_lpmx,
3431 &feature_spm,3455 &feature_spm,
3456 &feature_addsubiw,
3432 &feature_ijmpcall,3457 &feature_ijmpcall,
3433 &feature_movw,
3434 &feature_sram,
3435 &feature_spmx,
3436 &feature_break,
3437 &feature_jmpcall,
3438 &feature_des,
3439 &feature_mul,
3440 &feature_eijmpcall,
3441 &feature_elpmx,3458 &feature_elpmx,
3442 &feature_addsubiw,3459 &feature_break,
3460 &feature_movw,
3443 },3461 },
3444};3462};
34453463
...@@ -3447,22 +3465,22 @@ pub const cpu_atxmega16a4u = Cpu{...@@ -3447,22 +3465,22 @@ pub const cpu_atxmega16a4u = Cpu{
3447 .name = "atxmega16a4u",3465 .name = "atxmega16a4u",
3448 .llvm_name = "atxmega16a4u",3466 .llvm_name = "atxmega16a4u",
3449 .dependencies = &[_]*const Feature {3467 .dependencies = &[_]*const Feature {
3450 &feature_lpmx,3468 &feature_des,
3451 &feature_elpm,
3452 &feature_spm,
3453 &feature_lpm,
3454 &feature_ijmpcall,
3455 &feature_elpmx,
3456 &feature_sram,3469 &feature_sram,
3457 &feature_spmx,3470 &feature_movw,
3458 &feature_break,
3459 &feature_jmpcall,3471 &feature_jmpcall,
3460 &feature_des,
3461 &feature_rmw,
3462 &feature_mul,3472 &feature_mul,
3463 &feature_eijmpcall,3473 &feature_elpm,
3464 &feature_movw,3474 &feature_spmx,
3475 &feature_lpm,
3476 &feature_lpmx,
3477 &feature_spm,
3465 &feature_addsubiw,3478 &feature_addsubiw,
3479 &feature_rmw,
3480 &feature_ijmpcall,
3481 &feature_eijmpcall,
3482 &feature_break,
3483 &feature_elpmx,
3466 },3484 },
3467};3485};
34683486
...@@ -3470,22 +3488,22 @@ pub const cpu_atxmega16c4 = Cpu{...@@ -3470,22 +3488,22 @@ pub const cpu_atxmega16c4 = Cpu{
3470 .name = "atxmega16c4",3488 .name = "atxmega16c4",
3471 .llvm_name = "atxmega16c4",3489 .llvm_name = "atxmega16c4",
3472 .dependencies = &[_]*const Feature {3490 .dependencies = &[_]*const Feature {
3473 &feature_lpmx,3491 &feature_des,
3474 &feature_elpm,
3475 &feature_spm,
3476 &feature_lpm,
3477 &feature_ijmpcall,
3478 &feature_elpmx,
3479 &feature_sram,3492 &feature_sram,
3480 &feature_spmx,3493 &feature_movw,
3481 &feature_break,
3482 &feature_jmpcall,3494 &feature_jmpcall,
3483 &feature_des,
3484 &feature_rmw,
3485 &feature_mul,3495 &feature_mul,
3486 &feature_eijmpcall,3496 &feature_elpm,
3487 &feature_movw,3497 &feature_spmx,
3498 &feature_lpm,
3499 &feature_lpmx,
3500 &feature_spm,
3488 &feature_addsubiw,3501 &feature_addsubiw,
3502 &feature_rmw,
3503 &feature_ijmpcall,
3504 &feature_eijmpcall,
3505 &feature_break,
3506 &feature_elpmx,
3489 },3507 },
3490};3508};
34913509
...@@ -3493,21 +3511,21 @@ pub const cpu_atxmega16d4 = Cpu{...@@ -3493,21 +3511,21 @@ pub const cpu_atxmega16d4 = Cpu{
3493 .name = "atxmega16d4",3511 .name = "atxmega16d4",
3494 .llvm_name = "atxmega16d4",3512 .llvm_name = "atxmega16d4",
3495 .dependencies = &[_]*const Feature {3513 .dependencies = &[_]*const Feature {
3496 &feature_lpmx,3514 &feature_des,
3515 &feature_sram,
3516 &feature_eijmpcall,
3517 &feature_jmpcall,
3518 &feature_mul,
3497 &feature_elpm,3519 &feature_elpm,
3520 &feature_spmx,
3498 &feature_lpm,3521 &feature_lpm,
3522 &feature_lpmx,
3499 &feature_spm,3523 &feature_spm,
3524 &feature_addsubiw,
3500 &feature_ijmpcall,3525 &feature_ijmpcall,
3501 &feature_movw,
3502 &feature_sram,
3503 &feature_spmx,
3504 &feature_break,
3505 &feature_jmpcall,
3506 &feature_des,
3507 &feature_mul,
3508 &feature_eijmpcall,
3509 &feature_elpmx,3526 &feature_elpmx,
3510 &feature_addsubiw,3527 &feature_break,
3528 &feature_movw,
3511 },3529 },
3512};3530};
35133531
...@@ -3515,21 +3533,21 @@ pub const cpu_atxmega16e5 = Cpu{...@@ -3515,21 +3533,21 @@ pub const cpu_atxmega16e5 = Cpu{
3515 .name = "atxmega16e5",3533 .name = "atxmega16e5",
3516 .llvm_name = "atxmega16e5",3534 .llvm_name = "atxmega16e5",
3517 .dependencies = &[_]*const Feature {3535 .dependencies = &[_]*const Feature {
3518 &feature_lpmx,3536 &feature_des,
3537 &feature_sram,
3538 &feature_eijmpcall,
3539 &feature_jmpcall,
3540 &feature_mul,
3519 &feature_elpm,3541 &feature_elpm,
3542 &feature_spmx,
3520 &feature_lpm,3543 &feature_lpm,
3544 &feature_lpmx,
3521 &feature_spm,3545 &feature_spm,
3546 &feature_addsubiw,
3522 &feature_ijmpcall,3547 &feature_ijmpcall,
3523 &feature_movw,
3524 &feature_sram,
3525 &feature_spmx,
3526 &feature_break,
3527 &feature_jmpcall,
3528 &feature_des,
3529 &feature_mul,
3530 &feature_eijmpcall,
3531 &feature_elpmx,3548 &feature_elpmx,
3532 &feature_addsubiw,3549 &feature_break,
3550 &feature_movw,
3533 },3551 },
3534};3552};
35353553
...@@ -3537,21 +3555,21 @@ pub const cpu_atxmega192a3 = Cpu{...@@ -3537,21 +3555,21 @@ pub const cpu_atxmega192a3 = Cpu{
3537 .name = "atxmega192a3",3555 .name = "atxmega192a3",
3538 .llvm_name = "atxmega192a3",3556 .llvm_name = "atxmega192a3",
3539 .dependencies = &[_]*const Feature {3557 .dependencies = &[_]*const Feature {
3540 &feature_lpmx,3558 &feature_des,
3559 &feature_sram,
3560 &feature_eijmpcall,
3561 &feature_jmpcall,
3562 &feature_mul,
3541 &feature_elpm,3563 &feature_elpm,
3564 &feature_spmx,
3542 &feature_lpm,3565 &feature_lpm,
3566 &feature_lpmx,
3543 &feature_spm,3567 &feature_spm,
3568 &feature_addsubiw,
3544 &feature_ijmpcall,3569 &feature_ijmpcall,
3545 &feature_movw,
3546 &feature_sram,
3547 &feature_spmx,
3548 &feature_break,
3549 &feature_jmpcall,
3550 &feature_des,
3551 &feature_mul,
3552 &feature_eijmpcall,
3553 &feature_elpmx,3570 &feature_elpmx,
3554 &feature_addsubiw,3571 &feature_break,
3572 &feature_movw,
3555 },3573 },
3556};3574};
35573575
...@@ -3559,22 +3577,22 @@ pub const cpu_atxmega192a3u = Cpu{...@@ -3559,22 +3577,22 @@ pub const cpu_atxmega192a3u = Cpu{
3559 .name = "atxmega192a3u",3577 .name = "atxmega192a3u",
3560 .llvm_name = "atxmega192a3u",3578 .llvm_name = "atxmega192a3u",
3561 .dependencies = &[_]*const Feature {3579 .dependencies = &[_]*const Feature {
3562 &feature_lpmx,3580 &feature_des,
3563 &feature_elpm,
3564 &feature_spm,
3565 &feature_lpm,
3566 &feature_ijmpcall,
3567 &feature_elpmx,
3568 &feature_sram,3581 &feature_sram,
3569 &feature_spmx,3582 &feature_movw,
3570 &feature_break,
3571 &feature_jmpcall,3583 &feature_jmpcall,
3572 &feature_des,
3573 &feature_rmw,
3574 &feature_mul,3584 &feature_mul,
3575 &feature_eijmpcall,3585 &feature_elpm,
3576 &feature_movw,3586 &feature_spmx,
3587 &feature_lpm,
3588 &feature_lpmx,
3589 &feature_spm,
3577 &feature_addsubiw,3590 &feature_addsubiw,
3591 &feature_rmw,
3592 &feature_ijmpcall,
3593 &feature_eijmpcall,
3594 &feature_break,
3595 &feature_elpmx,
3578 },3596 },
3579};3597};
35803598
...@@ -3582,22 +3600,22 @@ pub const cpu_atxmega192c3 = Cpu{...@@ -3582,22 +3600,22 @@ pub const cpu_atxmega192c3 = Cpu{
3582 .name = "atxmega192c3",3600 .name = "atxmega192c3",
3583 .llvm_name = "atxmega192c3",3601 .llvm_name = "atxmega192c3",
3584 .dependencies = &[_]*const Feature {3602 .dependencies = &[_]*const Feature {
3585 &feature_lpmx,3603 &feature_des,
3586 &feature_elpm,
3587 &feature_spm,
3588 &feature_lpm,
3589 &feature_ijmpcall,
3590 &feature_elpmx,
3591 &feature_sram,3604 &feature_sram,
3592 &feature_spmx,3605 &feature_movw,
3593 &feature_break,
3594 &feature_jmpcall,3606 &feature_jmpcall,
3595 &feature_des,
3596 &feature_rmw,
3597 &feature_mul,3607 &feature_mul,
3598 &feature_eijmpcall,3608 &feature_elpm,
3599 &feature_movw,3609 &feature_spmx,
3610 &feature_lpm,
3611 &feature_lpmx,
3612 &feature_spm,
3600 &feature_addsubiw,3613 &feature_addsubiw,
3614 &feature_rmw,
3615 &feature_ijmpcall,
3616 &feature_eijmpcall,
3617 &feature_break,
3618 &feature_elpmx,
3601 },3619 },
3602};3620};
36033621
...@@ -3605,21 +3623,21 @@ pub const cpu_atxmega192d3 = Cpu{...@@ -3605,21 +3623,21 @@ pub const cpu_atxmega192d3 = Cpu{
3605 .name = "atxmega192d3",3623 .name = "atxmega192d3",
3606 .llvm_name = "atxmega192d3",3624 .llvm_name = "atxmega192d3",
3607 .dependencies = &[_]*const Feature {3625 .dependencies = &[_]*const Feature {
3608 &feature_lpmx,3626 &feature_des,
3627 &feature_sram,
3628 &feature_eijmpcall,
3629 &feature_jmpcall,
3630 &feature_mul,
3609 &feature_elpm,3631 &feature_elpm,
3632 &feature_spmx,
3610 &feature_lpm,3633 &feature_lpm,
3634 &feature_lpmx,
3611 &feature_spm,3635 &feature_spm,
3636 &feature_addsubiw,
3612 &feature_ijmpcall,3637 &feature_ijmpcall,
3613 &feature_movw,
3614 &feature_sram,
3615 &feature_spmx,
3616 &feature_break,
3617 &feature_jmpcall,
3618 &feature_des,
3619 &feature_mul,
3620 &feature_eijmpcall,
3621 &feature_elpmx,3638 &feature_elpmx,
3622 &feature_addsubiw,3639 &feature_break,
3640 &feature_movw,
3623 },3641 },
3624};3642};
36253643
...@@ -3627,21 +3645,21 @@ pub const cpu_atxmega256a3 = Cpu{...@@ -3627,21 +3645,21 @@ pub const cpu_atxmega256a3 = Cpu{
3627 .name = "atxmega256a3",3645 .name = "atxmega256a3",
3628 .llvm_name = "atxmega256a3",3646 .llvm_name = "atxmega256a3",
3629 .dependencies = &[_]*const Feature {3647 .dependencies = &[_]*const Feature {
3630 &feature_lpmx,3648 &feature_des,
3649 &feature_sram,
3650 &feature_eijmpcall,
3651 &feature_jmpcall,
3652 &feature_mul,
3631 &feature_elpm,3653 &feature_elpm,
3654 &feature_spmx,
3632 &feature_lpm,3655 &feature_lpm,
3656 &feature_lpmx,
3633 &feature_spm,3657 &feature_spm,
3658 &feature_addsubiw,
3634 &feature_ijmpcall,3659 &feature_ijmpcall,
3635 &feature_movw,
3636 &feature_sram,
3637 &feature_spmx,
3638 &feature_break,
3639 &feature_jmpcall,
3640 &feature_des,
3641 &feature_mul,
3642 &feature_eijmpcall,
3643 &feature_elpmx,3660 &feature_elpmx,
3644 &feature_addsubiw,3661 &feature_break,
3662 &feature_movw,
3645 },3663 },
3646};3664};
36473665
...@@ -3649,21 +3667,21 @@ pub const cpu_atxmega256a3b = Cpu{...@@ -3649,21 +3667,21 @@ pub const cpu_atxmega256a3b = Cpu{
3649 .name = "atxmega256a3b",3667 .name = "atxmega256a3b",
3650 .llvm_name = "atxmega256a3b",3668 .llvm_name = "atxmega256a3b",
3651 .dependencies = &[_]*const Feature {3669 .dependencies = &[_]*const Feature {
3652 &feature_lpmx,3670 &feature_des,
3671 &feature_sram,
3672 &feature_eijmpcall,
3673 &feature_jmpcall,
3674 &feature_mul,
3653 &feature_elpm,3675 &feature_elpm,
3676 &feature_spmx,
3654 &feature_lpm,3677 &feature_lpm,
3678 &feature_lpmx,
3655 &feature_spm,3679 &feature_spm,
3680 &feature_addsubiw,
3656 &feature_ijmpcall,3681 &feature_ijmpcall,
3657 &feature_movw,
3658 &feature_sram,
3659 &feature_spmx,
3660 &feature_break,
3661 &feature_jmpcall,
3662 &feature_des,
3663 &feature_mul,
3664 &feature_eijmpcall,
3665 &feature_elpmx,3682 &feature_elpmx,
3666 &feature_addsubiw,3683 &feature_break,
3684 &feature_movw,
3667 },3685 },
3668};3686};
36693687
...@@ -3671,22 +3689,22 @@ pub const cpu_atxmega256a3bu = Cpu{...@@ -3671,22 +3689,22 @@ pub const cpu_atxmega256a3bu = Cpu{
3671 .name = "atxmega256a3bu",3689 .name = "atxmega256a3bu",
3672 .llvm_name = "atxmega256a3bu",3690 .llvm_name = "atxmega256a3bu",
3673 .dependencies = &[_]*const Feature {3691 .dependencies = &[_]*const Feature {
3674 &feature_lpmx,3692 &feature_des,
3675 &feature_elpm,
3676 &feature_spm,
3677 &feature_lpm,
3678 &feature_ijmpcall,
3679 &feature_elpmx,
3680 &feature_sram,3693 &feature_sram,
3681 &feature_spmx,3694 &feature_movw,
3682 &feature_break,
3683 &feature_jmpcall,3695 &feature_jmpcall,
3684 &feature_des,
3685 &feature_rmw,
3686 &feature_mul,3696 &feature_mul,
3687 &feature_eijmpcall,3697 &feature_elpm,
3688 &feature_movw,3698 &feature_spmx,
3699 &feature_lpm,
3700 &feature_lpmx,
3701 &feature_spm,
3689 &feature_addsubiw,3702 &feature_addsubiw,
3703 &feature_rmw,
3704 &feature_ijmpcall,
3705 &feature_eijmpcall,
3706 &feature_break,
3707 &feature_elpmx,
3690 },3708 },
3691};3709};
36923710
...@@ -3694,22 +3712,22 @@ pub const cpu_atxmega256a3u = Cpu{...@@ -3694,22 +3712,22 @@ pub const cpu_atxmega256a3u = Cpu{
3694 .name = "atxmega256a3u",3712 .name = "atxmega256a3u",
3695 .llvm_name = "atxmega256a3u",3713 .llvm_name = "atxmega256a3u",
3696 .dependencies = &[_]*const Feature {3714 .dependencies = &[_]*const Feature {
3697 &feature_lpmx,3715 &feature_des,
3698 &feature_elpm,
3699 &feature_spm,
3700 &feature_lpm,
3701 &feature_ijmpcall,
3702 &feature_elpmx,
3703 &feature_sram,3716 &feature_sram,
3704 &feature_spmx,3717 &feature_movw,
3705 &feature_break,
3706 &feature_jmpcall,3718 &feature_jmpcall,
3707 &feature_des,
3708 &feature_rmw,
3709 &feature_mul,3719 &feature_mul,
3710 &feature_eijmpcall,3720 &feature_elpm,
3711 &feature_movw,3721 &feature_spmx,
3722 &feature_lpm,
3723 &feature_lpmx,
3724 &feature_spm,
3712 &feature_addsubiw,3725 &feature_addsubiw,
3726 &feature_rmw,
3727 &feature_ijmpcall,
3728 &feature_eijmpcall,
3729 &feature_break,
3730 &feature_elpmx,
3713 },3731 },
3714};3732};
37153733
...@@ -3717,22 +3735,22 @@ pub const cpu_atxmega256c3 = Cpu{...@@ -3717,22 +3735,22 @@ pub const cpu_atxmega256c3 = Cpu{
3717 .name = "atxmega256c3",3735 .name = "atxmega256c3",
3718 .llvm_name = "atxmega256c3",3736 .llvm_name = "atxmega256c3",
3719 .dependencies = &[_]*const Feature {3737 .dependencies = &[_]*const Feature {
3720 &feature_lpmx,3738 &feature_des,
3721 &feature_elpm,
3722 &feature_spm,
3723 &feature_lpm,
3724 &feature_ijmpcall,
3725 &feature_elpmx,
3726 &feature_sram,3739 &feature_sram,
3727 &feature_spmx,3740 &feature_movw,
3728 &feature_break,
3729 &feature_jmpcall,3741 &feature_jmpcall,
3730 &feature_des,
3731 &feature_rmw,
3732 &feature_mul,3742 &feature_mul,
3733 &feature_eijmpcall,3743 &feature_elpm,
3734 &feature_movw,3744 &feature_spmx,
3745 &feature_lpm,
3746 &feature_lpmx,
3747 &feature_spm,
3735 &feature_addsubiw,3748 &feature_addsubiw,
3749 &feature_rmw,
3750 &feature_ijmpcall,
3751 &feature_eijmpcall,
3752 &feature_break,
3753 &feature_elpmx,
3736 },3754 },
3737};3755};
37383756
...@@ -3740,21 +3758,21 @@ pub const cpu_atxmega256d3 = Cpu{...@@ -3740,21 +3758,21 @@ pub const cpu_atxmega256d3 = Cpu{
3740 .name = "atxmega256d3",3758 .name = "atxmega256d3",
3741 .llvm_name = "atxmega256d3",3759 .llvm_name = "atxmega256d3",
3742 .dependencies = &[_]*const Feature {3760 .dependencies = &[_]*const Feature {
3743 &feature_lpmx,3761 &feature_des,
3762 &feature_sram,
3763 &feature_eijmpcall,
3764 &feature_jmpcall,
3765 &feature_mul,
3744 &feature_elpm,3766 &feature_elpm,
3767 &feature_spmx,
3745 &feature_lpm,3768 &feature_lpm,
3769 &feature_lpmx,
3746 &feature_spm,3770 &feature_spm,
3771 &feature_addsubiw,
3747 &feature_ijmpcall,3772 &feature_ijmpcall,
3748 &feature_movw,
3749 &feature_sram,
3750 &feature_spmx,
3751 &feature_break,
3752 &feature_jmpcall,
3753 &feature_des,
3754 &feature_mul,
3755 &feature_eijmpcall,
3756 &feature_elpmx,3773 &feature_elpmx,
3757 &feature_addsubiw,3774 &feature_break,
3775 &feature_movw,
3758 },3776 },
3759};3777};
37603778
...@@ -3762,21 +3780,21 @@ pub const cpu_atxmega32a4 = Cpu{...@@ -3762,21 +3780,21 @@ pub const cpu_atxmega32a4 = Cpu{
3762 .name = "atxmega32a4",3780 .name = "atxmega32a4",
3763 .llvm_name = "atxmega32a4",3781 .llvm_name = "atxmega32a4",
3764 .dependencies = &[_]*const Feature {3782 .dependencies = &[_]*const Feature {
3765 &feature_lpmx,3783 &feature_des,
3784 &feature_sram,
3785 &feature_eijmpcall,
3786 &feature_jmpcall,
3787 &feature_mul,
3766 &feature_elpm,3788 &feature_elpm,
3789 &feature_spmx,
3767 &feature_lpm,3790 &feature_lpm,
3791 &feature_lpmx,
3768 &feature_spm,3792 &feature_spm,
3793 &feature_addsubiw,
3769 &feature_ijmpcall,3794 &feature_ijmpcall,
3770 &feature_movw,
3771 &feature_sram,
3772 &feature_spmx,
3773 &feature_break,
3774 &feature_jmpcall,
3775 &feature_des,
3776 &feature_mul,
3777 &feature_eijmpcall,
3778 &feature_elpmx,3795 &feature_elpmx,
3779 &feature_addsubiw,3796 &feature_break,
3797 &feature_movw,
3780 },3798 },
3781};3799};
37823800
...@@ -3784,22 +3802,22 @@ pub const cpu_atxmega32a4u = Cpu{...@@ -3784,22 +3802,22 @@ pub const cpu_atxmega32a4u = Cpu{
3784 .name = "atxmega32a4u",3802 .name = "atxmega32a4u",
3785 .llvm_name = "atxmega32a4u",3803 .llvm_name = "atxmega32a4u",
3786 .dependencies = &[_]*const Feature {3804 .dependencies = &[_]*const Feature {
3787 &feature_lpmx,3805 &feature_des,
3788 &feature_elpm,
3789 &feature_spm,
3790 &feature_lpm,
3791 &feature_ijmpcall,
3792 &feature_elpmx,
3793 &feature_sram,3806 &feature_sram,
3794 &feature_spmx,3807 &feature_movw,
3795 &feature_break,
3796 &feature_jmpcall,3808 &feature_jmpcall,
3797 &feature_des,
3798 &feature_rmw,
3799 &feature_mul,3809 &feature_mul,
3800 &feature_eijmpcall,3810 &feature_elpm,
3801 &feature_movw,3811 &feature_spmx,
3812 &feature_lpm,
3813 &feature_lpmx,
3814 &feature_spm,
3802 &feature_addsubiw,3815 &feature_addsubiw,
3816 &feature_rmw,
3817 &feature_ijmpcall,
3818 &feature_eijmpcall,
3819 &feature_break,
3820 &feature_elpmx,
3803 },3821 },
3804};3822};
38053823
...@@ -3807,22 +3825,22 @@ pub const cpu_atxmega32c4 = Cpu{...@@ -3807,22 +3825,22 @@ pub const cpu_atxmega32c4 = Cpu{
3807 .name = "atxmega32c4",3825 .name = "atxmega32c4",
3808 .llvm_name = "atxmega32c4",3826 .llvm_name = "atxmega32c4",
3809 .dependencies = &[_]*const Feature {3827 .dependencies = &[_]*const Feature {
3810 &feature_lpmx,3828 &feature_des,
3811 &feature_elpm,
3812 &feature_spm,
3813 &feature_lpm,
3814 &feature_ijmpcall,
3815 &feature_elpmx,
3816 &feature_sram,3829 &feature_sram,
3817 &feature_spmx,3830 &feature_movw,
3818 &feature_break,
3819 &feature_jmpcall,3831 &feature_jmpcall,
3820 &feature_des,
3821 &feature_rmw,
3822 &feature_mul,3832 &feature_mul,
3823 &feature_eijmpcall,3833 &feature_elpm,
3824 &feature_movw,3834 &feature_spmx,
3835 &feature_lpm,
3836 &feature_lpmx,
3837 &feature_spm,
3825 &feature_addsubiw,3838 &feature_addsubiw,
3839 &feature_rmw,
3840 &feature_ijmpcall,
3841 &feature_eijmpcall,
3842 &feature_break,
3843 &feature_elpmx,
3826 },3844 },
3827};3845};
38283846
...@@ -3830,21 +3848,21 @@ pub const cpu_atxmega32d4 = Cpu{...@@ -3830,21 +3848,21 @@ pub const cpu_atxmega32d4 = Cpu{
3830 .name = "atxmega32d4",3848 .name = "atxmega32d4",
3831 .llvm_name = "atxmega32d4",3849 .llvm_name = "atxmega32d4",
3832 .dependencies = &[_]*const Feature {3850 .dependencies = &[_]*const Feature {
3833 &feature_lpmx,3851 &feature_des,
3852 &feature_sram,
3853 &feature_eijmpcall,
3854 &feature_jmpcall,
3855 &feature_mul,
3834 &feature_elpm,3856 &feature_elpm,
3857 &feature_spmx,
3835 &feature_lpm,3858 &feature_lpm,
3859 &feature_lpmx,
3836 &feature_spm,3860 &feature_spm,
3861 &feature_addsubiw,
3837 &feature_ijmpcall,3862 &feature_ijmpcall,
3838 &feature_movw,
3839 &feature_sram,
3840 &feature_spmx,
3841 &feature_break,
3842 &feature_jmpcall,
3843 &feature_des,
3844 &feature_mul,
3845 &feature_eijmpcall,
3846 &feature_elpmx,3863 &feature_elpmx,
3847 &feature_addsubiw,3864 &feature_break,
3865 &feature_movw,
3848 },3866 },
3849};3867};
38503868
...@@ -3852,21 +3870,21 @@ pub const cpu_atxmega32e5 = Cpu{...@@ -3852,21 +3870,21 @@ pub const cpu_atxmega32e5 = Cpu{
3852 .name = "atxmega32e5",3870 .name = "atxmega32e5",
3853 .llvm_name = "atxmega32e5",3871 .llvm_name = "atxmega32e5",
3854 .dependencies = &[_]*const Feature {3872 .dependencies = &[_]*const Feature {
3855 &feature_lpmx,3873 &feature_des,
3874 &feature_sram,
3875 &feature_eijmpcall,
3876 &feature_jmpcall,
3877 &feature_mul,
3856 &feature_elpm,3878 &feature_elpm,
3879 &feature_spmx,
3857 &feature_lpm,3880 &feature_lpm,
3881 &feature_lpmx,
3858 &feature_spm,3882 &feature_spm,
3883 &feature_addsubiw,
3859 &feature_ijmpcall,3884 &feature_ijmpcall,
3860 &feature_movw,
3861 &feature_sram,
3862 &feature_spmx,
3863 &feature_break,
3864 &feature_jmpcall,
3865 &feature_des,
3866 &feature_mul,
3867 &feature_eijmpcall,
3868 &feature_elpmx,3885 &feature_elpmx,
3869 &feature_addsubiw,3886 &feature_break,
3887 &feature_movw,
3870 },3888 },
3871};3889};
38723890
...@@ -3874,21 +3892,21 @@ pub const cpu_atxmega32x1 = Cpu{...@@ -3874,21 +3892,21 @@ pub const cpu_atxmega32x1 = Cpu{
3874 .name = "atxmega32x1",3892 .name = "atxmega32x1",
3875 .llvm_name = "atxmega32x1",3893 .llvm_name = "atxmega32x1",
3876 .dependencies = &[_]*const Feature {3894 .dependencies = &[_]*const Feature {
3877 &feature_lpmx,3895 &feature_des,
3896 &feature_sram,
3897 &feature_eijmpcall,
3898 &feature_jmpcall,
3899 &feature_mul,
3878 &feature_elpm,3900 &feature_elpm,
3901 &feature_spmx,
3879 &feature_lpm,3902 &feature_lpm,
3903 &feature_lpmx,
3880 &feature_spm,3904 &feature_spm,
3905 &feature_addsubiw,
3881 &feature_ijmpcall,3906 &feature_ijmpcall,
3882 &feature_movw,
3883 &feature_sram,
3884 &feature_spmx,
3885 &feature_break,
3886 &feature_jmpcall,
3887 &feature_des,
3888 &feature_mul,
3889 &feature_eijmpcall,
3890 &feature_elpmx,3907 &feature_elpmx,
3891 &feature_addsubiw,3908 &feature_break,
3909 &feature_movw,
3892 },3910 },
3893};3911};
38943912
...@@ -3896,22 +3914,22 @@ pub const cpu_atxmega384c3 = Cpu{...@@ -3896,22 +3914,22 @@ pub const cpu_atxmega384c3 = Cpu{
3896 .name = "atxmega384c3",3914 .name = "atxmega384c3",
3897 .llvm_name = "atxmega384c3",3915 .llvm_name = "atxmega384c3",
3898 .dependencies = &[_]*const Feature {3916 .dependencies = &[_]*const Feature {
3899 &feature_lpmx,3917 &feature_des,
3900 &feature_elpm,
3901 &feature_spm,
3902 &feature_lpm,
3903 &feature_ijmpcall,
3904 &feature_elpmx,
3905 &feature_sram,3918 &feature_sram,
3906 &feature_spmx,3919 &feature_movw,
3907 &feature_break,
3908 &feature_jmpcall,3920 &feature_jmpcall,
3909 &feature_des,
3910 &feature_rmw,
3911 &feature_mul,3921 &feature_mul,
3912 &feature_eijmpcall,3922 &feature_elpm,
3913 &feature_movw,3923 &feature_spmx,
3924 &feature_lpm,
3925 &feature_lpmx,
3926 &feature_spm,
3914 &feature_addsubiw,3927 &feature_addsubiw,
3928 &feature_rmw,
3929 &feature_ijmpcall,
3930 &feature_eijmpcall,
3931 &feature_break,
3932 &feature_elpmx,
3915 },3933 },
3916};3934};
39173935
...@@ -3919,21 +3937,21 @@ pub const cpu_atxmega384d3 = Cpu{...@@ -3919,21 +3937,21 @@ pub const cpu_atxmega384d3 = Cpu{
3919 .name = "atxmega384d3",3937 .name = "atxmega384d3",
3920 .llvm_name = "atxmega384d3",3938 .llvm_name = "atxmega384d3",
3921 .dependencies = &[_]*const Feature {3939 .dependencies = &[_]*const Feature {
3922 &feature_lpmx,3940 &feature_des,
3941 &feature_sram,
3942 &feature_eijmpcall,
3943 &feature_jmpcall,
3944 &feature_mul,
3923 &feature_elpm,3945 &feature_elpm,
3946 &feature_spmx,
3924 &feature_lpm,3947 &feature_lpm,
3948 &feature_lpmx,
3925 &feature_spm,3949 &feature_spm,
3950 &feature_addsubiw,
3926 &feature_ijmpcall,3951 &feature_ijmpcall,
3927 &feature_movw,
3928 &feature_sram,
3929 &feature_spmx,
3930 &feature_break,
3931 &feature_jmpcall,
3932 &feature_des,
3933 &feature_mul,
3934 &feature_eijmpcall,
3935 &feature_elpmx,3952 &feature_elpmx,
3936 &feature_addsubiw,3953 &feature_break,
3954 &feature_movw,
3937 },3955 },
3938};3956};
39393957
...@@ -3941,21 +3959,21 @@ pub const cpu_atxmega64a1 = Cpu{...@@ -3941,21 +3959,21 @@ pub const cpu_atxmega64a1 = Cpu{
3941 .name = "atxmega64a1",3959 .name = "atxmega64a1",
3942 .llvm_name = "atxmega64a1",3960 .llvm_name = "atxmega64a1",
3943 .dependencies = &[_]*const Feature {3961 .dependencies = &[_]*const Feature {
3944 &feature_lpmx,3962 &feature_des,
3963 &feature_sram,
3964 &feature_eijmpcall,
3965 &feature_jmpcall,
3966 &feature_mul,
3945 &feature_elpm,3967 &feature_elpm,
3968 &feature_spmx,
3946 &feature_lpm,3969 &feature_lpm,
3970 &feature_lpmx,
3947 &feature_spm,3971 &feature_spm,
3972 &feature_addsubiw,
3948 &feature_ijmpcall,3973 &feature_ijmpcall,
3949 &feature_movw,
3950 &feature_sram,
3951 &feature_spmx,
3952 &feature_break,
3953 &feature_jmpcall,
3954 &feature_des,
3955 &feature_mul,
3956 &feature_eijmpcall,
3957 &feature_elpmx,3974 &feature_elpmx,
3958 &feature_addsubiw,3975 &feature_break,
3976 &feature_movw,
3959 },3977 },
3960};3978};
39613979
...@@ -3963,22 +3981,22 @@ pub const cpu_atxmega64a1u = Cpu{...@@ -3963,22 +3981,22 @@ pub const cpu_atxmega64a1u = Cpu{
3963 .name = "atxmega64a1u",3981 .name = "atxmega64a1u",
3964 .llvm_name = "atxmega64a1u",3982 .llvm_name = "atxmega64a1u",
3965 .dependencies = &[_]*const Feature {3983 .dependencies = &[_]*const Feature {
3966 &feature_lpmx,3984 &feature_des,
3967 &feature_elpm,
3968 &feature_spm,
3969 &feature_lpm,
3970 &feature_ijmpcall,
3971 &feature_elpmx,
3972 &feature_sram,3985 &feature_sram,
3973 &feature_spmx,3986 &feature_movw,
3974 &feature_break,
3975 &feature_jmpcall,3987 &feature_jmpcall,
3976 &feature_des,
3977 &feature_rmw,
3978 &feature_mul,3988 &feature_mul,
3979 &feature_eijmpcall,3989 &feature_elpm,
3980 &feature_movw,3990 &feature_spmx,
3991 &feature_lpm,
3992 &feature_lpmx,
3993 &feature_spm,
3981 &feature_addsubiw,3994 &feature_addsubiw,
3995 &feature_rmw,
3996 &feature_ijmpcall,
3997 &feature_eijmpcall,
3998 &feature_break,
3999 &feature_elpmx,
3982 },4000 },
3983};4001};
39844002
...@@ -3986,21 +4004,21 @@ pub const cpu_atxmega64a3 = Cpu{...@@ -3986,21 +4004,21 @@ pub const cpu_atxmega64a3 = Cpu{
3986 .name = "atxmega64a3",4004 .name = "atxmega64a3",
3987 .llvm_name = "atxmega64a3",4005 .llvm_name = "atxmega64a3",
3988 .dependencies = &[_]*const Feature {4006 .dependencies = &[_]*const Feature {
3989 &feature_lpmx,4007 &feature_des,
4008 &feature_sram,
4009 &feature_eijmpcall,
4010 &feature_jmpcall,
4011 &feature_mul,
3990 &feature_elpm,4012 &feature_elpm,
4013 &feature_spmx,
3991 &feature_lpm,4014 &feature_lpm,
4015 &feature_lpmx,
3992 &feature_spm,4016 &feature_spm,
4017 &feature_addsubiw,
3993 &feature_ijmpcall,4018 &feature_ijmpcall,
3994 &feature_movw,
3995 &feature_sram,
3996 &feature_spmx,
3997 &feature_break,
3998 &feature_jmpcall,
3999 &feature_des,
4000 &feature_mul,
4001 &feature_eijmpcall,
4002 &feature_elpmx,4019 &feature_elpmx,
4003 &feature_addsubiw,4020 &feature_break,
4021 &feature_movw,
4004 },4022 },
4005};4023};
40064024
...@@ -4008,22 +4026,22 @@ pub const cpu_atxmega64a3u = Cpu{...@@ -4008,22 +4026,22 @@ pub const cpu_atxmega64a3u = Cpu{
4008 .name = "atxmega64a3u",4026 .name = "atxmega64a3u",
4009 .llvm_name = "atxmega64a3u",4027 .llvm_name = "atxmega64a3u",
4010 .dependencies = &[_]*const Feature {4028 .dependencies = &[_]*const Feature {
4011 &feature_lpmx,4029 &feature_des,
4012 &feature_elpm,
4013 &feature_spm,
4014 &feature_lpm,
4015 &feature_ijmpcall,
4016 &feature_elpmx,
4017 &feature_sram,4030 &feature_sram,
4018 &feature_spmx,4031 &feature_movw,
4019 &feature_break,
4020 &feature_jmpcall,4032 &feature_jmpcall,
4021 &feature_des,
4022 &feature_rmw,
4023 &feature_mul,4033 &feature_mul,
4024 &feature_eijmpcall,4034 &feature_elpm,
4025 &feature_movw,4035 &feature_spmx,
4036 &feature_lpm,
4037 &feature_lpmx,
4038 &feature_spm,
4026 &feature_addsubiw,4039 &feature_addsubiw,
4040 &feature_rmw,
4041 &feature_ijmpcall,
4042 &feature_eijmpcall,
4043 &feature_break,
4044 &feature_elpmx,
4027 },4045 },
4028};4046};
40294047
...@@ -4031,22 +4049,22 @@ pub const cpu_atxmega64a4u = Cpu{...@@ -4031,22 +4049,22 @@ pub const cpu_atxmega64a4u = Cpu{
4031 .name = "atxmega64a4u",4049 .name = "atxmega64a4u",
4032 .llvm_name = "atxmega64a4u",4050 .llvm_name = "atxmega64a4u",
4033 .dependencies = &[_]*const Feature {4051 .dependencies = &[_]*const Feature {
4034 &feature_lpmx,4052 &feature_des,
4035 &feature_elpm,
4036 &feature_spm,
4037 &feature_lpm,
4038 &feature_ijmpcall,
4039 &feature_elpmx,
4040 &feature_sram,4053 &feature_sram,
4041 &feature_spmx,4054 &feature_movw,
4042 &feature_break,
4043 &feature_jmpcall,4055 &feature_jmpcall,
4044 &feature_des,
4045 &feature_rmw,
4046 &feature_mul,4056 &feature_mul,
4047 &feature_eijmpcall,4057 &feature_elpm,
4048 &feature_movw,4058 &feature_spmx,
4059 &feature_lpm,
4060 &feature_lpmx,
4061 &feature_spm,
4049 &feature_addsubiw,4062 &feature_addsubiw,
4063 &feature_rmw,
4064 &feature_ijmpcall,
4065 &feature_eijmpcall,
4066 &feature_break,
4067 &feature_elpmx,
4050 },4068 },
4051};4069};
40524070
...@@ -4054,22 +4072,22 @@ pub const cpu_atxmega64b1 = Cpu{...@@ -4054,22 +4072,22 @@ pub const cpu_atxmega64b1 = Cpu{
4054 .name = "atxmega64b1",4072 .name = "atxmega64b1",
4055 .llvm_name = "atxmega64b1",4073 .llvm_name = "atxmega64b1",
4056 .dependencies = &[_]*const Feature {4074 .dependencies = &[_]*const Feature {
4057 &feature_lpmx,4075 &feature_des,
4058 &feature_elpm,
4059 &feature_spm,
4060 &feature_lpm,
4061 &feature_ijmpcall,
4062 &feature_elpmx,
4063 &feature_sram,4076 &feature_sram,
4064 &feature_spmx,4077 &feature_movw,
4065 &feature_break,
4066 &feature_jmpcall,4078 &feature_jmpcall,
4067 &feature_des,
4068 &feature_rmw,
4069 &feature_mul,4079 &feature_mul,
4070 &feature_eijmpcall,4080 &feature_elpm,
4071 &feature_movw,4081 &feature_spmx,
4082 &feature_lpm,
4083 &feature_lpmx,
4084 &feature_spm,
4072 &feature_addsubiw,4085 &feature_addsubiw,
4086 &feature_rmw,
4087 &feature_ijmpcall,
4088 &feature_eijmpcall,
4089 &feature_break,
4090 &feature_elpmx,
4073 },4091 },
4074};4092};
40754093
...@@ -4077,22 +4095,22 @@ pub const cpu_atxmega64b3 = Cpu{...@@ -4077,22 +4095,22 @@ pub const cpu_atxmega64b3 = Cpu{
4077 .name = "atxmega64b3",4095 .name = "atxmega64b3",
4078 .llvm_name = "atxmega64b3",4096 .llvm_name = "atxmega64b3",
4079 .dependencies = &[_]*const Feature {4097 .dependencies = &[_]*const Feature {
4080 &feature_lpmx,4098 &feature_des,
4081 &feature_elpm,
4082 &feature_spm,
4083 &feature_lpm,
4084 &feature_ijmpcall,
4085 &feature_elpmx,
4086 &feature_sram,4099 &feature_sram,
4087 &feature_spmx,4100 &feature_movw,
4088 &feature_break,
4089 &feature_jmpcall,4101 &feature_jmpcall,
4090 &feature_des,
4091 &feature_rmw,
4092 &feature_mul,4102 &feature_mul,
4093 &feature_eijmpcall,4103 &feature_elpm,
4094 &feature_movw,4104 &feature_spmx,
4105 &feature_lpm,
4106 &feature_lpmx,
4107 &feature_spm,
4095 &feature_addsubiw,4108 &feature_addsubiw,
4109 &feature_rmw,
4110 &feature_ijmpcall,
4111 &feature_eijmpcall,
4112 &feature_break,
4113 &feature_elpmx,
4096 },4114 },
4097};4115};
40984116
...@@ -4100,22 +4118,22 @@ pub const cpu_atxmega64c3 = Cpu{...@@ -4100,22 +4118,22 @@ pub const cpu_atxmega64c3 = Cpu{
4100 .name = "atxmega64c3",4118 .name = "atxmega64c3",
4101 .llvm_name = "atxmega64c3",4119 .llvm_name = "atxmega64c3",
4102 .dependencies = &[_]*const Feature {4120 .dependencies = &[_]*const Feature {
4103 &feature_lpmx,4121 &feature_des,
4104 &feature_elpm,
4105 &feature_spm,
4106 &feature_lpm,
4107 &feature_ijmpcall,
4108 &feature_elpmx,
4109 &feature_sram,4122 &feature_sram,
4110 &feature_spmx,4123 &feature_movw,
4111 &feature_break,
4112 &feature_jmpcall,4124 &feature_jmpcall,
4113 &feature_des,
4114 &feature_rmw,
4115 &feature_mul,4125 &feature_mul,
4116 &feature_eijmpcall,4126 &feature_elpm,
4117 &feature_movw,4127 &feature_spmx,
4128 &feature_lpm,
4129 &feature_lpmx,
4130 &feature_spm,
4118 &feature_addsubiw,4131 &feature_addsubiw,
4132 &feature_rmw,
4133 &feature_ijmpcall,
4134 &feature_eijmpcall,
4135 &feature_break,
4136 &feature_elpmx,
4119 },4137 },
4120};4138};
41214139
...@@ -4123,21 +4141,21 @@ pub const cpu_atxmega64d3 = Cpu{...@@ -4123,21 +4141,21 @@ pub const cpu_atxmega64d3 = Cpu{
4123 .name = "atxmega64d3",4141 .name = "atxmega64d3",
4124 .llvm_name = "atxmega64d3",4142 .llvm_name = "atxmega64d3",
4125 .dependencies = &[_]*const Feature {4143 .dependencies = &[_]*const Feature {
4126 &feature_lpmx,4144 &feature_des,
4145 &feature_sram,
4146 &feature_eijmpcall,
4147 &feature_jmpcall,
4148 &feature_mul,
4127 &feature_elpm,4149 &feature_elpm,
4150 &feature_spmx,
4128 &feature_lpm,4151 &feature_lpm,
4152 &feature_lpmx,
4129 &feature_spm,4153 &feature_spm,
4154 &feature_addsubiw,
4130 &feature_ijmpcall,4155 &feature_ijmpcall,
4131 &feature_movw,
4132 &feature_sram,
4133 &feature_spmx,
4134 &feature_break,
4135 &feature_jmpcall,
4136 &feature_des,
4137 &feature_mul,
4138 &feature_eijmpcall,
4139 &feature_elpmx,4156 &feature_elpmx,
4140 &feature_addsubiw,4157 &feature_break,
4158 &feature_movw,
4141 },4159 },
4142};4160};
41434161
...@@ -4145,21 +4163,21 @@ pub const cpu_atxmega64d4 = Cpu{...@@ -4145,21 +4163,21 @@ pub const cpu_atxmega64d4 = Cpu{
4145 .name = "atxmega64d4",4163 .name = "atxmega64d4",
4146 .llvm_name = "atxmega64d4",4164 .llvm_name = "atxmega64d4",
4147 .dependencies = &[_]*const Feature {4165 .dependencies = &[_]*const Feature {
4148 &feature_lpmx,
4149 &feature_elpm,
4150 &feature_lpm,
4151 &feature_spm,
4152 &feature_ijmpcall,
4153 &feature_movw,
4154 &feature_sram,
4155 &feature_spmx,
4156 &feature_break,
4157 &feature_jmpcall,
4158 &feature_des,4166 &feature_des,
4159 &feature_mul,4167 &feature_sram,
4160 &feature_eijmpcall,4168 &feature_eijmpcall,
4161 &feature_elpmx,4169 &feature_jmpcall,
4170 &feature_mul,
4171 &feature_elpm,
4172 &feature_spmx,
4173 &feature_lpm,
4174 &feature_lpmx,
4175 &feature_spm,
4162 &feature_addsubiw,4176 &feature_addsubiw,
4177 &feature_ijmpcall,
4178 &feature_elpmx,
4179 &feature_break,
4180 &feature_movw,
4163 },4181 },
4164};4182};
41654183
...@@ -4167,21 +4185,21 @@ pub const cpu_atxmega8e5 = Cpu{...@@ -4167,21 +4185,21 @@ pub const cpu_atxmega8e5 = Cpu{
4167 .name = "atxmega8e5",4185 .name = "atxmega8e5",
4168 .llvm_name = "atxmega8e5",4186 .llvm_name = "atxmega8e5",
4169 .dependencies = &[_]*const Feature {4187 .dependencies = &[_]*const Feature {
4170 &feature_lpmx,4188 &feature_des,
4189 &feature_sram,
4190 &feature_eijmpcall,
4191 &feature_jmpcall,
4192 &feature_mul,
4171 &feature_elpm,4193 &feature_elpm,
4194 &feature_spmx,
4172 &feature_lpm,4195 &feature_lpm,
4196 &feature_lpmx,
4173 &feature_spm,4197 &feature_spm,
4198 &feature_addsubiw,
4174 &feature_ijmpcall,4199 &feature_ijmpcall,
4175 &feature_movw,
4176 &feature_sram,
4177 &feature_spmx,
4178 &feature_break,
4179 &feature_jmpcall,
4180 &feature_des,
4181 &feature_mul,
4182 &feature_eijmpcall,
4183 &feature_elpmx,4200 &feature_elpmx,
4184 &feature_addsubiw,4201 &feature_break,
4202 &feature_movw,
4185 },4203 },
4186};4204};
41874205
...@@ -4197,10 +4215,10 @@ pub const cpu_avr2 = Cpu{...@@ -4197,10 +4215,10 @@ pub const cpu_avr2 = Cpu{
4197 .name = "avr2",4215 .name = "avr2",
4198 .llvm_name = "avr2",4216 .llvm_name = "avr2",
4199 .dependencies = &[_]*const Feature {4217 .dependencies = &[_]*const Feature {
4200 &feature_lpm,
4201 &feature_ijmpcall,
4202 &feature_sram,4218 &feature_sram,
4219 &feature_lpm,
4203 &feature_addsubiw,4220 &feature_addsubiw,
4221 &feature_ijmpcall,
4204 },4222 },
4205};4223};
42064224
...@@ -4208,14 +4226,14 @@ pub const cpu_avr25 = Cpu{...@@ -4208,14 +4226,14 @@ pub const cpu_avr25 = Cpu{
4208 .name = "avr25",4226 .name = "avr25",
4209 .llvm_name = "avr25",4227 .llvm_name = "avr25",
4210 .dependencies = &[_]*const Feature {4228 .dependencies = &[_]*const Feature {
4211 &feature_lpmx,4229 &feature_sram,
4212 &feature_lpm,4230 &feature_lpm,
4231 &feature_lpmx,
4213 &feature_spm,4232 &feature_spm,
4233 &feature_addsubiw,
4214 &feature_ijmpcall,4234 &feature_ijmpcall,
4215 &feature_sram,
4216 &feature_break,4235 &feature_break,
4217 &feature_movw,4236 &feature_movw,
4218 &feature_addsubiw,
4219 },4237 },
4220};4238};
42214239
...@@ -4223,11 +4241,11 @@ pub const cpu_avr3 = Cpu{...@@ -4223,11 +4241,11 @@ pub const cpu_avr3 = Cpu{
4223 .name = "avr3",4241 .name = "avr3",
4224 .llvm_name = "avr3",4242 .llvm_name = "avr3",
4225 .dependencies = &[_]*const Feature {4243 .dependencies = &[_]*const Feature {
4226 &feature_lpm,
4227 &feature_ijmpcall,
4228 &feature_sram,4244 &feature_sram,
4229 &feature_jmpcall,4245 &feature_jmpcall,
4246 &feature_lpm,
4230 &feature_addsubiw,4247 &feature_addsubiw,
4248 &feature_ijmpcall,
4231 },4249 },
4232};4250};
42334251
...@@ -4235,12 +4253,12 @@ pub const cpu_avr31 = Cpu{...@@ -4235,12 +4253,12 @@ pub const cpu_avr31 = Cpu{
4235 .name = "avr31",4253 .name = "avr31",
4236 .llvm_name = "avr31",4254 .llvm_name = "avr31",
4237 .dependencies = &[_]*const Feature {4255 .dependencies = &[_]*const Feature {
4238 &feature_elpm,
4239 &feature_lpm,
4240 &feature_ijmpcall,
4241 &feature_sram,4256 &feature_sram,
4242 &feature_jmpcall,4257 &feature_jmpcall,
4258 &feature_elpm,
4259 &feature_lpm,
4243 &feature_addsubiw,4260 &feature_addsubiw,
4261 &feature_ijmpcall,
4244 },4262 },
4245};4263};
42464264
...@@ -4248,15 +4266,15 @@ pub const cpu_avr35 = Cpu{...@@ -4248,15 +4266,15 @@ pub const cpu_avr35 = Cpu{
4248 .name = "avr35",4266 .name = "avr35",
4249 .llvm_name = "avr35",4267 .llvm_name = "avr35",
4250 .dependencies = &[_]*const Feature {4268 .dependencies = &[_]*const Feature {
4251 &feature_lpmx,4269 &feature_sram,
4270 &feature_jmpcall,
4252 &feature_lpm,4271 &feature_lpm,
4272 &feature_lpmx,
4253 &feature_spm,4273 &feature_spm,
4274 &feature_addsubiw,
4254 &feature_ijmpcall,4275 &feature_ijmpcall,
4255 &feature_sram,
4256 &feature_break,4276 &feature_break,
4257 &feature_jmpcall,
4258 &feature_movw,4277 &feature_movw,
4259 &feature_addsubiw,
4260 },4278 },
4261};4279};
42624280
...@@ -4264,15 +4282,15 @@ pub const cpu_avr4 = Cpu{...@@ -4264,15 +4282,15 @@ pub const cpu_avr4 = Cpu{
4264 .name = "avr4",4282 .name = "avr4",
4265 .llvm_name = "avr4",4283 .llvm_name = "avr4",
4266 .dependencies = &[_]*const Feature {4284 .dependencies = &[_]*const Feature {
4267 &feature_lpmx,4285 &feature_sram,
4286 &feature_mul,
4268 &feature_lpm,4287 &feature_lpm,
4288 &feature_lpmx,
4269 &feature_spm,4289 &feature_spm,
4290 &feature_addsubiw,
4270 &feature_ijmpcall,4291 &feature_ijmpcall,
4271 &feature_sram,
4272 &feature_break,4292 &feature_break,
4273 &feature_mul,
4274 &feature_movw,4293 &feature_movw,
4275 &feature_addsubiw,
4276 },4294 },
4277};4295};
42784296
...@@ -4280,16 +4298,16 @@ pub const cpu_avr5 = Cpu{...@@ -4280,16 +4298,16 @@ pub const cpu_avr5 = Cpu{
4280 .name = "avr5",4298 .name = "avr5",
4281 .llvm_name = "avr5",4299 .llvm_name = "avr5",
4282 .dependencies = &[_]*const Feature {4300 .dependencies = &[_]*const Feature {
4283 &feature_lpmx,4301 &feature_sram,
4302 &feature_jmpcall,
4303 &feature_mul,
4284 &feature_lpm,4304 &feature_lpm,
4305 &feature_lpmx,
4285 &feature_spm,4306 &feature_spm,
4307 &feature_addsubiw,
4286 &feature_ijmpcall,4308 &feature_ijmpcall,
4287 &feature_sram,
4288 &feature_break,4309 &feature_break,
4289 &feature_jmpcall,
4290 &feature_mul,
4291 &feature_movw,4310 &feature_movw,
4292 &feature_addsubiw,
4293 },4311 },
4294};4312};
42954313
...@@ -4297,18 +4315,18 @@ pub const cpu_avr51 = Cpu{...@@ -4297,18 +4315,18 @@ pub const cpu_avr51 = Cpu{
4297 .name = "avr51",4315 .name = "avr51",
4298 .llvm_name = "avr51",4316 .llvm_name = "avr51",
4299 .dependencies = &[_]*const Feature {4317 .dependencies = &[_]*const Feature {
4300 &feature_lpmx,4318 &feature_sram,
4319 &feature_jmpcall,
4320 &feature_mul,
4301 &feature_elpm,4321 &feature_elpm,
4302 &feature_spm,
4303 &feature_lpm,4322 &feature_lpm,
4323 &feature_lpmx,
4324 &feature_spm,
4325 &feature_addsubiw,
4304 &feature_ijmpcall,4326 &feature_ijmpcall,
4305 &feature_elpmx,4327 &feature_elpmx,
4306 &feature_sram,
4307 &feature_break,4328 &feature_break,
4308 &feature_jmpcall,
4309 &feature_mul,
4310 &feature_movw,4329 &feature_movw,
4311 &feature_addsubiw,
4312 },4330 },
4313};4331};
43144332
...@@ -4316,18 +4334,18 @@ pub const cpu_avr6 = Cpu{...@@ -4316,18 +4334,18 @@ pub const cpu_avr6 = Cpu{
4316 .name = "avr6",4334 .name = "avr6",
4317 .llvm_name = "avr6",4335 .llvm_name = "avr6",
4318 .dependencies = &[_]*const Feature {4336 .dependencies = &[_]*const Feature {
4319 &feature_lpmx,4337 &feature_sram,
4338 &feature_jmpcall,
4339 &feature_mul,
4320 &feature_elpm,4340 &feature_elpm,
4321 &feature_lpm,4341 &feature_lpm,
4342 &feature_lpmx,
4322 &feature_spm,4343 &feature_spm,
4344 &feature_addsubiw,
4323 &feature_ijmpcall,4345 &feature_ijmpcall,
4324 &feature_movw,
4325 &feature_sram,
4326 &feature_break,
4327 &feature_jmpcall,
4328 &feature_mul,
4329 &feature_elpmx,4346 &feature_elpmx,
4330 &feature_addsubiw,4347 &feature_break,
4348 &feature_movw,
4331 },4349 },
4332};4350};
43334351
...@@ -4335,9 +4353,9 @@ pub const cpu_avrtiny = Cpu{...@@ -4335,9 +4353,9 @@ pub const cpu_avrtiny = Cpu{
4335 .name = "avrtiny",4353 .name = "avrtiny",
4336 .llvm_name = "avrtiny",4354 .llvm_name = "avrtiny",
4337 .dependencies = &[_]*const Feature {4355 .dependencies = &[_]*const Feature {
4338 &feature_break,
4339 &feature_tinyencoding,
4340 &feature_sram,4356 &feature_sram,
4357 &feature_tinyencoding,
4358 &feature_break,
4341 },4359 },
4342};4360};
43434361
...@@ -4345,21 +4363,21 @@ pub const cpu_avrxmega1 = Cpu{...@@ -4345,21 +4363,21 @@ pub const cpu_avrxmega1 = Cpu{
4345 .name = "avrxmega1",4363 .name = "avrxmega1",
4346 .llvm_name = "avrxmega1",4364 .llvm_name = "avrxmega1",
4347 .dependencies = &[_]*const Feature {4365 .dependencies = &[_]*const Feature {
4348 &feature_lpmx,4366 &feature_des,
4367 &feature_sram,
4368 &feature_eijmpcall,
4369 &feature_jmpcall,
4370 &feature_mul,
4349 &feature_elpm,4371 &feature_elpm,
4372 &feature_spmx,
4350 &feature_lpm,4373 &feature_lpm,
4374 &feature_lpmx,
4351 &feature_spm,4375 &feature_spm,
4376 &feature_addsubiw,
4352 &feature_ijmpcall,4377 &feature_ijmpcall,
4353 &feature_movw,
4354 &feature_sram,
4355 &feature_spmx,
4356 &feature_break,
4357 &feature_jmpcall,
4358 &feature_des,
4359 &feature_mul,
4360 &feature_eijmpcall,
4361 &feature_elpmx,4378 &feature_elpmx,
4362 &feature_addsubiw,4379 &feature_break,
4380 &feature_movw,
4363 },4381 },
4364};4382};
43654383
...@@ -4367,21 +4385,21 @@ pub const cpu_avrxmega2 = Cpu{...@@ -4367,21 +4385,21 @@ pub const cpu_avrxmega2 = Cpu{
4367 .name = "avrxmega2",4385 .name = "avrxmega2",
4368 .llvm_name = "avrxmega2",4386 .llvm_name = "avrxmega2",
4369 .dependencies = &[_]*const Feature {4387 .dependencies = &[_]*const Feature {
4370 &feature_lpmx,4388 &feature_des,
4389 &feature_sram,
4390 &feature_eijmpcall,
4391 &feature_jmpcall,
4392 &feature_mul,
4371 &feature_elpm,4393 &feature_elpm,
4394 &feature_spmx,
4372 &feature_lpm,4395 &feature_lpm,
4396 &feature_lpmx,
4373 &feature_spm,4397 &feature_spm,
4398 &feature_addsubiw,
4374 &feature_ijmpcall,4399 &feature_ijmpcall,
4375 &feature_movw,
4376 &feature_sram,
4377 &feature_spmx,
4378 &feature_break,
4379 &feature_jmpcall,
4380 &feature_des,
4381 &feature_mul,
4382 &feature_eijmpcall,
4383 &feature_elpmx,4400 &feature_elpmx,
4384 &feature_addsubiw,4401 &feature_break,
4402 &feature_movw,
4385 },4403 },
4386};4404};
43874405
...@@ -4389,21 +4407,21 @@ pub const cpu_avrxmega3 = Cpu{...@@ -4389,21 +4407,21 @@ pub const cpu_avrxmega3 = Cpu{
4389 .name = "avrxmega3",4407 .name = "avrxmega3",
4390 .llvm_name = "avrxmega3",4408 .llvm_name = "avrxmega3",
4391 .dependencies = &[_]*const Feature {4409 .dependencies = &[_]*const Feature {
4392 &feature_lpmx,4410 &feature_des,
4411 &feature_sram,
4412 &feature_eijmpcall,
4413 &feature_jmpcall,
4414 &feature_mul,
4393 &feature_elpm,4415 &feature_elpm,
4416 &feature_spmx,
4394 &feature_lpm,4417 &feature_lpm,
4418 &feature_lpmx,
4395 &feature_spm,4419 &feature_spm,
4420 &feature_addsubiw,
4396 &feature_ijmpcall,4421 &feature_ijmpcall,
4397 &feature_movw,
4398 &feature_sram,
4399 &feature_spmx,
4400 &feature_break,
4401 &feature_jmpcall,
4402 &feature_des,
4403 &feature_mul,
4404 &feature_eijmpcall,
4405 &feature_elpmx,4422 &feature_elpmx,
4406 &feature_addsubiw,4423 &feature_break,
4424 &feature_movw,
4407 },4425 },
4408};4426};
44094427
...@@ -4411,21 +4429,21 @@ pub const cpu_avrxmega4 = Cpu{...@@ -4411,21 +4429,21 @@ pub const cpu_avrxmega4 = Cpu{
4411 .name = "avrxmega4",4429 .name = "avrxmega4",
4412 .llvm_name = "avrxmega4",4430 .llvm_name = "avrxmega4",
4413 .dependencies = &[_]*const Feature {4431 .dependencies = &[_]*const Feature {
4414 &feature_lpmx,4432 &feature_des,
4433 &feature_sram,
4434 &feature_eijmpcall,
4435 &feature_jmpcall,
4436 &feature_mul,
4415 &feature_elpm,4437 &feature_elpm,
4438 &feature_spmx,
4416 &feature_lpm,4439 &feature_lpm,
4440 &feature_lpmx,
4417 &feature_spm,4441 &feature_spm,
4442 &feature_addsubiw,
4418 &feature_ijmpcall,4443 &feature_ijmpcall,
4419 &feature_movw,
4420 &feature_sram,
4421 &feature_spmx,
4422 &feature_break,
4423 &feature_jmpcall,
4424 &feature_des,
4425 &feature_mul,
4426 &feature_eijmpcall,
4427 &feature_elpmx,4444 &feature_elpmx,
4428 &feature_addsubiw,4445 &feature_break,
4446 &feature_movw,
4429 },4447 },
4430};4448};
44314449
...@@ -4433,21 +4451,21 @@ pub const cpu_avrxmega5 = Cpu{...@@ -4433,21 +4451,21 @@ pub const cpu_avrxmega5 = Cpu{
4433 .name = "avrxmega5",4451 .name = "avrxmega5",
4434 .llvm_name = "avrxmega5",4452 .llvm_name = "avrxmega5",
4435 .dependencies = &[_]*const Feature {4453 .dependencies = &[_]*const Feature {
4436 &feature_lpmx,4454 &feature_des,
4455 &feature_sram,
4456 &feature_eijmpcall,
4457 &feature_jmpcall,
4458 &feature_mul,
4437 &feature_elpm,4459 &feature_elpm,
4460 &feature_spmx,
4438 &feature_lpm,4461 &feature_lpm,
4462 &feature_lpmx,
4439 &feature_spm,4463 &feature_spm,
4464 &feature_addsubiw,
4440 &feature_ijmpcall,4465 &feature_ijmpcall,
4441 &feature_movw,
4442 &feature_sram,
4443 &feature_spmx,
4444 &feature_break,
4445 &feature_jmpcall,
4446 &feature_des,
4447 &feature_mul,
4448 &feature_eijmpcall,
4449 &feature_elpmx,4466 &feature_elpmx,
4450 &feature_addsubiw,4467 &feature_break,
4468 &feature_movw,
4451 },4469 },
4452};4470};
44534471
...@@ -4455,21 +4473,21 @@ pub const cpu_avrxmega6 = Cpu{...@@ -4455,21 +4473,21 @@ pub const cpu_avrxmega6 = Cpu{
4455 .name = "avrxmega6",4473 .name = "avrxmega6",
4456 .llvm_name = "avrxmega6",4474 .llvm_name = "avrxmega6",
4457 .dependencies = &[_]*const Feature {4475 .dependencies = &[_]*const Feature {
4458 &feature_lpmx,4476 &feature_des,
4477 &feature_sram,
4478 &feature_eijmpcall,
4479 &feature_jmpcall,
4480 &feature_mul,
4459 &feature_elpm,4481 &feature_elpm,
4482 &feature_spmx,
4460 &feature_lpm,4483 &feature_lpm,
4484 &feature_lpmx,
4461 &feature_spm,4485 &feature_spm,
4486 &feature_addsubiw,
4462 &feature_ijmpcall,4487 &feature_ijmpcall,
4463 &feature_movw,
4464 &feature_sram,
4465 &feature_spmx,
4466 &feature_break,
4467 &feature_jmpcall,
4468 &feature_des,
4469 &feature_mul,
4470 &feature_eijmpcall,
4471 &feature_elpmx,4488 &feature_elpmx,
4472 &feature_addsubiw,4489 &feature_break,
4490 &feature_movw,
4473 },4491 },
4474};4492};
44754493
...@@ -4477,21 +4495,21 @@ pub const cpu_avrxmega7 = Cpu{...@@ -4477,21 +4495,21 @@ pub const cpu_avrxmega7 = Cpu{
4477 .name = "avrxmega7",4495 .name = "avrxmega7",
4478 .llvm_name = "avrxmega7",4496 .llvm_name = "avrxmega7",
4479 .dependencies = &[_]*const Feature {4497 .dependencies = &[_]*const Feature {
4480 &feature_lpmx,4498 &feature_des,
4499 &feature_sram,
4500 &feature_eijmpcall,
4501 &feature_jmpcall,
4502 &feature_mul,
4481 &feature_elpm,4503 &feature_elpm,
4504 &feature_spmx,
4482 &feature_lpm,4505 &feature_lpm,
4506 &feature_lpmx,
4483 &feature_spm,4507 &feature_spm,
4508 &feature_addsubiw,
4484 &feature_ijmpcall,4509 &feature_ijmpcall,
4485 &feature_movw,
4486 &feature_sram,
4487 &feature_spmx,
4488 &feature_break,
4489 &feature_jmpcall,
4490 &feature_des,
4491 &feature_mul,
4492 &feature_eijmpcall,
4493 &feature_elpmx,4510 &feature_elpmx,
4494 &feature_addsubiw,4511 &feature_break,
4512 &feature_movw,
4495 },4513 },
4496};4514};
44974515
...@@ -4499,16 +4517,16 @@ pub const cpu_m3000 = Cpu{...@@ -4499,16 +4517,16 @@ pub const cpu_m3000 = Cpu{
4499 .name = "m3000",4517 .name = "m3000",
4500 .llvm_name = "m3000",4518 .llvm_name = "m3000",
4501 .dependencies = &[_]*const Feature {4519 .dependencies = &[_]*const Feature {
4502 &feature_lpmx,4520 &feature_sram,
4521 &feature_jmpcall,
4522 &feature_mul,
4503 &feature_lpm,4523 &feature_lpm,
4524 &feature_lpmx,
4504 &feature_spm,4525 &feature_spm,
4526 &feature_addsubiw,
4505 &feature_ijmpcall,4527 &feature_ijmpcall,
4506 &feature_sram,
4507 &feature_break,4528 &feature_break,
4508 &feature_jmpcall,
4509 &feature_mul,
4510 &feature_movw,4529 &feature_movw,
4511 &feature_addsubiw,
4512 },4530 },
4513};4531};
45144532
lib/std/target/bpf.zig+3
...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
4pub const feature_alu32 = Feature{4pub const feature_alu32 = Feature{
5 .name = "alu32",5 .name = "alu32",
6 .llvm_name = "alu32",
6 .description = "Enable ALU32 instructions",7 .description = "Enable ALU32 instructions",
7 .dependencies = &[_]*const Feature {8 .dependencies = &[_]*const Feature {
8 },9 },
...@@ -10,6 +11,7 @@ pub const feature_alu32 = Feature{...@@ -10,6 +11,7 @@ pub const feature_alu32 = Feature{
1011
11pub const feature_dummy = Feature{12pub const feature_dummy = Feature{
12 .name = "dummy",13 .name = "dummy",
14 .llvm_name = "dummy",
13 .description = "unused feature",15 .description = "unused feature",
14 .dependencies = &[_]*const Feature {16 .dependencies = &[_]*const Feature {
15 },17 },
...@@ -17,6 +19,7 @@ pub const feature_dummy = Feature{...@@ -17,6 +19,7 @@ pub const feature_dummy = Feature{
1719
18pub const feature_dwarfris = Feature{20pub const feature_dwarfris = Feature{
19 .name = "dwarfris",21 .name = "dwarfris",
22 .llvm_name = "dwarfris",
20 .description = "Disable MCAsmInfo DwarfUsesRelocationsAcrossSections",23 .description = "Disable MCAsmInfo DwarfUsesRelocationsAcrossSections",
21 .dependencies = &[_]*const Feature {24 .dependencies = &[_]*const Feature {
22 },25 },
lib/std/target/hexagon.zig+10
...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
4pub const feature_duplex = Feature{4pub const feature_duplex = Feature{
5 .name = "duplex",5 .name = "duplex",
6 .llvm_name = "duplex",
6 .description = "Enable generation of duplex instruction",7 .description = "Enable generation of duplex instruction",
7 .dependencies = &[_]*const Feature {8 .dependencies = &[_]*const Feature {
8 },9 },
...@@ -10,6 +11,7 @@ pub const feature_duplex = Feature{...@@ -10,6 +11,7 @@ pub const feature_duplex = Feature{
1011
11pub const feature_longCalls = Feature{12pub const feature_longCalls = Feature{
12 .name = "long-calls",13 .name = "long-calls",
14 .llvm_name = "long-calls",
13 .description = "Use constant-extended calls",15 .description = "Use constant-extended calls",
14 .dependencies = &[_]*const Feature {16 .dependencies = &[_]*const Feature {
15 },17 },
...@@ -17,6 +19,7 @@ pub const feature_longCalls = Feature{...@@ -17,6 +19,7 @@ pub const feature_longCalls = Feature{
1719
18pub const feature_mem_noshuf = Feature{20pub const feature_mem_noshuf = Feature{
19 .name = "mem_noshuf",21 .name = "mem_noshuf",
22 .llvm_name = "mem_noshuf",
20 .description = "Supports mem_noshuf feature",23 .description = "Supports mem_noshuf feature",
21 .dependencies = &[_]*const Feature {24 .dependencies = &[_]*const Feature {
22 },25 },
...@@ -24,6 +27,7 @@ pub const feature_mem_noshuf = Feature{...@@ -24,6 +27,7 @@ pub const feature_mem_noshuf = Feature{
2427
25pub const feature_memops = Feature{28pub const feature_memops = Feature{
26 .name = "memops",29 .name = "memops",
30 .llvm_name = "memops",
27 .description = "Use memop instructions",31 .description = "Use memop instructions",
28 .dependencies = &[_]*const Feature {32 .dependencies = &[_]*const Feature {
29 },33 },
...@@ -31,6 +35,7 @@ pub const feature_memops = Feature{...@@ -31,6 +35,7 @@ pub const feature_memops = Feature{
3135
32pub const feature_nvj = Feature{36pub const feature_nvj = Feature{
33 .name = "nvj",37 .name = "nvj",
38 .llvm_name = "nvj",
34 .description = "Support for new-value jumps",39 .description = "Support for new-value jumps",
35 .dependencies = &[_]*const Feature {40 .dependencies = &[_]*const Feature {
36 &feature_packets,41 &feature_packets,
...@@ -39,6 +44,7 @@ pub const feature_nvj = Feature{...@@ -39,6 +44,7 @@ pub const feature_nvj = Feature{
3944
40pub const feature_nvs = Feature{45pub const feature_nvs = Feature{
41 .name = "nvs",46 .name = "nvs",
47 .llvm_name = "nvs",
42 .description = "Support for new-value stores",48 .description = "Support for new-value stores",
43 .dependencies = &[_]*const Feature {49 .dependencies = &[_]*const Feature {
44 &feature_packets,50 &feature_packets,
...@@ -47,6 +53,7 @@ pub const feature_nvs = Feature{...@@ -47,6 +53,7 @@ pub const feature_nvs = Feature{
4753
48pub const feature_noreturnStackElim = Feature{54pub const feature_noreturnStackElim = Feature{
49 .name = "noreturn-stack-elim",55 .name = "noreturn-stack-elim",
56 .llvm_name = "noreturn-stack-elim",
50 .description = "Eliminate stack allocation in a noreturn function when possible",57 .description = "Eliminate stack allocation in a noreturn function when possible",
51 .dependencies = &[_]*const Feature {58 .dependencies = &[_]*const Feature {
52 },59 },
...@@ -54,6 +61,7 @@ pub const feature_noreturnStackElim = Feature{...@@ -54,6 +61,7 @@ pub const feature_noreturnStackElim = Feature{
5461
55pub const feature_packets = Feature{62pub const feature_packets = Feature{
56 .name = "packets",63 .name = "packets",
64 .llvm_name = "packets",
57 .description = "Support for instruction packets",65 .description = "Support for instruction packets",
58 .dependencies = &[_]*const Feature {66 .dependencies = &[_]*const Feature {
59 },67 },
...@@ -61,6 +69,7 @@ pub const feature_packets = Feature{...@@ -61,6 +69,7 @@ pub const feature_packets = Feature{
6169
62pub const feature_reservedR19 = Feature{70pub const feature_reservedR19 = Feature{
63 .name = "reserved-r19",71 .name = "reserved-r19",
72 .llvm_name = "reserved-r19",
64 .description = "Reserve register R19",73 .description = "Reserve register R19",
65 .dependencies = &[_]*const Feature {74 .dependencies = &[_]*const Feature {
66 },75 },
...@@ -68,6 +77,7 @@ pub const feature_reservedR19 = Feature{...@@ -68,6 +77,7 @@ pub const feature_reservedR19 = Feature{
6877
69pub const feature_smallData = Feature{78pub const feature_smallData = Feature{
70 .name = "small-data",79 .name = "small-data",
80 .llvm_name = "small-data",
71 .description = "Allow GP-relative addressing of global variables",81 .description = "Allow GP-relative addressing of global variables",
72 .dependencies = &[_]*const Feature {82 .dependencies = &[_]*const Feature {
73 },83 },
lib/std/target/mips.zig+146-96
...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
4pub const feature_abs2008 = Feature{4pub const feature_abs2008 = Feature{
5 .name = "abs2008",5 .name = "abs2008",
6 .llvm_name = "abs2008",
6 .description = "Disable IEEE 754-2008 abs.fmt mode",7 .description = "Disable IEEE 754-2008 abs.fmt mode",
7 .dependencies = &[_]*const Feature {8 .dependencies = &[_]*const Feature {
8 },9 },
...@@ -10,6 +11,7 @@ pub const feature_abs2008 = Feature{...@@ -10,6 +11,7 @@ pub const feature_abs2008 = Feature{
1011
11pub const feature_crc = Feature{12pub const feature_crc = Feature{
12 .name = "crc",13 .name = "crc",
14 .llvm_name = "crc",
13 .description = "Mips R6 CRC ASE",15 .description = "Mips R6 CRC ASE",
14 .dependencies = &[_]*const Feature {16 .dependencies = &[_]*const Feature {
15 },17 },
...@@ -17,21 +19,23 @@ pub const feature_crc = Feature{...@@ -17,21 +19,23 @@ pub const feature_crc = Feature{
1719
18pub const feature_cnmips = Feature{20pub const feature_cnmips = Feature{
19 .name = "cnmips",21 .name = "cnmips",
22 .llvm_name = "cnmips",
20 .description = "Octeon cnMIPS Support",23 .description = "Octeon cnMIPS Support",
21 .dependencies = &[_]*const Feature {24 .dependencies = &[_]*const Feature {
22 &feature_mips4_32,
23 &feature_mips4_32r2,
24 &feature_mips1,25 &feature_mips1,
25 &feature_mips3_32r2,26 &feature_mips3_32r2,
27 &feature_mips4_32,
26 &feature_mips5_32r2,28 &feature_mips5_32r2,
27 &feature_mips3_32,
28 &feature_gp64,
29 &feature_fp64,29 &feature_fp64,
30 &feature_gp64,
31 &feature_mips4_32r2,
32 &feature_mips3_32,
30 },33 },
31};34};
3235
33pub const feature_dsp = Feature{36pub const feature_dsp = Feature{
34 .name = "dsp",37 .name = "dsp",
38 .llvm_name = "dsp",
35 .description = "Mips DSP ASE",39 .description = "Mips DSP ASE",
36 .dependencies = &[_]*const Feature {40 .dependencies = &[_]*const Feature {
37 },41 },
...@@ -39,6 +43,7 @@ pub const feature_dsp = Feature{...@@ -39,6 +43,7 @@ pub const feature_dsp = Feature{
3943
40pub const feature_dspr2 = Feature{44pub const feature_dspr2 = Feature{
41 .name = "dspr2",45 .name = "dspr2",
46 .llvm_name = "dspr2",
42 .description = "Mips DSP-R2 ASE",47 .description = "Mips DSP-R2 ASE",
43 .dependencies = &[_]*const Feature {48 .dependencies = &[_]*const Feature {
44 &feature_dsp,49 &feature_dsp,
...@@ -47,6 +52,7 @@ pub const feature_dspr2 = Feature{...@@ -47,6 +52,7 @@ pub const feature_dspr2 = Feature{
4752
48pub const feature_dspr3 = Feature{53pub const feature_dspr3 = Feature{
49 .name = "dspr3",54 .name = "dspr3",
55 .llvm_name = "dspr3",
50 .description = "Mips DSP-R3 ASE",56 .description = "Mips DSP-R3 ASE",
51 .dependencies = &[_]*const Feature {57 .dependencies = &[_]*const Feature {
52 &feature_dsp,58 &feature_dsp,
...@@ -55,6 +61,7 @@ pub const feature_dspr3 = Feature{...@@ -55,6 +61,7 @@ pub const feature_dspr3 = Feature{
5561
56pub const feature_eva = Feature{62pub const feature_eva = Feature{
57 .name = "eva",63 .name = "eva",
64 .llvm_name = "eva",
58 .description = "Mips EVA ASE",65 .description = "Mips EVA ASE",
59 .dependencies = &[_]*const Feature {66 .dependencies = &[_]*const Feature {
60 },67 },
...@@ -62,6 +69,7 @@ pub const feature_eva = Feature{...@@ -62,6 +69,7 @@ pub const feature_eva = Feature{
6269
63pub const feature_fp64 = Feature{70pub const feature_fp64 = Feature{
64 .name = "fp64",71 .name = "fp64",
72 .llvm_name = "fp64",
65 .description = "Support 64-bit FP registers",73 .description = "Support 64-bit FP registers",
66 .dependencies = &[_]*const Feature {74 .dependencies = &[_]*const Feature {
67 },75 },
...@@ -69,6 +77,7 @@ pub const feature_fp64 = Feature{...@@ -69,6 +77,7 @@ pub const feature_fp64 = Feature{
6977
70pub const feature_fpxx = Feature{78pub const feature_fpxx = Feature{
71 .name = "fpxx",79 .name = "fpxx",
80 .llvm_name = "fpxx",
72 .description = "Support for FPXX",81 .description = "Support for FPXX",
73 .dependencies = &[_]*const Feature {82 .dependencies = &[_]*const Feature {
74 },83 },
...@@ -76,6 +85,7 @@ pub const feature_fpxx = Feature{...@@ -76,6 +85,7 @@ pub const feature_fpxx = Feature{
7685
77pub const feature_ginv = Feature{86pub const feature_ginv = Feature{
78 .name = "ginv",87 .name = "ginv",
88 .llvm_name = "ginv",
79 .description = "Mips Global Invalidate ASE",89 .description = "Mips Global Invalidate ASE",
80 .dependencies = &[_]*const Feature {90 .dependencies = &[_]*const Feature {
81 },91 },
...@@ -83,6 +93,7 @@ pub const feature_ginv = Feature{...@@ -83,6 +93,7 @@ pub const feature_ginv = Feature{
8393
84pub const feature_gp64 = Feature{94pub const feature_gp64 = Feature{
85 .name = "gp64",95 .name = "gp64",
96 .llvm_name = "gp64",
86 .description = "General Purpose Registers are 64-bit wide",97 .description = "General Purpose Registers are 64-bit wide",
87 .dependencies = &[_]*const Feature {98 .dependencies = &[_]*const Feature {
88 },99 },
...@@ -90,6 +101,7 @@ pub const feature_gp64 = Feature{...@@ -90,6 +101,7 @@ pub const feature_gp64 = Feature{
90101
91pub const feature_longCalls = Feature{102pub const feature_longCalls = Feature{
92 .name = "long-calls",103 .name = "long-calls",
104 .llvm_name = "long-calls",
93 .description = "Disable use of the jal instruction",105 .description = "Disable use of the jal instruction",
94 .dependencies = &[_]*const Feature {106 .dependencies = &[_]*const Feature {
95 },107 },
...@@ -97,6 +109,7 @@ pub const feature_longCalls = Feature{...@@ -97,6 +109,7 @@ pub const feature_longCalls = Feature{
97109
98pub const feature_msa = Feature{110pub const feature_msa = Feature{
99 .name = "msa",111 .name = "msa",
112 .llvm_name = "msa",
100 .description = "Mips MSA ASE",113 .description = "Mips MSA ASE",
101 .dependencies = &[_]*const Feature {114 .dependencies = &[_]*const Feature {
102 },115 },
...@@ -104,6 +117,7 @@ pub const feature_msa = Feature{...@@ -104,6 +117,7 @@ pub const feature_msa = Feature{
104117
105pub const feature_mt = Feature{118pub const feature_mt = Feature{
106 .name = "mt",119 .name = "mt",
120 .llvm_name = "mt",
107 .description = "Mips MT ASE",121 .description = "Mips MT ASE",
108 .dependencies = &[_]*const Feature {122 .dependencies = &[_]*const Feature {
109 },123 },
...@@ -111,6 +125,7 @@ pub const feature_mt = Feature{...@@ -111,6 +125,7 @@ pub const feature_mt = Feature{
111125
112pub const feature_nomadd4 = Feature{126pub const feature_nomadd4 = Feature{
113 .name = "nomadd4",127 .name = "nomadd4",
128 .llvm_name = "nomadd4",
114 .description = "Disable 4-operand madd.fmt and related instructions",129 .description = "Disable 4-operand madd.fmt and related instructions",
115 .dependencies = &[_]*const Feature {130 .dependencies = &[_]*const Feature {
116 },131 },
...@@ -118,6 +133,7 @@ pub const feature_nomadd4 = Feature{...@@ -118,6 +133,7 @@ pub const feature_nomadd4 = Feature{
118133
119pub const feature_micromips = Feature{134pub const feature_micromips = Feature{
120 .name = "micromips",135 .name = "micromips",
136 .llvm_name = "micromips",
121 .description = "microMips mode",137 .description = "microMips mode",
122 .dependencies = &[_]*const Feature {138 .dependencies = &[_]*const Feature {
123 },139 },
...@@ -125,6 +141,7 @@ pub const feature_micromips = Feature{...@@ -125,6 +141,7 @@ pub const feature_micromips = Feature{
125141
126pub const feature_mips1 = Feature{142pub const feature_mips1 = Feature{
127 .name = "mips1",143 .name = "mips1",
144 .llvm_name = "mips1",
128 .description = "Mips I ISA Support [highly experimental]",145 .description = "Mips I ISA Support [highly experimental]",
129 .dependencies = &[_]*const Feature {146 .dependencies = &[_]*const Feature {
130 },147 },
...@@ -132,6 +149,7 @@ pub const feature_mips1 = Feature{...@@ -132,6 +149,7 @@ pub const feature_mips1 = Feature{
132149
133pub const feature_mips2 = Feature{150pub const feature_mips2 = Feature{
134 .name = "mips2",151 .name = "mips2",
152 .llvm_name = "mips2",
135 .description = "Mips II ISA Support [highly experimental]",153 .description = "Mips II ISA Support [highly experimental]",
136 .dependencies = &[_]*const Feature {154 .dependencies = &[_]*const Feature {
137 &feature_mips1,155 &feature_mips1,
...@@ -140,18 +158,20 @@ pub const feature_mips2 = Feature{...@@ -140,18 +158,20 @@ pub const feature_mips2 = Feature{
140158
141pub const feature_mips3 = Feature{159pub const feature_mips3 = Feature{
142 .name = "mips3",160 .name = "mips3",
161 .llvm_name = "mips3",
143 .description = "MIPS III ISA Support [highly experimental]",162 .description = "MIPS III ISA Support [highly experimental]",
144 .dependencies = &[_]*const Feature {163 .dependencies = &[_]*const Feature {
145 &feature_mips1,164 &feature_mips1,
146 &feature_mips3_32r2,165 &feature_mips3_32r2,
147 &feature_mips3_32,
148 &feature_gp64,
149 &feature_fp64,166 &feature_fp64,
167 &feature_gp64,
168 &feature_mips3_32,
150 },169 },
151};170};
152171
153pub const feature_mips3_32 = Feature{172pub const feature_mips3_32 = Feature{
154 .name = "mips3_32",173 .name = "mips3_32",
174 .llvm_name = "mips3_32",
155 .description = "Subset of MIPS-III that is also in MIPS32 [highly experimental]",175 .description = "Subset of MIPS-III that is also in MIPS32 [highly experimental]",
156 .dependencies = &[_]*const Feature {176 .dependencies = &[_]*const Feature {
157 },177 },
...@@ -159,6 +179,7 @@ pub const feature_mips3_32 = Feature{...@@ -159,6 +179,7 @@ pub const feature_mips3_32 = Feature{
159179
160pub const feature_mips3_32r2 = Feature{180pub const feature_mips3_32r2 = Feature{
161 .name = "mips3_32r2",181 .name = "mips3_32r2",
182 .llvm_name = "mips3_32r2",
162 .description = "Subset of MIPS-III that is also in MIPS32r2 [highly experimental]",183 .description = "Subset of MIPS-III that is also in MIPS32r2 [highly experimental]",
163 .dependencies = &[_]*const Feature {184 .dependencies = &[_]*const Feature {
164 },185 },
...@@ -166,20 +187,22 @@ pub const feature_mips3_32r2 = Feature{...@@ -166,20 +187,22 @@ pub const feature_mips3_32r2 = Feature{
166187
167pub const feature_mips4 = Feature{188pub const feature_mips4 = Feature{
168 .name = "mips4",189 .name = "mips4",
190 .llvm_name = "mips4",
169 .description = "MIPS IV ISA Support",191 .description = "MIPS IV ISA Support",
170 .dependencies = &[_]*const Feature {192 .dependencies = &[_]*const Feature {
171 &feature_mips4_32,
172 &feature_mips4_32r2,
173 &feature_mips1,193 &feature_mips1,
174 &feature_mips3_32r2,194 &feature_mips3_32r2,
175 &feature_mips3_32,195 &feature_mips4_32,
176 &feature_gp64,
177 &feature_fp64,196 &feature_fp64,
197 &feature_gp64,
198 &feature_mips4_32r2,
199 &feature_mips3_32,
178 },200 },
179};201};
180202
181pub const feature_mips4_32 = Feature{203pub const feature_mips4_32 = Feature{
182 .name = "mips4_32",204 .name = "mips4_32",
205 .llvm_name = "mips4_32",
183 .description = "Subset of MIPS-IV that is also in MIPS32 [highly experimental]",206 .description = "Subset of MIPS-IV that is also in MIPS32 [highly experimental]",
184 .dependencies = &[_]*const Feature {207 .dependencies = &[_]*const Feature {
185 },208 },
...@@ -187,6 +210,7 @@ pub const feature_mips4_32 = Feature{...@@ -187,6 +210,7 @@ pub const feature_mips4_32 = Feature{
187210
188pub const feature_mips4_32r2 = Feature{211pub const feature_mips4_32r2 = Feature{
189 .name = "mips4_32r2",212 .name = "mips4_32r2",
213 .llvm_name = "mips4_32r2",
190 .description = "Subset of MIPS-IV that is also in MIPS32r2 [highly experimental]",214 .description = "Subset of MIPS-IV that is also in MIPS32r2 [highly experimental]",
191 .dependencies = &[_]*const Feature {215 .dependencies = &[_]*const Feature {
192 },216 },
...@@ -194,21 +218,23 @@ pub const feature_mips4_32r2 = Feature{...@@ -194,21 +218,23 @@ pub const feature_mips4_32r2 = Feature{
194218
195pub const feature_mips5 = Feature{219pub const feature_mips5 = Feature{
196 .name = "mips5",220 .name = "mips5",
221 .llvm_name = "mips5",
197 .description = "MIPS V ISA Support [highly experimental]",222 .description = "MIPS V ISA Support [highly experimental]",
198 .dependencies = &[_]*const Feature {223 .dependencies = &[_]*const Feature {
199 &feature_mips3_32,
200 &feature_gp64,
201 &feature_mips1,224 &feature_mips1,
202 &feature_mips3_32r2,225 &feature_mips3_32r2,
203 &feature_mips5_32r2,
204 &feature_mips4_32,226 &feature_mips4_32,
205 &feature_mips4_32r2,227 &feature_mips5_32r2,
206 &feature_fp64,228 &feature_fp64,
229 &feature_gp64,
230 &feature_mips4_32r2,
231 &feature_mips3_32,
207 },232 },
208};233};
209234
210pub const feature_mips5_32r2 = Feature{235pub const feature_mips5_32r2 = Feature{
211 .name = "mips5_32r2",236 .name = "mips5_32r2",
237 .llvm_name = "mips5_32r2",
212 .description = "Subset of MIPS-V that is also in MIPS32r2 [highly experimental]",238 .description = "Subset of MIPS-V that is also in MIPS32r2 [highly experimental]",
213 .dependencies = &[_]*const Feature {239 .dependencies = &[_]*const Feature {
214 },240 },
...@@ -216,6 +242,7 @@ pub const feature_mips5_32r2 = Feature{...@@ -216,6 +242,7 @@ pub const feature_mips5_32r2 = Feature{
216242
217pub const feature_mips16 = Feature{243pub const feature_mips16 = Feature{
218 .name = "mips16",244 .name = "mips16",
245 .llvm_name = "mips16",
219 .description = "Mips16 mode",246 .description = "Mips16 mode",
220 .dependencies = &[_]*const Feature {247 .dependencies = &[_]*const Feature {
221 },248 },
...@@ -223,148 +250,159 @@ pub const feature_mips16 = Feature{...@@ -223,148 +250,159 @@ pub const feature_mips16 = Feature{
223250
224pub const feature_mips32 = Feature{251pub const feature_mips32 = Feature{
225 .name = "mips32",252 .name = "mips32",
253 .llvm_name = "mips32",
226 .description = "Mips32 ISA Support",254 .description = "Mips32 ISA Support",
227 .dependencies = &[_]*const Feature {255 .dependencies = &[_]*const Feature {
228 &feature_mips1,256 &feature_mips1,
229 &feature_mips3_32,
230 &feature_mips4_32,257 &feature_mips4_32,
258 &feature_mips3_32,
231 },259 },
232};260};
233261
234pub const feature_mips32r2 = Feature{262pub const feature_mips32r2 = Feature{
235 .name = "mips32r2",263 .name = "mips32r2",
264 .llvm_name = "mips32r2",
236 .description = "Mips32r2 ISA Support",265 .description = "Mips32r2 ISA Support",
237 .dependencies = &[_]*const Feature {266 .dependencies = &[_]*const Feature {
238 &feature_mips4_32,
239 &feature_mips1,267 &feature_mips1,
240 &feature_mips3_32r2,268 &feature_mips3_32r2,
269 &feature_mips4_32,
241 &feature_mips5_32r2,270 &feature_mips5_32r2,
242 &feature_mips3_32,
243 &feature_mips4_32r2,271 &feature_mips4_32r2,
272 &feature_mips3_32,
244 },273 },
245};274};
246275
247pub const feature_mips32r3 = Feature{276pub const feature_mips32r3 = Feature{
248 .name = "mips32r3",277 .name = "mips32r3",
278 .llvm_name = "mips32r3",
249 .description = "Mips32r3 ISA Support",279 .description = "Mips32r3 ISA Support",
250 .dependencies = &[_]*const Feature {280 .dependencies = &[_]*const Feature {
251 &feature_mips3_32,
252 &feature_mips1,281 &feature_mips1,
253 &feature_mips3_32r2,282 &feature_mips3_32r2,
254 &feature_mips5_32r2,
255 &feature_mips4_32,283 &feature_mips4_32,
284 &feature_mips5_32r2,
256 &feature_mips4_32r2,285 &feature_mips4_32r2,
286 &feature_mips3_32,
257 },287 },
258};288};
259289
260pub const feature_mips32r5 = Feature{290pub const feature_mips32r5 = Feature{
261 .name = "mips32r5",291 .name = "mips32r5",
292 .llvm_name = "mips32r5",
262 .description = "Mips32r5 ISA Support",293 .description = "Mips32r5 ISA Support",
263 .dependencies = &[_]*const Feature {294 .dependencies = &[_]*const Feature {
264 &feature_mips4_32,
265 &feature_mips1,295 &feature_mips1,
266 &feature_mips3_32r2,296 &feature_mips3_32r2,
297 &feature_mips4_32,
267 &feature_mips5_32r2,298 &feature_mips5_32r2,
268 &feature_mips3_32,
269 &feature_mips4_32r2,299 &feature_mips4_32r2,
300 &feature_mips3_32,
270 },301 },
271};302};
272303
273pub const feature_mips32r6 = Feature{304pub const feature_mips32r6 = Feature{
274 .name = "mips32r6",305 .name = "mips32r6",
306 .llvm_name = "mips32r6",
275 .description = "Mips32r6 ISA Support [experimental]",307 .description = "Mips32r6 ISA Support [experimental]",
276 .dependencies = &[_]*const Feature {308 .dependencies = &[_]*const Feature {
277 &feature_abs2008,309 &feature_abs2008,
278 &feature_nan2008,
279 &feature_mips3_32,
280 &feature_mips1,310 &feature_mips1,
281 &feature_mips3_32r2,311 &feature_mips3_32r2,
282 &feature_mips5_32r2,
283 &feature_mips4_32,312 &feature_mips4_32,
284 &feature_mips4_32r2,313 &feature_nan2008,
314 &feature_mips5_32r2,
285 &feature_fp64,315 &feature_fp64,
316 &feature_mips4_32r2,
317 &feature_mips3_32,
286 },318 },
287};319};
288320
289pub const feature_mips64 = Feature{321pub const feature_mips64 = Feature{
290 .name = "mips64",322 .name = "mips64",
323 .llvm_name = "mips64",
291 .description = "Mips64 ISA Support",324 .description = "Mips64 ISA Support",
292 .dependencies = &[_]*const Feature {325 .dependencies = &[_]*const Feature {
293 &feature_mips4_32,
294 &feature_mips4_32r2,
295 &feature_mips1,326 &feature_mips1,
296 &feature_mips3_32r2,327 &feature_mips3_32r2,
328 &feature_mips4_32,
297 &feature_mips5_32r2,329 &feature_mips5_32r2,
298 &feature_mips3_32,
299 &feature_gp64,
300 &feature_fp64,330 &feature_fp64,
331 &feature_gp64,
332 &feature_mips4_32r2,
333 &feature_mips3_32,
301 },334 },
302};335};
303336
304pub const feature_mips64r2 = Feature{337pub const feature_mips64r2 = Feature{
305 .name = "mips64r2",338 .name = "mips64r2",
339 .llvm_name = "mips64r2",
306 .description = "Mips64r2 ISA Support",340 .description = "Mips64r2 ISA Support",
307 .dependencies = &[_]*const Feature {341 .dependencies = &[_]*const Feature {
308 &feature_mips3_32,
309 &feature_gp64,
310 &feature_mips1,342 &feature_mips1,
311 &feature_mips3_32r2,343 &feature_mips3_32r2,
312 &feature_mips5_32r2,
313 &feature_mips4_32,344 &feature_mips4_32,
314 &feature_mips4_32r2,345 &feature_mips5_32r2,
315 &feature_fp64,346 &feature_fp64,
347 &feature_gp64,
348 &feature_mips4_32r2,
349 &feature_mips3_32,
316 },350 },
317};351};
318352
319pub const feature_mips64r3 = Feature{353pub const feature_mips64r3 = Feature{
320 .name = "mips64r3",354 .name = "mips64r3",
355 .llvm_name = "mips64r3",
321 .description = "Mips64r3 ISA Support",356 .description = "Mips64r3 ISA Support",
322 .dependencies = &[_]*const Feature {357 .dependencies = &[_]*const Feature {
323 &feature_mips4_32,
324 &feature_gp64,
325 &feature_mips1,358 &feature_mips1,
326 &feature_mips3_32r2,359 &feature_mips3_32r2,
360 &feature_mips4_32,
327 &feature_mips5_32r2,361 &feature_mips5_32r2,
328 &feature_mips3_32,
329 &feature_mips4_32r2,
330 &feature_fp64,362 &feature_fp64,
363 &feature_gp64,
364 &feature_mips4_32r2,
365 &feature_mips3_32,
331 },366 },
332};367};
333368
334pub const feature_mips64r5 = Feature{369pub const feature_mips64r5 = Feature{
335 .name = "mips64r5",370 .name = "mips64r5",
371 .llvm_name = "mips64r5",
336 .description = "Mips64r5 ISA Support",372 .description = "Mips64r5 ISA Support",
337 .dependencies = &[_]*const Feature {373 .dependencies = &[_]*const Feature {
338 &feature_mips3_32,
339 &feature_gp64,
340 &feature_mips1,374 &feature_mips1,
341 &feature_mips3_32r2,375 &feature_mips3_32r2,
342 &feature_mips5_32r2,
343 &feature_mips4_32,376 &feature_mips4_32,
344 &feature_mips4_32r2,377 &feature_mips5_32r2,
345 &feature_fp64,378 &feature_fp64,
379 &feature_gp64,
380 &feature_mips4_32r2,
381 &feature_mips3_32,
346 },382 },
347};383};
348384
349pub const feature_mips64r6 = Feature{385pub const feature_mips64r6 = Feature{
350 .name = "mips64r6",386 .name = "mips64r6",
387 .llvm_name = "mips64r6",
351 .description = "Mips64r6 ISA Support [experimental]",388 .description = "Mips64r6 ISA Support [experimental]",
352 .dependencies = &[_]*const Feature {389 .dependencies = &[_]*const Feature {
353 &feature_abs2008,390 &feature_abs2008,
354 &feature_nan2008,
355 &feature_mips4_32,
356 &feature_gp64,
357 &feature_mips1,391 &feature_mips1,
358 &feature_mips3_32r2,392 &feature_mips3_32r2,
393 &feature_mips4_32,
394 &feature_nan2008,
359 &feature_mips5_32r2,395 &feature_mips5_32r2,
360 &feature_mips3_32,
361 &feature_mips4_32r2,
362 &feature_fp64,396 &feature_fp64,
397 &feature_gp64,
398 &feature_mips4_32r2,
399 &feature_mips3_32,
363 },400 },
364};401};
365402
366pub const feature_nan2008 = Feature{403pub const feature_nan2008 = Feature{
367 .name = "nan2008",404 .name = "nan2008",
405 .llvm_name = "nan2008",
368 .description = "IEEE 754-2008 NaN encoding",406 .description = "IEEE 754-2008 NaN encoding",
369 .dependencies = &[_]*const Feature {407 .dependencies = &[_]*const Feature {
370 },408 },
...@@ -372,6 +410,7 @@ pub const feature_nan2008 = Feature{...@@ -372,6 +410,7 @@ pub const feature_nan2008 = Feature{
372410
373pub const feature_noabicalls = Feature{411pub const feature_noabicalls = Feature{
374 .name = "noabicalls",412 .name = "noabicalls",
413 .llvm_name = "noabicalls",
375 .description = "Disable SVR4-style position-independent code",414 .description = "Disable SVR4-style position-independent code",
376 .dependencies = &[_]*const Feature {415 .dependencies = &[_]*const Feature {
377 },416 },
...@@ -379,6 +418,7 @@ pub const feature_noabicalls = Feature{...@@ -379,6 +418,7 @@ pub const feature_noabicalls = Feature{
379418
380pub const feature_nooddspreg = Feature{419pub const feature_nooddspreg = Feature{
381 .name = "nooddspreg",420 .name = "nooddspreg",
421 .llvm_name = "nooddspreg",
382 .description = "Disable odd numbered single-precision registers",422 .description = "Disable odd numbered single-precision registers",
383 .dependencies = &[_]*const Feature {423 .dependencies = &[_]*const Feature {
384 },424 },
...@@ -386,6 +426,7 @@ pub const feature_nooddspreg = Feature{...@@ -386,6 +426,7 @@ pub const feature_nooddspreg = Feature{
386426
387pub const feature_ptr64 = Feature{427pub const feature_ptr64 = Feature{
388 .name = "ptr64",428 .name = "ptr64",
429 .llvm_name = "ptr64",
389 .description = "Pointers are 64-bit wide",430 .description = "Pointers are 64-bit wide",
390 .dependencies = &[_]*const Feature {431 .dependencies = &[_]*const Feature {
391 },432 },
...@@ -393,6 +434,7 @@ pub const feature_ptr64 = Feature{...@@ -393,6 +434,7 @@ pub const feature_ptr64 = Feature{
393434
394pub const feature_singleFloat = Feature{435pub const feature_singleFloat = Feature{
395 .name = "single-float",436 .name = "single-float",
437 .llvm_name = "single-float",
396 .description = "Only supports single precision float",438 .description = "Only supports single precision float",
397 .dependencies = &[_]*const Feature {439 .dependencies = &[_]*const Feature {
398 },440 },
...@@ -400,6 +442,7 @@ pub const feature_singleFloat = Feature{...@@ -400,6 +442,7 @@ pub const feature_singleFloat = Feature{
400442
401pub const feature_softFloat = Feature{443pub const feature_softFloat = Feature{
402 .name = "soft-float",444 .name = "soft-float",
445 .llvm_name = "soft-float",
403 .description = "Does not support floating point instructions",446 .description = "Does not support floating point instructions",
404 .dependencies = &[_]*const Feature {447 .dependencies = &[_]*const Feature {
405 },448 },
...@@ -407,6 +450,7 @@ pub const feature_softFloat = Feature{...@@ -407,6 +450,7 @@ pub const feature_softFloat = Feature{
407450
408pub const feature_sym32 = Feature{451pub const feature_sym32 = Feature{
409 .name = "sym32",452 .name = "sym32",
453 .llvm_name = "sym32",
410 .description = "Symbols are 32 bit on Mips64",454 .description = "Symbols are 32 bit on Mips64",
411 .dependencies = &[_]*const Feature {455 .dependencies = &[_]*const Feature {
412 },456 },
...@@ -414,6 +458,7 @@ pub const feature_sym32 = Feature{...@@ -414,6 +458,7 @@ pub const feature_sym32 = Feature{
414458
415pub const feature_useIndirectJumpHazard = Feature{459pub const feature_useIndirectJumpHazard = Feature{
416 .name = "use-indirect-jump-hazard",460 .name = "use-indirect-jump-hazard",
461 .llvm_name = "use-indirect-jump-hazard",
417 .description = "Use indirect jump guards to prevent certain speculation based attacks",462 .description = "Use indirect jump guards to prevent certain speculation based attacks",
418 .dependencies = &[_]*const Feature {463 .dependencies = &[_]*const Feature {
419 },464 },
...@@ -421,6 +466,7 @@ pub const feature_useIndirectJumpHazard = Feature{...@@ -421,6 +466,7 @@ pub const feature_useIndirectJumpHazard = Feature{
421466
422pub const feature_useTccInDiv = Feature{467pub const feature_useTccInDiv = Feature{
423 .name = "use-tcc-in-div",468 .name = "use-tcc-in-div",
469 .llvm_name = "use-tcc-in-div",
424 .description = "Force the assembler to use trapping",470 .description = "Force the assembler to use trapping",
425 .dependencies = &[_]*const Feature {471 .dependencies = &[_]*const Feature {
426 },472 },
...@@ -428,6 +474,7 @@ pub const feature_useTccInDiv = Feature{...@@ -428,6 +474,7 @@ pub const feature_useTccInDiv = Feature{
428474
429pub const feature_vfpu = Feature{475pub const feature_vfpu = Feature{
430 .name = "vfpu",476 .name = "vfpu",
477 .llvm_name = "vfpu",
431 .description = "Enable vector FPU instructions",478 .description = "Enable vector FPU instructions",
432 .dependencies = &[_]*const Feature {479 .dependencies = &[_]*const Feature {
433 },480 },
...@@ -435,6 +482,7 @@ pub const feature_vfpu = Feature{...@@ -435,6 +482,7 @@ pub const feature_vfpu = Feature{
435482
436pub const feature_virt = Feature{483pub const feature_virt = Feature{
437 .name = "virt",484 .name = "virt",
485 .llvm_name = "virt",
438 .description = "Mips Virtualization ASE",486 .description = "Mips Virtualization ASE",
439 .dependencies = &[_]*const Feature {487 .dependencies = &[_]*const Feature {
440 },488 },
...@@ -442,6 +490,7 @@ pub const feature_virt = Feature{...@@ -442,6 +490,7 @@ pub const feature_virt = Feature{
442490
443pub const feature_xgot = Feature{491pub const feature_xgot = Feature{
444 .name = "xgot",492 .name = "xgot",
493 .llvm_name = "xgot",
445 .description = "Assume 32-bit GOT",494 .description = "Assume 32-bit GOT",
446 .dependencies = &[_]*const Feature {495 .dependencies = &[_]*const Feature {
447 },496 },
...@@ -449,14 +498,15 @@ pub const feature_xgot = Feature{...@@ -449,14 +498,15 @@ pub const feature_xgot = Feature{
449498
450pub const feature_p5600 = Feature{499pub const feature_p5600 = Feature{
451 .name = "p5600",500 .name = "p5600",
501 .llvm_name = "p5600",
452 .description = "The P5600 Processor",502 .description = "The P5600 Processor",
453 .dependencies = &[_]*const Feature {503 .dependencies = &[_]*const Feature {
454 &feature_mips3_32,
455 &feature_mips1,504 &feature_mips1,
456 &feature_mips3_32r2,505 &feature_mips3_32r2,
457 &feature_mips5_32r2,
458 &feature_mips4_32,506 &feature_mips4_32,
507 &feature_mips5_32r2,
459 &feature_mips4_32r2,508 &feature_mips4_32r2,
509 &feature_mips3_32,
460 },510 },
461};511};
462512
...@@ -536,9 +586,9 @@ pub const cpu_mips3 = Cpu{...@@ -536,9 +586,9 @@ pub const cpu_mips3 = Cpu{
536 .dependencies = &[_]*const Feature {586 .dependencies = &[_]*const Feature {
537 &feature_mips1,587 &feature_mips1,
538 &feature_mips3_32r2,588 &feature_mips3_32r2,
539 &feature_mips3_32,
540 &feature_gp64,
541 &feature_fp64,589 &feature_fp64,
590 &feature_gp64,
591 &feature_mips3_32,
542 &feature_mips3,592 &feature_mips3,
543 },593 },
544};594};
...@@ -548,8 +598,8 @@ pub const cpu_mips32 = Cpu{...@@ -548,8 +598,8 @@ pub const cpu_mips32 = Cpu{
548 .llvm_name = "mips32",598 .llvm_name = "mips32",
549 .dependencies = &[_]*const Feature {599 .dependencies = &[_]*const Feature {
550 &feature_mips1,600 &feature_mips1,
551 &feature_mips3_32,
552 &feature_mips4_32,601 &feature_mips4_32,
602 &feature_mips3_32,
553 &feature_mips32,603 &feature_mips32,
554 },604 },
555};605};
...@@ -558,12 +608,12 @@ pub const cpu_mips32r2 = Cpu{...@@ -558,12 +608,12 @@ pub const cpu_mips32r2 = Cpu{
558 .name = "mips32r2",608 .name = "mips32r2",
559 .llvm_name = "mips32r2",609 .llvm_name = "mips32r2",
560 .dependencies = &[_]*const Feature {610 .dependencies = &[_]*const Feature {
561 &feature_mips4_32,
562 &feature_mips1,611 &feature_mips1,
563 &feature_mips3_32r2,612 &feature_mips3_32r2,
613 &feature_mips4_32,
564 &feature_mips5_32r2,614 &feature_mips5_32r2,
565 &feature_mips3_32,
566 &feature_mips4_32r2,615 &feature_mips4_32r2,
616 &feature_mips3_32,
567 &feature_mips32r2,617 &feature_mips32r2,
568 },618 },
569};619};
...@@ -572,12 +622,12 @@ pub const cpu_mips32r3 = Cpu{...@@ -572,12 +622,12 @@ pub const cpu_mips32r3 = Cpu{
572 .name = "mips32r3",622 .name = "mips32r3",
573 .llvm_name = "mips32r3",623 .llvm_name = "mips32r3",
574 .dependencies = &[_]*const Feature {624 .dependencies = &[_]*const Feature {
575 &feature_mips3_32,
576 &feature_mips1,625 &feature_mips1,
577 &feature_mips3_32r2,626 &feature_mips3_32r2,
578 &feature_mips5_32r2,
579 &feature_mips4_32,627 &feature_mips4_32,
628 &feature_mips5_32r2,
580 &feature_mips4_32r2,629 &feature_mips4_32r2,
630 &feature_mips3_32,
581 &feature_mips32r3,631 &feature_mips32r3,
582 },632 },
583};633};
...@@ -586,12 +636,12 @@ pub const cpu_mips32r5 = Cpu{...@@ -586,12 +636,12 @@ pub const cpu_mips32r5 = Cpu{
586 .name = "mips32r5",636 .name = "mips32r5",
587 .llvm_name = "mips32r5",637 .llvm_name = "mips32r5",
588 .dependencies = &[_]*const Feature {638 .dependencies = &[_]*const Feature {
589 &feature_mips4_32,
590 &feature_mips1,639 &feature_mips1,
591 &feature_mips3_32r2,640 &feature_mips3_32r2,
641 &feature_mips4_32,
592 &feature_mips5_32r2,642 &feature_mips5_32r2,
593 &feature_mips3_32,
594 &feature_mips4_32r2,643 &feature_mips4_32r2,
644 &feature_mips3_32,
595 &feature_mips32r5,645 &feature_mips32r5,
596 },646 },
597};647};
...@@ -601,14 +651,14 @@ pub const cpu_mips32r6 = Cpu{...@@ -601,14 +651,14 @@ pub const cpu_mips32r6 = Cpu{
601 .llvm_name = "mips32r6",651 .llvm_name = "mips32r6",
602 .dependencies = &[_]*const Feature {652 .dependencies = &[_]*const Feature {
603 &feature_abs2008,653 &feature_abs2008,
604 &feature_nan2008,
605 &feature_mips3_32,
606 &feature_mips1,654 &feature_mips1,
607 &feature_mips3_32r2,655 &feature_mips3_32r2,
608 &feature_mips5_32r2,
609 &feature_mips4_32,656 &feature_mips4_32,
610 &feature_mips4_32r2,657 &feature_nan2008,
658 &feature_mips5_32r2,
611 &feature_fp64,659 &feature_fp64,
660 &feature_mips4_32r2,
661 &feature_mips3_32,
612 &feature_mips32r6,662 &feature_mips32r6,
613 },663 },
614};664};
...@@ -617,13 +667,13 @@ pub const cpu_mips4 = Cpu{...@@ -617,13 +667,13 @@ pub const cpu_mips4 = Cpu{
617 .name = "mips4",667 .name = "mips4",
618 .llvm_name = "mips4",668 .llvm_name = "mips4",
619 .dependencies = &[_]*const Feature {669 .dependencies = &[_]*const Feature {
620 &feature_mips4_32,
621 &feature_mips4_32r2,
622 &feature_mips1,670 &feature_mips1,
623 &feature_mips3_32r2,671 &feature_mips3_32r2,
624 &feature_mips3_32,672 &feature_mips4_32,
625 &feature_gp64,
626 &feature_fp64,673 &feature_fp64,
674 &feature_gp64,
675 &feature_mips4_32r2,
676 &feature_mips3_32,
627 &feature_mips4,677 &feature_mips4,
628 },678 },
629};679};
...@@ -632,14 +682,14 @@ pub const cpu_mips5 = Cpu{...@@ -632,14 +682,14 @@ pub const cpu_mips5 = Cpu{
632 .name = "mips5",682 .name = "mips5",
633 .llvm_name = "mips5",683 .llvm_name = "mips5",
634 .dependencies = &[_]*const Feature {684 .dependencies = &[_]*const Feature {
635 &feature_mips3_32,
636 &feature_gp64,
637 &feature_mips1,685 &feature_mips1,
638 &feature_mips3_32r2,686 &feature_mips3_32r2,
639 &feature_mips5_32r2,
640 &feature_mips4_32,687 &feature_mips4_32,
641 &feature_mips4_32r2,688 &feature_mips5_32r2,
642 &feature_fp64,689 &feature_fp64,
690 &feature_gp64,
691 &feature_mips4_32r2,
692 &feature_mips3_32,
643 &feature_mips5,693 &feature_mips5,
644 },694 },
645};695};
...@@ -648,14 +698,14 @@ pub const cpu_mips64 = Cpu{...@@ -648,14 +698,14 @@ pub const cpu_mips64 = Cpu{
648 .name = "mips64",698 .name = "mips64",
649 .llvm_name = "mips64",699 .llvm_name = "mips64",
650 .dependencies = &[_]*const Feature {700 .dependencies = &[_]*const Feature {
651 &feature_mips4_32,
652 &feature_mips4_32r2,
653 &feature_mips1,701 &feature_mips1,
654 &feature_mips3_32r2,702 &feature_mips3_32r2,
703 &feature_mips4_32,
655 &feature_mips5_32r2,704 &feature_mips5_32r2,
656 &feature_mips3_32,
657 &feature_gp64,
658 &feature_fp64,705 &feature_fp64,
706 &feature_gp64,
707 &feature_mips4_32r2,
708 &feature_mips3_32,
659 &feature_mips64,709 &feature_mips64,
660 },710 },
661};711};
...@@ -664,14 +714,14 @@ pub const cpu_mips64r2 = Cpu{...@@ -664,14 +714,14 @@ pub const cpu_mips64r2 = Cpu{
664 .name = "mips64r2",714 .name = "mips64r2",
665 .llvm_name = "mips64r2",715 .llvm_name = "mips64r2",
666 .dependencies = &[_]*const Feature {716 .dependencies = &[_]*const Feature {
667 &feature_mips3_32,
668 &feature_gp64,
669 &feature_mips1,717 &feature_mips1,
670 &feature_mips3_32r2,718 &feature_mips3_32r2,
671 &feature_mips5_32r2,
672 &feature_mips4_32,719 &feature_mips4_32,
673 &feature_mips4_32r2,720 &feature_mips5_32r2,
674 &feature_fp64,721 &feature_fp64,
722 &feature_gp64,
723 &feature_mips4_32r2,
724 &feature_mips3_32,
675 &feature_mips64r2,725 &feature_mips64r2,
676 },726 },
677};727};
...@@ -680,14 +730,14 @@ pub const cpu_mips64r3 = Cpu{...@@ -680,14 +730,14 @@ pub const cpu_mips64r3 = Cpu{
680 .name = "mips64r3",730 .name = "mips64r3",
681 .llvm_name = "mips64r3",731 .llvm_name = "mips64r3",
682 .dependencies = &[_]*const Feature {732 .dependencies = &[_]*const Feature {
683 &feature_mips4_32,
684 &feature_gp64,
685 &feature_mips1,733 &feature_mips1,
686 &feature_mips3_32r2,734 &feature_mips3_32r2,
735 &feature_mips4_32,
687 &feature_mips5_32r2,736 &feature_mips5_32r2,
688 &feature_mips3_32,
689 &feature_mips4_32r2,
690 &feature_fp64,737 &feature_fp64,
738 &feature_gp64,
739 &feature_mips4_32r2,
740 &feature_mips3_32,
691 &feature_mips64r3,741 &feature_mips64r3,
692 },742 },
693};743};
...@@ -696,14 +746,14 @@ pub const cpu_mips64r5 = Cpu{...@@ -696,14 +746,14 @@ pub const cpu_mips64r5 = Cpu{
696 .name = "mips64r5",746 .name = "mips64r5",
697 .llvm_name = "mips64r5",747 .llvm_name = "mips64r5",
698 .dependencies = &[_]*const Feature {748 .dependencies = &[_]*const Feature {
699 &feature_mips3_32,
700 &feature_gp64,
701 &feature_mips1,749 &feature_mips1,
702 &feature_mips3_32r2,750 &feature_mips3_32r2,
703 &feature_mips5_32r2,
704 &feature_mips4_32,751 &feature_mips4_32,
705 &feature_mips4_32r2,752 &feature_mips5_32r2,
706 &feature_fp64,753 &feature_fp64,
754 &feature_gp64,
755 &feature_mips4_32r2,
756 &feature_mips3_32,
707 &feature_mips64r5,757 &feature_mips64r5,
708 },758 },
709};759};
...@@ -713,15 +763,15 @@ pub const cpu_mips64r6 = Cpu{...@@ -713,15 +763,15 @@ pub const cpu_mips64r6 = Cpu{
713 .llvm_name = "mips64r6",763 .llvm_name = "mips64r6",
714 .dependencies = &[_]*const Feature {764 .dependencies = &[_]*const Feature {
715 &feature_abs2008,765 &feature_abs2008,
716 &feature_nan2008,
717 &feature_mips4_32,
718 &feature_gp64,
719 &feature_mips1,766 &feature_mips1,
720 &feature_mips3_32r2,767 &feature_mips3_32r2,
768 &feature_mips4_32,
769 &feature_nan2008,
721 &feature_mips5_32r2,770 &feature_mips5_32r2,
722 &feature_mips3_32,
723 &feature_mips4_32r2,
724 &feature_fp64,771 &feature_fp64,
772 &feature_gp64,
773 &feature_mips4_32r2,
774 &feature_mips3_32,
725 &feature_mips64r6,775 &feature_mips64r6,
726 },776 },
727};777};
...@@ -730,14 +780,14 @@ pub const cpu_octeon = Cpu{...@@ -730,14 +780,14 @@ pub const cpu_octeon = Cpu{
730 .name = "octeon",780 .name = "octeon",
731 .llvm_name = "octeon",781 .llvm_name = "octeon",
732 .dependencies = &[_]*const Feature {782 .dependencies = &[_]*const Feature {
733 &feature_mips4_32,
734 &feature_mips4_32r2,
735 &feature_mips1,783 &feature_mips1,
736 &feature_mips3_32r2,784 &feature_mips3_32r2,
785 &feature_mips4_32,
737 &feature_mips5_32r2,786 &feature_mips5_32r2,
738 &feature_mips3_32,
739 &feature_gp64,
740 &feature_fp64,787 &feature_fp64,
788 &feature_gp64,
789 &feature_mips4_32r2,
790 &feature_mips3_32,
741 &feature_cnmips,791 &feature_cnmips,
742 &feature_mips64r2,792 &feature_mips64r2,
743 },793 },
...@@ -747,12 +797,12 @@ pub const cpu_p5600 = Cpu{...@@ -747,12 +797,12 @@ pub const cpu_p5600 = Cpu{
747 .name = "p5600",797 .name = "p5600",
748 .llvm_name = "p5600",798 .llvm_name = "p5600",
749 .dependencies = &[_]*const Feature {799 .dependencies = &[_]*const Feature {
750 &feature_mips3_32,
751 &feature_mips1,800 &feature_mips1,
752 &feature_mips3_32r2,801 &feature_mips3_32r2,
753 &feature_mips5_32r2,
754 &feature_mips4_32,802 &feature_mips4_32,
803 &feature_mips5_32r2,
755 &feature_mips4_32r2,804 &feature_mips4_32r2,
805 &feature_mips3_32,
756 &feature_p5600,806 &feature_p5600,
757 },807 },
758};808};
lib/std/target/msp430.zig+4
...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
4pub const feature_hwmult16 = Feature{4pub const feature_hwmult16 = Feature{
5 .name = "hwmult16",5 .name = "hwmult16",
6 .llvm_name = "hwmult16",
6 .description = "Enable 16-bit hardware multiplier",7 .description = "Enable 16-bit hardware multiplier",
7 .dependencies = &[_]*const Feature {8 .dependencies = &[_]*const Feature {
8 },9 },
...@@ -10,6 +11,7 @@ pub const feature_hwmult16 = Feature{...@@ -10,6 +11,7 @@ pub const feature_hwmult16 = Feature{
1011
11pub const feature_hwmult32 = Feature{12pub const feature_hwmult32 = Feature{
12 .name = "hwmult32",13 .name = "hwmult32",
14 .llvm_name = "hwmult32",
13 .description = "Enable 32-bit hardware multiplier",15 .description = "Enable 32-bit hardware multiplier",
14 .dependencies = &[_]*const Feature {16 .dependencies = &[_]*const Feature {
15 },17 },
...@@ -17,6 +19,7 @@ pub const feature_hwmult32 = Feature{...@@ -17,6 +19,7 @@ pub const feature_hwmult32 = Feature{
1719
18pub const feature_hwmultf5 = Feature{20pub const feature_hwmultf5 = Feature{
19 .name = "hwmultf5",21 .name = "hwmultf5",
22 .llvm_name = "hwmultf5",
20 .description = "Enable F5 series hardware multiplier",23 .description = "Enable F5 series hardware multiplier",
21 .dependencies = &[_]*const Feature {24 .dependencies = &[_]*const Feature {
22 },25 },
...@@ -24,6 +27,7 @@ pub const feature_hwmultf5 = Feature{...@@ -24,6 +27,7 @@ pub const feature_hwmultf5 = Feature{
2427
25pub const feature_ext = Feature{28pub const feature_ext = Feature{
26 .name = "ext",29 .name = "ext",
30 .llvm_name = "ext",
27 .description = "Enable MSP430-X extensions",31 .description = "Enable MSP430-X extensions",
28 .dependencies = &[_]*const Feature {32 .dependencies = &[_]*const Feature {
29 },33 },
lib/std/target/nvptx.zig+25
...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
4pub const feature_ptx32 = Feature{4pub const feature_ptx32 = Feature{
5 .name = "ptx32",5 .name = "ptx32",
6 .llvm_name = "ptx32",
6 .description = "Use PTX version 3.2",7 .description = "Use PTX version 3.2",
7 .dependencies = &[_]*const Feature {8 .dependencies = &[_]*const Feature {
8 },9 },
...@@ -10,6 +11,7 @@ pub const feature_ptx32 = Feature{...@@ -10,6 +11,7 @@ pub const feature_ptx32 = Feature{
1011
11pub const feature_ptx40 = Feature{12pub const feature_ptx40 = Feature{
12 .name = "ptx40",13 .name = "ptx40",
14 .llvm_name = "ptx40",
13 .description = "Use PTX version 4.0",15 .description = "Use PTX version 4.0",
14 .dependencies = &[_]*const Feature {16 .dependencies = &[_]*const Feature {
15 },17 },
...@@ -17,6 +19,7 @@ pub const feature_ptx40 = Feature{...@@ -17,6 +19,7 @@ pub const feature_ptx40 = Feature{
1719
18pub const feature_ptx41 = Feature{20pub const feature_ptx41 = Feature{
19 .name = "ptx41",21 .name = "ptx41",
22 .llvm_name = "ptx41",
20 .description = "Use PTX version 4.1",23 .description = "Use PTX version 4.1",
21 .dependencies = &[_]*const Feature {24 .dependencies = &[_]*const Feature {
22 },25 },
...@@ -24,6 +27,7 @@ pub const feature_ptx41 = Feature{...@@ -24,6 +27,7 @@ pub const feature_ptx41 = Feature{
2427
25pub const feature_ptx42 = Feature{28pub const feature_ptx42 = Feature{
26 .name = "ptx42",29 .name = "ptx42",
30 .llvm_name = "ptx42",
27 .description = "Use PTX version 4.2",31 .description = "Use PTX version 4.2",
28 .dependencies = &[_]*const Feature {32 .dependencies = &[_]*const Feature {
29 },33 },
...@@ -31,6 +35,7 @@ pub const feature_ptx42 = Feature{...@@ -31,6 +35,7 @@ pub const feature_ptx42 = Feature{
3135
32pub const feature_ptx43 = Feature{36pub const feature_ptx43 = Feature{
33 .name = "ptx43",37 .name = "ptx43",
38 .llvm_name = "ptx43",
34 .description = "Use PTX version 4.3",39 .description = "Use PTX version 4.3",
35 .dependencies = &[_]*const Feature {40 .dependencies = &[_]*const Feature {
36 },41 },
...@@ -38,6 +43,7 @@ pub const feature_ptx43 = Feature{...@@ -38,6 +43,7 @@ pub const feature_ptx43 = Feature{
3843
39pub const feature_ptx50 = Feature{44pub const feature_ptx50 = Feature{
40 .name = "ptx50",45 .name = "ptx50",
46 .llvm_name = "ptx50",
41 .description = "Use PTX version 5.0",47 .description = "Use PTX version 5.0",
42 .dependencies = &[_]*const Feature {48 .dependencies = &[_]*const Feature {
43 },49 },
...@@ -45,6 +51,7 @@ pub const feature_ptx50 = Feature{...@@ -45,6 +51,7 @@ pub const feature_ptx50 = Feature{
4551
46pub const feature_ptx60 = Feature{52pub const feature_ptx60 = Feature{
47 .name = "ptx60",53 .name = "ptx60",
54 .llvm_name = "ptx60",
48 .description = "Use PTX version 6.0",55 .description = "Use PTX version 6.0",
49 .dependencies = &[_]*const Feature {56 .dependencies = &[_]*const Feature {
50 },57 },
...@@ -52,6 +59,7 @@ pub const feature_ptx60 = Feature{...@@ -52,6 +59,7 @@ pub const feature_ptx60 = Feature{
5259
53pub const feature_ptx61 = Feature{60pub const feature_ptx61 = Feature{
54 .name = "ptx61",61 .name = "ptx61",
62 .llvm_name = "ptx61",
55 .description = "Use PTX version 6.1",63 .description = "Use PTX version 6.1",
56 .dependencies = &[_]*const Feature {64 .dependencies = &[_]*const Feature {
57 },65 },
...@@ -59,6 +67,7 @@ pub const feature_ptx61 = Feature{...@@ -59,6 +67,7 @@ pub const feature_ptx61 = Feature{
5967
60pub const feature_ptx63 = Feature{68pub const feature_ptx63 = Feature{
61 .name = "ptx63",69 .name = "ptx63",
70 .llvm_name = "ptx63",
62 .description = "Use PTX version 6.3",71 .description = "Use PTX version 6.3",
63 .dependencies = &[_]*const Feature {72 .dependencies = &[_]*const Feature {
64 },73 },
...@@ -66,6 +75,7 @@ pub const feature_ptx63 = Feature{...@@ -66,6 +75,7 @@ pub const feature_ptx63 = Feature{
6675
67pub const feature_ptx64 = Feature{76pub const feature_ptx64 = Feature{
68 .name = "ptx64",77 .name = "ptx64",
78 .llvm_name = "ptx64",
69 .description = "Use PTX version 6.4",79 .description = "Use PTX version 6.4",
70 .dependencies = &[_]*const Feature {80 .dependencies = &[_]*const Feature {
71 },81 },
...@@ -73,6 +83,7 @@ pub const feature_ptx64 = Feature{...@@ -73,6 +83,7 @@ pub const feature_ptx64 = Feature{
7383
74pub const feature_sm_20 = Feature{84pub const feature_sm_20 = Feature{
75 .name = "sm_20",85 .name = "sm_20",
86 .llvm_name = "sm_20",
76 .description = "Target SM 2.0",87 .description = "Target SM 2.0",
77 .dependencies = &[_]*const Feature {88 .dependencies = &[_]*const Feature {
78 },89 },
...@@ -80,6 +91,7 @@ pub const feature_sm_20 = Feature{...@@ -80,6 +91,7 @@ pub const feature_sm_20 = Feature{
8091
81pub const feature_sm_21 = Feature{92pub const feature_sm_21 = Feature{
82 .name = "sm_21",93 .name = "sm_21",
94 .llvm_name = "sm_21",
83 .description = "Target SM 2.1",95 .description = "Target SM 2.1",
84 .dependencies = &[_]*const Feature {96 .dependencies = &[_]*const Feature {
85 },97 },
...@@ -87,6 +99,7 @@ pub const feature_sm_21 = Feature{...@@ -87,6 +99,7 @@ pub const feature_sm_21 = Feature{
8799
88pub const feature_sm_30 = Feature{100pub const feature_sm_30 = Feature{
89 .name = "sm_30",101 .name = "sm_30",
102 .llvm_name = "sm_30",
90 .description = "Target SM 3.0",103 .description = "Target SM 3.0",
91 .dependencies = &[_]*const Feature {104 .dependencies = &[_]*const Feature {
92 },105 },
...@@ -94,6 +107,7 @@ pub const feature_sm_30 = Feature{...@@ -94,6 +107,7 @@ pub const feature_sm_30 = Feature{
94107
95pub const feature_sm_32 = Feature{108pub const feature_sm_32 = Feature{
96 .name = "sm_32",109 .name = "sm_32",
110 .llvm_name = "sm_32",
97 .description = "Target SM 3.2",111 .description = "Target SM 3.2",
98 .dependencies = &[_]*const Feature {112 .dependencies = &[_]*const Feature {
99 },113 },
...@@ -101,6 +115,7 @@ pub const feature_sm_32 = Feature{...@@ -101,6 +115,7 @@ pub const feature_sm_32 = Feature{
101115
102pub const feature_sm_35 = Feature{116pub const feature_sm_35 = Feature{
103 .name = "sm_35",117 .name = "sm_35",
118 .llvm_name = "sm_35",
104 .description = "Target SM 3.5",119 .description = "Target SM 3.5",
105 .dependencies = &[_]*const Feature {120 .dependencies = &[_]*const Feature {
106 },121 },
...@@ -108,6 +123,7 @@ pub const feature_sm_35 = Feature{...@@ -108,6 +123,7 @@ pub const feature_sm_35 = Feature{
108123
109pub const feature_sm_37 = Feature{124pub const feature_sm_37 = Feature{
110 .name = "sm_37",125 .name = "sm_37",
126 .llvm_name = "sm_37",
111 .description = "Target SM 3.7",127 .description = "Target SM 3.7",
112 .dependencies = &[_]*const Feature {128 .dependencies = &[_]*const Feature {
113 },129 },
...@@ -115,6 +131,7 @@ pub const feature_sm_37 = Feature{...@@ -115,6 +131,7 @@ pub const feature_sm_37 = Feature{
115131
116pub const feature_sm_50 = Feature{132pub const feature_sm_50 = Feature{
117 .name = "sm_50",133 .name = "sm_50",
134 .llvm_name = "sm_50",
118 .description = "Target SM 5.0",135 .description = "Target SM 5.0",
119 .dependencies = &[_]*const Feature {136 .dependencies = &[_]*const Feature {
120 },137 },
...@@ -122,6 +139,7 @@ pub const feature_sm_50 = Feature{...@@ -122,6 +139,7 @@ pub const feature_sm_50 = Feature{
122139
123pub const feature_sm_52 = Feature{140pub const feature_sm_52 = Feature{
124 .name = "sm_52",141 .name = "sm_52",
142 .llvm_name = "sm_52",
125 .description = "Target SM 5.2",143 .description = "Target SM 5.2",
126 .dependencies = &[_]*const Feature {144 .dependencies = &[_]*const Feature {
127 },145 },
...@@ -129,6 +147,7 @@ pub const feature_sm_52 = Feature{...@@ -129,6 +147,7 @@ pub const feature_sm_52 = Feature{
129147
130pub const feature_sm_53 = Feature{148pub const feature_sm_53 = Feature{
131 .name = "sm_53",149 .name = "sm_53",
150 .llvm_name = "sm_53",
132 .description = "Target SM 5.3",151 .description = "Target SM 5.3",
133 .dependencies = &[_]*const Feature {152 .dependencies = &[_]*const Feature {
134 },153 },
...@@ -136,6 +155,7 @@ pub const feature_sm_53 = Feature{...@@ -136,6 +155,7 @@ pub const feature_sm_53 = Feature{
136155
137pub const feature_sm_60 = Feature{156pub const feature_sm_60 = Feature{
138 .name = "sm_60",157 .name = "sm_60",
158 .llvm_name = "sm_60",
139 .description = "Target SM 6.0",159 .description = "Target SM 6.0",
140 .dependencies = &[_]*const Feature {160 .dependencies = &[_]*const Feature {
141 },161 },
...@@ -143,6 +163,7 @@ pub const feature_sm_60 = Feature{...@@ -143,6 +163,7 @@ pub const feature_sm_60 = Feature{
143163
144pub const feature_sm_61 = Feature{164pub const feature_sm_61 = Feature{
145 .name = "sm_61",165 .name = "sm_61",
166 .llvm_name = "sm_61",
146 .description = "Target SM 6.1",167 .description = "Target SM 6.1",
147 .dependencies = &[_]*const Feature {168 .dependencies = &[_]*const Feature {
148 },169 },
...@@ -150,6 +171,7 @@ pub const feature_sm_61 = Feature{...@@ -150,6 +171,7 @@ pub const feature_sm_61 = Feature{
150171
151pub const feature_sm_62 = Feature{172pub const feature_sm_62 = Feature{
152 .name = "sm_62",173 .name = "sm_62",
174 .llvm_name = "sm_62",
153 .description = "Target SM 6.2",175 .description = "Target SM 6.2",
154 .dependencies = &[_]*const Feature {176 .dependencies = &[_]*const Feature {
155 },177 },
...@@ -157,6 +179,7 @@ pub const feature_sm_62 = Feature{...@@ -157,6 +179,7 @@ pub const feature_sm_62 = Feature{
157179
158pub const feature_sm_70 = Feature{180pub const feature_sm_70 = Feature{
159 .name = "sm_70",181 .name = "sm_70",
182 .llvm_name = "sm_70",
160 .description = "Target SM 7.0",183 .description = "Target SM 7.0",
161 .dependencies = &[_]*const Feature {184 .dependencies = &[_]*const Feature {
162 },185 },
...@@ -164,6 +187,7 @@ pub const feature_sm_70 = Feature{...@@ -164,6 +187,7 @@ pub const feature_sm_70 = Feature{
164187
165pub const feature_sm_72 = Feature{188pub const feature_sm_72 = Feature{
166 .name = "sm_72",189 .name = "sm_72",
190 .llvm_name = "sm_72",
167 .description = "Target SM 7.2",191 .description = "Target SM 7.2",
168 .dependencies = &[_]*const Feature {192 .dependencies = &[_]*const Feature {
169 },193 },
...@@ -171,6 +195,7 @@ pub const feature_sm_72 = Feature{...@@ -171,6 +195,7 @@ pub const feature_sm_72 = Feature{
171195
172pub const feature_sm_75 = Feature{196pub const feature_sm_75 = Feature{
173 .name = "sm_75",197 .name = "sm_75",
198 .llvm_name = "sm_75",
174 .description = "Target SM 7.5",199 .description = "Target SM 7.5",
175 .dependencies = &[_]*const Feature {200 .dependencies = &[_]*const Feature {
176 },201 },
lib/std/target/powerpc.zig+53-2
...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
4pub const feature_bit64 = Feature{4pub const feature_bit64 = Feature{
5 .name = "64bit",5 .name = "64bit",
6 .llvm_name = "64bit",
6 .description = "Enable 64-bit instructions",7 .description = "Enable 64-bit instructions",
7 .dependencies = &[_]*const Feature {8 .dependencies = &[_]*const Feature {
8 },9 },
...@@ -10,6 +11,7 @@ pub const feature_bit64 = Feature{...@@ -10,6 +11,7 @@ pub const feature_bit64 = Feature{
1011
11pub const feature_bitregs64 = Feature{12pub const feature_bitregs64 = Feature{
12 .name = "64bitregs",13 .name = "64bitregs",
14 .llvm_name = "64bitregs",
13 .description = "Enable 64-bit registers usage for ppc32 [beta]",15 .description = "Enable 64-bit registers usage for ppc32 [beta]",
14 .dependencies = &[_]*const Feature {16 .dependencies = &[_]*const Feature {
15 },17 },
...@@ -17,6 +19,7 @@ pub const feature_bitregs64 = Feature{...@@ -17,6 +19,7 @@ pub const feature_bitregs64 = Feature{
1719
18pub const feature_altivec = Feature{20pub const feature_altivec = Feature{
19 .name = "altivec",21 .name = "altivec",
22 .llvm_name = "altivec",
20 .description = "Enable Altivec instructions",23 .description = "Enable Altivec instructions",
21 .dependencies = &[_]*const Feature {24 .dependencies = &[_]*const Feature {
22 &feature_hardFloat,25 &feature_hardFloat,
...@@ -25,6 +28,7 @@ pub const feature_altivec = Feature{...@@ -25,6 +28,7 @@ pub const feature_altivec = Feature{
2528
26pub const feature_bpermd = Feature{29pub const feature_bpermd = Feature{
27 .name = "bpermd",30 .name = "bpermd",
31 .llvm_name = "bpermd",
28 .description = "Enable the bpermd instruction",32 .description = "Enable the bpermd instruction",
29 .dependencies = &[_]*const Feature {33 .dependencies = &[_]*const Feature {
30 },34 },
...@@ -32,6 +36,7 @@ pub const feature_bpermd = Feature{...@@ -32,6 +36,7 @@ pub const feature_bpermd = Feature{
3236
33pub const feature_booke = Feature{37pub const feature_booke = Feature{
34 .name = "booke",38 .name = "booke",
39 .llvm_name = "booke",
35 .description = "Enable Book E instructions",40 .description = "Enable Book E instructions",
36 .dependencies = &[_]*const Feature {41 .dependencies = &[_]*const Feature {
37 &feature_icbt,42 &feature_icbt,
...@@ -40,6 +45,7 @@ pub const feature_booke = Feature{...@@ -40,6 +45,7 @@ pub const feature_booke = Feature{
4045
41pub const feature_cmpb = Feature{46pub const feature_cmpb = Feature{
42 .name = "cmpb",47 .name = "cmpb",
48 .llvm_name = "cmpb",
43 .description = "Enable the cmpb instruction",49 .description = "Enable the cmpb instruction",
44 .dependencies = &[_]*const Feature {50 .dependencies = &[_]*const Feature {
45 },51 },
...@@ -47,6 +53,7 @@ pub const feature_cmpb = Feature{...@@ -47,6 +53,7 @@ pub const feature_cmpb = Feature{
4753
48pub const feature_crbits = Feature{54pub const feature_crbits = Feature{
49 .name = "crbits",55 .name = "crbits",
56 .llvm_name = "crbits",
50 .description = "Use condition-register bits individually",57 .description = "Use condition-register bits individually",
51 .dependencies = &[_]*const Feature {58 .dependencies = &[_]*const Feature {
52 },59 },
...@@ -54,6 +61,7 @@ pub const feature_crbits = Feature{...@@ -54,6 +61,7 @@ pub const feature_crbits = Feature{
5461
55pub const feature_directMove = Feature{62pub const feature_directMove = Feature{
56 .name = "direct-move",63 .name = "direct-move",
64 .llvm_name = "direct-move",
57 .description = "Enable Power8 direct move instructions",65 .description = "Enable Power8 direct move instructions",
58 .dependencies = &[_]*const Feature {66 .dependencies = &[_]*const Feature {
59 &feature_hardFloat,67 &feature_hardFloat,
...@@ -62,6 +70,7 @@ pub const feature_directMove = Feature{...@@ -62,6 +70,7 @@ pub const feature_directMove = Feature{
6270
63pub const feature_e500 = Feature{71pub const feature_e500 = Feature{
64 .name = "e500",72 .name = "e500",
73 .llvm_name = "e500",
65 .description = "Enable E500/E500mc instructions",74 .description = "Enable E500/E500mc instructions",
66 .dependencies = &[_]*const Feature {75 .dependencies = &[_]*const Feature {
67 },76 },
...@@ -69,6 +78,7 @@ pub const feature_e500 = Feature{...@@ -69,6 +78,7 @@ pub const feature_e500 = Feature{
6978
70pub const feature_extdiv = Feature{79pub const feature_extdiv = Feature{
71 .name = "extdiv",80 .name = "extdiv",
81 .llvm_name = "extdiv",
72 .description = "Enable extended divide instructions",82 .description = "Enable extended divide instructions",
73 .dependencies = &[_]*const Feature {83 .dependencies = &[_]*const Feature {
74 },84 },
...@@ -76,6 +86,7 @@ pub const feature_extdiv = Feature{...@@ -76,6 +86,7 @@ pub const feature_extdiv = Feature{
7686
77pub const feature_fcpsgn = Feature{87pub const feature_fcpsgn = Feature{
78 .name = "fcpsgn",88 .name = "fcpsgn",
89 .llvm_name = "fcpsgn",
79 .description = "Enable the fcpsgn instruction",90 .description = "Enable the fcpsgn instruction",
80 .dependencies = &[_]*const Feature {91 .dependencies = &[_]*const Feature {
81 &feature_hardFloat,92 &feature_hardFloat,
...@@ -84,6 +95,7 @@ pub const feature_fcpsgn = Feature{...@@ -84,6 +95,7 @@ pub const feature_fcpsgn = Feature{
8495
85pub const feature_fpcvt = Feature{96pub const feature_fpcvt = Feature{
86 .name = "fpcvt",97 .name = "fpcvt",
98 .llvm_name = "fpcvt",
87 .description = "Enable fc[ft]* (unsigned and single-precision) and lfiwzx instructions",99 .description = "Enable fc[ft]* (unsigned and single-precision) and lfiwzx instructions",
88 .dependencies = &[_]*const Feature {100 .dependencies = &[_]*const Feature {
89 &feature_hardFloat,101 &feature_hardFloat,
...@@ -92,6 +104,7 @@ pub const feature_fpcvt = Feature{...@@ -92,6 +104,7 @@ pub const feature_fpcvt = Feature{
92104
93pub const feature_fprnd = Feature{105pub const feature_fprnd = Feature{
94 .name = "fprnd",106 .name = "fprnd",
107 .llvm_name = "fprnd",
95 .description = "Enable the fri[mnpz] instructions",108 .description = "Enable the fri[mnpz] instructions",
96 .dependencies = &[_]*const Feature {109 .dependencies = &[_]*const Feature {
97 &feature_hardFloat,110 &feature_hardFloat,
...@@ -100,6 +113,7 @@ pub const feature_fprnd = Feature{...@@ -100,6 +113,7 @@ pub const feature_fprnd = Feature{
100113
101pub const feature_fpu = Feature{114pub const feature_fpu = Feature{
102 .name = "fpu",115 .name = "fpu",
116 .llvm_name = "fpu",
103 .description = "Enable classic FPU instructions",117 .description = "Enable classic FPU instructions",
104 .dependencies = &[_]*const Feature {118 .dependencies = &[_]*const Feature {
105 &feature_hardFloat,119 &feature_hardFloat,
...@@ -108,6 +122,7 @@ pub const feature_fpu = Feature{...@@ -108,6 +122,7 @@ pub const feature_fpu = Feature{
108122
109pub const feature_fre = Feature{123pub const feature_fre = Feature{
110 .name = "fre",124 .name = "fre",
125 .llvm_name = "fre",
111 .description = "Enable the fre instruction",126 .description = "Enable the fre instruction",
112 .dependencies = &[_]*const Feature {127 .dependencies = &[_]*const Feature {
113 &feature_hardFloat,128 &feature_hardFloat,
...@@ -116,6 +131,7 @@ pub const feature_fre = Feature{...@@ -116,6 +131,7 @@ pub const feature_fre = Feature{
116131
117pub const feature_fres = Feature{132pub const feature_fres = Feature{
118 .name = "fres",133 .name = "fres",
134 .llvm_name = "fres",
119 .description = "Enable the fres instruction",135 .description = "Enable the fres instruction",
120 .dependencies = &[_]*const Feature {136 .dependencies = &[_]*const Feature {
121 &feature_hardFloat,137 &feature_hardFloat,
...@@ -124,6 +140,7 @@ pub const feature_fres = Feature{...@@ -124,6 +140,7 @@ pub const feature_fres = Feature{
124140
125pub const feature_frsqrte = Feature{141pub const feature_frsqrte = Feature{
126 .name = "frsqrte",142 .name = "frsqrte",
143 .llvm_name = "frsqrte",
127 .description = "Enable the frsqrte instruction",144 .description = "Enable the frsqrte instruction",
128 .dependencies = &[_]*const Feature {145 .dependencies = &[_]*const Feature {
129 &feature_hardFloat,146 &feature_hardFloat,
...@@ -132,6 +149,7 @@ pub const feature_frsqrte = Feature{...@@ -132,6 +149,7 @@ pub const feature_frsqrte = Feature{
132149
133pub const feature_frsqrtes = Feature{150pub const feature_frsqrtes = Feature{
134 .name = "frsqrtes",151 .name = "frsqrtes",
152 .llvm_name = "frsqrtes",
135 .description = "Enable the frsqrtes instruction",153 .description = "Enable the frsqrtes instruction",
136 .dependencies = &[_]*const Feature {154 .dependencies = &[_]*const Feature {
137 &feature_hardFloat,155 &feature_hardFloat,
...@@ -140,6 +158,7 @@ pub const feature_frsqrtes = Feature{...@@ -140,6 +158,7 @@ pub const feature_frsqrtes = Feature{
140158
141pub const feature_fsqrt = Feature{159pub const feature_fsqrt = Feature{
142 .name = "fsqrt",160 .name = "fsqrt",
161 .llvm_name = "fsqrt",
143 .description = "Enable the fsqrt instruction",162 .description = "Enable the fsqrt instruction",
144 .dependencies = &[_]*const Feature {163 .dependencies = &[_]*const Feature {
145 &feature_hardFloat,164 &feature_hardFloat,
...@@ -148,6 +167,7 @@ pub const feature_fsqrt = Feature{...@@ -148,6 +167,7 @@ pub const feature_fsqrt = Feature{
148167
149pub const feature_float128 = Feature{168pub const feature_float128 = Feature{
150 .name = "float128",169 .name = "float128",
170 .llvm_name = "float128",
151 .description = "Enable the __float128 data type for IEEE-754R Binary128.",171 .description = "Enable the __float128 data type for IEEE-754R Binary128.",
152 .dependencies = &[_]*const Feature {172 .dependencies = &[_]*const Feature {
153 &feature_hardFloat,173 &feature_hardFloat,
...@@ -156,6 +176,7 @@ pub const feature_float128 = Feature{...@@ -156,6 +176,7 @@ pub const feature_float128 = Feature{
156176
157pub const feature_htm = Feature{177pub const feature_htm = Feature{
158 .name = "htm",178 .name = "htm",
179 .llvm_name = "htm",
159 .description = "Enable Hardware Transactional Memory instructions",180 .description = "Enable Hardware Transactional Memory instructions",
160 .dependencies = &[_]*const Feature {181 .dependencies = &[_]*const Feature {
161 },182 },
...@@ -163,6 +184,7 @@ pub const feature_htm = Feature{...@@ -163,6 +184,7 @@ pub const feature_htm = Feature{
163184
164pub const feature_hardFloat = Feature{185pub const feature_hardFloat = Feature{
165 .name = "hard-float",186 .name = "hard-float",
187 .llvm_name = "hard-float",
166 .description = "Enable floating-point instructions",188 .description = "Enable floating-point instructions",
167 .dependencies = &[_]*const Feature {189 .dependencies = &[_]*const Feature {
168 },190 },
...@@ -170,6 +192,7 @@ pub const feature_hardFloat = Feature{...@@ -170,6 +192,7 @@ pub const feature_hardFloat = Feature{
170192
171pub const feature_icbt = Feature{193pub const feature_icbt = Feature{
172 .name = "icbt",194 .name = "icbt",
195 .llvm_name = "icbt",
173 .description = "Enable icbt instruction",196 .description = "Enable icbt instruction",
174 .dependencies = &[_]*const Feature {197 .dependencies = &[_]*const Feature {
175 },198 },
...@@ -177,6 +200,7 @@ pub const feature_icbt = Feature{...@@ -177,6 +200,7 @@ pub const feature_icbt = Feature{
177200
178pub const feature_isaV30Instructions = Feature{201pub const feature_isaV30Instructions = Feature{
179 .name = "isa-v30-instructions",202 .name = "isa-v30-instructions",
203 .llvm_name = "isa-v30-instructions",
180 .description = "Enable instructions added in ISA 3.0.",204 .description = "Enable instructions added in ISA 3.0.",
181 .dependencies = &[_]*const Feature {205 .dependencies = &[_]*const Feature {
182 },206 },
...@@ -184,6 +208,7 @@ pub const feature_isaV30Instructions = Feature{...@@ -184,6 +208,7 @@ pub const feature_isaV30Instructions = Feature{
184208
185pub const feature_isel = Feature{209pub const feature_isel = Feature{
186 .name = "isel",210 .name = "isel",
211 .llvm_name = "isel",
187 .description = "Enable the isel instruction",212 .description = "Enable the isel instruction",
188 .dependencies = &[_]*const Feature {213 .dependencies = &[_]*const Feature {
189 },214 },
...@@ -191,6 +216,7 @@ pub const feature_isel = Feature{...@@ -191,6 +216,7 @@ pub const feature_isel = Feature{
191216
192pub const feature_invariantFunctionDescriptors = Feature{217pub const feature_invariantFunctionDescriptors = Feature{
193 .name = "invariant-function-descriptors",218 .name = "invariant-function-descriptors",
219 .llvm_name = "invariant-function-descriptors",
194 .description = "Assume function descriptors are invariant",220 .description = "Assume function descriptors are invariant",
195 .dependencies = &[_]*const Feature {221 .dependencies = &[_]*const Feature {
196 },222 },
...@@ -198,6 +224,7 @@ pub const feature_invariantFunctionDescriptors = Feature{...@@ -198,6 +224,7 @@ pub const feature_invariantFunctionDescriptors = Feature{
198224
199pub const feature_ldbrx = Feature{225pub const feature_ldbrx = Feature{
200 .name = "ldbrx",226 .name = "ldbrx",
227 .llvm_name = "ldbrx",
201 .description = "Enable the ldbrx instruction",228 .description = "Enable the ldbrx instruction",
202 .dependencies = &[_]*const Feature {229 .dependencies = &[_]*const Feature {
203 },230 },
...@@ -205,6 +232,7 @@ pub const feature_ldbrx = Feature{...@@ -205,6 +232,7 @@ pub const feature_ldbrx = Feature{
205232
206pub const feature_lfiwax = Feature{233pub const feature_lfiwax = Feature{
207 .name = "lfiwax",234 .name = "lfiwax",
235 .llvm_name = "lfiwax",
208 .description = "Enable the lfiwax instruction",236 .description = "Enable the lfiwax instruction",
209 .dependencies = &[_]*const Feature {237 .dependencies = &[_]*const Feature {
210 &feature_hardFloat,238 &feature_hardFloat,
...@@ -213,6 +241,7 @@ pub const feature_lfiwax = Feature{...@@ -213,6 +241,7 @@ pub const feature_lfiwax = Feature{
213241
214pub const feature_longcall = Feature{242pub const feature_longcall = Feature{
215 .name = "longcall",243 .name = "longcall",
244 .llvm_name = "longcall",
216 .description = "Always use indirect calls",245 .description = "Always use indirect calls",
217 .dependencies = &[_]*const Feature {246 .dependencies = &[_]*const Feature {
218 },247 },
...@@ -220,6 +249,7 @@ pub const feature_longcall = Feature{...@@ -220,6 +249,7 @@ pub const feature_longcall = Feature{
220249
221pub const feature_mfocrf = Feature{250pub const feature_mfocrf = Feature{
222 .name = "mfocrf",251 .name = "mfocrf",
252 .llvm_name = "mfocrf",
223 .description = "Enable the MFOCRF instruction",253 .description = "Enable the MFOCRF instruction",
224 .dependencies = &[_]*const Feature {254 .dependencies = &[_]*const Feature {
225 },255 },
...@@ -227,6 +257,7 @@ pub const feature_mfocrf = Feature{...@@ -227,6 +257,7 @@ pub const feature_mfocrf = Feature{
227257
228pub const feature_msync = Feature{258pub const feature_msync = Feature{
229 .name = "msync",259 .name = "msync",
260 .llvm_name = "msync",
230 .description = "Has only the msync instruction instead of sync",261 .description = "Has only the msync instruction instead of sync",
231 .dependencies = &[_]*const Feature {262 .dependencies = &[_]*const Feature {
232 &feature_icbt,263 &feature_icbt,
...@@ -235,6 +266,7 @@ pub const feature_msync = Feature{...@@ -235,6 +266,7 @@ pub const feature_msync = Feature{
235266
236pub const feature_power8Altivec = Feature{267pub const feature_power8Altivec = Feature{
237 .name = "power8-altivec",268 .name = "power8-altivec",
269 .llvm_name = "power8-altivec",
238 .description = "Enable POWER8 Altivec instructions",270 .description = "Enable POWER8 Altivec instructions",
239 .dependencies = &[_]*const Feature {271 .dependencies = &[_]*const Feature {
240 &feature_hardFloat,272 &feature_hardFloat,
...@@ -243,6 +275,7 @@ pub const feature_power8Altivec = Feature{...@@ -243,6 +275,7 @@ pub const feature_power8Altivec = Feature{
243275
244pub const feature_crypto = Feature{276pub const feature_crypto = Feature{
245 .name = "crypto",277 .name = "crypto",
278 .llvm_name = "crypto",
246 .description = "Enable POWER8 Crypto instructions",279 .description = "Enable POWER8 Crypto instructions",
247 .dependencies = &[_]*const Feature {280 .dependencies = &[_]*const Feature {
248 &feature_hardFloat,281 &feature_hardFloat,
...@@ -251,6 +284,7 @@ pub const feature_crypto = Feature{...@@ -251,6 +284,7 @@ pub const feature_crypto = Feature{
251284
252pub const feature_power8Vector = Feature{285pub const feature_power8Vector = Feature{
253 .name = "power8-vector",286 .name = "power8-vector",
287 .llvm_name = "power8-vector",
254 .description = "Enable POWER8 vector instructions",288 .description = "Enable POWER8 vector instructions",
255 .dependencies = &[_]*const Feature {289 .dependencies = &[_]*const Feature {
256 &feature_hardFloat,290 &feature_hardFloat,
...@@ -259,24 +293,27 @@ pub const feature_power8Vector = Feature{...@@ -259,24 +293,27 @@ pub const feature_power8Vector = Feature{
259293
260pub const feature_power9Altivec = Feature{294pub const feature_power9Altivec = Feature{
261 .name = "power9-altivec",295 .name = "power9-altivec",
296 .llvm_name = "power9-altivec",
262 .description = "Enable POWER9 Altivec instructions",297 .description = "Enable POWER9 Altivec instructions",
263 .dependencies = &[_]*const Feature {298 .dependencies = &[_]*const Feature {
264 &feature_isaV30Instructions,
265 &feature_hardFloat,299 &feature_hardFloat,
300 &feature_isaV30Instructions,
266 },301 },
267};302};
268303
269pub const feature_power9Vector = Feature{304pub const feature_power9Vector = Feature{
270 .name = "power9-vector",305 .name = "power9-vector",
306 .llvm_name = "power9-vector",
271 .description = "Enable POWER9 vector instructions",307 .description = "Enable POWER9 vector instructions",
272 .dependencies = &[_]*const Feature {308 .dependencies = &[_]*const Feature {
273 &feature_isaV30Instructions,
274 &feature_hardFloat,309 &feature_hardFloat,
310 &feature_isaV30Instructions,
275 },311 },
276};312};
277313
278pub const feature_popcntd = Feature{314pub const feature_popcntd = Feature{
279 .name = "popcntd",315 .name = "popcntd",
316 .llvm_name = "popcntd",
280 .description = "Enable the popcnt[dw] instructions",317 .description = "Enable the popcnt[dw] instructions",
281 .dependencies = &[_]*const Feature {318 .dependencies = &[_]*const Feature {
282 },319 },
...@@ -284,6 +321,7 @@ pub const feature_popcntd = Feature{...@@ -284,6 +321,7 @@ pub const feature_popcntd = Feature{
284321
285pub const feature_ppc4xx = Feature{322pub const feature_ppc4xx = Feature{
286 .name = "ppc4xx",323 .name = "ppc4xx",
324 .llvm_name = "ppc4xx",
287 .description = "Enable PPC 4xx instructions",325 .description = "Enable PPC 4xx instructions",
288 .dependencies = &[_]*const Feature {326 .dependencies = &[_]*const Feature {
289 },327 },
...@@ -291,6 +329,7 @@ pub const feature_ppc4xx = Feature{...@@ -291,6 +329,7 @@ pub const feature_ppc4xx = Feature{
291329
292pub const feature_ppc6xx = Feature{330pub const feature_ppc6xx = Feature{
293 .name = "ppc6xx",331 .name = "ppc6xx",
332 .llvm_name = "ppc6xx",
294 .description = "Enable PPC 6xx instructions",333 .description = "Enable PPC 6xx instructions",
295 .dependencies = &[_]*const Feature {334 .dependencies = &[_]*const Feature {
296 },335 },
...@@ -298,6 +337,7 @@ pub const feature_ppc6xx = Feature{...@@ -298,6 +337,7 @@ pub const feature_ppc6xx = Feature{
298337
299pub const feature_ppcPostraSched = Feature{338pub const feature_ppcPostraSched = Feature{
300 .name = "ppc-postra-sched",339 .name = "ppc-postra-sched",
340 .llvm_name = "ppc-postra-sched",
301 .description = "Use PowerPC post-RA scheduling strategy",341 .description = "Use PowerPC post-RA scheduling strategy",
302 .dependencies = &[_]*const Feature {342 .dependencies = &[_]*const Feature {
303 },343 },
...@@ -305,6 +345,7 @@ pub const feature_ppcPostraSched = Feature{...@@ -305,6 +345,7 @@ pub const feature_ppcPostraSched = Feature{
305345
306pub const feature_ppcPreraSched = Feature{346pub const feature_ppcPreraSched = Feature{
307 .name = "ppc-prera-sched",347 .name = "ppc-prera-sched",
348 .llvm_name = "ppc-prera-sched",
308 .description = "Use PowerPC pre-RA scheduling strategy",349 .description = "Use PowerPC pre-RA scheduling strategy",
309 .dependencies = &[_]*const Feature {350 .dependencies = &[_]*const Feature {
310 },351 },
...@@ -312,6 +353,7 @@ pub const feature_ppcPreraSched = Feature{...@@ -312,6 +353,7 @@ pub const feature_ppcPreraSched = Feature{
312353
313pub const feature_partwordAtomics = Feature{354pub const feature_partwordAtomics = Feature{
314 .name = "partword-atomics",355 .name = "partword-atomics",
356 .llvm_name = "partword-atomics",
315 .description = "Enable l[bh]arx and st[bh]cx.",357 .description = "Enable l[bh]arx and st[bh]cx.",
316 .dependencies = &[_]*const Feature {358 .dependencies = &[_]*const Feature {
317 },359 },
...@@ -319,6 +361,7 @@ pub const feature_partwordAtomics = Feature{...@@ -319,6 +361,7 @@ pub const feature_partwordAtomics = Feature{
319361
320pub const feature_qpx = Feature{362pub const feature_qpx = Feature{
321 .name = "qpx",363 .name = "qpx",
364 .llvm_name = "qpx",
322 .description = "Enable QPX instructions",365 .description = "Enable QPX instructions",
323 .dependencies = &[_]*const Feature {366 .dependencies = &[_]*const Feature {
324 &feature_hardFloat,367 &feature_hardFloat,
...@@ -327,6 +370,7 @@ pub const feature_qpx = Feature{...@@ -327,6 +370,7 @@ pub const feature_qpx = Feature{
327370
328pub const feature_recipprec = Feature{371pub const feature_recipprec = Feature{
329 .name = "recipprec",372 .name = "recipprec",
373 .llvm_name = "recipprec",
330 .description = "Assume higher precision reciprocal estimates",374 .description = "Assume higher precision reciprocal estimates",
331 .dependencies = &[_]*const Feature {375 .dependencies = &[_]*const Feature {
332 },376 },
...@@ -334,6 +378,7 @@ pub const feature_recipprec = Feature{...@@ -334,6 +378,7 @@ pub const feature_recipprec = Feature{
334378
335pub const feature_spe = Feature{379pub const feature_spe = Feature{
336 .name = "spe",380 .name = "spe",
381 .llvm_name = "spe",
337 .description = "Enable SPE instructions",382 .description = "Enable SPE instructions",
338 .dependencies = &[_]*const Feature {383 .dependencies = &[_]*const Feature {
339 &feature_hardFloat,384 &feature_hardFloat,
...@@ -342,6 +387,7 @@ pub const feature_spe = Feature{...@@ -342,6 +387,7 @@ pub const feature_spe = Feature{
342387
343pub const feature_stfiwx = Feature{388pub const feature_stfiwx = Feature{
344 .name = "stfiwx",389 .name = "stfiwx",
390 .llvm_name = "stfiwx",
345 .description = "Enable the stfiwx instruction",391 .description = "Enable the stfiwx instruction",
346 .dependencies = &[_]*const Feature {392 .dependencies = &[_]*const Feature {
347 &feature_hardFloat,393 &feature_hardFloat,
...@@ -350,6 +396,7 @@ pub const feature_stfiwx = Feature{...@@ -350,6 +396,7 @@ pub const feature_stfiwx = Feature{
350396
351pub const feature_securePlt = Feature{397pub const feature_securePlt = Feature{
352 .name = "secure-plt",398 .name = "secure-plt",
399 .llvm_name = "secure-plt",
353 .description = "Enable secure plt mode",400 .description = "Enable secure plt mode",
354 .dependencies = &[_]*const Feature {401 .dependencies = &[_]*const Feature {
355 },402 },
...@@ -357,6 +404,7 @@ pub const feature_securePlt = Feature{...@@ -357,6 +404,7 @@ pub const feature_securePlt = Feature{
357404
358pub const feature_slowPopcntd = Feature{405pub const feature_slowPopcntd = Feature{
359 .name = "slow-popcntd",406 .name = "slow-popcntd",
407 .llvm_name = "slow-popcntd",
360 .description = "Has slow popcnt[dw] instructions",408 .description = "Has slow popcnt[dw] instructions",
361 .dependencies = &[_]*const Feature {409 .dependencies = &[_]*const Feature {
362 },410 },
...@@ -364,6 +412,7 @@ pub const feature_slowPopcntd = Feature{...@@ -364,6 +412,7 @@ pub const feature_slowPopcntd = Feature{
364412
365pub const feature_twoConstNr = Feature{413pub const feature_twoConstNr = Feature{
366 .name = "two-const-nr",414 .name = "two-const-nr",
415 .llvm_name = "two-const-nr",
367 .description = "Requires two constant Newton-Raphson computation",416 .description = "Requires two constant Newton-Raphson computation",
368 .dependencies = &[_]*const Feature {417 .dependencies = &[_]*const Feature {
369 },418 },
...@@ -371,6 +420,7 @@ pub const feature_twoConstNr = Feature{...@@ -371,6 +420,7 @@ pub const feature_twoConstNr = Feature{
371420
372pub const feature_vsx = Feature{421pub const feature_vsx = Feature{
373 .name = "vsx",422 .name = "vsx",
423 .llvm_name = "vsx",
374 .description = "Enable VSX instructions",424 .description = "Enable VSX instructions",
375 .dependencies = &[_]*const Feature {425 .dependencies = &[_]*const Feature {
376 &feature_hardFloat,426 &feature_hardFloat,
...@@ -379,6 +429,7 @@ pub const feature_vsx = Feature{...@@ -379,6 +429,7 @@ pub const feature_vsx = Feature{
379429
380pub const feature_vectorsUseTwoUnits = Feature{430pub const feature_vectorsUseTwoUnits = Feature{
381 .name = "vectors-use-two-units",431 .name = "vectors-use-two-units",
432 .llvm_name = "vectors-use-two-units",
382 .description = "Vectors use two units",433 .description = "Vectors use two units",
383 .dependencies = &[_]*const Feature {434 .dependencies = &[_]*const Feature {
384 },435 },
lib/std/target/riscv.zig+9
...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
4pub const feature_bit64 = Feature{4pub const feature_bit64 = Feature{
5 .name = "64bit",5 .name = "64bit",
6 .llvm_name = "64bit",
6 .description = "Implements RV64",7 .description = "Implements RV64",
7 .dependencies = &[_]*const Feature {8 .dependencies = &[_]*const Feature {
8 },9 },
...@@ -10,6 +11,7 @@ pub const feature_bit64 = Feature{...@@ -10,6 +11,7 @@ pub const feature_bit64 = Feature{
1011
11pub const feature_e = Feature{12pub const feature_e = Feature{
12 .name = "e",13 .name = "e",
14 .llvm_name = "e",
13 .description = "Implements RV32E (provides 16 rather than 32 GPRs)",15 .description = "Implements RV32E (provides 16 rather than 32 GPRs)",
14 .dependencies = &[_]*const Feature {16 .dependencies = &[_]*const Feature {
15 },17 },
...@@ -17,6 +19,7 @@ pub const feature_e = Feature{...@@ -17,6 +19,7 @@ pub const feature_e = Feature{
1719
18pub const feature_rvcHints = Feature{20pub const feature_rvcHints = Feature{
19 .name = "rvc-hints",21 .name = "rvc-hints",
22 .llvm_name = "rvc-hints",
20 .description = "Enable RVC Hint Instructions.",23 .description = "Enable RVC Hint Instructions.",
21 .dependencies = &[_]*const Feature {24 .dependencies = &[_]*const Feature {
22 },25 },
...@@ -24,6 +27,7 @@ pub const feature_rvcHints = Feature{...@@ -24,6 +27,7 @@ pub const feature_rvcHints = Feature{
2427
25pub const feature_relax = Feature{28pub const feature_relax = Feature{
26 .name = "relax",29 .name = "relax",
30 .llvm_name = "relax",
27 .description = "Enable Linker relaxation.",31 .description = "Enable Linker relaxation.",
28 .dependencies = &[_]*const Feature {32 .dependencies = &[_]*const Feature {
29 },33 },
...@@ -31,6 +35,7 @@ pub const feature_relax = Feature{...@@ -31,6 +35,7 @@ pub const feature_relax = Feature{
3135
32pub const feature_a = Feature{36pub const feature_a = Feature{
33 .name = "a",37 .name = "a",
38 .llvm_name = "a",
34 .description = "'A' (Atomic Instructions)",39 .description = "'A' (Atomic Instructions)",
35 .dependencies = &[_]*const Feature {40 .dependencies = &[_]*const Feature {
36 },41 },
...@@ -38,6 +43,7 @@ pub const feature_a = Feature{...@@ -38,6 +43,7 @@ pub const feature_a = Feature{
3843
39pub const feature_c = Feature{44pub const feature_c = Feature{
40 .name = "c",45 .name = "c",
46 .llvm_name = "c",
41 .description = "'C' (Compressed Instructions)",47 .description = "'C' (Compressed Instructions)",
42 .dependencies = &[_]*const Feature {48 .dependencies = &[_]*const Feature {
43 },49 },
...@@ -45,6 +51,7 @@ pub const feature_c = Feature{...@@ -45,6 +51,7 @@ pub const feature_c = Feature{
4551
46pub const feature_d = Feature{52pub const feature_d = Feature{
47 .name = "d",53 .name = "d",
54 .llvm_name = "d",
48 .description = "'D' (Double-Precision Floating-Point)",55 .description = "'D' (Double-Precision Floating-Point)",
49 .dependencies = &[_]*const Feature {56 .dependencies = &[_]*const Feature {
50 &feature_f,57 &feature_f,
...@@ -53,6 +60,7 @@ pub const feature_d = Feature{...@@ -53,6 +60,7 @@ pub const feature_d = Feature{
5360
54pub const feature_f = Feature{61pub const feature_f = Feature{
55 .name = "f",62 .name = "f",
63 .llvm_name = "f",
56 .description = "'F' (Single-Precision Floating-Point)",64 .description = "'F' (Single-Precision Floating-Point)",
57 .dependencies = &[_]*const Feature {65 .dependencies = &[_]*const Feature {
58 },66 },
...@@ -60,6 +68,7 @@ pub const feature_f = Feature{...@@ -60,6 +68,7 @@ pub const feature_f = Feature{
6068
61pub const feature_m = Feature{69pub const feature_m = Feature{
62 .name = "m",70 .name = "m",
71 .llvm_name = "m",
63 .description = "'M' (Integer Multiplication and Division)",72 .description = "'M' (Integer Multiplication and Division)",
64 .dependencies = &[_]*const Feature {73 .dependencies = &[_]*const Feature {
65 },74 },
lib/std/target/sparc.zig+12
...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
4pub const feature_hardQuadFloat = Feature{4pub const feature_hardQuadFloat = Feature{
5 .name = "hard-quad-float",5 .name = "hard-quad-float",
6 .llvm_name = "hard-quad-float",
6 .description = "Enable quad-word floating point instructions",7 .description = "Enable quad-word floating point instructions",
7 .dependencies = &[_]*const Feature {8 .dependencies = &[_]*const Feature {
8 },9 },
...@@ -10,6 +11,7 @@ pub const feature_hardQuadFloat = Feature{...@@ -10,6 +11,7 @@ pub const feature_hardQuadFloat = Feature{
1011
11pub const feature_leon = Feature{12pub const feature_leon = Feature{
12 .name = "leon",13 .name = "leon",
14 .llvm_name = "leon",
13 .description = "Enable LEON extensions",15 .description = "Enable LEON extensions",
14 .dependencies = &[_]*const Feature {16 .dependencies = &[_]*const Feature {
15 },17 },
...@@ -17,6 +19,7 @@ pub const feature_leon = Feature{...@@ -17,6 +19,7 @@ pub const feature_leon = Feature{
1719
18pub const feature_noFmuls = Feature{20pub const feature_noFmuls = Feature{
19 .name = "no-fmuls",21 .name = "no-fmuls",
22 .llvm_name = "no-fmuls",
20 .description = "Disable the fmuls instruction.",23 .description = "Disable the fmuls instruction.",
21 .dependencies = &[_]*const Feature {24 .dependencies = &[_]*const Feature {
22 },25 },
...@@ -24,6 +27,7 @@ pub const feature_noFmuls = Feature{...@@ -24,6 +27,7 @@ pub const feature_noFmuls = Feature{
2427
25pub const feature_noFsmuld = Feature{28pub const feature_noFsmuld = Feature{
26 .name = "no-fsmuld",29 .name = "no-fsmuld",
30 .llvm_name = "no-fsmuld",
27 .description = "Disable the fsmuld instruction.",31 .description = "Disable the fsmuld instruction.",
28 .dependencies = &[_]*const Feature {32 .dependencies = &[_]*const Feature {
29 },33 },
...@@ -31,6 +35,7 @@ pub const feature_noFsmuld = Feature{...@@ -31,6 +35,7 @@ pub const feature_noFsmuld = Feature{
3135
32pub const feature_leonpwrpsr = Feature{36pub const feature_leonpwrpsr = Feature{
33 .name = "leonpwrpsr",37 .name = "leonpwrpsr",
38 .llvm_name = "leonpwrpsr",
34 .description = "Enable the PWRPSR instruction",39 .description = "Enable the PWRPSR instruction",
35 .dependencies = &[_]*const Feature {40 .dependencies = &[_]*const Feature {
36 },41 },
...@@ -38,6 +43,7 @@ pub const feature_leonpwrpsr = Feature{...@@ -38,6 +43,7 @@ pub const feature_leonpwrpsr = Feature{
3843
39pub const feature_softFloat = Feature{44pub const feature_softFloat = Feature{
40 .name = "soft-float",45 .name = "soft-float",
46 .llvm_name = "soft-float",
41 .description = "Use software emulation for floating point",47 .description = "Use software emulation for floating point",
42 .dependencies = &[_]*const Feature {48 .dependencies = &[_]*const Feature {
43 },49 },
...@@ -45,6 +51,7 @@ pub const feature_softFloat = Feature{...@@ -45,6 +51,7 @@ pub const feature_softFloat = Feature{
4551
46pub const feature_softMulDiv = Feature{52pub const feature_softMulDiv = Feature{
47 .name = "soft-mul-div",53 .name = "soft-mul-div",
54 .llvm_name = "soft-mul-div",
48 .description = "Use software emulation for integer multiply and divide",55 .description = "Use software emulation for integer multiply and divide",
49 .dependencies = &[_]*const Feature {56 .dependencies = &[_]*const Feature {
50 },57 },
...@@ -52,6 +59,7 @@ pub const feature_softMulDiv = Feature{...@@ -52,6 +59,7 @@ pub const feature_softMulDiv = Feature{
5259
53pub const feature_deprecatedV8 = Feature{60pub const feature_deprecatedV8 = Feature{
54 .name = "deprecated-v8",61 .name = "deprecated-v8",
62 .llvm_name = "deprecated-v8",
55 .description = "Enable deprecated V8 instructions in V9 mode",63 .description = "Enable deprecated V8 instructions in V9 mode",
56 .dependencies = &[_]*const Feature {64 .dependencies = &[_]*const Feature {
57 },65 },
...@@ -59,6 +67,7 @@ pub const feature_deprecatedV8 = Feature{...@@ -59,6 +67,7 @@ pub const feature_deprecatedV8 = Feature{
5967
60pub const feature_v9 = Feature{68pub const feature_v9 = Feature{
61 .name = "v9",69 .name = "v9",
70 .llvm_name = "v9",
62 .description = "Enable SPARC-V9 instructions",71 .description = "Enable SPARC-V9 instructions",
63 .dependencies = &[_]*const Feature {72 .dependencies = &[_]*const Feature {
64 },73 },
...@@ -66,6 +75,7 @@ pub const feature_v9 = Feature{...@@ -66,6 +75,7 @@ pub const feature_v9 = Feature{
6675
67pub const feature_vis = Feature{76pub const feature_vis = Feature{
68 .name = "vis",77 .name = "vis",
78 .llvm_name = "vis",
69 .description = "Enable UltraSPARC Visual Instruction Set extensions",79 .description = "Enable UltraSPARC Visual Instruction Set extensions",
70 .dependencies = &[_]*const Feature {80 .dependencies = &[_]*const Feature {
71 },81 },
...@@ -73,6 +83,7 @@ pub const feature_vis = Feature{...@@ -73,6 +83,7 @@ pub const feature_vis = Feature{
7383
74pub const feature_vis2 = Feature{84pub const feature_vis2 = Feature{
75 .name = "vis2",85 .name = "vis2",
86 .llvm_name = "vis2",
76 .description = "Enable Visual Instruction Set extensions II",87 .description = "Enable Visual Instruction Set extensions II",
77 .dependencies = &[_]*const Feature {88 .dependencies = &[_]*const Feature {
78 },89 },
...@@ -80,6 +91,7 @@ pub const feature_vis2 = Feature{...@@ -80,6 +91,7 @@ pub const feature_vis2 = Feature{
8091
81pub const feature_vis3 = Feature{92pub const feature_vis3 = Feature{
82 .name = "vis3",93 .name = "vis3",
94 .llvm_name = "vis3",
83 .description = "Enable Visual Instruction Set extensions III",95 .description = "Enable Visual Instruction Set extensions III",
84 .dependencies = &[_]*const Feature {96 .dependencies = &[_]*const Feature {
85 },97 },
lib/std/target/systemz.zig+35
...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
4pub const feature_dfpPackedConversion = Feature{4pub const feature_dfpPackedConversion = Feature{
5 .name = "dfp-packed-conversion",5 .name = "dfp-packed-conversion",
6 .llvm_name = "dfp-packed-conversion",
6 .description = "Assume that the DFP packed-conversion facility is installed",7 .description = "Assume that the DFP packed-conversion facility is installed",
7 .dependencies = &[_]*const Feature {8 .dependencies = &[_]*const Feature {
8 },9 },
...@@ -10,6 +11,7 @@ pub const feature_dfpPackedConversion = Feature{...@@ -10,6 +11,7 @@ pub const feature_dfpPackedConversion = Feature{
1011
11pub const feature_dfpZonedConversion = Feature{12pub const feature_dfpZonedConversion = Feature{
12 .name = "dfp-zoned-conversion",13 .name = "dfp-zoned-conversion",
14 .llvm_name = "dfp-zoned-conversion",
13 .description = "Assume that the DFP zoned-conversion facility is installed",15 .description = "Assume that the DFP zoned-conversion facility is installed",
14 .dependencies = &[_]*const Feature {16 .dependencies = &[_]*const Feature {
15 },17 },
...@@ -17,6 +19,7 @@ pub const feature_dfpZonedConversion = Feature{...@@ -17,6 +19,7 @@ pub const feature_dfpZonedConversion = Feature{
1719
18pub const feature_deflateConversion = Feature{20pub const feature_deflateConversion = Feature{
19 .name = "deflate-conversion",21 .name = "deflate-conversion",
22 .llvm_name = "deflate-conversion",
20 .description = "Assume that the deflate-conversion facility is installed",23 .description = "Assume that the deflate-conversion facility is installed",
21 .dependencies = &[_]*const Feature {24 .dependencies = &[_]*const Feature {
22 },25 },
...@@ -24,6 +27,7 @@ pub const feature_deflateConversion = Feature{...@@ -24,6 +27,7 @@ pub const feature_deflateConversion = Feature{
2427
25pub const feature_distinctOps = Feature{28pub const feature_distinctOps = Feature{
26 .name = "distinct-ops",29 .name = "distinct-ops",
30 .llvm_name = "distinct-ops",
27 .description = "Assume that the distinct-operands facility is installed",31 .description = "Assume that the distinct-operands facility is installed",
28 .dependencies = &[_]*const Feature {32 .dependencies = &[_]*const Feature {
29 },33 },
...@@ -31,6 +35,7 @@ pub const feature_distinctOps = Feature{...@@ -31,6 +35,7 @@ pub const feature_distinctOps = Feature{
3135
32pub const feature_enhancedDat2 = Feature{36pub const feature_enhancedDat2 = Feature{
33 .name = "enhanced-dat-2",37 .name = "enhanced-dat-2",
38 .llvm_name = "enhanced-dat-2",
34 .description = "Assume that the enhanced-DAT facility 2 is installed",39 .description = "Assume that the enhanced-DAT facility 2 is installed",
35 .dependencies = &[_]*const Feature {40 .dependencies = &[_]*const Feature {
36 },41 },
...@@ -38,6 +43,7 @@ pub const feature_enhancedDat2 = Feature{...@@ -38,6 +43,7 @@ pub const feature_enhancedDat2 = Feature{
3843
39pub const feature_enhancedSort = Feature{44pub const feature_enhancedSort = Feature{
40 .name = "enhanced-sort",45 .name = "enhanced-sort",
46 .llvm_name = "enhanced-sort",
41 .description = "Assume that the enhanced-sort facility is installed",47 .description = "Assume that the enhanced-sort facility is installed",
42 .dependencies = &[_]*const Feature {48 .dependencies = &[_]*const Feature {
43 },49 },
...@@ -45,6 +51,7 @@ pub const feature_enhancedSort = Feature{...@@ -45,6 +51,7 @@ pub const feature_enhancedSort = Feature{
4551
46pub const feature_executionHint = Feature{52pub const feature_executionHint = Feature{
47 .name = "execution-hint",53 .name = "execution-hint",
54 .llvm_name = "execution-hint",
48 .description = "Assume that the execution-hint facility is installed",55 .description = "Assume that the execution-hint facility is installed",
49 .dependencies = &[_]*const Feature {56 .dependencies = &[_]*const Feature {
50 },57 },
...@@ -52,6 +59,7 @@ pub const feature_executionHint = Feature{...@@ -52,6 +59,7 @@ pub const feature_executionHint = Feature{
5259
53pub const feature_fpExtension = Feature{60pub const feature_fpExtension = Feature{
54 .name = "fp-extension",61 .name = "fp-extension",
62 .llvm_name = "fp-extension",
55 .description = "Assume that the floating-point extension facility is installed",63 .description = "Assume that the floating-point extension facility is installed",
56 .dependencies = &[_]*const Feature {64 .dependencies = &[_]*const Feature {
57 },65 },
...@@ -59,6 +67,7 @@ pub const feature_fpExtension = Feature{...@@ -59,6 +67,7 @@ pub const feature_fpExtension = Feature{
5967
60pub const feature_fastSerialization = Feature{68pub const feature_fastSerialization = Feature{
61 .name = "fast-serialization",69 .name = "fast-serialization",
70 .llvm_name = "fast-serialization",
62 .description = "Assume that the fast-serialization facility is installed",71 .description = "Assume that the fast-serialization facility is installed",
63 .dependencies = &[_]*const Feature {72 .dependencies = &[_]*const Feature {
64 },73 },
...@@ -66,6 +75,7 @@ pub const feature_fastSerialization = Feature{...@@ -66,6 +75,7 @@ pub const feature_fastSerialization = Feature{
6675
67pub const feature_guardedStorage = Feature{76pub const feature_guardedStorage = Feature{
68 .name = "guarded-storage",77 .name = "guarded-storage",
78 .llvm_name = "guarded-storage",
69 .description = "Assume that the guarded-storage facility is installed",79 .description = "Assume that the guarded-storage facility is installed",
70 .dependencies = &[_]*const Feature {80 .dependencies = &[_]*const Feature {
71 },81 },
...@@ -73,6 +83,7 @@ pub const feature_guardedStorage = Feature{...@@ -73,6 +83,7 @@ pub const feature_guardedStorage = Feature{
7383
74pub const feature_highWord = Feature{84pub const feature_highWord = Feature{
75 .name = "high-word",85 .name = "high-word",
86 .llvm_name = "high-word",
76 .description = "Assume that the high-word facility is installed",87 .description = "Assume that the high-word facility is installed",
77 .dependencies = &[_]*const Feature {88 .dependencies = &[_]*const Feature {
78 },89 },
...@@ -80,6 +91,7 @@ pub const feature_highWord = Feature{...@@ -80,6 +91,7 @@ pub const feature_highWord = Feature{
8091
81pub const feature_insertReferenceBitsMultiple = Feature{92pub const feature_insertReferenceBitsMultiple = Feature{
82 .name = "insert-reference-bits-multiple",93 .name = "insert-reference-bits-multiple",
94 .llvm_name = "insert-reference-bits-multiple",
83 .description = "Assume that the insert-reference-bits-multiple facility is installed",95 .description = "Assume that the insert-reference-bits-multiple facility is installed",
84 .dependencies = &[_]*const Feature {96 .dependencies = &[_]*const Feature {
85 },97 },
...@@ -87,6 +99,7 @@ pub const feature_insertReferenceBitsMultiple = Feature{...@@ -87,6 +99,7 @@ pub const feature_insertReferenceBitsMultiple = Feature{
8799
88pub const feature_interlockedAccess1 = Feature{100pub const feature_interlockedAccess1 = Feature{
89 .name = "interlocked-access1",101 .name = "interlocked-access1",
102 .llvm_name = "interlocked-access1",
90 .description = "Assume that interlocked-access facility 1 is installed",103 .description = "Assume that interlocked-access facility 1 is installed",
91 .dependencies = &[_]*const Feature {104 .dependencies = &[_]*const Feature {
92 },105 },
...@@ -94,6 +107,7 @@ pub const feature_interlockedAccess1 = Feature{...@@ -94,6 +107,7 @@ pub const feature_interlockedAccess1 = Feature{
94107
95pub const feature_loadAndTrap = Feature{108pub const feature_loadAndTrap = Feature{
96 .name = "load-and-trap",109 .name = "load-and-trap",
110 .llvm_name = "load-and-trap",
97 .description = "Assume that the load-and-trap facility is installed",111 .description = "Assume that the load-and-trap facility is installed",
98 .dependencies = &[_]*const Feature {112 .dependencies = &[_]*const Feature {
99 },113 },
...@@ -101,6 +115,7 @@ pub const feature_loadAndTrap = Feature{...@@ -101,6 +115,7 @@ pub const feature_loadAndTrap = Feature{
101115
102pub const feature_loadAndZeroRightmostByte = Feature{116pub const feature_loadAndZeroRightmostByte = Feature{
103 .name = "load-and-zero-rightmost-byte",117 .name = "load-and-zero-rightmost-byte",
118 .llvm_name = "load-and-zero-rightmost-byte",
104 .description = "Assume that the load-and-zero-rightmost-byte facility is installed",119 .description = "Assume that the load-and-zero-rightmost-byte facility is installed",
105 .dependencies = &[_]*const Feature {120 .dependencies = &[_]*const Feature {
106 },121 },
...@@ -108,6 +123,7 @@ pub const feature_loadAndZeroRightmostByte = Feature{...@@ -108,6 +123,7 @@ pub const feature_loadAndZeroRightmostByte = Feature{
108123
109pub const feature_loadStoreOnCond = Feature{124pub const feature_loadStoreOnCond = Feature{
110 .name = "load-store-on-cond",125 .name = "load-store-on-cond",
126 .llvm_name = "load-store-on-cond",
111 .description = "Assume that the load/store-on-condition facility is installed",127 .description = "Assume that the load/store-on-condition facility is installed",
112 .dependencies = &[_]*const Feature {128 .dependencies = &[_]*const Feature {
113 },129 },
...@@ -115,6 +131,7 @@ pub const feature_loadStoreOnCond = Feature{...@@ -115,6 +131,7 @@ pub const feature_loadStoreOnCond = Feature{
115131
116pub const feature_loadStoreOnCond2 = Feature{132pub const feature_loadStoreOnCond2 = Feature{
117 .name = "load-store-on-cond-2",133 .name = "load-store-on-cond-2",
134 .llvm_name = "load-store-on-cond-2",
118 .description = "Assume that the load/store-on-condition facility 2 is installed",135 .description = "Assume that the load/store-on-condition facility 2 is installed",
119 .dependencies = &[_]*const Feature {136 .dependencies = &[_]*const Feature {
120 },137 },
...@@ -122,6 +139,7 @@ pub const feature_loadStoreOnCond2 = Feature{...@@ -122,6 +139,7 @@ pub const feature_loadStoreOnCond2 = Feature{
122139
123pub const feature_messageSecurityAssistExtension3 = Feature{140pub const feature_messageSecurityAssistExtension3 = Feature{
124 .name = "message-security-assist-extension3",141 .name = "message-security-assist-extension3",
142 .llvm_name = "message-security-assist-extension3",
125 .description = "Assume that the message-security-assist extension facility 3 is installed",143 .description = "Assume that the message-security-assist extension facility 3 is installed",
126 .dependencies = &[_]*const Feature {144 .dependencies = &[_]*const Feature {
127 },145 },
...@@ -129,6 +147,7 @@ pub const feature_messageSecurityAssistExtension3 = Feature{...@@ -129,6 +147,7 @@ pub const feature_messageSecurityAssistExtension3 = Feature{
129147
130pub const feature_messageSecurityAssistExtension4 = Feature{148pub const feature_messageSecurityAssistExtension4 = Feature{
131 .name = "message-security-assist-extension4",149 .name = "message-security-assist-extension4",
150 .llvm_name = "message-security-assist-extension4",
132 .description = "Assume that the message-security-assist extension facility 4 is installed",151 .description = "Assume that the message-security-assist extension facility 4 is installed",
133 .dependencies = &[_]*const Feature {152 .dependencies = &[_]*const Feature {
134 },153 },
...@@ -136,6 +155,7 @@ pub const feature_messageSecurityAssistExtension4 = Feature{...@@ -136,6 +155,7 @@ pub const feature_messageSecurityAssistExtension4 = Feature{
136155
137pub const feature_messageSecurityAssistExtension5 = Feature{156pub const feature_messageSecurityAssistExtension5 = Feature{
138 .name = "message-security-assist-extension5",157 .name = "message-security-assist-extension5",
158 .llvm_name = "message-security-assist-extension5",
139 .description = "Assume that the message-security-assist extension facility 5 is installed",159 .description = "Assume that the message-security-assist extension facility 5 is installed",
140 .dependencies = &[_]*const Feature {160 .dependencies = &[_]*const Feature {
141 },161 },
...@@ -143,6 +163,7 @@ pub const feature_messageSecurityAssistExtension5 = Feature{...@@ -143,6 +163,7 @@ pub const feature_messageSecurityAssistExtension5 = Feature{
143163
144pub const feature_messageSecurityAssistExtension7 = Feature{164pub const feature_messageSecurityAssistExtension7 = Feature{
145 .name = "message-security-assist-extension7",165 .name = "message-security-assist-extension7",
166 .llvm_name = "message-security-assist-extension7",
146 .description = "Assume that the message-security-assist extension facility 7 is installed",167 .description = "Assume that the message-security-assist extension facility 7 is installed",
147 .dependencies = &[_]*const Feature {168 .dependencies = &[_]*const Feature {
148 },169 },
...@@ -150,6 +171,7 @@ pub const feature_messageSecurityAssistExtension7 = Feature{...@@ -150,6 +171,7 @@ pub const feature_messageSecurityAssistExtension7 = Feature{
150171
151pub const feature_messageSecurityAssistExtension8 = Feature{172pub const feature_messageSecurityAssistExtension8 = Feature{
152 .name = "message-security-assist-extension8",173 .name = "message-security-assist-extension8",
174 .llvm_name = "message-security-assist-extension8",
153 .description = "Assume that the message-security-assist extension facility 8 is installed",175 .description = "Assume that the message-security-assist extension facility 8 is installed",
154 .dependencies = &[_]*const Feature {176 .dependencies = &[_]*const Feature {
155 },177 },
...@@ -157,6 +179,7 @@ pub const feature_messageSecurityAssistExtension8 = Feature{...@@ -157,6 +179,7 @@ pub const feature_messageSecurityAssistExtension8 = Feature{
157179
158pub const feature_messageSecurityAssistExtension9 = Feature{180pub const feature_messageSecurityAssistExtension9 = Feature{
159 .name = "message-security-assist-extension9",181 .name = "message-security-assist-extension9",
182 .llvm_name = "message-security-assist-extension9",
160 .description = "Assume that the message-security-assist extension facility 9 is installed",183 .description = "Assume that the message-security-assist extension facility 9 is installed",
161 .dependencies = &[_]*const Feature {184 .dependencies = &[_]*const Feature {
162 },185 },
...@@ -164,6 +187,7 @@ pub const feature_messageSecurityAssistExtension9 = Feature{...@@ -164,6 +187,7 @@ pub const feature_messageSecurityAssistExtension9 = Feature{
164187
165pub const feature_miscellaneousExtensions = Feature{188pub const feature_miscellaneousExtensions = Feature{
166 .name = "miscellaneous-extensions",189 .name = "miscellaneous-extensions",
190 .llvm_name = "miscellaneous-extensions",
167 .description = "Assume that the miscellaneous-extensions facility is installed",191 .description = "Assume that the miscellaneous-extensions facility is installed",
168 .dependencies = &[_]*const Feature {192 .dependencies = &[_]*const Feature {
169 },193 },
...@@ -171,6 +195,7 @@ pub const feature_miscellaneousExtensions = Feature{...@@ -171,6 +195,7 @@ pub const feature_miscellaneousExtensions = Feature{
171195
172pub const feature_miscellaneousExtensions2 = Feature{196pub const feature_miscellaneousExtensions2 = Feature{
173 .name = "miscellaneous-extensions-2",197 .name = "miscellaneous-extensions-2",
198 .llvm_name = "miscellaneous-extensions-2",
174 .description = "Assume that the miscellaneous-extensions facility 2 is installed",199 .description = "Assume that the miscellaneous-extensions facility 2 is installed",
175 .dependencies = &[_]*const Feature {200 .dependencies = &[_]*const Feature {
176 },201 },
...@@ -178,6 +203,7 @@ pub const feature_miscellaneousExtensions2 = Feature{...@@ -178,6 +203,7 @@ pub const feature_miscellaneousExtensions2 = Feature{
178203
179pub const feature_miscellaneousExtensions3 = Feature{204pub const feature_miscellaneousExtensions3 = Feature{
180 .name = "miscellaneous-extensions-3",205 .name = "miscellaneous-extensions-3",
206 .llvm_name = "miscellaneous-extensions-3",
181 .description = "Assume that the miscellaneous-extensions facility 3 is installed",207 .description = "Assume that the miscellaneous-extensions facility 3 is installed",
182 .dependencies = &[_]*const Feature {208 .dependencies = &[_]*const Feature {
183 },209 },
...@@ -185,6 +211,7 @@ pub const feature_miscellaneousExtensions3 = Feature{...@@ -185,6 +211,7 @@ pub const feature_miscellaneousExtensions3 = Feature{
185211
186pub const feature_populationCount = Feature{212pub const feature_populationCount = Feature{
187 .name = "population-count",213 .name = "population-count",
214 .llvm_name = "population-count",
188 .description = "Assume that the population-count facility is installed",215 .description = "Assume that the population-count facility is installed",
189 .dependencies = &[_]*const Feature {216 .dependencies = &[_]*const Feature {
190 },217 },
...@@ -192,6 +219,7 @@ pub const feature_populationCount = Feature{...@@ -192,6 +219,7 @@ pub const feature_populationCount = Feature{
192219
193pub const feature_processorAssist = Feature{220pub const feature_processorAssist = Feature{
194 .name = "processor-assist",221 .name = "processor-assist",
222 .llvm_name = "processor-assist",
195 .description = "Assume that the processor-assist facility is installed",223 .description = "Assume that the processor-assist facility is installed",
196 .dependencies = &[_]*const Feature {224 .dependencies = &[_]*const Feature {
197 },225 },
...@@ -199,6 +227,7 @@ pub const feature_processorAssist = Feature{...@@ -199,6 +227,7 @@ pub const feature_processorAssist = Feature{
199227
200pub const feature_resetReferenceBitsMultiple = Feature{228pub const feature_resetReferenceBitsMultiple = Feature{
201 .name = "reset-reference-bits-multiple",229 .name = "reset-reference-bits-multiple",
230 .llvm_name = "reset-reference-bits-multiple",
202 .description = "Assume that the reset-reference-bits-multiple facility is installed",231 .description = "Assume that the reset-reference-bits-multiple facility is installed",
203 .dependencies = &[_]*const Feature {232 .dependencies = &[_]*const Feature {
204 },233 },
...@@ -206,6 +235,7 @@ pub const feature_resetReferenceBitsMultiple = Feature{...@@ -206,6 +235,7 @@ pub const feature_resetReferenceBitsMultiple = Feature{
206235
207pub const feature_transactionalExecution = Feature{236pub const feature_transactionalExecution = Feature{
208 .name = "transactional-execution",237 .name = "transactional-execution",
238 .llvm_name = "transactional-execution",
209 .description = "Assume that the transactional-execution facility is installed",239 .description = "Assume that the transactional-execution facility is installed",
210 .dependencies = &[_]*const Feature {240 .dependencies = &[_]*const Feature {
211 },241 },
...@@ -213,6 +243,7 @@ pub const feature_transactionalExecution = Feature{...@@ -213,6 +243,7 @@ pub const feature_transactionalExecution = Feature{
213243
214pub const feature_vector = Feature{244pub const feature_vector = Feature{
215 .name = "vector",245 .name = "vector",
246 .llvm_name = "vector",
216 .description = "Assume that the vectory facility is installed",247 .description = "Assume that the vectory facility is installed",
217 .dependencies = &[_]*const Feature {248 .dependencies = &[_]*const Feature {
218 },249 },
...@@ -220,6 +251,7 @@ pub const feature_vector = Feature{...@@ -220,6 +251,7 @@ pub const feature_vector = Feature{
220251
221pub const feature_vectorEnhancements1 = Feature{252pub const feature_vectorEnhancements1 = Feature{
222 .name = "vector-enhancements-1",253 .name = "vector-enhancements-1",
254 .llvm_name = "vector-enhancements-1",
223 .description = "Assume that the vector enhancements facility 1 is installed",255 .description = "Assume that the vector enhancements facility 1 is installed",
224 .dependencies = &[_]*const Feature {256 .dependencies = &[_]*const Feature {
225 },257 },
...@@ -227,6 +259,7 @@ pub const feature_vectorEnhancements1 = Feature{...@@ -227,6 +259,7 @@ pub const feature_vectorEnhancements1 = Feature{
227259
228pub const feature_vectorEnhancements2 = Feature{260pub const feature_vectorEnhancements2 = Feature{
229 .name = "vector-enhancements-2",261 .name = "vector-enhancements-2",
262 .llvm_name = "vector-enhancements-2",
230 .description = "Assume that the vector enhancements facility 2 is installed",263 .description = "Assume that the vector enhancements facility 2 is installed",
231 .dependencies = &[_]*const Feature {264 .dependencies = &[_]*const Feature {
232 },265 },
...@@ -234,6 +267,7 @@ pub const feature_vectorEnhancements2 = Feature{...@@ -234,6 +267,7 @@ pub const feature_vectorEnhancements2 = Feature{
234267
235pub const feature_vectorPackedDecimal = Feature{268pub const feature_vectorPackedDecimal = Feature{
236 .name = "vector-packed-decimal",269 .name = "vector-packed-decimal",
270 .llvm_name = "vector-packed-decimal",
237 .description = "Assume that the vector packed decimal facility is installed",271 .description = "Assume that the vector packed decimal facility is installed",
238 .dependencies = &[_]*const Feature {272 .dependencies = &[_]*const Feature {
239 },273 },
...@@ -241,6 +275,7 @@ pub const feature_vectorPackedDecimal = Feature{...@@ -241,6 +275,7 @@ pub const feature_vectorPackedDecimal = Feature{
241275
242pub const feature_vectorPackedDecimalEnhancement = Feature{276pub const feature_vectorPackedDecimalEnhancement = Feature{
243 .name = "vector-packed-decimal-enhancement",277 .name = "vector-packed-decimal-enhancement",
278 .llvm_name = "vector-packed-decimal-enhancement",
244 .description = "Assume that the vector packed decimal enhancement facility is installed",279 .description = "Assume that the vector packed decimal enhancement facility is installed",
245 .dependencies = &[_]*const Feature {280 .dependencies = &[_]*const Feature {
246 },281 },
lib/std/target/wasm.zig+10
...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
4pub const feature_atomics = Feature{4pub const feature_atomics = Feature{
5 .name = "atomics",5 .name = "atomics",
6 .llvm_name = "atomics",
6 .description = "Enable Atomics",7 .description = "Enable Atomics",
7 .dependencies = &[_]*const Feature {8 .dependencies = &[_]*const Feature {
8 },9 },
...@@ -10,6 +11,7 @@ pub const feature_atomics = Feature{...@@ -10,6 +11,7 @@ pub const feature_atomics = Feature{
1011
11pub const feature_bulkMemory = Feature{12pub const feature_bulkMemory = Feature{
12 .name = "bulk-memory",13 .name = "bulk-memory",
14 .llvm_name = "bulk-memory",
13 .description = "Enable bulk memory operations",15 .description = "Enable bulk memory operations",
14 .dependencies = &[_]*const Feature {16 .dependencies = &[_]*const Feature {
15 },17 },
...@@ -17,6 +19,7 @@ pub const feature_bulkMemory = Feature{...@@ -17,6 +19,7 @@ pub const feature_bulkMemory = Feature{
1719
18pub const feature_exceptionHandling = Feature{20pub const feature_exceptionHandling = Feature{
19 .name = "exception-handling",21 .name = "exception-handling",
22 .llvm_name = "exception-handling",
20 .description = "Enable Wasm exception handling",23 .description = "Enable Wasm exception handling",
21 .dependencies = &[_]*const Feature {24 .dependencies = &[_]*const Feature {
22 },25 },
...@@ -24,6 +27,7 @@ pub const feature_exceptionHandling = Feature{...@@ -24,6 +27,7 @@ pub const feature_exceptionHandling = Feature{
2427
25pub const feature_multivalue = Feature{28pub const feature_multivalue = Feature{
26 .name = "multivalue",29 .name = "multivalue",
30 .llvm_name = "multivalue",
27 .description = "Enable multivalue blocks, instructions, and functions",31 .description = "Enable multivalue blocks, instructions, and functions",
28 .dependencies = &[_]*const Feature {32 .dependencies = &[_]*const Feature {
29 },33 },
...@@ -31,6 +35,7 @@ pub const feature_multivalue = Feature{...@@ -31,6 +35,7 @@ pub const feature_multivalue = Feature{
3135
32pub const feature_mutableGlobals = Feature{36pub const feature_mutableGlobals = Feature{
33 .name = "mutable-globals",37 .name = "mutable-globals",
38 .llvm_name = "mutable-globals",
34 .description = "Enable mutable globals",39 .description = "Enable mutable globals",
35 .dependencies = &[_]*const Feature {40 .dependencies = &[_]*const Feature {
36 },41 },
...@@ -38,6 +43,7 @@ pub const feature_mutableGlobals = Feature{...@@ -38,6 +43,7 @@ pub const feature_mutableGlobals = Feature{
3843
39pub const feature_nontrappingFptoint = Feature{44pub const feature_nontrappingFptoint = Feature{
40 .name = "nontrapping-fptoint",45 .name = "nontrapping-fptoint",
46 .llvm_name = "nontrapping-fptoint",
41 .description = "Enable non-trapping float-to-int conversion operators",47 .description = "Enable non-trapping float-to-int conversion operators",
42 .dependencies = &[_]*const Feature {48 .dependencies = &[_]*const Feature {
43 },49 },
...@@ -45,6 +51,7 @@ pub const feature_nontrappingFptoint = Feature{...@@ -45,6 +51,7 @@ pub const feature_nontrappingFptoint = Feature{
4551
46pub const feature_simd128 = Feature{52pub const feature_simd128 = Feature{
47 .name = "simd128",53 .name = "simd128",
54 .llvm_name = "simd128",
48 .description = "Enable 128-bit SIMD",55 .description = "Enable 128-bit SIMD",
49 .dependencies = &[_]*const Feature {56 .dependencies = &[_]*const Feature {
50 },57 },
...@@ -52,6 +59,7 @@ pub const feature_simd128 = Feature{...@@ -52,6 +59,7 @@ pub const feature_simd128 = Feature{
5259
53pub const feature_signExt = Feature{60pub const feature_signExt = Feature{
54 .name = "sign-ext",61 .name = "sign-ext",
62 .llvm_name = "sign-ext",
55 .description = "Enable sign extension operators",63 .description = "Enable sign extension operators",
56 .dependencies = &[_]*const Feature {64 .dependencies = &[_]*const Feature {
57 },65 },
...@@ -59,6 +67,7 @@ pub const feature_signExt = Feature{...@@ -59,6 +67,7 @@ pub const feature_signExt = Feature{
5967
60pub const feature_tailCall = Feature{68pub const feature_tailCall = Feature{
61 .name = "tail-call",69 .name = "tail-call",
70 .llvm_name = "tail-call",
62 .description = "Enable tail call instructions",71 .description = "Enable tail call instructions",
63 .dependencies = &[_]*const Feature {72 .dependencies = &[_]*const Feature {
64 },73 },
...@@ -66,6 +75,7 @@ pub const feature_tailCall = Feature{...@@ -66,6 +75,7 @@ pub const feature_tailCall = Feature{
6675
67pub const feature_unimplementedSimd128 = Feature{76pub const feature_unimplementedSimd128 = Feature{
68 .name = "unimplemented-simd128",77 .name = "unimplemented-simd128",
78 .llvm_name = "unimplemented-simd128",
69 .description = "Enable 128-bit SIMD not yet implemented in engines",79 .description = "Enable 128-bit SIMD not yet implemented in engines",
70 .dependencies = &[_]*const Feature {80 .dependencies = &[_]*const Feature {
71 &feature_simd128,81 &feature_simd128,
lib/std/target/x86.zig+126
...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;...@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
4pub const feature_dnow3 = Feature{4pub const feature_dnow3 = Feature{
5 .name = "3dnow",5 .name = "3dnow",
6 .llvm_name = "3dnow",
6 .description = "Enable 3DNow! instructions",7 .description = "Enable 3DNow! instructions",
7 .dependencies = &[_]*const Feature {8 .dependencies = &[_]*const Feature {
8 &feature_mmx,9 &feature_mmx,
...@@ -11,6 +12,7 @@ pub const feature_dnow3 = Feature{...@@ -11,6 +12,7 @@ pub const feature_dnow3 = Feature{
1112
12pub const feature_dnowa3 = Feature{13pub const feature_dnowa3 = Feature{
13 .name = "3dnowa",14 .name = "3dnowa",
15 .llvm_name = "3dnowa",
14 .description = "Enable 3DNow! Athlon instructions",16 .description = "Enable 3DNow! Athlon instructions",
15 .dependencies = &[_]*const Feature {17 .dependencies = &[_]*const Feature {
16 &feature_mmx,18 &feature_mmx,
...@@ -19,6 +21,7 @@ pub const feature_dnowa3 = Feature{...@@ -19,6 +21,7 @@ pub const feature_dnowa3 = Feature{
1921
20pub const feature_bit64 = Feature{22pub const feature_bit64 = Feature{
21 .name = "64bit",23 .name = "64bit",
24 .llvm_name = "64bit",
22 .description = "Support 64-bit instructions",25 .description = "Support 64-bit instructions",
23 .dependencies = &[_]*const Feature {26 .dependencies = &[_]*const Feature {
24 },27 },
...@@ -26,6 +29,7 @@ pub const feature_bit64 = Feature{...@@ -26,6 +29,7 @@ pub const feature_bit64 = Feature{
2629
27pub const feature_adx = Feature{30pub const feature_adx = Feature{
28 .name = "adx",31 .name = "adx",
32 .llvm_name = "adx",
29 .description = "Support ADX instructions",33 .description = "Support ADX instructions",
30 .dependencies = &[_]*const Feature {34 .dependencies = &[_]*const Feature {
31 },35 },
...@@ -33,6 +37,7 @@ pub const feature_adx = Feature{...@@ -33,6 +37,7 @@ pub const feature_adx = Feature{
3337
34pub const feature_aes = Feature{38pub const feature_aes = Feature{
35 .name = "aes",39 .name = "aes",
40 .llvm_name = "aes",
36 .description = "Enable AES instructions",41 .description = "Enable AES instructions",
37 .dependencies = &[_]*const Feature {42 .dependencies = &[_]*const Feature {
38 &feature_sse,43 &feature_sse,
...@@ -41,6 +46,7 @@ pub const feature_aes = Feature{...@@ -41,6 +46,7 @@ pub const feature_aes = Feature{
4146
42pub const feature_avx = Feature{47pub const feature_avx = Feature{
43 .name = "avx",48 .name = "avx",
49 .llvm_name = "avx",
44 .description = "Enable AVX instructions",50 .description = "Enable AVX instructions",
45 .dependencies = &[_]*const Feature {51 .dependencies = &[_]*const Feature {
46 &feature_sse,52 &feature_sse,
...@@ -49,6 +55,7 @@ pub const feature_avx = Feature{...@@ -49,6 +55,7 @@ pub const feature_avx = Feature{
4955
50pub const feature_avx2 = Feature{56pub const feature_avx2 = Feature{
51 .name = "avx2",57 .name = "avx2",
58 .llvm_name = "avx2",
52 .description = "Enable AVX2 instructions",59 .description = "Enable AVX2 instructions",
53 .dependencies = &[_]*const Feature {60 .dependencies = &[_]*const Feature {
54 &feature_sse,61 &feature_sse,
...@@ -57,6 +64,7 @@ pub const feature_avx2 = Feature{...@@ -57,6 +64,7 @@ pub const feature_avx2 = Feature{
5764
58pub const feature_avx512f = Feature{65pub const feature_avx512f = Feature{
59 .name = "avx512f",66 .name = "avx512f",
67 .llvm_name = "avx512f",
60 .description = "Enable AVX-512 instructions",68 .description = "Enable AVX-512 instructions",
61 .dependencies = &[_]*const Feature {69 .dependencies = &[_]*const Feature {
62 &feature_sse,70 &feature_sse,
...@@ -65,6 +73,7 @@ pub const feature_avx512f = Feature{...@@ -65,6 +73,7 @@ pub const feature_avx512f = Feature{
6573
66pub const feature_avx512bf16 = Feature{74pub const feature_avx512bf16 = Feature{
67 .name = "avx512bf16",75 .name = "avx512bf16",
76 .llvm_name = "avx512bf16",
68 .description = "Support bfloat16 floating point",77 .description = "Support bfloat16 floating point",
69 .dependencies = &[_]*const Feature {78 .dependencies = &[_]*const Feature {
70 &feature_sse,79 &feature_sse,
...@@ -73,6 +82,7 @@ pub const feature_avx512bf16 = Feature{...@@ -73,6 +82,7 @@ pub const feature_avx512bf16 = Feature{
7382
74pub const feature_avx512bitalg = Feature{83pub const feature_avx512bitalg = Feature{
75 .name = "avx512bitalg",84 .name = "avx512bitalg",
85 .llvm_name = "avx512bitalg",
76 .description = "Enable AVX-512 Bit Algorithms",86 .description = "Enable AVX-512 Bit Algorithms",
77 .dependencies = &[_]*const Feature {87 .dependencies = &[_]*const Feature {
78 &feature_sse,88 &feature_sse,
...@@ -81,6 +91,7 @@ pub const feature_avx512bitalg = Feature{...@@ -81,6 +91,7 @@ pub const feature_avx512bitalg = Feature{
8191
82pub const feature_bmi = Feature{92pub const feature_bmi = Feature{
83 .name = "bmi",93 .name = "bmi",
94 .llvm_name = "bmi",
84 .description = "Support BMI instructions",95 .description = "Support BMI instructions",
85 .dependencies = &[_]*const Feature {96 .dependencies = &[_]*const Feature {
86 },97 },
...@@ -88,6 +99,7 @@ pub const feature_bmi = Feature{...@@ -88,6 +99,7 @@ pub const feature_bmi = Feature{
8899
89pub const feature_bmi2 = Feature{100pub const feature_bmi2 = Feature{
90 .name = "bmi2",101 .name = "bmi2",
102 .llvm_name = "bmi2",
91 .description = "Support BMI2 instructions",103 .description = "Support BMI2 instructions",
92 .dependencies = &[_]*const Feature {104 .dependencies = &[_]*const Feature {
93 },105 },
...@@ -95,6 +107,7 @@ pub const feature_bmi2 = Feature{...@@ -95,6 +107,7 @@ pub const feature_bmi2 = Feature{
95107
96pub const feature_avx512bw = Feature{108pub const feature_avx512bw = Feature{
97 .name = "avx512bw",109 .name = "avx512bw",
110 .llvm_name = "avx512bw",
98 .description = "Enable AVX-512 Byte and Word Instructions",111 .description = "Enable AVX-512 Byte and Word Instructions",
99 .dependencies = &[_]*const Feature {112 .dependencies = &[_]*const Feature {
100 &feature_sse,113 &feature_sse,
...@@ -103,6 +116,7 @@ pub const feature_avx512bw = Feature{...@@ -103,6 +116,7 @@ pub const feature_avx512bw = Feature{
103116
104pub const feature_branchfusion = Feature{117pub const feature_branchfusion = Feature{
105 .name = "branchfusion",118 .name = "branchfusion",
119 .llvm_name = "branchfusion",
106 .description = "CMP/TEST can be fused with conditional branches",120 .description = "CMP/TEST can be fused with conditional branches",
107 .dependencies = &[_]*const Feature {121 .dependencies = &[_]*const Feature {
108 },122 },
...@@ -110,6 +124,7 @@ pub const feature_branchfusion = Feature{...@@ -110,6 +124,7 @@ pub const feature_branchfusion = Feature{
110124
111pub const feature_avx512cd = Feature{125pub const feature_avx512cd = Feature{
112 .name = "avx512cd",126 .name = "avx512cd",
127 .llvm_name = "avx512cd",
113 .description = "Enable AVX-512 Conflict Detection Instructions",128 .description = "Enable AVX-512 Conflict Detection Instructions",
114 .dependencies = &[_]*const Feature {129 .dependencies = &[_]*const Feature {
115 &feature_sse,130 &feature_sse,
...@@ -118,6 +133,7 @@ pub const feature_avx512cd = Feature{...@@ -118,6 +133,7 @@ pub const feature_avx512cd = Feature{
118133
119pub const feature_cldemote = Feature{134pub const feature_cldemote = Feature{
120 .name = "cldemote",135 .name = "cldemote",
136 .llvm_name = "cldemote",
121 .description = "Enable Cache Demote",137 .description = "Enable Cache Demote",
122 .dependencies = &[_]*const Feature {138 .dependencies = &[_]*const Feature {
123 },139 },
...@@ -125,6 +141,7 @@ pub const feature_cldemote = Feature{...@@ -125,6 +141,7 @@ pub const feature_cldemote = Feature{
125141
126pub const feature_clflushopt = Feature{142pub const feature_clflushopt = Feature{
127 .name = "clflushopt",143 .name = "clflushopt",
144 .llvm_name = "clflushopt",
128 .description = "Flush A Cache Line Optimized",145 .description = "Flush A Cache Line Optimized",
129 .dependencies = &[_]*const Feature {146 .dependencies = &[_]*const Feature {
130 },147 },
...@@ -132,6 +149,7 @@ pub const feature_clflushopt = Feature{...@@ -132,6 +149,7 @@ pub const feature_clflushopt = Feature{
132149
133pub const feature_clwb = Feature{150pub const feature_clwb = Feature{
134 .name = "clwb",151 .name = "clwb",
152 .llvm_name = "clwb",
135 .description = "Cache Line Write Back",153 .description = "Cache Line Write Back",
136 .dependencies = &[_]*const Feature {154 .dependencies = &[_]*const Feature {
137 },155 },
...@@ -139,6 +157,7 @@ pub const feature_clwb = Feature{...@@ -139,6 +157,7 @@ pub const feature_clwb = Feature{
139157
140pub const feature_clzero = Feature{158pub const feature_clzero = Feature{
141 .name = "clzero",159 .name = "clzero",
160 .llvm_name = "clzero",
142 .description = "Enable Cache Line Zero",161 .description = "Enable Cache Line Zero",
143 .dependencies = &[_]*const Feature {162 .dependencies = &[_]*const Feature {
144 },163 },
...@@ -146,6 +165,7 @@ pub const feature_clzero = Feature{...@@ -146,6 +165,7 @@ pub const feature_clzero = Feature{
146165
147pub const feature_cmov = Feature{166pub const feature_cmov = Feature{
148 .name = "cmov",167 .name = "cmov",
168 .llvm_name = "cmov",
149 .description = "Enable conditional move instructions",169 .description = "Enable conditional move instructions",
150 .dependencies = &[_]*const Feature {170 .dependencies = &[_]*const Feature {
151 },171 },
...@@ -153,6 +173,7 @@ pub const feature_cmov = Feature{...@@ -153,6 +173,7 @@ pub const feature_cmov = Feature{
153173
154pub const feature_cx8 = Feature{174pub const feature_cx8 = Feature{
155 .name = "cx8",175 .name = "cx8",
176 .llvm_name = "cx8",
156 .description = "Support CMPXCHG8B instructions",177 .description = "Support CMPXCHG8B instructions",
157 .dependencies = &[_]*const Feature {178 .dependencies = &[_]*const Feature {
158 },179 },
...@@ -160,6 +181,7 @@ pub const feature_cx8 = Feature{...@@ -160,6 +181,7 @@ pub const feature_cx8 = Feature{
160181
161pub const feature_cx16 = Feature{182pub const feature_cx16 = Feature{
162 .name = "cx16",183 .name = "cx16",
184 .llvm_name = "cx16",
163 .description = "64-bit with cmpxchg16b",185 .description = "64-bit with cmpxchg16b",
164 .dependencies = &[_]*const Feature {186 .dependencies = &[_]*const Feature {
165 &feature_cx8,187 &feature_cx8,
...@@ -168,6 +190,7 @@ pub const feature_cx16 = Feature{...@@ -168,6 +190,7 @@ pub const feature_cx16 = Feature{
168190
169pub const feature_avx512dq = Feature{191pub const feature_avx512dq = Feature{
170 .name = "avx512dq",192 .name = "avx512dq",
193 .llvm_name = "avx512dq",
171 .description = "Enable AVX-512 Doubleword and Quadword Instructions",194 .description = "Enable AVX-512 Doubleword and Quadword Instructions",
172 .dependencies = &[_]*const Feature {195 .dependencies = &[_]*const Feature {
173 &feature_sse,196 &feature_sse,
...@@ -176,6 +199,7 @@ pub const feature_avx512dq = Feature{...@@ -176,6 +199,7 @@ pub const feature_avx512dq = Feature{
176199
177pub const feature_mpx = Feature{200pub const feature_mpx = Feature{
178 .name = "mpx",201 .name = "mpx",
202 .llvm_name = "mpx",
179 .description = "Deprecated. Support MPX instructions",203 .description = "Deprecated. Support MPX instructions",
180 .dependencies = &[_]*const Feature {204 .dependencies = &[_]*const Feature {
181 },205 },
...@@ -183,6 +207,7 @@ pub const feature_mpx = Feature{...@@ -183,6 +207,7 @@ pub const feature_mpx = Feature{
183207
184pub const feature_enqcmd = Feature{208pub const feature_enqcmd = Feature{
185 .name = "enqcmd",209 .name = "enqcmd",
210 .llvm_name = "enqcmd",
186 .description = "Has ENQCMD instructions",211 .description = "Has ENQCMD instructions",
187 .dependencies = &[_]*const Feature {212 .dependencies = &[_]*const Feature {
188 },213 },
...@@ -190,6 +215,7 @@ pub const feature_enqcmd = Feature{...@@ -190,6 +215,7 @@ pub const feature_enqcmd = Feature{
190215
191pub const feature_avx512er = Feature{216pub const feature_avx512er = Feature{
192 .name = "avx512er",217 .name = "avx512er",
218 .llvm_name = "avx512er",
193 .description = "Enable AVX-512 Exponential and Reciprocal Instructions",219 .description = "Enable AVX-512 Exponential and Reciprocal Instructions",
194 .dependencies = &[_]*const Feature {220 .dependencies = &[_]*const Feature {
195 &feature_sse,221 &feature_sse,
...@@ -198,6 +224,7 @@ pub const feature_avx512er = Feature{...@@ -198,6 +224,7 @@ pub const feature_avx512er = Feature{
198224
199pub const feature_ermsb = Feature{225pub const feature_ermsb = Feature{
200 .name = "ermsb",226 .name = "ermsb",
227 .llvm_name = "ermsb",
201 .description = "REP MOVS/STOS are fast",228 .description = "REP MOVS/STOS are fast",
202 .dependencies = &[_]*const Feature {229 .dependencies = &[_]*const Feature {
203 },230 },
...@@ -205,6 +232,7 @@ pub const feature_ermsb = Feature{...@@ -205,6 +232,7 @@ pub const feature_ermsb = Feature{
205232
206pub const feature_f16c = Feature{233pub const feature_f16c = Feature{
207 .name = "f16c",234 .name = "f16c",
235 .llvm_name = "f16c",
208 .description = "Support 16-bit floating point conversion instructions",236 .description = "Support 16-bit floating point conversion instructions",
209 .dependencies = &[_]*const Feature {237 .dependencies = &[_]*const Feature {
210 &feature_sse,238 &feature_sse,
...@@ -213,6 +241,7 @@ pub const feature_f16c = Feature{...@@ -213,6 +241,7 @@ pub const feature_f16c = Feature{
213241
214pub const feature_fma = Feature{242pub const feature_fma = Feature{
215 .name = "fma",243 .name = "fma",
244 .llvm_name = "fma",
216 .description = "Enable three-operand fused multiple-add",245 .description = "Enable three-operand fused multiple-add",
217 .dependencies = &[_]*const Feature {246 .dependencies = &[_]*const Feature {
218 &feature_sse,247 &feature_sse,
...@@ -221,6 +250,7 @@ pub const feature_fma = Feature{...@@ -221,6 +250,7 @@ pub const feature_fma = Feature{
221250
222pub const feature_fma4 = Feature{251pub const feature_fma4 = Feature{
223 .name = "fma4",252 .name = "fma4",
253 .llvm_name = "fma4",
224 .description = "Enable four-operand fused multiple-add",254 .description = "Enable four-operand fused multiple-add",
225 .dependencies = &[_]*const Feature {255 .dependencies = &[_]*const Feature {
226 &feature_sse,256 &feature_sse,
...@@ -229,6 +259,7 @@ pub const feature_fma4 = Feature{...@@ -229,6 +259,7 @@ pub const feature_fma4 = Feature{
229259
230pub const feature_fsgsbase = Feature{260pub const feature_fsgsbase = Feature{
231 .name = "fsgsbase",261 .name = "fsgsbase",
262 .llvm_name = "fsgsbase",
232 .description = "Support FS/GS Base instructions",263 .description = "Support FS/GS Base instructions",
233 .dependencies = &[_]*const Feature {264 .dependencies = &[_]*const Feature {
234 },265 },
...@@ -236,6 +267,7 @@ pub const feature_fsgsbase = Feature{...@@ -236,6 +267,7 @@ pub const feature_fsgsbase = Feature{
236267
237pub const feature_fxsr = Feature{268pub const feature_fxsr = Feature{
238 .name = "fxsr",269 .name = "fxsr",
270 .llvm_name = "fxsr",
239 .description = "Support fxsave/fxrestore instructions",271 .description = "Support fxsave/fxrestore instructions",
240 .dependencies = &[_]*const Feature {272 .dependencies = &[_]*const Feature {
241 },273 },
...@@ -243,6 +275,7 @@ pub const feature_fxsr = Feature{...@@ -243,6 +275,7 @@ pub const feature_fxsr = Feature{
243275
244pub const feature_fast11bytenop = Feature{276pub const feature_fast11bytenop = Feature{
245 .name = "fast-11bytenop",277 .name = "fast-11bytenop",
278 .llvm_name = "fast-11bytenop",
246 .description = "Target can quickly decode up to 11 byte NOPs",279 .description = "Target can quickly decode up to 11 byte NOPs",
247 .dependencies = &[_]*const Feature {280 .dependencies = &[_]*const Feature {
248 },281 },
...@@ -250,6 +283,7 @@ pub const feature_fast11bytenop = Feature{...@@ -250,6 +283,7 @@ pub const feature_fast11bytenop = Feature{
250283
251pub const feature_fast15bytenop = Feature{284pub const feature_fast15bytenop = Feature{
252 .name = "fast-15bytenop",285 .name = "fast-15bytenop",
286 .llvm_name = "fast-15bytenop",
253 .description = "Target can quickly decode up to 15 byte NOPs",287 .description = "Target can quickly decode up to 15 byte NOPs",
254 .dependencies = &[_]*const Feature {288 .dependencies = &[_]*const Feature {
255 },289 },
...@@ -257,6 +291,7 @@ pub const feature_fast15bytenop = Feature{...@@ -257,6 +291,7 @@ pub const feature_fast15bytenop = Feature{
257291
258pub const feature_fastBextr = Feature{292pub const feature_fastBextr = Feature{
259 .name = "fast-bextr",293 .name = "fast-bextr",
294 .llvm_name = "fast-bextr",
260 .description = "Indicates that the BEXTR instruction is implemented as a single uop with good throughput",295 .description = "Indicates that the BEXTR instruction is implemented as a single uop with good throughput",
261 .dependencies = &[_]*const Feature {296 .dependencies = &[_]*const Feature {
262 },297 },
...@@ -264,6 +299,7 @@ pub const feature_fastBextr = Feature{...@@ -264,6 +299,7 @@ pub const feature_fastBextr = Feature{
264299
265pub const feature_fastHops = Feature{300pub const feature_fastHops = Feature{
266 .name = "fast-hops",301 .name = "fast-hops",
302 .llvm_name = "fast-hops",
267 .description = "Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles",303 .description = "Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles",
268 .dependencies = &[_]*const Feature {304 .dependencies = &[_]*const Feature {
269 &feature_sse,305 &feature_sse,
...@@ -272,6 +308,7 @@ pub const feature_fastHops = Feature{...@@ -272,6 +308,7 @@ pub const feature_fastHops = Feature{
272308
273pub const feature_fastLzcnt = Feature{309pub const feature_fastLzcnt = Feature{
274 .name = "fast-lzcnt",310 .name = "fast-lzcnt",
311 .llvm_name = "fast-lzcnt",
275 .description = "LZCNT instructions are as fast as most simple integer ops",312 .description = "LZCNT instructions are as fast as most simple integer ops",
276 .dependencies = &[_]*const Feature {313 .dependencies = &[_]*const Feature {
277 },314 },
...@@ -279,6 +316,7 @@ pub const feature_fastLzcnt = Feature{...@@ -279,6 +316,7 @@ pub const feature_fastLzcnt = Feature{
279316
280pub const feature_fastPartialYmmOrZmmWrite = Feature{317pub const feature_fastPartialYmmOrZmmWrite = Feature{
281 .name = "fast-partial-ymm-or-zmm-write",318 .name = "fast-partial-ymm-or-zmm-write",
319 .llvm_name = "fast-partial-ymm-or-zmm-write",
282 .description = "Partial writes to YMM/ZMM registers are fast",320 .description = "Partial writes to YMM/ZMM registers are fast",
283 .dependencies = &[_]*const Feature {321 .dependencies = &[_]*const Feature {
284 },322 },
...@@ -286,6 +324,7 @@ pub const feature_fastPartialYmmOrZmmWrite = Feature{...@@ -286,6 +324,7 @@ pub const feature_fastPartialYmmOrZmmWrite = Feature{
286324
287pub const feature_fastShldRotate = Feature{325pub const feature_fastShldRotate = Feature{
288 .name = "fast-shld-rotate",326 .name = "fast-shld-rotate",
327 .llvm_name = "fast-shld-rotate",
289 .description = "SHLD can be used as a faster rotate",328 .description = "SHLD can be used as a faster rotate",
290 .dependencies = &[_]*const Feature {329 .dependencies = &[_]*const Feature {
291 },330 },
...@@ -293,6 +332,7 @@ pub const feature_fastShldRotate = Feature{...@@ -293,6 +332,7 @@ pub const feature_fastShldRotate = Feature{
293332
294pub const feature_fastScalarFsqrt = Feature{333pub const feature_fastScalarFsqrt = Feature{
295 .name = "fast-scalar-fsqrt",334 .name = "fast-scalar-fsqrt",
335 .llvm_name = "fast-scalar-fsqrt",
296 .description = "Scalar SQRT is fast (disable Newton-Raphson)",336 .description = "Scalar SQRT is fast (disable Newton-Raphson)",
297 .dependencies = &[_]*const Feature {337 .dependencies = &[_]*const Feature {
298 },338 },
...@@ -300,6 +340,7 @@ pub const feature_fastScalarFsqrt = Feature{...@@ -300,6 +340,7 @@ pub const feature_fastScalarFsqrt = Feature{
300340
301pub const feature_fastScalarShiftMasks = Feature{341pub const feature_fastScalarShiftMasks = Feature{
302 .name = "fast-scalar-shift-masks",342 .name = "fast-scalar-shift-masks",
343 .llvm_name = "fast-scalar-shift-masks",
303 .description = "Prefer a left/right scalar logical shift pair over a shift+and pair",344 .description = "Prefer a left/right scalar logical shift pair over a shift+and pair",
304 .dependencies = &[_]*const Feature {345 .dependencies = &[_]*const Feature {
305 },346 },
...@@ -307,6 +348,7 @@ pub const feature_fastScalarShiftMasks = Feature{...@@ -307,6 +348,7 @@ pub const feature_fastScalarShiftMasks = Feature{
307348
308pub const feature_fastVariableShuffle = Feature{349pub const feature_fastVariableShuffle = Feature{
309 .name = "fast-variable-shuffle",350 .name = "fast-variable-shuffle",
351 .llvm_name = "fast-variable-shuffle",
310 .description = "Shuffles with variable masks are fast",352 .description = "Shuffles with variable masks are fast",
311 .dependencies = &[_]*const Feature {353 .dependencies = &[_]*const Feature {
312 },354 },
...@@ -314,6 +356,7 @@ pub const feature_fastVariableShuffle = Feature{...@@ -314,6 +356,7 @@ pub const feature_fastVariableShuffle = Feature{
314356
315pub const feature_fastVectorFsqrt = Feature{357pub const feature_fastVectorFsqrt = Feature{
316 .name = "fast-vector-fsqrt",358 .name = "fast-vector-fsqrt",
359 .llvm_name = "fast-vector-fsqrt",
317 .description = "Vector SQRT is fast (disable Newton-Raphson)",360 .description = "Vector SQRT is fast (disable Newton-Raphson)",
318 .dependencies = &[_]*const Feature {361 .dependencies = &[_]*const Feature {
319 },362 },
...@@ -321,6 +364,7 @@ pub const feature_fastVectorFsqrt = Feature{...@@ -321,6 +364,7 @@ pub const feature_fastVectorFsqrt = Feature{
321364
322pub const feature_fastVectorShiftMasks = Feature{365pub const feature_fastVectorShiftMasks = Feature{
323 .name = "fast-vector-shift-masks",366 .name = "fast-vector-shift-masks",
367 .llvm_name = "fast-vector-shift-masks",
324 .description = "Prefer a left/right vector logical shift pair over a shift+and pair",368 .description = "Prefer a left/right vector logical shift pair over a shift+and pair",
325 .dependencies = &[_]*const Feature {369 .dependencies = &[_]*const Feature {
326 },370 },
...@@ -328,6 +372,7 @@ pub const feature_fastVectorShiftMasks = Feature{...@@ -328,6 +372,7 @@ pub const feature_fastVectorShiftMasks = Feature{
328372
329pub const feature_gfni = Feature{373pub const feature_gfni = Feature{
330 .name = "gfni",374 .name = "gfni",
375 .llvm_name = "gfni",
331 .description = "Enable Galois Field Arithmetic Instructions",376 .description = "Enable Galois Field Arithmetic Instructions",
332 .dependencies = &[_]*const Feature {377 .dependencies = &[_]*const Feature {
333 &feature_sse,378 &feature_sse,
...@@ -336,6 +381,7 @@ pub const feature_gfni = Feature{...@@ -336,6 +381,7 @@ pub const feature_gfni = Feature{
336381
337pub const feature_fastGather = Feature{382pub const feature_fastGather = Feature{
338 .name = "fast-gather",383 .name = "fast-gather",
384 .llvm_name = "fast-gather",
339 .description = "Indicates if gather is reasonably fast",385 .description = "Indicates if gather is reasonably fast",
340 .dependencies = &[_]*const Feature {386 .dependencies = &[_]*const Feature {
341 },387 },
...@@ -343,6 +389,7 @@ pub const feature_fastGather = Feature{...@@ -343,6 +389,7 @@ pub const feature_fastGather = Feature{
343389
344pub const feature_avx512ifma = Feature{390pub const feature_avx512ifma = Feature{
345 .name = "avx512ifma",391 .name = "avx512ifma",
392 .llvm_name = "avx512ifma",
346 .description = "Enable AVX-512 Integer Fused Multiple-Add",393 .description = "Enable AVX-512 Integer Fused Multiple-Add",
347 .dependencies = &[_]*const Feature {394 .dependencies = &[_]*const Feature {
348 &feature_sse,395 &feature_sse,
...@@ -351,6 +398,7 @@ pub const feature_avx512ifma = Feature{...@@ -351,6 +398,7 @@ pub const feature_avx512ifma = Feature{
351398
352pub const feature_invpcid = Feature{399pub const feature_invpcid = Feature{
353 .name = "invpcid",400 .name = "invpcid",
401 .llvm_name = "invpcid",
354 .description = "Invalidate Process-Context Identifier",402 .description = "Invalidate Process-Context Identifier",
355 .dependencies = &[_]*const Feature {403 .dependencies = &[_]*const Feature {
356 },404 },
...@@ -358,6 +406,7 @@ pub const feature_invpcid = Feature{...@@ -358,6 +406,7 @@ pub const feature_invpcid = Feature{
358406
359pub const feature_sahf = Feature{407pub const feature_sahf = Feature{
360 .name = "sahf",408 .name = "sahf",
409 .llvm_name = "sahf",
361 .description = "Support LAHF and SAHF instructions",410 .description = "Support LAHF and SAHF instructions",
362 .dependencies = &[_]*const Feature {411 .dependencies = &[_]*const Feature {
363 },412 },
...@@ -365,6 +414,7 @@ pub const feature_sahf = Feature{...@@ -365,6 +414,7 @@ pub const feature_sahf = Feature{
365414
366pub const feature_leaSp = Feature{415pub const feature_leaSp = Feature{
367 .name = "lea-sp",416 .name = "lea-sp",
417 .llvm_name = "lea-sp",
368 .description = "Use LEA for adjusting the stack pointer",418 .description = "Use LEA for adjusting the stack pointer",
369 .dependencies = &[_]*const Feature {419 .dependencies = &[_]*const Feature {
370 },420 },
...@@ -372,6 +422,7 @@ pub const feature_leaSp = Feature{...@@ -372,6 +422,7 @@ pub const feature_leaSp = Feature{
372422
373pub const feature_leaUsesAg = Feature{423pub const feature_leaUsesAg = Feature{
374 .name = "lea-uses-ag",424 .name = "lea-uses-ag",
425 .llvm_name = "lea-uses-ag",
375 .description = "LEA instruction needs inputs at AG stage",426 .description = "LEA instruction needs inputs at AG stage",
376 .dependencies = &[_]*const Feature {427 .dependencies = &[_]*const Feature {
377 },428 },
...@@ -379,6 +430,7 @@ pub const feature_leaUsesAg = Feature{...@@ -379,6 +430,7 @@ pub const feature_leaUsesAg = Feature{
379430
380pub const feature_lwp = Feature{431pub const feature_lwp = Feature{
381 .name = "lwp",432 .name = "lwp",
433 .llvm_name = "lwp",
382 .description = "Enable LWP instructions",434 .description = "Enable LWP instructions",
383 .dependencies = &[_]*const Feature {435 .dependencies = &[_]*const Feature {
384 },436 },
...@@ -386,6 +438,7 @@ pub const feature_lwp = Feature{...@@ -386,6 +438,7 @@ pub const feature_lwp = Feature{
386438
387pub const feature_lzcnt = Feature{439pub const feature_lzcnt = Feature{
388 .name = "lzcnt",440 .name = "lzcnt",
441 .llvm_name = "lzcnt",
389 .description = "Support LZCNT instruction",442 .description = "Support LZCNT instruction",
390 .dependencies = &[_]*const Feature {443 .dependencies = &[_]*const Feature {
391 },444 },
...@@ -393,6 +446,7 @@ pub const feature_lzcnt = Feature{...@@ -393,6 +446,7 @@ pub const feature_lzcnt = Feature{
393446
394pub const feature_falseDepsLzcntTzcnt = Feature{447pub const feature_falseDepsLzcntTzcnt = Feature{
395 .name = "false-deps-lzcnt-tzcnt",448 .name = "false-deps-lzcnt-tzcnt",
449 .llvm_name = "false-deps-lzcnt-tzcnt",
396 .description = "LZCNT/TZCNT have a false dependency on dest register",450 .description = "LZCNT/TZCNT have a false dependency on dest register",
397 .dependencies = &[_]*const Feature {451 .dependencies = &[_]*const Feature {
398 },452 },
...@@ -400,6 +454,7 @@ pub const feature_falseDepsLzcntTzcnt = Feature{...@@ -400,6 +454,7 @@ pub const feature_falseDepsLzcntTzcnt = Feature{
400454
401pub const feature_mmx = Feature{455pub const feature_mmx = Feature{
402 .name = "mmx",456 .name = "mmx",
457 .llvm_name = "mmx",
403 .description = "Enable MMX instructions",458 .description = "Enable MMX instructions",
404 .dependencies = &[_]*const Feature {459 .dependencies = &[_]*const Feature {
405 },460 },
...@@ -407,6 +462,7 @@ pub const feature_mmx = Feature{...@@ -407,6 +462,7 @@ pub const feature_mmx = Feature{
407462
408pub const feature_movbe = Feature{463pub const feature_movbe = Feature{
409 .name = "movbe",464 .name = "movbe",
465 .llvm_name = "movbe",
410 .description = "Support MOVBE instruction",466 .description = "Support MOVBE instruction",
411 .dependencies = &[_]*const Feature {467 .dependencies = &[_]*const Feature {
412 },468 },
...@@ -414,6 +470,7 @@ pub const feature_movbe = Feature{...@@ -414,6 +470,7 @@ pub const feature_movbe = Feature{
414470
415pub const feature_movdir64b = Feature{471pub const feature_movdir64b = Feature{
416 .name = "movdir64b",472 .name = "movdir64b",
473 .llvm_name = "movdir64b",
417 .description = "Support movdir64b instruction",474 .description = "Support movdir64b instruction",
418 .dependencies = &[_]*const Feature {475 .dependencies = &[_]*const Feature {
419 },476 },
...@@ -421,6 +478,7 @@ pub const feature_movdir64b = Feature{...@@ -421,6 +478,7 @@ pub const feature_movdir64b = Feature{
421478
422pub const feature_movdiri = Feature{479pub const feature_movdiri = Feature{
423 .name = "movdiri",480 .name = "movdiri",
481 .llvm_name = "movdiri",
424 .description = "Support movdiri instruction",482 .description = "Support movdiri instruction",
425 .dependencies = &[_]*const Feature {483 .dependencies = &[_]*const Feature {
426 },484 },
...@@ -428,6 +486,7 @@ pub const feature_movdiri = Feature{...@@ -428,6 +486,7 @@ pub const feature_movdiri = Feature{
428486
429pub const feature_mwaitx = Feature{487pub const feature_mwaitx = Feature{
430 .name = "mwaitx",488 .name = "mwaitx",
489 .llvm_name = "mwaitx",
431 .description = "Enable MONITORX/MWAITX timer functionality",490 .description = "Enable MONITORX/MWAITX timer functionality",
432 .dependencies = &[_]*const Feature {491 .dependencies = &[_]*const Feature {
433 },492 },
...@@ -435,6 +494,7 @@ pub const feature_mwaitx = Feature{...@@ -435,6 +494,7 @@ pub const feature_mwaitx = Feature{
435494
436pub const feature_macrofusion = Feature{495pub const feature_macrofusion = Feature{
437 .name = "macrofusion",496 .name = "macrofusion",
497 .llvm_name = "macrofusion",
438 .description = "Various instructions can be fused with conditional branches",498 .description = "Various instructions can be fused with conditional branches",
439 .dependencies = &[_]*const Feature {499 .dependencies = &[_]*const Feature {
440 },500 },
...@@ -442,6 +502,7 @@ pub const feature_macrofusion = Feature{...@@ -442,6 +502,7 @@ pub const feature_macrofusion = Feature{
442502
443pub const feature_mergeToThreewayBranch = Feature{503pub const feature_mergeToThreewayBranch = Feature{
444 .name = "merge-to-threeway-branch",504 .name = "merge-to-threeway-branch",
505 .llvm_name = "merge-to-threeway-branch",
445 .description = "Merge branches to a three-way conditional branch",506 .description = "Merge branches to a three-way conditional branch",
446 .dependencies = &[_]*const Feature {507 .dependencies = &[_]*const Feature {
447 },508 },
...@@ -449,6 +510,7 @@ pub const feature_mergeToThreewayBranch = Feature{...@@ -449,6 +510,7 @@ pub const feature_mergeToThreewayBranch = Feature{
449510
450pub const feature_nopl = Feature{511pub const feature_nopl = Feature{
451 .name = "nopl",512 .name = "nopl",
513 .llvm_name = "nopl",
452 .description = "Enable NOPL instruction",514 .description = "Enable NOPL instruction",
453 .dependencies = &[_]*const Feature {515 .dependencies = &[_]*const Feature {
454 },516 },
...@@ -456,6 +518,7 @@ pub const feature_nopl = Feature{...@@ -456,6 +518,7 @@ pub const feature_nopl = Feature{
456518
457pub const feature_pclmul = Feature{519pub const feature_pclmul = Feature{
458 .name = "pclmul",520 .name = "pclmul",
521 .llvm_name = "pclmul",
459 .description = "Enable packed carry-less multiplication instructions",522 .description = "Enable packed carry-less multiplication instructions",
460 .dependencies = &[_]*const Feature {523 .dependencies = &[_]*const Feature {
461 &feature_sse,524 &feature_sse,
...@@ -464,6 +527,7 @@ pub const feature_pclmul = Feature{...@@ -464,6 +527,7 @@ pub const feature_pclmul = Feature{
464527
465pub const feature_pconfig = Feature{528pub const feature_pconfig = Feature{
466 .name = "pconfig",529 .name = "pconfig",
530 .llvm_name = "pconfig",
467 .description = "platform configuration instruction",531 .description = "platform configuration instruction",
468 .dependencies = &[_]*const Feature {532 .dependencies = &[_]*const Feature {
469 },533 },
...@@ -471,6 +535,7 @@ pub const feature_pconfig = Feature{...@@ -471,6 +535,7 @@ pub const feature_pconfig = Feature{
471535
472pub const feature_avx512pf = Feature{536pub const feature_avx512pf = Feature{
473 .name = "avx512pf",537 .name = "avx512pf",
538 .llvm_name = "avx512pf",
474 .description = "Enable AVX-512 PreFetch Instructions",539 .description = "Enable AVX-512 PreFetch Instructions",
475 .dependencies = &[_]*const Feature {540 .dependencies = &[_]*const Feature {
476 &feature_sse,541 &feature_sse,
...@@ -479,6 +544,7 @@ pub const feature_avx512pf = Feature{...@@ -479,6 +544,7 @@ pub const feature_avx512pf = Feature{
479544
480pub const feature_pku = Feature{545pub const feature_pku = Feature{
481 .name = "pku",546 .name = "pku",
547 .llvm_name = "pku",
482 .description = "Enable protection keys",548 .description = "Enable protection keys",
483 .dependencies = &[_]*const Feature {549 .dependencies = &[_]*const Feature {
484 },550 },
...@@ -486,6 +552,7 @@ pub const feature_pku = Feature{...@@ -486,6 +552,7 @@ pub const feature_pku = Feature{
486552
487pub const feature_popcnt = Feature{553pub const feature_popcnt = Feature{
488 .name = "popcnt",554 .name = "popcnt",
555 .llvm_name = "popcnt",
489 .description = "Support POPCNT instruction",556 .description = "Support POPCNT instruction",
490 .dependencies = &[_]*const Feature {557 .dependencies = &[_]*const Feature {
491 },558 },
...@@ -493,6 +560,7 @@ pub const feature_popcnt = Feature{...@@ -493,6 +560,7 @@ pub const feature_popcnt = Feature{
493560
494pub const feature_falseDepsPopcnt = Feature{561pub const feature_falseDepsPopcnt = Feature{
495 .name = "false-deps-popcnt",562 .name = "false-deps-popcnt",
563 .llvm_name = "false-deps-popcnt",
496 .description = "POPCNT has a false dependency on dest register",564 .description = "POPCNT has a false dependency on dest register",
497 .dependencies = &[_]*const Feature {565 .dependencies = &[_]*const Feature {
498 },566 },
...@@ -500,6 +568,7 @@ pub const feature_falseDepsPopcnt = Feature{...@@ -500,6 +568,7 @@ pub const feature_falseDepsPopcnt = Feature{
500568
501pub const feature_prefetchwt1 = Feature{569pub const feature_prefetchwt1 = Feature{
502 .name = "prefetchwt1",570 .name = "prefetchwt1",
571 .llvm_name = "prefetchwt1",
503 .description = "Prefetch with Intent to Write and T1 Hint",572 .description = "Prefetch with Intent to Write and T1 Hint",
504 .dependencies = &[_]*const Feature {573 .dependencies = &[_]*const Feature {
505 },574 },
...@@ -507,6 +576,7 @@ pub const feature_prefetchwt1 = Feature{...@@ -507,6 +576,7 @@ pub const feature_prefetchwt1 = Feature{
507576
508pub const feature_prfchw = Feature{577pub const feature_prfchw = Feature{
509 .name = "prfchw",578 .name = "prfchw",
579 .llvm_name = "prfchw",
510 .description = "Support PRFCHW instructions",580 .description = "Support PRFCHW instructions",
511 .dependencies = &[_]*const Feature {581 .dependencies = &[_]*const Feature {
512 },582 },
...@@ -514,6 +584,7 @@ pub const feature_prfchw = Feature{...@@ -514,6 +584,7 @@ pub const feature_prfchw = Feature{
514584
515pub const feature_ptwrite = Feature{585pub const feature_ptwrite = Feature{
516 .name = "ptwrite",586 .name = "ptwrite",
587 .llvm_name = "ptwrite",
517 .description = "Support ptwrite instruction",588 .description = "Support ptwrite instruction",
518 .dependencies = &[_]*const Feature {589 .dependencies = &[_]*const Feature {
519 },590 },
...@@ -521,6 +592,7 @@ pub const feature_ptwrite = Feature{...@@ -521,6 +592,7 @@ pub const feature_ptwrite = Feature{
521592
522pub const feature_padShortFunctions = Feature{593pub const feature_padShortFunctions = Feature{
523 .name = "pad-short-functions",594 .name = "pad-short-functions",
595 .llvm_name = "pad-short-functions",
524 .description = "Pad short functions",596 .description = "Pad short functions",
525 .dependencies = &[_]*const Feature {597 .dependencies = &[_]*const Feature {
526 },598 },
...@@ -528,6 +600,7 @@ pub const feature_padShortFunctions = Feature{...@@ -528,6 +600,7 @@ pub const feature_padShortFunctions = Feature{
528600
529pub const feature_prefer128Bit = Feature{601pub const feature_prefer128Bit = Feature{
530 .name = "prefer-128-bit",602 .name = "prefer-128-bit",
603 .llvm_name = "prefer-128-bit",
531 .description = "Prefer 128-bit AVX instructions",604 .description = "Prefer 128-bit AVX instructions",
532 .dependencies = &[_]*const Feature {605 .dependencies = &[_]*const Feature {
533 },606 },
...@@ -535,6 +608,7 @@ pub const feature_prefer128Bit = Feature{...@@ -535,6 +608,7 @@ pub const feature_prefer128Bit = Feature{
535608
536pub const feature_prefer256Bit = Feature{609pub const feature_prefer256Bit = Feature{
537 .name = "prefer-256-bit",610 .name = "prefer-256-bit",
611 .llvm_name = "prefer-256-bit",
538 .description = "Prefer 256-bit AVX instructions",612 .description = "Prefer 256-bit AVX instructions",
539 .dependencies = &[_]*const Feature {613 .dependencies = &[_]*const Feature {
540 },614 },
...@@ -542,6 +616,7 @@ pub const feature_prefer256Bit = Feature{...@@ -542,6 +616,7 @@ pub const feature_prefer256Bit = Feature{
542616
543pub const feature_rdpid = Feature{617pub const feature_rdpid = Feature{
544 .name = "rdpid",618 .name = "rdpid",
619 .llvm_name = "rdpid",
545 .description = "Support RDPID instructions",620 .description = "Support RDPID instructions",
546 .dependencies = &[_]*const Feature {621 .dependencies = &[_]*const Feature {
547 },622 },
...@@ -549,6 +624,7 @@ pub const feature_rdpid = Feature{...@@ -549,6 +624,7 @@ pub const feature_rdpid = Feature{
549624
550pub const feature_rdrnd = Feature{625pub const feature_rdrnd = Feature{
551 .name = "rdrnd",626 .name = "rdrnd",
627 .llvm_name = "rdrnd",
552 .description = "Support RDRAND instruction",628 .description = "Support RDRAND instruction",
553 .dependencies = &[_]*const Feature {629 .dependencies = &[_]*const Feature {
554 },630 },
...@@ -556,6 +632,7 @@ pub const feature_rdrnd = Feature{...@@ -556,6 +632,7 @@ pub const feature_rdrnd = Feature{
556632
557pub const feature_rdseed = Feature{633pub const feature_rdseed = Feature{
558 .name = "rdseed",634 .name = "rdseed",
635 .llvm_name = "rdseed",
559 .description = "Support RDSEED instruction",636 .description = "Support RDSEED instruction",
560 .dependencies = &[_]*const Feature {637 .dependencies = &[_]*const Feature {
561 },638 },
...@@ -563,6 +640,7 @@ pub const feature_rdseed = Feature{...@@ -563,6 +640,7 @@ pub const feature_rdseed = Feature{
563640
564pub const feature_rtm = Feature{641pub const feature_rtm = Feature{
565 .name = "rtm",642 .name = "rtm",
643 .llvm_name = "rtm",
566 .description = "Support RTM instructions",644 .description = "Support RTM instructions",
567 .dependencies = &[_]*const Feature {645 .dependencies = &[_]*const Feature {
568 },646 },
...@@ -570,6 +648,7 @@ pub const feature_rtm = Feature{...@@ -570,6 +648,7 @@ pub const feature_rtm = Feature{
570648
571pub const feature_retpoline = Feature{649pub const feature_retpoline = Feature{
572 .name = "retpoline",650 .name = "retpoline",
651 .llvm_name = "retpoline",
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 .description = "Remove speculation of indirect branches from the generated code, either by avoiding them entirely or lowering them with a speculation blocking construct",
574 .dependencies = &[_]*const Feature {653 .dependencies = &[_]*const Feature {
575 &feature_retpolineIndirectCalls,654 &feature_retpolineIndirectCalls,
...@@ -579,6 +658,7 @@ pub const feature_retpoline = Feature{...@@ -579,6 +658,7 @@ pub const feature_retpoline = Feature{
579658
580pub const feature_retpolineExternalThunk = Feature{659pub const feature_retpolineExternalThunk = Feature{
581 .name = "retpoline-external-thunk",660 .name = "retpoline-external-thunk",
661 .llvm_name = "retpoline-external-thunk",
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 .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",
583 .dependencies = &[_]*const Feature {663 .dependencies = &[_]*const Feature {
584 &feature_retpolineIndirectCalls,664 &feature_retpolineIndirectCalls,
...@@ -587,6 +667,7 @@ pub const feature_retpolineExternalThunk = Feature{...@@ -587,6 +667,7 @@ pub const feature_retpolineExternalThunk = Feature{
587667
588pub const feature_retpolineIndirectBranches = Feature{668pub const feature_retpolineIndirectBranches = Feature{
589 .name = "retpoline-indirect-branches",669 .name = "retpoline-indirect-branches",
670 .llvm_name = "retpoline-indirect-branches",
590 .description = "Remove speculation of indirect branches from the generated code",671 .description = "Remove speculation of indirect branches from the generated code",
591 .dependencies = &[_]*const Feature {672 .dependencies = &[_]*const Feature {
592 },673 },
...@@ -594,6 +675,7 @@ pub const feature_retpolineIndirectBranches = Feature{...@@ -594,6 +675,7 @@ pub const feature_retpolineIndirectBranches = Feature{
594675
595pub const feature_retpolineIndirectCalls = Feature{676pub const feature_retpolineIndirectCalls = Feature{
596 .name = "retpoline-indirect-calls",677 .name = "retpoline-indirect-calls",
678 .llvm_name = "retpoline-indirect-calls",
597 .description = "Remove speculation of indirect calls from the generated code",679 .description = "Remove speculation of indirect calls from the generated code",
598 .dependencies = &[_]*const Feature {680 .dependencies = &[_]*const Feature {
599 },681 },
...@@ -601,6 +683,7 @@ pub const feature_retpolineIndirectCalls = Feature{...@@ -601,6 +683,7 @@ pub const feature_retpolineIndirectCalls = Feature{
601683
602pub const feature_sgx = Feature{684pub const feature_sgx = Feature{
603 .name = "sgx",685 .name = "sgx",
686 .llvm_name = "sgx",
604 .description = "Enable Software Guard Extensions",687 .description = "Enable Software Guard Extensions",
605 .dependencies = &[_]*const Feature {688 .dependencies = &[_]*const Feature {
606 },689 },
...@@ -608,6 +691,7 @@ pub const feature_sgx = Feature{...@@ -608,6 +691,7 @@ pub const feature_sgx = Feature{
608691
609pub const feature_sha = Feature{692pub const feature_sha = Feature{
610 .name = "sha",693 .name = "sha",
694 .llvm_name = "sha",
611 .description = "Enable SHA instructions",695 .description = "Enable SHA instructions",
612 .dependencies = &[_]*const Feature {696 .dependencies = &[_]*const Feature {
613 &feature_sse,697 &feature_sse,
...@@ -616,6 +700,7 @@ pub const feature_sha = Feature{...@@ -616,6 +700,7 @@ pub const feature_sha = Feature{
616700
617pub const feature_shstk = Feature{701pub const feature_shstk = Feature{
618 .name = "shstk",702 .name = "shstk",
703 .llvm_name = "shstk",
619 .description = "Support CET Shadow-Stack instructions",704 .description = "Support CET Shadow-Stack instructions",
620 .dependencies = &[_]*const Feature {705 .dependencies = &[_]*const Feature {
621 },706 },
...@@ -623,6 +708,7 @@ pub const feature_shstk = Feature{...@@ -623,6 +708,7 @@ pub const feature_shstk = Feature{
623708
624pub const feature_sse = Feature{709pub const feature_sse = Feature{
625 .name = "sse",710 .name = "sse",
711 .llvm_name = "sse",
626 .description = "Enable SSE instructions",712 .description = "Enable SSE instructions",
627 .dependencies = &[_]*const Feature {713 .dependencies = &[_]*const Feature {
628 },714 },
...@@ -630,6 +716,7 @@ pub const feature_sse = Feature{...@@ -630,6 +716,7 @@ pub const feature_sse = Feature{
630716
631pub const feature_sse2 = Feature{717pub const feature_sse2 = Feature{
632 .name = "sse2",718 .name = "sse2",
719 .llvm_name = "sse2",
633 .description = "Enable SSE2 instructions",720 .description = "Enable SSE2 instructions",
634 .dependencies = &[_]*const Feature {721 .dependencies = &[_]*const Feature {
635 &feature_sse,722 &feature_sse,
...@@ -638,6 +725,7 @@ pub const feature_sse2 = Feature{...@@ -638,6 +725,7 @@ pub const feature_sse2 = Feature{
638725
639pub const feature_sse3 = Feature{726pub const feature_sse3 = Feature{
640 .name = "sse3",727 .name = "sse3",
728 .llvm_name = "sse3",
641 .description = "Enable SSE3 instructions",729 .description = "Enable SSE3 instructions",
642 .dependencies = &[_]*const Feature {730 .dependencies = &[_]*const Feature {
643 &feature_sse,731 &feature_sse,
...@@ -646,6 +734,7 @@ pub const feature_sse3 = Feature{...@@ -646,6 +734,7 @@ pub const feature_sse3 = Feature{
646734
647pub const feature_sse4a = Feature{735pub const feature_sse4a = Feature{
648 .name = "sse4a",736 .name = "sse4a",
737 .llvm_name = "sse4a",
649 .description = "Support SSE 4a instructions",738 .description = "Support SSE 4a instructions",
650 .dependencies = &[_]*const Feature {739 .dependencies = &[_]*const Feature {
651 &feature_sse,740 &feature_sse,
...@@ -654,6 +743,7 @@ pub const feature_sse4a = Feature{...@@ -654,6 +743,7 @@ pub const feature_sse4a = Feature{
654743
655pub const feature_sse41 = Feature{744pub const feature_sse41 = Feature{
656 .name = "sse4.1",745 .name = "sse4.1",
746 .llvm_name = "sse4.1",
657 .description = "Enable SSE 4.1 instructions",747 .description = "Enable SSE 4.1 instructions",
658 .dependencies = &[_]*const Feature {748 .dependencies = &[_]*const Feature {
659 &feature_sse,749 &feature_sse,
...@@ -662,6 +752,7 @@ pub const feature_sse41 = Feature{...@@ -662,6 +752,7 @@ pub const feature_sse41 = Feature{
662752
663pub const feature_sse42 = Feature{753pub const feature_sse42 = Feature{
664 .name = "sse4.2",754 .name = "sse4.2",
755 .llvm_name = "sse4.2",
665 .description = "Enable SSE 4.2 instructions",756 .description = "Enable SSE 4.2 instructions",
666 .dependencies = &[_]*const Feature {757 .dependencies = &[_]*const Feature {
667 &feature_sse,758 &feature_sse,
...@@ -670,6 +761,7 @@ pub const feature_sse42 = Feature{...@@ -670,6 +761,7 @@ pub const feature_sse42 = Feature{
670761
671pub const feature_sseUnalignedMem = Feature{762pub const feature_sseUnalignedMem = Feature{
672 .name = "sse-unaligned-mem",763 .name = "sse-unaligned-mem",
764 .llvm_name = "sse-unaligned-mem",
673 .description = "Allow unaligned memory operands with SSE instructions",765 .description = "Allow unaligned memory operands with SSE instructions",
674 .dependencies = &[_]*const Feature {766 .dependencies = &[_]*const Feature {
675 },767 },
...@@ -677,6 +769,7 @@ pub const feature_sseUnalignedMem = Feature{...@@ -677,6 +769,7 @@ pub const feature_sseUnalignedMem = Feature{
677769
678pub const feature_ssse3 = Feature{770pub const feature_ssse3 = Feature{
679 .name = "ssse3",771 .name = "ssse3",
772 .llvm_name = "ssse3",
680 .description = "Enable SSSE3 instructions",773 .description = "Enable SSSE3 instructions",
681 .dependencies = &[_]*const Feature {774 .dependencies = &[_]*const Feature {
682 &feature_sse,775 &feature_sse,
...@@ -685,6 +778,7 @@ pub const feature_ssse3 = Feature{...@@ -685,6 +778,7 @@ pub const feature_ssse3 = Feature{
685778
686pub const feature_slow3opsLea = Feature{779pub const feature_slow3opsLea = Feature{
687 .name = "slow-3ops-lea",780 .name = "slow-3ops-lea",
781 .llvm_name = "slow-3ops-lea",
688 .description = "LEA instruction with 3 ops or certain registers is slow",782 .description = "LEA instruction with 3 ops or certain registers is slow",
689 .dependencies = &[_]*const Feature {783 .dependencies = &[_]*const Feature {
690 },784 },
...@@ -692,6 +786,7 @@ pub const feature_slow3opsLea = Feature{...@@ -692,6 +786,7 @@ pub const feature_slow3opsLea = Feature{
692786
693pub const feature_idivlToDivb = Feature{787pub const feature_idivlToDivb = Feature{
694 .name = "idivl-to-divb",788 .name = "idivl-to-divb",
789 .llvm_name = "idivl-to-divb",
695 .description = "Use 8-bit divide for positive values less than 256",790 .description = "Use 8-bit divide for positive values less than 256",
696 .dependencies = &[_]*const Feature {791 .dependencies = &[_]*const Feature {
697 },792 },
...@@ -699,6 +794,7 @@ pub const feature_idivlToDivb = Feature{...@@ -699,6 +794,7 @@ pub const feature_idivlToDivb = Feature{
699794
700pub const feature_idivqToDivl = Feature{795pub const feature_idivqToDivl = Feature{
701 .name = "idivq-to-divl",796 .name = "idivq-to-divl",
797 .llvm_name = "idivq-to-divl",
702 .description = "Use 32-bit divide for positive values less than 2^32",798 .description = "Use 32-bit divide for positive values less than 2^32",
703 .dependencies = &[_]*const Feature {799 .dependencies = &[_]*const Feature {
704 },800 },
...@@ -706,6 +802,7 @@ pub const feature_idivqToDivl = Feature{...@@ -706,6 +802,7 @@ pub const feature_idivqToDivl = Feature{
706802
707pub const feature_slowIncdec = Feature{803pub const feature_slowIncdec = Feature{
708 .name = "slow-incdec",804 .name = "slow-incdec",
805 .llvm_name = "slow-incdec",
709 .description = "INC and DEC instructions are slower than ADD and SUB",806 .description = "INC and DEC instructions are slower than ADD and SUB",
710 .dependencies = &[_]*const Feature {807 .dependencies = &[_]*const Feature {
711 },808 },
...@@ -713,6 +810,7 @@ pub const feature_slowIncdec = Feature{...@@ -713,6 +810,7 @@ pub const feature_slowIncdec = Feature{
713810
714pub const feature_slowLea = Feature{811pub const feature_slowLea = Feature{
715 .name = "slow-lea",812 .name = "slow-lea",
813 .llvm_name = "slow-lea",
716 .description = "LEA instruction with certain arguments is slow",814 .description = "LEA instruction with certain arguments is slow",
717 .dependencies = &[_]*const Feature {815 .dependencies = &[_]*const Feature {
718 },816 },
...@@ -720,6 +818,7 @@ pub const feature_slowLea = Feature{...@@ -720,6 +818,7 @@ pub const feature_slowLea = Feature{
720818
721pub const feature_slowPmaddwd = Feature{819pub const feature_slowPmaddwd = Feature{
722 .name = "slow-pmaddwd",820 .name = "slow-pmaddwd",
821 .llvm_name = "slow-pmaddwd",
723 .description = "PMADDWD is slower than PMULLD",822 .description = "PMADDWD is slower than PMULLD",
724 .dependencies = &[_]*const Feature {823 .dependencies = &[_]*const Feature {
725 },824 },
...@@ -727,6 +826,7 @@ pub const feature_slowPmaddwd = Feature{...@@ -727,6 +826,7 @@ pub const feature_slowPmaddwd = Feature{
727826
728pub const feature_slowPmulld = Feature{827pub const feature_slowPmulld = Feature{
729 .name = "slow-pmulld",828 .name = "slow-pmulld",
829 .llvm_name = "slow-pmulld",
730 .description = "PMULLD instruction is slow",830 .description = "PMULLD instruction is slow",
731 .dependencies = &[_]*const Feature {831 .dependencies = &[_]*const Feature {
732 },832 },
...@@ -734,6 +834,7 @@ pub const feature_slowPmulld = Feature{...@@ -734,6 +834,7 @@ pub const feature_slowPmulld = Feature{
734834
735pub const feature_slowShld = Feature{835pub const feature_slowShld = Feature{
736 .name = "slow-shld",836 .name = "slow-shld",
837 .llvm_name = "slow-shld",
737 .description = "SHLD instruction is slow",838 .description = "SHLD instruction is slow",
738 .dependencies = &[_]*const Feature {839 .dependencies = &[_]*const Feature {
739 },840 },
...@@ -741,6 +842,7 @@ pub const feature_slowShld = Feature{...@@ -741,6 +842,7 @@ pub const feature_slowShld = Feature{
741842
742pub const feature_slowTwoMemOps = Feature{843pub const feature_slowTwoMemOps = Feature{
743 .name = "slow-two-mem-ops",844 .name = "slow-two-mem-ops",
845 .llvm_name = "slow-two-mem-ops",
744 .description = "Two memory operand instructions are slow",846 .description = "Two memory operand instructions are slow",
745 .dependencies = &[_]*const Feature {847 .dependencies = &[_]*const Feature {
746 },848 },
...@@ -748,6 +850,7 @@ pub const feature_slowTwoMemOps = Feature{...@@ -748,6 +850,7 @@ pub const feature_slowTwoMemOps = Feature{
748850
749pub const feature_slowUnalignedMem16 = Feature{851pub const feature_slowUnalignedMem16 = Feature{
750 .name = "slow-unaligned-mem-16",852 .name = "slow-unaligned-mem-16",
853 .llvm_name = "slow-unaligned-mem-16",
751 .description = "Slow unaligned 16-byte memory access",854 .description = "Slow unaligned 16-byte memory access",
752 .dependencies = &[_]*const Feature {855 .dependencies = &[_]*const Feature {
753 },856 },
...@@ -755,6 +858,7 @@ pub const feature_slowUnalignedMem16 = Feature{...@@ -755,6 +858,7 @@ pub const feature_slowUnalignedMem16 = Feature{
755858
756pub const feature_slowUnalignedMem32 = Feature{859pub const feature_slowUnalignedMem32 = Feature{
757 .name = "slow-unaligned-mem-32",860 .name = "slow-unaligned-mem-32",
861 .llvm_name = "slow-unaligned-mem-32",
758 .description = "Slow unaligned 32-byte memory access",862 .description = "Slow unaligned 32-byte memory access",
759 .dependencies = &[_]*const Feature {863 .dependencies = &[_]*const Feature {
760 },864 },
...@@ -762,6 +866,7 @@ pub const feature_slowUnalignedMem32 = Feature{...@@ -762,6 +866,7 @@ pub const feature_slowUnalignedMem32 = Feature{
762866
763pub const feature_softFloat = Feature{867pub const feature_softFloat = Feature{
764 .name = "soft-float",868 .name = "soft-float",
869 .llvm_name = "soft-float",
765 .description = "Use software floating point features",870 .description = "Use software floating point features",
766 .dependencies = &[_]*const Feature {871 .dependencies = &[_]*const Feature {
767 },872 },
...@@ -769,6 +874,7 @@ pub const feature_softFloat = Feature{...@@ -769,6 +874,7 @@ pub const feature_softFloat = Feature{
769874
770pub const feature_tbm = Feature{875pub const feature_tbm = Feature{
771 .name = "tbm",876 .name = "tbm",
877 .llvm_name = "tbm",
772 .description = "Enable TBM instructions",878 .description = "Enable TBM instructions",
773 .dependencies = &[_]*const Feature {879 .dependencies = &[_]*const Feature {
774 },880 },
...@@ -776,6 +882,7 @@ pub const feature_tbm = Feature{...@@ -776,6 +882,7 @@ pub const feature_tbm = Feature{
776882
777pub const feature_useAa = Feature{883pub const feature_useAa = Feature{
778 .name = "use-aa",884 .name = "use-aa",
885 .llvm_name = "use-aa",
779 .description = "Use alias analysis during codegen",886 .description = "Use alias analysis during codegen",
780 .dependencies = &[_]*const Feature {887 .dependencies = &[_]*const Feature {
781 },888 },
...@@ -783,6 +890,7 @@ pub const feature_useAa = Feature{...@@ -783,6 +890,7 @@ pub const feature_useAa = Feature{
783890
784pub const feature_vaes = Feature{891pub const feature_vaes = Feature{
785 .name = "vaes",892 .name = "vaes",
893 .llvm_name = "vaes",
786 .description = "Promote selected AES instructions to AVX512/AVX registers",894 .description = "Promote selected AES instructions to AVX512/AVX registers",
787 .dependencies = &[_]*const Feature {895 .dependencies = &[_]*const Feature {
788 &feature_sse,896 &feature_sse,
...@@ -791,6 +899,7 @@ pub const feature_vaes = Feature{...@@ -791,6 +899,7 @@ pub const feature_vaes = Feature{
791899
792pub const feature_avx512vbmi = Feature{900pub const feature_avx512vbmi = Feature{
793 .name = "avx512vbmi",901 .name = "avx512vbmi",
902 .llvm_name = "avx512vbmi",
794 .description = "Enable AVX-512 Vector Byte Manipulation Instructions",903 .description = "Enable AVX-512 Vector Byte Manipulation Instructions",
795 .dependencies = &[_]*const Feature {904 .dependencies = &[_]*const Feature {
796 &feature_sse,905 &feature_sse,
...@@ -799,6 +908,7 @@ pub const feature_avx512vbmi = Feature{...@@ -799,6 +908,7 @@ pub const feature_avx512vbmi = Feature{
799908
800pub const feature_avx512vbmi2 = Feature{909pub const feature_avx512vbmi2 = Feature{
801 .name = "avx512vbmi2",910 .name = "avx512vbmi2",
911 .llvm_name = "avx512vbmi2",
802 .description = "Enable AVX-512 further Vector Byte Manipulation Instructions",912 .description = "Enable AVX-512 further Vector Byte Manipulation Instructions",
803 .dependencies = &[_]*const Feature {913 .dependencies = &[_]*const Feature {
804 &feature_sse,914 &feature_sse,
...@@ -807,6 +917,7 @@ pub const feature_avx512vbmi2 = Feature{...@@ -807,6 +917,7 @@ pub const feature_avx512vbmi2 = Feature{
807917
808pub const feature_avx512vl = Feature{918pub const feature_avx512vl = Feature{
809 .name = "avx512vl",919 .name = "avx512vl",
920 .llvm_name = "avx512vl",
810 .description = "Enable AVX-512 Vector Length eXtensions",921 .description = "Enable AVX-512 Vector Length eXtensions",
811 .dependencies = &[_]*const Feature {922 .dependencies = &[_]*const Feature {
812 &feature_sse,923 &feature_sse,
...@@ -815,6 +926,7 @@ pub const feature_avx512vl = Feature{...@@ -815,6 +926,7 @@ pub const feature_avx512vl = Feature{
815926
816pub const feature_avx512vnni = Feature{927pub const feature_avx512vnni = Feature{
817 .name = "avx512vnni",928 .name = "avx512vnni",
929 .llvm_name = "avx512vnni",
818 .description = "Enable AVX-512 Vector Neural Network Instructions",930 .description = "Enable AVX-512 Vector Neural Network Instructions",
819 .dependencies = &[_]*const Feature {931 .dependencies = &[_]*const Feature {
820 &feature_sse,932 &feature_sse,
...@@ -823,6 +935,7 @@ pub const feature_avx512vnni = Feature{...@@ -823,6 +935,7 @@ pub const feature_avx512vnni = Feature{
823935
824pub const feature_avx512vp2intersect = Feature{936pub const feature_avx512vp2intersect = Feature{
825 .name = "avx512vp2intersect",937 .name = "avx512vp2intersect",
938 .llvm_name = "avx512vp2intersect",
826 .description = "Enable AVX-512 vp2intersect",939 .description = "Enable AVX-512 vp2intersect",
827 .dependencies = &[_]*const Feature {940 .dependencies = &[_]*const Feature {
828 &feature_sse,941 &feature_sse,
...@@ -831,6 +944,7 @@ pub const feature_avx512vp2intersect = Feature{...@@ -831,6 +944,7 @@ pub const feature_avx512vp2intersect = Feature{
831944
832pub const feature_vpclmulqdq = Feature{945pub const feature_vpclmulqdq = Feature{
833 .name = "vpclmulqdq",946 .name = "vpclmulqdq",
947 .llvm_name = "vpclmulqdq",
834 .description = "Enable vpclmulqdq instructions",948 .description = "Enable vpclmulqdq instructions",
835 .dependencies = &[_]*const Feature {949 .dependencies = &[_]*const Feature {
836 &feature_sse,950 &feature_sse,
...@@ -839,6 +953,7 @@ pub const feature_vpclmulqdq = Feature{...@@ -839,6 +953,7 @@ pub const feature_vpclmulqdq = Feature{
839953
840pub const feature_avx512vpopcntdq = Feature{954pub const feature_avx512vpopcntdq = Feature{
841 .name = "avx512vpopcntdq",955 .name = "avx512vpopcntdq",
956 .llvm_name = "avx512vpopcntdq",
842 .description = "Enable AVX-512 Population Count Instructions",957 .description = "Enable AVX-512 Population Count Instructions",
843 .dependencies = &[_]*const Feature {958 .dependencies = &[_]*const Feature {
844 &feature_sse,959 &feature_sse,
...@@ -847,6 +962,7 @@ pub const feature_avx512vpopcntdq = Feature{...@@ -847,6 +962,7 @@ pub const feature_avx512vpopcntdq = Feature{
847962
848pub const feature_waitpkg = Feature{963pub const feature_waitpkg = Feature{
849 .name = "waitpkg",964 .name = "waitpkg",
965 .llvm_name = "waitpkg",
850 .description = "Wait and pause enhancements",966 .description = "Wait and pause enhancements",
851 .dependencies = &[_]*const Feature {967 .dependencies = &[_]*const Feature {
852 },968 },
...@@ -854,6 +970,7 @@ pub const feature_waitpkg = Feature{...@@ -854,6 +970,7 @@ pub const feature_waitpkg = Feature{
854970
855pub const feature_wbnoinvd = Feature{971pub const feature_wbnoinvd = Feature{
856 .name = "wbnoinvd",972 .name = "wbnoinvd",
973 .llvm_name = "wbnoinvd",
857 .description = "Write Back No Invalidate",974 .description = "Write Back No Invalidate",
858 .dependencies = &[_]*const Feature {975 .dependencies = &[_]*const Feature {
859 },976 },
...@@ -861,6 +978,7 @@ pub const feature_wbnoinvd = Feature{...@@ -861,6 +978,7 @@ pub const feature_wbnoinvd = Feature{
861978
862pub const feature_x87 = Feature{979pub const feature_x87 = Feature{
863 .name = "x87",980 .name = "x87",
981 .llvm_name = "x87",
864 .description = "Enable X87 float instructions",982 .description = "Enable X87 float instructions",
865 .dependencies = &[_]*const Feature {983 .dependencies = &[_]*const Feature {
866 },984 },
...@@ -868,6 +986,7 @@ pub const feature_x87 = Feature{...@@ -868,6 +986,7 @@ pub const feature_x87 = Feature{
868986
869pub const feature_xop = Feature{987pub const feature_xop = Feature{
870 .name = "xop",988 .name = "xop",
989 .llvm_name = "xop",
871 .description = "Enable XOP instructions",990 .description = "Enable XOP instructions",
872 .dependencies = &[_]*const Feature {991 .dependencies = &[_]*const Feature {
873 &feature_sse,992 &feature_sse,
...@@ -876,6 +995,7 @@ pub const feature_xop = Feature{...@@ -876,6 +995,7 @@ pub const feature_xop = Feature{
876995
877pub const feature_xsave = Feature{996pub const feature_xsave = Feature{
878 .name = "xsave",997 .name = "xsave",
998 .llvm_name = "xsave",
879 .description = "Support xsave instructions",999 .description = "Support xsave instructions",
880 .dependencies = &[_]*const Feature {1000 .dependencies = &[_]*const Feature {
881 },1001 },
...@@ -883,6 +1003,7 @@ pub const feature_xsave = Feature{...@@ -883,6 +1003,7 @@ pub const feature_xsave = Feature{
8831003
884pub const feature_xsavec = Feature{1004pub const feature_xsavec = Feature{
885 .name = "xsavec",1005 .name = "xsavec",
1006 .llvm_name = "xsavec",
886 .description = "Support xsavec instructions",1007 .description = "Support xsavec instructions",
887 .dependencies = &[_]*const Feature {1008 .dependencies = &[_]*const Feature {
888 },1009 },
...@@ -890,6 +1011,7 @@ pub const feature_xsavec = Feature{...@@ -890,6 +1011,7 @@ pub const feature_xsavec = Feature{
8901011
891pub const feature_xsaveopt = Feature{1012pub const feature_xsaveopt = Feature{
892 .name = "xsaveopt",1013 .name = "xsaveopt",
1014 .llvm_name = "xsaveopt",
893 .description = "Support xsaveopt instructions",1015 .description = "Support xsaveopt instructions",
894 .dependencies = &[_]*const Feature {1016 .dependencies = &[_]*const Feature {
895 },1017 },
...@@ -897,6 +1019,7 @@ pub const feature_xsaveopt = Feature{...@@ -897,6 +1019,7 @@ pub const feature_xsaveopt = Feature{
8971019
898pub const feature_xsaves = Feature{1020pub const feature_xsaves = Feature{
899 .name = "xsaves",1021 .name = "xsaves",
1022 .llvm_name = "xsaves",
900 .description = "Support xsaves instructions",1023 .description = "Support xsaves instructions",
901 .dependencies = &[_]*const Feature {1024 .dependencies = &[_]*const Feature {
902 },1025 },
...@@ -904,6 +1027,7 @@ pub const feature_xsaves = Feature{...@@ -904,6 +1027,7 @@ pub const feature_xsaves = Feature{
9041027
905pub const feature_bitMode16 = Feature{1028pub const feature_bitMode16 = Feature{
906 .name = "16bit-mode",1029 .name = "16bit-mode",
1030 .llvm_name = "16bit-mode",
907 .description = "16-bit mode (i8086)",1031 .description = "16-bit mode (i8086)",
908 .dependencies = &[_]*const Feature {1032 .dependencies = &[_]*const Feature {
909 },1033 },
...@@ -911,6 +1035,7 @@ pub const feature_bitMode16 = Feature{...@@ -911,6 +1035,7 @@ pub const feature_bitMode16 = Feature{
9111035
912pub const feature_bitMode32 = Feature{1036pub const feature_bitMode32 = Feature{
913 .name = "32bit-mode",1037 .name = "32bit-mode",
1038 .llvm_name = "32bit-mode",
914 .description = "32-bit mode (80386)",1039 .description = "32-bit mode (80386)",
915 .dependencies = &[_]*const Feature {1040 .dependencies = &[_]*const Feature {
916 },1041 },
...@@ -918,6 +1043,7 @@ pub const feature_bitMode32 = Feature{...@@ -918,6 +1043,7 @@ pub const feature_bitMode32 = Feature{
9181043
919pub const feature_bitMode64 = Feature{1044pub const feature_bitMode64 = Feature{
920 .name = "64bit-mode",1045 .name = "64bit-mode",
1046 .llvm_name = "64bit-mode",
921 .description = "64-bit mode (x86_64)",1047 .description = "64-bit mode (x86_64)",
922 .dependencies = &[_]*const Feature {1048 .dependencies = &[_]*const Feature {
923 },1049 },