Source
pub const cpu = struct {
pub const arm1020e: CpuModel = .{
.name = "arm1020e",
.llvm_name = "arm1020e",
.features = featureSet(&[_]Feature{
.v5te,
}),
};
pub const arm1020t: CpuModel = .{
.name = "arm1020t",
.llvm_name = "arm1020t",
.features = featureSet(&[_]Feature{
.v5t,
}),
};
pub const arm1022e: CpuModel = .{
.name = "arm1022e",
.llvm_name = "arm1022e",
.features = featureSet(&[_]Feature{
.v5te,
}),
};
pub const arm10e: CpuModel = .{
.name = "arm10e",
.llvm_name = "arm10e",
.features = featureSet(&[_]Feature{
.v5te,
}),
};
pub const arm10tdmi: CpuModel = .{
.name = "arm10tdmi",
.llvm_name = "arm10tdmi",
.features = featureSet(&[_]Feature{
.v5t,
}),
};
pub const arm1136j_s: CpuModel = .{
.name = "arm1136j_s",
.llvm_name = "arm1136j-s",
.features = featureSet(&[_]Feature{
.v6,
}),
};
pub const arm1136jf_s: CpuModel = .{
.name = "arm1136jf_s",
.llvm_name = "arm1136jf-s",
.features = featureSet(&[_]Feature{
.slowfpvmlx,
.v6,
.vfp2,
}),
};
pub const arm1156t2_s: CpuModel = .{
.name = "arm1156t2_s",
.llvm_name = "arm1156t2-s",
.features = featureSet(&[_]Feature{
.v6t2,
}),
};
pub const arm1156t2f_s: CpuModel = .{
.name = "arm1156t2f_s",
.llvm_name = "arm1156t2f-s",
.features = featureSet(&[_]Feature{
.slowfpvmlx,
.v6t2,
.vfp2,
}),
};
pub const arm1176jz_s: CpuModel = .{
.name = "arm1176jz_s",
.llvm_name = "arm1176jz-s",
.features = featureSet(&[_]Feature{
.v6kz,
}),
};
pub const arm1176jzf_s: CpuModel = .{
.name = "arm1176jzf_s",
.llvm_name = "arm1176jzf-s",
.features = featureSet(&[_]Feature{
.slowfpvmlx,
.v6kz,
.vfp2,
}),
};
pub const arm710t: CpuModel = .{
.name = "arm710t",
.llvm_name = "arm710t",
.features = featureSet(&[_]Feature{
.v4t,
}),
};
pub const arm720t: CpuModel = .{
.name = "arm720t",
.llvm_name = "arm720t",
.features = featureSet(&[_]Feature{
.v4t,
}),
};
pub const arm7tdmi: CpuModel = .{
.name = "arm7tdmi",
.llvm_name = "arm7tdmi",
.features = featureSet(&[_]Feature{
.v4t,
}),
};
pub const arm7tdmi_s: CpuModel = .{
.name = "arm7tdmi_s",
.llvm_name = "arm7tdmi-s",
.features = featureSet(&[_]Feature{
.v4t,
}),
};
pub const arm8: CpuModel = .{
.name = "arm8",
.llvm_name = "arm8",
.features = featureSet(&[_]Feature{
.v4,
}),
};
pub const arm810: CpuModel = .{
.name = "arm810",
.llvm_name = "arm810",
.features = featureSet(&[_]Feature{
.v4,
}),
};
pub const arm9: CpuModel = .{
.name = "arm9",
.llvm_name = "arm9",
.features = featureSet(&[_]Feature{
.v4t,
}),
};
pub const arm920: CpuModel = .{
.name = "arm920",
.llvm_name = "arm920",
.features = featureSet(&[_]Feature{
.v4t,
}),
};
pub const arm920t: CpuModel = .{
.name = "arm920t",
.llvm_name = "arm920t",
.features = featureSet(&[_]Feature{
.v4t,
}),
};
pub const arm922t: CpuModel = .{
.name = "arm922t",
.llvm_name = "arm922t",
.features = featureSet(&[_]Feature{
.v4t,
}),
};
pub const arm926ej_s: CpuModel = .{
.name = "arm926ej_s",
.llvm_name = "arm926ej-s",
.features = featureSet(&[_]Feature{
.v5te,
}),
};
pub const arm940t: CpuModel = .{
.name = "arm940t",
.llvm_name = "arm940t",
.features = featureSet(&[_]Feature{
.v4t,
}),
};
pub const arm946e_s: CpuModel = .{
.name = "arm946e_s",
.llvm_name = "arm946e-s",
.features = featureSet(&[_]Feature{
.v5te,
}),
};
pub const arm966e_s: CpuModel = .{
.name = "arm966e_s",
.llvm_name = "arm966e-s",
.features = featureSet(&[_]Feature{
.v5te,
}),
};
pub const arm968e_s: CpuModel = .{
.name = "arm968e_s",
.llvm_name = "arm968e-s",
.features = featureSet(&[_]Feature{
.v5te,
}),
};
pub const arm9e: CpuModel = .{
.name = "arm9e",
.llvm_name = "arm9e",
.features = featureSet(&[_]Feature{
.v5te,
}),
};
pub const arm9tdmi: CpuModel = .{
.name = "arm9tdmi",
.llvm_name = "arm9tdmi",
.features = featureSet(&[_]Feature{
.v4t,
}),
};
pub const baseline: CpuModel = .{
.name = "baseline",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v7a,
}),
};
pub const cortex_a12: CpuModel = .{
.name = "cortex_a12",
.llvm_name = "cortex-a12",
.features = featureSet(&[_]Feature{
.avoid_partial_cpsr,
.mp,
.ret_addr_stack,
.trustzone,
.v7a,
.vfp4,
.virtualization,
.vmlx_forwarding,
}),
};
pub const cortex_a15: CpuModel = .{
.name = "cortex_a15",
.llvm_name = "cortex-a15",
.features = featureSet(&[_]Feature{
.avoid_partial_cpsr,
.mp,
.muxed_units,
.ret_addr_stack,
.splat_vfp_neon,
.trustzone,
.v7a,
.vfp4,
.virtualization,
.vldn_align,
}),
};
pub const cortex_a17: CpuModel = .{
.name = "cortex_a17",
.llvm_name = "cortex-a17",
.features = featureSet(&[_]Feature{
.avoid_partial_cpsr,
.mp,
.ret_addr_stack,
.trustzone,
.v7a,
.vfp4,
.virtualization,
.vmlx_forwarding,
}),
};
pub const cortex_a32: CpuModel = .{
.name = "cortex_a32",
.llvm_name = "cortex-a32",
.features = featureSet(&[_]Feature{
.v8a,
}),
};
pub const cortex_a35: CpuModel = .{
.name = "cortex_a35",
.llvm_name = "cortex-a35",
.features = featureSet(&[_]Feature{
.v8a,
}),
};
pub const cortex_a5: CpuModel = .{
.name = "cortex_a5",
.llvm_name = "cortex-a5",
.features = featureSet(&[_]Feature{
.mp,
.ret_addr_stack,
.slow_fp_brcc,
.slowfpvfmx,
.slowfpvmlx,
.trustzone,
.v7a,
.vfp4,
.vmlx_forwarding,
}),
};
pub const cortex_a53: CpuModel = .{
.name = "cortex_a53",
.llvm_name = "cortex-a53",
.features = featureSet(&[_]Feature{
.fpao,
.v8a,
}),
};
pub const cortex_a55: CpuModel = .{
.name = "cortex_a55",
.llvm_name = "cortex-a55",
.features = featureSet(&[_]Feature{
.dotprod,
.v8_2a,
}),
};
pub const cortex_a57: CpuModel = .{
.name = "cortex_a57",
.llvm_name = "cortex-a57",
.features = featureSet(&[_]Feature{
.avoid_partial_cpsr,
.cheap_predicable_cpsr,
.fix_cortex_a57_aes_1742098,
.fpao,
.v8a,
}),
};
pub const cortex_a7: CpuModel = .{
.name = "cortex_a7",
.llvm_name = "cortex-a7",
.features = featureSet(&[_]Feature{
.mp,
.ret_addr_stack,
.slow_fp_brcc,
.slowfpvfmx,
.slowfpvmlx,
.trustzone,
.v7a,
.vfp4,
.virtualization,
.vmlx_forwarding,
.vmlx_hazards,
}),
};
pub const cortex_a710: CpuModel = .{
.name = "cortex_a710",
.llvm_name = "cortex-a710",
.features = featureSet(&[_]Feature{
.bf16,
.fp16fml,
.i8mm,
.v9a,
}),
};
pub const cortex_a72: CpuModel = .{
.name = "cortex_a72",
.llvm_name = "cortex-a72",
.features = featureSet(&[_]Feature{
.fix_cortex_a57_aes_1742098,
.v8a,
}),
};
pub const cortex_a73: CpuModel = .{
.name = "cortex_a73",
.llvm_name = "cortex-a73",
.features = featureSet(&[_]Feature{
.v8a,
}),
};
pub const cortex_a75: CpuModel = .{
.name = "cortex_a75",
.llvm_name = "cortex-a75",
.features = featureSet(&[_]Feature{
.dotprod,
.v8_2a,
}),
};
pub const cortex_a76: CpuModel = .{
.name = "cortex_a76",
.llvm_name = "cortex-a76",
.features = featureSet(&[_]Feature{
.dotprod,
.fullfp16,
.v8_2a,
}),
};
pub const cortex_a76ae: CpuModel = .{
.name = "cortex_a76ae",
.llvm_name = "cortex-a76ae",
.features = featureSet(&[_]Feature{
.dotprod,
.fullfp16,
.v8_2a,
}),
};
pub const cortex_a77: CpuModel = .{
.name = "cortex_a77",
.llvm_name = "cortex-a77",
.features = featureSet(&[_]Feature{
.dotprod,
.fullfp16,
.v8_2a,
}),
};
pub const cortex_a78: CpuModel = .{
.name = "cortex_a78",
.llvm_name = "cortex-a78",
.features = featureSet(&[_]Feature{
.dotprod,
.fullfp16,
.v8_2a,
}),
};
pub const cortex_a78ae: CpuModel = .{
.name = "cortex_a78ae",
.llvm_name = "cortex-a78ae",
.features = featureSet(&[_]Feature{
.dotprod,
.fullfp16,
.v8_2a,
}),
};
pub const cortex_a78c: CpuModel = .{
.name = "cortex_a78c",
.llvm_name = "cortex-a78c",
.features = featureSet(&[_]Feature{
.dotprod,
.fullfp16,
.v8_2a,
}),
};
pub const cortex_a8: CpuModel = .{
.name = "cortex_a8",
.llvm_name = "cortex-a8",
.features = featureSet(&[_]Feature{
.nonpipelined_vfp,
.ret_addr_stack,
.slow_fp_brcc,
.slowfpvfmx,
.slowfpvmlx,
.trustzone,
.v7a,
.vmlx_forwarding,
.vmlx_hazards,
}),
};
pub const cortex_a9: CpuModel = .{
.name = "cortex_a9",
.llvm_name = "cortex-a9",
.features = featureSet(&[_]Feature{
.avoid_partial_cpsr,
.expand_fp_mlx,
.fp16,
.mp,
.muxed_units,
.neon_fpmovs,
.prefer_vmovsr,
.ret_addr_stack,
.trustzone,
.v7a,
.vldn_align,
.vmlx_forwarding,
.vmlx_hazards,
}),
};
pub const cortex_m0: CpuModel = .{
.name = "cortex_m0",
.llvm_name = "cortex-m0",
.features = featureSet(&[_]Feature{
.no_branch_predictor,
.v6m,
}),
};
pub const cortex_m0plus: CpuModel = .{
.name = "cortex_m0plus",
.llvm_name = "cortex-m0plus",
.features = featureSet(&[_]Feature{
.no_branch_predictor,
.v6m,
}),
};
pub const cortex_m1: CpuModel = .{
.name = "cortex_m1",
.llvm_name = "cortex-m1",
.features = featureSet(&[_]Feature{
.no_branch_predictor,
.v6m,
}),
};
pub const cortex_m23: CpuModel = .{
.name = "cortex_m23",
.llvm_name = "cortex-m23",
.features = featureSet(&[_]Feature{
.no_branch_predictor,
.no_movt,
.v8m,
}),
};
pub const cortex_m3: CpuModel = .{
.name = "cortex_m3",
.llvm_name = "cortex-m3",
.features = featureSet(&[_]Feature{
.loop_align,
.no_branch_predictor,
.use_misched,
.v7m,
}),
};
pub const cortex_m33: CpuModel = .{
.name = "cortex_m33",
.llvm_name = "cortex-m33",
.features = featureSet(&[_]Feature{
.fix_cmse_cve_2021_35465,
.loop_align,
.no_branch_predictor,
.slowfpvfmx,
.slowfpvmlx,
.use_misched,
.v8m_main,
}),
};
pub const cortex_m35p: CpuModel = .{
.name = "cortex_m35p",
.llvm_name = "cortex-m35p",
.features = featureSet(&[_]Feature{
.fix_cmse_cve_2021_35465,
.loop_align,
.no_branch_predictor,
.slowfpvfmx,
.slowfpvmlx,
.use_misched,
.v8m_main,
}),
};
pub const cortex_m4: CpuModel = .{
.name = "cortex_m4",
.llvm_name = "cortex-m4",
.features = featureSet(&[_]Feature{
.loop_align,
.no_branch_predictor,
.slowfpvfmx,
.slowfpvmlx,
.use_misched,
.v7em,
}),
};
pub const cortex_m52: CpuModel = .{
.name = "cortex_m52",
.llvm_name = "cortex-m52",
.features = featureSet(&[_]Feature{
.fp_armv8d16,
.loop_align,
.mve1beat,
.mve_fp,
.no_branch_predictor,
.pacbti,
.slowfpvmlx,
.use_misched,
.v8_1m_main,
}),
};
pub const cortex_m55: CpuModel = .{
.name = "cortex_m55",
.llvm_name = "cortex-m55",
.features = featureSet(&[_]Feature{
.dsp,
.fix_cmse_cve_2021_35465,
.loop_align,
.no_branch_predictor,
.slowfpvmlx,
.use_misched,
.v8_1m_main,
}),
};
pub const cortex_m7: CpuModel = .{
.name = "cortex_m7",
.llvm_name = "cortex-m7",
.features = featureSet(&[_]Feature{
.use_mipipeliner,
.use_misched,
.v7em,
}),
};
pub const cortex_m85: CpuModel = .{
.name = "cortex_m85",
.llvm_name = "cortex-m85",
.features = featureSet(&[_]Feature{
.dsp,
.use_misched,
.v8_1m_main,
}),
};
pub const cortex_r4: CpuModel = .{
.name = "cortex_r4",
.llvm_name = "cortex-r4",
.features = featureSet(&[_]Feature{
.avoid_partial_cpsr,
.ret_addr_stack,
.v7r,
}),
};
pub const cortex_r4f: CpuModel = .{
.name = "cortex_r4f",
.llvm_name = "cortex-r4f",
.features = featureSet(&[_]Feature{
.avoid_partial_cpsr,
.ret_addr_stack,
.slow_fp_brcc,
.slowfpvfmx,
.slowfpvmlx,
.v7r,
.vfp3d16,
}),
};
pub const cortex_r5: CpuModel = .{
.name = "cortex_r5",
.llvm_name = "cortex-r5",
.features = featureSet(&[_]Feature{
.avoid_partial_cpsr,
.hwdiv_arm,
.ret_addr_stack,
.slow_fp_brcc,
.slowfpvfmx,
.slowfpvmlx,
.v7r,
.vfp3d16,
}),
};
pub const cortex_r52: CpuModel = .{
.name = "cortex_r52",
.llvm_name = "cortex-r52",
.features = featureSet(&[_]Feature{
.fp_armv8,
.fpao,
.neon,
.use_misched,
.v8r,
}),
};
pub const cortex_r52plus: CpuModel = .{
.name = "cortex_r52plus",
.llvm_name = "cortex-r52plus",
.features = featureSet(&[_]Feature{
.fp_armv8,
.fpao,
.neon,
.use_misched,
.v8r,
}),
};
pub const cortex_r7: CpuModel = .{
.name = "cortex_r7",
.llvm_name = "cortex-r7",
.features = featureSet(&[_]Feature{
.avoid_partial_cpsr,
.fp16,
.hwdiv_arm,
.mp,
.ret_addr_stack,
.slow_fp_brcc,
.slowfpvfmx,
.slowfpvmlx,
.v7r,
.vfp3d16,
}),
};
pub const cortex_r8: CpuModel = .{
.name = "cortex_r8",
.llvm_name = "cortex-r8",
.features = featureSet(&[_]Feature{
.avoid_partial_cpsr,
.fp16,
.hwdiv_arm,
.mp,
.ret_addr_stack,
.slow_fp_brcc,
.slowfpvfmx,
.slowfpvmlx,
.v7r,
.vfp3d16,
}),
};
pub const cortex_x1: CpuModel = .{
.name = "cortex_x1",
.llvm_name = "cortex-x1",
.features = featureSet(&[_]Feature{
.dotprod,
.fullfp16,
.v8_2a,
}),
};
pub const cortex_x1c: CpuModel = .{
.name = "cortex_x1c",
.llvm_name = "cortex-x1c",
.features = featureSet(&[_]Feature{
.dotprod,
.fullfp16,
.v8_2a,
}),
};
pub const cyclone: CpuModel = .{
.name = "cyclone",
.llvm_name = "cyclone",
.features = featureSet(&[_]Feature{
.avoid_movs_shop,
.avoid_partial_cpsr,
.disable_postra_scheduler,
.neonfp,
.ret_addr_stack,
.slowfpvfmx,
.slowfpvmlx,
.use_misched,
.v8a,
.zcz,
}),
};
pub const ep9312: CpuModel = .{
.name = "ep9312",
.llvm_name = "ep9312",
.features = featureSet(&[_]Feature{
.v4t,
}),
};
pub const exynos_m1: CpuModel = .{
.name = "exynos_m1",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.expand_fp_mlx,
.fuse_aes,
.fuse_literals,
.prof_unpr,
.ret_addr_stack,
.slow_fp_brcc,
.slow_vdup32,
.slow_vgetlni32,
.slowfpvfmx,
.slowfpvmlx,
.splat_vfp_neon,
.v8a,
.wide_stride_vfp,
.zcz,
}),
};
pub const exynos_m2: CpuModel = .{
.name = "exynos_m2",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.expand_fp_mlx,
.fuse_aes,
.fuse_literals,
.prof_unpr,
.ret_addr_stack,
.slow_fp_brcc,
.slow_vdup32,
.slow_vgetlni32,
.slowfpvfmx,
.slowfpvmlx,
.splat_vfp_neon,
.v8a,
.wide_stride_vfp,
.zcz,
}),
};
pub const exynos_m3: CpuModel = .{
.name = "exynos_m3",
.llvm_name = "exynos-m3",
.features = featureSet(&[_]Feature{
.expand_fp_mlx,
.fuse_aes,
.fuse_literals,
.prof_unpr,
.ret_addr_stack,
.slow_fp_brcc,
.slow_vdup32,
.slow_vgetlni32,
.slowfpvfmx,
.slowfpvmlx,
.splat_vfp_neon,
.v8a,
.wide_stride_vfp,
.zcz,
}),
};
pub const exynos_m4: CpuModel = .{
.name = "exynos_m4",
.llvm_name = "exynos-m4",
.features = featureSet(&[_]Feature{
.dotprod,
.expand_fp_mlx,
.fullfp16,
.fuse_aes,
.fuse_literals,
.prof_unpr,
.ret_addr_stack,
.slow_fp_brcc,
.slow_vdup32,
.slow_vgetlni32,
.slowfpvfmx,
.slowfpvmlx,
.splat_vfp_neon,
.v8_2a,
.wide_stride_vfp,
.zcz,
}),
};
pub const exynos_m5: CpuModel = .{
.name = "exynos_m5",
.llvm_name = "exynos-m5",
.features = featureSet(&[_]Feature{
.dotprod,
.expand_fp_mlx,
.fullfp16,
.fuse_aes,
.fuse_literals,
.prof_unpr,
.ret_addr_stack,
.slow_fp_brcc,
.slow_vdup32,
.slow_vgetlni32,
.slowfpvfmx,
.slowfpvmlx,
.splat_vfp_neon,
.v8_2a,
.wide_stride_vfp,
.zcz,
}),
};
pub const generic: CpuModel = .{
.name = "generic",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{}),
};
pub const iwmmxt: CpuModel = .{
.name = "iwmmxt",
.llvm_name = "iwmmxt",
.features = featureSet(&[_]Feature{
.v5te,
}),
};
pub const krait: CpuModel = .{
.name = "krait",
.llvm_name = "krait",
.features = featureSet(&[_]Feature{
.avoid_partial_cpsr,
.hwdiv,
.hwdiv_arm,
.muxed_units,
.ret_addr_stack,
.v7a,
.vfp4,
.vldn_align,
.vmlx_forwarding,
}),
};
pub const kryo: CpuModel = .{
.name = "kryo",
.llvm_name = "kryo",
.features = featureSet(&[_]Feature{
.v8a,
}),
};
pub const mpcore: CpuModel = .{
.name = "mpcore",
.llvm_name = "mpcore",
.features = featureSet(&[_]Feature{
.slowfpvmlx,
.v6k,
.vfp2,
}),
};
pub const mpcorenovfp: CpuModel = .{
.name = "mpcorenovfp",
.llvm_name = "mpcorenovfp",
.features = featureSet(&[_]Feature{
.v6k,
}),
};
pub const neoverse_n1: CpuModel = .{
.name = "neoverse_n1",
.llvm_name = "neoverse-n1",
.features = featureSet(&[_]Feature{
.dotprod,
.v8_2a,
}),
};
pub const neoverse_n2: CpuModel = .{
.name = "neoverse_n2",
.llvm_name = "neoverse-n2",
.features = featureSet(&[_]Feature{
.bf16,
.fp16fml,
.i8mm,
.v9a,
}),
};
pub const neoverse_v1: CpuModel = .{
.name = "neoverse_v1",
.llvm_name = "neoverse-v1",
.features = featureSet(&[_]Feature{
.bf16,
.fullfp16,
.i8mm,
.v8_4a,
}),
};
pub const sc000: CpuModel = .{
.name = "sc000",
.llvm_name = "sc000",
.features = featureSet(&[_]Feature{
.no_branch_predictor,
.v6m,
}),
};
pub const sc300: CpuModel = .{
.name = "sc300",
.llvm_name = "sc300",
.features = featureSet(&[_]Feature{
.no_branch_predictor,
.use_misched,
.v7m,
}),
};
pub const strongarm: CpuModel = .{
.name = "strongarm",
.llvm_name = "strongarm",
.features = featureSet(&[_]Feature{
.v4,
}),
};
pub const strongarm110: CpuModel = .{
.name = "strongarm110",
.llvm_name = "strongarm110",
.features = featureSet(&[_]Feature{
.v4,
}),
};
pub const strongarm1100: CpuModel = .{
.name = "strongarm1100",
.llvm_name = "strongarm1100",
.features = featureSet(&[_]Feature{
.v4,
}),
};
pub const strongarm1110: CpuModel = .{
.name = "strongarm1110",
.llvm_name = "strongarm1110",
.features = featureSet(&[_]Feature{
.v4,
}),
};
pub const swift: CpuModel = .{
.name = "swift",
.llvm_name = "swift",
.features = featureSet(&[_]Feature{
.avoid_movs_shop,
.avoid_partial_cpsr,
.disable_postra_scheduler,
.hwdiv,
.hwdiv_arm,
.mp,
.neonfp,
.prefer_ishst,
.prof_unpr,
.ret_addr_stack,
.slow_load_D_subreg,
.slow_odd_reg,
.slow_vdup32,
.slow_vgetlni32,
.slowfpvfmx,
.slowfpvmlx,
.use_misched,
.v7a,
.vfp4,
.vmlx_hazards,
.wide_stride_vfp,
}),
};
pub const xscale: CpuModel = .{
.name = "xscale",
.llvm_name = "xscale",
.features = featureSet(&[_]Feature{
.v5te,
}),
};
}