Commit 6118b11afa
Changed files (1)
lib
std
target
lib/std/target/aarch64.zig
@@ -2,6 +2,14 @@ const std = @import("../std.zig");
const Cpu = std.Target.Cpu;
pub const Feature = enum {
+ a35,
+ a53,
+ a55,
+ a57,
+ a72,
+ a73,
+ a75,
+ a76,
aes,
aggressive_fma,
alternate_sextload_cvt_f32_pattern,
@@ -27,10 +35,16 @@ pub const Feature = enum {
crc,
crypto,
custom_cheap_as_move,
+ cyclone,
disable_latency_sched_heuristic,
dit,
dotprod,
exynos_cheap_as_move,
+ exynosm1,
+ exynosm2,
+ exynosm3,
+ exynosm4,
+ falkor,
fmi,
force_32bit_jump_tables,
fp_armv8,
@@ -44,6 +58,7 @@ pub const Feature = enum {
fuse_csel,
fuse_literals,
jsconv,
+ kryo,
lor,
lse,
lsl_fast,
@@ -88,6 +103,7 @@ pub const Feature = enum {
reserve_x6,
reserve_x7,
reserve_x9,
+ saphira,
sb,
sel2,
sha2,
@@ -106,11 +122,17 @@ pub const Feature = enum {
sve2_bitperm,
sve2_sha3,
sve2_sm4,
+ thunderx,
+ thunderx2t99,
+ thunderxt81,
+ thunderxt83,
+ thunderxt88,
tlb_rmi,
tpidr_el1,
tpidr_el2,
tpidr_el3,
tracev8_4,
+ tsv110,
uaops,
use_aa,
use_postra_scheduler,
@@ -134,6 +156,134 @@ pub const all_features = blk: {
const len = @typeInfo(Feature).Enum.fields.len;
std.debug.assert(len <= @typeInfo(Cpu.Feature.Set).Int.bits);
var result: [len]Cpu.Feature = undefined;
+ result[@enumToInt(Feature.a35)] = .{
+ .index = @enumToInt(Feature.a35),
+ .name = @tagName(Feature.a35),
+ .llvm_name = "a35",
+ .description = "Cortex-A35 ARM processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crc,
+ .crypto,
+ .fp_armv8,
+ .neon,
+ .perfmon,
+ }),
+ };
+ result[@enumToInt(Feature.a53)] = .{
+ .index = @enumToInt(Feature.a53),
+ .name = @tagName(Feature.a53),
+ .llvm_name = "a53",
+ .description = "Cortex-A53 ARM processors",
+ .dependencies = featureSet(&[_]Feature{
+ .balance_fp_ops,
+ .crc,
+ .crypto,
+ .custom_cheap_as_move,
+ .fp_armv8,
+ .fuse_aes,
+ .neon,
+ .perfmon,
+ .use_aa,
+ .use_postra_scheduler,
+ }),
+ };
+ result[@enumToInt(Feature.a55)] = .{
+ .index = @enumToInt(Feature.a55),
+ .name = @tagName(Feature.a55),
+ .llvm_name = "a55",
+ .description = "Cortex-A55 ARM processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crypto,
+ .dotprod,
+ .fp_armv8,
+ .fullfp16,
+ .fuse_aes,
+ .neon,
+ .perfmon,
+ .rcpc,
+ .v8_2a,
+ }),
+ };
+ result[@enumToInt(Feature.a57)] = .{
+ .index = @enumToInt(Feature.a57),
+ .name = @tagName(Feature.a57),
+ .llvm_name = "a57",
+ .description = "Cortex-A57 ARM processors",
+ .dependencies = featureSet(&[_]Feature{
+ .balance_fp_ops,
+ .crc,
+ .crypto,
+ .custom_cheap_as_move,
+ .fp_armv8,
+ .fuse_aes,
+ .fuse_literals,
+ .neon,
+ .perfmon,
+ .predictable_select_expensive,
+ .use_postra_scheduler,
+ }),
+ };
+ result[@enumToInt(Feature.a72)] = .{
+ .index = @enumToInt(Feature.a72),
+ .name = @tagName(Feature.a72),
+ .llvm_name = "a72",
+ .description = "Cortex-A72 ARM processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crc,
+ .crypto,
+ .fp_armv8,
+ .fuse_aes,
+ .neon,
+ .perfmon,
+ }),
+ };
+ result[@enumToInt(Feature.a73)] = .{
+ .index = @enumToInt(Feature.a73),
+ .name = @tagName(Feature.a73),
+ .llvm_name = "a73",
+ .description = "Cortex-A73 ARM processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crc,
+ .crypto,
+ .fp_armv8,
+ .fuse_aes,
+ .neon,
+ .perfmon,
+ }),
+ };
+ result[@enumToInt(Feature.a75)] = .{
+ .index = @enumToInt(Feature.a75),
+ .name = @tagName(Feature.a75),
+ .llvm_name = "a75",
+ .description = "Cortex-A75 ARM processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crypto,
+ .dotprod,
+ .fp_armv8,
+ .fullfp16,
+ .fuse_aes,
+ .neon,
+ .perfmon,
+ .rcpc,
+ .v8_2a,
+ }),
+ };
+ result[@enumToInt(Feature.a76)] = .{
+ .index = @enumToInt(Feature.a76),
+ .name = @tagName(Feature.a76),
+ .llvm_name = "a76",
+ .description = "Cortex-A76 ARM processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crypto,
+ .dotprod,
+ .fp_armv8,
+ .fullfp16,
+ .neon,
+ .rcpc,
+ .ssbs,
+ .v8_2a,
+ }),
+ };
result[@enumToInt(Feature.aes)] = .{
.index = @enumToInt(Feature.aes),
.name = @tagName(Feature.aes),
@@ -317,6 +467,27 @@ pub const all_features = blk: {
.description = "Use custom handling of cheap instructions",
.dependencies = 0,
};
+ result[@enumToInt(Feature.cyclone)] = .{
+ .index = @enumToInt(Feature.cyclone),
+ .name = @tagName(Feature.cyclone),
+ .llvm_name = "cyclone",
+ .description = "Cyclone",
+ .dependencies = featureSet(&[_]Feature{
+ .alternate_sextload_cvt_f32_pattern,
+ .arith_bcc_fusion,
+ .arith_cbz_fusion,
+ .crypto,
+ .disable_latency_sched_heuristic,
+ .fp_armv8,
+ .fuse_aes,
+ .fuse_crypto_eor,
+ .neon,
+ .perfmon,
+ .zcm,
+ .zcz,
+ .zcz_fp_workaround,
+ }),
+ };
result[@enumToInt(Feature.disable_latency_sched_heuristic)] = .{
.index = @enumToInt(Feature.disable_latency_sched_heuristic),
.name = @tagName(Feature.disable_latency_sched_heuristic),
@@ -347,6 +518,109 @@ pub const all_features = blk: {
.custom_cheap_as_move,
}),
};
+ result[@enumToInt(Feature.exynosm1)] = .{
+ .index = @enumToInt(Feature.exynosm1),
+ .name = @tagName(Feature.exynosm1),
+ .llvm_name = "exynosm1",
+ .description = "Samsung Exynos-M1 processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crc,
+ .crypto,
+ .exynos_cheap_as_move,
+ .force_32bit_jump_tables,
+ .fuse_aes,
+ .perfmon,
+ .slow_misaligned_128store,
+ .slow_paired_128,
+ .use_postra_scheduler,
+ .use_reciprocal_square_root,
+ .zcz_fp,
+ }),
+ };
+ result[@enumToInt(Feature.exynosm2)] = .{
+ .index = @enumToInt(Feature.exynosm2),
+ .name = @tagName(Feature.exynosm2),
+ .llvm_name = "exynosm2",
+ .description = "Samsung Exynos-M2 processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crc,
+ .crypto,
+ .exynos_cheap_as_move,
+ .force_32bit_jump_tables,
+ .fuse_aes,
+ .perfmon,
+ .slow_misaligned_128store,
+ .slow_paired_128,
+ .use_postra_scheduler,
+ .zcz_fp,
+ }),
+ };
+ result[@enumToInt(Feature.exynosm3)] = .{
+ .index = @enumToInt(Feature.exynosm3),
+ .name = @tagName(Feature.exynosm3),
+ .llvm_name = "exynosm3",
+ .description = "Samsung Exynos-M3 processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crc,
+ .crypto,
+ .exynos_cheap_as_move,
+ .force_32bit_jump_tables,
+ .fuse_address,
+ .fuse_aes,
+ .fuse_csel,
+ .fuse_literals,
+ .lsl_fast,
+ .perfmon,
+ .predictable_select_expensive,
+ .use_postra_scheduler,
+ .zcz_fp,
+ }),
+ };
+ result[@enumToInt(Feature.exynosm4)] = .{
+ .index = @enumToInt(Feature.exynosm4),
+ .name = @tagName(Feature.exynosm4),
+ .llvm_name = "exynosm4",
+ .description = "Samsung Exynos-M4 processors",
+ .dependencies = featureSet(&[_]Feature{
+ .arith_bcc_fusion,
+ .arith_cbz_fusion,
+ .crypto,
+ .dotprod,
+ .exynos_cheap_as_move,
+ .force_32bit_jump_tables,
+ .fullfp16,
+ .fuse_address,
+ .fuse_aes,
+ .fuse_arith_logic,
+ .fuse_csel,
+ .fuse_literals,
+ .lsl_fast,
+ .perfmon,
+ .use_postra_scheduler,
+ .v8_2a,
+ .zcz,
+ }),
+ };
+ result[@enumToInt(Feature.falkor)] = .{
+ .index = @enumToInt(Feature.falkor),
+ .name = @tagName(Feature.falkor),
+ .llvm_name = "falkor",
+ .description = "Qualcomm Falkor processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crc,
+ .crypto,
+ .custom_cheap_as_move,
+ .fp_armv8,
+ .lsl_fast,
+ .neon,
+ .perfmon,
+ .predictable_select_expensive,
+ .rdm,
+ .slow_strqro_store,
+ .use_postra_scheduler,
+ .zcz,
+ }),
+ };
result[@enumToInt(Feature.fmi)] = .{
.index = @enumToInt(Feature.fmi),
.name = @tagName(Feature.fmi),
@@ -444,6 +718,24 @@ pub const all_features = blk: {
.fp_armv8,
}),
};
+ result[@enumToInt(Feature.kryo)] = .{
+ .index = @enumToInt(Feature.kryo),
+ .name = @tagName(Feature.kryo),
+ .llvm_name = "kryo",
+ .description = "Qualcomm Kryo processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crc,
+ .crypto,
+ .custom_cheap_as_move,
+ .fp_armv8,
+ .lsl_fast,
+ .neon,
+ .perfmon,
+ .predictable_select_expensive,
+ .use_postra_scheduler,
+ .zcz,
+ }),
+ };
result[@enumToInt(Feature.lor)] = .{
.index = @enumToInt(Feature.lor),
.name = @tagName(Feature.lor),
@@ -760,6 +1052,25 @@ pub const all_features = blk: {
.description = "Reserve X9, making it unavailable as a GPR",
.dependencies = 0,
};
+ result[@enumToInt(Feature.saphira)] = .{
+ .index = @enumToInt(Feature.saphira),
+ .name = @tagName(Feature.saphira),
+ .llvm_name = "saphira",
+ .description = "Qualcomm Saphira processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crypto,
+ .custom_cheap_as_move,
+ .fp_armv8,
+ .lsl_fast,
+ .neon,
+ .perfmon,
+ .predictable_select_expensive,
+ .spe,
+ .use_postra_scheduler,
+ .v8_4a,
+ .zcz,
+ }),
+ };
result[@enumToInt(Feature.sb)] = .{
.index = @enumToInt(Feature.sb),
.name = @tagName(Feature.sb),
@@ -906,28 +1217,106 @@ pub const all_features = blk: {
.sve2,
}),
};
- result[@enumToInt(Feature.tlb_rmi)] = .{
- .index = @enumToInt(Feature.tlb_rmi),
- .name = @tagName(Feature.tlb_rmi),
- .llvm_name = "tlb-rmi",
- .description = "Enable v8.4-A TLB Range and Maintenance Instructions",
- .dependencies = 0,
- };
- result[@enumToInt(Feature.tpidr_el1)] = .{
- .index = @enumToInt(Feature.tpidr_el1),
- .name = @tagName(Feature.tpidr_el1),
- .llvm_name = "tpidr-el1",
- .description = "Permit use of TPIDR_EL1 for the TLS base",
- .dependencies = 0,
+ result[@enumToInt(Feature.thunderx)] = .{
+ .index = @enumToInt(Feature.thunderx),
+ .name = @tagName(Feature.thunderx),
+ .llvm_name = "thunderx",
+ .description = "Cavium ThunderX processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crc,
+ .crypto,
+ .fp_armv8,
+ .neon,
+ .perfmon,
+ .predictable_select_expensive,
+ .use_postra_scheduler,
+ }),
};
- result[@enumToInt(Feature.tpidr_el2)] = .{
- .index = @enumToInt(Feature.tpidr_el2),
- .name = @tagName(Feature.tpidr_el2),
- .llvm_name = "tpidr-el2",
- .description = "Permit use of TPIDR_EL2 for the TLS base",
- .dependencies = 0,
+ result[@enumToInt(Feature.thunderx2t99)] = .{
+ .index = @enumToInt(Feature.thunderx2t99),
+ .name = @tagName(Feature.thunderx2t99),
+ .llvm_name = "thunderx2t99",
+ .description = "Cavium ThunderX2 processors",
+ .dependencies = featureSet(&[_]Feature{
+ .aggressive_fma,
+ .arith_bcc_fusion,
+ .crc,
+ .crypto,
+ .fp_armv8,
+ .lse,
+ .neon,
+ .predictable_select_expensive,
+ .use_postra_scheduler,
+ .v8_1a,
+ }),
};
- result[@enumToInt(Feature.tpidr_el3)] = .{
+ result[@enumToInt(Feature.thunderxt81)] = .{
+ .index = @enumToInt(Feature.thunderxt81),
+ .name = @tagName(Feature.thunderxt81),
+ .llvm_name = "thunderxt81",
+ .description = "Cavium ThunderX processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crc,
+ .crypto,
+ .fp_armv8,
+ .neon,
+ .perfmon,
+ .predictable_select_expensive,
+ .use_postra_scheduler,
+ }),
+ };
+ result[@enumToInt(Feature.thunderxt83)] = .{
+ .index = @enumToInt(Feature.thunderxt83),
+ .name = @tagName(Feature.thunderxt83),
+ .llvm_name = "thunderxt83",
+ .description = "Cavium ThunderX processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crc,
+ .crypto,
+ .fp_armv8,
+ .neon,
+ .perfmon,
+ .predictable_select_expensive,
+ .use_postra_scheduler,
+ }),
+ };
+ result[@enumToInt(Feature.thunderxt88)] = .{
+ .index = @enumToInt(Feature.thunderxt88),
+ .name = @tagName(Feature.thunderxt88),
+ .llvm_name = "thunderxt88",
+ .description = "Cavium ThunderX processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crc,
+ .crypto,
+ .fp_armv8,
+ .neon,
+ .perfmon,
+ .predictable_select_expensive,
+ .use_postra_scheduler,
+ }),
+ };
+ result[@enumToInt(Feature.tlb_rmi)] = .{
+ .index = @enumToInt(Feature.tlb_rmi),
+ .name = @tagName(Feature.tlb_rmi),
+ .llvm_name = "tlb-rmi",
+ .description = "Enable v8.4-A TLB Range and Maintenance Instructions",
+ .dependencies = 0,
+ };
+ result[@enumToInt(Feature.tpidr_el1)] = .{
+ .index = @enumToInt(Feature.tpidr_el1),
+ .name = @tagName(Feature.tpidr_el1),
+ .llvm_name = "tpidr-el1",
+ .description = "Permit use of TPIDR_EL1 for the TLS base",
+ .dependencies = 0,
+ };
+ result[@enumToInt(Feature.tpidr_el2)] = .{
+ .index = @enumToInt(Feature.tpidr_el2),
+ .name = @tagName(Feature.tpidr_el2),
+ .llvm_name = "tpidr-el2",
+ .description = "Permit use of TPIDR_EL2 for the TLS base",
+ .dependencies = 0,
+ };
+ result[@enumToInt(Feature.tpidr_el3)] = .{
.index = @enumToInt(Feature.tpidr_el3),
.name = @tagName(Feature.tpidr_el3),
.llvm_name = "tpidr-el3",
@@ -941,6 +1330,26 @@ pub const all_features = blk: {
.description = "Enable v8.4-A Trace extension",
.dependencies = 0,
};
+ result[@enumToInt(Feature.tsv110)] = .{
+ .index = @enumToInt(Feature.tsv110),
+ .name = @tagName(Feature.tsv110),
+ .llvm_name = "tsv110",
+ .description = "HiSilicon TS-V110 processors",
+ .dependencies = featureSet(&[_]Feature{
+ .crypto,
+ .custom_cheap_as_move,
+ .dotprod,
+ .fp_armv8,
+ .fp16fml,
+ .fullfp16,
+ .fuse_aes,
+ .neon,
+ .perfmon,
+ .spe,
+ .use_postra_scheduler,
+ .v8_2a,
+ }),
+ };
result[@enumToInt(Feature.uaops)] = .{
.index = @enumToInt(Feature.uaops),
.name = @tagName(Feature.uaops),
@@ -1096,265 +1505,123 @@ pub const all_features = blk: {
};
pub const cpu = struct {
+ pub const apple_latest = Cpu{
+ .name = "apple_latest",
+ .llvm_name = "apple-latest",
+ .features = featureSet(&[_]Feature{
+ .cyclone,
+ }),
+ };
pub const cortex_a35 = Cpu{
.name = "cortex_a35",
.llvm_name = "cortex-a35",
.features = featureSet(&[_]Feature{
- .crc,
- .crypto,
- .fp_armv8,
- .neon,
- .perfmon,
+ .a35,
}),
};
pub const cortex_a53 = Cpu{
.name = "cortex_a53",
.llvm_name = "cortex-a53",
.features = featureSet(&[_]Feature{
- .balance_fp_ops,
- .crc,
- .crypto,
- .custom_cheap_as_move,
- .fp_armv8,
- .fuse_aes,
- .neon,
- .perfmon,
- .use_aa,
- .use_postra_scheduler,
+ .a53,
}),
};
pub const cortex_a55 = Cpu{
.name = "cortex_a55",
.llvm_name = "cortex-a55",
.features = featureSet(&[_]Feature{
- .crypto,
- .dotprod,
- .fp_armv8,
- .fullfp16,
- .fuse_aes,
- .neon,
- .perfmon,
- .rcpc,
- .v8_2a,
+ .a55,
}),
};
pub const cortex_a57 = Cpu{
.name = "cortex_a57",
.llvm_name = "cortex-a57",
.features = featureSet(&[_]Feature{
- .balance_fp_ops,
- .crc,
- .crypto,
- .custom_cheap_as_move,
- .fp_armv8,
- .fuse_aes,
- .fuse_literals,
- .neon,
- .perfmon,
- .predictable_select_expensive,
- .use_postra_scheduler,
+ .a57,
}),
};
pub const cortex_a72 = Cpu{
.name = "cortex_a72",
.llvm_name = "cortex-a72",
.features = featureSet(&[_]Feature{
- .crc,
- .crypto,
- .fp_armv8,
- .fuse_aes,
- .neon,
- .perfmon,
+ .a72,
}),
};
pub const cortex_a73 = Cpu{
.name = "cortex_a73",
.llvm_name = "cortex-a73",
.features = featureSet(&[_]Feature{
- .crc,
- .crypto,
- .fp_armv8,
- .fuse_aes,
- .neon,
- .perfmon,
+ .a73,
}),
};
pub const cortex_a75 = Cpu{
.name = "cortex_a75",
.llvm_name = "cortex-a75",
.features = featureSet(&[_]Feature{
- .crypto,
- .dotprod,
- .fp_armv8,
- .fullfp16,
- .fuse_aes,
- .neon,
- .perfmon,
- .rcpc,
- .v8_2a,
+ .a75,
}),
};
pub const cortex_a76 = Cpu{
.name = "cortex_a76",
.llvm_name = "cortex-a76",
.features = featureSet(&[_]Feature{
- .crypto,
- .dotprod,
- .fp_armv8,
- .fullfp16,
- .neon,
- .rcpc,
- .ssbs,
- .v8_2a,
+ .a76,
}),
};
pub const cortex_a76ae = Cpu{
.name = "cortex_a76ae",
.llvm_name = "cortex-a76ae",
.features = featureSet(&[_]Feature{
- .crypto,
- .dotprod,
- .fp_armv8,
- .fullfp16,
- .neon,
- .rcpc,
- .ssbs,
- .v8_2a,
+ .a76,
}),
};
pub const cyclone = Cpu{
.name = "cyclone",
.llvm_name = "cyclone",
.features = featureSet(&[_]Feature{
- .alternate_sextload_cvt_f32_pattern,
- .arith_bcc_fusion,
- .arith_cbz_fusion,
- .crypto,
- .disable_latency_sched_heuristic,
- .fp_armv8,
- .fuse_aes,
- .fuse_crypto_eor,
- .neon,
- .perfmon,
- .zcm,
- .zcz,
- .zcz_fp_workaround,
+ .cyclone,
}),
};
pub const exynos_m1 = Cpu{
.name = "exynos_m1",
.llvm_name = "exynos-m1",
.features = featureSet(&[_]Feature{
- .crc,
- .crypto,
- .exynos_cheap_as_move,
- .force_32bit_jump_tables,
- .fuse_aes,
- .perfmon,
- .slow_misaligned_128store,
- .slow_paired_128,
- .use_postra_scheduler,
- .use_reciprocal_square_root,
- .zcz_fp,
+ .exynosm1,
}),
};
pub const exynos_m2 = Cpu{
.name = "exynos_m2",
.llvm_name = "exynos-m2",
.features = featureSet(&[_]Feature{
- .crc,
- .crypto,
- .exynos_cheap_as_move,
- .force_32bit_jump_tables,
- .fuse_aes,
- .perfmon,
- .slow_misaligned_128store,
- .slow_paired_128,
- .use_postra_scheduler,
- .zcz_fp,
+ .exynosm2,
}),
};
pub const exynos_m3 = Cpu{
.name = "exynos_m3",
.llvm_name = "exynos-m3",
.features = featureSet(&[_]Feature{
- .crc,
- .crypto,
- .exynos_cheap_as_move,
- .force_32bit_jump_tables,
- .fuse_address,
- .fuse_aes,
- .fuse_csel,
- .fuse_literals,
- .lsl_fast,
- .perfmon,
- .predictable_select_expensive,
- .use_postra_scheduler,
- .zcz_fp,
+ .exynosm3,
}),
};
pub const exynos_m4 = Cpu{
.name = "exynos_m4",
.llvm_name = "exynos-m4",
.features = featureSet(&[_]Feature{
- .arith_bcc_fusion,
- .arith_cbz_fusion,
- .crypto,
- .dotprod,
- .exynos_cheap_as_move,
- .force_32bit_jump_tables,
- .fullfp16,
- .fuse_address,
- .fuse_aes,
- .fuse_arith_logic,
- .fuse_csel,
- .fuse_literals,
- .lsl_fast,
- .perfmon,
- .use_postra_scheduler,
- .v8_2a,
- .zcz,
+ .exynosm4,
}),
};
pub const exynos_m5 = Cpu{
.name = "exynos_m5",
.llvm_name = "exynos-m5",
.features = featureSet(&[_]Feature{
- .arith_bcc_fusion,
- .arith_cbz_fusion,
- .crypto,
- .dotprod,
- .exynos_cheap_as_move,
- .force_32bit_jump_tables,
- .fullfp16,
- .fuse_address,
- .fuse_aes,
- .fuse_arith_logic,
- .fuse_csel,
- .fuse_literals,
- .lsl_fast,
- .perfmon,
- .use_postra_scheduler,
- .v8_2a,
- .zcz,
+ .exynosm4,
}),
};
pub const falkor = Cpu{
.name = "falkor",
.llvm_name = "falkor",
.features = featureSet(&[_]Feature{
- .crc,
- .crypto,
- .custom_cheap_as_move,
- .fp_armv8,
- .lsl_fast,
- .neon,
- .perfmon,
- .predictable_select_expensive,
- .rdm,
- .slow_strqro_store,
- .use_postra_scheduler,
- .zcz,
+ .falkor,
}),
};
pub const generic = Cpu{
@@ -1372,119 +1639,56 @@ pub const cpu = struct {
.name = "kryo",
.llvm_name = "kryo",
.features = featureSet(&[_]Feature{
- .crc,
- .crypto,
- .custom_cheap_as_move,
- .fp_armv8,
- .lsl_fast,
- .neon,
- .perfmon,
- .predictable_select_expensive,
- .use_postra_scheduler,
- .zcz,
+ .kryo,
}),
};
pub const saphira = Cpu{
.name = "saphira",
.llvm_name = "saphira",
.features = featureSet(&[_]Feature{
- .crypto,
- .custom_cheap_as_move,
- .fp_armv8,
- .lsl_fast,
- .neon,
- .perfmon,
- .predictable_select_expensive,
- .spe,
- .use_postra_scheduler,
- .v8_4a,
- .zcz,
+ .saphira,
}),
};
pub const thunderx = Cpu{
.name = "thunderx",
.llvm_name = "thunderx",
.features = featureSet(&[_]Feature{
- .crc,
- .crypto,
- .fp_armv8,
- .neon,
- .perfmon,
- .predictable_select_expensive,
- .use_postra_scheduler,
+ .thunderx,
}),
};
pub const thunderx2t99 = Cpu{
.name = "thunderx2t99",
.llvm_name = "thunderx2t99",
.features = featureSet(&[_]Feature{
- .aggressive_fma,
- .arith_bcc_fusion,
- .crc,
- .crypto,
- .fp_armv8,
- .lse,
- .neon,
- .predictable_select_expensive,
- .use_postra_scheduler,
- .v8_1a,
+ .thunderx2t99,
}),
};
pub const thunderxt81 = Cpu{
.name = "thunderxt81",
.llvm_name = "thunderxt81",
.features = featureSet(&[_]Feature{
- .crc,
- .crypto,
- .fp_armv8,
- .neon,
- .perfmon,
- .predictable_select_expensive,
- .use_postra_scheduler,
+ .thunderxt81,
}),
};
pub const thunderxt83 = Cpu{
.name = "thunderxt83",
.llvm_name = "thunderxt83",
.features = featureSet(&[_]Feature{
- .crc,
- .crypto,
- .fp_armv8,
- .neon,
- .perfmon,
- .predictable_select_expensive,
- .use_postra_scheduler,
+ .thunderxt83,
}),
};
pub const thunderxt88 = Cpu{
.name = "thunderxt88",
.llvm_name = "thunderxt88",
.features = featureSet(&[_]Feature{
- .crc,
- .crypto,
- .fp_armv8,
- .neon,
- .perfmon,
- .predictable_select_expensive,
- .use_postra_scheduler,
+ .thunderxt88,
}),
};
pub const tsv110 = Cpu{
.name = "tsv110",
.llvm_name = "tsv110",
.features = featureSet(&[_]Feature{
- .crypto,
- .custom_cheap_as_move,
- .dotprod,
- .fp_armv8,
- .fp16fml,
- .fullfp16,
- .fuse_aes,
- .neon,
- .perfmon,
- .spe,
- .use_postra_scheduler,
- .v8_2a,
+ .tsv110,
}),
};
};
@@ -1493,6 +1697,7 @@ pub const cpu = struct {
/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
/// compiler has inefficient memory and CPU usage, affecting build times.
pub const all_cpus = &[_]*const Cpu{
+ &cpu.apple_latest,
&cpu.cortex_a35,
&cpu.cortex_a53,
&cpu.cortex_a55,
@@ -1513,6 +1718,7 @@ pub const all_cpus = &[_]*const Cpu{
&cpu.kryo,
&cpu.saphira,
&cpu.thunderx,
+ &cpu.thunderx2t99,
&cpu.thunderxt81,
&cpu.thunderxt83,
&cpu.thunderxt88,