aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-02-27 21:10:00 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-02-27 21:10:00 -0700
commitab36a162d07ee66724bd369e2b19b81ae6fba6ea (patch)
tree604fd4ffb096c142c4aadd4122ddf9266a490525 /lib
parent85ab1b01e73d9b616f8af3951c132920e61be731 (diff)
downloadzig-ab36a162d07ee66724bd369e2b19b81ae6fba6ea.tar.gz
zig-ab36a162d07ee66724bd369e2b19b81ae6fba6ea.zip
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.
Diffstat (limited to 'lib')
-rw-r--r--lib/std/target/arm.zig492
1 files changed, 223 insertions, 269 deletions
diff --git a/lib/std/target/arm.zig b/lib/std/target/arm.zig
index b717120de3..ecd08f2861 100644
--- a/lib/std/target/arm.zig
+++ b/lib/std/target/arm.zig
@@ -1,8 +1,5 @@
-// SPDX-License-Identifier: MIT
-// Copyright (c) 2015-2021 Zig Contributors
-// This file is part of [zig](https://ziglang.org/), which is MIT licensed.
-// The MIT license requires this copyright notice to be included in all copies
-// and substantial portions of the software.
+//! This file is auto-generated by tools/update_cpu_features.zig.
+
const std = @import("../std.zig");
const CpuFeature = std.Target.Cpu.Feature;
const CpuModel = std.Target.Cpu.Model;
@@ -53,6 +50,8 @@ pub const Feature = enum {
fullfp16,
fuse_aes,
fuse_literals,
+ harden_sls_blr,
+ harden_sls_retbr,
has_v4t,
has_v5t,
has_v5te,
@@ -62,6 +61,7 @@ pub const Feature = enum {
has_v6t2,
has_v7,
has_v7clrex,
+ has_v8,
has_v8_1a,
has_v8_1m_main,
has_v8_2a,
@@ -69,7 +69,7 @@ pub const Feature = enum {
has_v8_4a,
has_v8_5a,
has_v8_6a,
- has_v8,
+ has_v8_7a,
has_v8m,
has_v8m_main,
hwdiv,
@@ -85,10 +85,10 @@ pub const Feature = enum {
mp,
muxed_units,
mve,
- mve_fp,
mve1beat,
mve2beat,
mve4beat,
+ mve_fp,
nacl_trap,
neon,
neon_fpmovs,
@@ -148,10 +148,6 @@ pub const Feature = enum {
v7r,
v7s,
v7ve,
- v8a,
- v8m,
- v8m_main,
- v8r,
v8_1a,
v8_1m_main,
v8_2a,
@@ -159,6 +155,11 @@ pub const Feature = enum {
v8_4a,
v8_5a,
v8_6a,
+ v8_7a,
+ v8a,
+ v8m,
+ v8m_main,
+ v8r,
vfp2,
vfp2sp,
vfp3,
@@ -238,7 +239,7 @@ pub const all_features = blk: {
.llvm_name = "cde",
.description = "Support CDE instructions",
.dependencies = featureSet(&[_]Feature{
- .v8m_main,
+ .has_v8m_main,
}),
};
result[@enumToInt(Feature.cdecp0)] = .{
@@ -312,7 +313,6 @@ pub const all_features = blk: {
.description = "Enable support for Cryptography extensions",
.dependencies = featureSet(&[_]Feature{
.aes,
- .neon,
.sha2,
}),
};
@@ -419,7 +419,6 @@ pub const all_features = blk: {
.description = "Enable ARMv8 FP with only 16 d-registers",
.dependencies = featureSet(&[_]Feature{
.fp_armv8d16sp,
- .fp64,
.vfp4d16,
}),
};
@@ -434,7 +433,6 @@ pub const all_features = blk: {
.llvm_name = "fp-armv8sp",
.description = "Enable ARMv8 FP with no double precision",
.dependencies = featureSet(&[_]Feature{
- .d32,
.fp_armv8d16sp,
.vfp4sp,
}),
@@ -481,6 +479,16 @@ pub const all_features = blk: {
.description = "CPU fuses literal generation operations",
.dependencies = featureSet(&[_]Feature{}),
};
+ result[@enumToInt(Feature.harden_sls_blr)] = .{
+ .llvm_name = "harden-sls-blr",
+ .description = "Harden against straight line speculation across indirect calls",
+ .dependencies = featureSet(&[_]Feature{}),
+ };
+ result[@enumToInt(Feature.harden_sls_retbr)] = .{
+ .llvm_name = "harden-sls-retbr",
+ .description = "Harden against straight line speculation across RETurn and BranchRegister instructions",
+ .dependencies = featureSet(&[_]Feature{}),
+ };
result[@enumToInt(Feature.has_v4t)] = .{
.llvm_name = "v4t",
.description = "Support ARM v4T instructions",
@@ -525,18 +533,18 @@ pub const all_features = blk: {
.llvm_name = "v6t2",
.description = "Support ARM v6t2 instructions",
.dependencies = featureSet(&[_]Feature{
- .thumb2,
.has_v6k,
.has_v8m,
+ .thumb2,
}),
};
result[@enumToInt(Feature.has_v7)] = .{
.llvm_name = "v7",
.description = "Support ARM v7 instructions",
.dependencies = featureSet(&[_]Feature{
- .perfmon,
.has_v6t2,
.has_v7clrex,
+ .perfmon,
}),
};
result[@enumToInt(Feature.has_v7clrex)] = .{
@@ -592,8 +600,8 @@ pub const all_features = blk: {
.llvm_name = "v8.5a",
.description = "Support ARM v8.5a instructions",
.dependencies = featureSet(&[_]Feature{
- .sb,
.has_v8_4a,
+ .sb,
}),
};
result[@enumToInt(Feature.has_v8_6a)] = .{
@@ -601,8 +609,15 @@ pub const all_features = blk: {
.description = "Support ARM v8.6a instructions",
.dependencies = featureSet(&[_]Feature{
.bf16,
- .i8mm,
.has_v8_5a,
+ .i8mm,
+ }),
+ };
+ result[@enumToInt(Feature.has_v8_7a)] = .{
+ .llvm_name = "v8.7a",
+ .description = "Support ARM v8.7a instructions",
+ .dependencies = featureSet(&[_]Feature{
+ .has_v8_6a,
}),
};
result[@enumToInt(Feature.has_v8m)] = .{
@@ -640,14 +655,14 @@ pub const all_features = blk: {
.llvm_name = "iwmmxt",
.description = "ARMv5te architecture",
.dependencies = featureSet(&[_]Feature{
- .has_v5te,
+ .v5te,
}),
};
result[@enumToInt(Feature.iwmmxt2)] = .{
.llvm_name = "iwmmxt2",
.description = "ARMv5te architecture",
.dependencies = featureSet(&[_]Feature{
- .has_v5te,
+ .v5te,
}),
};
result[@enumToInt(Feature.lob)] = .{
@@ -695,15 +710,6 @@ pub const all_features = blk: {
.has_v8_1m_main,
}),
};
- result[@enumToInt(Feature.mve_fp)] = .{
- .llvm_name = "mve.fp",
- .description = "Support M-Class Vector Extension with integer and floating ops",
- .dependencies = featureSet(&[_]Feature{
- .fp_armv8d16sp,
- .fullfp16,
- .mve,
- }),
- };
result[@enumToInt(Feature.mve1beat)] = .{
.llvm_name = "mve1beat",
.description = "Model MVE instructions as a 1 beat per tick architecture",
@@ -719,6 +725,14 @@ pub const all_features = blk: {
.description = "Model MVE instructions as a 4 beats per tick architecture",
.dependencies = featureSet(&[_]Feature{}),
};
+ result[@enumToInt(Feature.mve_fp)] = .{
+ .llvm_name = "mve.fp",
+ .description = "Support M-Class Vector Extension with integer and floating ops",
+ .dependencies = featureSet(&[_]Feature{
+ .fullfp16,
+ .mve,
+ }),
+ };
result[@enumToInt(Feature.nacl_trap)] = .{
.llvm_name = "nacl-trap",
.description = "NaCl trap",
@@ -944,32 +958,32 @@ pub const all_features = blk: {
.llvm_name = "armv4t",
.description = "ARMv4t architecture",
.dependencies = featureSet(&[_]Feature{
- .strict_align,
.has_v4t,
+ .strict_align,
}),
};
result[@enumToInt(Feature.v5t)] = .{
.llvm_name = "armv5t",
.description = "ARMv5t architecture",
.dependencies = featureSet(&[_]Feature{
- .strict_align,
.has_v5t,
+ .strict_align,
}),
};
result[@enumToInt(Feature.v5te)] = .{
.llvm_name = "armv5te",
.description = "ARMv5te architecture",
.dependencies = featureSet(&[_]Feature{
- .strict_align,
.has_v5te,
+ .strict_align,
}),
};
result[@enumToInt(Feature.v5tej)] = .{
.llvm_name = "armv5tej",
.description = "ARMv5tej architecture",
.dependencies = featureSet(&[_]Feature{
- .strict_align,
.has_v5te,
+ .strict_align,
}),
};
result[@enumToInt(Feature.v6)] = .{
@@ -980,18 +994,6 @@ pub const all_features = blk: {
.has_v6,
}),
};
- result[@enumToInt(Feature.v6m)] = .{
- .llvm_name = "armv6-m",
- .description = "ARMv6m architecture",
- .dependencies = featureSet(&[_]Feature{
- .db,
- .mclass,
- .noarm,
- .strict_align,
- .thumb_mode,
- .has_v6m,
- }),
- };
result[@enumToInt(Feature.v6j)] = .{
.llvm_name = "armv6j",
.description = "ARMv7a architecture",
@@ -1010,8 +1012,20 @@ pub const all_features = blk: {
.llvm_name = "armv6kz",
.description = "ARMv6kz architecture",
.dependencies = featureSet(&[_]Feature{
- .trustzone,
.has_v6k,
+ .trustzone,
+ }),
+ };
+ result[@enumToInt(Feature.v6m)] = .{
+ .llvm_name = "armv6-m",
+ .description = "ARMv6m architecture",
+ .dependencies = featureSet(&[_]Feature{
+ .db,
+ .has_v6m,
+ .mclass,
+ .noarm,
+ .strict_align,
+ .thumb_mode,
}),
};
result[@enumToInt(Feature.v6sm)] = .{
@@ -1019,11 +1033,11 @@ pub const all_features = blk: {
.description = "ARMv6sm architecture",
.dependencies = featureSet(&[_]Feature{
.db,
+ .has_v6m,
.mclass,
.noarm,
.strict_align,
.thumb_mode,
- .has_v6m,
}),
};
result[@enumToInt(Feature.v6t2)] = .{
@@ -1041,53 +1055,51 @@ pub const all_features = blk: {
.aclass,
.db,
.dsp,
- .neon,
.has_v7,
+ .neon,
}),
};
- result[@enumToInt(Feature.v7m)] = .{
- .llvm_name = "armv7-m",
- .description = "ARMv7m architecture",
+ result[@enumToInt(Feature.v7em)] = .{
+ .llvm_name = "armv7e-m",
+ .description = "ARMv7em architecture",
.dependencies = featureSet(&[_]Feature{
.db,
+ .dsp,
+ .has_v7,
.hwdiv,
.mclass,
.noarm,
.thumb_mode,
- .thumb2,
- .has_v7,
}),
};
- result[@enumToInt(Feature.v7r)] = .{
- .llvm_name = "armv7-r",
- .description = "ARMv7r architecture",
+ result[@enumToInt(Feature.v7k)] = .{
+ .llvm_name = "armv7k",
+ .description = "ARMv7a architecture",
.dependencies = featureSet(&[_]Feature{
- .db,
- .dsp,
- .hwdiv,
- .rclass,
- .has_v7,
+ .v7a,
}),
};
- result[@enumToInt(Feature.v7em)] = .{
- .llvm_name = "armv7e-m",
- .description = "ARMv7em architecture",
+ result[@enumToInt(Feature.v7m)] = .{
+ .llvm_name = "armv7-m",
+ .description = "ARMv7m architecture",
.dependencies = featureSet(&[_]Feature{
.db,
- .dsp,
+ .has_v7,
.hwdiv,
.mclass,
.noarm,
.thumb_mode,
- .thumb2,
- .has_v7,
}),
};
- result[@enumToInt(Feature.v7k)] = .{
- .llvm_name = "armv7k",
- .description = "ARMv7a architecture",
+ result[@enumToInt(Feature.v7r)] = .{
+ .llvm_name = "armv7-r",
+ .description = "ARMv7r architecture",
.dependencies = featureSet(&[_]Feature{
- .v7a,
+ .db,
+ .dsp,
+ .has_v7,
+ .hwdiv,
+ .rclass,
}),
};
result[@enumToInt(Feature.v7s)] = .{
@@ -1104,73 +1116,10 @@ pub const all_features = blk: {
.aclass,
.db,
.dsp,
- .mp,
- .neon,
- .trustzone,
.has_v7,
- .virtualization,
- }),
- };
- result[@enumToInt(Feature.v8a)] = .{
- .llvm_name = "armv8-a",
- .description = "ARMv8a architecture",
- .dependencies = featureSet(&[_]Feature{
- .aclass,
- .crc,
- .crypto,
- .db,
- .dsp,
- .fp_armv8,
.mp,
.neon,
.trustzone,
- .has_v8,
- .virtualization,
- }),
- };
- result[@enumToInt(Feature.v8m)] = .{
- .llvm_name = "armv8-m.base",
- .description = "ARMv8mBaseline architecture",
- .dependencies = featureSet(&[_]Feature{
- .@"8msecext",
- .acquire_release,
- .db,
- .hwdiv,
- .mclass,
- .noarm,
- .strict_align,
- .thumb_mode,
- .has_v7clrex,
- .has_v8m,
- }),
- };
- result[@enumToInt(Feature.v8m_main)] = .{
- .llvm_name = "armv8-m.main",
- .description = "ARMv8mMainline architecture",
- .dependencies = featureSet(&[_]Feature{
- .@"8msecext",
- .acquire_release,
- .db,
- .hwdiv,
- .mclass,
- .noarm,
- .thumb_mode,
- .has_v8m_main,
- }),
- };
- result[@enumToInt(Feature.v8r)] = .{
- .llvm_name = "armv8-r",
- .description = "ARMv8r architecture",
- .dependencies = featureSet(&[_]Feature{
- .crc,
- .db,
- .dfb,
- .dsp,
- .fp_armv8,
- .mp,
- .neon,
- .rclass,
- .has_v8,
.virtualization,
}),
};
@@ -1184,10 +1133,9 @@ pub const all_features = blk: {
.db,
.dsp,
.fp_armv8,
+ .has_v8_1a,
.mp,
- .neon,
.trustzone,
- .has_v8_1a,
.virtualization,
}),
};
@@ -1198,13 +1146,13 @@ pub const all_features = blk: {
.@"8msecext",
.acquire_release,
.db,
+ .has_v8_1m_main,
.hwdiv,
.lob,
.mclass,
.noarm,
.ras,
.thumb_mode,
- .has_v8_1m_main,
}),
};
result[@enumToInt(Feature.v8_2a)] = .{
@@ -1217,11 +1165,10 @@ pub const all_features = blk: {
.db,
.dsp,
.fp_armv8,
+ .has_v8_2a,
.mp,
- .neon,
.ras,
.trustzone,
- .has_v8_2a,
.virtualization,
}),
};
@@ -1235,11 +1182,10 @@ pub const all_features = blk: {
.db,
.dsp,
.fp_armv8,
+ .has_v8_3a,
.mp,
- .neon,
.ras,
.trustzone,
- .has_v8_3a,
.virtualization,
}),
};
@@ -1251,14 +1197,12 @@ pub const all_features = blk: {
.crc,
.crypto,
.db,
- .dotprod,
.dsp,
.fp_armv8,
+ .has_v8_4a,
.mp,
- .neon,
.ras,
.trustzone,
- .has_v8_4a,
.virtualization,
}),
};
@@ -1270,14 +1214,12 @@ pub const all_features = blk: {
.crc,
.crypto,
.db,
- .dotprod,
.dsp,
.fp_armv8,
+ .has_v8_5a,
.mp,
- .neon,
.ras,
.trustzone,
- .has_v8_5a,
.virtualization,
}),
};
@@ -1289,14 +1231,91 @@ pub const all_features = blk: {
.crc,
.crypto,
.db,
- .dotprod,
.dsp,
.fp_armv8,
+ .has_v8_6a,
.mp,
- .neon,
.ras,
.trustzone,
- .has_v8_6a,
+ .virtualization,
+ }),
+ };
+ result[@enumToInt(Feature.v8_7a)] = .{
+ .llvm_name = "armv8.7-a",
+ .description = "ARMv86a architecture",
+ .dependencies = featureSet(&[_]Feature{
+ .aclass,
+ .crc,
+ .crypto,
+ .db,
+ .dsp,
+ .fp_armv8,
+ .has_v8_7a,
+ .mp,
+ .ras,
+ .trustzone,
+ .virtualization,
+ }),
+ };
+ result[@enumToInt(Feature.v8a)] = .{
+ .llvm_name = "armv8-a",
+ .description = "ARMv8a architecture",
+ .dependencies = featureSet(&[_]Feature{
+ .aclass,
+ .crc,
+ .crypto,
+ .db,
+ .dsp,
+ .fp_armv8,
+ .has_v8,
+ .mp,
+ .trustzone,
+ .virtualization,
+ }),
+ };
+ result[@enumToInt(Feature.v8m)] = .{
+ .llvm_name = "armv8-m.base",
+ .description = "ARMv8mBaseline architecture",
+ .dependencies = featureSet(&[_]Feature{
+ .@"8msecext",
+ .acquire_release,
+ .db,
+ .has_v7clrex,
+ .has_v8m,
+ .hwdiv,
+ .mclass,
+ .noarm,
+ .strict_align,
+ .thumb_mode,
+ }),
+ };
+ result[@enumToInt(Feature.v8m_main)] = .{
+ .llvm_name = "armv8-m.main",
+ .description = "ARMv8mMainline architecture",
+ .dependencies = featureSet(&[_]Feature{
+ .@"8msecext",
+ .acquire_release,
+ .db,
+ .has_v8m_main,
+ .hwdiv,
+ .mclass,
+ .noarm,
+ .thumb_mode,
+ }),
+ };
+ result[@enumToInt(Feature.v8r)] = .{
+ .llvm_name = "armv8-r",
+ .description = "ARMv8r architecture",
+ .dependencies = featureSet(&[_]Feature{
+ .crc,
+ .db,
+ .dfb,
+ .dsp,
+ .fp_armv8,
+ .has_v8,
+ .mp,
+ .neon,
+ .rclass,
.virtualization,
}),
};
@@ -1327,7 +1346,6 @@ pub const all_features = blk: {
.llvm_name = "vfp3d16",
.description = "Enable VFP3 instructions with only 16 d-registers",
.dependencies = featureSet(&[_]Feature{
- .fp64,
.vfp2,
.vfp3d16sp,
}),
@@ -1351,7 +1369,6 @@ pub const all_features = blk: {
.llvm_name = "vfp4",
.description = "Enable VFP4 instructions",
.dependencies = featureSet(&[_]Feature{
- .fp16,
.vfp3,
.vfp4d16,
.vfp4sp,
@@ -1361,8 +1378,6 @@ pub const all_features = blk: {
.llvm_name = "vfp4d16",
.description = "Enable VFP4 instructions with only 16 d-registers",
.dependencies = featureSet(&[_]Feature{
- .fp16,
- .fp64,
.vfp3d16,
.vfp4d16sp,
}),
@@ -1379,8 +1394,6 @@ pub const all_features = blk: {
.llvm_name = "vfp4sp",
.description = "Enable VFP4 instructions with no double precision",
.dependencies = featureSet(&[_]Feature{
- .d32,
- .fp16,
.vfp3sp,
.vfp4d16sp,
}),
@@ -1417,7 +1430,7 @@ pub const all_features = blk: {
.llvm_name = "xscale",
.description = "ARMv5te architecture",
.dependencies = featureSet(&[_]Feature{
- .has_v5te,
+ .v5te,
}),
};
result[@enumToInt(Feature.zcz)] = .{
@@ -1480,8 +1493,8 @@ pub const cpu = struct {
.name = "arm1136jf_s",
.llvm_name = "arm1136jf-s",
.features = featureSet(&[_]Feature{
- .v6,
.slowfpvmlx,
+ .v6,
.vfp2,
}),
};
@@ -1496,8 +1509,8 @@ pub const cpu = struct {
.name = "arm1156t2f_s",
.llvm_name = "arm1156t2f-s",
.features = featureSet(&[_]Feature{
- .v6t2,
.slowfpvmlx,
+ .v6t2,
.vfp2,
}),
};
@@ -1519,8 +1532,8 @@ pub const cpu = struct {
.name = "arm1176jzf_s",
.llvm_name = "arm1176jzf-s",
.features = featureSet(&[_]Feature{
- .v6kz,
.slowfpvmlx,
+ .v6kz,
.vfp2,
}),
};
@@ -1654,11 +1667,11 @@ pub const cpu = struct {
.name = "cortex_a12",
.llvm_name = "cortex-a12",
.features = featureSet(&[_]Feature{
- .v7a,
.avoid_partial_cpsr,
.mp,
.ret_addr_stack,
.trustzone,
+ .v7a,
.vfp4,
.virtualization,
.vmlx_forwarding,
@@ -1668,14 +1681,13 @@ pub const cpu = struct {
.name = "cortex_a15",
.llvm_name = "cortex-a15",
.features = featureSet(&[_]Feature{
- .v7a,
.avoid_partial_cpsr,
- .dont_widen_vmovs,
.mp,
.muxed_units,
.ret_addr_stack,
.splat_vfp_neon,
.trustzone,
+ .v7a,
.vfp4,
.virtualization,
.vldn_align,
@@ -1685,11 +1697,11 @@ pub const cpu = struct {
.name = "cortex_a17",
.llvm_name = "cortex-a17",
.features = featureSet(&[_]Feature{
- .v7a,
.avoid_partial_cpsr,
.mp,
.ret_addr_stack,
.trustzone,
+ .v7a,
.vfp4,
.virtualization,
.vmlx_forwarding,
@@ -1699,10 +1711,6 @@ pub const cpu = struct {
.name = "cortex_a32",
.llvm_name = "cortex-a32",
.features = featureSet(&[_]Feature{
- .crc,
- .crypto,
- .hwdiv,
- .hwdiv_arm,
.v8a,
}),
};
@@ -1710,10 +1718,6 @@ pub const cpu = struct {
.name = "cortex_a35",
.llvm_name = "cortex-a35",
.features = featureSet(&[_]Feature{
- .crc,
- .crypto,
- .hwdiv,
- .hwdiv_arm,
.v8a,
}),
};
@@ -1721,13 +1725,13 @@ pub const cpu = struct {
.name = "cortex_a5",
.llvm_name = "cortex-a5",
.features = featureSet(&[_]Feature{
- .v7a,
.mp,
.ret_addr_stack,
.slow_fp_brcc,
.slowfpvfmx,
.slowfpvmlx,
.trustzone,
+ .v7a,
.vfp4,
.vmlx_forwarding,
}),
@@ -1736,49 +1740,39 @@ pub const cpu = struct {
.name = "cortex_a53",
.llvm_name = "cortex-a53",
.features = featureSet(&[_]Feature{
- .v8a,
- .crc,
- .crypto,
.fpao,
- .hwdiv,
- .hwdiv_arm,
+ .v8a,
}),
};
pub const cortex_a55 = CpuModel{
.name = "cortex_a55",
.llvm_name = "cortex-a55",
.features = featureSet(&[_]Feature{
- .v8_2a,
.dotprod,
- .hwdiv,
- .hwdiv_arm,
+ .v8_2a,
}),
};
pub const cortex_a57 = CpuModel{
.name = "cortex_a57",
.llvm_name = "cortex-a57",
.features = featureSet(&[_]Feature{
- .v8a,
.avoid_partial_cpsr,
.cheap_predicable_cpsr,
- .crc,
- .crypto,
.fpao,
- .hwdiv,
- .hwdiv_arm,
+ .v8a,
}),
};
pub const cortex_a7 = CpuModel{
.name = "cortex_a7",
.llvm_name = "cortex-a7",
.features = featureSet(&[_]Feature{
- .v7a,
.mp,
.ret_addr_stack,
.slow_fp_brcc,
.slowfpvfmx,
.slowfpvmlx,
.trustzone,
+ .v7a,
.vfp4,
.virtualization,
.vmlx_forwarding,
@@ -1790,10 +1784,6 @@ pub const cpu = struct {
.llvm_name = "cortex-a72",
.features = featureSet(&[_]Feature{
.v8a,
- .crc,
- .crypto,
- .hwdiv,
- .hwdiv_arm,
}),
};
pub const cortex_a73 = CpuModel{
@@ -1801,20 +1791,14 @@ pub const cpu = struct {
.llvm_name = "cortex-a73",
.features = featureSet(&[_]Feature{
.v8a,
- .crc,
- .crypto,
- .hwdiv,
- .hwdiv_arm,
}),
};
pub const cortex_a75 = CpuModel{
.name = "cortex_a75",
.llvm_name = "cortex-a75",
.features = featureSet(&[_]Feature{
- .v8_2a,
.dotprod,
- .hwdiv,
- .hwdiv_arm,
+ .v8_2a,
}),
};
pub const cortex_a76 = CpuModel{
@@ -1822,13 +1806,9 @@ pub const cpu = struct {
.llvm_name = "cortex-a76",
.features = featureSet(&[_]Feature{
.a76,
- .v8_2a,
- .crc,
- .crypto,
.dotprod,
.fullfp16,
- .hwdiv,
- .hwdiv_arm,
+ .v8_2a,
}),
};
pub const cortex_a76ae = CpuModel{
@@ -1836,52 +1816,49 @@ pub const cpu = struct {
.llvm_name = "cortex-a76ae",
.features = featureSet(&[_]Feature{
.a76,
- .v8_2a,
- .crc,
- .crypto,
.dotprod,
.fullfp16,
- .hwdiv,
- .hwdiv_arm,
+ .v8_2a,
}),
};
pub const cortex_a77 = CpuModel{
.name = "cortex_a77",
.llvm_name = "cortex-a77",
.features = featureSet(&[_]Feature{
- .v8_2a,
- .crc,
- .crypto,
.dotprod,
.fullfp16,
- .hwdiv,
- .hwdiv_arm,
+ .v8_2a,
}),
};
pub const cortex_a78 = CpuModel{
.name = "cortex_a78",
.llvm_name = "cortex-a78",
.features = featureSet(&[_]Feature{
+ .dotprod,
+ .fullfp16,
.v8_2a,
- .crc,
- .crypto,
+ }),
+ };
+ pub const cortex_a78c = CpuModel{
+ .name = "cortex_a78c",
+ .llvm_name = "cortex-a78c",
+ .features = featureSet(&[_]Feature{
.dotprod,
.fullfp16,
- .hwdiv,
- .hwdiv_arm,
+ .v8_2a,
}),
};
pub const cortex_a8 = CpuModel{
.name = "cortex_a8",
.llvm_name = "cortex-a8",
.features = featureSet(&[_]Feature{
- .v7a,
.nonpipelined_vfp,
.ret_addr_stack,
.slow_fp_brcc,
.slowfpvfmx,
.slowfpvmlx,
.trustzone,
+ .v7a,
.vmlx_forwarding,
.vmlx_hazards,
}),
@@ -1890,7 +1867,6 @@ pub const cpu = struct {
.name = "cortex_a9",
.llvm_name = "cortex-a9",
.features = featureSet(&[_]Feature{
- .v7a,
.avoid_partial_cpsr,
.expand_fp_mlx,
.fp16,
@@ -1900,6 +1876,7 @@ pub const cpu = struct {
.prefer_vmovsr,
.ret_addr_stack,
.trustzone,
+ .v7a,
.vldn_align,
.vmlx_forwarding,
.vmlx_hazards,
@@ -1930,26 +1907,25 @@ pub const cpu = struct {
.name = "cortex_m23",
.llvm_name = "cortex-m23",
.features = featureSet(&[_]Feature{
- .v8m,
.no_movt,
+ .v8m,
}),
};
pub const cortex_m3 = CpuModel{
.name = "cortex_m3",
.llvm_name = "cortex-m3",
.features = featureSet(&[_]Feature{
- .v7m,
.loop_align,
.m3,
.no_branch_predictor,
.use_misched,
+ .v7m,
}),
};
pub const cortex_m33 = CpuModel{
.name = "cortex_m33",
.llvm_name = "cortex-m33",
.features = featureSet(&[_]Feature{
- .v8m_main,
.dsp,
.fp_armv8d16sp,
.loop_align,
@@ -1957,13 +1933,13 @@ pub const cpu = struct {
.slowfpvfmx,
.slowfpvmlx,
.use_misched,
+ .v8m_main,
}),
};
pub const cortex_m35p = CpuModel{
.name = "cortex_m35p",
.llvm_name = "cortex-m35p",
.features = featureSet(&[_]Feature{
- .v8m_main,
.dsp,
.fp_armv8d16sp,
.loop_align,
@@ -1971,18 +1947,19 @@ pub const cpu = struct {
.slowfpvfmx,
.slowfpvmlx,
.use_misched,
+ .v8m_main,
}),
};
pub const cortex_m4 = CpuModel{
.name = "cortex_m4",
.llvm_name = "cortex-m4",
.features = featureSet(&[_]Feature{
- .v7em,
.loop_align,
.no_branch_predictor,
.slowfpvfmx,
.slowfpvmlx,
.use_misched,
+ .v7em,
.vfp4d16sp,
}),
};
@@ -1990,45 +1967,45 @@ pub const cpu = struct {
.name = "cortex_m55",
.llvm_name = "cortex-m55",
.features = featureSet(&[_]Feature{
- .v8_1m_main,
- .dsp,
.fp_armv8d16,
.loop_align,
.mve_fp,
.no_branch_predictor,
.slowfpvmlx,
.use_misched,
+ .v8_1m_main,
}),
};
pub const cortex_m7 = CpuModel{
.name = "cortex_m7",
.llvm_name = "cortex-m7",
.features = featureSet(&[_]Feature{
- .v7em,
.fp_armv8d16,
+ .use_misched,
+ .v7em,
}),
};
pub const cortex_r4 = CpuModel{
.name = "cortex_r4",
.llvm_name = "cortex-r4",
.features = featureSet(&[_]Feature{
- .v7r,
.avoid_partial_cpsr,
.r4,
.ret_addr_stack,
+ .v7r,
}),
};
pub const cortex_r4f = CpuModel{
.name = "cortex_r4f",
.llvm_name = "cortex-r4f",
.features = featureSet(&[_]Feature{
- .v7r,
.avoid_partial_cpsr,
.r4,
.ret_addr_stack,
.slow_fp_brcc,
.slowfpvfmx,
.slowfpvmlx,
+ .v7r,
.vfp3d16,
}),
};
@@ -2036,13 +2013,13 @@ pub const cpu = struct {
.name = "cortex_r5",
.llvm_name = "cortex-r5",
.features = featureSet(&[_]Feature{
- .v7r,
.avoid_partial_cpsr,
.hwdiv_arm,
.ret_addr_stack,
.slow_fp_brcc,
.slowfpvfmx,
.slowfpvmlx,
+ .v7r,
.vfp3d16,
}),
};
@@ -2050,16 +2027,15 @@ pub const cpu = struct {
.name = "cortex_r52",
.llvm_name = "cortex-r52",
.features = featureSet(&[_]Feature{
- .v8r,
.fpao,
.use_misched,
+ .v8r,
}),
};
pub const cortex_r7 = CpuModel{
.name = "cortex_r7",
.llvm_name = "cortex-r7",
.features = featureSet(&[_]Feature{
- .v7r,
.avoid_partial_cpsr,
.fp16,
.hwdiv_arm,
@@ -2068,6 +2044,7 @@ pub const cpu = struct {
.slow_fp_brcc,
.slowfpvfmx,
.slowfpvmlx,
+ .v7r,
.vfp3d16,
}),
};
@@ -2075,7 +2052,6 @@ pub const cpu = struct {
.name = "cortex_r8",
.llvm_name = "cortex-r8",
.features = featureSet(&[_]Feature{
- .v7r,
.avoid_partial_cpsr,
.fp16,
.hwdiv_arm,
@@ -2084,6 +2060,7 @@ pub const cpu = struct {
.slow_fp_brcc,
.slowfpvfmx,
.slowfpvmlx,
+ .v7r,
.vfp3d16,
}),
};
@@ -2091,34 +2068,25 @@ pub const cpu = struct {
.name = "cortex_x1",
.llvm_name = "cortex-x1",
.features = featureSet(&[_]Feature{
- .v8_2a,
- .crc,
- .crypto,
.dotprod,
.fullfp16,
- .hwdiv,
- .hwdiv_arm,
+ .v8_2a,
}),
};
pub const cyclone = CpuModel{
.name = "cyclone",
.llvm_name = "cyclone",
.features = featureSet(&[_]Feature{
- .v8a,
.avoid_movs_shop,
.avoid_partial_cpsr,
- .crypto,
.disable_postra_scheduler,
- .hwdiv,
- .hwdiv_arm,
- .mp,
.neonfp,
.ret_addr_stack,
.slowfpvfmx,
.slowfpvmlx,
.swift,
.use_misched,
- .vfp4,
+ .v8a,
.zcz,
}),
};
@@ -2133,34 +2101,34 @@ pub const cpu = struct {
.name = "exynos_m1",
.llvm_name = null,
.features = featureSet(&[_]Feature{
- .v8a,
.exynos,
+ .v8a,
}),
};
pub const exynos_m2 = CpuModel{
.name = "exynos_m2",
.llvm_name = null,
.features = featureSet(&[_]Feature{
- .v8a,
.exynos,
+ .v8a,
}),
};
pub const exynos_m3 = CpuModel{
.name = "exynos_m3",
.llvm_name = "exynos-m3",
.features = featureSet(&[_]Feature{
- .v8_2a,
.exynos,
+ .v8a,
}),
};
pub const exynos_m4 = CpuModel{
.name = "exynos_m4",
.llvm_name = "exynos-m4",
.features = featureSet(&[_]Feature{
- .v8_2a,
.dotprod,
.exynos,
.fullfp16,
+ .v8_2a,
}),
};
pub const exynos_m5 = CpuModel{
@@ -2190,7 +2158,6 @@ pub const cpu = struct {
.llvm_name = "krait",
.features = featureSet(&[_]Feature{
.avoid_partial_cpsr,
- .fp16,
.hwdiv,
.hwdiv_arm,
.muxed_units,
@@ -2205,10 +2172,6 @@ pub const cpu = struct {
.name = "kryo",
.llvm_name = "kryo",
.features = featureSet(&[_]Feature{
- .crc,
- .crypto,
- .hwdiv,
- .hwdiv_arm,
.v8a,
}),
};
@@ -2216,8 +2179,8 @@ pub const cpu = struct {
.name = "mpcore",
.llvm_name = "mpcore",
.features = featureSet(&[_]Feature{
- .v6k,
.slowfpvmlx,
+ .v6k,
.vfp2,
}),
};
@@ -2232,36 +2195,27 @@ pub const cpu = struct {
.name = "neoverse_n1",
.llvm_name = "neoverse-n1",
.features = featureSet(&[_]Feature{
- .v8_2a,
- .crc,
- .crypto,
.dotprod,
- .hwdiv,
- .hwdiv_arm,
+ .v8_2a,
}),
};
pub const neoverse_n2 = CpuModel{
.name = "neoverse_n2",
.llvm_name = "neoverse-n2",
.features = featureSet(&[_]Feature{
- .v8_5a,
.bf16,
.i8mm,
- .perfmon,
+ .v8_5a,
}),
};
pub const neoverse_v1 = CpuModel{
.name = "neoverse_v1",
.llvm_name = "neoverse-v1",
.features = featureSet(&[_]Feature{
- .v8_4a,
.bf16,
- .crc,
- .crypto,
.fullfp16,
- .hwdiv,
- .hwdiv_arm,
.i8mm,
+ .v8_4a,
}),
};
pub const sc000 = CpuModel{
@@ -2275,10 +2229,10 @@ pub const cpu = struct {
.name = "sc300",
.llvm_name = "sc300",
.features = featureSet(&[_]Feature{
- .v7m,
.m3,
.no_branch_predictor,
.use_misched,
+ .v7m,
}),
};
pub const strongarm = CpuModel{
@@ -2313,7 +2267,6 @@ pub const cpu = struct {
.name = "swift",
.llvm_name = "swift",
.features = featureSet(&[_]Feature{
- .v7a,
.avoid_movs_shop,
.avoid_partial_cpsr,
.disable_postra_scheduler,
@@ -2332,6 +2285,7 @@ pub const cpu = struct {
.slowfpvmlx,
.swift,
.use_misched,
+ .v7a,
.vfp4,
.vmlx_hazards,
.wide_stride_vfp,