authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-02-27 21:10:00-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-02-27 21:10:00-07:00
logab36a162d07ee66724bd369e2b19b81ae6fba6ea
tree604fd4ffb096c142c4aadd4122ddf9266a490525
parent85ab1b01e73d9b616f8af3951c132920e61be731

update ARM target CPU features

This completes the process. All target CPU features are now auto-generated by the tools/update_cpu_features.zig script, which contains all the overrides. Invoking this tool against LLVM 12rc2 now produces an empty git diff.

2 files changed, 575 insertions(+), 269 deletions(-)

lib/std/target/arm.zig+223-269
...@@ -1,8 +1,5 @@...@@ -1,8 +1,5 @@
1// SPDX-License-Identifier: MIT1//! This file is auto-generated by tools/update_cpu_features.zig.
2// Copyright (c) 2015-2021 Zig Contributors2
3// This file is part of [zig](https://ziglang.org/), which is MIT licensed.
4// The MIT license requires this copyright notice to be included in all copies
5// and substantial portions of the software.
6const std = @import("../std.zig");3const std = @import("../std.zig");
7const CpuFeature = std.Target.Cpu.Feature;4const CpuFeature = std.Target.Cpu.Feature;
8const CpuModel = std.Target.Cpu.Model;5const CpuModel = std.Target.Cpu.Model;
...@@ -53,6 +50,8 @@ pub const Feature = enum {...@@ -53,6 +50,8 @@ pub const Feature = enum {
53 fullfp16,50 fullfp16,
54 fuse_aes,51 fuse_aes,
55 fuse_literals,52 fuse_literals,
53 harden_sls_blr,
54 harden_sls_retbr,
56 has_v4t,55 has_v4t,
57 has_v5t,56 has_v5t,
58 has_v5te,57 has_v5te,
...@@ -62,6 +61,7 @@ pub const Feature = enum {...@@ -62,6 +61,7 @@ pub const Feature = enum {
62 has_v6t2,61 has_v6t2,
63 has_v7,62 has_v7,
64 has_v7clrex,63 has_v7clrex,
64 has_v8,
65 has_v8_1a,65 has_v8_1a,
66 has_v8_1m_main,66 has_v8_1m_main,
67 has_v8_2a,67 has_v8_2a,
...@@ -69,7 +69,7 @@ pub const Feature = enum {...@@ -69,7 +69,7 @@ pub const Feature = enum {
69 has_v8_4a,69 has_v8_4a,
70 has_v8_5a,70 has_v8_5a,
71 has_v8_6a,71 has_v8_6a,
72 has_v8,72 has_v8_7a,
73 has_v8m,73 has_v8m,
74 has_v8m_main,74 has_v8m_main,
75 hwdiv,75 hwdiv,
...@@ -85,10 +85,10 @@ pub const Feature = enum {...@@ -85,10 +85,10 @@ pub const Feature = enum {
85 mp,85 mp,
86 muxed_units,86 muxed_units,
87 mve,87 mve,
88 mve_fp,
89 mve1beat,88 mve1beat,
90 mve2beat,89 mve2beat,
91 mve4beat,90 mve4beat,
91 mve_fp,
92 nacl_trap,92 nacl_trap,
93 neon,93 neon,
94 neon_fpmovs,94 neon_fpmovs,
...@@ -148,10 +148,6 @@ pub const Feature = enum {...@@ -148,10 +148,6 @@ pub const Feature = enum {
148 v7r,148 v7r,
149 v7s,149 v7s,
150 v7ve,150 v7ve,
151 v8a,
152 v8m,
153 v8m_main,
154 v8r,
155 v8_1a,151 v8_1a,
156 v8_1m_main,152 v8_1m_main,
157 v8_2a,153 v8_2a,
...@@ -159,6 +155,11 @@ pub const Feature = enum {...@@ -159,6 +155,11 @@ pub const Feature = enum {
159 v8_4a,155 v8_4a,
160 v8_5a,156 v8_5a,
161 v8_6a,157 v8_6a,
158 v8_7a,
159 v8a,
160 v8m,
161 v8m_main,
162 v8r,
162 vfp2,163 vfp2,
163 vfp2sp,164 vfp2sp,
164 vfp3,165 vfp3,
...@@ -238,7 +239,7 @@ pub const all_features = blk: {...@@ -238,7 +239,7 @@ pub const all_features = blk: {
238 .llvm_name = "cde",239 .llvm_name = "cde",
239 .description = "Support CDE instructions",240 .description = "Support CDE instructions",
240 .dependencies = featureSet(&[_]Feature{241 .dependencies = featureSet(&[_]Feature{
241 .v8m_main,242 .has_v8m_main,
242 }),243 }),
243 };244 };
244 result[@enumToInt(Feature.cdecp0)] = .{245 result[@enumToInt(Feature.cdecp0)] = .{
...@@ -312,7 +313,6 @@ pub const all_features = blk: {...@@ -312,7 +313,6 @@ pub const all_features = blk: {
312 .description = "Enable support for Cryptography extensions",313 .description = "Enable support for Cryptography extensions",
313 .dependencies = featureSet(&[_]Feature{314 .dependencies = featureSet(&[_]Feature{
314 .aes,315 .aes,
315 .neon,
316 .sha2,316 .sha2,
317 }),317 }),
318 };318 };
...@@ -419,7 +419,6 @@ pub const all_features = blk: {...@@ -419,7 +419,6 @@ pub const all_features = blk: {
419 .description = "Enable ARMv8 FP with only 16 d-registers",419 .description = "Enable ARMv8 FP with only 16 d-registers",
420 .dependencies = featureSet(&[_]Feature{420 .dependencies = featureSet(&[_]Feature{
421 .fp_armv8d16sp,421 .fp_armv8d16sp,
422 .fp64,
423 .vfp4d16,422 .vfp4d16,
424 }),423 }),
425 };424 };
...@@ -434,7 +433,6 @@ pub const all_features = blk: {...@@ -434,7 +433,6 @@ pub const all_features = blk: {
434 .llvm_name = "fp-armv8sp",433 .llvm_name = "fp-armv8sp",
435 .description = "Enable ARMv8 FP with no double precision",434 .description = "Enable ARMv8 FP with no double precision",
436 .dependencies = featureSet(&[_]Feature{435 .dependencies = featureSet(&[_]Feature{
437 .d32,
438 .fp_armv8d16sp,436 .fp_armv8d16sp,
439 .vfp4sp,437 .vfp4sp,
440 }),438 }),
...@@ -481,6 +479,16 @@ pub const all_features = blk: {...@@ -481,6 +479,16 @@ pub const all_features = blk: {
481 .description = "CPU fuses literal generation operations",479 .description = "CPU fuses literal generation operations",
482 .dependencies = featureSet(&[_]Feature{}),480 .dependencies = featureSet(&[_]Feature{}),
483 };481 };
482 result[@enumToInt(Feature.harden_sls_blr)] = .{
483 .llvm_name = "harden-sls-blr",
484 .description = "Harden against straight line speculation across indirect calls",
485 .dependencies = featureSet(&[_]Feature{}),
486 };
487 result[@enumToInt(Feature.harden_sls_retbr)] = .{
488 .llvm_name = "harden-sls-retbr",
489 .description = "Harden against straight line speculation across RETurn and BranchRegister instructions",
490 .dependencies = featureSet(&[_]Feature{}),
491 };
484 result[@enumToInt(Feature.has_v4t)] = .{492 result[@enumToInt(Feature.has_v4t)] = .{
485 .llvm_name = "v4t",493 .llvm_name = "v4t",
486 .description = "Support ARM v4T instructions",494 .description = "Support ARM v4T instructions",
...@@ -525,18 +533,18 @@ pub const all_features = blk: {...@@ -525,18 +533,18 @@ pub const all_features = blk: {
525 .llvm_name = "v6t2",533 .llvm_name = "v6t2",
526 .description = "Support ARM v6t2 instructions",534 .description = "Support ARM v6t2 instructions",
527 .dependencies = featureSet(&[_]Feature{535 .dependencies = featureSet(&[_]Feature{
528 .thumb2,
529 .has_v6k,536 .has_v6k,
530 .has_v8m,537 .has_v8m,
538 .thumb2,
531 }),539 }),
532 };540 };
533 result[@enumToInt(Feature.has_v7)] = .{541 result[@enumToInt(Feature.has_v7)] = .{
534 .llvm_name = "v7",542 .llvm_name = "v7",
535 .description = "Support ARM v7 instructions",543 .description = "Support ARM v7 instructions",
536 .dependencies = featureSet(&[_]Feature{544 .dependencies = featureSet(&[_]Feature{
537 .perfmon,
538 .has_v6t2,545 .has_v6t2,
539 .has_v7clrex,546 .has_v7clrex,
547 .perfmon,
540 }),548 }),
541 };549 };
542 result[@enumToInt(Feature.has_v7clrex)] = .{550 result[@enumToInt(Feature.has_v7clrex)] = .{
...@@ -592,8 +600,8 @@ pub const all_features = blk: {...@@ -592,8 +600,8 @@ pub const all_features = blk: {
592 .llvm_name = "v8.5a",600 .llvm_name = "v8.5a",
593 .description = "Support ARM v8.5a instructions",601 .description = "Support ARM v8.5a instructions",
594 .dependencies = featureSet(&[_]Feature{602 .dependencies = featureSet(&[_]Feature{
595 .sb,
596 .has_v8_4a,603 .has_v8_4a,
604 .sb,
597 }),605 }),
598 };606 };
599 result[@enumToInt(Feature.has_v8_6a)] = .{607 result[@enumToInt(Feature.has_v8_6a)] = .{
...@@ -601,8 +609,15 @@ pub const all_features = blk: {...@@ -601,8 +609,15 @@ pub const all_features = blk: {
601 .description = "Support ARM v8.6a instructions",609 .description = "Support ARM v8.6a instructions",
602 .dependencies = featureSet(&[_]Feature{610 .dependencies = featureSet(&[_]Feature{
603 .bf16,611 .bf16,
604 .i8mm,
605 .has_v8_5a,612 .has_v8_5a,
613 .i8mm,
614 }),
615 };
616 result[@enumToInt(Feature.has_v8_7a)] = .{
617 .llvm_name = "v8.7a",
618 .description = "Support ARM v8.7a instructions",
619 .dependencies = featureSet(&[_]Feature{
620 .has_v8_6a,
606 }),621 }),
607 };622 };
608 result[@enumToInt(Feature.has_v8m)] = .{623 result[@enumToInt(Feature.has_v8m)] = .{
...@@ -640,14 +655,14 @@ pub const all_features = blk: {...@@ -640,14 +655,14 @@ pub const all_features = blk: {
640 .llvm_name = "iwmmxt",655 .llvm_name = "iwmmxt",
641 .description = "ARMv5te architecture",656 .description = "ARMv5te architecture",
642 .dependencies = featureSet(&[_]Feature{657 .dependencies = featureSet(&[_]Feature{
643 .has_v5te,658 .v5te,
644 }),659 }),
645 };660 };
646 result[@enumToInt(Feature.iwmmxt2)] = .{661 result[@enumToInt(Feature.iwmmxt2)] = .{
647 .llvm_name = "iwmmxt2",662 .llvm_name = "iwmmxt2",
648 .description = "ARMv5te architecture",663 .description = "ARMv5te architecture",
649 .dependencies = featureSet(&[_]Feature{664 .dependencies = featureSet(&[_]Feature{
650 .has_v5te,665 .v5te,
651 }),666 }),
652 };667 };
653 result[@enumToInt(Feature.lob)] = .{668 result[@enumToInt(Feature.lob)] = .{
...@@ -695,15 +710,6 @@ pub const all_features = blk: {...@@ -695,15 +710,6 @@ pub const all_features = blk: {
695 .has_v8_1m_main,710 .has_v8_1m_main,
696 }),711 }),
697 };712 };
698 result[@enumToInt(Feature.mve_fp)] = .{
699 .llvm_name = "mve.fp",
700 .description = "Support M-Class Vector Extension with integer and floating ops",
701 .dependencies = featureSet(&[_]Feature{
702 .fp_armv8d16sp,
703 .fullfp16,
704 .mve,
705 }),
706 };
707 result[@enumToInt(Feature.mve1beat)] = .{713 result[@enumToInt(Feature.mve1beat)] = .{
708 .llvm_name = "mve1beat",714 .llvm_name = "mve1beat",
709 .description = "Model MVE instructions as a 1 beat per tick architecture",715 .description = "Model MVE instructions as a 1 beat per tick architecture",
...@@ -719,6 +725,14 @@ pub const all_features = blk: {...@@ -719,6 +725,14 @@ pub const all_features = blk: {
719 .description = "Model MVE instructions as a 4 beats per tick architecture",725 .description = "Model MVE instructions as a 4 beats per tick architecture",
720 .dependencies = featureSet(&[_]Feature{}),726 .dependencies = featureSet(&[_]Feature{}),
721 };727 };
728 result[@enumToInt(Feature.mve_fp)] = .{
729 .llvm_name = "mve.fp",
730 .description = "Support M-Class Vector Extension with integer and floating ops",
731 .dependencies = featureSet(&[_]Feature{
732 .fullfp16,
733 .mve,
734 }),
735 };
722 result[@enumToInt(Feature.nacl_trap)] = .{736 result[@enumToInt(Feature.nacl_trap)] = .{
723 .llvm_name = "nacl-trap",737 .llvm_name = "nacl-trap",
724 .description = "NaCl trap",738 .description = "NaCl trap",
...@@ -944,32 +958,32 @@ pub const all_features = blk: {...@@ -944,32 +958,32 @@ pub const all_features = blk: {
944 .llvm_name = "armv4t",958 .llvm_name = "armv4t",
945 .description = "ARMv4t architecture",959 .description = "ARMv4t architecture",
946 .dependencies = featureSet(&[_]Feature{960 .dependencies = featureSet(&[_]Feature{
947 .strict_align,
948 .has_v4t,961 .has_v4t,
962 .strict_align,
949 }),963 }),
950 };964 };
951 result[@enumToInt(Feature.v5t)] = .{965 result[@enumToInt(Feature.v5t)] = .{
952 .llvm_name = "armv5t",966 .llvm_name = "armv5t",
953 .description = "ARMv5t architecture",967 .description = "ARMv5t architecture",
954 .dependencies = featureSet(&[_]Feature{968 .dependencies = featureSet(&[_]Feature{
955 .strict_align,
956 .has_v5t,969 .has_v5t,
970 .strict_align,
957 }),971 }),
958 };972 };
959 result[@enumToInt(Feature.v5te)] = .{973 result[@enumToInt(Feature.v5te)] = .{
960 .llvm_name = "armv5te",974 .llvm_name = "armv5te",
961 .description = "ARMv5te architecture",975 .description = "ARMv5te architecture",
962 .dependencies = featureSet(&[_]Feature{976 .dependencies = featureSet(&[_]Feature{
963 .strict_align,
964 .has_v5te,977 .has_v5te,
978 .strict_align,
965 }),979 }),
966 };980 };
967 result[@enumToInt(Feature.v5tej)] = .{981 result[@enumToInt(Feature.v5tej)] = .{
968 .llvm_name = "armv5tej",982 .llvm_name = "armv5tej",
969 .description = "ARMv5tej architecture",983 .description = "ARMv5tej architecture",
970 .dependencies = featureSet(&[_]Feature{984 .dependencies = featureSet(&[_]Feature{
971 .strict_align,
972 .has_v5te,985 .has_v5te,
986 .strict_align,
973 }),987 }),
974 };988 };
975 result[@enumToInt(Feature.v6)] = .{989 result[@enumToInt(Feature.v6)] = .{
...@@ -980,18 +994,6 @@ pub const all_features = blk: {...@@ -980,18 +994,6 @@ pub const all_features = blk: {
980 .has_v6,994 .has_v6,
981 }),995 }),
982 };996 };
983 result[@enumToInt(Feature.v6m)] = .{
984 .llvm_name = "armv6-m",
985 .description = "ARMv6m architecture",
986 .dependencies = featureSet(&[_]Feature{
987 .db,
988 .mclass,
989 .noarm,
990 .strict_align,
991 .thumb_mode,
992 .has_v6m,
993 }),
994 };
995 result[@enumToInt(Feature.v6j)] = .{997 result[@enumToInt(Feature.v6j)] = .{
996 .llvm_name = "armv6j",998 .llvm_name = "armv6j",
997 .description = "ARMv7a architecture",999 .description = "ARMv7a architecture",
...@@ -1010,8 +1012,20 @@ pub const all_features = blk: {...@@ -1010,8 +1012,20 @@ pub const all_features = blk: {
1010 .llvm_name = "armv6kz",1012 .llvm_name = "armv6kz",
1011 .description = "ARMv6kz architecture",1013 .description = "ARMv6kz architecture",
1012 .dependencies = featureSet(&[_]Feature{1014 .dependencies = featureSet(&[_]Feature{
1013 .trustzone,
1014 .has_v6k,1015 .has_v6k,
1016 .trustzone,
1017 }),
1018 };
1019 result[@enumToInt(Feature.v6m)] = .{
1020 .llvm_name = "armv6-m",
1021 .description = "ARMv6m architecture",
1022 .dependencies = featureSet(&[_]Feature{
1023 .db,
1024 .has_v6m,
1025 .mclass,
1026 .noarm,
1027 .strict_align,
1028 .thumb_mode,
1015 }),1029 }),
1016 };1030 };
1017 result[@enumToInt(Feature.v6sm)] = .{1031 result[@enumToInt(Feature.v6sm)] = .{
...@@ -1019,11 +1033,11 @@ pub const all_features = blk: {...@@ -1019,11 +1033,11 @@ pub const all_features = blk: {
1019 .description = "ARMv6sm architecture",1033 .description = "ARMv6sm architecture",
1020 .dependencies = featureSet(&[_]Feature{1034 .dependencies = featureSet(&[_]Feature{
1021 .db,1035 .db,
1036 .has_v6m,
1022 .mclass,1037 .mclass,
1023 .noarm,1038 .noarm,
1024 .strict_align,1039 .strict_align,
1025 .thumb_mode,1040 .thumb_mode,
1026 .has_v6m,
1027 }),1041 }),
1028 };1042 };
1029 result[@enumToInt(Feature.v6t2)] = .{1043 result[@enumToInt(Feature.v6t2)] = .{
...@@ -1041,53 +1055,51 @@ pub const all_features = blk: {...@@ -1041,53 +1055,51 @@ pub const all_features = blk: {
1041 .aclass,1055 .aclass,
1042 .db,1056 .db,
1043 .dsp,1057 .dsp,
1044 .neon,
1045 .has_v7,1058 .has_v7,
1059 .neon,
1046 }),1060 }),
1047 };1061 };
1048 result[@enumToInt(Feature.v7m)] = .{1062 result[@enumToInt(Feature.v7em)] = .{
1049 .llvm_name = "armv7-m",1063 .llvm_name = "armv7e-m",
1050 .description = "ARMv7m architecture",1064 .description = "ARMv7em architecture",
1051 .dependencies = featureSet(&[_]Feature{1065 .dependencies = featureSet(&[_]Feature{
1052 .db,1066 .db,
1067 .dsp,
1068 .has_v7,
1053 .hwdiv,1069 .hwdiv,
1054 .mclass,1070 .mclass,
1055 .noarm,1071 .noarm,
1056 .thumb_mode,1072 .thumb_mode,
1057 .thumb2,
1058 .has_v7,
1059 }),1073 }),
1060 };1074 };
1061 result[@enumToInt(Feature.v7r)] = .{1075 result[@enumToInt(Feature.v7k)] = .{
1062 .llvm_name = "armv7-r",1076 .llvm_name = "armv7k",
1063 .description = "ARMv7r architecture",1077 .description = "ARMv7a architecture",
1064 .dependencies = featureSet(&[_]Feature{1078 .dependencies = featureSet(&[_]Feature{
1065 .db,1079 .v7a,
1066 .dsp,
1067 .hwdiv,
1068 .rclass,
1069 .has_v7,
1070 }),1080 }),
1071 };1081 };
1072 result[@enumToInt(Feature.v7em)] = .{1082 result[@enumToInt(Feature.v7m)] = .{
1073 .llvm_name = "armv7e-m",1083 .llvm_name = "armv7-m",
1074 .description = "ARMv7em architecture",1084 .description = "ARMv7m architecture",
1075 .dependencies = featureSet(&[_]Feature{1085 .dependencies = featureSet(&[_]Feature{
1076 .db,1086 .db,
1077 .dsp,1087 .has_v7,
1078 .hwdiv,1088 .hwdiv,
1079 .mclass,1089 .mclass,
1080 .noarm,1090 .noarm,
1081 .thumb_mode,1091 .thumb_mode,
1082 .thumb2,
1083 .has_v7,
1084 }),1092 }),
1085 };1093 };
1086 result[@enumToInt(Feature.v7k)] = .{1094 result[@enumToInt(Feature.v7r)] = .{
1087 .llvm_name = "armv7k",1095 .llvm_name = "armv7-r",
1088 .description = "ARMv7a architecture",1096 .description = "ARMv7r architecture",
1089 .dependencies = featureSet(&[_]Feature{1097 .dependencies = featureSet(&[_]Feature{
1090 .v7a,1098 .db,
1099 .dsp,
1100 .has_v7,
1101 .hwdiv,
1102 .rclass,
1091 }),1103 }),
1092 };1104 };
1093 result[@enumToInt(Feature.v7s)] = .{1105 result[@enumToInt(Feature.v7s)] = .{
...@@ -1104,73 +1116,10 @@ pub const all_features = blk: {...@@ -1104,73 +1116,10 @@ pub const all_features = blk: {
1104 .aclass,1116 .aclass,
1105 .db,1117 .db,
1106 .dsp,1118 .dsp,
1107 .mp,
1108 .neon,
1109 .trustzone,
1110 .has_v7,1119 .has_v7,
1111 .virtualization,
1112 }),
1113 };
1114 result[@enumToInt(Feature.v8a)] = .{
1115 .llvm_name = "armv8-a",
1116 .description = "ARMv8a architecture",
1117 .dependencies = featureSet(&[_]Feature{
1118 .aclass,
1119 .crc,
1120 .crypto,
1121 .db,
1122 .dsp,
1123 .fp_armv8,
1124 .mp,1120 .mp,
1125 .neon,1121 .neon,
1126 .trustzone,1122 .trustzone,
1127 .has_v8,
1128 .virtualization,
1129 }),
1130 };
1131 result[@enumToInt(Feature.v8m)] = .{
1132 .llvm_name = "armv8-m.base",
1133 .description = "ARMv8mBaseline architecture",
1134 .dependencies = featureSet(&[_]Feature{
1135 .@"8msecext",
1136 .acquire_release,
1137 .db,
1138 .hwdiv,
1139 .mclass,
1140 .noarm,
1141 .strict_align,
1142 .thumb_mode,
1143 .has_v7clrex,
1144 .has_v8m,
1145 }),
1146 };
1147 result[@enumToInt(Feature.v8m_main)] = .{
1148 .llvm_name = "armv8-m.main",
1149 .description = "ARMv8mMainline architecture",
1150 .dependencies = featureSet(&[_]Feature{
1151 .@"8msecext",
1152 .acquire_release,
1153 .db,
1154 .hwdiv,
1155 .mclass,
1156 .noarm,
1157 .thumb_mode,
1158 .has_v8m_main,
1159 }),
1160 };
1161 result[@enumToInt(Feature.v8r)] = .{
1162 .llvm_name = "armv8-r",
1163 .description = "ARMv8r architecture",
1164 .dependencies = featureSet(&[_]Feature{
1165 .crc,
1166 .db,
1167 .dfb,
1168 .dsp,
1169 .fp_armv8,
1170 .mp,
1171 .neon,
1172 .rclass,
1173 .has_v8,
1174 .virtualization,1123 .virtualization,
1175 }),1124 }),
1176 };1125 };
...@@ -1184,10 +1133,9 @@ pub const all_features = blk: {...@@ -1184,10 +1133,9 @@ pub const all_features = blk: {
1184 .db,1133 .db,
1185 .dsp,1134 .dsp,
1186 .fp_armv8,1135 .fp_armv8,
1136 .has_v8_1a,
1187 .mp,1137 .mp,
1188 .neon,
1189 .trustzone,1138 .trustzone,
1190 .has_v8_1a,
1191 .virtualization,1139 .virtualization,
1192 }),1140 }),
1193 };1141 };
...@@ -1198,13 +1146,13 @@ pub const all_features = blk: {...@@ -1198,13 +1146,13 @@ pub const all_features = blk: {
1198 .@"8msecext",1146 .@"8msecext",
1199 .acquire_release,1147 .acquire_release,
1200 .db,1148 .db,
1149 .has_v8_1m_main,
1201 .hwdiv,1150 .hwdiv,
1202 .lob,1151 .lob,
1203 .mclass,1152 .mclass,
1204 .noarm,1153 .noarm,
1205 .ras,1154 .ras,
1206 .thumb_mode,1155 .thumb_mode,
1207 .has_v8_1m_main,
1208 }),1156 }),
1209 };1157 };
1210 result[@enumToInt(Feature.v8_2a)] = .{1158 result[@enumToInt(Feature.v8_2a)] = .{
...@@ -1217,11 +1165,10 @@ pub const all_features = blk: {...@@ -1217,11 +1165,10 @@ pub const all_features = blk: {
1217 .db,1165 .db,
1218 .dsp,1166 .dsp,
1219 .fp_armv8,1167 .fp_armv8,
1168 .has_v8_2a,
1220 .mp,1169 .mp,
1221 .neon,
1222 .ras,1170 .ras,
1223 .trustzone,1171 .trustzone,
1224 .has_v8_2a,
1225 .virtualization,1172 .virtualization,
1226 }),1173 }),
1227 };1174 };
...@@ -1235,11 +1182,10 @@ pub const all_features = blk: {...@@ -1235,11 +1182,10 @@ pub const all_features = blk: {
1235 .db,1182 .db,
1236 .dsp,1183 .dsp,
1237 .fp_armv8,1184 .fp_armv8,
1185 .has_v8_3a,
1238 .mp,1186 .mp,
1239 .neon,
1240 .ras,1187 .ras,
1241 .trustzone,1188 .trustzone,
1242 .has_v8_3a,
1243 .virtualization,1189 .virtualization,
1244 }),1190 }),
1245 };1191 };
...@@ -1251,14 +1197,12 @@ pub const all_features = blk: {...@@ -1251,14 +1197,12 @@ pub const all_features = blk: {
1251 .crc,1197 .crc,
1252 .crypto,1198 .crypto,
1253 .db,1199 .db,
1254 .dotprod,
1255 .dsp,1200 .dsp,
1256 .fp_armv8,1201 .fp_armv8,
1202 .has_v8_4a,
1257 .mp,1203 .mp,
1258 .neon,
1259 .ras,1204 .ras,
1260 .trustzone,1205 .trustzone,
1261 .has_v8_4a,
1262 .virtualization,1206 .virtualization,
1263 }),1207 }),
1264 };1208 };
...@@ -1270,14 +1214,12 @@ pub const all_features = blk: {...@@ -1270,14 +1214,12 @@ pub const all_features = blk: {
1270 .crc,1214 .crc,
1271 .crypto,1215 .crypto,
1272 .db,1216 .db,
1273 .dotprod,
1274 .dsp,1217 .dsp,
1275 .fp_armv8,1218 .fp_armv8,
1219 .has_v8_5a,
1276 .mp,1220 .mp,
1277 .neon,
1278 .ras,1221 .ras,
1279 .trustzone,1222 .trustzone,
1280 .has_v8_5a,
1281 .virtualization,1223 .virtualization,
1282 }),1224 }),
1283 };1225 };
...@@ -1289,14 +1231,91 @@ pub const all_features = blk: {...@@ -1289,14 +1231,91 @@ pub const all_features = blk: {
1289 .crc,1231 .crc,
1290 .crypto,1232 .crypto,
1291 .db,1233 .db,
1292 .dotprod,
1293 .dsp,1234 .dsp,
1294 .fp_armv8,1235 .fp_armv8,
1236 .has_v8_6a,
1295 .mp,1237 .mp,
1296 .neon,
1297 .ras,1238 .ras,
1298 .trustzone,1239 .trustzone,
1299 .has_v8_6a,1240 .virtualization,
1241 }),
1242 };
1243 result[@enumToInt(Feature.v8_7a)] = .{
1244 .llvm_name = "armv8.7-a",
1245 .description = "ARMv86a architecture",
1246 .dependencies = featureSet(&[_]Feature{
1247 .aclass,
1248 .crc,
1249 .crypto,
1250 .db,
1251 .dsp,
1252 .fp_armv8,
1253 .has_v8_7a,
1254 .mp,
1255 .ras,
1256 .trustzone,
1257 .virtualization,
1258 }),
1259 };
1260 result[@enumToInt(Feature.v8a)] = .{
1261 .llvm_name = "armv8-a",
1262 .description = "ARMv8a architecture",
1263 .dependencies = featureSet(&[_]Feature{
1264 .aclass,
1265 .crc,
1266 .crypto,
1267 .db,
1268 .dsp,
1269 .fp_armv8,
1270 .has_v8,
1271 .mp,
1272 .trustzone,
1273 .virtualization,
1274 }),
1275 };
1276 result[@enumToInt(Feature.v8m)] = .{
1277 .llvm_name = "armv8-m.base",
1278 .description = "ARMv8mBaseline architecture",
1279 .dependencies = featureSet(&[_]Feature{
1280 .@"8msecext",
1281 .acquire_release,
1282 .db,
1283 .has_v7clrex,
1284 .has_v8m,
1285 .hwdiv,
1286 .mclass,
1287 .noarm,
1288 .strict_align,
1289 .thumb_mode,
1290 }),
1291 };
1292 result[@enumToInt(Feature.v8m_main)] = .{
1293 .llvm_name = "armv8-m.main",
1294 .description = "ARMv8mMainline architecture",
1295 .dependencies = featureSet(&[_]Feature{
1296 .@"8msecext",
1297 .acquire_release,
1298 .db,
1299 .has_v8m_main,
1300 .hwdiv,
1301 .mclass,
1302 .noarm,
1303 .thumb_mode,
1304 }),
1305 };
1306 result[@enumToInt(Feature.v8r)] = .{
1307 .llvm_name = "armv8-r",
1308 .description = "ARMv8r architecture",
1309 .dependencies = featureSet(&[_]Feature{
1310 .crc,
1311 .db,
1312 .dfb,
1313 .dsp,
1314 .fp_armv8,
1315 .has_v8,
1316 .mp,
1317 .neon,
1318 .rclass,
1300 .virtualization,1319 .virtualization,
1301 }),1320 }),
1302 };1321 };
...@@ -1327,7 +1346,6 @@ pub const all_features = blk: {...@@ -1327,7 +1346,6 @@ pub const all_features = blk: {
1327 .llvm_name = "vfp3d16",1346 .llvm_name = "vfp3d16",
1328 .description = "Enable VFP3 instructions with only 16 d-registers",1347 .description = "Enable VFP3 instructions with only 16 d-registers",
1329 .dependencies = featureSet(&[_]Feature{1348 .dependencies = featureSet(&[_]Feature{
1330 .fp64,
1331 .vfp2,1349 .vfp2,
1332 .vfp3d16sp,1350 .vfp3d16sp,
1333 }),1351 }),
...@@ -1351,7 +1369,6 @@ pub const all_features = blk: {...@@ -1351,7 +1369,6 @@ pub const all_features = blk: {
1351 .llvm_name = "vfp4",1369 .llvm_name = "vfp4",
1352 .description = "Enable VFP4 instructions",1370 .description = "Enable VFP4 instructions",
1353 .dependencies = featureSet(&[_]Feature{1371 .dependencies = featureSet(&[_]Feature{
1354 .fp16,
1355 .vfp3,1372 .vfp3,
1356 .vfp4d16,1373 .vfp4d16,
1357 .vfp4sp,1374 .vfp4sp,
...@@ -1361,8 +1378,6 @@ pub const all_features = blk: {...@@ -1361,8 +1378,6 @@ pub const all_features = blk: {
1361 .llvm_name = "vfp4d16",1378 .llvm_name = "vfp4d16",
1362 .description = "Enable VFP4 instructions with only 16 d-registers",1379 .description = "Enable VFP4 instructions with only 16 d-registers",
1363 .dependencies = featureSet(&[_]Feature{1380 .dependencies = featureSet(&[_]Feature{
1364 .fp16,
1365 .fp64,
1366 .vfp3d16,1381 .vfp3d16,
1367 .vfp4d16sp,1382 .vfp4d16sp,
1368 }),1383 }),
...@@ -1379,8 +1394,6 @@ pub const all_features = blk: {...@@ -1379,8 +1394,6 @@ pub const all_features = blk: {
1379 .llvm_name = "vfp4sp",1394 .llvm_name = "vfp4sp",
1380 .description = "Enable VFP4 instructions with no double precision",1395 .description = "Enable VFP4 instructions with no double precision",
1381 .dependencies = featureSet(&[_]Feature{1396 .dependencies = featureSet(&[_]Feature{
1382 .d32,
1383 .fp16,
1384 .vfp3sp,1397 .vfp3sp,
1385 .vfp4d16sp,1398 .vfp4d16sp,
1386 }),1399 }),
...@@ -1417,7 +1430,7 @@ pub const all_features = blk: {...@@ -1417,7 +1430,7 @@ pub const all_features = blk: {
1417 .llvm_name = "xscale",1430 .llvm_name = "xscale",
1418 .description = "ARMv5te architecture",1431 .description = "ARMv5te architecture",
1419 .dependencies = featureSet(&[_]Feature{1432 .dependencies = featureSet(&[_]Feature{
1420 .has_v5te,1433 .v5te,
1421 }),1434 }),
1422 };1435 };
1423 result[@enumToInt(Feature.zcz)] = .{1436 result[@enumToInt(Feature.zcz)] = .{
...@@ -1480,8 +1493,8 @@ pub const cpu = struct {...@@ -1480,8 +1493,8 @@ pub const cpu = struct {
1480 .name = "arm1136jf_s",1493 .name = "arm1136jf_s",
1481 .llvm_name = "arm1136jf-s",1494 .llvm_name = "arm1136jf-s",
1482 .features = featureSet(&[_]Feature{1495 .features = featureSet(&[_]Feature{
1483 .v6,
1484 .slowfpvmlx,1496 .slowfpvmlx,
1497 .v6,
1485 .vfp2,1498 .vfp2,
1486 }),1499 }),
1487 };1500 };
...@@ -1496,8 +1509,8 @@ pub const cpu = struct {...@@ -1496,8 +1509,8 @@ pub const cpu = struct {
1496 .name = "arm1156t2f_s",1509 .name = "arm1156t2f_s",
1497 .llvm_name = "arm1156t2f-s",1510 .llvm_name = "arm1156t2f-s",
1498 .features = featureSet(&[_]Feature{1511 .features = featureSet(&[_]Feature{
1499 .v6t2,
1500 .slowfpvmlx,1512 .slowfpvmlx,
1513 .v6t2,
1501 .vfp2,1514 .vfp2,
1502 }),1515 }),
1503 };1516 };
...@@ -1519,8 +1532,8 @@ pub const cpu = struct {...@@ -1519,8 +1532,8 @@ pub const cpu = struct {
1519 .name = "arm1176jzf_s",1532 .name = "arm1176jzf_s",
1520 .llvm_name = "arm1176jzf-s",1533 .llvm_name = "arm1176jzf-s",
1521 .features = featureSet(&[_]Feature{1534 .features = featureSet(&[_]Feature{
1522 .v6kz,
1523 .slowfpvmlx,1535 .slowfpvmlx,
1536 .v6kz,
1524 .vfp2,1537 .vfp2,
1525 }),1538 }),
1526 };1539 };
...@@ -1654,11 +1667,11 @@ pub const cpu = struct {...@@ -1654,11 +1667,11 @@ pub const cpu = struct {
1654 .name = "cortex_a12",1667 .name = "cortex_a12",
1655 .llvm_name = "cortex-a12",1668 .llvm_name = "cortex-a12",
1656 .features = featureSet(&[_]Feature{1669 .features = featureSet(&[_]Feature{
1657 .v7a,
1658 .avoid_partial_cpsr,1670 .avoid_partial_cpsr,
1659 .mp,1671 .mp,
1660 .ret_addr_stack,1672 .ret_addr_stack,
1661 .trustzone,1673 .trustzone,
1674 .v7a,
1662 .vfp4,1675 .vfp4,
1663 .virtualization,1676 .virtualization,
1664 .vmlx_forwarding,1677 .vmlx_forwarding,
...@@ -1668,14 +1681,13 @@ pub const cpu = struct {...@@ -1668,14 +1681,13 @@ pub const cpu = struct {
1668 .name = "cortex_a15",1681 .name = "cortex_a15",
1669 .llvm_name = "cortex-a15",1682 .llvm_name = "cortex-a15",
1670 .features = featureSet(&[_]Feature{1683 .features = featureSet(&[_]Feature{
1671 .v7a,
1672 .avoid_partial_cpsr,1684 .avoid_partial_cpsr,
1673 .dont_widen_vmovs,
1674 .mp,1685 .mp,
1675 .muxed_units,1686 .muxed_units,
1676 .ret_addr_stack,1687 .ret_addr_stack,
1677 .splat_vfp_neon,1688 .splat_vfp_neon,
1678 .trustzone,1689 .trustzone,
1690 .v7a,
1679 .vfp4,1691 .vfp4,
1680 .virtualization,1692 .virtualization,
1681 .vldn_align,1693 .vldn_align,
...@@ -1685,11 +1697,11 @@ pub const cpu = struct {...@@ -1685,11 +1697,11 @@ pub const cpu = struct {
1685 .name = "cortex_a17",1697 .name = "cortex_a17",
1686 .llvm_name = "cortex-a17",1698 .llvm_name = "cortex-a17",
1687 .features = featureSet(&[_]Feature{1699 .features = featureSet(&[_]Feature{
1688 .v7a,
1689 .avoid_partial_cpsr,1700 .avoid_partial_cpsr,
1690 .mp,1701 .mp,
1691 .ret_addr_stack,1702 .ret_addr_stack,
1692 .trustzone,1703 .trustzone,
1704 .v7a,
1693 .vfp4,1705 .vfp4,
1694 .virtualization,1706 .virtualization,
1695 .vmlx_forwarding,1707 .vmlx_forwarding,
...@@ -1699,10 +1711,6 @@ pub const cpu = struct {...@@ -1699,10 +1711,6 @@ pub const cpu = struct {
1699 .name = "cortex_a32",1711 .name = "cortex_a32",
1700 .llvm_name = "cortex-a32",1712 .llvm_name = "cortex-a32",
1701 .features = featureSet(&[_]Feature{1713 .features = featureSet(&[_]Feature{
1702 .crc,
1703 .crypto,
1704 .hwdiv,
1705 .hwdiv_arm,
1706 .v8a,1714 .v8a,
1707 }),1715 }),
1708 };1716 };
...@@ -1710,10 +1718,6 @@ pub const cpu = struct {...@@ -1710,10 +1718,6 @@ pub const cpu = struct {
1710 .name = "cortex_a35",1718 .name = "cortex_a35",
1711 .llvm_name = "cortex-a35",1719 .llvm_name = "cortex-a35",
1712 .features = featureSet(&[_]Feature{1720 .features = featureSet(&[_]Feature{
1713 .crc,
1714 .crypto,
1715 .hwdiv,
1716 .hwdiv_arm,
1717 .v8a,1721 .v8a,
1718 }),1722 }),
1719 };1723 };
...@@ -1721,13 +1725,13 @@ pub const cpu = struct {...@@ -1721,13 +1725,13 @@ pub const cpu = struct {
1721 .name = "cortex_a5",1725 .name = "cortex_a5",
1722 .llvm_name = "cortex-a5",1726 .llvm_name = "cortex-a5",
1723 .features = featureSet(&[_]Feature{1727 .features = featureSet(&[_]Feature{
1724 .v7a,
1725 .mp,1728 .mp,
1726 .ret_addr_stack,1729 .ret_addr_stack,
1727 .slow_fp_brcc,1730 .slow_fp_brcc,
1728 .slowfpvfmx,1731 .slowfpvfmx,
1729 .slowfpvmlx,1732 .slowfpvmlx,
1730 .trustzone,1733 .trustzone,
1734 .v7a,
1731 .vfp4,1735 .vfp4,
1732 .vmlx_forwarding,1736 .vmlx_forwarding,
1733 }),1737 }),
...@@ -1736,49 +1740,39 @@ pub const cpu = struct {...@@ -1736,49 +1740,39 @@ pub const cpu = struct {
1736 .name = "cortex_a53",1740 .name = "cortex_a53",
1737 .llvm_name = "cortex-a53",1741 .llvm_name = "cortex-a53",
1738 .features = featureSet(&[_]Feature{1742 .features = featureSet(&[_]Feature{
1739 .v8a,
1740 .crc,
1741 .crypto,
1742 .fpao,1743 .fpao,
1743 .hwdiv,1744 .v8a,
1744 .hwdiv_arm,
1745 }),1745 }),
1746 };1746 };
1747 pub const cortex_a55 = CpuModel{1747 pub const cortex_a55 = CpuModel{
1748 .name = "cortex_a55",1748 .name = "cortex_a55",
1749 .llvm_name = "cortex-a55",1749 .llvm_name = "cortex-a55",
1750 .features = featureSet(&[_]Feature{1750 .features = featureSet(&[_]Feature{
1751 .v8_2a,
1752 .dotprod,1751 .dotprod,
1753 .hwdiv,1752 .v8_2a,
1754 .hwdiv_arm,
1755 }),1753 }),
1756 };1754 };
1757 pub const cortex_a57 = CpuModel{1755 pub const cortex_a57 = CpuModel{
1758 .name = "cortex_a57",1756 .name = "cortex_a57",
1759 .llvm_name = "cortex-a57",1757 .llvm_name = "cortex-a57",
1760 .features = featureSet(&[_]Feature{1758 .features = featureSet(&[_]Feature{
1761 .v8a,
1762 .avoid_partial_cpsr,1759 .avoid_partial_cpsr,
1763 .cheap_predicable_cpsr,1760 .cheap_predicable_cpsr,
1764 .crc,
1765 .crypto,
1766 .fpao,1761 .fpao,
1767 .hwdiv,1762 .v8a,
1768 .hwdiv_arm,
1769 }),1763 }),
1770 };1764 };
1771 pub const cortex_a7 = CpuModel{1765 pub const cortex_a7 = CpuModel{
1772 .name = "cortex_a7",1766 .name = "cortex_a7",
1773 .llvm_name = "cortex-a7",1767 .llvm_name = "cortex-a7",
1774 .features = featureSet(&[_]Feature{1768 .features = featureSet(&[_]Feature{
1775 .v7a,
1776 .mp,1769 .mp,
1777 .ret_addr_stack,1770 .ret_addr_stack,
1778 .slow_fp_brcc,1771 .slow_fp_brcc,
1779 .slowfpvfmx,1772 .slowfpvfmx,
1780 .slowfpvmlx,1773 .slowfpvmlx,
1781 .trustzone,1774 .trustzone,
1775 .v7a,
1782 .vfp4,1776 .vfp4,
1783 .virtualization,1777 .virtualization,
1784 .vmlx_forwarding,1778 .vmlx_forwarding,
...@@ -1790,10 +1784,6 @@ pub const cpu = struct {...@@ -1790,10 +1784,6 @@ pub const cpu = struct {
1790 .llvm_name = "cortex-a72",1784 .llvm_name = "cortex-a72",
1791 .features = featureSet(&[_]Feature{1785 .features = featureSet(&[_]Feature{
1792 .v8a,1786 .v8a,
1793 .crc,
1794 .crypto,
1795 .hwdiv,
1796 .hwdiv_arm,
1797 }),1787 }),
1798 };1788 };
1799 pub const cortex_a73 = CpuModel{1789 pub const cortex_a73 = CpuModel{
...@@ -1801,20 +1791,14 @@ pub const cpu = struct {...@@ -1801,20 +1791,14 @@ pub const cpu = struct {
1801 .llvm_name = "cortex-a73",1791 .llvm_name = "cortex-a73",
1802 .features = featureSet(&[_]Feature{1792 .features = featureSet(&[_]Feature{
1803 .v8a,1793 .v8a,
1804 .crc,
1805 .crypto,
1806 .hwdiv,
1807 .hwdiv_arm,
1808 }),1794 }),
1809 };1795 };
1810 pub const cortex_a75 = CpuModel{1796 pub const cortex_a75 = CpuModel{
1811 .name = "cortex_a75",1797 .name = "cortex_a75",
1812 .llvm_name = "cortex-a75",1798 .llvm_name = "cortex-a75",
1813 .features = featureSet(&[_]Feature{1799 .features = featureSet(&[_]Feature{
1814 .v8_2a,
1815 .dotprod,1800 .dotprod,
1816 .hwdiv,1801 .v8_2a,
1817 .hwdiv_arm,
1818 }),1802 }),
1819 };1803 };
1820 pub const cortex_a76 = CpuModel{1804 pub const cortex_a76 = CpuModel{
...@@ -1822,13 +1806,9 @@ pub const cpu = struct {...@@ -1822,13 +1806,9 @@ pub const cpu = struct {
1822 .llvm_name = "cortex-a76",1806 .llvm_name = "cortex-a76",
1823 .features = featureSet(&[_]Feature{1807 .features = featureSet(&[_]Feature{
1824 .a76,1808 .a76,
1825 .v8_2a,
1826 .crc,
1827 .crypto,
1828 .dotprod,1809 .dotprod,
1829 .fullfp16,1810 .fullfp16,
1830 .hwdiv,1811 .v8_2a,
1831 .hwdiv_arm,
1832 }),1812 }),
1833 };1813 };
1834 pub const cortex_a76ae = CpuModel{1814 pub const cortex_a76ae = CpuModel{
...@@ -1836,52 +1816,49 @@ pub const cpu = struct {...@@ -1836,52 +1816,49 @@ pub const cpu = struct {
1836 .llvm_name = "cortex-a76ae",1816 .llvm_name = "cortex-a76ae",
1837 .features = featureSet(&[_]Feature{1817 .features = featureSet(&[_]Feature{
1838 .a76,1818 .a76,
1839 .v8_2a,
1840 .crc,
1841 .crypto,
1842 .dotprod,1819 .dotprod,
1843 .fullfp16,1820 .fullfp16,
1844 .hwdiv,1821 .v8_2a,
1845 .hwdiv_arm,
1846 }),1822 }),
1847 };1823 };
1848 pub const cortex_a77 = CpuModel{1824 pub const cortex_a77 = CpuModel{
1849 .name = "cortex_a77",1825 .name = "cortex_a77",
1850 .llvm_name = "cortex-a77",1826 .llvm_name = "cortex-a77",
1851 .features = featureSet(&[_]Feature{1827 .features = featureSet(&[_]Feature{
1852 .v8_2a,
1853 .crc,
1854 .crypto,
1855 .dotprod,1828 .dotprod,
1856 .fullfp16,1829 .fullfp16,
1857 .hwdiv,1830 .v8_2a,
1858 .hwdiv_arm,
1859 }),1831 }),
1860 };1832 };
1861 pub const cortex_a78 = CpuModel{1833 pub const cortex_a78 = CpuModel{
1862 .name = "cortex_a78",1834 .name = "cortex_a78",
1863 .llvm_name = "cortex-a78",1835 .llvm_name = "cortex-a78",
1864 .features = featureSet(&[_]Feature{1836 .features = featureSet(&[_]Feature{
1837 .dotprod,
1838 .fullfp16,
1865 .v8_2a,1839 .v8_2a,
1866 .crc,1840 }),
1867 .crypto,1841 };
1842 pub const cortex_a78c = CpuModel{
1843 .name = "cortex_a78c",
1844 .llvm_name = "cortex-a78c",
1845 .features = featureSet(&[_]Feature{
1868 .dotprod,1846 .dotprod,
1869 .fullfp16,1847 .fullfp16,
1870 .hwdiv,1848 .v8_2a,
1871 .hwdiv_arm,
1872 }),1849 }),
1873 };1850 };
1874 pub const cortex_a8 = CpuModel{1851 pub const cortex_a8 = CpuModel{
1875 .name = "cortex_a8",1852 .name = "cortex_a8",
1876 .llvm_name = "cortex-a8",1853 .llvm_name = "cortex-a8",
1877 .features = featureSet(&[_]Feature{1854 .features = featureSet(&[_]Feature{
1878 .v7a,
1879 .nonpipelined_vfp,1855 .nonpipelined_vfp,
1880 .ret_addr_stack,1856 .ret_addr_stack,
1881 .slow_fp_brcc,1857 .slow_fp_brcc,
1882 .slowfpvfmx,1858 .slowfpvfmx,
1883 .slowfpvmlx,1859 .slowfpvmlx,
1884 .trustzone,1860 .trustzone,
1861 .v7a,
1885 .vmlx_forwarding,1862 .vmlx_forwarding,
1886 .vmlx_hazards,1863 .vmlx_hazards,
1887 }),1864 }),
...@@ -1890,7 +1867,6 @@ pub const cpu = struct {...@@ -1890,7 +1867,6 @@ pub const cpu = struct {
1890 .name = "cortex_a9",1867 .name = "cortex_a9",
1891 .llvm_name = "cortex-a9",1868 .llvm_name = "cortex-a9",
1892 .features = featureSet(&[_]Feature{1869 .features = featureSet(&[_]Feature{
1893 .v7a,
1894 .avoid_partial_cpsr,1870 .avoid_partial_cpsr,
1895 .expand_fp_mlx,1871 .expand_fp_mlx,
1896 .fp16,1872 .fp16,
...@@ -1900,6 +1876,7 @@ pub const cpu = struct {...@@ -1900,6 +1876,7 @@ pub const cpu = struct {
1900 .prefer_vmovsr,1876 .prefer_vmovsr,
1901 .ret_addr_stack,1877 .ret_addr_stack,
1902 .trustzone,1878 .trustzone,
1879 .v7a,
1903 .vldn_align,1880 .vldn_align,
1904 .vmlx_forwarding,1881 .vmlx_forwarding,
1905 .vmlx_hazards,1882 .vmlx_hazards,
...@@ -1930,26 +1907,25 @@ pub const cpu = struct {...@@ -1930,26 +1907,25 @@ pub const cpu = struct {
1930 .name = "cortex_m23",1907 .name = "cortex_m23",
1931 .llvm_name = "cortex-m23",1908 .llvm_name = "cortex-m23",
1932 .features = featureSet(&[_]Feature{1909 .features = featureSet(&[_]Feature{
1933 .v8m,
1934 .no_movt,1910 .no_movt,
1911 .v8m,
1935 }),1912 }),
1936 };1913 };
1937 pub const cortex_m3 = CpuModel{1914 pub const cortex_m3 = CpuModel{
1938 .name = "cortex_m3",1915 .name = "cortex_m3",
1939 .llvm_name = "cortex-m3",1916 .llvm_name = "cortex-m3",
1940 .features = featureSet(&[_]Feature{1917 .features = featureSet(&[_]Feature{
1941 .v7m,
1942 .loop_align,1918 .loop_align,
1943 .m3,1919 .m3,
1944 .no_branch_predictor,1920 .no_branch_predictor,
1945 .use_misched,1921 .use_misched,
1922 .v7m,
1946 }),1923 }),
1947 };1924 };
1948 pub const cortex_m33 = CpuModel{1925 pub const cortex_m33 = CpuModel{
1949 .name = "cortex_m33",1926 .name = "cortex_m33",
1950 .llvm_name = "cortex-m33",1927 .llvm_name = "cortex-m33",
1951 .features = featureSet(&[_]Feature{1928 .features = featureSet(&[_]Feature{
1952 .v8m_main,
1953 .dsp,1929 .dsp,
1954 .fp_armv8d16sp,1930 .fp_armv8d16sp,
1955 .loop_align,1931 .loop_align,
...@@ -1957,13 +1933,13 @@ pub const cpu = struct {...@@ -1957,13 +1933,13 @@ pub const cpu = struct {
1957 .slowfpvfmx,1933 .slowfpvfmx,
1958 .slowfpvmlx,1934 .slowfpvmlx,
1959 .use_misched,1935 .use_misched,
1936 .v8m_main,
1960 }),1937 }),
1961 };1938 };
1962 pub const cortex_m35p = CpuModel{1939 pub const cortex_m35p = CpuModel{
1963 .name = "cortex_m35p",1940 .name = "cortex_m35p",
1964 .llvm_name = "cortex-m35p",1941 .llvm_name = "cortex-m35p",
1965 .features = featureSet(&[_]Feature{1942 .features = featureSet(&[_]Feature{
1966 .v8m_main,
1967 .dsp,1943 .dsp,
1968 .fp_armv8d16sp,1944 .fp_armv8d16sp,
1969 .loop_align,1945 .loop_align,
...@@ -1971,18 +1947,19 @@ pub const cpu = struct {...@@ -1971,18 +1947,19 @@ pub const cpu = struct {
1971 .slowfpvfmx,1947 .slowfpvfmx,
1972 .slowfpvmlx,1948 .slowfpvmlx,
1973 .use_misched,1949 .use_misched,
1950 .v8m_main,
1974 }),1951 }),
1975 };1952 };
1976 pub const cortex_m4 = CpuModel{1953 pub const cortex_m4 = CpuModel{
1977 .name = "cortex_m4",1954 .name = "cortex_m4",
1978 .llvm_name = "cortex-m4",1955 .llvm_name = "cortex-m4",
1979 .features = featureSet(&[_]Feature{1956 .features = featureSet(&[_]Feature{
1980 .v7em,
1981 .loop_align,1957 .loop_align,
1982 .no_branch_predictor,1958 .no_branch_predictor,
1983 .slowfpvfmx,1959 .slowfpvfmx,
1984 .slowfpvmlx,1960 .slowfpvmlx,
1985 .use_misched,1961 .use_misched,
1962 .v7em,
1986 .vfp4d16sp,1963 .vfp4d16sp,
1987 }),1964 }),
1988 };1965 };
...@@ -1990,45 +1967,45 @@ pub const cpu = struct {...@@ -1990,45 +1967,45 @@ pub const cpu = struct {
1990 .name = "cortex_m55",1967 .name = "cortex_m55",
1991 .llvm_name = "cortex-m55",1968 .llvm_name = "cortex-m55",
1992 .features = featureSet(&[_]Feature{1969 .features = featureSet(&[_]Feature{
1993 .v8_1m_main,
1994 .dsp,
1995 .fp_armv8d16,1970 .fp_armv8d16,
1996 .loop_align,1971 .loop_align,
1997 .mve_fp,1972 .mve_fp,
1998 .no_branch_predictor,1973 .no_branch_predictor,
1999 .slowfpvmlx,1974 .slowfpvmlx,
2000 .use_misched,1975 .use_misched,
1976 .v8_1m_main,
2001 }),1977 }),
2002 };1978 };
2003 pub const cortex_m7 = CpuModel{1979 pub const cortex_m7 = CpuModel{
2004 .name = "cortex_m7",1980 .name = "cortex_m7",
2005 .llvm_name = "cortex-m7",1981 .llvm_name = "cortex-m7",
2006 .features = featureSet(&[_]Feature{1982 .features = featureSet(&[_]Feature{
2007 .v7em,
2008 .fp_armv8d16,1983 .fp_armv8d16,
1984 .use_misched,
1985 .v7em,
2009 }),1986 }),
2010 };1987 };
2011 pub const cortex_r4 = CpuModel{1988 pub const cortex_r4 = CpuModel{
2012 .name = "cortex_r4",1989 .name = "cortex_r4",
2013 .llvm_name = "cortex-r4",1990 .llvm_name = "cortex-r4",
2014 .features = featureSet(&[_]Feature{1991 .features = featureSet(&[_]Feature{
2015 .v7r,
2016 .avoid_partial_cpsr,1992 .avoid_partial_cpsr,
2017 .r4,1993 .r4,
2018 .ret_addr_stack,1994 .ret_addr_stack,
1995 .v7r,
2019 }),1996 }),
2020 };1997 };
2021 pub const cortex_r4f = CpuModel{1998 pub const cortex_r4f = CpuModel{
2022 .name = "cortex_r4f",1999 .name = "cortex_r4f",
2023 .llvm_name = "cortex-r4f",2000 .llvm_name = "cortex-r4f",
2024 .features = featureSet(&[_]Feature{2001 .features = featureSet(&[_]Feature{
2025 .v7r,
2026 .avoid_partial_cpsr,2002 .avoid_partial_cpsr,
2027 .r4,2003 .r4,
2028 .ret_addr_stack,2004 .ret_addr_stack,
2029 .slow_fp_brcc,2005 .slow_fp_brcc,
2030 .slowfpvfmx,2006 .slowfpvfmx,
2031 .slowfpvmlx,2007 .slowfpvmlx,
2008 .v7r,
2032 .vfp3d16,2009 .vfp3d16,
2033 }),2010 }),
2034 };2011 };
...@@ -2036,13 +2013,13 @@ pub const cpu = struct {...@@ -2036,13 +2013,13 @@ pub const cpu = struct {
2036 .name = "cortex_r5",2013 .name = "cortex_r5",
2037 .llvm_name = "cortex-r5",2014 .llvm_name = "cortex-r5",
2038 .features = featureSet(&[_]Feature{2015 .features = featureSet(&[_]Feature{
2039 .v7r,
2040 .avoid_partial_cpsr,2016 .avoid_partial_cpsr,
2041 .hwdiv_arm,2017 .hwdiv_arm,
2042 .ret_addr_stack,2018 .ret_addr_stack,
2043 .slow_fp_brcc,2019 .slow_fp_brcc,
2044 .slowfpvfmx,2020 .slowfpvfmx,
2045 .slowfpvmlx,2021 .slowfpvmlx,
2022 .v7r,
2046 .vfp3d16,2023 .vfp3d16,
2047 }),2024 }),
2048 };2025 };
...@@ -2050,16 +2027,15 @@ pub const cpu = struct {...@@ -2050,16 +2027,15 @@ pub const cpu = struct {
2050 .name = "cortex_r52",2027 .name = "cortex_r52",
2051 .llvm_name = "cortex-r52",2028 .llvm_name = "cortex-r52",
2052 .features = featureSet(&[_]Feature{2029 .features = featureSet(&[_]Feature{
2053 .v8r,
2054 .fpao,2030 .fpao,
2055 .use_misched,2031 .use_misched,
2032 .v8r,
2056 }),2033 }),
2057 };2034 };
2058 pub const cortex_r7 = CpuModel{2035 pub const cortex_r7 = CpuModel{
2059 .name = "cortex_r7",2036 .name = "cortex_r7",
2060 .llvm_name = "cortex-r7",2037 .llvm_name = "cortex-r7",
2061 .features = featureSet(&[_]Feature{2038 .features = featureSet(&[_]Feature{
2062 .v7r,
2063 .avoid_partial_cpsr,2039 .avoid_partial_cpsr,
2064 .fp16,2040 .fp16,
2065 .hwdiv_arm,2041 .hwdiv_arm,
...@@ -2068,6 +2044,7 @@ pub const cpu = struct {...@@ -2068,6 +2044,7 @@ pub const cpu = struct {
2068 .slow_fp_brcc,2044 .slow_fp_brcc,
2069 .slowfpvfmx,2045 .slowfpvfmx,
2070 .slowfpvmlx,2046 .slowfpvmlx,
2047 .v7r,
2071 .vfp3d16,2048 .vfp3d16,
2072 }),2049 }),
2073 };2050 };
...@@ -2075,7 +2052,6 @@ pub const cpu = struct {...@@ -2075,7 +2052,6 @@ pub const cpu = struct {
2075 .name = "cortex_r8",2052 .name = "cortex_r8",
2076 .llvm_name = "cortex-r8",2053 .llvm_name = "cortex-r8",
2077 .features = featureSet(&[_]Feature{2054 .features = featureSet(&[_]Feature{
2078 .v7r,
2079 .avoid_partial_cpsr,2055 .avoid_partial_cpsr,
2080 .fp16,2056 .fp16,
2081 .hwdiv_arm,2057 .hwdiv_arm,
...@@ -2084,6 +2060,7 @@ pub const cpu = struct {...@@ -2084,6 +2060,7 @@ pub const cpu = struct {
2084 .slow_fp_brcc,2060 .slow_fp_brcc,
2085 .slowfpvfmx,2061 .slowfpvfmx,
2086 .slowfpvmlx,2062 .slowfpvmlx,
2063 .v7r,
2087 .vfp3d16,2064 .vfp3d16,
2088 }),2065 }),
2089 };2066 };
...@@ -2091,34 +2068,25 @@ pub const cpu = struct {...@@ -2091,34 +2068,25 @@ pub const cpu = struct {
2091 .name = "cortex_x1",2068 .name = "cortex_x1",
2092 .llvm_name = "cortex-x1",2069 .llvm_name = "cortex-x1",
2093 .features = featureSet(&[_]Feature{2070 .features = featureSet(&[_]Feature{
2094 .v8_2a,
2095 .crc,
2096 .crypto,
2097 .dotprod,2071 .dotprod,
2098 .fullfp16,2072 .fullfp16,
2099 .hwdiv,2073 .v8_2a,
2100 .hwdiv_arm,
2101 }),2074 }),
2102 };2075 };
2103 pub const cyclone = CpuModel{2076 pub const cyclone = CpuModel{
2104 .name = "cyclone",2077 .name = "cyclone",
2105 .llvm_name = "cyclone",2078 .llvm_name = "cyclone",
2106 .features = featureSet(&[_]Feature{2079 .features = featureSet(&[_]Feature{
2107 .v8a,
2108 .avoid_movs_shop,2080 .avoid_movs_shop,
2109 .avoid_partial_cpsr,2081 .avoid_partial_cpsr,
2110 .crypto,
2111 .disable_postra_scheduler,2082 .disable_postra_scheduler,
2112 .hwdiv,
2113 .hwdiv_arm,
2114 .mp,
2115 .neonfp,2083 .neonfp,
2116 .ret_addr_stack,2084 .ret_addr_stack,
2117 .slowfpvfmx,2085 .slowfpvfmx,
2118 .slowfpvmlx,2086 .slowfpvmlx,
2119 .swift,2087 .swift,
2120 .use_misched,2088 .use_misched,
2121 .vfp4,2089 .v8a,
2122 .zcz,2090 .zcz,
2123 }),2091 }),
2124 };2092 };
...@@ -2133,34 +2101,34 @@ pub const cpu = struct {...@@ -2133,34 +2101,34 @@ pub const cpu = struct {
2133 .name = "exynos_m1",2101 .name = "exynos_m1",
2134 .llvm_name = null,2102 .llvm_name = null,
2135 .features = featureSet(&[_]Feature{2103 .features = featureSet(&[_]Feature{
2136 .v8a,
2137 .exynos,2104 .exynos,
2105 .v8a,
2138 }),2106 }),
2139 };2107 };
2140 pub const exynos_m2 = CpuModel{2108 pub const exynos_m2 = CpuModel{
2141 .name = "exynos_m2",2109 .name = "exynos_m2",
2142 .llvm_name = null,2110 .llvm_name = null,
2143 .features = featureSet(&[_]Feature{2111 .features = featureSet(&[_]Feature{
2144 .v8a,
2145 .exynos,2112 .exynos,
2113 .v8a,
2146 }),2114 }),
2147 };2115 };
2148 pub const exynos_m3 = CpuModel{2116 pub const exynos_m3 = CpuModel{
2149 .name = "exynos_m3",2117 .name = "exynos_m3",
2150 .llvm_name = "exynos-m3",2118 .llvm_name = "exynos-m3",
2151 .features = featureSet(&[_]Feature{2119 .features = featureSet(&[_]Feature{
2152 .v8_2a,
2153 .exynos,2120 .exynos,
2121 .v8a,
2154 }),2122 }),
2155 };2123 };
2156 pub const exynos_m4 = CpuModel{2124 pub const exynos_m4 = CpuModel{
2157 .name = "exynos_m4",2125 .name = "exynos_m4",
2158 .llvm_name = "exynos-m4",2126 .llvm_name = "exynos-m4",
2159 .features = featureSet(&[_]Feature{2127 .features = featureSet(&[_]Feature{
2160 .v8_2a,
2161 .dotprod,2128 .dotprod,
2162 .exynos,2129 .exynos,
2163 .fullfp16,2130 .fullfp16,
2131 .v8_2a,
2164 }),2132 }),
2165 };2133 };
2166 pub const exynos_m5 = CpuModel{2134 pub const exynos_m5 = CpuModel{
...@@ -2190,7 +2158,6 @@ pub const cpu = struct {...@@ -2190,7 +2158,6 @@ pub const cpu = struct {
2190 .llvm_name = "krait",2158 .llvm_name = "krait",
2191 .features = featureSet(&[_]Feature{2159 .features = featureSet(&[_]Feature{
2192 .avoid_partial_cpsr,2160 .avoid_partial_cpsr,
2193 .fp16,
2194 .hwdiv,2161 .hwdiv,
2195 .hwdiv_arm,2162 .hwdiv_arm,
2196 .muxed_units,2163 .muxed_units,
...@@ -2205,10 +2172,6 @@ pub const cpu = struct {...@@ -2205,10 +2172,6 @@ pub const cpu = struct {
2205 .name = "kryo",2172 .name = "kryo",
2206 .llvm_name = "kryo",2173 .llvm_name = "kryo",
2207 .features = featureSet(&[_]Feature{2174 .features = featureSet(&[_]Feature{
2208 .crc,
2209 .crypto,
2210 .hwdiv,
2211 .hwdiv_arm,
2212 .v8a,2175 .v8a,
2213 }),2176 }),
2214 };2177 };
...@@ -2216,8 +2179,8 @@ pub const cpu = struct {...@@ -2216,8 +2179,8 @@ pub const cpu = struct {
2216 .name = "mpcore",2179 .name = "mpcore",
2217 .llvm_name = "mpcore",2180 .llvm_name = "mpcore",
2218 .features = featureSet(&[_]Feature{2181 .features = featureSet(&[_]Feature{
2219 .v6k,
2220 .slowfpvmlx,2182 .slowfpvmlx,
2183 .v6k,
2221 .vfp2,2184 .vfp2,
2222 }),2185 }),
2223 };2186 };
...@@ -2232,36 +2195,27 @@ pub const cpu = struct {...@@ -2232,36 +2195,27 @@ pub const cpu = struct {
2232 .name = "neoverse_n1",2195 .name = "neoverse_n1",
2233 .llvm_name = "neoverse-n1",2196 .llvm_name = "neoverse-n1",
2234 .features = featureSet(&[_]Feature{2197 .features = featureSet(&[_]Feature{
2235 .v8_2a,
2236 .crc,
2237 .crypto,
2238 .dotprod,2198 .dotprod,
2239 .hwdiv,2199 .v8_2a,
2240 .hwdiv_arm,
2241 }),2200 }),
2242 };2201 };
2243 pub const neoverse_n2 = CpuModel{2202 pub const neoverse_n2 = CpuModel{
2244 .name = "neoverse_n2",2203 .name = "neoverse_n2",
2245 .llvm_name = "neoverse-n2",2204 .llvm_name = "neoverse-n2",
2246 .features = featureSet(&[_]Feature{2205 .features = featureSet(&[_]Feature{
2247 .v8_5a,
2248 .bf16,2206 .bf16,
2249 .i8mm,2207 .i8mm,
2250 .perfmon,2208 .v8_5a,
2251 }),2209 }),
2252 };2210 };
2253 pub const neoverse_v1 = CpuModel{2211 pub const neoverse_v1 = CpuModel{
2254 .name = "neoverse_v1",2212 .name = "neoverse_v1",
2255 .llvm_name = "neoverse-v1",2213 .llvm_name = "neoverse-v1",
2256 .features = featureSet(&[_]Feature{2214 .features = featureSet(&[_]Feature{
2257 .v8_4a,
2258 .bf16,2215 .bf16,
2259 .crc,
2260 .crypto,
2261 .fullfp16,2216 .fullfp16,
2262 .hwdiv,
2263 .hwdiv_arm,
2264 .i8mm,2217 .i8mm,
2218 .v8_4a,
2265 }),2219 }),
2266 };2220 };
2267 pub const sc000 = CpuModel{2221 pub const sc000 = CpuModel{
...@@ -2275,10 +2229,10 @@ pub const cpu = struct {...@@ -2275,10 +2229,10 @@ pub const cpu = struct {
2275 .name = "sc300",2229 .name = "sc300",
2276 .llvm_name = "sc300",2230 .llvm_name = "sc300",
2277 .features = featureSet(&[_]Feature{2231 .features = featureSet(&[_]Feature{
2278 .v7m,
2279 .m3,2232 .m3,
2280 .no_branch_predictor,2233 .no_branch_predictor,
2281 .use_misched,2234 .use_misched,
2235 .v7m,
2282 }),2236 }),
2283 };2237 };
2284 pub const strongarm = CpuModel{2238 pub const strongarm = CpuModel{
...@@ -2313,7 +2267,6 @@ pub const cpu = struct {...@@ -2313,7 +2267,6 @@ pub const cpu = struct {
2313 .name = "swift",2267 .name = "swift",
2314 .llvm_name = "swift",2268 .llvm_name = "swift",
2315 .features = featureSet(&[_]Feature{2269 .features = featureSet(&[_]Feature{
2316 .v7a,
2317 .avoid_movs_shop,2270 .avoid_movs_shop,
2318 .avoid_partial_cpsr,2271 .avoid_partial_cpsr,
2319 .disable_postra_scheduler,2272 .disable_postra_scheduler,
...@@ -2332,6 +2285,7 @@ pub const cpu = struct {...@@ -2332,6 +2285,7 @@ pub const cpu = struct {
2332 .slowfpvmlx,2285 .slowfpvmlx,
2333 .swift,2286 .swift,
2334 .use_misched,2287 .use_misched,
2288 .v7a,
2335 .vfp4,2289 .vfp4,
2336 .vmlx_hazards,2290 .vmlx_hazards,
2337 .wide_stride_vfp,2291 .wide_stride_vfp,
tools/update_cpu_features.zig+352
...@@ -266,6 +266,358 @@ const llvm_targets = [_]LlvmTarget{...@@ -266,6 +266,358 @@ const llvm_targets = [_]LlvmTarget{
266 .llvm_name = "ARM",266 .llvm_name = "ARM",
267 .td_name = "ARM.td",267 .td_name = "ARM.td",
268 .branch_quota = 10000,268 .branch_quota = 10000,
269 .extra_cpus = &.{
270 .{
271 .llvm_name = "generic",
272 .zig_name = "baseline",
273 .features = &.{"v7a"},
274 },
275 .{
276 .llvm_name = null,
277 .zig_name = "exynos_m1",
278 .features = &.{ "v8a", "exynos" },
279 },
280 .{
281 .llvm_name = null,
282 .zig_name = "exynos_m2",
283 .features = &.{ "v8a", "exynos" },
284 },
285 },
286 .feature_overrides = &.{
287 .{
288 .llvm_name = "cortex-a78",
289 .flatten = true,
290 },
291 .{
292 .llvm_name = "r5",
293 .flatten = true,
294 },
295 .{
296 .llvm_name = "r52",
297 .flatten = true,
298 },
299 .{
300 .llvm_name = "r7",
301 .flatten = true,
302 },
303 .{
304 .llvm_name = "m7",
305 .flatten = true,
306 },
307 .{
308 .llvm_name = "krait",
309 .flatten = true,
310 },
311 .{
312 .llvm_name = "kryo",
313 .flatten = true,
314 },
315 .{
316 .llvm_name = "cortex-x1",
317 .flatten = true,
318 },
319 .{
320 .llvm_name = "neoverse-v1",
321 .flatten = true,
322 },
323 .{
324 .llvm_name = "a5",
325 .flatten = true,
326 },
327 .{
328 .llvm_name = "a7",
329 .flatten = true,
330 },
331 .{
332 .llvm_name = "a8",
333 .flatten = true,
334 },
335 .{
336 .llvm_name = "a9",
337 .flatten = true,
338 },
339 .{
340 .llvm_name = "a12",
341 .flatten = true,
342 },
343 .{
344 .llvm_name = "a15",
345 .flatten = true,
346 },
347 .{
348 .llvm_name = "a17",
349 .flatten = true,
350 },
351 .{
352 .llvm_name = "a32",
353 .flatten = true,
354 },
355 .{
356 .llvm_name = "a35",
357 .flatten = true,
358 },
359 .{
360 .llvm_name = "a53",
361 .flatten = true,
362 },
363 .{
364 .llvm_name = "a55",
365 .flatten = true,
366 },
367 .{
368 .llvm_name = "a57",
369 .flatten = true,
370 },
371 .{
372 .llvm_name = "a72",
373 .flatten = true,
374 },
375 .{
376 .llvm_name = "a73",
377 .flatten = true,
378 },
379 .{
380 .llvm_name = "a75",
381 .flatten = true,
382 },
383 .{
384 .llvm_name = "a77",
385 .flatten = true,
386 },
387 .{
388 .llvm_name = "a78c",
389 .flatten = true,
390 },
391 .{
392 .llvm_name = "armv2",
393 .zig_name = "v2",
394 .extra_deps = &.{"strict_align"},
395 },
396 .{
397 .llvm_name = "armv2a",
398 .zig_name = "v2a",
399 .extra_deps = &.{"strict_align"},
400 },
401 .{
402 .llvm_name = "armv3",
403 .zig_name = "v3",
404 .extra_deps = &.{"strict_align"},
405 },
406 .{
407 .llvm_name = "armv3m",
408 .zig_name = "v3m",
409 .extra_deps = &.{"strict_align"},
410 },
411 .{
412 .llvm_name = "armv4",
413 .zig_name = "v4",
414 .extra_deps = &.{"strict_align"},
415 },
416 .{
417 .llvm_name = "armv4t",
418 .zig_name = "v4t",
419 .extra_deps = &.{"strict_align"},
420 },
421 .{
422 .llvm_name = "armv5t",
423 .zig_name = "v5t",
424 .extra_deps = &.{"strict_align"},
425 },
426 .{
427 .llvm_name = "armv5te",
428 .zig_name = "v5te",
429 .extra_deps = &.{"strict_align"},
430 },
431 .{
432 .llvm_name = "armv5tej",
433 .zig_name = "v5tej",
434 .extra_deps = &.{"strict_align"},
435 },
436 .{
437 .llvm_name = "armv6",
438 .zig_name = "v6",
439 },
440 .{
441 .llvm_name = "armv6-m",
442 .zig_name = "v6m",
443 },
444 .{
445 .llvm_name = "armv6j",
446 .zig_name = "v6j",
447 },
448 .{
449 .llvm_name = "armv6k",
450 .zig_name = "v6k",
451 },
452 .{
453 .llvm_name = "armv6kz",
454 .zig_name = "v6kz",
455 },
456 .{
457 .llvm_name = "armv6s-m",
458 .zig_name = "v6sm",
459 },
460 .{
461 .llvm_name = "armv6t2",
462 .zig_name = "v6t2",
463 },
464 .{
465 .llvm_name = "armv7-a",
466 .zig_name = "v7a",
467 },
468 .{
469 .llvm_name = "armv7-m",
470 .zig_name = "v7m",
471 },
472 .{
473 .llvm_name = "armv7-r",
474 .zig_name = "v7r",
475 },
476 .{
477 .llvm_name = "armv7e-m",
478 .zig_name = "v7em",
479 },
480 .{
481 .llvm_name = "armv7k",
482 .zig_name = "v7k",
483 },
484 .{
485 .llvm_name = "armv7s",
486 .zig_name = "v7s",
487 },
488 .{
489 .llvm_name = "armv7ve",
490 .zig_name = "v7ve",
491 },
492 .{
493 .llvm_name = "armv8.1-a",
494 .zig_name = "v8_1a",
495 },
496 .{
497 .llvm_name = "armv8.1-m.main",
498 .zig_name = "v8_1m_main",
499 },
500 .{
501 .llvm_name = "armv8.2-a",
502 .zig_name = "v8_2a",
503 },
504 .{
505 .llvm_name = "armv8.3-a",
506 .zig_name = "v8_3a",
507 },
508 .{
509 .llvm_name = "armv8.4-a",
510 .zig_name = "v8_4a",
511 },
512 .{
513 .llvm_name = "armv8.5-a",
514 .zig_name = "v8_5a",
515 },
516 .{
517 .llvm_name = "armv8.6-a",
518 .zig_name = "v8_6a",
519 },
520 .{
521 .llvm_name = "armv8.7-a",
522 .zig_name = "v8_7a",
523 },
524 .{
525 .llvm_name = "armv8-a",
526 .zig_name = "v8a",
527 },
528 .{
529 .llvm_name = "armv8-m.base",
530 .zig_name = "v8m",
531 },
532 .{
533 .llvm_name = "armv8-m.main",
534 .zig_name = "v8m_main",
535 },
536 .{
537 .llvm_name = "armv8-r",
538 .zig_name = "v8r",
539 },
540 .{
541 .llvm_name = "v4t",
542 .zig_name = "has_v4t",
543 },
544 .{
545 .llvm_name = "v5t",
546 .zig_name = "has_v5t",
547 },
548 .{
549 .llvm_name = "v5te",
550 .zig_name = "has_v5te",
551 },
552 .{
553 .llvm_name = "v6",
554 .zig_name = "has_v6",
555 },
556 .{
557 .llvm_name = "v6k",
558 .zig_name = "has_v6k",
559 },
560 .{
561 .llvm_name = "v6m",
562 .zig_name = "has_v6m",
563 },
564 .{
565 .llvm_name = "v6t2",
566 .zig_name = "has_v6t2",
567 },
568 .{
569 .llvm_name = "v7",
570 .zig_name = "has_v7",
571 },
572 .{
573 .llvm_name = "v7clrex",
574 .zig_name = "has_v7clrex",
575 },
576 .{
577 .llvm_name = "v8",
578 .zig_name = "has_v8",
579 },
580 .{
581 .llvm_name = "v8m",
582 .zig_name = "has_v8m",
583 },
584 .{
585 .llvm_name = "v8m.main",
586 .zig_name = "has_v8m_main",
587 },
588 .{
589 .llvm_name = "v8.1a",
590 .zig_name = "has_v8_1a",
591 },
592 .{
593 .llvm_name = "v8.1m.main",
594 .zig_name = "has_v8_1m_main",
595 },
596 .{
597 .llvm_name = "v8.2a",
598 .zig_name = "has_v8_2a",
599 },
600 .{
601 .llvm_name = "v8.3a",
602 .zig_name = "has_v8_3a",
603 },
604 .{
605 .llvm_name = "v8.4a",
606 .zig_name = "has_v8_4a",
607 },
608 .{
609 .llvm_name = "v8.5a",
610 .zig_name = "has_v8_5a",
611 },
612 .{
613 .llvm_name = "v8.6a",
614 .zig_name = "has_v8_6a",
615 },
616 .{
617 .llvm_name = "v8.7a",
618 .zig_name = "has_v8_7a",
619 },
620 },
269 },621 },
270 .{622 .{
271 .zig_name = "avr",623 .zig_name = "avr",