authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-02-19 18:12:06-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-02-19 18:12:06-05:00
log4c6f207aff482cf973218bbda1d28e6d2a619df5
tree1b071512502cdbff6d1e3aa50fc28f2da4e3dae9
parentc664692bdd62765ab444a79a8704d2161c1809f1
signaturelock-open Commit is signed but in an unrecognized format.

clean up arm CPU features

* remove "cpu features" that are actually just processors * rename `v8` to `v8a`. this matches the corresponding change to target/aarch64.zig * rename types in preparation for removing sub-architecture from `std.Target`. I have other files changed in my dirty working tree, but about to make some changes to arm.zig that I don't want batched with this commit.

1 files changed, 102 insertions(+), 231 deletions(-)

lib/std/target/arm.zig+102-231
...@@ -1,25 +1,11 @@...@@ -1,25 +1,11 @@
1const std = @import("../std.zig");1const std = @import("../std.zig");
2const Cpu = std.Target.Cpu;2const CpuFeature = std.Target.Cpu.Feature;
3const CpuModel = std.Target.Cpu.Model;
34
4pub const Feature = enum {5pub const Feature = enum {
5 @"32bit",6 @"32bit",
6 @"8msecext",7 @"8msecext",
7 a12,
8 a15,
9 a17,
10 a32,
11 a35,
12 a5,
13 a53,
14 a55,
15 a57,
16 a7,
17 a72,
18 a73,
19 a75,
20 a76,8 a76,
21 a8,
22 a9,
23 aclass,9 aclass,
24 acquire_release,10 acquire_release,
25 aes,11 aes,
...@@ -89,8 +75,6 @@ pub const Feature = enum {...@@ -89,8 +75,6 @@ pub const Feature = enum {
89 hwdiv_arm,75 hwdiv_arm,
90 iwmmxt,76 iwmmxt,
91 iwmmxt2,77 iwmmxt2,
92 krait,
93 kryo,
94 lob,78 lob,
95 long_calls,79 long_calls,
96 loop_align,80 loop_align,
...@@ -114,9 +98,6 @@ pub const Feature = enum {...@@ -114,9 +98,6 @@ pub const Feature = enum {
114 prefer_vmovsr,98 prefer_vmovsr,
115 prof_unpr,99 prof_unpr,
116 r4,100 r4,
117 r5,
118 r52,
119 r7,
120 ras,101 ras,
121 rclass,102 rclass,
122 read_tp_hard,103 read_tp_hard,
...@@ -148,7 +129,7 @@ pub const Feature = enum {...@@ -148,7 +129,7 @@ pub const Feature = enum {
148 v6t2,129 v6t2,
149 v7,130 v7,
150 v7clrex,131 v7clrex,
151 v8,132 v8a,
152 v8_1a,133 v8_1a,
153 v8_1m_main,134 v8_1m_main,
154 v8_2a,135 v8_2a,
...@@ -178,13 +159,13 @@ pub const Feature = enum {...@@ -178,13 +159,13 @@ pub const Feature = enum {
178 zcz,159 zcz,
179};160};
180161
181pub usingnamespace Cpu.Feature.feature_set_fns(Feature);162pub usingnamespace CpuFeature.feature_set_fns(Feature);
182163
183pub const all_features = blk: {164pub const all_features = blk: {
184 @setEvalBranchQuota(10000);165 @setEvalBranchQuota(10000);
185 const len = @typeInfo(Feature).Enum.fields.len;166 const len = @typeInfo(Feature).Enum.fields.len;
186 std.debug.assert(len <= Cpu.Feature.Set.needed_bit_count);167 std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
187 var result: [len]Cpu.Feature = undefined;168 var result: [len]CpuFeature = undefined;
188 result[@enumToInt(Feature.@"32bit")] = .{169 result[@enumToInt(Feature.@"32bit")] = .{
189 .llvm_name = "32bit",170 .llvm_name = "32bit",
190 .description = "Prefer 32-bit Thumb instrs",171 .description = "Prefer 32-bit Thumb instrs",
...@@ -195,86 +176,11 @@ pub const all_features = blk: {...@@ -195,86 +176,11 @@ pub const all_features = blk: {
195 .description = "Enable support for ARMv8-M Security Extensions",176 .description = "Enable support for ARMv8-M Security Extensions",
196 .dependencies = featureSet(&[_]Feature{}),177 .dependencies = featureSet(&[_]Feature{}),
197 };178 };
198 result[@enumToInt(Feature.a12)] = .{
199 .llvm_name = "a12",
200 .description = "Cortex-A12 ARM processors",
201 .dependencies = featureSet(&[_]Feature{}),
202 };
203 result[@enumToInt(Feature.a15)] = .{
204 .llvm_name = "a15",
205 .description = "Cortex-A15 ARM processors",
206 .dependencies = featureSet(&[_]Feature{}),
207 };
208 result[@enumToInt(Feature.a17)] = .{
209 .llvm_name = "a17",
210 .description = "Cortex-A17 ARM processors",
211 .dependencies = featureSet(&[_]Feature{}),
212 };
213 result[@enumToInt(Feature.a32)] = .{
214 .llvm_name = "a32",
215 .description = "Cortex-A32 ARM processors",
216 .dependencies = featureSet(&[_]Feature{}),
217 };
218 result[@enumToInt(Feature.a35)] = .{
219 .llvm_name = "a35",
220 .description = "Cortex-A35 ARM processors",
221 .dependencies = featureSet(&[_]Feature{}),
222 };
223 result[@enumToInt(Feature.a5)] = .{
224 .llvm_name = "a5",
225 .description = "Cortex-A5 ARM processors",
226 .dependencies = featureSet(&[_]Feature{}),
227 };
228 result[@enumToInt(Feature.a53)] = .{
229 .llvm_name = "a53",
230 .description = "Cortex-A53 ARM processors",
231 .dependencies = featureSet(&[_]Feature{}),
232 };
233 result[@enumToInt(Feature.a55)] = .{
234 .llvm_name = "a55",
235 .description = "Cortex-A55 ARM processors",
236 .dependencies = featureSet(&[_]Feature{}),
237 };
238 result[@enumToInt(Feature.a57)] = .{
239 .llvm_name = "a57",
240 .description = "Cortex-A57 ARM processors",
241 .dependencies = featureSet(&[_]Feature{}),
242 };
243 result[@enumToInt(Feature.a7)] = .{
244 .llvm_name = "a7",
245 .description = "Cortex-A7 ARM processors",
246 .dependencies = featureSet(&[_]Feature{}),
247 };
248 result[@enumToInt(Feature.a72)] = .{
249 .llvm_name = "a72",
250 .description = "Cortex-A72 ARM processors",
251 .dependencies = featureSet(&[_]Feature{}),
252 };
253 result[@enumToInt(Feature.a73)] = .{
254 .llvm_name = "a73",
255 .description = "Cortex-A73 ARM processors",
256 .dependencies = featureSet(&[_]Feature{}),
257 };
258 result[@enumToInt(Feature.a75)] = .{
259 .llvm_name = "a75",
260 .description = "Cortex-A75 ARM processors",
261 .dependencies = featureSet(&[_]Feature{}),
262 };
263 result[@enumToInt(Feature.a76)] = .{179 result[@enumToInt(Feature.a76)] = .{
264 .llvm_name = "a76",180 .llvm_name = "a76",
265 .description = "Cortex-A76 ARM processors",181 .description = "Cortex-A76 ARM processors",
266 .dependencies = featureSet(&[_]Feature{}),182 .dependencies = featureSet(&[_]Feature{}),
267 };183 };
268 result[@enumToInt(Feature.a8)] = .{
269 .llvm_name = "a8",
270 .description = "Cortex-A8 ARM processors",
271 .dependencies = featureSet(&[_]Feature{}),
272 };
273 result[@enumToInt(Feature.a9)] = .{
274 .llvm_name = "a9",
275 .description = "Cortex-A9 ARM processors",
276 .dependencies = featureSet(&[_]Feature{}),
277 };
278 result[@enumToInt(Feature.aclass)] = .{184 result[@enumToInt(Feature.aclass)] = .{
279 .llvm_name = "aclass",185 .llvm_name = "aclass",
280 .description = "Is application profile ('A' series)",186 .description = "Is application profile ('A' series)",
...@@ -497,7 +403,7 @@ pub const all_features = blk: {...@@ -497,7 +403,7 @@ pub const all_features = blk: {
497 .mp,403 .mp,
498 .neon,404 .neon,
499 .trustzone,405 .trustzone,
500 .v8,406 .v8a,
501 .virtualization,407 .virtualization,
502 }),408 }),
503 };409 };
...@@ -543,7 +449,7 @@ pub const all_features = blk: {...@@ -543,7 +449,7 @@ pub const all_features = blk: {
543 .mp,449 .mp,
544 .neon,450 .neon,
545 .rclass,451 .rclass,
546 .v8,452 .v8a,
547 .virtualization,453 .virtualization,
548 }),454 }),
549 };455 };
...@@ -872,16 +778,6 @@ pub const all_features = blk: {...@@ -872,16 +778,6 @@ pub const all_features = blk: {
872 .armv5te,778 .armv5te,
873 }),779 }),
874 };780 };
875 result[@enumToInt(Feature.krait)] = .{
876 .llvm_name = "krait",
877 .description = "Qualcomm Krait processors",
878 .dependencies = featureSet(&[_]Feature{}),
879 };
880 result[@enumToInt(Feature.kryo)] = .{
881 .llvm_name = "kryo",
882 .description = "Qualcomm Kryo processors",
883 .dependencies = featureSet(&[_]Feature{}),
884 };
885 result[@enumToInt(Feature.lob)] = .{781 result[@enumToInt(Feature.lob)] = .{
886 .llvm_name = "lob",782 .llvm_name = "lob",
887 .description = "Enable Low Overhead Branch extensions",783 .description = "Enable Low Overhead Branch extensions",
...@@ -1008,21 +904,6 @@ pub const all_features = blk: {...@@ -1008,21 +904,6 @@ pub const all_features = blk: {
1008 .description = "Cortex-R4 ARM processors",904 .description = "Cortex-R4 ARM processors",
1009 .dependencies = featureSet(&[_]Feature{}),905 .dependencies = featureSet(&[_]Feature{}),
1010 };906 };
1011 result[@enumToInt(Feature.r5)] = .{
1012 .llvm_name = "r5",
1013 .description = "Cortex-R5 ARM processors",
1014 .dependencies = featureSet(&[_]Feature{}),
1015 };
1016 result[@enumToInt(Feature.r52)] = .{
1017 .llvm_name = "r52",
1018 .description = "Cortex-R52 ARM processors",
1019 .dependencies = featureSet(&[_]Feature{}),
1020 };
1021 result[@enumToInt(Feature.r7)] = .{
1022 .llvm_name = "r7",
1023 .description = "Cortex-R7 ARM processors",
1024 .dependencies = featureSet(&[_]Feature{}),
1025 };
1026 result[@enumToInt(Feature.ras)] = .{907 result[@enumToInt(Feature.ras)] = .{
1027 .llvm_name = "ras",908 .llvm_name = "ras",
1028 .description = "Enable Reliability, Availability and Serviceability extensions",909 .description = "Enable Reliability, Availability and Serviceability extensions",
...@@ -1200,9 +1081,9 @@ pub const all_features = blk: {...@@ -1200,9 +1081,9 @@ pub const all_features = blk: {
1200 .description = "Has v7 clrex instruction",1081 .description = "Has v7 clrex instruction",
1201 .dependencies = featureSet(&[_]Feature{}),1082 .dependencies = featureSet(&[_]Feature{}),
1202 };1083 };
1203 result[@enumToInt(Feature.v8)] = .{1084 result[@enumToInt(Feature.v8a)] = .{
1204 .llvm_name = "v8",1085 .llvm_name = "v8a",
1205 .description = "Support ARM v8 instructions",1086 .description = "Support ARM v8a instructions",
1206 .dependencies = featureSet(&[_]Feature{1087 .dependencies = featureSet(&[_]Feature{
1207 .acquire_release,1088 .acquire_release,
1208 .v7,1089 .v7,
...@@ -1212,7 +1093,7 @@ pub const all_features = blk: {...@@ -1212,7 +1093,7 @@ pub const all_features = blk: {
1212 .llvm_name = "v8.1a",1093 .llvm_name = "v8.1a",
1213 .description = "Support ARM v8.1a instructions",1094 .description = "Support ARM v8.1a instructions",
1214 .dependencies = featureSet(&[_]Feature{1095 .dependencies = featureSet(&[_]Feature{
1215 .v8,1096 .v8a,
1216 }),1097 }),
1217 };1098 };
1218 result[@enumToInt(Feature.v8_1m_main)] = .{1099 result[@enumToInt(Feature.v8_1m_main)] = .{
...@@ -1415,49 +1296,49 @@ pub const all_features = blk: {...@@ -1415,49 +1296,49 @@ pub const all_features = blk: {
1415};1296};
14161297
1417pub const cpu = struct {1298pub const cpu = struct {
1418 pub const arm1020e = Cpu{1299 pub const arm1020e = CpuModel{
1419 .name = "arm1020e",1300 .name = "arm1020e",
1420 .llvm_name = "arm1020e",1301 .llvm_name = "arm1020e",
1421 .features = featureSet(&[_]Feature{1302 .features = featureSet(&[_]Feature{
1422 .armv5te,1303 .armv5te,
1423 }),1304 }),
1424 };1305 };
1425 pub const arm1020t = Cpu{1306 pub const arm1020t = CpuModel{
1426 .name = "arm1020t",1307 .name = "arm1020t",
1427 .llvm_name = "arm1020t",1308 .llvm_name = "arm1020t",
1428 .features = featureSet(&[_]Feature{1309 .features = featureSet(&[_]Feature{
1429 .armv5t,1310 .armv5t,
1430 }),1311 }),
1431 };1312 };
1432 pub const arm1022e = Cpu{1313 pub const arm1022e = CpuModel{
1433 .name = "arm1022e",1314 .name = "arm1022e",
1434 .llvm_name = "arm1022e",1315 .llvm_name = "arm1022e",
1435 .features = featureSet(&[_]Feature{1316 .features = featureSet(&[_]Feature{
1436 .armv5te,1317 .armv5te,
1437 }),1318 }),
1438 };1319 };
1439 pub const arm10e = Cpu{1320 pub const arm10e = CpuModel{
1440 .name = "arm10e",1321 .name = "arm10e",
1441 .llvm_name = "arm10e",1322 .llvm_name = "arm10e",
1442 .features = featureSet(&[_]Feature{1323 .features = featureSet(&[_]Feature{
1443 .armv5te,1324 .armv5te,
1444 }),1325 }),
1445 };1326 };
1446 pub const arm10tdmi = Cpu{1327 pub const arm10tdmi = CpuModel{
1447 .name = "arm10tdmi",1328 .name = "arm10tdmi",
1448 .llvm_name = "arm10tdmi",1329 .llvm_name = "arm10tdmi",
1449 .features = featureSet(&[_]Feature{1330 .features = featureSet(&[_]Feature{
1450 .armv5t,1331 .armv5t,
1451 }),1332 }),
1452 };1333 };
1453 pub const arm1136j_s = Cpu{1334 pub const arm1136j_s = CpuModel{
1454 .name = "arm1136j_s",1335 .name = "arm1136j_s",
1455 .llvm_name = "arm1136j-s",1336 .llvm_name = "arm1136j-s",
1456 .features = featureSet(&[_]Feature{1337 .features = featureSet(&[_]Feature{
1457 .armv6,1338 .armv6,
1458 }),1339 }),
1459 };1340 };
1460 pub const arm1136jf_s = Cpu{1341 pub const arm1136jf_s = CpuModel{
1461 .name = "arm1136jf_s",1342 .name = "arm1136jf_s",
1462 .llvm_name = "arm1136jf-s",1343 .llvm_name = "arm1136jf-s",
1463 .features = featureSet(&[_]Feature{1344 .features = featureSet(&[_]Feature{
...@@ -1466,14 +1347,14 @@ pub const cpu = struct {...@@ -1466,14 +1347,14 @@ pub const cpu = struct {
1466 .vfp2,1347 .vfp2,
1467 }),1348 }),
1468 };1349 };
1469 pub const arm1156t2_s = Cpu{1350 pub const arm1156t2_s = CpuModel{
1470 .name = "arm1156t2_s",1351 .name = "arm1156t2_s",
1471 .llvm_name = "arm1156t2-s",1352 .llvm_name = "arm1156t2-s",
1472 .features = featureSet(&[_]Feature{1353 .features = featureSet(&[_]Feature{
1473 .armv6t2,1354 .armv6t2,
1474 }),1355 }),
1475 };1356 };
1476 pub const arm1156t2f_s = Cpu{1357 pub const arm1156t2f_s = CpuModel{
1477 .name = "arm1156t2f_s",1358 .name = "arm1156t2f_s",
1478 .llvm_name = "arm1156t2f-s",1359 .llvm_name = "arm1156t2f-s",
1479 .features = featureSet(&[_]Feature{1360 .features = featureSet(&[_]Feature{
...@@ -1482,21 +1363,21 @@ pub const cpu = struct {...@@ -1482,21 +1363,21 @@ pub const cpu = struct {
1482 .vfp2,1363 .vfp2,
1483 }),1364 }),
1484 };1365 };
1485 pub const arm1176j_s = Cpu{1366 pub const arm1176j_s = CpuModel{
1486 .name = "arm1176j_s",1367 .name = "arm1176j_s",
1487 .llvm_name = "arm1176j-s",1368 .llvm_name = "arm1176j-s",
1488 .features = featureSet(&[_]Feature{1369 .features = featureSet(&[_]Feature{
1489 .armv6kz,1370 .armv6kz,
1490 }),1371 }),
1491 };1372 };
1492 pub const arm1176jz_s = Cpu{1373 pub const arm1176jz_s = CpuModel{
1493 .name = "arm1176jz_s",1374 .name = "arm1176jz_s",
1494 .llvm_name = "arm1176jz-s",1375 .llvm_name = "arm1176jz-s",
1495 .features = featureSet(&[_]Feature{1376 .features = featureSet(&[_]Feature{
1496 .armv6kz,1377 .armv6kz,
1497 }),1378 }),
1498 };1379 };
1499 pub const arm1176jzf_s = Cpu{1380 pub const arm1176jzf_s = CpuModel{
1500 .name = "arm1176jzf_s",1381 .name = "arm1176jzf_s",
1501 .llvm_name = "arm1176jzf-s",1382 .llvm_name = "arm1176jzf-s",
1502 .features = featureSet(&[_]Feature{1383 .features = featureSet(&[_]Feature{
...@@ -1505,126 +1386,133 @@ pub const cpu = struct {...@@ -1505,126 +1386,133 @@ pub const cpu = struct {
1505 .vfp2,1386 .vfp2,
1506 }),1387 }),
1507 };1388 };
1508 pub const arm710t = Cpu{1389 pub const arm710t = CpuModel{
1509 .name = "arm710t",1390 .name = "arm710t",
1510 .llvm_name = "arm710t",1391 .llvm_name = "arm710t",
1511 .features = featureSet(&[_]Feature{1392 .features = featureSet(&[_]Feature{
1512 .armv4t,1393 .armv4t,
1513 }),1394 }),
1514 };1395 };
1515 pub const arm720t = Cpu{1396 pub const arm720t = CpuModel{
1516 .name = "arm720t",1397 .name = "arm720t",
1517 .llvm_name = "arm720t",1398 .llvm_name = "arm720t",
1518 .features = featureSet(&[_]Feature{1399 .features = featureSet(&[_]Feature{
1519 .armv4t,1400 .armv4t,
1520 }),1401 }),
1521 };1402 };
1522 pub const arm7tdmi = Cpu{1403 pub const arm7tdmi = CpuModel{
1523 .name = "arm7tdmi",1404 .name = "arm7tdmi",
1524 .llvm_name = "arm7tdmi",1405 .llvm_name = "arm7tdmi",
1525 .features = featureSet(&[_]Feature{1406 .features = featureSet(&[_]Feature{
1526 .armv4t,1407 .armv4t,
1527 }),1408 }),
1528 };1409 };
1529 pub const arm7tdmi_s = Cpu{1410 pub const arm7tdmi_s = CpuModel{
1530 .name = "arm7tdmi_s",1411 .name = "arm7tdmi_s",
1531 .llvm_name = "arm7tdmi-s",1412 .llvm_name = "arm7tdmi-s",
1532 .features = featureSet(&[_]Feature{1413 .features = featureSet(&[_]Feature{
1533 .armv4t,1414 .armv4t,
1534 }),1415 }),
1535 };1416 };
1536 pub const arm8 = Cpu{1417 pub const arm8 = CpuModel{
1537 .name = "arm8",1418 .name = "arm8",
1538 .llvm_name = "arm8",1419 .llvm_name = "arm8",
1539 .features = featureSet(&[_]Feature{1420 .features = featureSet(&[_]Feature{
1540 .armv4,1421 .armv4,
1541 }),1422 }),
1542 };1423 };
1543 pub const arm810 = Cpu{1424 pub const arm810 = CpuModel{
1544 .name = "arm810",1425 .name = "arm810",
1545 .llvm_name = "arm810",1426 .llvm_name = "arm810",
1546 .features = featureSet(&[_]Feature{1427 .features = featureSet(&[_]Feature{
1547 .armv4,1428 .armv4,
1548 }),1429 }),
1549 };1430 };
1550 pub const arm9 = Cpu{1431 pub const arm9 = CpuModel{
1551 .name = "arm9",1432 .name = "arm9",
1552 .llvm_name = "arm9",1433 .llvm_name = "arm9",
1553 .features = featureSet(&[_]Feature{1434 .features = featureSet(&[_]Feature{
1554 .armv4t,1435 .armv4t,
1555 }),1436 }),
1556 };1437 };
1557 pub const arm920 = Cpu{1438 pub const arm920 = CpuModel{
1558 .name = "arm920",1439 .name = "arm920",
1559 .llvm_name = "arm920",1440 .llvm_name = "arm920",
1560 .features = featureSet(&[_]Feature{1441 .features = featureSet(&[_]Feature{
1561 .armv4t,1442 .armv4t,
1562 }),1443 }),
1563 };1444 };
1564 pub const arm920t = Cpu{1445 pub const arm920t = CpuModel{
1565 .name = "arm920t",1446 .name = "arm920t",
1566 .llvm_name = "arm920t",1447 .llvm_name = "arm920t",
1567 .features = featureSet(&[_]Feature{1448 .features = featureSet(&[_]Feature{
1568 .armv4t,1449 .armv4t,
1569 }),1450 }),
1570 };1451 };
1571 pub const arm922t = Cpu{1452 pub const arm922t = CpuModel{
1572 .name = "arm922t",1453 .name = "arm922t",
1573 .llvm_name = "arm922t",1454 .llvm_name = "arm922t",
1574 .features = featureSet(&[_]Feature{1455 .features = featureSet(&[_]Feature{
1575 .armv4t,1456 .armv4t,
1576 }),1457 }),
1577 };1458 };
1578 pub const arm926ej_s = Cpu{1459 pub const arm926ej_s = CpuModel{
1579 .name = "arm926ej_s",1460 .name = "arm926ej_s",
1580 .llvm_name = "arm926ej-s",1461 .llvm_name = "arm926ej-s",
1581 .features = featureSet(&[_]Feature{1462 .features = featureSet(&[_]Feature{
1582 .armv5te,1463 .armv5te,
1583 }),1464 }),
1584 };1465 };
1585 pub const arm940t = Cpu{1466 pub const arm940t = CpuModel{
1586 .name = "arm940t",1467 .name = "arm940t",
1587 .llvm_name = "arm940t",1468 .llvm_name = "arm940t",
1588 .features = featureSet(&[_]Feature{1469 .features = featureSet(&[_]Feature{
1589 .armv4t,1470 .armv4t,
1590 }),1471 }),
1591 };1472 };
1592 pub const arm946e_s = Cpu{1473 pub const arm946e_s = CpuModel{
1593 .name = "arm946e_s",1474 .name = "arm946e_s",
1594 .llvm_name = "arm946e-s",1475 .llvm_name = "arm946e-s",
1595 .features = featureSet(&[_]Feature{1476 .features = featureSet(&[_]Feature{
1596 .armv5te,1477 .armv5te,
1597 }),1478 }),
1598 };1479 };
1599 pub const arm966e_s = Cpu{1480 pub const arm966e_s = CpuModel{
1600 .name = "arm966e_s",1481 .name = "arm966e_s",
1601 .llvm_name = "arm966e-s",1482 .llvm_name = "arm966e-s",
1602 .features = featureSet(&[_]Feature{1483 .features = featureSet(&[_]Feature{
1603 .armv5te,1484 .armv5te,
1604 }),1485 }),
1605 };1486 };
1606 pub const arm968e_s = Cpu{1487 pub const arm968e_s = CpuModel{
1607 .name = "arm968e_s",1488 .name = "arm968e_s",
1608 .llvm_name = "arm968e-s",1489 .llvm_name = "arm968e-s",
1609 .features = featureSet(&[_]Feature{1490 .features = featureSet(&[_]Feature{
1610 .armv5te,1491 .armv5te,
1611 }),1492 }),
1612 };1493 };
1613 pub const arm9e = Cpu{1494 pub const arm9e = CpuModel{
1614 .name = "arm9e",1495 .name = "arm9e",
1615 .llvm_name = "arm9e",1496 .llvm_name = "arm9e",
1616 .features = featureSet(&[_]Feature{1497 .features = featureSet(&[_]Feature{
1617 .armv5te,1498 .armv5te,
1618 }),1499 }),
1619 };1500 };
1620 pub const arm9tdmi = Cpu{1501 pub const arm9tdmi = CpuModel{
1621 .name = "arm9tdmi",1502 .name = "arm9tdmi",
1622 .llvm_name = "arm9tdmi",1503 .llvm_name = "arm9tdmi",
1623 .features = featureSet(&[_]Feature{1504 .features = featureSet(&[_]Feature{
1624 .armv4t,1505 .armv4t,
1625 }),1506 }),
1626 };1507 };
1627 pub const cortex_a12 = Cpu{1508 pub const baseline = CpuModel{
1509 .name = "baseline",
1510 .llvm_name = "generic",
1511 .features = featureSet(&[_]Feature{
1512 .armv6_m,
1513 }),
1514 };
1515 pub const cortex_a12 = CpuModel{
1628 .name = "cortex_a12",1516 .name = "cortex_a12",
1629 .llvm_name = "cortex-a12",1517 .llvm_name = "cortex-a12",
1630 .features = featureSet(&[_]Feature{1518 .features = featureSet(&[_]Feature{
...@@ -1639,11 +1527,10 @@ pub const cpu = struct {...@@ -1639,11 +1527,10 @@ pub const cpu = struct {
1639 .vmlx_forwarding,1527 .vmlx_forwarding,
1640 }),1528 }),
1641 };1529 };
1642 pub const cortex_a15 = Cpu{1530 pub const cortex_a15 = CpuModel{
1643 .name = "cortex_a15",1531 .name = "cortex_a15",
1644 .llvm_name = "cortex-a15",1532 .llvm_name = "cortex-a15",
1645 .features = featureSet(&[_]Feature{1533 .features = featureSet(&[_]Feature{
1646 .a15,
1647 .armv7_a,1534 .armv7_a,
1648 .avoid_partial_cpsr,1535 .avoid_partial_cpsr,
1649 .dont_widen_vmovs,1536 .dont_widen_vmovs,
...@@ -1657,11 +1544,10 @@ pub const cpu = struct {...@@ -1657,11 +1544,10 @@ pub const cpu = struct {
1657 .vldn_align,1544 .vldn_align,
1658 }),1545 }),
1659 };1546 };
1660 pub const cortex_a17 = Cpu{1547 pub const cortex_a17 = CpuModel{
1661 .name = "cortex_a17",1548 .name = "cortex_a17",
1662 .llvm_name = "cortex-a17",1549 .llvm_name = "cortex-a17",
1663 .features = featureSet(&[_]Feature{1550 .features = featureSet(&[_]Feature{
1664 .a17,
1665 .armv7_a,1551 .armv7_a,
1666 .avoid_partial_cpsr,1552 .avoid_partial_cpsr,
1667 .mp,1553 .mp,
...@@ -1672,7 +1558,7 @@ pub const cpu = struct {...@@ -1672,7 +1558,7 @@ pub const cpu = struct {
1672 .vmlx_forwarding,1558 .vmlx_forwarding,
1673 }),1559 }),
1674 };1560 };
1675 pub const cortex_a32 = Cpu{1561 pub const cortex_a32 = CpuModel{
1676 .name = "cortex_a32",1562 .name = "cortex_a32",
1677 .llvm_name = "cortex-a32",1563 .llvm_name = "cortex-a32",
1678 .features = featureSet(&[_]Feature{1564 .features = featureSet(&[_]Feature{
...@@ -1683,11 +1569,10 @@ pub const cpu = struct {...@@ -1683,11 +1569,10 @@ pub const cpu = struct {
1683 .hwdiv_arm,1569 .hwdiv_arm,
1684 }),1570 }),
1685 };1571 };
1686 pub const cortex_a35 = Cpu{1572 pub const cortex_a35 = CpuModel{
1687 .name = "cortex_a35",1573 .name = "cortex_a35",
1688 .llvm_name = "cortex-a35",1574 .llvm_name = "cortex-a35",
1689 .features = featureSet(&[_]Feature{1575 .features = featureSet(&[_]Feature{
1690 .a35,
1691 .armv8_a,1576 .armv8_a,
1692 .crc,1577 .crc,
1693 .crypto,1578 .crypto,
...@@ -1695,11 +1580,10 @@ pub const cpu = struct {...@@ -1695,11 +1580,10 @@ pub const cpu = struct {
1695 .hwdiv_arm,1580 .hwdiv_arm,
1696 }),1581 }),
1697 };1582 };
1698 pub const cortex_a5 = Cpu{1583 pub const cortex_a5 = CpuModel{
1699 .name = "cortex_a5",1584 .name = "cortex_a5",
1700 .llvm_name = "cortex-a5",1585 .llvm_name = "cortex-a5",
1701 .features = featureSet(&[_]Feature{1586 .features = featureSet(&[_]Feature{
1702 .a5,
1703 .armv7_a,1587 .armv7_a,
1704 .mp,1588 .mp,
1705 .ret_addr_stack,1589 .ret_addr_stack,
...@@ -1710,11 +1594,10 @@ pub const cpu = struct {...@@ -1710,11 +1594,10 @@ pub const cpu = struct {
1710 .vmlx_forwarding,1594 .vmlx_forwarding,
1711 }),1595 }),
1712 };1596 };
1713 pub const cortex_a53 = Cpu{1597 pub const cortex_a53 = CpuModel{
1714 .name = "cortex_a53",1598 .name = "cortex_a53",
1715 .llvm_name = "cortex-a53",1599 .llvm_name = "cortex-a53",
1716 .features = featureSet(&[_]Feature{1600 .features = featureSet(&[_]Feature{
1717 .a53,
1718 .armv8_a,1601 .armv8_a,
1719 .crc,1602 .crc,
1720 .crypto,1603 .crypto,
...@@ -1723,22 +1606,20 @@ pub const cpu = struct {...@@ -1723,22 +1606,20 @@ pub const cpu = struct {
1723 .hwdiv_arm,1606 .hwdiv_arm,
1724 }),1607 }),
1725 };1608 };
1726 pub const cortex_a55 = Cpu{1609 pub const cortex_a55 = CpuModel{
1727 .name = "cortex_a55",1610 .name = "cortex_a55",
1728 .llvm_name = "cortex-a55",1611 .llvm_name = "cortex-a55",
1729 .features = featureSet(&[_]Feature{1612 .features = featureSet(&[_]Feature{
1730 .a55,
1731 .armv8_2_a,1613 .armv8_2_a,
1732 .dotprod,1614 .dotprod,
1733 .hwdiv,1615 .hwdiv,
1734 .hwdiv_arm,1616 .hwdiv_arm,
1735 }),1617 }),
1736 };1618 };
1737 pub const cortex_a57 = Cpu{1619 pub const cortex_a57 = CpuModel{
1738 .name = "cortex_a57",1620 .name = "cortex_a57",
1739 .llvm_name = "cortex-a57",1621 .llvm_name = "cortex-a57",
1740 .features = featureSet(&[_]Feature{1622 .features = featureSet(&[_]Feature{
1741 .a57,
1742 .armv8_a,1623 .armv8_a,
1743 .avoid_partial_cpsr,1624 .avoid_partial_cpsr,
1744 .cheap_predicable_cpsr,1625 .cheap_predicable_cpsr,
...@@ -1749,11 +1630,10 @@ pub const cpu = struct {...@@ -1749,11 +1630,10 @@ pub const cpu = struct {
1749 .hwdiv_arm,1630 .hwdiv_arm,
1750 }),1631 }),
1751 };1632 };
1752 pub const cortex_a7 = Cpu{1633 pub const cortex_a7 = CpuModel{
1753 .name = "cortex_a7",1634 .name = "cortex_a7",
1754 .llvm_name = "cortex-a7",1635 .llvm_name = "cortex-a7",
1755 .features = featureSet(&[_]Feature{1636 .features = featureSet(&[_]Feature{
1756 .a7,
1757 .armv7_a,1637 .armv7_a,
1758 .mp,1638 .mp,
1759 .ret_addr_stack,1639 .ret_addr_stack,
...@@ -1766,11 +1646,10 @@ pub const cpu = struct {...@@ -1766,11 +1646,10 @@ pub const cpu = struct {
1766 .vmlx_hazards,1646 .vmlx_hazards,
1767 }),1647 }),
1768 };1648 };
1769 pub const cortex_a72 = Cpu{1649 pub const cortex_a72 = CpuModel{
1770 .name = "cortex_a72",1650 .name = "cortex_a72",
1771 .llvm_name = "cortex-a72",1651 .llvm_name = "cortex-a72",
1772 .features = featureSet(&[_]Feature{1652 .features = featureSet(&[_]Feature{
1773 .a72,
1774 .armv8_a,1653 .armv8_a,
1775 .crc,1654 .crc,
1776 .crypto,1655 .crypto,
...@@ -1778,11 +1657,10 @@ pub const cpu = struct {...@@ -1778,11 +1657,10 @@ pub const cpu = struct {
1778 .hwdiv_arm,1657 .hwdiv_arm,
1779 }),1658 }),
1780 };1659 };
1781 pub const cortex_a73 = Cpu{1660 pub const cortex_a73 = CpuModel{
1782 .name = "cortex_a73",1661 .name = "cortex_a73",
1783 .llvm_name = "cortex-a73",1662 .llvm_name = "cortex-a73",
1784 .features = featureSet(&[_]Feature{1663 .features = featureSet(&[_]Feature{
1785 .a73,
1786 .armv8_a,1664 .armv8_a,
1787 .crc,1665 .crc,
1788 .crypto,1666 .crypto,
...@@ -1790,18 +1668,17 @@ pub const cpu = struct {...@@ -1790,18 +1668,17 @@ pub const cpu = struct {
1790 .hwdiv_arm,1668 .hwdiv_arm,
1791 }),1669 }),
1792 };1670 };
1793 pub const cortex_a75 = Cpu{1671 pub const cortex_a75 = CpuModel{
1794 .name = "cortex_a75",1672 .name = "cortex_a75",
1795 .llvm_name = "cortex-a75",1673 .llvm_name = "cortex-a75",
1796 .features = featureSet(&[_]Feature{1674 .features = featureSet(&[_]Feature{
1797 .a75,
1798 .armv8_2_a,1675 .armv8_2_a,
1799 .dotprod,1676 .dotprod,
1800 .hwdiv,1677 .hwdiv,
1801 .hwdiv_arm,1678 .hwdiv_arm,
1802 }),1679 }),
1803 };1680 };
1804 pub const cortex_a76 = Cpu{1681 pub const cortex_a76 = CpuModel{
1805 .name = "cortex_a76",1682 .name = "cortex_a76",
1806 .llvm_name = "cortex-a76",1683 .llvm_name = "cortex-a76",
1807 .features = featureSet(&[_]Feature{1684 .features = featureSet(&[_]Feature{
...@@ -1815,7 +1692,7 @@ pub const cpu = struct {...@@ -1815,7 +1692,7 @@ pub const cpu = struct {
1815 .hwdiv_arm,1692 .hwdiv_arm,
1816 }),1693 }),
1817 };1694 };
1818 pub const cortex_a76ae = Cpu{1695 pub const cortex_a76ae = CpuModel{
1819 .name = "cortex_a76ae",1696 .name = "cortex_a76ae",
1820 .llvm_name = "cortex-a76ae",1697 .llvm_name = "cortex-a76ae",
1821 .features = featureSet(&[_]Feature{1698 .features = featureSet(&[_]Feature{
...@@ -1829,11 +1706,10 @@ pub const cpu = struct {...@@ -1829,11 +1706,10 @@ pub const cpu = struct {
1829 .hwdiv_arm,1706 .hwdiv_arm,
1830 }),1707 }),
1831 };1708 };
1832 pub const cortex_a8 = Cpu{1709 pub const cortex_a8 = CpuModel{
1833 .name = "cortex_a8",1710 .name = "cortex_a8",
1834 .llvm_name = "cortex-a8",1711 .llvm_name = "cortex-a8",
1835 .features = featureSet(&[_]Feature{1712 .features = featureSet(&[_]Feature{
1836 .a8,
1837 .armv7_a,1713 .armv7_a,
1838 .nonpipelined_vfp,1714 .nonpipelined_vfp,
1839 .ret_addr_stack,1715 .ret_addr_stack,
...@@ -1844,11 +1720,10 @@ pub const cpu = struct {...@@ -1844,11 +1720,10 @@ pub const cpu = struct {
1844 .vmlx_hazards,1720 .vmlx_hazards,
1845 }),1721 }),
1846 };1722 };
1847 pub const cortex_a9 = Cpu{1723 pub const cortex_a9 = CpuModel{
1848 .name = "cortex_a9",1724 .name = "cortex_a9",
1849 .llvm_name = "cortex-a9",1725 .llvm_name = "cortex-a9",
1850 .features = featureSet(&[_]Feature{1726 .features = featureSet(&[_]Feature{
1851 .a9,
1852 .armv7_a,1727 .armv7_a,
1853 .avoid_partial_cpsr,1728 .avoid_partial_cpsr,
1854 .expand_fp_mlx,1729 .expand_fp_mlx,
...@@ -1864,28 +1739,28 @@ pub const cpu = struct {...@@ -1864,28 +1739,28 @@ pub const cpu = struct {
1864 .vmlx_hazards,1739 .vmlx_hazards,
1865 }),1740 }),
1866 };1741 };
1867 pub const cortex_m0 = Cpu{1742 pub const cortex_m0 = CpuModel{
1868 .name = "cortex_m0",1743 .name = "cortex_m0",
1869 .llvm_name = "cortex-m0",1744 .llvm_name = "cortex-m0",
1870 .features = featureSet(&[_]Feature{1745 .features = featureSet(&[_]Feature{
1871 .armv6_m,1746 .armv6_m,
1872 }),1747 }),
1873 };1748 };
1874 pub const cortex_m0plus = Cpu{1749 pub const cortex_m0plus = CpuModel{
1875 .name = "cortex_m0plus",1750 .name = "cortex_m0plus",
1876 .llvm_name = "cortex-m0plus",1751 .llvm_name = "cortex-m0plus",
1877 .features = featureSet(&[_]Feature{1752 .features = featureSet(&[_]Feature{
1878 .armv6_m,1753 .armv6_m,
1879 }),1754 }),
1880 };1755 };
1881 pub const cortex_m1 = Cpu{1756 pub const cortex_m1 = CpuModel{
1882 .name = "cortex_m1",1757 .name = "cortex_m1",
1883 .llvm_name = "cortex-m1",1758 .llvm_name = "cortex-m1",
1884 .features = featureSet(&[_]Feature{1759 .features = featureSet(&[_]Feature{
1885 .armv6_m,1760 .armv6_m,
1886 }),1761 }),
1887 };1762 };
1888 pub const cortex_m23 = Cpu{1763 pub const cortex_m23 = CpuModel{
1889 .name = "cortex_m23",1764 .name = "cortex_m23",
1890 .llvm_name = "cortex-m23",1765 .llvm_name = "cortex-m23",
1891 .features = featureSet(&[_]Feature{1766 .features = featureSet(&[_]Feature{
...@@ -1893,7 +1768,7 @@ pub const cpu = struct {...@@ -1893,7 +1768,7 @@ pub const cpu = struct {
1893 .no_movt,1768 .no_movt,
1894 }),1769 }),
1895 };1770 };
1896 pub const cortex_m3 = Cpu{1771 pub const cortex_m3 = CpuModel{
1897 .name = "cortex_m3",1772 .name = "cortex_m3",
1898 .llvm_name = "cortex-m3",1773 .llvm_name = "cortex-m3",
1899 .features = featureSet(&[_]Feature{1774 .features = featureSet(&[_]Feature{
...@@ -1905,7 +1780,7 @@ pub const cpu = struct {...@@ -1905,7 +1780,7 @@ pub const cpu = struct {
1905 .use_misched,1780 .use_misched,
1906 }),1781 }),
1907 };1782 };
1908 pub const cortex_m33 = Cpu{1783 pub const cortex_m33 = CpuModel{
1909 .name = "cortex_m33",1784 .name = "cortex_m33",
1910 .llvm_name = "cortex-m33",1785 .llvm_name = "cortex-m33",
1911 .features = featureSet(&[_]Feature{1786 .features = featureSet(&[_]Feature{
...@@ -1919,7 +1794,7 @@ pub const cpu = struct {...@@ -1919,7 +1794,7 @@ pub const cpu = struct {
1919 .use_misched,1794 .use_misched,
1920 }),1795 }),
1921 };1796 };
1922 pub const cortex_m35p = Cpu{1797 pub const cortex_m35p = CpuModel{
1923 .name = "cortex_m35p",1798 .name = "cortex_m35p",
1924 .llvm_name = "cortex-m35p",1799 .llvm_name = "cortex-m35p",
1925 .features = featureSet(&[_]Feature{1800 .features = featureSet(&[_]Feature{
...@@ -1933,7 +1808,7 @@ pub const cpu = struct {...@@ -1933,7 +1808,7 @@ pub const cpu = struct {
1933 .use_misched,1808 .use_misched,
1934 }),1809 }),
1935 };1810 };
1936 pub const cortex_m4 = Cpu{1811 pub const cortex_m4 = CpuModel{
1937 .name = "cortex_m4",1812 .name = "cortex_m4",
1938 .llvm_name = "cortex-m4",1813 .llvm_name = "cortex-m4",
1939 .features = featureSet(&[_]Feature{1814 .features = featureSet(&[_]Feature{
...@@ -1946,7 +1821,7 @@ pub const cpu = struct {...@@ -1946,7 +1821,7 @@ pub const cpu = struct {
1946 .vfp4d16sp,1821 .vfp4d16sp,
1947 }),1822 }),
1948 };1823 };
1949 pub const cortex_m7 = Cpu{1824 pub const cortex_m7 = CpuModel{
1950 .name = "cortex_m7",1825 .name = "cortex_m7",
1951 .llvm_name = "cortex-m7",1826 .llvm_name = "cortex-m7",
1952 .features = featureSet(&[_]Feature{1827 .features = featureSet(&[_]Feature{
...@@ -1954,7 +1829,7 @@ pub const cpu = struct {...@@ -1954,7 +1829,7 @@ pub const cpu = struct {
1954 .fp_armv8d16,1829 .fp_armv8d16,
1955 }),1830 }),
1956 };1831 };
1957 pub const cortex_r4 = Cpu{1832 pub const cortex_r4 = CpuModel{
1958 .name = "cortex_r4",1833 .name = "cortex_r4",
1959 .llvm_name = "cortex-r4",1834 .llvm_name = "cortex-r4",
1960 .features = featureSet(&[_]Feature{1835 .features = featureSet(&[_]Feature{
...@@ -1964,7 +1839,7 @@ pub const cpu = struct {...@@ -1964,7 +1839,7 @@ pub const cpu = struct {
1964 .ret_addr_stack,1839 .ret_addr_stack,
1965 }),1840 }),
1966 };1841 };
1967 pub const cortex_r4f = Cpu{1842 pub const cortex_r4f = CpuModel{
1968 .name = "cortex_r4f",1843 .name = "cortex_r4f",
1969 .llvm_name = "cortex-r4f",1844 .llvm_name = "cortex-r4f",
1970 .features = featureSet(&[_]Feature{1845 .features = featureSet(&[_]Feature{
...@@ -1977,32 +1852,30 @@ pub const cpu = struct {...@@ -1977,32 +1852,30 @@ pub const cpu = struct {
1977 .vfp3d16,1852 .vfp3d16,
1978 }),1853 }),
1979 };1854 };
1980 pub const cortex_r5 = Cpu{1855 pub const cortex_r5 = CpuModel{
1981 .name = "cortex_r5",1856 .name = "cortex_r5",
1982 .llvm_name = "cortex-r5",1857 .llvm_name = "cortex-r5",
1983 .features = featureSet(&[_]Feature{1858 .features = featureSet(&[_]Feature{
1984 .armv7_r,1859 .armv7_r,
1985 .avoid_partial_cpsr,1860 .avoid_partial_cpsr,
1986 .hwdiv_arm,1861 .hwdiv_arm,
1987 .r5,
1988 .ret_addr_stack,1862 .ret_addr_stack,
1989 .slow_fp_brcc,1863 .slow_fp_brcc,
1990 .slowfpvmlx,1864 .slowfpvmlx,
1991 .vfp3d16,1865 .vfp3d16,
1992 }),1866 }),
1993 };1867 };
1994 pub const cortex_r52 = Cpu{1868 pub const cortex_r52 = CpuModel{
1995 .name = "cortex_r52",1869 .name = "cortex_r52",
1996 .llvm_name = "cortex-r52",1870 .llvm_name = "cortex-r52",
1997 .features = featureSet(&[_]Feature{1871 .features = featureSet(&[_]Feature{
1998 .armv8_r,1872 .armv8_r,
1999 .fpao,1873 .fpao,
2000 .r52,
2001 .use_aa,1874 .use_aa,
2002 .use_misched,1875 .use_misched,
2003 }),1876 }),
2004 };1877 };
2005 pub const cortex_r7 = Cpu{1878 pub const cortex_r7 = CpuModel{
2006 .name = "cortex_r7",1879 .name = "cortex_r7",
2007 .llvm_name = "cortex-r7",1880 .llvm_name = "cortex-r7",
2008 .features = featureSet(&[_]Feature{1881 .features = featureSet(&[_]Feature{
...@@ -2011,14 +1884,13 @@ pub const cpu = struct {...@@ -2011,14 +1884,13 @@ pub const cpu = struct {
2011 .fp16,1884 .fp16,
2012 .hwdiv_arm,1885 .hwdiv_arm,
2013 .mp,1886 .mp,
2014 .r7,
2015 .ret_addr_stack,1887 .ret_addr_stack,
2016 .slow_fp_brcc,1888 .slow_fp_brcc,
2017 .slowfpvmlx,1889 .slowfpvmlx,
2018 .vfp3d16,1890 .vfp3d16,
2019 }),1891 }),
2020 };1892 };
2021 pub const cortex_r8 = Cpu{1893 pub const cortex_r8 = CpuModel{
2022 .name = "cortex_r8",1894 .name = "cortex_r8",
2023 .llvm_name = "cortex-r8",1895 .llvm_name = "cortex-r8",
2024 .features = featureSet(&[_]Feature{1896 .features = featureSet(&[_]Feature{
...@@ -2033,7 +1905,7 @@ pub const cpu = struct {...@@ -2033,7 +1905,7 @@ pub const cpu = struct {
2033 .vfp3d16,1905 .vfp3d16,
2034 }),1906 }),
2035 };1907 };
2036 pub const cyclone = Cpu{1908 pub const cyclone = CpuModel{
2037 .name = "cyclone",1909 .name = "cyclone",
2038 .llvm_name = "cyclone",1910 .llvm_name = "cyclone",
2039 .features = featureSet(&[_]Feature{1911 .features = featureSet(&[_]Feature{
...@@ -2054,14 +1926,14 @@ pub const cpu = struct {...@@ -2054,14 +1926,14 @@ pub const cpu = struct {
2054 .zcz,1926 .zcz,
2055 }),1927 }),
2056 };1928 };
2057 pub const ep9312 = Cpu{1929 pub const ep9312 = CpuModel{
2058 .name = "ep9312",1930 .name = "ep9312",
2059 .llvm_name = "ep9312",1931 .llvm_name = "ep9312",
2060 .features = featureSet(&[_]Feature{1932 .features = featureSet(&[_]Feature{
2061 .armv4t,1933 .armv4t,
2062 }),1934 }),
2063 };1935 };
2064 pub const exynos_m1 = Cpu{1936 pub const exynos_m1 = CpuModel{
2065 .name = "exynos_m1",1937 .name = "exynos_m1",
2066 .llvm_name = "exynos-m1",1938 .llvm_name = "exynos-m1",
2067 .features = featureSet(&[_]Feature{1939 .features = featureSet(&[_]Feature{
...@@ -2069,7 +1941,7 @@ pub const cpu = struct {...@@ -2069,7 +1941,7 @@ pub const cpu = struct {
2069 .exynos,1941 .exynos,
2070 }),1942 }),
2071 };1943 };
2072 pub const exynos_m2 = Cpu{1944 pub const exynos_m2 = CpuModel{
2073 .name = "exynos_m2",1945 .name = "exynos_m2",
2074 .llvm_name = "exynos-m2",1946 .llvm_name = "exynos-m2",
2075 .features = featureSet(&[_]Feature{1947 .features = featureSet(&[_]Feature{
...@@ -2077,7 +1949,7 @@ pub const cpu = struct {...@@ -2077,7 +1949,7 @@ pub const cpu = struct {
2077 .exynos,1949 .exynos,
2078 }),1950 }),
2079 };1951 };
2080 pub const exynos_m3 = Cpu{1952 pub const exynos_m3 = CpuModel{
2081 .name = "exynos_m3",1953 .name = "exynos_m3",
2082 .llvm_name = "exynos-m3",1954 .llvm_name = "exynos-m3",
2083 .features = featureSet(&[_]Feature{1955 .features = featureSet(&[_]Feature{
...@@ -2085,7 +1957,7 @@ pub const cpu = struct {...@@ -2085,7 +1957,7 @@ pub const cpu = struct {
2085 .exynos,1957 .exynos,
2086 }),1958 }),
2087 };1959 };
2088 pub const exynos_m4 = Cpu{1960 pub const exynos_m4 = CpuModel{
2089 .name = "exynos_m4",1961 .name = "exynos_m4",
2090 .llvm_name = "exynos-m4",1962 .llvm_name = "exynos-m4",
2091 .features = featureSet(&[_]Feature{1963 .features = featureSet(&[_]Feature{
...@@ -2095,7 +1967,7 @@ pub const cpu = struct {...@@ -2095,7 +1967,7 @@ pub const cpu = struct {
2095 .fullfp16,1967 .fullfp16,
2096 }),1968 }),
2097 };1969 };
2098 pub const exynos_m5 = Cpu{1970 pub const exynos_m5 = CpuModel{
2099 .name = "exynos_m5",1971 .name = "exynos_m5",
2100 .llvm_name = "exynos-m5",1972 .llvm_name = "exynos-m5",
2101 .features = featureSet(&[_]Feature{1973 .features = featureSet(&[_]Feature{
...@@ -2105,19 +1977,19 @@ pub const cpu = struct {...@@ -2105,19 +1977,19 @@ pub const cpu = struct {
2105 .fullfp16,1977 .fullfp16,
2106 }),1978 }),
2107 };1979 };
2108 pub const generic = Cpu{1980 pub const generic = CpuModel{
2109 .name = "generic",1981 .name = "generic",
2110 .llvm_name = "generic",1982 .llvm_name = "generic",
2111 .features = featureSet(&[_]Feature{}),1983 .features = featureSet(&[_]Feature{}),
2112 };1984 };
2113 pub const iwmmxt = Cpu{1985 pub const iwmmxt = CpuModel{
2114 .name = "iwmmxt",1986 .name = "iwmmxt",
2115 .llvm_name = "iwmmxt",1987 .llvm_name = "iwmmxt",
2116 .features = featureSet(&[_]Feature{1988 .features = featureSet(&[_]Feature{
2117 .armv5te,1989 .armv5te,
2118 }),1990 }),
2119 };1991 };
2120 pub const krait = Cpu{1992 pub const krait = CpuModel{
2121 .name = "krait",1993 .name = "krait",
2122 .llvm_name = "krait",1994 .llvm_name = "krait",
2123 .features = featureSet(&[_]Feature{1995 .features = featureSet(&[_]Feature{
...@@ -2126,7 +1998,6 @@ pub const cpu = struct {...@@ -2126,7 +1998,6 @@ pub const cpu = struct {
2126 .fp16,1998 .fp16,
2127 .hwdiv,1999 .hwdiv,
2128 .hwdiv_arm,2000 .hwdiv_arm,
2129 .krait,
2130 .muxed_units,2001 .muxed_units,
2131 .ret_addr_stack,2002 .ret_addr_stack,
2132 .vfp4,2003 .vfp4,
...@@ -2134,7 +2005,7 @@ pub const cpu = struct {...@@ -2134,7 +2005,7 @@ pub const cpu = struct {
2134 .vmlx_forwarding,2005 .vmlx_forwarding,
2135 }),2006 }),
2136 };2007 };
2137 pub const kryo = Cpu{2008 pub const kryo = CpuModel{
2138 .name = "kryo",2009 .name = "kryo",
2139 .llvm_name = "kryo",2010 .llvm_name = "kryo",
2140 .features = featureSet(&[_]Feature{2011 .features = featureSet(&[_]Feature{
...@@ -2146,7 +2017,7 @@ pub const cpu = struct {...@@ -2146,7 +2017,7 @@ pub const cpu = struct {
2146 .kryo,2017 .kryo,
2147 }),2018 }),
2148 };2019 };
2149 pub const mpcore = Cpu{2020 pub const mpcore = CpuModel{
2150 .name = "mpcore",2021 .name = "mpcore",
2151 .llvm_name = "mpcore",2022 .llvm_name = "mpcore",
2152 .features = featureSet(&[_]Feature{2023 .features = featureSet(&[_]Feature{
...@@ -2155,21 +2026,21 @@ pub const cpu = struct {...@@ -2155,21 +2026,21 @@ pub const cpu = struct {
2155 .vfp2,2026 .vfp2,
2156 }),2027 }),
2157 };2028 };
2158 pub const mpcorenovfp = Cpu{2029 pub const mpcorenovfp = CpuModel{
2159 .name = "mpcorenovfp",2030 .name = "mpcorenovfp",
2160 .llvm_name = "mpcorenovfp",2031 .llvm_name = "mpcorenovfp",
2161 .features = featureSet(&[_]Feature{2032 .features = featureSet(&[_]Feature{
2162 .armv6k,2033 .armv6k,
2163 }),2034 }),
2164 };2035 };
2165 pub const sc000 = Cpu{2036 pub const sc000 = CpuModel{
2166 .name = "sc000",2037 .name = "sc000",
2167 .llvm_name = "sc000",2038 .llvm_name = "sc000",
2168 .features = featureSet(&[_]Feature{2039 .features = featureSet(&[_]Feature{
2169 .armv6_m,2040 .armv6_m,
2170 }),2041 }),
2171 };2042 };
2172 pub const sc300 = Cpu{2043 pub const sc300 = CpuModel{
2173 .name = "sc300",2044 .name = "sc300",
2174 .llvm_name = "sc300",2045 .llvm_name = "sc300",
2175 .features = featureSet(&[_]Feature{2046 .features = featureSet(&[_]Feature{
...@@ -2180,35 +2051,35 @@ pub const cpu = struct {...@@ -2180,35 +2051,35 @@ pub const cpu = struct {
2180 .use_misched,2051 .use_misched,
2181 }),2052 }),
2182 };2053 };
2183 pub const strongarm = Cpu{2054 pub const strongarm = CpuModel{
2184 .name = "strongarm",2055 .name = "strongarm",
2185 .llvm_name = "strongarm",2056 .llvm_name = "strongarm",
2186 .features = featureSet(&[_]Feature{2057 .features = featureSet(&[_]Feature{
2187 .armv4,2058 .armv4,
2188 }),2059 }),
2189 };2060 };
2190 pub const strongarm110 = Cpu{2061 pub const strongarm110 = CpuModel{
2191 .name = "strongarm110",2062 .name = "strongarm110",
2192 .llvm_name = "strongarm110",2063 .llvm_name = "strongarm110",
2193 .features = featureSet(&[_]Feature{2064 .features = featureSet(&[_]Feature{
2194 .armv4,2065 .armv4,
2195 }),2066 }),
2196 };2067 };
2197 pub const strongarm1100 = Cpu{2068 pub const strongarm1100 = CpuModel{
2198 .name = "strongarm1100",2069 .name = "strongarm1100",
2199 .llvm_name = "strongarm1100",2070 .llvm_name = "strongarm1100",
2200 .features = featureSet(&[_]Feature{2071 .features = featureSet(&[_]Feature{
2201 .armv4,2072 .armv4,
2202 }),2073 }),
2203 };2074 };
2204 pub const strongarm1110 = Cpu{2075 pub const strongarm1110 = CpuModel{
2205 .name = "strongarm1110",2076 .name = "strongarm1110",
2206 .llvm_name = "strongarm1110",2077 .llvm_name = "strongarm1110",
2207 .features = featureSet(&[_]Feature{2078 .features = featureSet(&[_]Feature{
2208 .armv4,2079 .armv4,
2209 }),2080 }),
2210 };2081 };
2211 pub const swift = Cpu{2082 pub const swift = CpuModel{
2212 .name = "swift",2083 .name = "swift",
2213 .llvm_name = "swift",2084 .llvm_name = "swift",
2214 .features = featureSet(&[_]Feature{2085 .features = featureSet(&[_]Feature{
...@@ -2235,7 +2106,7 @@ pub const cpu = struct {...@@ -2235,7 +2106,7 @@ pub const cpu = struct {
2235 .wide_stride_vfp,2106 .wide_stride_vfp,
2236 }),2107 }),
2237 };2108 };
2238 pub const xscale = Cpu{2109 pub const xscale = CpuModel{
2239 .name = "xscale",2110 .name = "xscale",
2240 .llvm_name = "xscale",2111 .llvm_name = "xscale",
2241 .features = featureSet(&[_]Feature{2112 .features = featureSet(&[_]Feature{
...@@ -2247,7 +2118,7 @@ pub const cpu = struct {...@@ -2247,7 +2118,7 @@ pub const cpu = struct {
2247/// All arm CPUs, sorted alphabetically by name.2118/// All arm CPUs, sorted alphabetically by name.
2248/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage12119/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
2249/// compiler has inefficient memory and CPU usage, affecting build times.2120/// compiler has inefficient memory and CPU usage, affecting build times.
2250pub const all_cpus = &[_]*const Cpu{2121pub const all_cpus = &[_]*const CpuModel{
2251 &cpu.arm1020e,2122 &cpu.arm1020e,
2252 &cpu.arm1020t,2123 &cpu.arm1020t,
2253 &cpu.arm1022e,2124 &cpu.arm1022e,