const Feature = @import("std").target.Feature; const Cpu = @import("std").target.Cpu; pub const feature_msecext8 = Feature{ .name = "msecext8", .llvm_name = "8msecext", .description = "Enable support for ARMv8-M Security Extensions", .dependencies = &[_]*const Feature { }, }; pub const feature_aclass = Feature{ .name = "aclass", .llvm_name = "aclass", .description = "Is application profile ('A' series)", .dependencies = &[_]*const Feature { }, }; pub const feature_aes = Feature{ .name = "aes", .llvm_name = "aes", .description = "Enable AES support", .dependencies = &[_]*const Feature { &feature_fpregs, &feature_d32, }, }; pub const feature_acquireRelease = Feature{ .name = "acquireRelease", .llvm_name = "acquire-release", .description = "Has v8 acquire/release (lda/ldaex etc) instructions", .dependencies = &[_]*const Feature { }, }; pub const feature_avoidMovsShop = Feature{ .name = "avoidMovsShop", .llvm_name = "avoid-movs-shop", .description = "Avoid movs instructions with shifter operand", .dependencies = &[_]*const Feature { }, }; pub const feature_avoidPartialCpsr = Feature{ .name = "avoidPartialCpsr", .llvm_name = "avoid-partial-cpsr", .description = "Avoid CPSR partial update for OOO execution", .dependencies = &[_]*const Feature { }, }; pub const feature_crc = Feature{ .name = "crc", .llvm_name = "crc", .description = "Enable support for CRC instructions", .dependencies = &[_]*const Feature { }, }; pub const feature_cheapPredicableCpsr = Feature{ .name = "cheapPredicableCpsr", .llvm_name = "cheap-predicable-cpsr", .description = "Disable +1 predication cost for instructions updating CPSR", .dependencies = &[_]*const Feature { }, }; pub const feature_vldnAlign = Feature{ .name = "vldnAlign", .llvm_name = "vldn-align", .description = "Check for VLDn unaligned access", .dependencies = &[_]*const Feature { }, }; pub const feature_crypto = Feature{ .name = "crypto", .llvm_name = "crypto", .description = "Enable support for Cryptography extensions", .dependencies = &[_]*const Feature { &feature_d32, &feature_fpregs, }, }; pub const feature_d32 = Feature{ .name = "d32", .llvm_name = "d32", .description = "Extend FP to 32 double registers", .dependencies = &[_]*const Feature { }, }; pub const feature_db = Feature{ .name = "db", .llvm_name = "db", .description = "Has data barrier (dmb/dsb) instructions", .dependencies = &[_]*const Feature { }, }; pub const feature_dfb = Feature{ .name = "dfb", .llvm_name = "dfb", .description = "Has full data barrier (dfb) instruction", .dependencies = &[_]*const Feature { }, }; pub const feature_dsp = Feature{ .name = "dsp", .llvm_name = "dsp", .description = "Supports DSP instructions in ARM and/or Thumb2", .dependencies = &[_]*const Feature { }, }; pub const feature_dontWidenVmovs = Feature{ .name = "dontWidenVmovs", .llvm_name = "dont-widen-vmovs", .description = "Don't widen VMOVS to VMOVD", .dependencies = &[_]*const Feature { }, }; pub const feature_dotprod = Feature{ .name = "dotprod", .llvm_name = "dotprod", .description = "Enable support for dot product instructions", .dependencies = &[_]*const Feature { &feature_fpregs, &feature_d32, }, }; pub const feature_executeOnly = Feature{ .name = "executeOnly", .llvm_name = "execute-only", .description = "Enable the generation of execute only code.", .dependencies = &[_]*const Feature { }, }; pub const feature_expandFpMlx = Feature{ .name = "expandFpMlx", .llvm_name = "expand-fp-mlx", .description = "Expand VFP/NEON MLA/MLS instructions", .dependencies = &[_]*const Feature { }, }; pub const feature_fp16 = Feature{ .name = "fp16", .llvm_name = "fp16", .description = "Enable half-precision floating point", .dependencies = &[_]*const Feature { }, }; pub const feature_fp16fml = Feature{ .name = "fp16fml", .llvm_name = "fp16fml", .description = "Enable full half-precision floating point fml instructions", .dependencies = &[_]*const Feature { &feature_fp16, &feature_fpregs, }, }; pub const feature_fp64 = Feature{ .name = "fp64", .llvm_name = "fp64", .description = "Floating point unit supports double precision", .dependencies = &[_]*const Feature { &feature_fpregs, }, }; pub const feature_fpao = Feature{ .name = "fpao", .llvm_name = "fpao", .description = "Enable fast computation of positive address offsets", .dependencies = &[_]*const Feature { }, }; pub const feature_fpArmv8 = Feature{ .name = "fpArmv8", .llvm_name = "fp-armv8", .description = "Enable ARMv8 FP", .dependencies = &[_]*const Feature { &feature_fp16, &feature_d32, &feature_fpregs, }, }; pub const feature_fpArmv8d16 = Feature{ .name = "fpArmv8d16", .llvm_name = "fp-armv8d16", .description = "Enable ARMv8 FP with only 16 d-registers", .dependencies = &[_]*const Feature { &feature_fp16, &feature_fpregs, }, }; pub const feature_fpArmv8d16sp = Feature{ .name = "fpArmv8d16sp", .llvm_name = "fp-armv8d16sp", .description = "Enable ARMv8 FP with only 16 d-registers and no double precision", .dependencies = &[_]*const Feature { &feature_fp16, &feature_fpregs, }, }; pub const feature_fpArmv8sp = Feature{ .name = "fpArmv8sp", .llvm_name = "fp-armv8sp", .description = "Enable ARMv8 FP with no double precision", .dependencies = &[_]*const Feature { &feature_fp16, &feature_fpregs, &feature_d32, }, }; pub const feature_fpregs = Feature{ .name = "fpregs", .llvm_name = "fpregs", .description = "Enable FP registers", .dependencies = &[_]*const Feature { }, }; pub const feature_fpregs16 = Feature{ .name = "fpregs16", .llvm_name = "fpregs16", .description = "Enable 16-bit FP registers", .dependencies = &[_]*const Feature { &feature_fpregs, }, }; pub const feature_fpregs64 = Feature{ .name = "fpregs64", .llvm_name = "fpregs64", .description = "Enable 64-bit FP registers", .dependencies = &[_]*const Feature { &feature_fpregs, }, }; pub const feature_fullfp16 = Feature{ .name = "fullfp16", .llvm_name = "fullfp16", .description = "Enable full half-precision floating point", .dependencies = &[_]*const Feature { &feature_fp16, &feature_fpregs, }, }; pub const feature_fuseAes = Feature{ .name = "fuseAes", .llvm_name = "fuse-aes", .description = "CPU fuses AES crypto operations", .dependencies = &[_]*const Feature { }, }; pub const feature_fuseLiterals = Feature{ .name = "fuseLiterals", .llvm_name = "fuse-literals", .description = "CPU fuses literal generation operations", .dependencies = &[_]*const Feature { }, }; pub const feature_hwdivArm = Feature{ .name = "hwdivArm", .llvm_name = "hwdiv-arm", .description = "Enable divide instructions in ARM mode", .dependencies = &[_]*const Feature { }, }; pub const feature_hwdiv = Feature{ .name = "hwdiv", .llvm_name = "hwdiv", .description = "Enable divide instructions in Thumb", .dependencies = &[_]*const Feature { }, }; pub const feature_noBranchPredictor = Feature{ .name = "noBranchPredictor", .llvm_name = "no-branch-predictor", .description = "Has no branch predictor", .dependencies = &[_]*const Feature { }, }; pub const feature_retAddrStack = Feature{ .name = "retAddrStack", .llvm_name = "ret-addr-stack", .description = "Has return address stack", .dependencies = &[_]*const Feature { }, }; pub const feature_slowfpvmlx = Feature{ .name = "slowfpvmlx", .llvm_name = "slowfpvmlx", .description = "Disable VFP / NEON MAC instructions", .dependencies = &[_]*const Feature { }, }; pub const feature_vmlxHazards = Feature{ .name = "vmlxHazards", .llvm_name = "vmlx-hazards", .description = "Has VMLx hazards", .dependencies = &[_]*const Feature { }, }; pub const feature_lob = Feature{ .name = "lob", .llvm_name = "lob", .description = "Enable Low Overhead Branch extensions", .dependencies = &[_]*const Feature { }, }; pub const feature_longCalls = Feature{ .name = "longCalls", .llvm_name = "long-calls", .description = "Generate calls via indirect call instructions", .dependencies = &[_]*const Feature { }, }; pub const feature_mclass = Feature{ .name = "mclass", .llvm_name = "mclass", .description = "Is microcontroller profile ('M' series)", .dependencies = &[_]*const Feature { }, }; pub const feature_mp = Feature{ .name = "mp", .llvm_name = "mp", .description = "Supports Multiprocessing extension", .dependencies = &[_]*const Feature { }, }; pub const feature_muxedUnits = Feature{ .name = "muxedUnits", .llvm_name = "muxed-units", .description = "Has muxed AGU and NEON/FPU", .dependencies = &[_]*const Feature { }, }; pub const feature_neon = Feature{ .name = "neon", .llvm_name = "neon", .description = "Enable NEON instructions", .dependencies = &[_]*const Feature { &feature_d32, &feature_fpregs, }, }; pub const feature_neonfp = Feature{ .name = "neonfp", .llvm_name = "neonfp", .description = "Use NEON for single precision FP", .dependencies = &[_]*const Feature { }, }; pub const feature_neonFpmovs = Feature{ .name = "neonFpmovs", .llvm_name = "neon-fpmovs", .description = "Convert VMOVSR, VMOVRS, VMOVS to NEON", .dependencies = &[_]*const Feature { }, }; pub const feature_naclTrap = Feature{ .name = "naclTrap", .llvm_name = "nacl-trap", .description = "NaCl trap", .dependencies = &[_]*const Feature { }, }; pub const feature_noarm = Feature{ .name = "noarm", .llvm_name = "noarm", .description = "Does not support ARM mode execution", .dependencies = &[_]*const Feature { }, }; pub const feature_noMovt = Feature{ .name = "noMovt", .llvm_name = "no-movt", .description = "Don't use movt/movw pairs for 32-bit imms", .dependencies = &[_]*const Feature { }, }; pub const feature_noNegImmediates = Feature{ .name = "noNegImmediates", .llvm_name = "no-neg-immediates", .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.", .dependencies = &[_]*const Feature { }, }; pub const feature_disablePostraScheduler = Feature{ .name = "disablePostraScheduler", .llvm_name = "disable-postra-scheduler", .description = "Don't schedule again after register allocation", .dependencies = &[_]*const Feature { }, }; pub const feature_nonpipelinedVfp = Feature{ .name = "nonpipelinedVfp", .llvm_name = "nonpipelined-vfp", .description = "VFP instructions are not pipelined", .dependencies = &[_]*const Feature { }, }; pub const feature_perfmon = Feature{ .name = "perfmon", .llvm_name = "perfmon", .description = "Enable support for Performance Monitor extensions", .dependencies = &[_]*const Feature { }, }; pub const feature_bit32 = Feature{ .name = "bit32", .llvm_name = "32bit", .description = "Prefer 32-bit Thumb instrs", .dependencies = &[_]*const Feature { }, }; pub const feature_preferIshst = Feature{ .name = "preferIshst", .llvm_name = "prefer-ishst", .description = "Prefer ISHST barriers", .dependencies = &[_]*const Feature { }, }; pub const feature_loopAlign = Feature{ .name = "loopAlign", .llvm_name = "loop-align", .description = "Prefer 32-bit alignment for loops", .dependencies = &[_]*const Feature { }, }; pub const feature_preferVmovsr = Feature{ .name = "preferVmovsr", .llvm_name = "prefer-vmovsr", .description = "Prefer VMOVSR", .dependencies = &[_]*const Feature { }, }; pub const feature_profUnpr = Feature{ .name = "profUnpr", .llvm_name = "prof-unpr", .description = "Is profitable to unpredicate", .dependencies = &[_]*const Feature { }, }; pub const feature_ras = Feature{ .name = "ras", .llvm_name = "ras", .description = "Enable Reliability, Availability and Serviceability extensions", .dependencies = &[_]*const Feature { }, }; pub const feature_rclass = Feature{ .name = "rclass", .llvm_name = "rclass", .description = "Is realtime profile ('R' series)", .dependencies = &[_]*const Feature { }, }; pub const feature_readTpHard = Feature{ .name = "readTpHard", .llvm_name = "read-tp-hard", .description = "Reading thread pointer from register", .dependencies = &[_]*const Feature { }, }; pub const feature_reserveR9 = Feature{ .name = "reserveR9", .llvm_name = "reserve-r9", .description = "Reserve R9, making it unavailable as GPR", .dependencies = &[_]*const Feature { }, }; pub const feature_sb = Feature{ .name = "sb", .llvm_name = "sb", .description = "Enable v8.5a Speculation Barrier", .dependencies = &[_]*const Feature { }, }; pub const feature_sha2 = Feature{ .name = "sha2", .llvm_name = "sha2", .description = "Enable SHA1 and SHA256 support", .dependencies = &[_]*const Feature { &feature_fpregs, &feature_d32, }, }; pub const feature_slowFpBrcc = Feature{ .name = "slowFpBrcc", .llvm_name = "slow-fp-brcc", .description = "FP compare + branch is slow", .dependencies = &[_]*const Feature { }, }; pub const feature_slowLoadDSubreg = Feature{ .name = "slowLoadDSubreg", .llvm_name = "slow-load-D-subreg", .description = "Loading into D subregs is slow", .dependencies = &[_]*const Feature { }, }; pub const feature_slowOddReg = Feature{ .name = "slowOddReg", .llvm_name = "slow-odd-reg", .description = "VLDM/VSTM starting with an odd register is slow", .dependencies = &[_]*const Feature { }, }; pub const feature_slowVdup32 = Feature{ .name = "slowVdup32", .llvm_name = "slow-vdup32", .description = "Has slow VDUP32 - prefer VMOV", .dependencies = &[_]*const Feature { }, }; pub const feature_slowVgetlni32 = Feature{ .name = "slowVgetlni32", .llvm_name = "slow-vgetlni32", .description = "Has slow VGETLNi32 - prefer VMOV", .dependencies = &[_]*const Feature { }, }; pub const feature_splatVfpNeon = Feature{ .name = "splatVfpNeon", .llvm_name = "splat-vfp-neon", .description = "Splat register from VFP to NEON", .dependencies = &[_]*const Feature { &feature_dontWidenVmovs, }, }; pub const feature_strictAlign = Feature{ .name = "strictAlign", .llvm_name = "strict-align", .description = "Disallow all unaligned memory access", .dependencies = &[_]*const Feature { }, }; pub const feature_thumb2 = Feature{ .name = "thumb2", .llvm_name = "thumb2", .description = "Enable Thumb2 instructions", .dependencies = &[_]*const Feature { }, }; pub const feature_trustzone = Feature{ .name = "trustzone", .llvm_name = "trustzone", .description = "Enable support for TrustZone security extensions", .dependencies = &[_]*const Feature { }, }; pub const feature_useAa = Feature{ .name = "useAa", .llvm_name = "use-aa", .description = "Use alias analysis during codegen", .dependencies = &[_]*const Feature { }, }; pub const feature_useMisched = Feature{ .name = "useMisched", .llvm_name = "use-misched", .description = "Use the MachineScheduler", .dependencies = &[_]*const Feature { }, }; pub const feature_wideStrideVfp = Feature{ .name = "wideStrideVfp", .llvm_name = "wide-stride-vfp", .description = "Use a wide stride when allocating VFP registers", .dependencies = &[_]*const Feature { }, }; pub const feature_v7clrex = Feature{ .name = "v7clrex", .llvm_name = "v7clrex", .description = "Has v7 clrex instruction", .dependencies = &[_]*const Feature { }, }; pub const feature_vfp2 = Feature{ .name = "vfp2", .llvm_name = "vfp2", .description = "Enable VFP2 instructions", .dependencies = &[_]*const Feature { &feature_d32, &feature_fpregs, }, }; pub const feature_vfp2d16 = Feature{ .name = "vfp2d16", .llvm_name = "vfp2d16", .description = "Enable VFP2 instructions with only 16 d-registers", .dependencies = &[_]*const Feature { &feature_fpregs, }, }; pub const feature_vfp2d16sp = Feature{ .name = "vfp2d16sp", .llvm_name = "vfp2d16sp", .description = "Enable VFP2 instructions with only 16 d-registers and no double precision", .dependencies = &[_]*const Feature { &feature_fpregs, }, }; pub const feature_vfp2sp = Feature{ .name = "vfp2sp", .llvm_name = "vfp2sp", .description = "Enable VFP2 instructions with no double precision", .dependencies = &[_]*const Feature { &feature_fpregs, &feature_d32, }, }; pub const feature_vfp3 = Feature{ .name = "vfp3", .llvm_name = "vfp3", .description = "Enable VFP3 instructions", .dependencies = &[_]*const Feature { &feature_fpregs, &feature_d32, }, }; pub const feature_vfp3d16 = Feature{ .name = "vfp3d16", .llvm_name = "vfp3d16", .description = "Enable VFP3 instructions with only 16 d-registers", .dependencies = &[_]*const Feature { &feature_fpregs, }, }; pub const feature_vfp3d16sp = Feature{ .name = "vfp3d16sp", .llvm_name = "vfp3d16sp", .description = "Enable VFP3 instructions with only 16 d-registers and no double precision", .dependencies = &[_]*const Feature { &feature_fpregs, }, }; pub const feature_vfp3sp = Feature{ .name = "vfp3sp", .llvm_name = "vfp3sp", .description = "Enable VFP3 instructions with no double precision", .dependencies = &[_]*const Feature { &feature_fpregs, &feature_d32, }, }; pub const feature_vfp4 = Feature{ .name = "vfp4", .llvm_name = "vfp4", .description = "Enable VFP4 instructions", .dependencies = &[_]*const Feature { &feature_fp16, &feature_d32, &feature_fpregs, }, }; pub const feature_vfp4d16 = Feature{ .name = "vfp4d16", .llvm_name = "vfp4d16", .description = "Enable VFP4 instructions with only 16 d-registers", .dependencies = &[_]*const Feature { &feature_fp16, &feature_fpregs, }, }; pub const feature_vfp4d16sp = Feature{ .name = "vfp4d16sp", .llvm_name = "vfp4d16sp", .description = "Enable VFP4 instructions with only 16 d-registers and no double precision", .dependencies = &[_]*const Feature { &feature_fp16, &feature_fpregs, }, }; pub const feature_vfp4sp = Feature{ .name = "vfp4sp", .llvm_name = "vfp4sp", .description = "Enable VFP4 instructions with no double precision", .dependencies = &[_]*const Feature { &feature_fp16, &feature_fpregs, &feature_d32, }, }; pub const feature_vmlxForwarding = Feature{ .name = "vmlxForwarding", .llvm_name = "vmlx-forwarding", .description = "Has multiplier accumulator forwarding", .dependencies = &[_]*const Feature { }, }; pub const feature_virtualization = Feature{ .name = "virtualization", .llvm_name = "virtualization", .description = "Supports Virtualization extension", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_hwdivArm, }, }; pub const feature_zcz = Feature{ .name = "zcz", .llvm_name = "zcz", .description = "Has zero-cycle zeroing instructions", .dependencies = &[_]*const Feature { }, }; pub const features = &[_]*const Feature { &feature_msecext8, &feature_aclass, &feature_aes, &feature_acquireRelease, &feature_avoidMovsShop, &feature_avoidPartialCpsr, &feature_crc, &feature_cheapPredicableCpsr, &feature_vldnAlign, &feature_crypto, &feature_d32, &feature_db, &feature_dfb, &feature_dsp, &feature_dontWidenVmovs, &feature_dotprod, &feature_executeOnly, &feature_expandFpMlx, &feature_fp16, &feature_fp16fml, &feature_fp64, &feature_fpao, &feature_fpArmv8, &feature_fpArmv8d16, &feature_fpArmv8d16sp, &feature_fpArmv8sp, &feature_fpregs, &feature_fpregs16, &feature_fpregs64, &feature_fullfp16, &feature_fuseAes, &feature_fuseLiterals, &feature_hwdivArm, &feature_hwdiv, &feature_noBranchPredictor, &feature_retAddrStack, &feature_slowfpvmlx, &feature_vmlxHazards, &feature_lob, &feature_longCalls, &feature_mclass, &feature_mp, &feature_muxedUnits, &feature_neon, &feature_neonfp, &feature_neonFpmovs, &feature_naclTrap, &feature_noarm, &feature_noMovt, &feature_noNegImmediates, &feature_disablePostraScheduler, &feature_nonpipelinedVfp, &feature_perfmon, &feature_bit32, &feature_preferIshst, &feature_loopAlign, &feature_preferVmovsr, &feature_profUnpr, &feature_ras, &feature_rclass, &feature_readTpHard, &feature_reserveR9, &feature_sb, &feature_sha2, &feature_slowFpBrcc, &feature_slowLoadDSubreg, &feature_slowOddReg, &feature_slowVdup32, &feature_slowVgetlni32, &feature_splatVfpNeon, &feature_strictAlign, &feature_thumb2, &feature_trustzone, &feature_useAa, &feature_useMisched, &feature_wideStrideVfp, &feature_v7clrex, &feature_vfp2, &feature_vfp2d16, &feature_vfp2d16sp, &feature_vfp2sp, &feature_vfp3, &feature_vfp3d16, &feature_vfp3d16sp, &feature_vfp3sp, &feature_vfp4, &feature_vfp4d16, &feature_vfp4d16sp, &feature_vfp4sp, &feature_vmlxForwarding, &feature_virtualization, &feature_zcz, }; pub const cpu_arm1020e = Cpu{ .name = "arm1020e", .llvm_name = "arm1020e", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm1020t = Cpu{ .name = "arm1020t", .llvm_name = "arm1020t", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm1022e = Cpu{ .name = "arm1022e", .llvm_name = "arm1022e", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm10e = Cpu{ .name = "arm10e", .llvm_name = "arm10e", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm10tdmi = Cpu{ .name = "arm10tdmi", .llvm_name = "arm10tdmi", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm1136jS = Cpu{ .name = "arm1136jS", .llvm_name = "arm1136j-s", .dependencies = &[_]*const Feature { &feature_dsp, }, }; pub const cpu_arm1136jfS = Cpu{ .name = "arm1136jfS", .llvm_name = "arm1136jf-s", .dependencies = &[_]*const Feature { &feature_dsp, &feature_slowfpvmlx, &feature_d32, &feature_fpregs, &feature_vfp2, }, }; pub const cpu_arm1156t2S = Cpu{ .name = "arm1156t2S", .llvm_name = "arm1156t2-s", .dependencies = &[_]*const Feature { &feature_dsp, &feature_thumb2, }, }; pub const cpu_arm1156t2fS = Cpu{ .name = "arm1156t2fS", .llvm_name = "arm1156t2f-s", .dependencies = &[_]*const Feature { &feature_dsp, &feature_thumb2, &feature_slowfpvmlx, &feature_d32, &feature_fpregs, &feature_vfp2, }, }; pub const cpu_arm1176jS = Cpu{ .name = "arm1176jS", .llvm_name = "arm1176j-s", .dependencies = &[_]*const Feature { &feature_trustzone, }, }; pub const cpu_arm1176jzS = Cpu{ .name = "arm1176jzS", .llvm_name = "arm1176jz-s", .dependencies = &[_]*const Feature { &feature_trustzone, }, }; pub const cpu_arm1176jzfS = Cpu{ .name = "arm1176jzfS", .llvm_name = "arm1176jzf-s", .dependencies = &[_]*const Feature { &feature_trustzone, &feature_slowfpvmlx, &feature_d32, &feature_fpregs, &feature_vfp2, }, }; pub const cpu_arm710t = Cpu{ .name = "arm710t", .llvm_name = "arm710t", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm720t = Cpu{ .name = "arm720t", .llvm_name = "arm720t", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm7tdmi = Cpu{ .name = "arm7tdmi", .llvm_name = "arm7tdmi", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm7tdmiS = Cpu{ .name = "arm7tdmiS", .llvm_name = "arm7tdmi-s", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm8 = Cpu{ .name = "arm8", .llvm_name = "arm8", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm810 = Cpu{ .name = "arm810", .llvm_name = "arm810", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm9 = Cpu{ .name = "arm9", .llvm_name = "arm9", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm920 = Cpu{ .name = "arm920", .llvm_name = "arm920", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm920t = Cpu{ .name = "arm920t", .llvm_name = "arm920t", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm922t = Cpu{ .name = "arm922t", .llvm_name = "arm922t", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm926ejS = Cpu{ .name = "arm926ejS", .llvm_name = "arm926ej-s", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm940t = Cpu{ .name = "arm940t", .llvm_name = "arm940t", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm946eS = Cpu{ .name = "arm946eS", .llvm_name = "arm946e-s", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm966eS = Cpu{ .name = "arm966eS", .llvm_name = "arm966e-s", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm968eS = Cpu{ .name = "arm968eS", .llvm_name = "arm968e-s", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm9e = Cpu{ .name = "arm9e", .llvm_name = "arm9e", .dependencies = &[_]*const Feature { }, }; pub const cpu_arm9tdmi = Cpu{ .name = "arm9tdmi", .llvm_name = "arm9tdmi", .dependencies = &[_]*const Feature { }, }; pub const cpu_cortexA12 = Cpu{ .name = "cortexA12", .llvm_name = "cortex-a12", .dependencies = &[_]*const Feature { &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_v7clrex, &feature_perfmon, &feature_avoidPartialCpsr, &feature_retAddrStack, &feature_mp, &feature_trustzone, &feature_fp16, &feature_vfp4, &feature_vmlxForwarding, &feature_hwdiv, &feature_hwdivArm, &feature_virtualization, }, }; pub const cpu_cortexA15 = Cpu{ .name = "cortexA15", .llvm_name = "cortex-a15", .dependencies = &[_]*const Feature { &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_v7clrex, &feature_perfmon, &feature_avoidPartialCpsr, &feature_vldnAlign, &feature_dontWidenVmovs, &feature_retAddrStack, &feature_mp, &feature_muxedUnits, &feature_splatVfpNeon, &feature_trustzone, &feature_fp16, &feature_vfp4, &feature_hwdiv, &feature_hwdivArm, &feature_virtualization, }, }; pub const cpu_cortexA17 = Cpu{ .name = "cortexA17", .llvm_name = "cortex-a17", .dependencies = &[_]*const Feature { &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_v7clrex, &feature_perfmon, &feature_avoidPartialCpsr, &feature_retAddrStack, &feature_mp, &feature_trustzone, &feature_fp16, &feature_vfp4, &feature_vmlxForwarding, &feature_hwdiv, &feature_hwdivArm, &feature_virtualization, }, }; pub const cpu_cortexA32 = Cpu{ .name = "cortexA32", .llvm_name = "cortex-a32", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_crypto, }, }; pub const cpu_cortexA35 = Cpu{ .name = "cortexA35", .llvm_name = "cortex-a35", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_crypto, }, }; pub const cpu_cortexA5 = Cpu{ .name = "cortexA5", .llvm_name = "cortex-a5", .dependencies = &[_]*const Feature { &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_v7clrex, &feature_perfmon, &feature_retAddrStack, &feature_slowfpvmlx, &feature_mp, &feature_slowFpBrcc, &feature_trustzone, &feature_fp16, &feature_vfp4, &feature_vmlxForwarding, }, }; pub const cpu_cortexA53 = Cpu{ .name = "cortexA53", .llvm_name = "cortex-a53", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_crypto, &feature_fpao, }, }; pub const cpu_cortexA55 = Cpu{ .name = "cortexA55", .llvm_name = "cortex-a55", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_ras, &feature_dotprod, }, }; pub const cpu_cortexA57 = Cpu{ .name = "cortexA57", .llvm_name = "cortex-a57", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_avoidPartialCpsr, &feature_cheapPredicableCpsr, &feature_crypto, &feature_fpao, }, }; pub const cpu_cortexA7 = Cpu{ .name = "cortexA7", .llvm_name = "cortex-a7", .dependencies = &[_]*const Feature { &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_v7clrex, &feature_perfmon, &feature_retAddrStack, &feature_slowfpvmlx, &feature_vmlxHazards, &feature_mp, &feature_slowFpBrcc, &feature_trustzone, &feature_fp16, &feature_vfp4, &feature_vmlxForwarding, &feature_hwdiv, &feature_hwdivArm, &feature_virtualization, }, }; pub const cpu_cortexA72 = Cpu{ .name = "cortexA72", .llvm_name = "cortex-a72", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_crypto, }, }; pub const cpu_cortexA73 = Cpu{ .name = "cortexA73", .llvm_name = "cortex-a73", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_crypto, }, }; pub const cpu_cortexA75 = Cpu{ .name = "cortexA75", .llvm_name = "cortex-a75", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_ras, &feature_dotprod, }, }; pub const cpu_cortexA76 = Cpu{ .name = "cortexA76", .llvm_name = "cortex-a76", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_ras, &feature_crypto, &feature_dotprod, &feature_fullfp16, }, }; pub const cpu_cortexA76ae = Cpu{ .name = "cortexA76ae", .llvm_name = "cortex-a76ae", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_ras, &feature_crypto, &feature_dotprod, &feature_fullfp16, }, }; pub const cpu_cortexA8 = Cpu{ .name = "cortexA8", .llvm_name = "cortex-a8", .dependencies = &[_]*const Feature { &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_v7clrex, &feature_perfmon, &feature_retAddrStack, &feature_slowfpvmlx, &feature_vmlxHazards, &feature_nonpipelinedVfp, &feature_slowFpBrcc, &feature_trustzone, &feature_vmlxForwarding, }, }; pub const cpu_cortexA9 = Cpu{ .name = "cortexA9", .llvm_name = "cortex-a9", .dependencies = &[_]*const Feature { &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_v7clrex, &feature_perfmon, &feature_avoidPartialCpsr, &feature_vldnAlign, &feature_expandFpMlx, &feature_fp16, &feature_retAddrStack, &feature_vmlxHazards, &feature_mp, &feature_muxedUnits, &feature_neonFpmovs, &feature_preferVmovsr, &feature_trustzone, &feature_vmlxForwarding, }, }; pub const cpu_cortexM0 = Cpu{ .name = "cortexM0", .llvm_name = "cortex-m0", .dependencies = &[_]*const Feature { &feature_mclass, &feature_db, &feature_noarm, &feature_strictAlign, }, }; pub const cpu_cortexM0plus = Cpu{ .name = "cortexM0plus", .llvm_name = "cortex-m0plus", .dependencies = &[_]*const Feature { &feature_mclass, &feature_db, &feature_noarm, &feature_strictAlign, }, }; pub const cpu_cortexM1 = Cpu{ .name = "cortexM1", .llvm_name = "cortex-m1", .dependencies = &[_]*const Feature { &feature_mclass, &feature_db, &feature_noarm, &feature_strictAlign, }, }; pub const cpu_cortexM23 = Cpu{ .name = "cortexM23", .llvm_name = "cortex-m23", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mclass, &feature_db, &feature_acquireRelease, &feature_v7clrex, &feature_noarm, &feature_msecext8, &feature_strictAlign, &feature_noMovt, }, }; pub const cpu_cortexM3 = Cpu{ .name = "cortexM3", .llvm_name = "cortex-m3", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_thumb2, &feature_mclass, &feature_db, &feature_v7clrex, &feature_perfmon, &feature_noarm, &feature_noBranchPredictor, &feature_loopAlign, &feature_useAa, &feature_useMisched, }, }; pub const cpu_cortexM33 = Cpu{ .name = "cortexM33", .llvm_name = "cortex-m33", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_thumb2, &feature_mclass, &feature_db, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_noarm, &feature_msecext8, &feature_dsp, &feature_fp16, &feature_fpregs, &feature_fpArmv8d16sp, &feature_noBranchPredictor, &feature_slowfpvmlx, &feature_loopAlign, &feature_useAa, &feature_useMisched, }, }; pub const cpu_cortexM35p = Cpu{ .name = "cortexM35p", .llvm_name = "cortex-m35p", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_thumb2, &feature_mclass, &feature_db, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_noarm, &feature_msecext8, &feature_dsp, &feature_fp16, &feature_fpregs, &feature_fpArmv8d16sp, &feature_noBranchPredictor, &feature_slowfpvmlx, &feature_loopAlign, &feature_useAa, &feature_useMisched, }, }; pub const cpu_cortexM4 = Cpu{ .name = "cortexM4", .llvm_name = "cortex-m4", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_dsp, &feature_thumb2, &feature_mclass, &feature_db, &feature_v7clrex, &feature_perfmon, &feature_noarm, &feature_noBranchPredictor, &feature_slowfpvmlx, &feature_loopAlign, &feature_useAa, &feature_useMisched, &feature_fp16, &feature_fpregs, &feature_vfp4d16sp, }, }; pub const cpu_cortexM7 = Cpu{ .name = "cortexM7", .llvm_name = "cortex-m7", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_dsp, &feature_thumb2, &feature_mclass, &feature_db, &feature_v7clrex, &feature_perfmon, &feature_noarm, &feature_fp16, &feature_fpregs, &feature_fpArmv8d16, }, }; pub const cpu_cortexR4 = Cpu{ .name = "cortexR4", .llvm_name = "cortex-r4", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_dsp, &feature_rclass, &feature_thumb2, &feature_db, &feature_v7clrex, &feature_perfmon, &feature_avoidPartialCpsr, &feature_retAddrStack, }, }; pub const cpu_cortexR4f = Cpu{ .name = "cortexR4f", .llvm_name = "cortex-r4f", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_dsp, &feature_rclass, &feature_thumb2, &feature_db, &feature_v7clrex, &feature_perfmon, &feature_avoidPartialCpsr, &feature_retAddrStack, &feature_slowfpvmlx, &feature_slowFpBrcc, &feature_fpregs, &feature_vfp3d16, }, }; pub const cpu_cortexR5 = Cpu{ .name = "cortexR5", .llvm_name = "cortex-r5", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_dsp, &feature_rclass, &feature_thumb2, &feature_db, &feature_v7clrex, &feature_perfmon, &feature_avoidPartialCpsr, &feature_hwdivArm, &feature_retAddrStack, &feature_slowfpvmlx, &feature_slowFpBrcc, &feature_fpregs, &feature_vfp3d16, }, }; pub const cpu_cortexR52 = Cpu{ .name = "cortexR52", .llvm_name = "cortex-r52", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_dfb, &feature_mp, &feature_d32, &feature_dsp, &feature_rclass, &feature_thumb2, &feature_db, &feature_fpregs, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_fpao, &feature_useAa, &feature_useMisched, }, }; pub const cpu_cortexR7 = Cpu{ .name = "cortexR7", .llvm_name = "cortex-r7", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_dsp, &feature_rclass, &feature_thumb2, &feature_db, &feature_v7clrex, &feature_perfmon, &feature_avoidPartialCpsr, &feature_fp16, &feature_hwdivArm, &feature_retAddrStack, &feature_slowfpvmlx, &feature_mp, &feature_slowFpBrcc, &feature_fpregs, &feature_vfp3d16, }, }; pub const cpu_cortexR8 = Cpu{ .name = "cortexR8", .llvm_name = "cortex-r8", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_dsp, &feature_rclass, &feature_thumb2, &feature_db, &feature_v7clrex, &feature_perfmon, &feature_avoidPartialCpsr, &feature_fp16, &feature_hwdivArm, &feature_retAddrStack, &feature_slowfpvmlx, &feature_mp, &feature_slowFpBrcc, &feature_fpregs, &feature_vfp3d16, }, }; pub const cpu_cyclone = Cpu{ .name = "cyclone", .llvm_name = "cyclone", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_avoidMovsShop, &feature_avoidPartialCpsr, &feature_crypto, &feature_retAddrStack, &feature_slowfpvmlx, &feature_neonfp, &feature_disablePostraScheduler, &feature_useMisched, &feature_vfp4, &feature_zcz, }, }; pub const cpu_ep9312 = Cpu{ .name = "ep9312", .llvm_name = "ep9312", .dependencies = &[_]*const Feature { }, }; pub const cpu_exynosM1 = Cpu{ .name = "exynosM1", .llvm_name = "exynos-m1", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_fuseLiterals, &feature_useAa, &feature_wideStrideVfp, &feature_slowVgetlni32, &feature_slowVdup32, &feature_profUnpr, &feature_slowFpBrcc, &feature_retAddrStack, &feature_zcz, &feature_slowfpvmlx, &feature_expandFpMlx, &feature_fuseAes, &feature_dontWidenVmovs, }, }; pub const cpu_exynosM2 = Cpu{ .name = "exynosM2", .llvm_name = "exynos-m2", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_fuseLiterals, &feature_useAa, &feature_wideStrideVfp, &feature_slowVgetlni32, &feature_slowVdup32, &feature_profUnpr, &feature_slowFpBrcc, &feature_retAddrStack, &feature_zcz, &feature_slowfpvmlx, &feature_expandFpMlx, &feature_fuseAes, &feature_dontWidenVmovs, }, }; pub const cpu_exynosM3 = Cpu{ .name = "exynosM3", .llvm_name = "exynos-m3", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_fuseLiterals, &feature_useAa, &feature_wideStrideVfp, &feature_slowVgetlni32, &feature_slowVdup32, &feature_profUnpr, &feature_slowFpBrcc, &feature_retAddrStack, &feature_zcz, &feature_slowfpvmlx, &feature_expandFpMlx, &feature_fuseAes, &feature_dontWidenVmovs, }, }; pub const cpu_exynosM4 = Cpu{ .name = "exynosM4", .llvm_name = "exynos-m4", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_ras, &feature_dotprod, &feature_fullfp16, &feature_fuseLiterals, &feature_useAa, &feature_wideStrideVfp, &feature_slowVgetlni32, &feature_slowVdup32, &feature_profUnpr, &feature_slowFpBrcc, &feature_retAddrStack, &feature_zcz, &feature_slowfpvmlx, &feature_expandFpMlx, &feature_fuseAes, &feature_dontWidenVmovs, }, }; pub const cpu_exynosM5 = Cpu{ .name = "exynosM5", .llvm_name = "exynos-m5", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_ras, &feature_dotprod, &feature_fullfp16, &feature_fuseLiterals, &feature_useAa, &feature_wideStrideVfp, &feature_slowVgetlni32, &feature_slowVdup32, &feature_profUnpr, &feature_slowFpBrcc, &feature_retAddrStack, &feature_zcz, &feature_slowfpvmlx, &feature_expandFpMlx, &feature_fuseAes, &feature_dontWidenVmovs, }, }; pub const cpu_generic = Cpu{ .name = "generic", .llvm_name = "generic", .dependencies = &[_]*const Feature { }, }; pub const cpu_iwmmxt = Cpu{ .name = "iwmmxt", .llvm_name = "iwmmxt", .dependencies = &[_]*const Feature { }, }; pub const cpu_krait = Cpu{ .name = "krait", .llvm_name = "krait", .dependencies = &[_]*const Feature { &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_v7clrex, &feature_perfmon, &feature_avoidPartialCpsr, &feature_vldnAlign, &feature_fp16, &feature_hwdivArm, &feature_hwdiv, &feature_retAddrStack, &feature_muxedUnits, &feature_vfp4, &feature_vmlxForwarding, }, }; pub const cpu_kryo = Cpu{ .name = "kryo", .llvm_name = "kryo", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_mp, &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_trustzone, &feature_crc, &feature_fp16, &feature_acquireRelease, &feature_v7clrex, &feature_perfmon, &feature_hwdivArm, &feature_crypto, }, }; pub const cpu_mpcore = Cpu{ .name = "mpcore", .llvm_name = "mpcore", .dependencies = &[_]*const Feature { &feature_slowfpvmlx, &feature_d32, &feature_fpregs, &feature_vfp2, }, }; pub const cpu_mpcorenovfp = Cpu{ .name = "mpcorenovfp", .llvm_name = "mpcorenovfp", .dependencies = &[_]*const Feature { }, }; pub const cpu_sc000 = Cpu{ .name = "sc000", .llvm_name = "sc000", .dependencies = &[_]*const Feature { &feature_mclass, &feature_db, &feature_noarm, &feature_strictAlign, }, }; pub const cpu_sc300 = Cpu{ .name = "sc300", .llvm_name = "sc300", .dependencies = &[_]*const Feature { &feature_hwdiv, &feature_thumb2, &feature_mclass, &feature_db, &feature_v7clrex, &feature_perfmon, &feature_noarm, &feature_noBranchPredictor, &feature_useAa, &feature_useMisched, }, }; pub const cpu_strongarm = Cpu{ .name = "strongarm", .llvm_name = "strongarm", .dependencies = &[_]*const Feature { }, }; pub const cpu_strongarm110 = Cpu{ .name = "strongarm110", .llvm_name = "strongarm110", .dependencies = &[_]*const Feature { }, }; pub const cpu_strongarm1100 = Cpu{ .name = "strongarm1100", .llvm_name = "strongarm1100", .dependencies = &[_]*const Feature { }, }; pub const cpu_strongarm1110 = Cpu{ .name = "strongarm1110", .llvm_name = "strongarm1110", .dependencies = &[_]*const Feature { }, }; pub const cpu_swift = Cpu{ .name = "swift", .llvm_name = "swift", .dependencies = &[_]*const Feature { &feature_d32, &feature_dsp, &feature_thumb2, &feature_db, &feature_aclass, &feature_fpregs, &feature_v7clrex, &feature_perfmon, &feature_avoidMovsShop, &feature_avoidPartialCpsr, &feature_hwdivArm, &feature_hwdiv, &feature_retAddrStack, &feature_slowfpvmlx, &feature_vmlxHazards, &feature_mp, &feature_neonfp, &feature_disablePostraScheduler, &feature_preferIshst, &feature_profUnpr, &feature_slowLoadDSubreg, &feature_slowOddReg, &feature_slowVdup32, &feature_slowVgetlni32, &feature_useMisched, &feature_wideStrideVfp, &feature_fp16, &feature_vfp4, }, }; pub const cpu_xscale = Cpu{ .name = "xscale", .llvm_name = "xscale", .dependencies = &[_]*const Feature { }, }; pub const cpus = &[_]*const Cpu { &cpu_arm1020e, &cpu_arm1020t, &cpu_arm1022e, &cpu_arm10e, &cpu_arm10tdmi, &cpu_arm1136jS, &cpu_arm1136jfS, &cpu_arm1156t2S, &cpu_arm1156t2fS, &cpu_arm1176jS, &cpu_arm1176jzS, &cpu_arm1176jzfS, &cpu_arm710t, &cpu_arm720t, &cpu_arm7tdmi, &cpu_arm7tdmiS, &cpu_arm8, &cpu_arm810, &cpu_arm9, &cpu_arm920, &cpu_arm920t, &cpu_arm922t, &cpu_arm926ejS, &cpu_arm940t, &cpu_arm946eS, &cpu_arm966eS, &cpu_arm968eS, &cpu_arm9e, &cpu_arm9tdmi, &cpu_cortexA12, &cpu_cortexA15, &cpu_cortexA17, &cpu_cortexA32, &cpu_cortexA35, &cpu_cortexA5, &cpu_cortexA53, &cpu_cortexA55, &cpu_cortexA57, &cpu_cortexA7, &cpu_cortexA72, &cpu_cortexA73, &cpu_cortexA75, &cpu_cortexA76, &cpu_cortexA76ae, &cpu_cortexA8, &cpu_cortexA9, &cpu_cortexM0, &cpu_cortexM0plus, &cpu_cortexM1, &cpu_cortexM23, &cpu_cortexM3, &cpu_cortexM33, &cpu_cortexM35p, &cpu_cortexM4, &cpu_cortexM7, &cpu_cortexR4, &cpu_cortexR4f, &cpu_cortexR5, &cpu_cortexR52, &cpu_cortexR7, &cpu_cortexR8, &cpu_cyclone, &cpu_ep9312, &cpu_exynosM1, &cpu_exynosM2, &cpu_exynosM3, &cpu_exynosM4, &cpu_exynosM5, &cpu_generic, &cpu_iwmmxt, &cpu_krait, &cpu_kryo, &cpu_mpcore, &cpu_mpcorenovfp, &cpu_sc000, &cpu_sc300, &cpu_strongarm, &cpu_strongarm110, &cpu_strongarm1100, &cpu_strongarm1110, &cpu_swift, &cpu_xscale, };