| author | |
| committer | |
| log | b0ce4f0996e24ad62501be325da7e402bcb3498e |
| tree | 60b4e81ece5025e3a3c959ceee5cdcd3b1f181fb |
| parent | 4df60441652914d3228bbd1dc3c05f64b8c16191 |
| signature | Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM |
Both on models and architecture levels this time.
As part of this, I removed neon from the baseline model because that isn't
actually part of the ARMv7 baseline on any platform I'm aware of, and it made
our baseline binaries not work on some real boards, e.g. Tegra 2. We keep
vfp3d16 since virtually every ARMv7 board has VFP.
To not regress PlayStation Vita performance, I also added a kermit model with
neon enabled. This was necessary since vortex_a9 lost all NEON/VFP features by
default.3 files changed, 171 insertions(+), 25 deletions(-)
lib/std/Target.zig+2-2| ... | @@ -2090,12 +2090,12 @@ pub const Cpu = struct { | ... | @@ -2090,12 +2090,12 @@ pub const Cpu = struct { |
| 2090 | .amdgcn => &amdgcn.cpu.gfx906, | 2090 | .amdgcn => &amdgcn.cpu.gfx906, |
| 2091 | .arm => switch (os.tag) { | 2091 | .arm => switch (os.tag) { |
| 2092 | .@"3ds" => &arm.cpu.mpcore, | 2092 | .@"3ds" => &arm.cpu.mpcore, |
| 2093 | .vita => &arm.cpu.cortex_a9, | 2093 | .vita => &arm.cpu.kermit, |
| 2094 | .gba => &arm.cpu.arm7tdmi, | 2094 | .gba => &arm.cpu.arm7tdmi, |
| 2095 | else => &arm.cpu.baseline, | 2095 | else => &arm.cpu.baseline, |
| 2096 | }, | 2096 | }, |
| 2097 | .thumb => switch (os.tag) { | 2097 | .thumb => switch (os.tag) { |
| 2098 | .vita => &arm.cpu.cortex_a9, | 2098 | .vita => &arm.cpu.kermit, |
| 2099 | .gba => &arm.cpu.arm7tdmi, | 2099 | .gba => &arm.cpu.arm7tdmi, |
| 2100 | else => &arm.cpu.baseline, | 2100 | else => &arm.cpu.baseline, |
| 2101 | }, | 2101 | }, |
lib/std/Target/arm.zig+35-22| ... | @@ -1200,7 +1200,6 @@ pub const all_features = blk: { | ... | @@ -1200,7 +1200,6 @@ pub const all_features = blk: { |
| 1200 | .db, | 1200 | .db, |
| 1201 | .dsp, | 1201 | .dsp, |
| 1202 | .has_v7, | 1202 | .has_v7, |
| 1203 | .neon, | ||
| 1204 | .perfmon, | 1203 | .perfmon, |
| 1205 | }), | 1204 | }), |
| 1206 | }; | 1205 | }; |
| ... | @@ -1250,7 +1249,6 @@ pub const all_features = blk: { | ... | @@ -1250,7 +1249,6 @@ pub const all_features = blk: { |
| 1250 | .dsp, | 1249 | .dsp, |
| 1251 | .has_v7, | 1250 | .has_v7, |
| 1252 | .mp, | 1251 | .mp, |
| 1253 | .neon, | ||
| 1254 | .perfmon, | 1252 | .perfmon, |
| 1255 | .trustzone, | 1253 | .trustzone, |
| 1256 | .virtualization, | 1254 | .virtualization, |
| ... | @@ -1262,12 +1260,12 @@ pub const all_features = blk: { | ... | @@ -1262,12 +1260,12 @@ pub const all_features = blk: { |
| 1262 | .dependencies = featureSet(&[_]Feature{ | 1260 | .dependencies = featureSet(&[_]Feature{ |
| 1263 | .aclass, | 1261 | .aclass, |
| 1264 | .crc, | 1262 | .crc, |
| 1265 | .crypto, | ||
| 1266 | .db, | 1263 | .db, |
| 1267 | .dsp, | 1264 | .dsp, |
| 1268 | .fp_armv8, | 1265 | .fp_armv8, |
| 1269 | .has_v8_1a, | 1266 | .has_v8_1a, |
| 1270 | .mp, | 1267 | .mp, |
| 1268 | .neon, | ||
| 1271 | .trustzone, | 1269 | .trustzone, |
| 1272 | .virtualization, | 1270 | .virtualization, |
| 1273 | }), | 1271 | }), |
| ... | @@ -1276,7 +1274,6 @@ pub const all_features = blk: { | ... | @@ -1276,7 +1274,6 @@ pub const all_features = blk: { |
| 1276 | .llvm_name = "armv8.1-m.main", | 1274 | .llvm_name = "armv8.1-m.main", |
| 1277 | .description = "ARMv81mMainline architecture", | 1275 | .description = "ARMv81mMainline architecture", |
| 1278 | .dependencies = featureSet(&[_]Feature{ | 1276 | .dependencies = featureSet(&[_]Feature{ |
| 1279 | .@"8msecext", | ||
| 1280 | .acquire_release, | 1277 | .acquire_release, |
| 1281 | .db, | 1278 | .db, |
| 1282 | .has_v8_1m_main, | 1279 | .has_v8_1m_main, |
| ... | @@ -1294,12 +1291,12 @@ pub const all_features = blk: { | ... | @@ -1294,12 +1291,12 @@ pub const all_features = blk: { |
| 1294 | .dependencies = featureSet(&[_]Feature{ | 1291 | .dependencies = featureSet(&[_]Feature{ |
| 1295 | .aclass, | 1292 | .aclass, |
| 1296 | .crc, | 1293 | .crc, |
| 1297 | .crypto, | ||
| 1298 | .db, | 1294 | .db, |
| 1299 | .dsp, | 1295 | .dsp, |
| 1300 | .fp_armv8, | 1296 | .fp_armv8, |
| 1301 | .has_v8_2a, | 1297 | .has_v8_2a, |
| 1302 | .mp, | 1298 | .mp, |
| 1299 | .neon, | ||
| 1303 | .ras, | 1300 | .ras, |
| 1304 | .trustzone, | 1301 | .trustzone, |
| 1305 | .virtualization, | 1302 | .virtualization, |
| ... | @@ -1311,12 +1308,12 @@ pub const all_features = blk: { | ... | @@ -1311,12 +1308,12 @@ pub const all_features = blk: { |
| 1311 | .dependencies = featureSet(&[_]Feature{ | 1308 | .dependencies = featureSet(&[_]Feature{ |
| 1312 | .aclass, | 1309 | .aclass, |
| 1313 | .crc, | 1310 | .crc, |
| 1314 | .crypto, | ||
| 1315 | .db, | 1311 | .db, |
| 1316 | .dsp, | 1312 | .dsp, |
| 1317 | .fp_armv8, | 1313 | .fp_armv8, |
| 1318 | .has_v8_3a, | 1314 | .has_v8_3a, |
| 1319 | .mp, | 1315 | .mp, |
| 1316 | .neon, | ||
| 1320 | .ras, | 1317 | .ras, |
| 1321 | .trustzone, | 1318 | .trustzone, |
| 1322 | .virtualization, | 1319 | .virtualization, |
| ... | @@ -1328,7 +1325,6 @@ pub const all_features = blk: { | ... | @@ -1328,7 +1325,6 @@ pub const all_features = blk: { |
| 1328 | .dependencies = featureSet(&[_]Feature{ | 1325 | .dependencies = featureSet(&[_]Feature{ |
| 1329 | .aclass, | 1326 | .aclass, |
| 1330 | .crc, | 1327 | .crc, |
| 1331 | .crypto, | ||
| 1332 | .db, | 1328 | .db, |
| 1333 | .dsp, | 1329 | .dsp, |
| 1334 | .fp_armv8, | 1330 | .fp_armv8, |
| ... | @@ -1345,7 +1341,6 @@ pub const all_features = blk: { | ... | @@ -1345,7 +1341,6 @@ pub const all_features = blk: { |
| 1345 | .dependencies = featureSet(&[_]Feature{ | 1341 | .dependencies = featureSet(&[_]Feature{ |
| 1346 | .aclass, | 1342 | .aclass, |
| 1347 | .crc, | 1343 | .crc, |
| 1348 | .crypto, | ||
| 1349 | .db, | 1344 | .db, |
| 1350 | .dsp, | 1345 | .dsp, |
| 1351 | .fp_armv8, | 1346 | .fp_armv8, |
| ... | @@ -1362,7 +1357,6 @@ pub const all_features = blk: { | ... | @@ -1362,7 +1357,6 @@ pub const all_features = blk: { |
| 1362 | .dependencies = featureSet(&[_]Feature{ | 1357 | .dependencies = featureSet(&[_]Feature{ |
| 1363 | .aclass, | 1358 | .aclass, |
| 1364 | .crc, | 1359 | .crc, |
| 1365 | .crypto, | ||
| 1366 | .db, | 1360 | .db, |
| 1367 | .dsp, | 1361 | .dsp, |
| 1368 | .fp_armv8, | 1362 | .fp_armv8, |
| ... | @@ -1379,7 +1373,6 @@ pub const all_features = blk: { | ... | @@ -1379,7 +1373,6 @@ pub const all_features = blk: { |
| 1379 | .dependencies = featureSet(&[_]Feature{ | 1373 | .dependencies = featureSet(&[_]Feature{ |
| 1380 | .aclass, | 1374 | .aclass, |
| 1381 | .crc, | 1375 | .crc, |
| 1382 | .crypto, | ||
| 1383 | .db, | 1376 | .db, |
| 1384 | .dsp, | 1377 | .dsp, |
| 1385 | .fp_armv8, | 1378 | .fp_armv8, |
| ... | @@ -1396,7 +1389,6 @@ pub const all_features = blk: { | ... | @@ -1396,7 +1389,6 @@ pub const all_features = blk: { |
| 1396 | .dependencies = featureSet(&[_]Feature{ | 1389 | .dependencies = featureSet(&[_]Feature{ |
| 1397 | .aclass, | 1390 | .aclass, |
| 1398 | .crc, | 1391 | .crc, |
| 1399 | .crypto, | ||
| 1400 | .db, | 1392 | .db, |
| 1401 | .dsp, | 1393 | .dsp, |
| 1402 | .fp_armv8, | 1394 | .fp_armv8, |
| ... | @@ -1413,7 +1405,6 @@ pub const all_features = blk: { | ... | @@ -1413,7 +1405,6 @@ pub const all_features = blk: { |
| 1413 | .dependencies = featureSet(&[_]Feature{ | 1405 | .dependencies = featureSet(&[_]Feature{ |
| 1414 | .aclass, | 1406 | .aclass, |
| 1415 | .crc, | 1407 | .crc, |
| 1416 | .crypto, | ||
| 1417 | .db, | 1408 | .db, |
| 1418 | .dsp, | 1409 | .dsp, |
| 1419 | .fp_armv8, | 1410 | .fp_armv8, |
| ... | @@ -1430,12 +1421,12 @@ pub const all_features = blk: { | ... | @@ -1430,12 +1421,12 @@ pub const all_features = blk: { |
| 1430 | .dependencies = featureSet(&[_]Feature{ | 1421 | .dependencies = featureSet(&[_]Feature{ |
| 1431 | .aclass, | 1422 | .aclass, |
| 1432 | .crc, | 1423 | .crc, |
| 1433 | .crypto, | ||
| 1434 | .db, | 1424 | .db, |
| 1435 | .dsp, | 1425 | .dsp, |
| 1436 | .fp_armv8, | 1426 | .fp_armv8, |
| 1437 | .has_v8, | 1427 | .has_v8, |
| 1438 | .mp, | 1428 | .mp, |
| 1429 | .neon, | ||
| 1439 | .trustzone, | 1430 | .trustzone, |
| 1440 | .virtualization, | 1431 | .virtualization, |
| 1441 | }), | 1432 | }), |
| ... | @@ -1444,7 +1435,6 @@ pub const all_features = blk: { | ... | @@ -1444,7 +1435,6 @@ pub const all_features = blk: { |
| 1444 | .llvm_name = "armv8-m.base", | 1435 | .llvm_name = "armv8-m.base", |
| 1445 | .description = "ARMv8mBaseline architecture", | 1436 | .description = "ARMv8mBaseline architecture", |
| 1446 | .dependencies = featureSet(&[_]Feature{ | 1437 | .dependencies = featureSet(&[_]Feature{ |
| 1447 | .@"8msecext", | ||
| 1448 | .acquire_release, | 1438 | .acquire_release, |
| 1449 | .db, | 1439 | .db, |
| 1450 | .has_v7clrex, | 1440 | .has_v7clrex, |
| ... | @@ -1460,7 +1450,6 @@ pub const all_features = blk: { | ... | @@ -1460,7 +1450,6 @@ pub const all_features = blk: { |
| 1460 | .llvm_name = "armv8-m.main", | 1450 | .llvm_name = "armv8-m.main", |
| 1461 | .description = "ARMv8mMainline architecture", | 1451 | .description = "ARMv8mMainline architecture", |
| 1462 | .dependencies = featureSet(&[_]Feature{ | 1452 | .dependencies = featureSet(&[_]Feature{ |
| 1463 | .@"8msecext", | ||
| 1464 | .acquire_release, | 1453 | .acquire_release, |
| 1465 | .db, | 1454 | .db, |
| 1466 | .has_v8m_main, | 1455 | .has_v8m_main, |
| ... | @@ -1523,7 +1512,6 @@ pub const all_features = blk: { | ... | @@ -1523,7 +1512,6 @@ pub const all_features = blk: { |
| 1523 | .dependencies = featureSet(&[_]Feature{ | 1512 | .dependencies = featureSet(&[_]Feature{ |
| 1524 | .aclass, | 1513 | .aclass, |
| 1525 | .crc, | 1514 | .crc, |
| 1526 | .crypto, | ||
| 1527 | .db, | 1515 | .db, |
| 1528 | .dsp, | 1516 | .dsp, |
| 1529 | .fp_armv8, | 1517 | .fp_armv8, |
| ... | @@ -1949,6 +1937,7 @@ pub const cpu = struct { | ... | @@ -1949,6 +1937,7 @@ pub const cpu = struct { |
| 1949 | .llvm_name = "generic", | 1937 | .llvm_name = "generic", |
| 1950 | .features = featureSet(&[_]Feature{ | 1938 | .features = featureSet(&[_]Feature{ |
| 1951 | .v7a, | 1939 | .v7a, |
| 1940 | .vfp3d16, | ||
| 1952 | }), | 1941 | }), |
| 1953 | }; | 1942 | }; |
| 1954 | pub const cortex_a12: CpuModel = .{ | 1943 | pub const cortex_a12: CpuModel = .{ |
| ... | @@ -1960,7 +1949,6 @@ pub const cpu = struct { | ... | @@ -1960,7 +1949,6 @@ pub const cpu = struct { |
| 1960 | .ret_addr_stack, | 1949 | .ret_addr_stack, |
| 1961 | .trustzone, | 1950 | .trustzone, |
| 1962 | .v7a, | 1951 | .v7a, |
| 1963 | .vfp4, | ||
| 1964 | .virtualization, | 1952 | .virtualization, |
| 1965 | .vmlx_forwarding, | 1953 | .vmlx_forwarding, |
| 1966 | }), | 1954 | }), |
| ... | @@ -1976,7 +1964,6 @@ pub const cpu = struct { | ... | @@ -1976,7 +1964,6 @@ pub const cpu = struct { |
| 1976 | .splat_vfp_neon, | 1964 | .splat_vfp_neon, |
| 1977 | .trustzone, | 1965 | .trustzone, |
| 1978 | .v7a, | 1966 | .v7a, |
| 1979 | .vfp4, | ||
| 1980 | .virtualization, | 1967 | .virtualization, |
| 1981 | .vldn_align, | 1968 | .vldn_align, |
| 1982 | }), | 1969 | }), |
| ... | @@ -1990,7 +1977,6 @@ pub const cpu = struct { | ... | @@ -1990,7 +1977,6 @@ pub const cpu = struct { |
| 1990 | .ret_addr_stack, | 1977 | .ret_addr_stack, |
| 1991 | .trustzone, | 1978 | .trustzone, |
| 1992 | .v7a, | 1979 | .v7a, |
| 1993 | .vfp4, | ||
| 1994 | .virtualization, | 1980 | .virtualization, |
| 1995 | .vmlx_forwarding, | 1981 | .vmlx_forwarding, |
| 1996 | }), | 1982 | }), |
| ... | @@ -2020,7 +2006,6 @@ pub const cpu = struct { | ... | @@ -2020,7 +2006,6 @@ pub const cpu = struct { |
| 2020 | .slowfpvmlx, | 2006 | .slowfpvmlx, |
| 2021 | .trustzone, | 2007 | .trustzone, |
| 2022 | .v7a, | 2008 | .v7a, |
| 2023 | .vfp4, | ||
| 2024 | .vmlx_forwarding, | 2009 | .vmlx_forwarding, |
| 2025 | }), | 2010 | }), |
| 2026 | }; | 2011 | }; |
| ... | @@ -2072,7 +2057,6 @@ pub const cpu = struct { | ... | @@ -2072,7 +2057,6 @@ pub const cpu = struct { |
| 2072 | .slowfpvmlx, | 2057 | .slowfpvmlx, |
| 2073 | .trustzone, | 2058 | .trustzone, |
| 2074 | .v7a, | 2059 | .v7a, |
| 2075 | .vfp4, | ||
| 2076 | .virtualization, | 2060 | .virtualization, |
| 2077 | .vmlx_forwarding, | 2061 | .vmlx_forwarding, |
| 2078 | .vmlx_hazards, | 2062 | .vmlx_hazards, |
| ... | @@ -2186,7 +2170,6 @@ pub const cpu = struct { | ... | @@ -2186,7 +2170,6 @@ pub const cpu = struct { |
| 2186 | .features = featureSet(&[_]Feature{ | 2170 | .features = featureSet(&[_]Feature{ |
| 2187 | .avoid_partial_cpsr, | 2171 | .avoid_partial_cpsr, |
| 2188 | .expand_fp_mlx, | 2172 | .expand_fp_mlx, |
| 2189 | .fp16, | ||
| 2190 | .mp, | 2173 | .mp, |
| 2191 | .muxed_units, | 2174 | .muxed_units, |
| 2192 | .neon_fpmovs, | 2175 | .neon_fpmovs, |
| ... | @@ -2322,6 +2305,7 @@ pub const cpu = struct { | ... | @@ -2322,6 +2305,7 @@ pub const cpu = struct { |
| 2322 | .name = "cortex_m85", | 2305 | .name = "cortex_m85", |
| 2323 | .llvm_name = "cortex-m85", | 2306 | .llvm_name = "cortex-m85", |
| 2324 | .features = featureSet(&[_]Feature{ | 2307 | .features = featureSet(&[_]Feature{ |
| 2308 | .@"8msecext", | ||
| 2325 | .branch_align_64, | 2309 | .branch_align_64, |
| 2326 | .dsp, | 2310 | .dsp, |
| 2327 | .m85, | 2311 | .m85, |
| ... | @@ -2434,6 +2418,7 @@ pub const cpu = struct { | ... | @@ -2434,6 +2418,7 @@ pub const cpu = struct { |
| 2434 | .features = featureSet(&[_]Feature{ | 2418 | .features = featureSet(&[_]Feature{ |
| 2435 | .avoid_movs_shop, | 2419 | .avoid_movs_shop, |
| 2436 | .avoid_partial_cpsr, | 2420 | .avoid_partial_cpsr, |
| 2421 | .crypto, | ||
| 2437 | .disable_postra_scheduler, | 2422 | .disable_postra_scheduler, |
| 2438 | .neonfp, | 2423 | .neonfp, |
| 2439 | .ret_addr_stack, | 2424 | .ret_addr_stack, |
| ... | @@ -2455,6 +2440,7 @@ pub const cpu = struct { | ... | @@ -2455,6 +2440,7 @@ pub const cpu = struct { |
| 2455 | .name = "exynos_m1", | 2440 | .name = "exynos_m1", |
| 2456 | .llvm_name = null, | 2441 | .llvm_name = null, |
| 2457 | .features = featureSet(&[_]Feature{ | 2442 | .features = featureSet(&[_]Feature{ |
| 2443 | .crypto, | ||
| 2458 | .expand_fp_mlx, | 2444 | .expand_fp_mlx, |
| 2459 | .fuse_aes, | 2445 | .fuse_aes, |
| 2460 | .fuse_literals, | 2446 | .fuse_literals, |
| ... | @@ -2475,6 +2461,7 @@ pub const cpu = struct { | ... | @@ -2475,6 +2461,7 @@ pub const cpu = struct { |
| 2475 | .name = "exynos_m2", | 2461 | .name = "exynos_m2", |
| 2476 | .llvm_name = null, | 2462 | .llvm_name = null, |
| 2477 | .features = featureSet(&[_]Feature{ | 2463 | .features = featureSet(&[_]Feature{ |
| 2464 | .crypto, | ||
| 2478 | .expand_fp_mlx, | 2465 | .expand_fp_mlx, |
| 2479 | .fuse_aes, | 2466 | .fuse_aes, |
| 2480 | .fuse_literals, | 2467 | .fuse_literals, |
| ... | @@ -2495,6 +2482,7 @@ pub const cpu = struct { | ... | @@ -2495,6 +2482,7 @@ pub const cpu = struct { |
| 2495 | .name = "exynos_m3", | 2482 | .name = "exynos_m3", |
| 2496 | .llvm_name = "exynos-m3", | 2483 | .llvm_name = "exynos-m3", |
| 2497 | .features = featureSet(&[_]Feature{ | 2484 | .features = featureSet(&[_]Feature{ |
| 2485 | .crypto, | ||
| 2498 | .expand_fp_mlx, | 2486 | .expand_fp_mlx, |
| 2499 | .fuse_aes, | 2487 | .fuse_aes, |
| 2500 | .fuse_literals, | 2488 | .fuse_literals, |
| ... | @@ -2515,6 +2503,7 @@ pub const cpu = struct { | ... | @@ -2515,6 +2503,7 @@ pub const cpu = struct { |
| 2515 | .name = "exynos_m4", | 2503 | .name = "exynos_m4", |
| 2516 | .llvm_name = "exynos-m4", | 2504 | .llvm_name = "exynos-m4", |
| 2517 | .features = featureSet(&[_]Feature{ | 2505 | .features = featureSet(&[_]Feature{ |
| 2506 | .crypto, | ||
| 2518 | .dotprod, | 2507 | .dotprod, |
| 2519 | .expand_fp_mlx, | 2508 | .expand_fp_mlx, |
| 2520 | .fullfp16, | 2509 | .fullfp16, |
| ... | @@ -2537,6 +2526,7 @@ pub const cpu = struct { | ... | @@ -2537,6 +2526,7 @@ pub const cpu = struct { |
| 2537 | .name = "exynos_m5", | 2526 | .name = "exynos_m5", |
| 2538 | .llvm_name = "exynos-m5", | 2527 | .llvm_name = "exynos-m5", |
| 2539 | .features = featureSet(&[_]Feature{ | 2528 | .features = featureSet(&[_]Feature{ |
| 2529 | .crypto, | ||
| 2540 | .dotprod, | 2530 | .dotprod, |
| 2541 | .expand_fp_mlx, | 2531 | .expand_fp_mlx, |
| 2542 | .fullfp16, | 2532 | .fullfp16, |
| ... | @@ -2567,6 +2557,26 @@ pub const cpu = struct { | ... | @@ -2567,6 +2557,26 @@ pub const cpu = struct { |
| 2567 | .v5te, | 2557 | .v5te, |
| 2568 | }), | 2558 | }), |
| 2569 | }; | 2559 | }; |
| 2560 | pub const kermit: CpuModel = .{ | ||
| 2561 | .name = "kermit", | ||
| 2562 | .llvm_name = "cortex-a9", | ||
| 2563 | .features = featureSet(&[_]Feature{ | ||
| 2564 | .avoid_partial_cpsr, | ||
| 2565 | .expand_fp_mlx, | ||
| 2566 | .fp16, | ||
| 2567 | .mp, | ||
| 2568 | .muxed_units, | ||
| 2569 | .neon, | ||
| 2570 | .neon_fpmovs, | ||
| 2571 | .prefer_vmovsr, | ||
| 2572 | .ret_addr_stack, | ||
| 2573 | .trustzone, | ||
| 2574 | .v7a, | ||
| 2575 | .vldn_align, | ||
| 2576 | .vmlx_forwarding, | ||
| 2577 | .vmlx_hazards, | ||
| 2578 | }), | ||
| 2579 | }; | ||
| 2570 | pub const krait: CpuModel = .{ | 2580 | pub const krait: CpuModel = .{ |
| 2571 | .name = "krait", | 2581 | .name = "krait", |
| 2572 | .llvm_name = "krait", | 2582 | .llvm_name = "krait", |
| ... | @@ -2575,6 +2585,7 @@ pub const cpu = struct { | ... | @@ -2575,6 +2585,7 @@ pub const cpu = struct { |
| 2575 | .hwdiv, | 2585 | .hwdiv, |
| 2576 | .hwdiv_arm, | 2586 | .hwdiv_arm, |
| 2577 | .muxed_units, | 2587 | .muxed_units, |
| 2588 | .neon, | ||
| 2578 | .ret_addr_stack, | 2589 | .ret_addr_stack, |
| 2579 | .v7a, | 2590 | .v7a, |
| 2580 | .vfp4, | 2591 | .vfp4, |
| ... | @@ -2586,6 +2597,7 @@ pub const cpu = struct { | ... | @@ -2586,6 +2597,7 @@ pub const cpu = struct { |
| 2586 | .name = "kryo", | 2597 | .name = "kryo", |
| 2587 | .llvm_name = "kryo", | 2598 | .llvm_name = "kryo", |
| 2588 | .features = featureSet(&[_]Feature{ | 2599 | .features = featureSet(&[_]Feature{ |
| 2600 | .crypto, | ||
| 2589 | .v8a, | 2601 | .v8a, |
| 2590 | }), | 2602 | }), |
| 2591 | }; | 2603 | }; |
| ... | @@ -2715,6 +2727,7 @@ pub const cpu = struct { | ... | @@ -2715,6 +2727,7 @@ pub const cpu = struct { |
| 2715 | .hwdiv, | 2727 | .hwdiv, |
| 2716 | .hwdiv_arm, | 2728 | .hwdiv_arm, |
| 2717 | .mp, | 2729 | .mp, |
| 2730 | .neon, | ||
| 2718 | .neonfp, | 2731 | .neonfp, |
| 2719 | .prefer_ishst, | 2732 | .prefer_ishst, |
| 2720 | .prof_unpr, | 2733 | .prof_unpr, |
tools/update_cpu_features.zig+134-1| ... | @@ -843,6 +843,7 @@ const targets = [_]ArchTarget{ | ... | @@ -843,6 +843,7 @@ const targets = [_]ArchTarget{ |
| 843 | .{ | 843 | .{ |
| 844 | .llvm_name = "armv7-a", | 844 | .llvm_name = "armv7-a", |
| 845 | .zig_name = "v7a", | 845 | .zig_name = "v7a", |
| 846 | .omit_deps = &.{"neon"}, | ||
| 846 | }, | 847 | }, |
| 847 | .{ | 848 | .{ |
| 848 | .llvm_name = "armv7-m", | 849 | .llvm_name = "armv7-m", |
| ... | @@ -867,58 +868,72 @@ const targets = [_]ArchTarget{ | ... | @@ -867,58 +868,72 @@ const targets = [_]ArchTarget{ |
| 867 | .{ | 868 | .{ |
| 868 | .llvm_name = "armv7ve", | 869 | .llvm_name = "armv7ve", |
| 869 | .zig_name = "v7ve", | 870 | .zig_name = "v7ve", |
| 871 | .omit_deps = &.{"neon"}, | ||
| 870 | }, | 872 | }, |
| 871 | .{ | 873 | .{ |
| 872 | .llvm_name = "armv8.1-a", | 874 | .llvm_name = "armv8.1-a", |
| 873 | .zig_name = "v8_1a", | 875 | .zig_name = "v8_1a", |
| 876 | .omit_deps = &.{"crypto"}, | ||
| 874 | }, | 877 | }, |
| 875 | .{ | 878 | .{ |
| 876 | .llvm_name = "armv8.1-m.main", | 879 | .llvm_name = "armv8.1-m.main", |
| 877 | .zig_name = "v8_1m_main", | 880 | .zig_name = "v8_1m_main", |
| 881 | .omit_deps = &.{"8msecext"}, | ||
| 878 | }, | 882 | }, |
| 879 | .{ | 883 | .{ |
| 880 | .llvm_name = "armv8.2-a", | 884 | .llvm_name = "armv8.2-a", |
| 881 | .zig_name = "v8_2a", | 885 | .zig_name = "v8_2a", |
| 886 | .omit_deps = &.{"crypto"}, | ||
| 882 | }, | 887 | }, |
| 883 | .{ | 888 | .{ |
| 884 | .llvm_name = "armv8.3-a", | 889 | .llvm_name = "armv8.3-a", |
| 885 | .zig_name = "v8_3a", | 890 | .zig_name = "v8_3a", |
| 891 | .omit_deps = &.{"crypto"}, | ||
| 886 | }, | 892 | }, |
| 887 | .{ | 893 | .{ |
| 888 | .llvm_name = "armv8.4-a", | 894 | .llvm_name = "armv8.4-a", |
| 889 | .zig_name = "v8_4a", | 895 | .zig_name = "v8_4a", |
| 896 | .omit_deps = &.{"crypto"}, | ||
| 890 | }, | 897 | }, |
| 891 | .{ | 898 | .{ |
| 892 | .llvm_name = "armv8.5-a", | 899 | .llvm_name = "armv8.5-a", |
| 893 | .zig_name = "v8_5a", | 900 | .zig_name = "v8_5a", |
| 901 | .omit_deps = &.{"crypto"}, | ||
| 894 | }, | 902 | }, |
| 895 | .{ | 903 | .{ |
| 896 | .llvm_name = "armv8.6-a", | 904 | .llvm_name = "armv8.6-a", |
| 897 | .zig_name = "v8_6a", | 905 | .zig_name = "v8_6a", |
| 906 | .omit_deps = &.{"crypto"}, | ||
| 898 | }, | 907 | }, |
| 899 | .{ | 908 | .{ |
| 900 | .llvm_name = "armv8.7-a", | 909 | .llvm_name = "armv8.7-a", |
| 901 | .zig_name = "v8_7a", | 910 | .zig_name = "v8_7a", |
| 911 | .omit_deps = &.{"crypto"}, | ||
| 902 | }, | 912 | }, |
| 903 | .{ | 913 | .{ |
| 904 | .llvm_name = "armv8.8-a", | 914 | .llvm_name = "armv8.8-a", |
| 905 | .zig_name = "v8_8a", | 915 | .zig_name = "v8_8a", |
| 916 | .omit_deps = &.{"crypto"}, | ||
| 906 | }, | 917 | }, |
| 907 | .{ | 918 | .{ |
| 908 | .llvm_name = "armv8.9-a", | 919 | .llvm_name = "armv8.9-a", |
| 909 | .zig_name = "v8_9a", | 920 | .zig_name = "v8_9a", |
| 921 | .omit_deps = &.{"crypto"}, | ||
| 910 | }, | 922 | }, |
| 911 | .{ | 923 | .{ |
| 912 | .llvm_name = "armv8-a", | 924 | .llvm_name = "armv8-a", |
| 913 | .zig_name = "v8a", | 925 | .zig_name = "v8a", |
| 926 | .omit_deps = &.{"crypto"}, | ||
| 914 | }, | 927 | }, |
| 915 | .{ | 928 | .{ |
| 916 | .llvm_name = "armv8-m.base", | 929 | .llvm_name = "armv8-m.base", |
| 917 | .zig_name = "v8m", | 930 | .zig_name = "v8m", |
| 931 | .omit_deps = &.{"8msecext"}, | ||
| 918 | }, | 932 | }, |
| 919 | .{ | 933 | .{ |
| 920 | .llvm_name = "armv8-m.main", | 934 | .llvm_name = "armv8-m.main", |
| 921 | .zig_name = "v8m_main", | 935 | .zig_name = "v8m_main", |
| 936 | .omit_deps = &.{"8msecext"}, | ||
| 922 | }, | 937 | }, |
| 923 | .{ | 938 | .{ |
| 924 | .llvm_name = "armv8-r", | 939 | .llvm_name = "armv8-r", |
| ... | @@ -935,6 +950,7 @@ const targets = [_]ArchTarget{ | ... | @@ -935,6 +950,7 @@ const targets = [_]ArchTarget{ |
| 935 | .{ | 950 | .{ |
| 936 | .llvm_name = "armv9.3-a", | 951 | .llvm_name = "armv9.3-a", |
| 937 | .zig_name = "v9_3a", | 952 | .zig_name = "v9_3a", |
| 953 | .omit_deps = &.{"crypto"}, | ||
| 938 | }, | 954 | }, |
| 939 | .{ | 955 | .{ |
| 940 | .llvm_name = "armv9.4-a", | 956 | .llvm_name = "armv9.4-a", |
| ... | @@ -1101,6 +1117,78 @@ const targets = [_]ArchTarget{ | ... | @@ -1101,6 +1117,78 @@ const targets = [_]ArchTarget{ |
| 1101 | }, | 1117 | }, |
| 1102 | }, | 1118 | }, |
| 1103 | .model_overrides = &.{ | 1119 | .model_overrides = &.{ |
| 1120 | .{ | ||
| 1121 | .llvm_name = "cortex-a5", | ||
| 1122 | .omit_deps = &.{"vfp4"}, | ||
| 1123 | }, | ||
| 1124 | .{ | ||
| 1125 | .llvm_name = "cortex-a7", | ||
| 1126 | .omit_deps = &.{"vfp4"}, | ||
| 1127 | }, | ||
| 1128 | .{ | ||
| 1129 | .llvm_name = "cortex-a9", | ||
| 1130 | .omit_deps = &.{"fp16"}, | ||
| 1131 | }, | ||
| 1132 | .{ | ||
| 1133 | .llvm_name = "cortex-a12", | ||
| 1134 | .omit_deps = &.{"vfp4"}, | ||
| 1135 | }, | ||
| 1136 | .{ | ||
| 1137 | .llvm_name = "cortex-a15", | ||
| 1138 | .omit_deps = &.{"vfp4"}, | ||
| 1139 | }, | ||
| 1140 | .{ | ||
| 1141 | .llvm_name = "cortex-a17", | ||
| 1142 | .omit_deps = &.{"vfp4"}, | ||
| 1143 | }, | ||
| 1144 | .{ | ||
| 1145 | .llvm_name = "cortex-a32", | ||
| 1146 | .omit_deps = &.{"crypto"}, | ||
| 1147 | }, | ||
| 1148 | .{ | ||
| 1149 | .llvm_name = "cortex-a35", | ||
| 1150 | .omit_deps = &.{"crypto"}, | ||
| 1151 | }, | ||
| 1152 | .{ | ||
| 1153 | .llvm_name = "cortex-a53", | ||
| 1154 | .omit_deps = &.{"crypto"}, | ||
| 1155 | }, | ||
| 1156 | .{ | ||
| 1157 | .llvm_name = "cortex-a57", | ||
| 1158 | .omit_deps = &.{"crypto"}, | ||
| 1159 | }, | ||
| 1160 | .{ | ||
| 1161 | .llvm_name = "cortex-a72", | ||
| 1162 | .omit_deps = &.{"crypto"}, | ||
| 1163 | }, | ||
| 1164 | .{ | ||
| 1165 | .llvm_name = "cortex-a73", | ||
| 1166 | .omit_deps = &.{"crypto"}, | ||
| 1167 | }, | ||
| 1168 | .{ | ||
| 1169 | .llvm_name = "cortex-a76", | ||
| 1170 | .omit_deps = &.{"crypto"}, | ||
| 1171 | }, | ||
| 1172 | .{ | ||
| 1173 | .llvm_name = "cortex-a76ae", | ||
| 1174 | .omit_deps = &.{"crypto"}, | ||
| 1175 | }, | ||
| 1176 | .{ | ||
| 1177 | .llvm_name = "cortex-a77", | ||
| 1178 | .omit_deps = &.{"crypto"}, | ||
| 1179 | }, | ||
| 1180 | .{ | ||
| 1181 | .llvm_name = "cortex-a78", | ||
| 1182 | .omit_deps = &.{"crypto"}, | ||
| 1183 | }, | ||
| 1184 | .{ | ||
| 1185 | .llvm_name = "cortex-a78ae", | ||
| 1186 | .omit_deps = &.{"crypto"}, | ||
| 1187 | }, | ||
| 1188 | .{ | ||
| 1189 | .llvm_name = "cortex-a78c", | ||
| 1190 | .omit_deps = &.{"crypto"}, | ||
| 1191 | }, | ||
| 1104 | .{ | 1192 | .{ |
| 1105 | .llvm_name = "cortex-m4", | 1193 | .llvm_name = "cortex-m4", |
| 1106 | .omit_deps = &.{"vfp4d16sp"}, | 1194 | .omit_deps = &.{"vfp4d16sp"}, |
| ... | @@ -1127,6 +1215,7 @@ const targets = [_]ArchTarget{ | ... | @@ -1127,6 +1215,7 @@ const targets = [_]ArchTarget{ |
| 1127 | }, | 1215 | }, |
| 1128 | .{ | 1216 | .{ |
| 1129 | .llvm_name = "cortex-m85", | 1217 | .llvm_name = "cortex-m85", |
| 1218 | .extra_deps = &.{"8msecext"}, | ||
| 1130 | .omit_deps = &.{ "fp_armv8d16", "mve_fp", "pacbti" }, | 1219 | .omit_deps = &.{ "fp_armv8d16", "mve_fp", "pacbti" }, |
| 1131 | }, | 1220 | }, |
| 1132 | .{ | 1221 | .{ |
| ... | @@ -1149,6 +1238,26 @@ const targets = [_]ArchTarget{ | ... | @@ -1149,6 +1238,26 @@ const targets = [_]ArchTarget{ |
| 1149 | .llvm_name = "cortex-r52plus", | 1238 | .llvm_name = "cortex-r52plus", |
| 1150 | .omit_deps = &.{ "fp_armv8", "neon" }, | 1239 | .omit_deps = &.{ "fp_armv8", "neon" }, |
| 1151 | }, | 1240 | }, |
| 1241 | .{ | ||
| 1242 | .llvm_name = "cortex-x1", | ||
| 1243 | .omit_deps = &.{"crypto"}, | ||
| 1244 | }, | ||
| 1245 | .{ | ||
| 1246 | .llvm_name = "cortex-x1c", | ||
| 1247 | .omit_deps = &.{"crypto"}, | ||
| 1248 | }, | ||
| 1249 | .{ | ||
| 1250 | .llvm_name = "krait", | ||
| 1251 | .extra_deps = &.{"neon"}, | ||
| 1252 | }, | ||
| 1253 | .{ | ||
| 1254 | .llvm_name = "neoverse-n1", | ||
| 1255 | .omit_deps = &.{"crypto"}, | ||
| 1256 | }, | ||
| 1257 | .{ | ||
| 1258 | .llvm_name = "neoverse-v1", | ||
| 1259 | .omit_deps = &.{"crypto"}, | ||
| 1260 | }, | ||
| 1152 | .{ | 1261 | .{ |
| 1153 | .llvm_name = "star-mc1", | 1262 | .llvm_name = "star-mc1", |
| 1154 | .omit_deps = &.{ "dsp", "fp_armv8d16sp" }, | 1263 | .omit_deps = &.{ "dsp", "fp_armv8d16sp" }, |
| ... | @@ -1157,12 +1266,16 @@ const targets = [_]ArchTarget{ | ... | @@ -1157,12 +1266,16 @@ const targets = [_]ArchTarget{ |
| 1157 | .llvm_name = "star-mc3", | 1266 | .llvm_name = "star-mc3", |
| 1158 | .omit_deps = &.{ "fp_armv8d16", "mve_fp", "pacbti" }, | 1267 | .omit_deps = &.{ "fp_armv8d16", "mve_fp", "pacbti" }, |
| 1159 | }, | 1268 | }, |
| 1269 | .{ | ||
| 1270 | .llvm_name = "swift", | ||
| 1271 | .extra_deps = &.{"neon"}, | ||
| 1272 | }, | ||
| 1160 | }, | 1273 | }, |
| 1161 | .extra_models = &.{ | 1274 | .extra_models = &.{ |
| 1162 | .{ | 1275 | .{ |
| 1163 | .llvm_name = "generic", | 1276 | .llvm_name = "generic", |
| 1164 | .zig_name = "baseline", | 1277 | .zig_name = "baseline", |
| 1165 | .features = &.{"v7a"}, | 1278 | .features = &.{ "v7a", "vfp3d16" }, |
| 1166 | }, | 1279 | }, |
| 1167 | .{ | 1280 | .{ |
| 1168 | .llvm_name = null, | 1281 | .llvm_name = null, |
| ... | @@ -1174,6 +1287,26 @@ const targets = [_]ArchTarget{ | ... | @@ -1174,6 +1287,26 @@ const targets = [_]ArchTarget{ |
| 1174 | .zig_name = "exynos_m2", | 1287 | .zig_name = "exynos_m2", |
| 1175 | .features = &.{ "v8a", "exynos" }, | 1288 | .features = &.{ "v8a", "exynos" }, |
| 1176 | }, | 1289 | }, |
| 1290 | .{ | ||
| 1291 | .llvm_name = "cortex-a9", | ||
| 1292 | .zig_name = "kermit", | ||
| 1293 | .features = &.{ | ||
| 1294 | "avoid_partial_cpsr", | ||
| 1295 | "expand_fp_mlx", | ||
| 1296 | "fp16", | ||
| 1297 | "mp", | ||
| 1298 | "muxed_units", | ||
| 1299 | "neon", | ||
| 1300 | "neon_fpmovs", | ||
| 1301 | "prefer_vmovsr", | ||
| 1302 | "ret_addr_stack", | ||
| 1303 | "trustzone", | ||
| 1304 | "v7a", | ||
| 1305 | "vldn_align", | ||
| 1306 | "vmlx_forwarding", | ||
| 1307 | "vmlx_hazards", | ||
| 1308 | }, | ||
| 1309 | }, | ||
| 1177 | }, | 1310 | }, |
| 1178 | }, | 1311 | }, |
| 1179 | .{ | 1312 | .{ |