Files
zig/lib/std/target/cpu/ArmCpu.zig
2020-01-19 20:53:18 -05:00

1231 lines
30 KiB
Zig

const feature = @import("std").target.feature;
const CpuInfo = @import("std").target.cpu.CpuInfo;
pub const ArmCpu = enum {
Arm1020e,
Arm1020t,
Arm1022e,
Arm10e,
Arm10tdmi,
Arm1136jS,
Arm1136jfS,
Arm1156t2S,
Arm1156t2fS,
Arm1176jS,
Arm1176jzS,
Arm1176jzfS,
Arm710t,
Arm720t,
Arm7tdmi,
Arm7tdmiS,
Arm8,
Arm810,
Arm9,
Arm920,
Arm920t,
Arm922t,
Arm926ejS,
Arm940t,
Arm946eS,
Arm966eS,
Arm968eS,
Arm9e,
Arm9tdmi,
CortexA12,
CortexA15,
CortexA17,
CortexA32,
CortexA35,
CortexA5,
CortexA53,
CortexA55,
CortexA57,
CortexA7,
CortexA72,
CortexA73,
CortexA75,
CortexA76,
CortexA76ae,
CortexA8,
CortexA9,
CortexM0,
CortexM0plus,
CortexM1,
CortexM23,
CortexM3,
CortexM33,
CortexM35p,
CortexM4,
CortexM7,
CortexR4,
CortexR4f,
CortexR5,
CortexR52,
CortexR7,
CortexR8,
Cyclone,
Ep9312,
ExynosM1,
ExynosM2,
ExynosM3,
ExynosM4,
ExynosM5,
Generic,
Iwmmxt,
Krait,
Kryo,
Mpcore,
Mpcorenovfp,
NeoverseN1,
Sc000,
Sc300,
Strongarm,
Strongarm110,
Strongarm1100,
Strongarm1110,
Swift,
Xscale,
const FeatureType = feature.ArmFeature;
pub fn getInfo(self: @This()) CpuInfo(@This(), FeatureType) {
return cpu_infos[@enumToInt(self)];
}
pub const cpu_infos = [@memberCount(@This())]CpuInfo(@This(), FeatureType) {
CpuInfo(@This(), FeatureType).create(.Arm1020e, "arm1020e", &[_]FeatureType {
.V4t,
.Armv5te,
}),
CpuInfo(@This(), FeatureType).create(.Arm1020t, "arm1020t", &[_]FeatureType {
.V4t,
.Armv5t,
}),
CpuInfo(@This(), FeatureType).create(.Arm1022e, "arm1022e", &[_]FeatureType {
.V4t,
.Armv5te,
}),
CpuInfo(@This(), FeatureType).create(.Arm10e, "arm10e", &[_]FeatureType {
.V4t,
.Armv5te,
}),
CpuInfo(@This(), FeatureType).create(.Arm10tdmi, "arm10tdmi", &[_]FeatureType {
.V4t,
.Armv5t,
}),
CpuInfo(@This(), FeatureType).create(.Arm1136jS, "arm1136j-s", &[_]FeatureType {
.V4t,
.Dsp,
.Armv6,
}),
CpuInfo(@This(), FeatureType).create(.Arm1136jfS, "arm1136jf-s", &[_]FeatureType {
.V4t,
.Dsp,
.Armv6,
.Slowfpvmlx,
.Fpregs,
.Vfp2,
}),
CpuInfo(@This(), FeatureType).create(.Arm1156t2S, "arm1156t2-s", &[_]FeatureType {
.V4t,
.Thumb2,
.Dsp,
.Armv6t2,
}),
CpuInfo(@This(), FeatureType).create(.Arm1156t2fS, "arm1156t2f-s", &[_]FeatureType {
.V4t,
.Thumb2,
.Dsp,
.Armv6t2,
.Slowfpvmlx,
.Fpregs,
.Vfp2,
}),
CpuInfo(@This(), FeatureType).create(.Arm1176jS, "arm1176j-s", &[_]FeatureType {
.V4t,
.Trustzone,
.Armv6kz,
}),
CpuInfo(@This(), FeatureType).create(.Arm1176jzS, "arm1176jz-s", &[_]FeatureType {
.V4t,
.Trustzone,
.Armv6kz,
}),
CpuInfo(@This(), FeatureType).create(.Arm1176jzfS, "arm1176jzf-s", &[_]FeatureType {
.V4t,
.Trustzone,
.Armv6kz,
.Slowfpvmlx,
.Fpregs,
.Vfp2,
}),
CpuInfo(@This(), FeatureType).create(.Arm710t, "arm710t", &[_]FeatureType {
.V4t,
.Armv4t,
}),
CpuInfo(@This(), FeatureType).create(.Arm720t, "arm720t", &[_]FeatureType {
.V4t,
.Armv4t,
}),
CpuInfo(@This(), FeatureType).create(.Arm7tdmi, "arm7tdmi", &[_]FeatureType {
.V4t,
.Armv4t,
}),
CpuInfo(@This(), FeatureType).create(.Arm7tdmiS, "arm7tdmi-s", &[_]FeatureType {
.V4t,
.Armv4t,
}),
CpuInfo(@This(), FeatureType).create(.Arm8, "arm8", &[_]FeatureType {
.Armv4,
}),
CpuInfo(@This(), FeatureType).create(.Arm810, "arm810", &[_]FeatureType {
.Armv4,
}),
CpuInfo(@This(), FeatureType).create(.Arm9, "arm9", &[_]FeatureType {
.V4t,
.Armv4t,
}),
CpuInfo(@This(), FeatureType).create(.Arm920, "arm920", &[_]FeatureType {
.V4t,
.Armv4t,
}),
CpuInfo(@This(), FeatureType).create(.Arm920t, "arm920t", &[_]FeatureType {
.V4t,
.Armv4t,
}),
CpuInfo(@This(), FeatureType).create(.Arm922t, "arm922t", &[_]FeatureType {
.V4t,
.Armv4t,
}),
CpuInfo(@This(), FeatureType).create(.Arm926ejS, "arm926ej-s", &[_]FeatureType {
.V4t,
.Armv5te,
}),
CpuInfo(@This(), FeatureType).create(.Arm940t, "arm940t", &[_]FeatureType {
.V4t,
.Armv4t,
}),
CpuInfo(@This(), FeatureType).create(.Arm946eS, "arm946e-s", &[_]FeatureType {
.V4t,
.Armv5te,
}),
CpuInfo(@This(), FeatureType).create(.Arm966eS, "arm966e-s", &[_]FeatureType {
.V4t,
.Armv5te,
}),
CpuInfo(@This(), FeatureType).create(.Arm968eS, "arm968e-s", &[_]FeatureType {
.V4t,
.Armv5te,
}),
CpuInfo(@This(), FeatureType).create(.Arm9e, "arm9e", &[_]FeatureType {
.V4t,
.Armv5te,
}),
CpuInfo(@This(), FeatureType).create(.Arm9tdmi, "arm9tdmi", &[_]FeatureType {
.V4t,
.Armv4t,
}),
CpuInfo(@This(), FeatureType).create(.CortexA12, "cortex-a12", &[_]FeatureType {
.Perfmon,
.V4t,
.D32,
.Fpregs,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Aclass,
.Armv7A,
.AvoidPartialCpsr,
.RetAddrStack,
.Mp,
.Trustzone,
.Fp16,
.Vfp4,
.VmlxForwarding,
.HwdivArm,
.Hwdiv,
.Virtualization,
.A12,
}),
CpuInfo(@This(), FeatureType).create(.CortexA15, "cortex-a15", &[_]FeatureType {
.Perfmon,
.V4t,
.D32,
.Fpregs,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Aclass,
.Armv7A,
.AvoidPartialCpsr,
.VldnAlign,
.DontWidenVmovs,
.RetAddrStack,
.Mp,
.MuxedUnits,
.SplatVfpNeon,
.Trustzone,
.Fp16,
.Vfp4,
.HwdivArm,
.Hwdiv,
.Virtualization,
.A15,
}),
CpuInfo(@This(), FeatureType).create(.CortexA17, "cortex-a17", &[_]FeatureType {
.Perfmon,
.V4t,
.D32,
.Fpregs,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Aclass,
.Armv7A,
.AvoidPartialCpsr,
.RetAddrStack,
.Mp,
.Trustzone,
.Fp16,
.Vfp4,
.VmlxForwarding,
.HwdivArm,
.Hwdiv,
.Virtualization,
.A17,
}),
CpuInfo(@This(), FeatureType).create(.CortexA32, "cortex-a32", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv8A,
.Crypto,
}),
CpuInfo(@This(), FeatureType).create(.CortexA35, "cortex-a35", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv8A,
.Crypto,
.A35,
}),
CpuInfo(@This(), FeatureType).create(.CortexA5, "cortex-a5", &[_]FeatureType {
.Perfmon,
.V4t,
.D32,
.Fpregs,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Aclass,
.Armv7A,
.RetAddrStack,
.Slowfpvmlx,
.Mp,
.SlowFpBrcc,
.Trustzone,
.Fp16,
.Vfp4,
.VmlxForwarding,
.A5,
}),
CpuInfo(@This(), FeatureType).create(.CortexA53, "cortex-a53", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv8A,
.Crypto,
.Fpao,
.A53,
}),
CpuInfo(@This(), FeatureType).create(.CortexA55, "cortex-a55", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.Ras,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv82A,
.Dotprod,
.A55,
}),
CpuInfo(@This(), FeatureType).create(.CortexA57, "cortex-a57", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv8A,
.AvoidPartialCpsr,
.CheapPredicableCpsr,
.Crypto,
.Fpao,
.A57,
}),
CpuInfo(@This(), FeatureType).create(.CortexA7, "cortex-a7", &[_]FeatureType {
.Perfmon,
.V4t,
.D32,
.Fpregs,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Aclass,
.Armv7A,
.RetAddrStack,
.Slowfpvmlx,
.VmlxHazards,
.Mp,
.SlowFpBrcc,
.Trustzone,
.Fp16,
.Vfp4,
.VmlxForwarding,
.HwdivArm,
.Hwdiv,
.Virtualization,
.A7,
}),
CpuInfo(@This(), FeatureType).create(.CortexA72, "cortex-a72", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv8A,
.Crypto,
.A72,
}),
CpuInfo(@This(), FeatureType).create(.CortexA73, "cortex-a73", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv8A,
.Crypto,
.A73,
}),
CpuInfo(@This(), FeatureType).create(.CortexA75, "cortex-a75", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.Ras,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv82A,
.Dotprod,
.A75,
}),
CpuInfo(@This(), FeatureType).create(.CortexA76, "cortex-a76", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.Ras,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv82A,
.Crypto,
.Dotprod,
.Fullfp16,
.A76,
}),
CpuInfo(@This(), FeatureType).create(.CortexA76ae, "cortex-a76ae", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.Ras,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv82A,
.Crypto,
.Dotprod,
.Fullfp16,
.A76,
}),
CpuInfo(@This(), FeatureType).create(.CortexA8, "cortex-a8", &[_]FeatureType {
.Perfmon,
.V4t,
.D32,
.Fpregs,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Aclass,
.Armv7A,
.RetAddrStack,
.Slowfpvmlx,
.VmlxHazards,
.NonpipelinedVfp,
.SlowFpBrcc,
.Trustzone,
.VmlxForwarding,
.A8,
}),
CpuInfo(@This(), FeatureType).create(.CortexA9, "cortex-a9", &[_]FeatureType {
.Perfmon,
.V4t,
.D32,
.Fpregs,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Aclass,
.Armv7A,
.AvoidPartialCpsr,
.VldnAlign,
.ExpandFpMlx,
.Fp16,
.RetAddrStack,
.VmlxHazards,
.Mp,
.MuxedUnits,
.NeonFpmovs,
.PreferVmovsr,
.Trustzone,
.VmlxForwarding,
.A9,
}),
CpuInfo(@This(), FeatureType).create(.CortexM0, "cortex-m0", &[_]FeatureType {
.V4t,
.ThumbMode,
.Db,
.StrictAlign,
.Mclass,
.Noarm,
.Armv6M,
}),
CpuInfo(@This(), FeatureType).create(.CortexM0plus, "cortex-m0plus", &[_]FeatureType {
.V4t,
.ThumbMode,
.Db,
.StrictAlign,
.Mclass,
.Noarm,
.Armv6M,
}),
CpuInfo(@This(), FeatureType).create(.CortexM1, "cortex-m1", &[_]FeatureType {
.V4t,
.ThumbMode,
.Db,
.StrictAlign,
.Mclass,
.Noarm,
.Armv6M,
}),
CpuInfo(@This(), FeatureType).create(.CortexM23, "cortex-m23", &[_]FeatureType {
.V4t,
.ThumbMode,
.Msecext8,
.V7clrex,
.Db,
.StrictAlign,
.Mclass,
.Noarm,
.AcquireRelease,
.Hwdiv,
.Armv8Mbase,
.NoMovt,
}),
CpuInfo(@This(), FeatureType).create(.CortexM3, "cortex-m3", &[_]FeatureType {
.Perfmon,
.V4t,
.ThumbMode,
.V7clrex,
.Thumb2,
.Db,
.Mclass,
.Noarm,
.Hwdiv,
.Armv7M,
.NoBranchPredictor,
.LoopAlign,
.UseAa,
.UseMisched,
.M3,
}),
CpuInfo(@This(), FeatureType).create(.CortexM33, "cortex-m33", &[_]FeatureType {
.Perfmon,
.V4t,
.ThumbMode,
.Msecext8,
.V7clrex,
.Thumb2,
.Db,
.Mclass,
.Noarm,
.AcquireRelease,
.Hwdiv,
.Armv8Mmain,
.Dsp,
.Fpregs,
.Fp16,
.FpArmv8d16sp,
.NoBranchPredictor,
.Slowfpvmlx,
.LoopAlign,
.UseAa,
.UseMisched,
}),
CpuInfo(@This(), FeatureType).create(.CortexM35p, "cortex-m35p", &[_]FeatureType {
.Perfmon,
.V4t,
.ThumbMode,
.Msecext8,
.V7clrex,
.Thumb2,
.Db,
.Mclass,
.Noarm,
.AcquireRelease,
.Hwdiv,
.Armv8Mmain,
.Dsp,
.Fpregs,
.Fp16,
.FpArmv8d16sp,
.NoBranchPredictor,
.Slowfpvmlx,
.LoopAlign,
.UseAa,
.UseMisched,
}),
CpuInfo(@This(), FeatureType).create(.CortexM4, "cortex-m4", &[_]FeatureType {
.Perfmon,
.V4t,
.ThumbMode,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Mclass,
.Noarm,
.Hwdiv,
.Armv7eM,
.NoBranchPredictor,
.Slowfpvmlx,
.LoopAlign,
.UseAa,
.UseMisched,
.Fpregs,
.Fp16,
.Vfp4d16sp,
}),
CpuInfo(@This(), FeatureType).create(.CortexM7, "cortex-m7", &[_]FeatureType {
.Perfmon,
.V4t,
.ThumbMode,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Mclass,
.Noarm,
.Hwdiv,
.Armv7eM,
.Fpregs,
.Fp16,
.FpArmv8d16,
}),
CpuInfo(@This(), FeatureType).create(.CortexR4, "cortex-r4", &[_]FeatureType {
.Perfmon,
.V4t,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Hwdiv,
.Rclass,
.Armv7R,
.AvoidPartialCpsr,
.RetAddrStack,
.R4,
}),
CpuInfo(@This(), FeatureType).create(.CortexR4f, "cortex-r4f", &[_]FeatureType {
.Perfmon,
.V4t,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Hwdiv,
.Rclass,
.Armv7R,
.AvoidPartialCpsr,
.RetAddrStack,
.Slowfpvmlx,
.SlowFpBrcc,
.Fpregs,
.Vfp3d16,
.R4,
}),
CpuInfo(@This(), FeatureType).create(.CortexR5, "cortex-r5", &[_]FeatureType {
.Perfmon,
.V4t,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Hwdiv,
.Rclass,
.Armv7R,
.AvoidPartialCpsr,
.HwdivArm,
.RetAddrStack,
.Slowfpvmlx,
.SlowFpBrcc,
.Fpregs,
.Vfp3d16,
.R5,
}),
CpuInfo(@This(), FeatureType).create(.CortexR52, "cortex-r52", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Crc,
.Fpregs,
.Mp,
.Dfb,
.Dsp,
.Fp16,
.V4t,
.Db,
.V7clrex,
.Thumb2,
.AcquireRelease,
.Hwdiv,
.Rclass,
.Armv8R,
.Fpao,
.UseAa,
.UseMisched,
.R52,
}),
CpuInfo(@This(), FeatureType).create(.CortexR7, "cortex-r7", &[_]FeatureType {
.Perfmon,
.V4t,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Hwdiv,
.Rclass,
.Armv7R,
.AvoidPartialCpsr,
.Fp16,
.HwdivArm,
.RetAddrStack,
.Slowfpvmlx,
.Mp,
.SlowFpBrcc,
.Fpregs,
.Vfp3d16,
.R7,
}),
CpuInfo(@This(), FeatureType).create(.CortexR8, "cortex-r8", &[_]FeatureType {
.Perfmon,
.V4t,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Hwdiv,
.Rclass,
.Armv7R,
.AvoidPartialCpsr,
.Fp16,
.HwdivArm,
.RetAddrStack,
.Slowfpvmlx,
.Mp,
.SlowFpBrcc,
.Fpregs,
.Vfp3d16,
}),
CpuInfo(@This(), FeatureType).create(.Cyclone, "cyclone", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv8A,
.AvoidMovsShop,
.AvoidPartialCpsr,
.Crypto,
.RetAddrStack,
.Slowfpvmlx,
.Neonfp,
.DisablePostraScheduler,
.UseMisched,
.Vfp4,
.Zcz,
.Swift,
}),
CpuInfo(@This(), FeatureType).create(.Ep9312, "ep9312", &[_]FeatureType {
.V4t,
.Armv4t,
}),
CpuInfo(@This(), FeatureType).create(.ExynosM1, "exynos-m1", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv8A,
.RetAddrStack,
.SlowVgetlni32,
.WideStrideVfp,
.SlowVdup32,
.SlowFpBrcc,
.ProfUnpr,
.DontWidenVmovs,
.Zcz,
.FuseAes,
.Slowfpvmlx,
.UseAa,
.FuseLiterals,
.ExpandFpMlx,
.Exynos,
}),
CpuInfo(@This(), FeatureType).create(.ExynosM2, "exynos-m2", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv8A,
.RetAddrStack,
.SlowVgetlni32,
.WideStrideVfp,
.SlowVdup32,
.SlowFpBrcc,
.ProfUnpr,
.DontWidenVmovs,
.Zcz,
.FuseAes,
.Slowfpvmlx,
.UseAa,
.FuseLiterals,
.ExpandFpMlx,
.Exynos,
}),
CpuInfo(@This(), FeatureType).create(.ExynosM3, "exynos-m3", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv8A,
.RetAddrStack,
.SlowVgetlni32,
.WideStrideVfp,
.SlowVdup32,
.SlowFpBrcc,
.ProfUnpr,
.DontWidenVmovs,
.Zcz,
.FuseAes,
.Slowfpvmlx,
.UseAa,
.FuseLiterals,
.ExpandFpMlx,
.Exynos,
}),
CpuInfo(@This(), FeatureType).create(.ExynosM4, "exynos-m4", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.Ras,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv82A,
.Dotprod,
.Fullfp16,
.RetAddrStack,
.SlowVgetlni32,
.WideStrideVfp,
.SlowVdup32,
.SlowFpBrcc,
.ProfUnpr,
.DontWidenVmovs,
.Zcz,
.FuseAes,
.Slowfpvmlx,
.UseAa,
.FuseLiterals,
.ExpandFpMlx,
.Exynos,
}),
CpuInfo(@This(), FeatureType).create(.ExynosM5, "exynos-m5", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.Ras,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv82A,
.Dotprod,
.Fullfp16,
.RetAddrStack,
.SlowVgetlni32,
.WideStrideVfp,
.SlowVdup32,
.SlowFpBrcc,
.ProfUnpr,
.DontWidenVmovs,
.Zcz,
.FuseAes,
.Slowfpvmlx,
.UseAa,
.FuseLiterals,
.ExpandFpMlx,
.Exynos,
}),
CpuInfo(@This(), FeatureType).create(.Generic, "generic", &[_]FeatureType {
}),
CpuInfo(@This(), FeatureType).create(.Iwmmxt, "iwmmxt", &[_]FeatureType {
.V4t,
.Armv5te,
}),
CpuInfo(@This(), FeatureType).create(.Krait, "krait", &[_]FeatureType {
.Perfmon,
.V4t,
.D32,
.Fpregs,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Aclass,
.Armv7A,
.AvoidPartialCpsr,
.VldnAlign,
.Fp16,
.HwdivArm,
.Hwdiv,
.RetAddrStack,
.MuxedUnits,
.Vfp4,
.VmlxForwarding,
.Krait,
}),
CpuInfo(@This(), FeatureType).create(.Kryo, "kryo", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv8A,
.Crypto,
.Kryo,
}),
CpuInfo(@This(), FeatureType).create(.Mpcore, "mpcore", &[_]FeatureType {
.V4t,
.Armv6k,
.Slowfpvmlx,
.Fpregs,
.Vfp2,
}),
CpuInfo(@This(), FeatureType).create(.Mpcorenovfp, "mpcorenovfp", &[_]FeatureType {
.V4t,
.Armv6k,
}),
CpuInfo(@This(), FeatureType).create(.NeoverseN1, "neoverse-n1", &[_]FeatureType {
.HwdivArm,
.Perfmon,
.D32,
.Fpregs,
.Crc,
.Mp,
.Fp16,
.Dsp,
.V4t,
.V7clrex,
.Db,
.Aclass,
.Thumb2,
.Ras,
.AcquireRelease,
.Hwdiv,
.Trustzone,
.Armv82A,
.Crypto,
.Dotprod,
}),
CpuInfo(@This(), FeatureType).create(.Sc000, "sc000", &[_]FeatureType {
.V4t,
.ThumbMode,
.Db,
.StrictAlign,
.Mclass,
.Noarm,
.Armv6M,
}),
CpuInfo(@This(), FeatureType).create(.Sc300, "sc300", &[_]FeatureType {
.Perfmon,
.V4t,
.ThumbMode,
.V7clrex,
.Thumb2,
.Db,
.Mclass,
.Noarm,
.Hwdiv,
.Armv7M,
.NoBranchPredictor,
.UseAa,
.UseMisched,
.M3,
}),
CpuInfo(@This(), FeatureType).create(.Strongarm, "strongarm", &[_]FeatureType {
.Armv4,
}),
CpuInfo(@This(), FeatureType).create(.Strongarm110, "strongarm110", &[_]FeatureType {
.Armv4,
}),
CpuInfo(@This(), FeatureType).create(.Strongarm1100, "strongarm1100", &[_]FeatureType {
.Armv4,
}),
CpuInfo(@This(), FeatureType).create(.Strongarm1110, "strongarm1110", &[_]FeatureType {
.Armv4,
}),
CpuInfo(@This(), FeatureType).create(.Swift, "swift", &[_]FeatureType {
.Perfmon,
.V4t,
.D32,
.Fpregs,
.V7clrex,
.Dsp,
.Thumb2,
.Db,
.Aclass,
.Armv7A,
.AvoidMovsShop,
.AvoidPartialCpsr,
.HwdivArm,
.Hwdiv,
.RetAddrStack,
.Slowfpvmlx,
.VmlxHazards,
.Mp,
.Neonfp,
.DisablePostraScheduler,
.PreferIshst,
.ProfUnpr,
.SlowLoadDSubreg,
.SlowOddReg,
.SlowVdup32,
.SlowVgetlni32,
.UseMisched,
.WideStrideVfp,
.Fp16,
.Vfp4,
.Swift,
}),
CpuInfo(@This(), FeatureType).create(.Xscale, "xscale", &[_]FeatureType {
.V4t,
.Armv5te,
}),
};
};