authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-02-20 12:18:32-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-02-20 12:18:32-05:00
log9c3eff91937dfc2f075342916d1fce659e18672f
treeb8d61d2f4cfa0bd39ef26608e2f839ad354ce0e3
parent3c76e5e33dd1abcbf02eaea32168e1368ade8025
signaturelock-open Commit is signed but in an unrecognized format.

Revert "arm: clean up the messy sub-architecture & CPU features"

This reverts commit 96f45c27b65307fe4abd5d1fb1cf314b1f493d8e.

1 files changed, 471 insertions(+), 281 deletions(-)

lib/std/target/arm.zig+471-281
...@@ -9,6 +9,39 @@ pub const Feature = enum {...@@ -9,6 +9,39 @@ pub const Feature = enum {
9 aclass,9 aclass,
10 acquire_release,10 acquire_release,
11 aes,11 aes,
12 armv2,
13 armv2a,
14 armv3,
15 armv3m,
16 armv4,
17 armv4t,
18 armv5t,
19 armv5te,
20 armv5tej,
21 armv6,
22 armv6_m,
23 armv6j,
24 armv6k,
25 armv6kz,
26 armv6s_m,
27 armv6t2,
28 armv7_a,
29 armv7_m,
30 armv7_r,
31 armv7e_m,
32 armv7k,
33 armv7s,
34 armv7ve,
35 armv8_a,
36 armv8_m_base,
37 armv8_m_main,
38 armv8_r,
39 armv8_1_a,
40 armv8_1_m_main,
41 armv8_2_a,
42 armv8_3_a,
43 armv8_4_a,
44 armv8_5_a,
12 avoid_movs_shop,45 avoid_movs_shop,
13 avoid_partial_cpsr,46 avoid_partial_cpsr,
14 cheap_predicable_cpsr,47 cheap_predicable_cpsr,
...@@ -24,13 +57,13 @@ pub const Feature = enum {...@@ -24,13 +57,13 @@ pub const Feature = enum {
24 execute_only,57 execute_only,
25 expand_fp_mlx,58 expand_fp_mlx,
26 exynos,59 exynos,
27 fp16,
28 fp16fml,
29 fp64,
30 fp_armv8,60 fp_armv8,
31 fp_armv8d16,61 fp_armv8d16,
32 fp_armv8d16sp,62 fp_armv8d16sp,
33 fp_armv8sp,63 fp_armv8sp,
64 fp16,
65 fp16fml,
66 fp64,
34 fpao,67 fpao,
35 fpregs,68 fpregs,
36 fpregs16,69 fpregs16,
...@@ -82,46 +115,29 @@ pub const Feature = enum {...@@ -82,46 +115,29 @@ pub const Feature = enum {
82 splat_vfp_neon,115 splat_vfp_neon,
83 strict_align,116 strict_align,
84 swift,117 swift,
85 thumb2,
86 thumb_mode,118 thumb_mode,
119 thumb2,
87 trustzone,120 trustzone,
88 use_aa,121 use_aa,
89 use_misched,122 use_misched,
90 v2,
91 v2a,
92 v3,
93 v3m,
94 v4,
95 v4t,123 v4t,
96 v5t,124 v5t,
97 v5te,125 v5te,
98 v5tej,
99 v6,126 v6,
100 v6j,
101 v6k,127 v6k,
102 v6kz,
103 v6m,128 v6m,
104 v6sm,
105 v6t2,129 v6t2,
106 v7,130 v7,
107 v7a,
108 v7m,
109 v7r,
110 v7clrex,131 v7clrex,
111 v7em,
112 v7k,
113 v7s,
114 v7ve,
115 v8a,132 v8a,
116 v8m,
117 v8m_main,
118 v8r,
119 v8_1a,133 v8_1a,
120 v8_1m_main,134 v8_1m_main,
121 v8_2a,135 v8_2a,
122 v8_3a,136 v8_3a,
123 v8_4a,137 v8_4a,
124 v8_5a,138 v8_5a,
139 v8m,
140 v8m_main,
125 vfp2,141 vfp2,
126 vfp2d16,142 vfp2d16,
127 vfp2d16sp,143 vfp2d16sp,
...@@ -182,6 +198,368 @@ pub const all_features = blk: {...@@ -182,6 +198,368 @@ pub const all_features = blk: {
182 .neon,198 .neon,
183 }),199 }),
184 };200 };
201 result[@enumToInt(Feature.armv2)] = .{
202 .llvm_name = "armv2",
203 .description = "ARMv2 architecture",
204 .dependencies = featureSet(&[_]Feature{}),
205 };
206 result[@enumToInt(Feature.armv2a)] = .{
207 .llvm_name = "armv2a",
208 .description = "ARMv2a architecture",
209 .dependencies = featureSet(&[_]Feature{}),
210 };
211 result[@enumToInt(Feature.armv3)] = .{
212 .llvm_name = "armv3",
213 .description = "ARMv3 architecture",
214 .dependencies = featureSet(&[_]Feature{}),
215 };
216 result[@enumToInt(Feature.armv3m)] = .{
217 .llvm_name = "armv3m",
218 .description = "ARMv3m architecture",
219 .dependencies = featureSet(&[_]Feature{}),
220 };
221 result[@enumToInt(Feature.armv4)] = .{
222 .llvm_name = "armv4",
223 .description = "ARMv4 architecture",
224 .dependencies = featureSet(&[_]Feature{}),
225 };
226 result[@enumToInt(Feature.armv4t)] = .{
227 .llvm_name = "armv4t",
228 .description = "ARMv4t architecture",
229 .dependencies = featureSet(&[_]Feature{
230 .v4t,
231 }),
232 };
233 result[@enumToInt(Feature.armv5t)] = .{
234 .llvm_name = "armv5t",
235 .description = "ARMv5t architecture",
236 .dependencies = featureSet(&[_]Feature{
237 .v5t,
238 }),
239 };
240 result[@enumToInt(Feature.armv5te)] = .{
241 .llvm_name = "armv5te",
242 .description = "ARMv5te architecture",
243 .dependencies = featureSet(&[_]Feature{
244 .v5te,
245 }),
246 };
247 result[@enumToInt(Feature.armv5tej)] = .{
248 .llvm_name = "armv5tej",
249 .description = "ARMv5tej architecture",
250 .dependencies = featureSet(&[_]Feature{
251 .v5te,
252 }),
253 };
254 result[@enumToInt(Feature.armv6)] = .{
255 .llvm_name = "armv6",
256 .description = "ARMv6 architecture",
257 .dependencies = featureSet(&[_]Feature{
258 .dsp,
259 .v6,
260 }),
261 };
262 result[@enumToInt(Feature.armv6_m)] = .{
263 .llvm_name = "armv6-m",
264 .description = "ARMv6m architecture",
265 .dependencies = featureSet(&[_]Feature{
266 .db,
267 .mclass,
268 .noarm,
269 .strict_align,
270 .thumb_mode,
271 .v6m,
272 }),
273 };
274 result[@enumToInt(Feature.armv6j)] = .{
275 .llvm_name = "armv6j",
276 .description = "ARMv7a architecture",
277 .dependencies = featureSet(&[_]Feature{
278 .armv6,
279 }),
280 };
281 result[@enumToInt(Feature.armv6k)] = .{
282 .llvm_name = "armv6k",
283 .description = "ARMv6k architecture",
284 .dependencies = featureSet(&[_]Feature{
285 .v6k,
286 }),
287 };
288 result[@enumToInt(Feature.armv6kz)] = .{
289 .llvm_name = "armv6kz",
290 .description = "ARMv6kz architecture",
291 .dependencies = featureSet(&[_]Feature{
292 .trustzone,
293 .v6k,
294 }),
295 };
296 result[@enumToInt(Feature.armv6s_m)] = .{
297 .llvm_name = "armv6s-m",
298 .description = "ARMv6sm architecture",
299 .dependencies = featureSet(&[_]Feature{
300 .db,
301 .mclass,
302 .noarm,
303 .strict_align,
304 .thumb_mode,
305 .v6m,
306 }),
307 };
308 result[@enumToInt(Feature.armv6t2)] = .{
309 .llvm_name = "armv6t2",
310 .description = "ARMv6t2 architecture",
311 .dependencies = featureSet(&[_]Feature{
312 .dsp,
313 .v6t2,
314 }),
315 };
316 result[@enumToInt(Feature.armv7_a)] = .{
317 .llvm_name = "armv7-a",
318 .description = "ARMv7a architecture",
319 .dependencies = featureSet(&[_]Feature{
320 .aclass,
321 .db,
322 .dsp,
323 .neon,
324 .v7,
325 }),
326 };
327 result[@enumToInt(Feature.armv7_m)] = .{
328 .llvm_name = "armv7-m",
329 .description = "ARMv7m architecture",
330 .dependencies = featureSet(&[_]Feature{
331 .db,
332 .hwdiv,
333 .mclass,
334 .noarm,
335 .thumb_mode,
336 .thumb2,
337 .v7,
338 }),
339 };
340 result[@enumToInt(Feature.armv7_r)] = .{
341 .llvm_name = "armv7-r",
342 .description = "ARMv7r architecture",
343 .dependencies = featureSet(&[_]Feature{
344 .db,
345 .dsp,
346 .hwdiv,
347 .rclass,
348 .v7,
349 }),
350 };
351 result[@enumToInt(Feature.armv7e_m)] = .{
352 .llvm_name = "armv7e-m",
353 .description = "ARMv7em architecture",
354 .dependencies = featureSet(&[_]Feature{
355 .db,
356 .dsp,
357 .hwdiv,
358 .mclass,
359 .noarm,
360 .thumb_mode,
361 .thumb2,
362 .v7,
363 }),
364 };
365 result[@enumToInt(Feature.armv7k)] = .{
366 .llvm_name = "armv7k",
367 .description = "ARMv7a architecture",
368 .dependencies = featureSet(&[_]Feature{
369 .armv7_a,
370 }),
371 };
372 result[@enumToInt(Feature.armv7s)] = .{
373 .llvm_name = "armv7s",
374 .description = "ARMv7a architecture",
375 .dependencies = featureSet(&[_]Feature{
376 .armv7_a,
377 }),
378 };
379 result[@enumToInt(Feature.armv7ve)] = .{
380 .llvm_name = "armv7ve",
381 .description = "ARMv7ve architecture",
382 .dependencies = featureSet(&[_]Feature{
383 .aclass,
384 .db,
385 .dsp,
386 .mp,
387 .neon,
388 .trustzone,
389 .v7,
390 .virtualization,
391 }),
392 };
393 result[@enumToInt(Feature.armv8_a)] = .{
394 .llvm_name = "armv8-a",
395 .description = "ARMv8a architecture",
396 .dependencies = featureSet(&[_]Feature{
397 .aclass,
398 .crc,
399 .crypto,
400 .db,
401 .dsp,
402 .fp_armv8,
403 .mp,
404 .neon,
405 .trustzone,
406 .v8a,
407 .virtualization,
408 }),
409 };
410 result[@enumToInt(Feature.armv8_m_base)] = .{
411 .llvm_name = "armv8-m.base",
412 .description = "ARMv8mBaseline architecture",
413 .dependencies = featureSet(&[_]Feature{
414 .@"8msecext",
415 .acquire_release,
416 .db,
417 .hwdiv,
418 .mclass,
419 .noarm,
420 .strict_align,
421 .thumb_mode,
422 .v7clrex,
423 .v8m,
424 }),
425 };
426 result[@enumToInt(Feature.armv8_m_main)] = .{
427 .llvm_name = "armv8-m.main",
428 .description = "ARMv8mMainline architecture",
429 .dependencies = featureSet(&[_]Feature{
430 .@"8msecext",
431 .acquire_release,
432 .db,
433 .hwdiv,
434 .mclass,
435 .noarm,
436 .thumb_mode,
437 .v8m_main,
438 }),
439 };
440 result[@enumToInt(Feature.armv8_r)] = .{
441 .llvm_name = "armv8-r",
442 .description = "ARMv8r architecture",
443 .dependencies = featureSet(&[_]Feature{
444 .crc,
445 .db,
446 .dfb,
447 .dsp,
448 .fp_armv8,
449 .mp,
450 .neon,
451 .rclass,
452 .v8a,
453 .virtualization,
454 }),
455 };
456 result[@enumToInt(Feature.armv8_1_a)] = .{
457 .llvm_name = "armv8.1-a",
458 .description = "ARMv81a architecture",
459 .dependencies = featureSet(&[_]Feature{
460 .aclass,
461 .crc,
462 .crypto,
463 .db,
464 .dsp,
465 .fp_armv8,
466 .mp,
467 .neon,
468 .trustzone,
469 .v8_1a,
470 .virtualization,
471 }),
472 };
473 result[@enumToInt(Feature.armv8_1_m_main)] = .{
474 .llvm_name = "armv8.1-m.main",
475 .description = "ARMv81mMainline architecture",
476 .dependencies = featureSet(&[_]Feature{
477 .@"8msecext",
478 .acquire_release,
479 .db,
480 .hwdiv,
481 .lob,
482 .mclass,
483 .noarm,
484 .ras,
485 .thumb_mode,
486 .v8_1m_main,
487 }),
488 };
489 result[@enumToInt(Feature.armv8_2_a)] = .{
490 .llvm_name = "armv8.2-a",
491 .description = "ARMv82a architecture",
492 .dependencies = featureSet(&[_]Feature{
493 .aclass,
494 .crc,
495 .crypto,
496 .db,
497 .dsp,
498 .fp_armv8,
499 .mp,
500 .neon,
501 .ras,
502 .trustzone,
503 .v8_2a,
504 .virtualization,
505 }),
506 };
507 result[@enumToInt(Feature.armv8_3_a)] = .{
508 .llvm_name = "armv8.3-a",
509 .description = "ARMv83a architecture",
510 .dependencies = featureSet(&[_]Feature{
511 .aclass,
512 .crc,
513 .crypto,
514 .db,
515 .dsp,
516 .fp_armv8,
517 .mp,
518 .neon,
519 .ras,
520 .trustzone,
521 .v8_3a,
522 .virtualization,
523 }),
524 };
525 result[@enumToInt(Feature.armv8_4_a)] = .{
526 .llvm_name = "armv8.4-a",
527 .description = "ARMv84a architecture",
528 .dependencies = featureSet(&[_]Feature{
529 .aclass,
530 .crc,
531 .crypto,
532 .db,
533 .dotprod,
534 .dsp,
535 .fp_armv8,
536 .mp,
537 .neon,
538 .ras,
539 .trustzone,
540 .v8_4a,
541 .virtualization,
542 }),
543 };
544 result[@enumToInt(Feature.armv8_5_a)] = .{
545 .llvm_name = "armv8.5-a",
546 .description = "ARMv85a architecture",
547 .dependencies = featureSet(&[_]Feature{
548 .aclass,
549 .crc,
550 .crypto,
551 .db,
552 .dotprod,
553 .dsp,
554 .fp_armv8,
555 .mp,
556 .neon,
557 .ras,
558 .trustzone,
559 .v8_5a,
560 .virtualization,
561 }),
562 };
185 result[@enumToInt(Feature.avoid_movs_shop)] = .{563 result[@enumToInt(Feature.avoid_movs_shop)] = .{
186 .llvm_name = "avoid-movs-shop",564 .llvm_name = "avoid-movs-shop",
187 .description = "Avoid movs instructions with shifter operand",565 .description = "Avoid movs instructions with shifter operand",
...@@ -275,29 +653,10 @@ pub const all_features = blk: {...@@ -275,29 +653,10 @@ pub const all_features = blk: {
275 .slow_vdup32,653 .slow_vdup32,
276 .slow_vgetlni32,654 .slow_vgetlni32,
277 .slowfpvmlx,655 .slowfpvmlx,
278 .splat_vfp_neon,656 .splat_vfp_neon,
279 .use_aa,657 .use_aa,
280 .wide_stride_vfp,658 .wide_stride_vfp,
281 .zcz,659 .zcz,
282 }),
283 };
284 result[@enumToInt(Feature.fp16)] = .{
285 .llvm_name = "fp16",
286 .description = "Enable half-precision floating point",
287 .dependencies = featureSet(&[_]Feature{}),
288 };
289 result[@enumToInt(Feature.fp16fml)] = .{
290 .llvm_name = "fp16fml",
291 .description = "Enable full half-precision floating point fml instructions",
292 .dependencies = featureSet(&[_]Feature{
293 .fullfp16,
294 }),
295 };
296 result[@enumToInt(Feature.fp64)] = .{
297 .llvm_name = "fp64",
298 .description = "Floating point unit supports double precision",
299 .dependencies = featureSet(&[_]Feature{
300 .fpregs64,
301 }),660 }),
302 };661 };
303 result[@enumToInt(Feature.fp_armv8)] = .{662 result[@enumToInt(Feature.fp_armv8)] = .{
...@@ -334,6 +693,25 @@ pub const all_features = blk: {...@@ -334,6 +693,25 @@ pub const all_features = blk: {
334 .vfp4sp,693 .vfp4sp,
335 }),694 }),
336 };695 };
696 result[@enumToInt(Feature.fp16)] = .{
697 .llvm_name = "fp16",
698 .description = "Enable half-precision floating point",
699 .dependencies = featureSet(&[_]Feature{}),
700 };
701 result[@enumToInt(Feature.fp16fml)] = .{
702 .llvm_name = "fp16fml",
703 .description = "Enable full half-precision floating point fml instructions",
704 .dependencies = featureSet(&[_]Feature{
705 .fullfp16,
706 }),
707 };
708 result[@enumToInt(Feature.fp64)] = .{
709 .llvm_name = "fp64",
710 .description = "Floating point unit supports double precision",
711 .dependencies = featureSet(&[_]Feature{
712 .fpregs64,
713 }),
714 };
337 result[@enumToInt(Feature.fpao)] = .{715 result[@enumToInt(Feature.fpao)] = .{
338 .llvm_name = "fpao",716 .llvm_name = "fpao",
339 .description = "Enable fast computation of positive address offsets",717 .description = "Enable fast computation of positive address offsets",
...@@ -615,16 +993,16 @@ pub const all_features = blk: {...@@ -615,16 +993,16 @@ pub const all_features = blk: {
615 .description = "Swift ARM processors",993 .description = "Swift ARM processors",
616 .dependencies = featureSet(&[_]Feature{}),994 .dependencies = featureSet(&[_]Feature{}),
617 };995 };
618 result[@enumToInt(Feature.thumb2)] = .{
619 .llvm_name = "thumb2",
620 .description = "Enable Thumb2 instructions",
621 .dependencies = featureSet(&[_]Feature{}),
622 };
623 result[@enumToInt(Feature.thumb_mode)] = .{996 result[@enumToInt(Feature.thumb_mode)] = .{
624 .llvm_name = "thumb-mode",997 .llvm_name = "thumb-mode",
625 .description = "Thumb mode",998 .description = "Thumb mode",
626 .dependencies = featureSet(&[_]Feature{}),999 .dependencies = featureSet(&[_]Feature{}),
627 };1000 };
1001 result[@enumToInt(Feature.thumb2)] = .{
1002 .llvm_name = "thumb2",
1003 .description = "Enable Thumb2 instructions",
1004 .dependencies = featureSet(&[_]Feature{}),
1005 };
628 result[@enumToInt(Feature.trustzone)] = .{1006 result[@enumToInt(Feature.trustzone)] = .{
629 .llvm_name = "trustzone",1007 .llvm_name = "trustzone",
630 .description = "Enable support for TrustZone security extensions",1008 .description = "Enable support for TrustZone security extensions",
...@@ -640,116 +1018,50 @@ pub const all_features = blk: {...@@ -640,116 +1018,50 @@ pub const all_features = blk: {
640 .description = "Use the MachineScheduler",1018 .description = "Use the MachineScheduler",
641 .dependencies = featureSet(&[_]Feature{}),1019 .dependencies = featureSet(&[_]Feature{}),
642 };1020 };
643 result[@enumToInt(Feature.v2)] = .{
644 .llvm_name = "armv2",
645 .description = "ARMv2 architecture",
646 .dependencies = featureSet(&[_]Feature{}),
647 };
648 result[@enumToInt(Feature.v2a)] = .{
649 .llvm_name = "armv2a",
650 .description = "ARMv2a architecture",
651 .dependencies = featureSet(&[_]Feature{}),
652 };
653 result[@enumToInt(Feature.v3)] = .{
654 .llvm_name = "armv3",
655 .description = "ARMv3 architecture",
656 .dependencies = featureSet(&[_]Feature{}),
657 };
658 result[@enumToInt(Feature.v3m)] = .{
659 .llvm_name = "armv3m",
660 .description = "ARMv3m architecture",
661 .dependencies = featureSet(&[_]Feature{}),
662 };
663 result[@enumToInt(Feature.v4)] = .{
664 .llvm_name = "armv4",
665 .description = "ARMv4 architecture",
666 .dependencies = featureSet(&[_]Feature{}),
667 };
668 result[@enumToInt(Feature.v4t)] = .{1021 result[@enumToInt(Feature.v4t)] = .{
669 .llvm_name = "armv4t",1022 .llvm_name = "v4t",
670 .description = "ARMv4t architecture",1023 .description = "Support ARM v4T instructions",
671 .dependencies = featureSet(&[_]Feature{}),1024 .dependencies = featureSet(&[_]Feature{}),
672 };1025 };
673 result[@enumToInt(Feature.v5t)] = .{1026 result[@enumToInt(Feature.v5t)] = .{
674 .llvm_name = "armv5t",1027 .llvm_name = "v5t",
675 .description = "ARMv5t architecture",1028 .description = "Support ARM v5T instructions",
676 .dependencies = featureSet(&[_]Feature{1029 .dependencies = featureSet(&[_]Feature{
677 .v4t,1030 .v4t,
678 }),1031 }),
679 };1032 };
680 result[@enumToInt(Feature.v5te)] = .{1033 result[@enumToInt(Feature.v5te)] = .{
681 .llvm_name = "armv5te",1034 .llvm_name = "v5te",
682 .description = "ARMv5te architecture",1035 .description = "Support ARM v5TE, v5TEj, and v5TExp instructions",
683 .dependencies = featureSet(&[_]Feature{1036 .dependencies = featureSet(&[_]Feature{
684 .v5t,1037 .v5t,
685 }),1038 }),
686 };1039 };
687 result[@enumToInt(Feature.v5tej)] = .{
688 .llvm_name = "armv5tej",
689 .description = "ARMv5tej architecture",
690 .dependencies = featureSet(&[_]Feature{
691 .v5te,
692 }),
693 };
694 result[@enumToInt(Feature.v6)] = .{1040 result[@enumToInt(Feature.v6)] = .{
695 .llvm_name = "armv6",1041 .llvm_name = "v6",
696 .description = "ARMv6 architecture",1042 .description = "Support ARM v6 instructions",
697 .dependencies = featureSet(&[_]Feature{1043 .dependencies = featureSet(&[_]Feature{
698 .dsp,
699 .v5te,1044 .v5te,
700 }),1045 }),
701 };1046 };
702 result[@enumToInt(Feature.v6j)] = .{
703 .llvm_name = "armv6j",
704 .description = "ARMv7a architecture",
705 .dependencies = featureSet(&[_]Feature{
706 .v6,
707 }),
708 };
709 result[@enumToInt(Feature.v6k)] = .{1047 result[@enumToInt(Feature.v6k)] = .{
710 .llvm_name = "armv6k",1048 .llvm_name = "v6k",
711 .description = "ARMv6k architecture",1049 .description = "Support ARM v6k instructions",
712 .dependencies = featureSet(&[_]Feature{1050 .dependencies = featureSet(&[_]Feature{
713 .v6,1051 .v6,
714 }),1052 }),
715 };1053 };
716 result[@enumToInt(Feature.v6kz)] = .{
717 .llvm_name = "armv6kz",
718 .description = "ARMv6kz architecture",
719 .dependencies = featureSet(&[_]Feature{
720 .trustzone,
721 .v6k,
722 }),
723 };
724 result[@enumToInt(Feature.v6m)] = .{1054 result[@enumToInt(Feature.v6m)] = .{
725 .llvm_name = "armv6-m",1055 .llvm_name = "v6m",
726 .description = "ARMv6m architecture",1056 .description = "Support ARM v6M instructions",
727 .dependencies = featureSet(&[_]Feature{
728 .db,
729 .mclass,
730 .noarm,
731 .strict_align,
732 .thumb_mode,
733 .v6,
734 }),
735 };
736 result[@enumToInt(Feature.v6sm)] = .{
737 .llvm_name = "armv6s-m",
738 .description = "ARMv6sm architecture",
739 .dependencies = featureSet(&[_]Feature{1057 .dependencies = featureSet(&[_]Feature{
740 .db,
741 .mclass,
742 .noarm,
743 .strict_align,
744 .thumb_mode,
745 .v6,1058 .v6,
746 }),1059 }),
747 };1060 };
748 result[@enumToInt(Feature.v6t2)] = .{1061 result[@enumToInt(Feature.v6t2)] = .{
749 .llvm_name = "armv6t2",1062 .llvm_name = "v6t2",
750 .description = "ARMv6t2 architecture",1063 .description = "Support ARM v6t2 instructions",
751 .dependencies = featureSet(&[_]Feature{1064 .dependencies = featureSet(&[_]Feature{
752 .dsp,
753 .thumb2,1065 .thumb2,
754 .v6k,1066 .v6k,
755 .v8m,1067 .v8m,
...@@ -764,199 +1076,77 @@ pub const all_features = blk: {...@@ -764,199 +1076,77 @@ pub const all_features = blk: {
764 .v7clrex,1076 .v7clrex,
765 }),1077 }),
766 };1078 };
767 result[@enumToInt(Feature.v7a)] = .{
768 .llvm_name = "armv7-a",
769 .description = "ARMv7a architecture",
770 .dependencies = featureSet(&[_]Feature{
771 .aclass,
772 .db,
773 .dsp,
774 .neon,
775 .v7,
776 }),
777 };
778 result[@enumToInt(Feature.v7m)] = .{
779 .llvm_name = "armv7-m",
780 .description = "ARMv7m architecture",
781 .dependencies = featureSet(&[_]Feature{
782 .db,
783 .hwdiv,
784 .mclass,
785 .noarm,
786 .thumb_mode,
787 .thumb2,
788 .v7,
789 }),
790 };
791 result[@enumToInt(Feature.v7r)] = .{
792 .llvm_name = "armv7-r",
793 .description = "ARMv7r architecture",
794 .dependencies = featureSet(&[_]Feature{
795 .db,
796 .dsp,
797 .hwdiv,
798 .rclass,
799 .v7,
800 }),
801 };
802 result[@enumToInt(Feature.v7clrex)] = .{1079 result[@enumToInt(Feature.v7clrex)] = .{
803 .llvm_name = "v7clrex",1080 .llvm_name = "v7clrex",
804 .description = "Has v7 clrex instruction",1081 .description = "Has v7 clrex instruction",
805 .dependencies = featureSet(&[_]Feature{}),1082 .dependencies = featureSet(&[_]Feature{}),
806 };1083 };
807 result[@enumToInt(Feature.v7em)] = .{
808 .llvm_name = "armv7e-m",
809 .description = "ARMv7em architecture",
810 .dependencies = featureSet(&[_]Feature{
811 .db,
812 .dsp,
813 .hwdiv,
814 .mclass,
815 .noarm,
816 .thumb_mode,
817 .thumb2,
818 .v7,
819 }),
820 };
821 result[@enumToInt(Feature.v7k)] = .{
822 .llvm_name = "armv7k",
823 .description = "ARMv7a architecture",
824 .dependencies = featureSet(&[_]Feature{
825 .v7a,
826 }),
827 };
828 result[@enumToInt(Feature.v7s)] = .{
829 .llvm_name = "armv7s",
830 .description = "ARMv7a architecture",
831 .dependencies = featureSet(&[_]Feature{
832 .v7a,
833 }),
834 };
835 result[@enumToInt(Feature.v7ve)] = .{
836 .llvm_name = "armv7ve",
837 .description = "ARMv7ve architecture",
838 .dependencies = featureSet(&[_]Feature{
839 .aclass,
840 .db,
841 .dsp,
842 .mp,
843 .neon,
844 .trustzone,
845 .v7,
846 .virtualization,
847 }),
848 };
849 result[@enumToInt(Feature.v8a)] = .{1084 result[@enumToInt(Feature.v8a)] = .{
850 .llvm_name = "armv8-a",1085 .llvm_name = "v8a",
851 .description = "ARMv8a architecture",1086 .description = "Support ARM v8a instructions",
852 .dependencies = featureSet(&[_]Feature{
853 .aclass,
854 .acquire_release,
855 .crc,
856 .crypto,
857 .db,
858 .fp_armv8,
859 .mp,
860 .neon,
861 .trustzone,
862 .v7,
863 .virtualization,
864 }),
865 };
866 result[@enumToInt(Feature.v8m)] = .{
867 .llvm_name = "armv8-m.base",
868 .description = "ARMv8mBaseline architecture",
869 .dependencies = featureSet(&[_]Feature{
870 .@"8msecext",
871 .acquire_release,
872 .db,
873 .hwdiv,
874 .mclass,
875 .noarm,
876 .strict_align,
877 .thumb_mode,
878 .v6m,
879 .v7clrex,
880 }),
881 };
882 result[@enumToInt(Feature.v8m_main)] = .{
883 .llvm_name = "armv8-m.main",
884 .description = "ARMv8mMainline architecture",
885 .dependencies = featureSet(&[_]Feature{1087 .dependencies = featureSet(&[_]Feature{
886 .@"8msecext",
887 .acquire_release,1088 .acquire_release,
888 .db,
889 .hwdiv,
890 .mclass,
891 .noarm,
892 .thumb_mode,
893 .v7,1089 .v7,
894 }),1090 }),
895 };1091 };
896 result[@enumToInt(Feature.v8r)] = .{
897 .llvm_name = "armv8-r",
898 .description = "ARMv8r architecture",
899 .dependencies = featureSet(&[_]Feature{
900 .dfb,
901 .rclass,
902 .v8a,
903 }),
904 };
905 result[@enumToInt(Feature.v8_1a)] = .{1092 result[@enumToInt(Feature.v8_1a)] = .{
906 .llvm_name = "armv8.1-a",1093 .llvm_name = "v8.1a",
907 .description = "ARMv81a architecture",1094 .description = "Support ARM v8.1a instructions",
908 .dependencies = featureSet(&[_]Feature{1095 .dependencies = featureSet(&[_]Feature{
909 .v8a,1096 .v8a,
910 }),1097 }),
911 };1098 };
912 result[@enumToInt(Feature.v8_1m_main)] = .{1099 result[@enumToInt(Feature.v8_1m_main)] = .{
913 .llvm_name = "armv8.1-m.main",1100 .llvm_name = "v8.1m.main",
914 .description = "ARMv81mMainline architecture",1101 .description = "Support ARM v8-1M Mainline instructions",
915 .dependencies = featureSet(&[_]Feature{1102 .dependencies = featureSet(&[_]Feature{
916 .@"8msecext",
917 .acquire_release,
918 .db,
919 .hwdiv,
920 .lob,
921 .mclass,
922 .noarm,
923 .ras,
924 .thumb_mode,
925 .v8m_main,1103 .v8m_main,
926 }),1104 }),
927 };1105 };
928 result[@enumToInt(Feature.v8_2a)] = .{1106 result[@enumToInt(Feature.v8_2a)] = .{
929 .llvm_name = "armv8.2-a",1107 .llvm_name = "v8.2a",
930 .description = "ARMv82a architecture",1108 .description = "Support ARM v8.2a instructions",
931 .dependencies = featureSet(&[_]Feature{1109 .dependencies = featureSet(&[_]Feature{
932 .ras,
933 .v8_1a,1110 .v8_1a,
934 }),1111 }),
935 };1112 };
936 result[@enumToInt(Feature.v8_3a)] = .{1113 result[@enumToInt(Feature.v8_3a)] = .{
937 .llvm_name = "armv8.3-a",1114 .llvm_name = "v8.3a",
938 .description = "ARMv83a architecture",1115 .description = "Support ARM v8.3a instructions",
939 .dependencies = featureSet(&[_]Feature{1116 .dependencies = featureSet(&[_]Feature{
940 .v8_2a,1117 .v8_2a,
941 }),1118 }),
942 };1119 };
943 result[@enumToInt(Feature.v8_4a)] = .{1120 result[@enumToInt(Feature.v8_4a)] = .{
944 .llvm_name = "armv8.4-a",1121 .llvm_name = "v8.4a",
945 .description = "ARMv84a architecture",1122 .description = "Support ARM v8.4a instructions",
946 .dependencies = featureSet(&[_]Feature{1123 .dependencies = featureSet(&[_]Feature{
947 .dotprod,1124 .dotprod,
948 .v8_3a,1125 .v8_3a,
949 }),1126 }),
950 };1127 };
951 result[@enumToInt(Feature.v8_5a)] = .{1128 result[@enumToInt(Feature.v8_5a)] = .{
952 .llvm_name = "armv8.5-a",1129 .llvm_name = "v8.5a",
953 .description = "ARMv85a architecture",1130 .description = "Support ARM v8.5a instructions",
954 .dependencies = featureSet(&[_]Feature{1131 .dependencies = featureSet(&[_]Feature{
955 .dotprod,
956 .sb,1132 .sb,
957 .v8_4a,1133 .v8_4a,
958 }),1134 }),
959 };1135 };
1136 result[@enumToInt(Feature.v8m)] = .{
1137 .llvm_name = "v8m",
1138 .description = "Support ARM v8M Baseline instructions",
1139 .dependencies = featureSet(&[_]Feature{
1140 .v6m,
1141 }),
1142 };
1143 result[@enumToInt(Feature.v8m_main)] = .{
1144 .llvm_name = "v8m.main",
1145 .description = "Support ARM v8M Mainline instructions",
1146 .dependencies = featureSet(&[_]Feature{
1147 .v7,
1148 }),
1149 };
960 result[@enumToInt(Feature.vfp2)] = .{1150 result[@enumToInt(Feature.vfp2)] = .{
961 .llvm_name = "vfp2",1151 .llvm_name = "vfp2",
962 .description = "Enable VFP2 instructions",1152 .description = "Enable VFP2 instructions",