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// SPDX-License-Identifier: MIT
2// Copyright (c) 2015-2021 Zig Contributors
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.
1//! This file is auto-generated by tools/update_cpu_features.zig.
2
63const std = @import("../std.zig");
74const CpuFeature = std.Target.Cpu.Feature;
85const CpuModel = std.Target.Cpu.Model;
......@@ -53,6 +50,8 @@ pub const Feature = enum {
5350 fullfp16,
5451 fuse_aes,
5552 fuse_literals,
53 harden_sls_blr,
54 harden_sls_retbr,
5655 has_v4t,
5756 has_v5t,
5857 has_v5te,
......@@ -62,6 +61,7 @@ pub const Feature = enum {
6261 has_v6t2,
6362 has_v7,
6463 has_v7clrex,
64 has_v8,
6565 has_v8_1a,
6666 has_v8_1m_main,
6767 has_v8_2a,
......@@ -69,7 +69,7 @@ pub const Feature = enum {
6969 has_v8_4a,
7070 has_v8_5a,
7171 has_v8_6a,
72 has_v8,
72 has_v8_7a,
7373 has_v8m,
7474 has_v8m_main,
7575 hwdiv,
......@@ -85,10 +85,10 @@ pub const Feature = enum {
8585 mp,
8686 muxed_units,
8787 mve,
88 mve_fp,
8988 mve1beat,
9089 mve2beat,
9190 mve4beat,
91 mve_fp,
9292 nacl_trap,
9393 neon,
9494 neon_fpmovs,
......@@ -148,10 +148,6 @@ pub const Feature = enum {
148148 v7r,
149149 v7s,
150150 v7ve,
151 v8a,
152 v8m,
153 v8m_main,
154 v8r,
155151 v8_1a,
156152 v8_1m_main,
157153 v8_2a,
......@@ -159,6 +155,11 @@ pub const Feature = enum {
159155 v8_4a,
160156 v8_5a,
161157 v8_6a,
158 v8_7a,
159 v8a,
160 v8m,
161 v8m_main,
162 v8r,
162163 vfp2,
163164 vfp2sp,
164165 vfp3,
......@@ -238,7 +239,7 @@ pub const all_features = blk: {
238239 .llvm_name = "cde",
239240 .description = "Support CDE instructions",
240241 .dependencies = featureSet(&[_]Feature{
241 .v8m_main,
242 .has_v8m_main,
242243 }),
243244 };
244245 result[@enumToInt(Feature.cdecp0)] = .{
......@@ -312,7 +313,6 @@ pub const all_features = blk: {
312313 .description = "Enable support for Cryptography extensions",
313314 .dependencies = featureSet(&[_]Feature{
314315 .aes,
315 .neon,
316316 .sha2,
317317 }),
318318 };
......@@ -419,7 +419,6 @@ pub const all_features = blk: {
419419 .description = "Enable ARMv8 FP with only 16 d-registers",
420420 .dependencies = featureSet(&[_]Feature{
421421 .fp_armv8d16sp,
422 .fp64,
423422 .vfp4d16,
424423 }),
425424 };
......@@ -434,7 +433,6 @@ pub const all_features = blk: {
434433 .llvm_name = "fp-armv8sp",
435434 .description = "Enable ARMv8 FP with no double precision",
436435 .dependencies = featureSet(&[_]Feature{
437 .d32,
438436 .fp_armv8d16sp,
439437 .vfp4sp,
440438 }),
......@@ -481,6 +479,16 @@ pub const all_features = blk: {
481479 .description = "CPU fuses literal generation operations",
482480 .dependencies = featureSet(&[_]Feature{}),
483481 };
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 };
484492 result[@enumToInt(Feature.has_v4t)] = .{
485493 .llvm_name = "v4t",
486494 .description = "Support ARM v4T instructions",
......@@ -525,18 +533,18 @@ pub const all_features = blk: {
525533 .llvm_name = "v6t2",
526534 .description = "Support ARM v6t2 instructions",
527535 .dependencies = featureSet(&[_]Feature{
528 .thumb2,
529536 .has_v6k,
530537 .has_v8m,
538 .thumb2,
531539 }),
532540 };
533541 result[@enumToInt(Feature.has_v7)] = .{
534542 .llvm_name = "v7",
535543 .description = "Support ARM v7 instructions",
536544 .dependencies = featureSet(&[_]Feature{
537 .perfmon,
538545 .has_v6t2,
539546 .has_v7clrex,
547 .perfmon,
540548 }),
541549 };
542550 result[@enumToInt(Feature.has_v7clrex)] = .{
......@@ -592,8 +600,8 @@ pub const all_features = blk: {
592600 .llvm_name = "v8.5a",
593601 .description = "Support ARM v8.5a instructions",
594602 .dependencies = featureSet(&[_]Feature{
595 .sb,
596603 .has_v8_4a,
604 .sb,
597605 }),
598606 };
599607 result[@enumToInt(Feature.has_v8_6a)] = .{
......@@ -601,8 +609,15 @@ pub const all_features = blk: {
601609 .description = "Support ARM v8.6a instructions",
602610 .dependencies = featureSet(&[_]Feature{
603611 .bf16,
604 .i8mm,
605612 .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,
606621 }),
607622 };
608623 result[@enumToInt(Feature.has_v8m)] = .{
......@@ -640,14 +655,14 @@ pub const all_features = blk: {
640655 .llvm_name = "iwmmxt",
641656 .description = "ARMv5te architecture",
642657 .dependencies = featureSet(&[_]Feature{
643 .has_v5te,
658 .v5te,
644659 }),
645660 };
646661 result[@enumToInt(Feature.iwmmxt2)] = .{
647662 .llvm_name = "iwmmxt2",
648663 .description = "ARMv5te architecture",
649664 .dependencies = featureSet(&[_]Feature{
650 .has_v5te,
665 .v5te,
651666 }),
652667 };
653668 result[@enumToInt(Feature.lob)] = .{
......@@ -695,15 +710,6 @@ pub const all_features = blk: {
695710 .has_v8_1m_main,
696711 }),
697712 };
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 };
707713 result[@enumToInt(Feature.mve1beat)] = .{
708714 .llvm_name = "mve1beat",
709715 .description = "Model MVE instructions as a 1 beat per tick architecture",
......@@ -719,6 +725,14 @@ pub const all_features = blk: {
719725 .description = "Model MVE instructions as a 4 beats per tick architecture",
720726 .dependencies = featureSet(&[_]Feature{}),
721727 };
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 };
722736 result[@enumToInt(Feature.nacl_trap)] = .{
723737 .llvm_name = "nacl-trap",
724738 .description = "NaCl trap",
......@@ -944,32 +958,32 @@ pub const all_features = blk: {
944958 .llvm_name = "armv4t",
945959 .description = "ARMv4t architecture",
946960 .dependencies = featureSet(&[_]Feature{
947 .strict_align,
948961 .has_v4t,
962 .strict_align,
949963 }),
950964 };
951965 result[@enumToInt(Feature.v5t)] = .{
952966 .llvm_name = "armv5t",
953967 .description = "ARMv5t architecture",
954968 .dependencies = featureSet(&[_]Feature{
955 .strict_align,
956969 .has_v5t,
970 .strict_align,
957971 }),
958972 };
959973 result[@enumToInt(Feature.v5te)] = .{
960974 .llvm_name = "armv5te",
961975 .description = "ARMv5te architecture",
962976 .dependencies = featureSet(&[_]Feature{
963 .strict_align,
964977 .has_v5te,
978 .strict_align,
965979 }),
966980 };
967981 result[@enumToInt(Feature.v5tej)] = .{
968982 .llvm_name = "armv5tej",
969983 .description = "ARMv5tej architecture",
970984 .dependencies = featureSet(&[_]Feature{
971 .strict_align,
972985 .has_v5te,
986 .strict_align,
973987 }),
974988 };
975989 result[@enumToInt(Feature.v6)] = .{
......@@ -980,18 +994,6 @@ pub const all_features = blk: {
980994 .has_v6,
981995 }),
982996 };
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 };
995997 result[@enumToInt(Feature.v6j)] = .{
996998 .llvm_name = "armv6j",
997999 .description = "ARMv7a architecture",
......@@ -1010,8 +1012,20 @@ pub const all_features = blk: {
10101012 .llvm_name = "armv6kz",
10111013 .description = "ARMv6kz architecture",
10121014 .dependencies = featureSet(&[_]Feature{
1013 .trustzone,
10141015 .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,
10151029 }),
10161030 };
10171031 result[@enumToInt(Feature.v6sm)] = .{
......@@ -1019,11 +1033,11 @@ pub const all_features = blk: {
10191033 .description = "ARMv6sm architecture",
10201034 .dependencies = featureSet(&[_]Feature{
10211035 .db,
1036 .has_v6m,
10221037 .mclass,
10231038 .noarm,
10241039 .strict_align,
10251040 .thumb_mode,
1026 .has_v6m,
10271041 }),
10281042 };
10291043 result[@enumToInt(Feature.v6t2)] = .{
......@@ -1041,53 +1055,51 @@ pub const all_features = blk: {
10411055 .aclass,
10421056 .db,
10431057 .dsp,
1044 .neon,
10451058 .has_v7,
1059 .neon,
10461060 }),
10471061 };
1048 result[@enumToInt(Feature.v7m)] = .{
1049 .llvm_name = "armv7-m",
1050 .description = "ARMv7m architecture",
1062 result[@enumToInt(Feature.v7em)] = .{
1063 .llvm_name = "armv7e-m",
1064 .description = "ARMv7em architecture",
10511065 .dependencies = featureSet(&[_]Feature{
10521066 .db,
1067 .dsp,
1068 .has_v7,
10531069 .hwdiv,
10541070 .mclass,
10551071 .noarm,
10561072 .thumb_mode,
1057 .thumb2,
1058 .has_v7,
10591073 }),
10601074 };
1061 result[@enumToInt(Feature.v7r)] = .{
1062 .llvm_name = "armv7-r",
1063 .description = "ARMv7r architecture",
1075 result[@enumToInt(Feature.v7k)] = .{
1076 .llvm_name = "armv7k",
1077 .description = "ARMv7a architecture",
10641078 .dependencies = featureSet(&[_]Feature{
1065 .db,
1066 .dsp,
1067 .hwdiv,
1068 .rclass,
1069 .has_v7,
1079 .v7a,
10701080 }),
10711081 };
1072 result[@enumToInt(Feature.v7em)] = .{
1073 .llvm_name = "armv7e-m",
1074 .description = "ARMv7em architecture",
1082 result[@enumToInt(Feature.v7m)] = .{
1083 .llvm_name = "armv7-m",
1084 .description = "ARMv7m architecture",
10751085 .dependencies = featureSet(&[_]Feature{
10761086 .db,
1077 .dsp,
1087 .has_v7,
10781088 .hwdiv,
10791089 .mclass,
10801090 .noarm,
10811091 .thumb_mode,
1082 .thumb2,
1083 .has_v7,
10841092 }),
10851093 };
1086 result[@enumToInt(Feature.v7k)] = .{
1087 .llvm_name = "armv7k",
1088 .description = "ARMv7a architecture",
1094 result[@enumToInt(Feature.v7r)] = .{
1095 .llvm_name = "armv7-r",
1096 .description = "ARMv7r architecture",
10891097 .dependencies = featureSet(&[_]Feature{
1090 .v7a,
1098 .db,
1099 .dsp,
1100 .has_v7,
1101 .hwdiv,
1102 .rclass,
10911103 }),
10921104 };
10931105 result[@enumToInt(Feature.v7s)] = .{
......@@ -1104,73 +1116,10 @@ pub const all_features = blk: {
11041116 .aclass,
11051117 .db,
11061118 .dsp,
1107 .mp,
1108 .neon,
1109 .trustzone,
11101119 .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,
11241120 .mp,
11251121 .neon,
11261122 .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,
11741123 .virtualization,
11751124 }),
11761125 };
......@@ -1184,10 +1133,9 @@ pub const all_features = blk: {
11841133 .db,
11851134 .dsp,
11861135 .fp_armv8,
1136 .has_v8_1a,
11871137 .mp,
1188 .neon,
11891138 .trustzone,
1190 .has_v8_1a,
11911139 .virtualization,
11921140 }),
11931141 };
......@@ -1198,13 +1146,13 @@ pub const all_features = blk: {
11981146 .@"8msecext",
11991147 .acquire_release,
12001148 .db,
1149 .has_v8_1m_main,
12011150 .hwdiv,
12021151 .lob,
12031152 .mclass,
12041153 .noarm,
12051154 .ras,
12061155 .thumb_mode,
1207 .has_v8_1m_main,
12081156 }),
12091157 };
12101158 result[@enumToInt(Feature.v8_2a)] = .{
......@@ -1217,11 +1165,10 @@ pub const all_features = blk: {
12171165 .db,
12181166 .dsp,
12191167 .fp_armv8,
1168 .has_v8_2a,
12201169 .mp,
1221 .neon,
12221170 .ras,
12231171 .trustzone,
1224 .has_v8_2a,
12251172 .virtualization,
12261173 }),
12271174 };
......@@ -1235,11 +1182,10 @@ pub const all_features = blk: {
12351182 .db,
12361183 .dsp,
12371184 .fp_armv8,
1185 .has_v8_3a,
12381186 .mp,
1239 .neon,
12401187 .ras,
12411188 .trustzone,
1242 .has_v8_3a,
12431189 .virtualization,
12441190 }),
12451191 };
......@@ -1251,14 +1197,12 @@ pub const all_features = blk: {
12511197 .crc,
12521198 .crypto,
12531199 .db,
1254 .dotprod,
12551200 .dsp,
12561201 .fp_armv8,
1202 .has_v8_4a,
12571203 .mp,
1258 .neon,
12591204 .ras,
12601205 .trustzone,
1261 .has_v8_4a,
12621206 .virtualization,
12631207 }),
12641208 };
......@@ -1270,14 +1214,12 @@ pub const all_features = blk: {
12701214 .crc,
12711215 .crypto,
12721216 .db,
1273 .dotprod,
12741217 .dsp,
12751218 .fp_armv8,
1219 .has_v8_5a,
12761220 .mp,
1277 .neon,
12781221 .ras,
12791222 .trustzone,
1280 .has_v8_5a,
12811223 .virtualization,
12821224 }),
12831225 };
......@@ -1289,14 +1231,91 @@ pub const all_features = blk: {
12891231 .crc,
12901232 .crypto,
12911233 .db,
1292 .dotprod,
12931234 .dsp,
12941235 .fp_armv8,
1236 .has_v8_6a,
12951237 .mp,
1296 .neon,
12971238 .ras,
12981239 .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,
13001319 .virtualization,
13011320 }),
13021321 };
......@@ -1327,7 +1346,6 @@ pub const all_features = blk: {
13271346 .llvm_name = "vfp3d16",
13281347 .description = "Enable VFP3 instructions with only 16 d-registers",
13291348 .dependencies = featureSet(&[_]Feature{
1330 .fp64,
13311349 .vfp2,
13321350 .vfp3d16sp,
13331351 }),
......@@ -1351,7 +1369,6 @@ pub const all_features = blk: {
13511369 .llvm_name = "vfp4",
13521370 .description = "Enable VFP4 instructions",
13531371 .dependencies = featureSet(&[_]Feature{
1354 .fp16,
13551372 .vfp3,
13561373 .vfp4d16,
13571374 .vfp4sp,
......@@ -1361,8 +1378,6 @@ pub const all_features = blk: {
13611378 .llvm_name = "vfp4d16",
13621379 .description = "Enable VFP4 instructions with only 16 d-registers",
13631380 .dependencies = featureSet(&[_]Feature{
1364 .fp16,
1365 .fp64,
13661381 .vfp3d16,
13671382 .vfp4d16sp,
13681383 }),
......@@ -1379,8 +1394,6 @@ pub const all_features = blk: {
13791394 .llvm_name = "vfp4sp",
13801395 .description = "Enable VFP4 instructions with no double precision",
13811396 .dependencies = featureSet(&[_]Feature{
1382 .d32,
1383 .fp16,
13841397 .vfp3sp,
13851398 .vfp4d16sp,
13861399 }),
......@@ -1417,7 +1430,7 @@ pub const all_features = blk: {
14171430 .llvm_name = "xscale",
14181431 .description = "ARMv5te architecture",
14191432 .dependencies = featureSet(&[_]Feature{
1420 .has_v5te,
1433 .v5te,
14211434 }),
14221435 };
14231436 result[@enumToInt(Feature.zcz)] = .{
......@@ -1480,8 +1493,8 @@ pub const cpu = struct {
14801493 .name = "arm1136jf_s",
14811494 .llvm_name = "arm1136jf-s",
14821495 .features = featureSet(&[_]Feature{
1483 .v6,
14841496 .slowfpvmlx,
1497 .v6,
14851498 .vfp2,
14861499 }),
14871500 };
......@@ -1496,8 +1509,8 @@ pub const cpu = struct {
14961509 .name = "arm1156t2f_s",
14971510 .llvm_name = "arm1156t2f-s",
14981511 .features = featureSet(&[_]Feature{
1499 .v6t2,
15001512 .slowfpvmlx,
1513 .v6t2,
15011514 .vfp2,
15021515 }),
15031516 };
......@@ -1519,8 +1532,8 @@ pub const cpu = struct {
15191532 .name = "arm1176jzf_s",
15201533 .llvm_name = "arm1176jzf-s",
15211534 .features = featureSet(&[_]Feature{
1522 .v6kz,
15231535 .slowfpvmlx,
1536 .v6kz,
15241537 .vfp2,
15251538 }),
15261539 };
......@@ -1654,11 +1667,11 @@ pub const cpu = struct {
16541667 .name = "cortex_a12",
16551668 .llvm_name = "cortex-a12",
16561669 .features = featureSet(&[_]Feature{
1657 .v7a,
16581670 .avoid_partial_cpsr,
16591671 .mp,
16601672 .ret_addr_stack,
16611673 .trustzone,
1674 .v7a,
16621675 .vfp4,
16631676 .virtualization,
16641677 .vmlx_forwarding,
......@@ -1668,14 +1681,13 @@ pub const cpu = struct {
16681681 .name = "cortex_a15",
16691682 .llvm_name = "cortex-a15",
16701683 .features = featureSet(&[_]Feature{
1671 .v7a,
16721684 .avoid_partial_cpsr,
1673 .dont_widen_vmovs,
16741685 .mp,
16751686 .muxed_units,
16761687 .ret_addr_stack,
16771688 .splat_vfp_neon,
16781689 .trustzone,
1690 .v7a,
16791691 .vfp4,
16801692 .virtualization,
16811693 .vldn_align,
......@@ -1685,11 +1697,11 @@ pub const cpu = struct {
16851697 .name = "cortex_a17",
16861698 .llvm_name = "cortex-a17",
16871699 .features = featureSet(&[_]Feature{
1688 .v7a,
16891700 .avoid_partial_cpsr,
16901701 .mp,
16911702 .ret_addr_stack,
16921703 .trustzone,
1704 .v7a,
16931705 .vfp4,
16941706 .virtualization,
16951707 .vmlx_forwarding,
......@@ -1699,10 +1711,6 @@ pub const cpu = struct {
16991711 .name = "cortex_a32",
17001712 .llvm_name = "cortex-a32",
17011713 .features = featureSet(&[_]Feature{
1702 .crc,
1703 .crypto,
1704 .hwdiv,
1705 .hwdiv_arm,
17061714 .v8a,
17071715 }),
17081716 };
......@@ -1710,10 +1718,6 @@ pub const cpu = struct {
17101718 .name = "cortex_a35",
17111719 .llvm_name = "cortex-a35",
17121720 .features = featureSet(&[_]Feature{
1713 .crc,
1714 .crypto,
1715 .hwdiv,
1716 .hwdiv_arm,
17171721 .v8a,
17181722 }),
17191723 };
......@@ -1721,13 +1725,13 @@ pub const cpu = struct {
17211725 .name = "cortex_a5",
17221726 .llvm_name = "cortex-a5",
17231727 .features = featureSet(&[_]Feature{
1724 .v7a,
17251728 .mp,
17261729 .ret_addr_stack,
17271730 .slow_fp_brcc,
17281731 .slowfpvfmx,
17291732 .slowfpvmlx,
17301733 .trustzone,
1734 .v7a,
17311735 .vfp4,
17321736 .vmlx_forwarding,
17331737 }),
......@@ -1736,49 +1740,39 @@ pub const cpu = struct {
17361740 .name = "cortex_a53",
17371741 .llvm_name = "cortex-a53",
17381742 .features = featureSet(&[_]Feature{
1739 .v8a,
1740 .crc,
1741 .crypto,
17421743 .fpao,
1743 .hwdiv,
1744 .hwdiv_arm,
1744 .v8a,
17451745 }),
17461746 };
17471747 pub const cortex_a55 = CpuModel{
17481748 .name = "cortex_a55",
17491749 .llvm_name = "cortex-a55",
17501750 .features = featureSet(&[_]Feature{
1751 .v8_2a,
17521751 .dotprod,
1753 .hwdiv,
1754 .hwdiv_arm,
1752 .v8_2a,
17551753 }),
17561754 };
17571755 pub const cortex_a57 = CpuModel{
17581756 .name = "cortex_a57",
17591757 .llvm_name = "cortex-a57",
17601758 .features = featureSet(&[_]Feature{
1761 .v8a,
17621759 .avoid_partial_cpsr,
17631760 .cheap_predicable_cpsr,
1764 .crc,
1765 .crypto,
17661761 .fpao,
1767 .hwdiv,
1768 .hwdiv_arm,
1762 .v8a,
17691763 }),
17701764 };
17711765 pub const cortex_a7 = CpuModel{
17721766 .name = "cortex_a7",
17731767 .llvm_name = "cortex-a7",
17741768 .features = featureSet(&[_]Feature{
1775 .v7a,
17761769 .mp,
17771770 .ret_addr_stack,
17781771 .slow_fp_brcc,
17791772 .slowfpvfmx,
17801773 .slowfpvmlx,
17811774 .trustzone,
1775 .v7a,
17821776 .vfp4,
17831777 .virtualization,
17841778 .vmlx_forwarding,
......@@ -1790,10 +1784,6 @@ pub const cpu = struct {
17901784 .llvm_name = "cortex-a72",
17911785 .features = featureSet(&[_]Feature{
17921786 .v8a,
1793 .crc,
1794 .crypto,
1795 .hwdiv,
1796 .hwdiv_arm,
17971787 }),
17981788 };
17991789 pub const cortex_a73 = CpuModel{
......@@ -1801,20 +1791,14 @@ pub const cpu = struct {
18011791 .llvm_name = "cortex-a73",
18021792 .features = featureSet(&[_]Feature{
18031793 .v8a,
1804 .crc,
1805 .crypto,
1806 .hwdiv,
1807 .hwdiv_arm,
18081794 }),
18091795 };
18101796 pub const cortex_a75 = CpuModel{
18111797 .name = "cortex_a75",
18121798 .llvm_name = "cortex-a75",
18131799 .features = featureSet(&[_]Feature{
1814 .v8_2a,
18151800 .dotprod,
1816 .hwdiv,
1817 .hwdiv_arm,
1801 .v8_2a,
18181802 }),
18191803 };
18201804 pub const cortex_a76 = CpuModel{
......@@ -1822,13 +1806,9 @@ pub const cpu = struct {
18221806 .llvm_name = "cortex-a76",
18231807 .features = featureSet(&[_]Feature{
18241808 .a76,
1825 .v8_2a,
1826 .crc,
1827 .crypto,
18281809 .dotprod,
18291810 .fullfp16,
1830 .hwdiv,
1831 .hwdiv_arm,
1811 .v8_2a,
18321812 }),
18331813 };
18341814 pub const cortex_a76ae = CpuModel{
......@@ -1836,52 +1816,49 @@ pub const cpu = struct {
18361816 .llvm_name = "cortex-a76ae",
18371817 .features = featureSet(&[_]Feature{
18381818 .a76,
1839 .v8_2a,
1840 .crc,
1841 .crypto,
18421819 .dotprod,
18431820 .fullfp16,
1844 .hwdiv,
1845 .hwdiv_arm,
1821 .v8_2a,
18461822 }),
18471823 };
18481824 pub const cortex_a77 = CpuModel{
18491825 .name = "cortex_a77",
18501826 .llvm_name = "cortex-a77",
18511827 .features = featureSet(&[_]Feature{
1852 .v8_2a,
1853 .crc,
1854 .crypto,
18551828 .dotprod,
18561829 .fullfp16,
1857 .hwdiv,
1858 .hwdiv_arm,
1830 .v8_2a,
18591831 }),
18601832 };
18611833 pub const cortex_a78 = CpuModel{
18621834 .name = "cortex_a78",
18631835 .llvm_name = "cortex-a78",
18641836 .features = featureSet(&[_]Feature{
1837 .dotprod,
1838 .fullfp16,
18651839 .v8_2a,
1866 .crc,
1867 .crypto,
1840 }),
1841 };
1842 pub const cortex_a78c = CpuModel{
1843 .name = "cortex_a78c",
1844 .llvm_name = "cortex-a78c",
1845 .features = featureSet(&[_]Feature{
18681846 .dotprod,
18691847 .fullfp16,
1870 .hwdiv,
1871 .hwdiv_arm,
1848 .v8_2a,
18721849 }),
18731850 };
18741851 pub const cortex_a8 = CpuModel{
18751852 .name = "cortex_a8",
18761853 .llvm_name = "cortex-a8",
18771854 .features = featureSet(&[_]Feature{
1878 .v7a,
18791855 .nonpipelined_vfp,
18801856 .ret_addr_stack,
18811857 .slow_fp_brcc,
18821858 .slowfpvfmx,
18831859 .slowfpvmlx,
18841860 .trustzone,
1861 .v7a,
18851862 .vmlx_forwarding,
18861863 .vmlx_hazards,
18871864 }),
......@@ -1890,7 +1867,6 @@ pub const cpu = struct {
18901867 .name = "cortex_a9",
18911868 .llvm_name = "cortex-a9",
18921869 .features = featureSet(&[_]Feature{
1893 .v7a,
18941870 .avoid_partial_cpsr,
18951871 .expand_fp_mlx,
18961872 .fp16,
......@@ -1900,6 +1876,7 @@ pub const cpu = struct {
19001876 .prefer_vmovsr,
19011877 .ret_addr_stack,
19021878 .trustzone,
1879 .v7a,
19031880 .vldn_align,
19041881 .vmlx_forwarding,
19051882 .vmlx_hazards,
......@@ -1930,26 +1907,25 @@ pub const cpu = struct {
19301907 .name = "cortex_m23",
19311908 .llvm_name = "cortex-m23",
19321909 .features = featureSet(&[_]Feature{
1933 .v8m,
19341910 .no_movt,
1911 .v8m,
19351912 }),
19361913 };
19371914 pub const cortex_m3 = CpuModel{
19381915 .name = "cortex_m3",
19391916 .llvm_name = "cortex-m3",
19401917 .features = featureSet(&[_]Feature{
1941 .v7m,
19421918 .loop_align,
19431919 .m3,
19441920 .no_branch_predictor,
19451921 .use_misched,
1922 .v7m,
19461923 }),
19471924 };
19481925 pub const cortex_m33 = CpuModel{
19491926 .name = "cortex_m33",
19501927 .llvm_name = "cortex-m33",
19511928 .features = featureSet(&[_]Feature{
1952 .v8m_main,
19531929 .dsp,
19541930 .fp_armv8d16sp,
19551931 .loop_align,
......@@ -1957,13 +1933,13 @@ pub const cpu = struct {
19571933 .slowfpvfmx,
19581934 .slowfpvmlx,
19591935 .use_misched,
1936 .v8m_main,
19601937 }),
19611938 };
19621939 pub const cortex_m35p = CpuModel{
19631940 .name = "cortex_m35p",
19641941 .llvm_name = "cortex-m35p",
19651942 .features = featureSet(&[_]Feature{
1966 .v8m_main,
19671943 .dsp,
19681944 .fp_armv8d16sp,
19691945 .loop_align,
......@@ -1971,18 +1947,19 @@ pub const cpu = struct {
19711947 .slowfpvfmx,
19721948 .slowfpvmlx,
19731949 .use_misched,
1950 .v8m_main,
19741951 }),
19751952 };
19761953 pub const cortex_m4 = CpuModel{
19771954 .name = "cortex_m4",
19781955 .llvm_name = "cortex-m4",
19791956 .features = featureSet(&[_]Feature{
1980 .v7em,
19811957 .loop_align,
19821958 .no_branch_predictor,
19831959 .slowfpvfmx,
19841960 .slowfpvmlx,
19851961 .use_misched,
1962 .v7em,
19861963 .vfp4d16sp,
19871964 }),
19881965 };
......@@ -1990,45 +1967,45 @@ pub const cpu = struct {
19901967 .name = "cortex_m55",
19911968 .llvm_name = "cortex-m55",
19921969 .features = featureSet(&[_]Feature{
1993 .v8_1m_main,
1994 .dsp,
19951970 .fp_armv8d16,
19961971 .loop_align,
19971972 .mve_fp,
19981973 .no_branch_predictor,
19991974 .slowfpvmlx,
20001975 .use_misched,
1976 .v8_1m_main,
20011977 }),
20021978 };
20031979 pub const cortex_m7 = CpuModel{
20041980 .name = "cortex_m7",
20051981 .llvm_name = "cortex-m7",
20061982 .features = featureSet(&[_]Feature{
2007 .v7em,
20081983 .fp_armv8d16,
1984 .use_misched,
1985 .v7em,
20091986 }),
20101987 };
20111988 pub const cortex_r4 = CpuModel{
20121989 .name = "cortex_r4",
20131990 .llvm_name = "cortex-r4",
20141991 .features = featureSet(&[_]Feature{
2015 .v7r,
20161992 .avoid_partial_cpsr,
20171993 .r4,
20181994 .ret_addr_stack,
1995 .v7r,
20191996 }),
20201997 };
20211998 pub const cortex_r4f = CpuModel{
20221999 .name = "cortex_r4f",
20232000 .llvm_name = "cortex-r4f",
20242001 .features = featureSet(&[_]Feature{
2025 .v7r,
20262002 .avoid_partial_cpsr,
20272003 .r4,
20282004 .ret_addr_stack,
20292005 .slow_fp_brcc,
20302006 .slowfpvfmx,
20312007 .slowfpvmlx,
2008 .v7r,
20322009 .vfp3d16,
20332010 }),
20342011 };
......@@ -2036,13 +2013,13 @@ pub const cpu = struct {
20362013 .name = "cortex_r5",
20372014 .llvm_name = "cortex-r5",
20382015 .features = featureSet(&[_]Feature{
2039 .v7r,
20402016 .avoid_partial_cpsr,
20412017 .hwdiv_arm,
20422018 .ret_addr_stack,
20432019 .slow_fp_brcc,
20442020 .slowfpvfmx,
20452021 .slowfpvmlx,
2022 .v7r,
20462023 .vfp3d16,
20472024 }),
20482025 };
......@@ -2050,16 +2027,15 @@ pub const cpu = struct {
20502027 .name = "cortex_r52",
20512028 .llvm_name = "cortex-r52",
20522029 .features = featureSet(&[_]Feature{
2053 .v8r,
20542030 .fpao,
20552031 .use_misched,
2032 .v8r,
20562033 }),
20572034 };
20582035 pub const cortex_r7 = CpuModel{
20592036 .name = "cortex_r7",
20602037 .llvm_name = "cortex-r7",
20612038 .features = featureSet(&[_]Feature{
2062 .v7r,
20632039 .avoid_partial_cpsr,
20642040 .fp16,
20652041 .hwdiv_arm,
......@@ -2068,6 +2044,7 @@ pub const cpu = struct {
20682044 .slow_fp_brcc,
20692045 .slowfpvfmx,
20702046 .slowfpvmlx,
2047 .v7r,
20712048 .vfp3d16,
20722049 }),
20732050 };
......@@ -2075,7 +2052,6 @@ pub const cpu = struct {
20752052 .name = "cortex_r8",
20762053 .llvm_name = "cortex-r8",
20772054 .features = featureSet(&[_]Feature{
2078 .v7r,
20792055 .avoid_partial_cpsr,
20802056 .fp16,
20812057 .hwdiv_arm,
......@@ -2084,6 +2060,7 @@ pub const cpu = struct {
20842060 .slow_fp_brcc,
20852061 .slowfpvfmx,
20862062 .slowfpvmlx,
2063 .v7r,
20872064 .vfp3d16,
20882065 }),
20892066 };
......@@ -2091,34 +2068,25 @@ pub const cpu = struct {
20912068 .name = "cortex_x1",
20922069 .llvm_name = "cortex-x1",
20932070 .features = featureSet(&[_]Feature{
2094 .v8_2a,
2095 .crc,
2096 .crypto,
20972071 .dotprod,
20982072 .fullfp16,
2099 .hwdiv,
2100 .hwdiv_arm,
2073 .v8_2a,
21012074 }),
21022075 };
21032076 pub const cyclone = CpuModel{
21042077 .name = "cyclone",
21052078 .llvm_name = "cyclone",
21062079 .features = featureSet(&[_]Feature{
2107 .v8a,
21082080 .avoid_movs_shop,
21092081 .avoid_partial_cpsr,
2110 .crypto,
21112082 .disable_postra_scheduler,
2112 .hwdiv,
2113 .hwdiv_arm,
2114 .mp,
21152083 .neonfp,
21162084 .ret_addr_stack,
21172085 .slowfpvfmx,
21182086 .slowfpvmlx,
21192087 .swift,
21202088 .use_misched,
2121 .vfp4,
2089 .v8a,
21222090 .zcz,
21232091 }),
21242092 };
......@@ -2133,34 +2101,34 @@ pub const cpu = struct {
21332101 .name = "exynos_m1",
21342102 .llvm_name = null,
21352103 .features = featureSet(&[_]Feature{
2136 .v8a,
21372104 .exynos,
2105 .v8a,
21382106 }),
21392107 };
21402108 pub const exynos_m2 = CpuModel{
21412109 .name = "exynos_m2",
21422110 .llvm_name = null,
21432111 .features = featureSet(&[_]Feature{
2144 .v8a,
21452112 .exynos,
2113 .v8a,
21462114 }),
21472115 };
21482116 pub const exynos_m3 = CpuModel{
21492117 .name = "exynos_m3",
21502118 .llvm_name = "exynos-m3",
21512119 .features = featureSet(&[_]Feature{
2152 .v8_2a,
21532120 .exynos,
2121 .v8a,
21542122 }),
21552123 };
21562124 pub const exynos_m4 = CpuModel{
21572125 .name = "exynos_m4",
21582126 .llvm_name = "exynos-m4",
21592127 .features = featureSet(&[_]Feature{
2160 .v8_2a,
21612128 .dotprod,
21622129 .exynos,
21632130 .fullfp16,
2131 .v8_2a,
21642132 }),
21652133 };
21662134 pub const exynos_m5 = CpuModel{
......@@ -2190,7 +2158,6 @@ pub const cpu = struct {
21902158 .llvm_name = "krait",
21912159 .features = featureSet(&[_]Feature{
21922160 .avoid_partial_cpsr,
2193 .fp16,
21942161 .hwdiv,
21952162 .hwdiv_arm,
21962163 .muxed_units,
......@@ -2205,10 +2172,6 @@ pub const cpu = struct {
22052172 .name = "kryo",
22062173 .llvm_name = "kryo",
22072174 .features = featureSet(&[_]Feature{
2208 .crc,
2209 .crypto,
2210 .hwdiv,
2211 .hwdiv_arm,
22122175 .v8a,
22132176 }),
22142177 };
......@@ -2216,8 +2179,8 @@ pub const cpu = struct {
22162179 .name = "mpcore",
22172180 .llvm_name = "mpcore",
22182181 .features = featureSet(&[_]Feature{
2219 .v6k,
22202182 .slowfpvmlx,
2183 .v6k,
22212184 .vfp2,
22222185 }),
22232186 };
......@@ -2232,36 +2195,27 @@ pub const cpu = struct {
22322195 .name = "neoverse_n1",
22332196 .llvm_name = "neoverse-n1",
22342197 .features = featureSet(&[_]Feature{
2235 .v8_2a,
2236 .crc,
2237 .crypto,
22382198 .dotprod,
2239 .hwdiv,
2240 .hwdiv_arm,
2199 .v8_2a,
22412200 }),
22422201 };
22432202 pub const neoverse_n2 = CpuModel{
22442203 .name = "neoverse_n2",
22452204 .llvm_name = "neoverse-n2",
22462205 .features = featureSet(&[_]Feature{
2247 .v8_5a,
22482206 .bf16,
22492207 .i8mm,
2250 .perfmon,
2208 .v8_5a,
22512209 }),
22522210 };
22532211 pub const neoverse_v1 = CpuModel{
22542212 .name = "neoverse_v1",
22552213 .llvm_name = "neoverse-v1",
22562214 .features = featureSet(&[_]Feature{
2257 .v8_4a,
22582215 .bf16,
2259 .crc,
2260 .crypto,
22612216 .fullfp16,
2262 .hwdiv,
2263 .hwdiv_arm,
22642217 .i8mm,
2218 .v8_4a,
22652219 }),
22662220 };
22672221 pub const sc000 = CpuModel{
......@@ -2275,10 +2229,10 @@ pub const cpu = struct {
22752229 .name = "sc300",
22762230 .llvm_name = "sc300",
22772231 .features = featureSet(&[_]Feature{
2278 .v7m,
22792232 .m3,
22802233 .no_branch_predictor,
22812234 .use_misched,
2235 .v7m,
22822236 }),
22832237 };
22842238 pub const strongarm = CpuModel{
......@@ -2313,7 +2267,6 @@ pub const cpu = struct {
23132267 .name = "swift",
23142268 .llvm_name = "swift",
23152269 .features = featureSet(&[_]Feature{
2316 .v7a,
23172270 .avoid_movs_shop,
23182271 .avoid_partial_cpsr,
23192272 .disable_postra_scheduler,
......@@ -2332,6 +2285,7 @@ pub const cpu = struct {
23322285 .slowfpvmlx,
23332286 .swift,
23342287 .use_misched,
2288 .v7a,
23352289 .vfp4,
23362290 .vmlx_hazards,
23372291 .wide_stride_vfp,
tools/update_cpu_features.zig+352
......@@ -266,6 +266,358 @@ const llvm_targets = [_]LlvmTarget{
266266 .llvm_name = "ARM",
267267 .td_name = "ARM.td",
268268 .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 },
269621 },
270622 .{
271623 .zig_name = "avr",