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 {
99 aclass,
1010 acquire_release,
1111 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,
1245 avoid_movs_shop,
1346 avoid_partial_cpsr,
1447 cheap_predicable_cpsr,
......@@ -24,13 +57,13 @@ pub const Feature = enum {
2457 execute_only,
2558 expand_fp_mlx,
2659 exynos,
27 fp16,
28 fp16fml,
29 fp64,
3060 fp_armv8,
3161 fp_armv8d16,
3262 fp_armv8d16sp,
3363 fp_armv8sp,
64 fp16,
65 fp16fml,
66 fp64,
3467 fpao,
3568 fpregs,
3669 fpregs16,
......@@ -82,46 +115,29 @@ pub const Feature = enum {
82115 splat_vfp_neon,
83116 strict_align,
84117 swift,
85 thumb2,
86118 thumb_mode,
119 thumb2,
87120 trustzone,
88121 use_aa,
89122 use_misched,
90 v2,
91 v2a,
92 v3,
93 v3m,
94 v4,
95123 v4t,
96124 v5t,
97125 v5te,
98 v5tej,
99126 v6,
100 v6j,
101127 v6k,
102 v6kz,
103128 v6m,
104 v6sm,
105129 v6t2,
106130 v7,
107 v7a,
108 v7m,
109 v7r,
110131 v7clrex,
111 v7em,
112 v7k,
113 v7s,
114 v7ve,
115132 v8a,
116 v8m,
117 v8m_main,
118 v8r,
119133 v8_1a,
120134 v8_1m_main,
121135 v8_2a,
122136 v8_3a,
123137 v8_4a,
124138 v8_5a,
139 v8m,
140 v8m_main,
125141 vfp2,
126142 vfp2d16,
127143 vfp2d16sp,
......@@ -182,6 +198,368 @@ pub const all_features = blk: {
182198 .neon,
183199 }),
184200 };
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 };
185563 result[@enumToInt(Feature.avoid_movs_shop)] = .{
186564 .llvm_name = "avoid-movs-shop",
187565 .description = "Avoid movs instructions with shifter operand",
......@@ -275,29 +653,10 @@ pub const all_features = blk: {
275653 .slow_vdup32,
276654 .slow_vgetlni32,
277655 .slowfpvmlx,
278 .splat_vfp_neon,
279 .use_aa,
280 .wide_stride_vfp,
281 .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,
656 .splat_vfp_neon,
657 .use_aa,
658 .wide_stride_vfp,
659 .zcz,
301660 }),
302661 };
303662 result[@enumToInt(Feature.fp_armv8)] = .{
......@@ -334,6 +693,25 @@ pub const all_features = blk: {
334693 .vfp4sp,
335694 }),
336695 };
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 };
337715 result[@enumToInt(Feature.fpao)] = .{
338716 .llvm_name = "fpao",
339717 .description = "Enable fast computation of positive address offsets",
......@@ -615,16 +993,16 @@ pub const all_features = blk: {
615993 .description = "Swift ARM processors",
616994 .dependencies = featureSet(&[_]Feature{}),
617995 };
618 result[@enumToInt(Feature.thumb2)] = .{
619 .llvm_name = "thumb2",
620 .description = "Enable Thumb2 instructions",
621 .dependencies = featureSet(&[_]Feature{}),
622 };
623996 result[@enumToInt(Feature.thumb_mode)] = .{
624997 .llvm_name = "thumb-mode",
625998 .description = "Thumb mode",
626999 .dependencies = featureSet(&[_]Feature{}),
6271000 };
1001 result[@enumToInt(Feature.thumb2)] = .{
1002 .llvm_name = "thumb2",
1003 .description = "Enable Thumb2 instructions",
1004 .dependencies = featureSet(&[_]Feature{}),
1005 };
6281006 result[@enumToInt(Feature.trustzone)] = .{
6291007 .llvm_name = "trustzone",
6301008 .description = "Enable support for TrustZone security extensions",
......@@ -640,116 +1018,50 @@ pub const all_features = blk: {
6401018 .description = "Use the MachineScheduler",
6411019 .dependencies = featureSet(&[_]Feature{}),
6421020 };
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 };
6681021 result[@enumToInt(Feature.v4t)] = .{
669 .llvm_name = "armv4t",
670 .description = "ARMv4t architecture",
1022 .llvm_name = "v4t",
1023 .description = "Support ARM v4T instructions",
6711024 .dependencies = featureSet(&[_]Feature{}),
6721025 };
6731026 result[@enumToInt(Feature.v5t)] = .{
674 .llvm_name = "armv5t",
675 .description = "ARMv5t architecture",
1027 .llvm_name = "v5t",
1028 .description = "Support ARM v5T instructions",
6761029 .dependencies = featureSet(&[_]Feature{
6771030 .v4t,
6781031 }),
6791032 };
6801033 result[@enumToInt(Feature.v5te)] = .{
681 .llvm_name = "armv5te",
682 .description = "ARMv5te architecture",
1034 .llvm_name = "v5te",
1035 .description = "Support ARM v5TE, v5TEj, and v5TExp instructions",
6831036 .dependencies = featureSet(&[_]Feature{
6841037 .v5t,
6851038 }),
6861039 };
687 result[@enumToInt(Feature.v5tej)] = .{
688 .llvm_name = "armv5tej",
689 .description = "ARMv5tej architecture",
690 .dependencies = featureSet(&[_]Feature{
691 .v5te,
692 }),
693 };
6941040 result[@enumToInt(Feature.v6)] = .{
695 .llvm_name = "armv6",
696 .description = "ARMv6 architecture",
1041 .llvm_name = "v6",
1042 .description = "Support ARM v6 instructions",
6971043 .dependencies = featureSet(&[_]Feature{
698 .dsp,
6991044 .v5te,
7001045 }),
7011046 };
702 result[@enumToInt(Feature.v6j)] = .{
703 .llvm_name = "armv6j",
704 .description = "ARMv7a architecture",
705 .dependencies = featureSet(&[_]Feature{
706 .v6,
707 }),
708 };
7091047 result[@enumToInt(Feature.v6k)] = .{
710 .llvm_name = "armv6k",
711 .description = "ARMv6k architecture",
1048 .llvm_name = "v6k",
1049 .description = "Support ARM v6k instructions",
7121050 .dependencies = featureSet(&[_]Feature{
7131051 .v6,
7141052 }),
7151053 };
716 result[@enumToInt(Feature.v6kz)] = .{
717 .llvm_name = "armv6kz",
718 .description = "ARMv6kz architecture",
719 .dependencies = featureSet(&[_]Feature{
720 .trustzone,
721 .v6k,
722 }),
723 };
7241054 result[@enumToInt(Feature.v6m)] = .{
725 .llvm_name = "armv6-m",
726 .description = "ARMv6m architecture",
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",
1055 .llvm_name = "v6m",
1056 .description = "Support ARM v6M instructions",
7391057 .dependencies = featureSet(&[_]Feature{
740 .db,
741 .mclass,
742 .noarm,
743 .strict_align,
744 .thumb_mode,
7451058 .v6,
7461059 }),
7471060 };
7481061 result[@enumToInt(Feature.v6t2)] = .{
749 .llvm_name = "armv6t2",
750 .description = "ARMv6t2 architecture",
1062 .llvm_name = "v6t2",
1063 .description = "Support ARM v6t2 instructions",
7511064 .dependencies = featureSet(&[_]Feature{
752 .dsp,
7531065 .thumb2,
7541066 .v6k,
7551067 .v8m,
......@@ -764,199 +1076,77 @@ pub const all_features = blk: {
7641076 .v7clrex,
7651077 }),
7661078 };
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 };
8021079 result[@enumToInt(Feature.v7clrex)] = .{
8031080 .llvm_name = "v7clrex",
8041081 .description = "Has v7 clrex instruction",
8051082 .dependencies = featureSet(&[_]Feature{}),
8061083 };
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 };
8491084 result[@enumToInt(Feature.v8a)] = .{
850 .llvm_name = "armv8-a",
851 .description = "ARMv8a architecture",
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",
1085 .llvm_name = "v8a",
1086 .description = "Support ARM v8a instructions",
8851087 .dependencies = featureSet(&[_]Feature{
886 .@"8msecext",
8871088 .acquire_release,
888 .db,
889 .hwdiv,
890 .mclass,
891 .noarm,
892 .thumb_mode,
8931089 .v7,
8941090 }),
8951091 };
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 };
9051092 result[@enumToInt(Feature.v8_1a)] = .{
906 .llvm_name = "armv8.1-a",
907 .description = "ARMv81a architecture",
1093 .llvm_name = "v8.1a",
1094 .description = "Support ARM v8.1a instructions",
9081095 .dependencies = featureSet(&[_]Feature{
9091096 .v8a,
9101097 }),
9111098 };
9121099 result[@enumToInt(Feature.v8_1m_main)] = .{
913 .llvm_name = "armv8.1-m.main",
914 .description = "ARMv81mMainline architecture",
1100 .llvm_name = "v8.1m.main",
1101 .description = "Support ARM v8-1M Mainline instructions",
9151102 .dependencies = featureSet(&[_]Feature{
916 .@"8msecext",
917 .acquire_release,
918 .db,
919 .hwdiv,
920 .lob,
921 .mclass,
922 .noarm,
923 .ras,
924 .thumb_mode,
9251103 .v8m_main,
9261104 }),
9271105 };
9281106 result[@enumToInt(Feature.v8_2a)] = .{
929 .llvm_name = "armv8.2-a",
930 .description = "ARMv82a architecture",
1107 .llvm_name = "v8.2a",
1108 .description = "Support ARM v8.2a instructions",
9311109 .dependencies = featureSet(&[_]Feature{
932 .ras,
9331110 .v8_1a,
9341111 }),
9351112 };
9361113 result[@enumToInt(Feature.v8_3a)] = .{
937 .llvm_name = "armv8.3-a",
938 .description = "ARMv83a architecture",
1114 .llvm_name = "v8.3a",
1115 .description = "Support ARM v8.3a instructions",
9391116 .dependencies = featureSet(&[_]Feature{
9401117 .v8_2a,
9411118 }),
9421119 };
9431120 result[@enumToInt(Feature.v8_4a)] = .{
944 .llvm_name = "armv8.4-a",
945 .description = "ARMv84a architecture",
1121 .llvm_name = "v8.4a",
1122 .description = "Support ARM v8.4a instructions",
9461123 .dependencies = featureSet(&[_]Feature{
9471124 .dotprod,
9481125 .v8_3a,
9491126 }),
9501127 };
9511128 result[@enumToInt(Feature.v8_5a)] = .{
952 .llvm_name = "armv8.5-a",
953 .description = "ARMv85a architecture",
1129 .llvm_name = "v8.5a",
1130 .description = "Support ARM v8.5a instructions",
9541131 .dependencies = featureSet(&[_]Feature{
955 .dotprod,
9561132 .sb,
9571133 .v8_4a,
9581134 }),
9591135 };
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 };
9601150 result[@enumToInt(Feature.vfp2)] = .{
9611151 .llvm_name = "vfp2",
9621152 .description = "Enable VFP2 instructions",