mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
update target CPU features for LLVM 15
This commit is contained in:
parent
5043369e14
commit
c75226d033
11 changed files with 3825 additions and 85 deletions
|
|
@ -19,6 +19,7 @@ pub const Feature = enum {
|
|||
amvs,
|
||||
arith_bcc_fusion,
|
||||
arith_cbz_fusion,
|
||||
ascend_store_address,
|
||||
balance_fp_ops,
|
||||
bf16,
|
||||
brbe,
|
||||
|
|
@ -61,6 +62,7 @@ pub const Feature = enum {
|
|||
fptoint,
|
||||
fullfp16,
|
||||
fuse_address,
|
||||
fuse_adrp_add,
|
||||
fuse_aes,
|
||||
fuse_arith_logic,
|
||||
fuse_crypto_eor,
|
||||
|
|
@ -73,6 +75,7 @@ pub const Feature = enum {
|
|||
hcx,
|
||||
i8mm,
|
||||
jsconv,
|
||||
ldapr,
|
||||
lor,
|
||||
ls64,
|
||||
lse,
|
||||
|
|
@ -139,7 +142,6 @@ pub const Feature = enum {
|
|||
spe_eef,
|
||||
specrestrict,
|
||||
ssbs,
|
||||
streaming_sve,
|
||||
strict_align,
|
||||
sve,
|
||||
sve2,
|
||||
|
|
@ -206,6 +208,7 @@ pub const all_features = blk: {
|
|||
.description = "Cortex-A65 ARM processors",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.fuse_address,
|
||||
.fuse_adrp_add,
|
||||
.fuse_aes,
|
||||
.fuse_literals,
|
||||
}),
|
||||
|
|
@ -288,6 +291,11 @@ pub const all_features = blk: {
|
|||
.description = "CPU fuses arithmetic + cbz/cbnz operations",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.ascend_store_address)] = .{
|
||||
.llvm_name = "ascend-store-address",
|
||||
.description = "Schedule vector stores by ascending address",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.balance_fp_ops)] = .{
|
||||
.llvm_name = "balance-fp-ops",
|
||||
.description = "balance mix of odd and even D-registers for fp multiply(-accumulate) ops",
|
||||
|
|
@ -517,6 +525,11 @@ pub const all_features = blk: {
|
|||
.description = "CPU fuses address generation and memory operations",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.fuse_adrp_add)] = .{
|
||||
.llvm_name = "fuse-adrp-add",
|
||||
.description = "CPU fuses adrp+add operations",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.fuse_aes)] = .{
|
||||
.llvm_name = "fuse-aes",
|
||||
.description = "CPU fuses AES crypto operations",
|
||||
|
|
@ -579,6 +592,11 @@ pub const all_features = blk: {
|
|||
.fp_armv8,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.ldapr)] = .{
|
||||
.llvm_name = "ldapr",
|
||||
.description = "Use LDAPR to lower atomic loads; experimental until we have more testing/a formal correctness proof",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.lor)] = .{
|
||||
.llvm_name = "lor",
|
||||
.description = "Enables ARM v8.1 Limited Ordering Regions extension",
|
||||
|
|
@ -891,7 +909,7 @@ pub const all_features = blk: {
|
|||
.description = "Enable Scalable Matrix Extension (SME)",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.bf16,
|
||||
.streaming_sve,
|
||||
.use_scalar_inc_vl,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.sme_f64)] = .{
|
||||
|
|
@ -928,11 +946,6 @@ pub const all_features = blk: {
|
|||
.description = "Enable Speculative Store Bypass Safe bit",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.streaming_sve)] = .{
|
||||
.llvm_name = "streaming-sve",
|
||||
.description = "Enable subset of SVE(2) instructions for Streaming SVE execution mode",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.strict_align)] = .{
|
||||
.llvm_name = "strict-align",
|
||||
.description = "Disallow all unaligned memory access",
|
||||
|
|
@ -1178,6 +1191,7 @@ pub const all_features = blk: {
|
|||
.rcpc_immo,
|
||||
.rdm,
|
||||
.sel2,
|
||||
.specrestrict,
|
||||
.tlb_rmi,
|
||||
.tracev8_4,
|
||||
.uaops,
|
||||
|
|
@ -1387,6 +1401,7 @@ pub const cpu = struct {
|
|||
.fp16fml,
|
||||
.fptoint,
|
||||
.fuse_address,
|
||||
.fuse_adrp_add,
|
||||
.fuse_aes,
|
||||
.fuse_arith_logic,
|
||||
.fuse_crypto_eor,
|
||||
|
|
@ -1472,6 +1487,7 @@ pub const cpu = struct {
|
|||
.fp16fml,
|
||||
.fptoint,
|
||||
.fuse_address,
|
||||
.fuse_adrp_add,
|
||||
.fuse_aes,
|
||||
.fuse_arith_logic,
|
||||
.fuse_crypto_eor,
|
||||
|
|
@ -1503,6 +1519,7 @@ pub const cpu = struct {
|
|||
.fp16fml,
|
||||
.fptoint,
|
||||
.fuse_address,
|
||||
.fuse_adrp_add,
|
||||
.fuse_aes,
|
||||
.fuse_arith_logic,
|
||||
.fuse_crypto_eor,
|
||||
|
|
@ -1636,6 +1653,7 @@ pub const cpu = struct {
|
|||
.crc,
|
||||
.crypto,
|
||||
.custom_cheap_as_move,
|
||||
.fuse_adrp_add,
|
||||
.fuse_aes,
|
||||
.fuse_literals,
|
||||
.perfmon,
|
||||
|
|
@ -1652,6 +1670,7 @@ pub const cpu = struct {
|
|||
.crypto,
|
||||
.dotprod,
|
||||
.fullfp16,
|
||||
.perfmon,
|
||||
.rcpc,
|
||||
.ssbs,
|
||||
.v8_2a,
|
||||
|
|
@ -1665,6 +1684,7 @@ pub const cpu = struct {
|
|||
.crypto,
|
||||
.dotprod,
|
||||
.fullfp16,
|
||||
.perfmon,
|
||||
.rcpc,
|
||||
.ssbs,
|
||||
.v8_2a,
|
||||
|
|
@ -1691,6 +1711,7 @@ pub const cpu = struct {
|
|||
.features = featureSet(&[_]Feature{
|
||||
.crc,
|
||||
.crypto,
|
||||
.fuse_adrp_add,
|
||||
.fuse_aes,
|
||||
.fuse_literals,
|
||||
.perfmon,
|
||||
|
|
@ -1729,6 +1750,7 @@ pub const cpu = struct {
|
|||
.crypto,
|
||||
.dotprod,
|
||||
.fullfp16,
|
||||
.perfmon,
|
||||
.rcpc,
|
||||
.ssbs,
|
||||
.v8_2a,
|
||||
|
|
@ -1742,6 +1764,7 @@ pub const cpu = struct {
|
|||
.crypto,
|
||||
.dotprod,
|
||||
.fullfp16,
|
||||
.perfmon,
|
||||
.rcpc,
|
||||
.ssbs,
|
||||
.v8_2a,
|
||||
|
|
@ -1756,6 +1779,7 @@ pub const cpu = struct {
|
|||
.dotprod,
|
||||
.fullfp16,
|
||||
.fuse_aes,
|
||||
.perfmon,
|
||||
.rcpc,
|
||||
.ssbs,
|
||||
.v8_2a,
|
||||
|
|
@ -1802,7 +1826,6 @@ pub const cpu = struct {
|
|||
.perfmon,
|
||||
.predres,
|
||||
.sb,
|
||||
.specrestrict,
|
||||
.ssbs,
|
||||
.v8r,
|
||||
}),
|
||||
|
|
@ -1924,22 +1947,20 @@ pub const cpu = struct {
|
|||
.name = "exynos_m3",
|
||||
.llvm_name = "exynos-m3",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.arith_bcc_fusion,
|
||||
.arith_cbz_fusion,
|
||||
.crc,
|
||||
.crypto,
|
||||
.exynos_cheap_as_move,
|
||||
.force_32bit_jump_tables,
|
||||
.fuse_address,
|
||||
.fuse_adrp_add,
|
||||
.fuse_aes,
|
||||
.fuse_arith_logic,
|
||||
.fuse_csel,
|
||||
.fuse_literals,
|
||||
.lsl_fast,
|
||||
.perfmon,
|
||||
.predictable_select_expensive,
|
||||
.use_postra_scheduler,
|
||||
.v8a,
|
||||
.zcz,
|
||||
}),
|
||||
};
|
||||
pub const exynos_m4 = CpuModel{
|
||||
|
|
@ -1954,6 +1975,7 @@ pub const cpu = struct {
|
|||
.force_32bit_jump_tables,
|
||||
.fullfp16,
|
||||
.fuse_address,
|
||||
.fuse_adrp_add,
|
||||
.fuse_aes,
|
||||
.fuse_arith_logic,
|
||||
.fuse_csel,
|
||||
|
|
@ -1977,6 +1999,7 @@ pub const cpu = struct {
|
|||
.force_32bit_jump_tables,
|
||||
.fullfp16,
|
||||
.fuse_address,
|
||||
.fuse_adrp_add,
|
||||
.fuse_aes,
|
||||
.fuse_arith_logic,
|
||||
.fuse_csel,
|
||||
|
|
@ -2010,9 +2033,9 @@ pub const cpu = struct {
|
|||
.llvm_name = "generic",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.ete,
|
||||
.fuse_adrp_add,
|
||||
.fuse_aes,
|
||||
.neon,
|
||||
.perfmon,
|
||||
.use_postra_scheduler,
|
||||
}),
|
||||
};
|
||||
|
|
@ -2058,6 +2081,7 @@ pub const cpu = struct {
|
|||
.dotprod,
|
||||
.fullfp16,
|
||||
.fuse_aes,
|
||||
.perfmon,
|
||||
.rcpc,
|
||||
.ssbs,
|
||||
.use_postra_scheduler,
|
||||
|
|
@ -2072,6 +2096,7 @@ pub const cpu = struct {
|
|||
.dotprod,
|
||||
.fullfp16,
|
||||
.fuse_aes,
|
||||
.perfmon,
|
||||
.rcpc,
|
||||
.spe,
|
||||
.ssbs,
|
||||
|
|
@ -2089,6 +2114,7 @@ pub const cpu = struct {
|
|||
.fuse_aes,
|
||||
.i8mm,
|
||||
.mte,
|
||||
.perfmon,
|
||||
.sve2_bitperm,
|
||||
.use_postra_scheduler,
|
||||
.v8_5a,
|
||||
|
|
|
|||
|
|
@ -10,7 +10,9 @@ pub const Feature = enum {
|
|||
add_no_carry_insts,
|
||||
aperture_regs,
|
||||
architected_flat_scratch,
|
||||
atomic_fadd_insts,
|
||||
atomic_fadd_no_rtn_insts,
|
||||
atomic_fadd_rtn_insts,
|
||||
atomic_pk_fadd_no_rtn_insts,
|
||||
auto_waitcnt_before_barrier,
|
||||
ci_insts,
|
||||
cumode,
|
||||
|
|
@ -22,12 +24,12 @@ pub const Feature = enum {
|
|||
dot5_insts,
|
||||
dot6_insts,
|
||||
dot7_insts,
|
||||
dot8_insts,
|
||||
dpp,
|
||||
dpp8,
|
||||
dpp_64bit,
|
||||
ds128,
|
||||
ds_src2_insts,
|
||||
enable_ds128,
|
||||
enable_prt_strict_null,
|
||||
extended_image_insts,
|
||||
fast_denormal_f32,
|
||||
fast_fmaf,
|
||||
|
|
@ -35,11 +37,13 @@ pub const Feature = enum {
|
|||
flat_for_global,
|
||||
flat_global_insts,
|
||||
flat_inst_offsets,
|
||||
flat_scratch,
|
||||
flat_scratch_insts,
|
||||
flat_segment_offset_bug,
|
||||
fma_mix_insts,
|
||||
fmaf,
|
||||
fp64,
|
||||
fp8_insts,
|
||||
full_rate_64_ops,
|
||||
g16,
|
||||
gcn3_encoding,
|
||||
|
|
@ -49,13 +53,17 @@ pub const Feature = enum {
|
|||
gfx10_a_encoding,
|
||||
gfx10_b_encoding,
|
||||
gfx10_insts,
|
||||
gfx11,
|
||||
gfx11_insts,
|
||||
gfx7_gfx8_gfx9_insts,
|
||||
gfx8_insts,
|
||||
gfx9,
|
||||
gfx90a_insts,
|
||||
gfx940_insts,
|
||||
gfx9_insts,
|
||||
half_rate_64_ops,
|
||||
image_gather4_d16_bug,
|
||||
image_insts,
|
||||
image_store_d16_bug,
|
||||
inst_fwd_prefetch_bug,
|
||||
int_clamp_insts,
|
||||
|
|
@ -90,6 +98,7 @@ pub const Feature = enum {
|
|||
packed_tid,
|
||||
pk_fmac_f16_inst,
|
||||
promote_alloca,
|
||||
prt_strict_null,
|
||||
r128_a16,
|
||||
s_memrealtime,
|
||||
s_memtime_inst,
|
||||
|
|
@ -113,12 +122,14 @@ pub const Feature = enum {
|
|||
tgsplit,
|
||||
trap_handler,
|
||||
trig_reduced_range,
|
||||
true16,
|
||||
unaligned_access_mode,
|
||||
unaligned_buffer_access,
|
||||
unaligned_ds_access,
|
||||
unaligned_scratch_access,
|
||||
unpacked_d16_vmem,
|
||||
unsafe_ds_offset_folding,
|
||||
user_sgpr_init16_bug,
|
||||
vcmpx_exec_war_hazard,
|
||||
vcmpx_permlane_hazard,
|
||||
vgpr_index_mode,
|
||||
|
|
@ -126,6 +137,7 @@ pub const Feature = enum {
|
|||
volcanic_islands,
|
||||
vop3_literal,
|
||||
vop3p,
|
||||
vopd,
|
||||
vscnt,
|
||||
wavefrontsize16,
|
||||
wavefrontsize32,
|
||||
|
|
@ -168,9 +180,23 @@ pub const all_features = blk: {
|
|||
.description = "Flat Scratch register is a readonly SPI initialized architected register",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.atomic_fadd_insts)] = .{
|
||||
.llvm_name = "atomic-fadd-insts",
|
||||
.description = "Has buffer_atomic_add_f32, buffer_atomic_pk_add_f16, global_atomic_add_f32, global_atomic_pk_add_f16 instructions",
|
||||
result[@enumToInt(Feature.atomic_fadd_no_rtn_insts)] = .{
|
||||
.llvm_name = "atomic-fadd-no-rtn-insts",
|
||||
.description = "Has buffer_atomic_add_f32 and global_atomic_add_f32 instructions that don't return original value",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.flat_global_insts,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.atomic_fadd_rtn_insts)] = .{
|
||||
.llvm_name = "atomic-fadd-rtn-insts",
|
||||
.description = "Has buffer_atomic_add_f32 and global_atomic_add_f32 instructions that return original value",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.flat_global_insts,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.atomic_pk_fadd_no_rtn_insts)] = .{
|
||||
.llvm_name = "atomic-pk-fadd-no-rtn-insts",
|
||||
.description = "Has buffer_atomic_pk_add_f16 and global_atomic_pk_add_f16 instructions that don't return original value",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.flat_global_insts,
|
||||
}),
|
||||
|
|
@ -230,6 +256,11 @@ pub const all_features = blk: {
|
|||
.description = "Has v_dot2_f32_f16, v_dot4_u32_u8, v_dot8_u32_u4 instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.dot8_insts)] = .{
|
||||
.llvm_name = "dot8-insts",
|
||||
.description = "Has v_dot2_f16_f16, v_dot2_bf16_bf16, v_dot2_f32_bf16, v_dot4_i32_iu8, v_dot8_i32_iu4 instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.dpp)] = .{
|
||||
.llvm_name = "dpp",
|
||||
.description = "Support DPP (Data Parallel Primitives) extension",
|
||||
|
|
@ -245,19 +276,14 @@ pub const all_features = blk: {
|
|||
.description = "Support DPP (Data Parallel Primitives) extension",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.ds_src2_insts)] = .{
|
||||
.llvm_name = "ds-src2-insts",
|
||||
.description = "Has ds_*_src2 instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.enable_ds128)] = .{
|
||||
result[@enumToInt(Feature.ds128)] = .{
|
||||
.llvm_name = "enable-ds128",
|
||||
.description = "Use ds_{read|write}_b128",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.enable_prt_strict_null)] = .{
|
||||
.llvm_name = "enable-prt-strict-null",
|
||||
.description = "Enable zeroing of result registers for sparse texture fetches",
|
||||
result[@enumToInt(Feature.ds_src2_insts)] = .{
|
||||
.llvm_name = "ds-src2-insts",
|
||||
.description = "Has ds_*_src2 instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.extended_image_insts)] = .{
|
||||
|
|
@ -295,6 +321,11 @@ pub const all_features = blk: {
|
|||
.description = "Flat instructions have immediate offset addressing mode",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.flat_scratch)] = .{
|
||||
.llvm_name = "enable-flat-scratch",
|
||||
.description = "Use scratch_* flat memory instructions to access scratch",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.flat_scratch_insts)] = .{
|
||||
.llvm_name = "flat-scratch-insts",
|
||||
.description = "Have scratch_* flat memory instructions",
|
||||
|
|
@ -320,6 +351,11 @@ pub const all_features = blk: {
|
|||
.description = "Enable double precision operations",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.fp8_insts)] = .{
|
||||
.llvm_name = "fp8-insts",
|
||||
.description = "Has fp8 and bf8 instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.full_rate_64_ops)] = .{
|
||||
.llvm_name = "full-rate-64-ops",
|
||||
.description = "Most fp64 instructions are full rate",
|
||||
|
|
@ -364,6 +400,7 @@ pub const all_features = blk: {
|
|||
.gfx10_insts,
|
||||
.gfx8_insts,
|
||||
.gfx9_insts,
|
||||
.image_insts,
|
||||
.int_clamp_insts,
|
||||
.inv_2pi_inline_imm,
|
||||
.localmemorysize65536,
|
||||
|
|
@ -405,6 +442,56 @@ pub const all_features = blk: {
|
|||
.description = "Additional instructions for GFX10+",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.gfx11)] = .{
|
||||
.llvm_name = "gfx11",
|
||||
.description = "GFX11 GPU generation",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.@"16_bit_insts",
|
||||
.a16,
|
||||
.add_no_carry_insts,
|
||||
.aperture_regs,
|
||||
.ci_insts,
|
||||
.dpp,
|
||||
.dpp8,
|
||||
.extended_image_insts,
|
||||
.fast_denormal_f32,
|
||||
.fast_fmaf,
|
||||
.flat_address_space,
|
||||
.flat_global_insts,
|
||||
.flat_inst_offsets,
|
||||
.flat_scratch_insts,
|
||||
.fma_mix_insts,
|
||||
.fp64,
|
||||
.g16,
|
||||
.gfx10_3_insts,
|
||||
.gfx10_a_encoding,
|
||||
.gfx10_b_encoding,
|
||||
.gfx10_insts,
|
||||
.gfx11_insts,
|
||||
.gfx8_insts,
|
||||
.gfx9_insts,
|
||||
.int_clamp_insts,
|
||||
.inv_2pi_inline_imm,
|
||||
.localmemorysize65536,
|
||||
.mimg_r128,
|
||||
.movrel,
|
||||
.no_data_dep_hazard,
|
||||
.no_sdst_cmpx,
|
||||
.pk_fmac_f16_inst,
|
||||
.true16,
|
||||
.unaligned_buffer_access,
|
||||
.unaligned_ds_access,
|
||||
.vop3_literal,
|
||||
.vop3p,
|
||||
.vopd,
|
||||
.vscnt,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.gfx11_insts)] = .{
|
||||
.llvm_name = "gfx11-insts",
|
||||
.description = "Additional instructions for GFX11+",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.gfx7_gfx8_gfx9_insts)] = .{
|
||||
.llvm_name = "gfx7-gfx8-gfx9-insts",
|
||||
.description = "Instructions shared in GFX7, GFX8, GFX9",
|
||||
|
|
@ -462,6 +549,11 @@ pub const all_features = blk: {
|
|||
.description = "Additional instructions for GFX90A+",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.gfx940_insts)] = .{
|
||||
.llvm_name = "gfx940-insts",
|
||||
.description = "Additional instructions for GFX940+",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.gfx9_insts)] = .{
|
||||
.llvm_name = "gfx9-insts",
|
||||
.description = "Additional instructions for GFX9+",
|
||||
|
|
@ -477,6 +569,11 @@ pub const all_features = blk: {
|
|||
.description = "Image Gather4 D16 hardware bug",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.image_insts)] = .{
|
||||
.llvm_name = "image-insts",
|
||||
.description = "Support image instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.image_store_d16_bug)] = .{
|
||||
.llvm_name = "image-store-d16-bug",
|
||||
.description = "Image Store D16 hardware bug",
|
||||
|
|
@ -647,6 +744,11 @@ pub const all_features = blk: {
|
|||
.description = "Enable promote alloca pass",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.prt_strict_null)] = .{
|
||||
.llvm_name = "enable-prt-strict-null",
|
||||
.description = "Enable zeroing of result registers for sparse texture fetches",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.r128_a16)] = .{
|
||||
.llvm_name = "r128-a16",
|
||||
.description = "Support gfx9-style A16 for 16-bit coordinates/gradients/lod/clamp/mip image operands, where a16 is aliased with r128",
|
||||
|
|
@ -717,6 +819,7 @@ pub const all_features = blk: {
|
|||
.flat_address_space,
|
||||
.fp64,
|
||||
.gfx7_gfx8_gfx9_insts,
|
||||
.image_insts,
|
||||
.localmemorysize65536,
|
||||
.mad_mac_f32_insts,
|
||||
.mimg_r128,
|
||||
|
|
@ -754,6 +857,7 @@ pub const all_features = blk: {
|
|||
.ds_src2_insts,
|
||||
.extended_image_insts,
|
||||
.fp64,
|
||||
.image_insts,
|
||||
.ldsbankcount32,
|
||||
.localmemorysize32768,
|
||||
.mad_mac_f32_insts,
|
||||
|
|
@ -789,6 +893,11 @@ pub const all_features = blk: {
|
|||
.description = "Requires use of fract on arguments to trig instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.true16)] = .{
|
||||
.llvm_name = "true16",
|
||||
.description = "True 16-bit operand instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.unaligned_access_mode)] = .{
|
||||
.llvm_name = "unaligned-access-mode",
|
||||
.description = "Enable unaligned global, local and region loads and stores if the hardware supports it",
|
||||
|
|
@ -819,6 +928,11 @@ pub const all_features = blk: {
|
|||
.description = "Force using DS instruction immediate offsets on SI",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.user_sgpr_init16_bug)] = .{
|
||||
.llvm_name = "user-sgpr-init16-bug",
|
||||
.description = "Bug requiring at least 16 user+system SGPRs to be enabled",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.vcmpx_exec_war_hazard)] = .{
|
||||
.llvm_name = "vcmpx-exec-war-hazard",
|
||||
.description = "V_CMPX WAR hazard on EXEC (V_CMPX issue ONLY)",
|
||||
|
|
@ -854,6 +968,7 @@ pub const all_features = blk: {
|
|||
.gcn3_encoding,
|
||||
.gfx7_gfx8_gfx9_insts,
|
||||
.gfx8_insts,
|
||||
.image_insts,
|
||||
.int_clamp_insts,
|
||||
.inv_2pi_inline_imm,
|
||||
.localmemorysize65536,
|
||||
|
|
@ -882,6 +997,11 @@ pub const all_features = blk: {
|
|||
.description = "Has VOP3P packed instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.vopd)] = .{
|
||||
.llvm_name = "vopd",
|
||||
.description = "Has VOPD dual issue wave32 instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.vscnt)] = .{
|
||||
.llvm_name = "vscnt",
|
||||
.description = "Has separate store vscnt counter",
|
||||
|
|
@ -1226,6 +1346,118 @@ pub const cpu = struct {
|
|||
.wavefrontsize32,
|
||||
}),
|
||||
};
|
||||
pub const gfx1036 = CpuModel{
|
||||
.name = "gfx1036",
|
||||
.llvm_name = "gfx1036",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.dl_insts,
|
||||
.dot1_insts,
|
||||
.dot2_insts,
|
||||
.dot5_insts,
|
||||
.dot6_insts,
|
||||
.dot7_insts,
|
||||
.gfx10,
|
||||
.gfx10_3_insts,
|
||||
.gfx10_a_encoding,
|
||||
.gfx10_b_encoding,
|
||||
.ldsbankcount32,
|
||||
.nsa_encoding,
|
||||
.nsa_max_size_13,
|
||||
.shader_cycles_register,
|
||||
.wavefrontsize32,
|
||||
}),
|
||||
};
|
||||
pub const gfx1100 = CpuModel{
|
||||
.name = "gfx1100",
|
||||
.llvm_name = "gfx1100",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.architected_flat_scratch,
|
||||
.atomic_fadd_no_rtn_insts,
|
||||
.atomic_fadd_rtn_insts,
|
||||
.dl_insts,
|
||||
.dot5_insts,
|
||||
.dot7_insts,
|
||||
.dot8_insts,
|
||||
.gfx11,
|
||||
.image_insts,
|
||||
.ldsbankcount32,
|
||||
.nsa_encoding,
|
||||
.nsa_max_size_5,
|
||||
.packed_tid,
|
||||
.shader_cycles_register,
|
||||
.user_sgpr_init16_bug,
|
||||
.vcmpx_permlane_hazard,
|
||||
.wavefrontsize32,
|
||||
}),
|
||||
};
|
||||
pub const gfx1101 = CpuModel{
|
||||
.name = "gfx1101",
|
||||
.llvm_name = "gfx1101",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.architected_flat_scratch,
|
||||
.atomic_fadd_no_rtn_insts,
|
||||
.atomic_fadd_rtn_insts,
|
||||
.dl_insts,
|
||||
.dot5_insts,
|
||||
.dot7_insts,
|
||||
.dot8_insts,
|
||||
.gfx11,
|
||||
.image_insts,
|
||||
.ldsbankcount32,
|
||||
.nsa_encoding,
|
||||
.nsa_max_size_5,
|
||||
.packed_tid,
|
||||
.shader_cycles_register,
|
||||
.vcmpx_permlane_hazard,
|
||||
.wavefrontsize32,
|
||||
}),
|
||||
};
|
||||
pub const gfx1102 = CpuModel{
|
||||
.name = "gfx1102",
|
||||
.llvm_name = "gfx1102",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.architected_flat_scratch,
|
||||
.atomic_fadd_no_rtn_insts,
|
||||
.atomic_fadd_rtn_insts,
|
||||
.dl_insts,
|
||||
.dot5_insts,
|
||||
.dot7_insts,
|
||||
.dot8_insts,
|
||||
.gfx11,
|
||||
.image_insts,
|
||||
.ldsbankcount32,
|
||||
.nsa_encoding,
|
||||
.nsa_max_size_5,
|
||||
.packed_tid,
|
||||
.shader_cycles_register,
|
||||
.user_sgpr_init16_bug,
|
||||
.vcmpx_permlane_hazard,
|
||||
.wavefrontsize32,
|
||||
}),
|
||||
};
|
||||
pub const gfx1103 = CpuModel{
|
||||
.name = "gfx1103",
|
||||
.llvm_name = "gfx1103",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.architected_flat_scratch,
|
||||
.atomic_fadd_no_rtn_insts,
|
||||
.atomic_fadd_rtn_insts,
|
||||
.dl_insts,
|
||||
.dot5_insts,
|
||||
.dot7_insts,
|
||||
.dot8_insts,
|
||||
.gfx11,
|
||||
.image_insts,
|
||||
.ldsbankcount32,
|
||||
.nsa_encoding,
|
||||
.nsa_max_size_5,
|
||||
.packed_tid,
|
||||
.shader_cycles_register,
|
||||
.user_sgpr_init16_bug,
|
||||
.vcmpx_permlane_hazard,
|
||||
.wavefrontsize32,
|
||||
}),
|
||||
};
|
||||
pub const gfx600 = CpuModel{
|
||||
.name = "gfx600",
|
||||
.llvm_name = "gfx600",
|
||||
|
|
@ -1360,6 +1592,7 @@ pub const cpu = struct {
|
|||
.extended_image_insts,
|
||||
.gfx9,
|
||||
.image_gather4_d16_bug,
|
||||
.image_insts,
|
||||
.ldsbankcount32,
|
||||
.mad_mac_f32_insts,
|
||||
.mad_mix_insts,
|
||||
|
|
@ -1373,6 +1606,7 @@ pub const cpu = struct {
|
|||
.extended_image_insts,
|
||||
.gfx9,
|
||||
.image_gather4_d16_bug,
|
||||
.image_insts,
|
||||
.ldsbankcount32,
|
||||
.mad_mac_f32_insts,
|
||||
.mad_mix_insts,
|
||||
|
|
@ -1387,6 +1621,7 @@ pub const cpu = struct {
|
|||
.fma_mix_insts,
|
||||
.gfx9,
|
||||
.image_gather4_d16_bug,
|
||||
.image_insts,
|
||||
.ldsbankcount32,
|
||||
.mad_mac_f32_insts,
|
||||
}),
|
||||
|
|
@ -1405,6 +1640,7 @@ pub const cpu = struct {
|
|||
.gfx9,
|
||||
.half_rate_64_ops,
|
||||
.image_gather4_d16_bug,
|
||||
.image_insts,
|
||||
.ldsbankcount32,
|
||||
.mad_mac_f32_insts,
|
||||
.sramecc_support,
|
||||
|
|
@ -1414,7 +1650,8 @@ pub const cpu = struct {
|
|||
.name = "gfx908",
|
||||
.llvm_name = "gfx908",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.atomic_fadd_insts,
|
||||
.atomic_fadd_no_rtn_insts,
|
||||
.atomic_pk_fadd_no_rtn_insts,
|
||||
.dl_insts,
|
||||
.dot1_insts,
|
||||
.dot2_insts,
|
||||
|
|
@ -1429,6 +1666,7 @@ pub const cpu = struct {
|
|||
.gfx9,
|
||||
.half_rate_64_ops,
|
||||
.image_gather4_d16_bug,
|
||||
.image_insts,
|
||||
.ldsbankcount32,
|
||||
.mad_mac_f32_insts,
|
||||
.mai_insts,
|
||||
|
|
@ -1445,6 +1683,7 @@ pub const cpu = struct {
|
|||
.extended_image_insts,
|
||||
.gfx9,
|
||||
.image_gather4_d16_bug,
|
||||
.image_insts,
|
||||
.ldsbankcount32,
|
||||
.mad_mac_f32_insts,
|
||||
.mad_mix_insts,
|
||||
|
|
@ -1454,7 +1693,9 @@ pub const cpu = struct {
|
|||
.name = "gfx90a",
|
||||
.llvm_name = "gfx90a",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.atomic_fadd_insts,
|
||||
.atomic_fadd_no_rtn_insts,
|
||||
.atomic_fadd_rtn_insts,
|
||||
.atomic_pk_fadd_no_rtn_insts,
|
||||
.dl_insts,
|
||||
.dot1_insts,
|
||||
.dot2_insts,
|
||||
|
|
@ -1468,6 +1709,7 @@ pub const cpu = struct {
|
|||
.full_rate_64_ops,
|
||||
.gfx9,
|
||||
.gfx90a_insts,
|
||||
.image_insts,
|
||||
.ldsbankcount32,
|
||||
.mad_mac_f32_insts,
|
||||
.mai_insts,
|
||||
|
|
@ -1485,11 +1727,43 @@ pub const cpu = struct {
|
|||
.extended_image_insts,
|
||||
.gfx9,
|
||||
.image_gather4_d16_bug,
|
||||
.image_insts,
|
||||
.ldsbankcount32,
|
||||
.mad_mac_f32_insts,
|
||||
.mad_mix_insts,
|
||||
}),
|
||||
};
|
||||
pub const gfx940 = CpuModel{
|
||||
.name = "gfx940",
|
||||
.llvm_name = "gfx940",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.architected_flat_scratch,
|
||||
.atomic_fadd_no_rtn_insts,
|
||||
.atomic_fadd_rtn_insts,
|
||||
.atomic_pk_fadd_no_rtn_insts,
|
||||
.dl_insts,
|
||||
.dot1_insts,
|
||||
.dot2_insts,
|
||||
.dot3_insts,
|
||||
.dot4_insts,
|
||||
.dot5_insts,
|
||||
.dot6_insts,
|
||||
.dot7_insts,
|
||||
.dpp_64bit,
|
||||
.fma_mix_insts,
|
||||
.fp8_insts,
|
||||
.full_rate_64_ops,
|
||||
.gfx9,
|
||||
.gfx90a_insts,
|
||||
.gfx940_insts,
|
||||
.ldsbankcount32,
|
||||
.mai_insts,
|
||||
.packed_fp32_ops,
|
||||
.packed_tid,
|
||||
.pk_fmac_f16_inst,
|
||||
.sramecc_support,
|
||||
}),
|
||||
};
|
||||
pub const hainan = CpuModel{
|
||||
.name = "hainan",
|
||||
.llvm_name = "hainan",
|
||||
|
|
|
|||
|
|
@ -8,9 +8,12 @@ pub const Feature = enum {
|
|||
@"32bit",
|
||||
@"8msecext",
|
||||
a76,
|
||||
aapcs_frame_chain,
|
||||
aapcs_frame_chain_leaf,
|
||||
aclass,
|
||||
acquire_release,
|
||||
aes,
|
||||
atomics_32,
|
||||
avoid_movs_shop,
|
||||
avoid_partial_cpsr,
|
||||
bf16,
|
||||
|
|
@ -37,6 +40,7 @@ pub const Feature = enum {
|
|||
expand_fp_mlx,
|
||||
exynos,
|
||||
fix_cmse_cve_2021_35465,
|
||||
fix_cortex_a57_aes_1742098,
|
||||
fp16,
|
||||
fp16fml,
|
||||
fp64,
|
||||
|
|
@ -133,6 +137,7 @@ pub const Feature = enum {
|
|||
thumb2,
|
||||
thumb_mode,
|
||||
trustzone,
|
||||
use_mipipeliner,
|
||||
use_misched,
|
||||
v2,
|
||||
v2a,
|
||||
|
|
@ -218,6 +223,18 @@ pub const all_features = blk: {
|
|||
.description = "Cortex-A76 ARM processors",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.aapcs_frame_chain)] = .{
|
||||
.llvm_name = "aapcs-frame-chain",
|
||||
.description = "Create an AAPCS compliant frame chain",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.aapcs_frame_chain_leaf)] = .{
|
||||
.llvm_name = "aapcs-frame-chain-leaf",
|
||||
.description = "Create an AAPCS compliant frame chain for leaf functions",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.aapcs_frame_chain,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.aclass)] = .{
|
||||
.llvm_name = "aclass",
|
||||
.description = "Is application profile ('A' series)",
|
||||
|
|
@ -235,6 +252,11 @@ pub const all_features = blk: {
|
|||
.neon,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.atomics_32)] = .{
|
||||
.llvm_name = "atomics-32",
|
||||
.description = "Assume that lock-free 32-bit atomics are available",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.avoid_movs_shop)] = .{
|
||||
.llvm_name = "avoid-movs-shop",
|
||||
.description = "Avoid movs instructions with shifter operand",
|
||||
|
|
@ -408,6 +430,11 @@ pub const all_features = blk: {
|
|||
.description = "Mitigate against the cve-2021-35465 security vulnurability",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.fix_cortex_a57_aes_1742098)] = .{
|
||||
.llvm_name = "fix-cortex-a57-aes-1742098",
|
||||
.description = "Work around Cortex-A57 Erratum 1742098 / Cortex-A72 Erratum 1655431 (AES)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.fp16)] = .{
|
||||
.llvm_name = "fp16",
|
||||
.description = "Enable half-precision floating point",
|
||||
|
|
@ -989,6 +1016,11 @@ pub const all_features = blk: {
|
|||
.description = "Enable support for TrustZone security extensions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.use_mipipeliner)] = .{
|
||||
.llvm_name = "use-mipipeliner",
|
||||
.description = "Use the MachinePipeliner",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.use_misched)] = .{
|
||||
.llvm_name = "use-misched",
|
||||
.description = "Use the MachineScheduler",
|
||||
|
|
@ -1911,6 +1943,7 @@ pub const cpu = struct {
|
|||
.features = featureSet(&[_]Feature{
|
||||
.avoid_partial_cpsr,
|
||||
.cheap_predicable_cpsr,
|
||||
.fix_cortex_a57_aes_1742098,
|
||||
.fpao,
|
||||
.v8a,
|
||||
}),
|
||||
|
|
@ -1946,6 +1979,7 @@ pub const cpu = struct {
|
|||
.name = "cortex_a72",
|
||||
.llvm_name = "cortex-a72",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.fix_cortex_a57_aes_1742098,
|
||||
.v8a,
|
||||
}),
|
||||
};
|
||||
|
|
@ -2151,10 +2185,22 @@ pub const cpu = struct {
|
|||
.llvm_name = "cortex-m7",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.fp_armv8d16,
|
||||
.use_mipipeliner,
|
||||
.use_misched,
|
||||
.v7em,
|
||||
}),
|
||||
};
|
||||
pub const cortex_m85 = CpuModel{
|
||||
.name = "cortex_m85",
|
||||
.llvm_name = "cortex-m85",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.fp_armv8d16,
|
||||
.mve_fp,
|
||||
.pacbti,
|
||||
.use_misched,
|
||||
.v8_1m_main,
|
||||
}),
|
||||
};
|
||||
pub const cortex_r4 = CpuModel{
|
||||
.name = "cortex_r4",
|
||||
.llvm_name = "cortex-r4",
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ pub const Feature = enum {
|
|||
sram,
|
||||
tinyencoding,
|
||||
xmega,
|
||||
xmega3,
|
||||
xmegau,
|
||||
};
|
||||
|
||||
|
|
@ -163,6 +164,7 @@ pub const all_features = blk: {
|
|||
.dependencies = featureSet(&[_]Feature{
|
||||
.avr0,
|
||||
.@"break",
|
||||
.smallstack,
|
||||
.sram,
|
||||
.tinyencoding,
|
||||
}),
|
||||
|
|
@ -302,6 +304,22 @@ pub const all_features = blk: {
|
|||
.sram,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.xmega3)] = .{
|
||||
.llvm_name = "xmega3",
|
||||
.description = "The device is a part of the xmega3 family",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.addsubiw,
|
||||
.avr0,
|
||||
.@"break",
|
||||
.ijmpcall,
|
||||
.jmpcall,
|
||||
.lpm,
|
||||
.lpmx,
|
||||
.movw,
|
||||
.mul,
|
||||
.sram,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.xmegau)] = .{
|
||||
.llvm_name = "xmegau",
|
||||
.description = "The device is a part of the xmegau family",
|
||||
|
|
@ -445,6 +463,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "at90s1200",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr0,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const at90s2313 = CpuModel{
|
||||
|
|
@ -452,6 +471,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "at90s2313",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr2,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const at90s2323 = CpuModel{
|
||||
|
|
@ -459,6 +479,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "at90s2323",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr2,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const at90s2333 = CpuModel{
|
||||
|
|
@ -466,6 +487,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "at90s2333",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr2,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const at90s2343 = CpuModel{
|
||||
|
|
@ -473,6 +495,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "at90s2343",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr2,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const at90s4414 = CpuModel{
|
||||
|
|
@ -480,6 +503,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "at90s4414",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr2,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const at90s4433 = CpuModel{
|
||||
|
|
@ -487,6 +511,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "at90s4433",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr2,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const at90s4434 = CpuModel{
|
||||
|
|
@ -494,6 +519,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "at90s4434",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr2,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const at90s8515 = CpuModel{
|
||||
|
|
@ -674,6 +700,13 @@ pub const cpu = struct {
|
|||
.avr5,
|
||||
}),
|
||||
};
|
||||
pub const ata6616c = CpuModel{
|
||||
.name = "ata6616c",
|
||||
.llvm_name = "ata6616c",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr25,
|
||||
}),
|
||||
};
|
||||
pub const ata6617c = CpuModel{
|
||||
.name = "ata6617c",
|
||||
.llvm_name = "ata6617c",
|
||||
|
|
@ -779,6 +812,20 @@ pub const cpu = struct {
|
|||
.avr5,
|
||||
}),
|
||||
};
|
||||
pub const atmega1608 = CpuModel{
|
||||
.name = "atmega1608",
|
||||
.llvm_name = "atmega1608",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const atmega1609 = CpuModel{
|
||||
.name = "atmega1609",
|
||||
.llvm_name = "atmega1609",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const atmega161 = CpuModel{
|
||||
.name = "atmega161",
|
||||
.llvm_name = "atmega161",
|
||||
|
|
@ -1011,6 +1058,20 @@ pub const cpu = struct {
|
|||
.avr5,
|
||||
}),
|
||||
};
|
||||
pub const atmega3208 = CpuModel{
|
||||
.name = "atmega3208",
|
||||
.llvm_name = "atmega3208",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const atmega3209 = CpuModel{
|
||||
.name = "atmega3209",
|
||||
.llvm_name = "atmega3209",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const atmega323 = CpuModel{
|
||||
.name = "atmega323",
|
||||
.llvm_name = "atmega323",
|
||||
|
|
@ -1249,6 +1310,20 @@ pub const cpu = struct {
|
|||
.avr4,
|
||||
}),
|
||||
};
|
||||
pub const atmega4808 = CpuModel{
|
||||
.name = "atmega4808",
|
||||
.llvm_name = "atmega4808",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const atmega4809 = CpuModel{
|
||||
.name = "atmega4809",
|
||||
.llvm_name = "atmega4809",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const atmega48a = CpuModel{
|
||||
.name = "atmega48a",
|
||||
.llvm_name = "atmega48a",
|
||||
|
|
@ -1463,6 +1538,20 @@ pub const cpu = struct {
|
|||
.spm,
|
||||
}),
|
||||
};
|
||||
pub const atmega808 = CpuModel{
|
||||
.name = "atmega808",
|
||||
.llvm_name = "atmega808",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const atmega809 = CpuModel{
|
||||
.name = "atmega809",
|
||||
.llvm_name = "atmega809",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const atmega8515 = CpuModel{
|
||||
.name = "atmega8515",
|
||||
.llvm_name = "atmega8515",
|
||||
|
|
@ -1571,6 +1660,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "attiny11",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr1,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const attiny12 = CpuModel{
|
||||
|
|
@ -1578,6 +1668,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "attiny12",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr1,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const attiny13 = CpuModel{
|
||||
|
|
@ -1585,6 +1676,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "attiny13",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr25,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const attiny13a = CpuModel{
|
||||
|
|
@ -1592,6 +1684,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "attiny13a",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr25,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const attiny15 = CpuModel{
|
||||
|
|
@ -1599,48 +1692,70 @@ pub const cpu = struct {
|
|||
.llvm_name = "attiny15",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr1,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const attiny1604 = CpuModel{
|
||||
.name = "attiny1604",
|
||||
.llvm_name = "attiny1604",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny1606 = CpuModel{
|
||||
.name = "attiny1606",
|
||||
.llvm_name = "attiny1606",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny1607 = CpuModel{
|
||||
.name = "attiny1607",
|
||||
.llvm_name = "attiny1607",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny1614 = CpuModel{
|
||||
.name = "attiny1614",
|
||||
.llvm_name = "attiny1614",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny1616 = CpuModel{
|
||||
.name = "attiny1616",
|
||||
.llvm_name = "attiny1616",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny1617 = CpuModel{
|
||||
.name = "attiny1617",
|
||||
.llvm_name = "attiny1617",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny1624 = CpuModel{
|
||||
.name = "attiny1624",
|
||||
.llvm_name = "attiny1624",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny1626 = CpuModel{
|
||||
.name = "attiny1626",
|
||||
.llvm_name = "attiny1626",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny1627 = CpuModel{
|
||||
.name = "attiny1627",
|
||||
.llvm_name = "attiny1627",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny1634 = CpuModel{
|
||||
|
|
@ -1668,28 +1783,28 @@ pub const cpu = struct {
|
|||
.name = "attiny202",
|
||||
.llvm_name = "attiny202",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny204 = CpuModel{
|
||||
.name = "attiny204",
|
||||
.llvm_name = "attiny204",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny212 = CpuModel{
|
||||
.name = "attiny212",
|
||||
.llvm_name = "attiny212",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny214 = CpuModel{
|
||||
.name = "attiny214",
|
||||
.llvm_name = "attiny214",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny22 = CpuModel{
|
||||
|
|
@ -1697,6 +1812,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "attiny22",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr2,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const attiny2313 = CpuModel{
|
||||
|
|
@ -1704,6 +1820,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "attiny2313",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr25,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const attiny2313a = CpuModel{
|
||||
|
|
@ -1711,6 +1828,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "attiny2313a",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr25,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const attiny24 = CpuModel{
|
||||
|
|
@ -1718,6 +1836,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "attiny24",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr25,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const attiny24a = CpuModel{
|
||||
|
|
@ -1725,6 +1844,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "attiny24a",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr25,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const attiny25 = CpuModel{
|
||||
|
|
@ -1732,6 +1852,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "attiny25",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr25,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const attiny26 = CpuModel{
|
||||
|
|
@ -1740,6 +1861,7 @@ pub const cpu = struct {
|
|||
.features = featureSet(&[_]Feature{
|
||||
.avr2,
|
||||
.lpmx,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const attiny261 = CpuModel{
|
||||
|
|
@ -1747,6 +1869,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "attiny261",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr25,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const attiny261a = CpuModel{
|
||||
|
|
@ -1754,6 +1877,7 @@ pub const cpu = struct {
|
|||
.llvm_name = "attiny261a",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr25,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const attiny28 = CpuModel{
|
||||
|
|
@ -1761,20 +1885,21 @@ pub const cpu = struct {
|
|||
.llvm_name = "attiny28",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.avr1,
|
||||
.smallstack,
|
||||
}),
|
||||
};
|
||||
pub const attiny3216 = CpuModel{
|
||||
.name = "attiny3216",
|
||||
.llvm_name = "attiny3216",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny3217 = CpuModel{
|
||||
.name = "attiny3217",
|
||||
.llvm_name = "attiny3217",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny4 = CpuModel{
|
||||
|
|
@ -1795,49 +1920,49 @@ pub const cpu = struct {
|
|||
.name = "attiny402",
|
||||
.llvm_name = "attiny402",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny404 = CpuModel{
|
||||
.name = "attiny404",
|
||||
.llvm_name = "attiny404",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny406 = CpuModel{
|
||||
.name = "attiny406",
|
||||
.llvm_name = "attiny406",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny412 = CpuModel{
|
||||
.name = "attiny412",
|
||||
.llvm_name = "attiny412",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny414 = CpuModel{
|
||||
.name = "attiny414",
|
||||
.llvm_name = "attiny414",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny416 = CpuModel{
|
||||
.name = "attiny416",
|
||||
.llvm_name = "attiny416",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny417 = CpuModel{
|
||||
.name = "attiny417",
|
||||
.llvm_name = "attiny417",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny4313 = CpuModel{
|
||||
|
|
@ -1914,42 +2039,42 @@ pub const cpu = struct {
|
|||
.name = "attiny804",
|
||||
.llvm_name = "attiny804",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny806 = CpuModel{
|
||||
.name = "attiny806",
|
||||
.llvm_name = "attiny806",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny807 = CpuModel{
|
||||
.name = "attiny807",
|
||||
.llvm_name = "attiny807",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny814 = CpuModel{
|
||||
.name = "attiny814",
|
||||
.llvm_name = "attiny814",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny816 = CpuModel{
|
||||
.name = "attiny816",
|
||||
.llvm_name = "attiny816",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny817 = CpuModel{
|
||||
.name = "attiny817",
|
||||
.llvm_name = "attiny817",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const attiny828 = CpuModel{
|
||||
|
|
@ -2246,13 +2371,6 @@ pub const cpu = struct {
|
|||
.xmegau,
|
||||
}),
|
||||
};
|
||||
pub const atxmega32x1 = CpuModel{
|
||||
.name = "atxmega32x1",
|
||||
.llvm_name = "atxmega32x1",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
}),
|
||||
};
|
||||
pub const atxmega384c3 = CpuModel{
|
||||
.name = "atxmega384c3",
|
||||
.llvm_name = "atxmega384c3",
|
||||
|
|
@ -2439,7 +2557,7 @@ pub const cpu = struct {
|
|||
.name = "avrxmega3",
|
||||
.llvm_name = "avrxmega3",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.xmega,
|
||||
.xmega3,
|
||||
}),
|
||||
};
|
||||
pub const avrxmega4 = CpuModel{
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -46,6 +46,7 @@ pub const Feature = enum {
|
|||
htm,
|
||||
icbt,
|
||||
invariant_function_descriptors,
|
||||
isa_future_instructions,
|
||||
isa_v206_instructions,
|
||||
isa_v207_instructions,
|
||||
isa_v30_instructions,
|
||||
|
|
@ -354,6 +355,13 @@ pub const all_features = blk: {
|
|||
.description = "Assume function descriptors are invariant",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.isa_future_instructions)] = .{
|
||||
.llvm_name = "isa-future-instructions",
|
||||
.description = "Enable instructions for Future ISA.",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.isa_v31_instructions,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.isa_v206_instructions)] = .{
|
||||
.llvm_name = "isa-v206-instructions",
|
||||
.description = "Enable instructions in ISA 2.06.",
|
||||
|
|
@ -728,6 +736,7 @@ pub const cpu = struct {
|
|||
.frsqrte,
|
||||
.frsqrtes,
|
||||
.fsqrt,
|
||||
.isa_v206_instructions,
|
||||
.isel,
|
||||
.ldbrx,
|
||||
.lfiwax,
|
||||
|
|
@ -774,6 +783,7 @@ pub const cpu = struct {
|
|||
.allow_unaligned_fp_access,
|
||||
.bpermd,
|
||||
.cmpb,
|
||||
.crbits,
|
||||
.crypto,
|
||||
.direct_move,
|
||||
.extdiv,
|
||||
|
|
@ -793,6 +803,7 @@ pub const cpu = struct {
|
|||
.fuse_store,
|
||||
.htm,
|
||||
.icbt,
|
||||
.isa_future_instructions,
|
||||
.isa_v206_instructions,
|
||||
.isel,
|
||||
.ldbrx,
|
||||
|
|
@ -886,6 +897,7 @@ pub const cpu = struct {
|
|||
.allow_unaligned_fp_access,
|
||||
.bpermd,
|
||||
.cmpb,
|
||||
.crbits,
|
||||
.crypto,
|
||||
.direct_move,
|
||||
.extdiv,
|
||||
|
|
@ -925,6 +937,7 @@ pub const cpu = struct {
|
|||
.allow_unaligned_fp_access,
|
||||
.bpermd,
|
||||
.cmpb,
|
||||
.crbits,
|
||||
.crypto,
|
||||
.direct_move,
|
||||
.extdiv,
|
||||
|
|
@ -1096,6 +1109,7 @@ pub const cpu = struct {
|
|||
.allow_unaligned_fp_access,
|
||||
.bpermd,
|
||||
.cmpb,
|
||||
.crbits,
|
||||
.crypto,
|
||||
.direct_move,
|
||||
.extdiv,
|
||||
|
|
@ -1135,6 +1149,7 @@ pub const cpu = struct {
|
|||
.allow_unaligned_fp_access,
|
||||
.bpermd,
|
||||
.cmpb,
|
||||
.crbits,
|
||||
.crypto,
|
||||
.direct_move,
|
||||
.extdiv,
|
||||
|
|
|
|||
|
|
@ -16,8 +16,11 @@ pub const Feature = enum {
|
|||
experimental_zbp,
|
||||
experimental_zbr,
|
||||
experimental_zbt,
|
||||
experimental_zvfh,
|
||||
f,
|
||||
lui_addi_fusion,
|
||||
m,
|
||||
no_default_unroll,
|
||||
no_rvc_hints,
|
||||
relax,
|
||||
reserve_x1,
|
||||
|
|
@ -52,6 +55,7 @@ pub const Feature = enum {
|
|||
reserve_x8,
|
||||
reserve_x9,
|
||||
save_restore,
|
||||
unaligned_scalar_mem,
|
||||
v,
|
||||
zba,
|
||||
zbb,
|
||||
|
|
@ -66,6 +70,10 @@ pub const Feature = enum {
|
|||
zfinx,
|
||||
zhinx,
|
||||
zhinxmin,
|
||||
zicbom,
|
||||
zicbop,
|
||||
zicboz,
|
||||
zihintpause,
|
||||
zk,
|
||||
zkn,
|
||||
zknd,
|
||||
|
|
@ -76,6 +84,7 @@ pub const Feature = enum {
|
|||
zksed,
|
||||
zksh,
|
||||
zkt,
|
||||
zmmul,
|
||||
zve32f,
|
||||
zve32x,
|
||||
zve64d,
|
||||
|
|
@ -160,16 +169,33 @@ pub const all_features = blk: {
|
|||
.description = "'Zbt' (Ternary 'Zb' Instructions)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.experimental_zvfh)] = .{
|
||||
.llvm_name = "experimental-zvfh",
|
||||
.description = "'Zvfh' (Vector Half-Precision Floating-Point)",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.zve32f,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.f)] = .{
|
||||
.llvm_name = "f",
|
||||
.description = "'F' (Single-Precision Floating-Point)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.lui_addi_fusion)] = .{
|
||||
.llvm_name = "lui-addi-fusion",
|
||||
.description = "Enable LUI+ADDI macrofusion",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.m)] = .{
|
||||
.llvm_name = "m",
|
||||
.description = "'M' (Integer Multiplication and Division)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.no_default_unroll)] = .{
|
||||
.llvm_name = "no-default-unroll",
|
||||
.description = "Disable default unroll preference.",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.no_rvc_hints)] = .{
|
||||
.llvm_name = "no-rvc-hints",
|
||||
.description = "Disable RVC Hint Instructions.",
|
||||
|
|
@ -340,11 +366,17 @@ pub const all_features = blk: {
|
|||
.description = "Enable save/restore.",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.unaligned_scalar_mem)] = .{
|
||||
.llvm_name = "unaligned-scalar-mem",
|
||||
.description = "Has reasonably performant unaligned scalar loads and stores",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.v)] = .{
|
||||
.llvm_name = "v",
|
||||
.description = "'V' (Vector Extension for Application Processors)",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.d,
|
||||
.zve64d,
|
||||
.zvl128b,
|
||||
}),
|
||||
};
|
||||
|
|
@ -423,6 +455,26 @@ pub const all_features = blk: {
|
|||
.zfinx,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.zicbom)] = .{
|
||||
.llvm_name = "zicbom",
|
||||
.description = "'Zicbom' (Cache-Block Management Instructions)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.zicbop)] = .{
|
||||
.llvm_name = "zicbop",
|
||||
.description = "'Zicbop' (Cache-Block Prefetch Instructions)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.zicboz)] = .{
|
||||
.llvm_name = "zicboz",
|
||||
.description = "'Zicboz' (Cache-Block Zero Instructions)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.zihintpause)] = .{
|
||||
.llvm_name = "zihintpause",
|
||||
.description = "'zihintpause' (Pause Hint)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.zk)] = .{
|
||||
.llvm_name = "zk",
|
||||
.description = "'Zk' (Standard scalar cryptography extension)",
|
||||
|
|
@ -490,6 +542,11 @@ pub const all_features = blk: {
|
|||
.description = "'Zkt' (Data Independent Execution Latency)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.zmmul)] = .{
|
||||
.llvm_name = "zmmul",
|
||||
.description = "'Zmmul' (Integer Multiplication)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.zve32f)] = .{
|
||||
.llvm_name = "zve32f",
|
||||
.description = "'Zve32f' (Vector Extensions for Embedded Processors with maximal 32 EEW and F extension)",
|
||||
|
|
@ -632,6 +689,11 @@ pub const cpu = struct {
|
|||
.m,
|
||||
}),
|
||||
};
|
||||
pub const generic = CpuModel{
|
||||
.name = "generic",
|
||||
.llvm_name = "generic",
|
||||
.features = featureSet(&[_]Feature{}),
|
||||
};
|
||||
pub const generic_rv32 = CpuModel{
|
||||
.name = "generic_rv32",
|
||||
.llvm_name = "generic-rv32",
|
||||
|
|
@ -659,13 +721,16 @@ pub const cpu = struct {
|
|||
pub const sifive_7_rv32 = CpuModel{
|
||||
.name = "sifive_7_rv32",
|
||||
.llvm_name = "sifive-7-rv32",
|
||||
.features = featureSet(&[_]Feature{}),
|
||||
.features = featureSet(&[_]Feature{
|
||||
.no_default_unroll,
|
||||
}),
|
||||
};
|
||||
pub const sifive_7_rv64 = CpuModel{
|
||||
.name = "sifive_7_rv64",
|
||||
.llvm_name = "sifive-7-rv64",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.@"64bit",
|
||||
.no_default_unroll,
|
||||
}),
|
||||
};
|
||||
pub const sifive_e20 = CpuModel{
|
||||
|
|
@ -722,6 +787,7 @@ pub const cpu = struct {
|
|||
.c,
|
||||
.f,
|
||||
.m,
|
||||
.no_default_unroll,
|
||||
}),
|
||||
};
|
||||
pub const sifive_s21 = CpuModel{
|
||||
|
|
@ -764,6 +830,7 @@ pub const cpu = struct {
|
|||
.c,
|
||||
.d,
|
||||
.m,
|
||||
.no_default_unroll,
|
||||
}),
|
||||
};
|
||||
pub const sifive_u54 = CpuModel{
|
||||
|
|
@ -786,6 +853,7 @@ pub const cpu = struct {
|
|||
.c,
|
||||
.d,
|
||||
.m,
|
||||
.no_default_unroll,
|
||||
}),
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -579,6 +579,52 @@ pub const cpu = struct {
|
|||
.vector_packed_decimal_enhancement,
|
||||
}),
|
||||
};
|
||||
pub const z16 = CpuModel{
|
||||
.name = "z16",
|
||||
.llvm_name = "z16",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.bear_enhancement,
|
||||
.deflate_conversion,
|
||||
.dfp_packed_conversion,
|
||||
.dfp_zoned_conversion,
|
||||
.distinct_ops,
|
||||
.enhanced_dat_2,
|
||||
.enhanced_sort,
|
||||
.execution_hint,
|
||||
.fast_serialization,
|
||||
.fp_extension,
|
||||
.guarded_storage,
|
||||
.high_word,
|
||||
.insert_reference_bits_multiple,
|
||||
.interlocked_access1,
|
||||
.load_and_trap,
|
||||
.load_and_zero_rightmost_byte,
|
||||
.load_store_on_cond,
|
||||
.load_store_on_cond_2,
|
||||
.message_security_assist_extension3,
|
||||
.message_security_assist_extension4,
|
||||
.message_security_assist_extension5,
|
||||
.message_security_assist_extension7,
|
||||
.message_security_assist_extension8,
|
||||
.message_security_assist_extension9,
|
||||
.miscellaneous_extensions,
|
||||
.miscellaneous_extensions_2,
|
||||
.miscellaneous_extensions_3,
|
||||
.nnp_assist,
|
||||
.population_count,
|
||||
.processor_activity_instrumentation,
|
||||
.processor_assist,
|
||||
.reset_dat_protection,
|
||||
.reset_reference_bits_multiple,
|
||||
.transactional_execution,
|
||||
.vector,
|
||||
.vector_enhancements_1,
|
||||
.vector_enhancements_2,
|
||||
.vector_packed_decimal,
|
||||
.vector_packed_decimal_enhancement,
|
||||
.vector_packed_decimal_enhancement_2,
|
||||
}),
|
||||
};
|
||||
pub const z196 = CpuModel{
|
||||
.name = "z196",
|
||||
.llvm_name = "z196",
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ pub const Feature = enum {
|
|||
atomics,
|
||||
bulk_memory,
|
||||
exception_handling,
|
||||
extended_const,
|
||||
multivalue,
|
||||
mutable_globals,
|
||||
nontrapping_fptoint,
|
||||
|
|
@ -42,6 +43,11 @@ pub const all_features = blk: {
|
|||
.description = "Enable Wasm exception handling",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.extended_const)] = .{
|
||||
.llvm_name = "extended-const",
|
||||
.description = "Enable extended const expressions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.multivalue)] = .{
|
||||
.llvm_name = "multivalue",
|
||||
.description = "Enable multivalue blocks, instructions, and functions",
|
||||
|
|
|
|||
|
|
@ -48,8 +48,13 @@ pub const Feature = enum {
|
|||
enqcmd,
|
||||
ermsb,
|
||||
f16c,
|
||||
false_deps_getmant,
|
||||
false_deps_lzcnt_tzcnt,
|
||||
false_deps_mulc,
|
||||
false_deps_mullq,
|
||||
false_deps_perm,
|
||||
false_deps_popcnt,
|
||||
false_deps_range,
|
||||
fast_11bytenop,
|
||||
fast_15bytenop,
|
||||
fast_7bytenop,
|
||||
|
|
@ -71,6 +76,8 @@ pub const Feature = enum {
|
|||
fsrm,
|
||||
fxsr,
|
||||
gfni,
|
||||
harden_sls_ijmp,
|
||||
harden_sls_ret,
|
||||
hreset,
|
||||
idivl_to_divb,
|
||||
idivq_to_divl,
|
||||
|
|
@ -101,6 +108,7 @@ pub const Feature = enum {
|
|||
prfchw,
|
||||
ptwrite,
|
||||
rdpid,
|
||||
rdpru,
|
||||
rdrnd,
|
||||
rdseed,
|
||||
retpoline,
|
||||
|
|
@ -109,6 +117,7 @@ pub const Feature = enum {
|
|||
retpoline_indirect_calls,
|
||||
rtm,
|
||||
sahf,
|
||||
sbb_dep_breaking,
|
||||
serialize,
|
||||
seses,
|
||||
sgx,
|
||||
|
|
@ -136,7 +145,6 @@ pub const Feature = enum {
|
|||
tbm,
|
||||
tsxldtrk,
|
||||
uintr,
|
||||
use_aa,
|
||||
use_glm_div_sqrt_costs,
|
||||
use_slm_arith_costs,
|
||||
vaes,
|
||||
|
|
@ -376,7 +384,7 @@ pub const all_features = blk: {
|
|||
};
|
||||
result[@enumToInt(Feature.cldemote)] = .{
|
||||
.llvm_name = "cldemote",
|
||||
.description = "Enable Cache Demote",
|
||||
.description = "Enable Cache Line Demote",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.clflushopt)] = .{
|
||||
|
|
@ -401,12 +409,12 @@ pub const all_features = blk: {
|
|||
};
|
||||
result[@enumToInt(Feature.crc32)] = .{
|
||||
.llvm_name = "crc32",
|
||||
.description = "Enable SSE 4.2 CRC32 instruction",
|
||||
.description = "Enable SSE 4.2 CRC32 instruction (used when SSE4.2 is supported but function is GPR only)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.cx16)] = .{
|
||||
.llvm_name = "cx16",
|
||||
.description = "64-bit with cmpxchg16b",
|
||||
.description = "64-bit with cmpxchg16b (this is true for most x86-64 chips, but not the first AMD chips)",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.cx8,
|
||||
}),
|
||||
|
|
@ -433,16 +441,41 @@ pub const all_features = blk: {
|
|||
.avx,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.false_deps_getmant)] = .{
|
||||
.llvm_name = "false-deps-getmant",
|
||||
.description = "VGETMANTSS/SD/SH and VGETMANDPS/PD(memory version) has a false dependency on dest register",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.false_deps_lzcnt_tzcnt)] = .{
|
||||
.llvm_name = "false-deps-lzcnt-tzcnt",
|
||||
.description = "LZCNT/TZCNT have a false dependency on dest register",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.false_deps_mulc)] = .{
|
||||
.llvm_name = "false-deps-mulc",
|
||||
.description = "VF[C]MULCPH/SH has a false dependency on dest register",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.false_deps_mullq)] = .{
|
||||
.llvm_name = "false-deps-mullq",
|
||||
.description = "VPMULLQ has a false dependency on dest register",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.false_deps_perm)] = .{
|
||||
.llvm_name = "false-deps-perm",
|
||||
.description = "VPERMD/Q/PS/PD has a false dependency on dest register",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.false_deps_popcnt)] = .{
|
||||
.llvm_name = "false-deps-popcnt",
|
||||
.description = "POPCNT has a false dependency on dest register",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.false_deps_range)] = .{
|
||||
.llvm_name = "false-deps-range",
|
||||
.description = "VRANGEPD/PS/SD/SS has a false dependency on dest register",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.fast_11bytenop)] = .{
|
||||
.llvm_name = "fast-11bytenop",
|
||||
.description = "Target can quickly decode up to 11 byte NOPs",
|
||||
|
|
@ -465,7 +498,7 @@ pub const all_features = blk: {
|
|||
};
|
||||
result[@enumToInt(Feature.fast_gather)] = .{
|
||||
.llvm_name = "fast-gather",
|
||||
.description = "Indicates if gather is reasonably fast",
|
||||
.description = "Indicates if gather is reasonably fast (this is true for Skylake client and all AVX-512 CPUs)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.fast_hops)] = .{
|
||||
|
|
@ -555,6 +588,16 @@ pub const all_features = blk: {
|
|||
.sse2,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.harden_sls_ijmp)] = .{
|
||||
.llvm_name = "harden-sls-ijmp",
|
||||
.description = "Harden against straight line speculation across indirect JMP instructions.",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.harden_sls_ret)] = .{
|
||||
.llvm_name = "harden-sls-ret",
|
||||
.description = "Harden against straight line speculation across RET instructions.",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.hreset)] = .{
|
||||
.llvm_name = "hreset",
|
||||
.description = "Has hreset instruction",
|
||||
|
|
@ -584,7 +627,7 @@ pub const all_features = blk: {
|
|||
};
|
||||
result[@enumToInt(Feature.lea_sp)] = .{
|
||||
.llvm_name = "lea-sp",
|
||||
.description = "Use LEA for adjusting the stack pointer",
|
||||
.description = "Use LEA for adjusting the stack pointer (this is an optimization for Intel Atom processors)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.lea_uses_ag)] = .{
|
||||
|
|
@ -629,12 +672,12 @@ pub const all_features = blk: {
|
|||
};
|
||||
result[@enumToInt(Feature.movdir64b)] = .{
|
||||
.llvm_name = "movdir64b",
|
||||
.description = "Support movdir64b instruction",
|
||||
.description = "Support movdir64b instruction (direct store 64 bytes)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.movdiri)] = .{
|
||||
.llvm_name = "movdiri",
|
||||
.description = "Support movdiri instruction",
|
||||
.description = "Support movdiri instruction (direct store integer)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.mwaitx)] = .{
|
||||
|
|
@ -644,12 +687,12 @@ pub const all_features = blk: {
|
|||
};
|
||||
result[@enumToInt(Feature.nopl)] = .{
|
||||
.llvm_name = "nopl",
|
||||
.description = "Enable NOPL instruction",
|
||||
.description = "Enable NOPL instruction (generally pentium pro+)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.pad_short_functions)] = .{
|
||||
.llvm_name = "pad-short-functions",
|
||||
.description = "Pad short functions",
|
||||
.description = "Pad short functions (to prevent a stall when returning too early)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.pclmul)] = .{
|
||||
|
|
@ -709,6 +752,11 @@ pub const all_features = blk: {
|
|||
.description = "Support RDPID instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.rdpru)] = .{
|
||||
.llvm_name = "rdpru",
|
||||
.description = "Support RDPRU instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.rdrnd)] = .{
|
||||
.llvm_name = "rdrnd",
|
||||
.description = "Support RDRAND instruction",
|
||||
|
|
@ -754,6 +802,11 @@ pub const all_features = blk: {
|
|||
.description = "Support LAHF and SAHF instructions in 64-bit mode",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.sbb_dep_breaking)] = .{
|
||||
.llvm_name = "sbb-dep-breaking",
|
||||
.description = "SBB with same register has no source dependency",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.serialize)] = .{
|
||||
.llvm_name = "serialize",
|
||||
.description = "Has serialize instruction",
|
||||
|
|
@ -805,7 +858,7 @@ pub const all_features = blk: {
|
|||
};
|
||||
result[@enumToInt(Feature.slow_pmulld)] = .{
|
||||
.llvm_name = "slow-pmulld",
|
||||
.description = "PMULLD instruction is slow",
|
||||
.description = "PMULLD instruction is slow (compared to PMULLW/PMULHW and PMULUDQ)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.slow_shld)] = .{
|
||||
|
|
@ -875,7 +928,7 @@ pub const all_features = blk: {
|
|||
};
|
||||
result[@enumToInt(Feature.sse_unaligned_mem)] = .{
|
||||
.llvm_name = "sse-unaligned-mem",
|
||||
.description = "Allow unaligned memory operands with SSE instructions",
|
||||
.description = "Allow unaligned memory operands with SSE instructions (this may require setting a configuration bit in the processor)",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.ssse3)] = .{
|
||||
|
|
@ -905,11 +958,6 @@ pub const all_features = blk: {
|
|||
.description = "Has UINTR Instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.use_aa)] = .{
|
||||
.llvm_name = "use-aa",
|
||||
.description = "Use alias analysis during codegen",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.use_glm_div_sqrt_costs)] = .{
|
||||
.llvm_name = "use-glm-div-sqrt-costs",
|
||||
.description = "Use Goldmont specific floating point div/sqrt costs",
|
||||
|
|
@ -1021,6 +1069,7 @@ pub const cpu = struct {
|
|||
.crc32,
|
||||
.cx16,
|
||||
.f16c,
|
||||
.false_deps_perm,
|
||||
.false_deps_popcnt,
|
||||
.fast_15bytenop,
|
||||
.fast_gather,
|
||||
|
|
@ -1082,6 +1131,7 @@ pub const cpu = struct {
|
|||
.popcnt,
|
||||
.prfchw,
|
||||
.sahf,
|
||||
.sbb_dep_breaking,
|
||||
.slow_shld,
|
||||
.sse4a,
|
||||
.vzeroupper,
|
||||
|
|
@ -1113,6 +1163,7 @@ pub const cpu = struct {
|
|||
.fast_scalar_shift_masks,
|
||||
.fxsr,
|
||||
.nopl,
|
||||
.sbb_dep_breaking,
|
||||
.slow_shld,
|
||||
.slow_unaligned_mem_16,
|
||||
.sse2,
|
||||
|
|
@ -1131,6 +1182,7 @@ pub const cpu = struct {
|
|||
.fast_scalar_shift_masks,
|
||||
.fxsr,
|
||||
.nopl,
|
||||
.sbb_dep_breaking,
|
||||
.slow_shld,
|
||||
.slow_unaligned_mem_16,
|
||||
.sse3,
|
||||
|
|
@ -1165,6 +1217,7 @@ pub const cpu = struct {
|
|||
.fast_scalar_shift_masks,
|
||||
.fxsr,
|
||||
.nopl,
|
||||
.sbb_dep_breaking,
|
||||
.slow_shld,
|
||||
.slow_unaligned_mem_16,
|
||||
.sse2,
|
||||
|
|
@ -1257,6 +1310,7 @@ pub const cpu = struct {
|
|||
.popcnt,
|
||||
.prfchw,
|
||||
.sahf,
|
||||
.sbb_dep_breaking,
|
||||
.slow_shld,
|
||||
.sse4a,
|
||||
.vzeroupper,
|
||||
|
|
@ -1284,6 +1338,7 @@ pub const cpu = struct {
|
|||
.popcnt,
|
||||
.prfchw,
|
||||
.sahf,
|
||||
.sbb_dep_breaking,
|
||||
.slow_shld,
|
||||
.vzeroupper,
|
||||
.x87,
|
||||
|
|
@ -1317,6 +1372,7 @@ pub const cpu = struct {
|
|||
.popcnt,
|
||||
.prfchw,
|
||||
.sahf,
|
||||
.sbb_dep_breaking,
|
||||
.slow_shld,
|
||||
.tbm,
|
||||
.vzeroupper,
|
||||
|
|
@ -1352,6 +1408,7 @@ pub const cpu = struct {
|
|||
.popcnt,
|
||||
.prfchw,
|
||||
.sahf,
|
||||
.sbb_dep_breaking,
|
||||
.slow_shld,
|
||||
.tbm,
|
||||
.vzeroupper,
|
||||
|
|
@ -1392,6 +1449,7 @@ pub const cpu = struct {
|
|||
.prfchw,
|
||||
.rdrnd,
|
||||
.sahf,
|
||||
.sbb_dep_breaking,
|
||||
.slow_shld,
|
||||
.tbm,
|
||||
.vzeroupper,
|
||||
|
|
@ -1484,6 +1542,7 @@ pub const cpu = struct {
|
|||
.popcnt,
|
||||
.prfchw,
|
||||
.sahf,
|
||||
.sbb_dep_breaking,
|
||||
.slow_shld,
|
||||
.sse4a,
|
||||
.ssse3,
|
||||
|
|
@ -1518,6 +1577,7 @@ pub const cpu = struct {
|
|||
.popcnt,
|
||||
.prfchw,
|
||||
.sahf,
|
||||
.sbb_dep_breaking,
|
||||
.slow_shld,
|
||||
.sse4a,
|
||||
.x87,
|
||||
|
|
@ -1847,10 +1907,11 @@ pub const cpu = struct {
|
|||
.features = featureSet(&[_]Feature{
|
||||
.@"64bit",
|
||||
.cx8,
|
||||
.fast_15bytenop,
|
||||
.fast_scalar_fsqrt,
|
||||
.idivq_to_divl,
|
||||
.macrofusion,
|
||||
.slow_3ops_lea,
|
||||
.slow_incdec,
|
||||
.vzeroupper,
|
||||
.x87,
|
||||
}),
|
||||
|
|
@ -2213,6 +2274,7 @@ pub const cpu = struct {
|
|||
.fast_scalar_shift_masks,
|
||||
.fxsr,
|
||||
.nopl,
|
||||
.sbb_dep_breaking,
|
||||
.slow_shld,
|
||||
.slow_unaligned_mem_16,
|
||||
.sse2,
|
||||
|
|
@ -2231,6 +2293,7 @@ pub const cpu = struct {
|
|||
.fast_scalar_shift_masks,
|
||||
.fxsr,
|
||||
.nopl,
|
||||
.sbb_dep_breaking,
|
||||
.slow_shld,
|
||||
.slow_unaligned_mem_16,
|
||||
.sse3,
|
||||
|
|
@ -2375,6 +2438,7 @@ pub const cpu = struct {
|
|||
.fast_scalar_shift_masks,
|
||||
.fxsr,
|
||||
.nopl,
|
||||
.sbb_dep_breaking,
|
||||
.slow_shld,
|
||||
.slow_unaligned_mem_16,
|
||||
.sse2,
|
||||
|
|
@ -2393,6 +2457,7 @@ pub const cpu = struct {
|
|||
.fast_scalar_shift_masks,
|
||||
.fxsr,
|
||||
.nopl,
|
||||
.sbb_dep_breaking,
|
||||
.slow_shld,
|
||||
.slow_unaligned_mem_16,
|
||||
.sse3,
|
||||
|
|
@ -2671,6 +2736,11 @@ pub const cpu = struct {
|
|||
.cx16,
|
||||
.enqcmd,
|
||||
.ermsb,
|
||||
.false_deps_getmant,
|
||||
.false_deps_mulc,
|
||||
.false_deps_mullq,
|
||||
.false_deps_perm,
|
||||
.false_deps_range,
|
||||
.fast_15bytenop,
|
||||
.fast_gather,
|
||||
.fast_scalar_fsqrt,
|
||||
|
|
@ -3231,6 +3301,7 @@ pub const cpu = struct {
|
|||
.fast_movbe,
|
||||
.fast_scalar_fsqrt,
|
||||
.fast_scalar_shift_masks,
|
||||
.fast_variable_perlane_shuffle,
|
||||
.fast_vector_fsqrt,
|
||||
.fma,
|
||||
.fsgsbase,
|
||||
|
|
@ -3246,6 +3317,7 @@ pub const cpu = struct {
|
|||
.rdrnd,
|
||||
.rdseed,
|
||||
.sahf,
|
||||
.sbb_dep_breaking,
|
||||
.sha,
|
||||
.slow_shld,
|
||||
.sse4a,
|
||||
|
|
@ -3280,6 +3352,7 @@ pub const cpu = struct {
|
|||
.fast_movbe,
|
||||
.fast_scalar_fsqrt,
|
||||
.fast_scalar_shift_masks,
|
||||
.fast_variable_perlane_shuffle,
|
||||
.fast_vector_fsqrt,
|
||||
.fma,
|
||||
.fsgsbase,
|
||||
|
|
@ -3293,9 +3366,11 @@ pub const cpu = struct {
|
|||
.popcnt,
|
||||
.prfchw,
|
||||
.rdpid,
|
||||
.rdpru,
|
||||
.rdrnd,
|
||||
.rdseed,
|
||||
.sahf,
|
||||
.sbb_dep_breaking,
|
||||
.sha,
|
||||
.slow_shld,
|
||||
.sse4a,
|
||||
|
|
@ -3347,9 +3422,11 @@ pub const cpu = struct {
|
|||
.popcnt,
|
||||
.prfchw,
|
||||
.rdpid,
|
||||
.rdpru,
|
||||
.rdrnd,
|
||||
.rdseed,
|
||||
.sahf,
|
||||
.sbb_dep_breaking,
|
||||
.sha,
|
||||
.slow_shld,
|
||||
.sse4a,
|
||||
|
|
|
|||
|
|
@ -50,6 +50,10 @@ const llvm_targets = [_]LlvmTarget{
|
|||
.td_name = "AArch64.td",
|
||||
.branch_quota = 2000,
|
||||
.feature_overrides = &.{
|
||||
.{
|
||||
.llvm_name = "all",
|
||||
.omit = true,
|
||||
},
|
||||
.{
|
||||
.llvm_name = "v8a",
|
||||
.extra_deps = &.{ "fp_armv8", "neon" },
|
||||
|
|
@ -81,13 +85,12 @@ const llvm_targets = [_]LlvmTarget{
|
|||
},
|
||||
.{
|
||||
.llvm_name = "exynosm3",
|
||||
.zig_name = "exynos_m3",
|
||||
.flatten = true,
|
||||
.extra_deps = &.{"v8a"},
|
||||
},
|
||||
.{
|
||||
.llvm_name = "exynosm4",
|
||||
.zig_name = "exynos_m4",
|
||||
.flatten = true,
|
||||
},
|
||||
.{
|
||||
.llvm_name = "v8.1a",
|
||||
|
|
@ -300,6 +303,18 @@ const llvm_targets = [_]LlvmTarget{
|
|||
.llvm_name = "dumpcode",
|
||||
.omit = true,
|
||||
},
|
||||
.{
|
||||
.llvm_name = "enable-ds128",
|
||||
.zig_name = "ds128",
|
||||
},
|
||||
.{
|
||||
.llvm_name = "enable-flat-scratch",
|
||||
.zig_name = "flat_scratch",
|
||||
},
|
||||
.{
|
||||
.llvm_name = "enable-prt-strict-null",
|
||||
.zig_name = "prt_strict_null",
|
||||
},
|
||||
},
|
||||
},
|
||||
.{
|
||||
|
|
@ -934,7 +949,7 @@ fn processOneTarget(job: Job) anyerror!void {
|
|||
const child_result = try std.ChildProcess.exec(.{
|
||||
.allocator = arena,
|
||||
.argv = &child_args,
|
||||
.max_output_bytes = 200 * 1024 * 1024,
|
||||
.max_output_bytes = 400 * 1024 * 1024,
|
||||
});
|
||||
tblgen_progress.end();
|
||||
if (child_result.stderr.len != 0) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue