mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-09 15:19:07 +00:00
1115 lines
25 KiB
Zig
1115 lines
25 KiB
Zig
const Feature = @import("std").target.Feature;
|
|
const Cpu = @import("std").target.Cpu;
|
|
|
|
pub const feature_bit64 = Feature{
|
|
.name = "bit64",
|
|
.llvm_name = "64bit",
|
|
.description = "Enable 64-bit instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_bitregs64 = Feature{
|
|
.name = "bitregs64",
|
|
.llvm_name = "64bitregs",
|
|
.description = "Enable 64-bit registers usage for ppc32 [beta]",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_altivec = Feature{
|
|
.name = "altivec",
|
|
.llvm_name = "altivec",
|
|
.description = "Enable Altivec instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_bpermd = Feature{
|
|
.name = "bpermd",
|
|
.llvm_name = "bpermd",
|
|
.description = "Enable the bpermd instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_booke = Feature{
|
|
.name = "booke",
|
|
.llvm_name = "booke",
|
|
.description = "Enable Book E instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_icbt,
|
|
},
|
|
};
|
|
|
|
pub const feature_cmpb = Feature{
|
|
.name = "cmpb",
|
|
.llvm_name = "cmpb",
|
|
.description = "Enable the cmpb instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_crbits = Feature{
|
|
.name = "crbits",
|
|
.llvm_name = "crbits",
|
|
.description = "Use condition-register bits individually",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_directMove = Feature{
|
|
.name = "directMove",
|
|
.llvm_name = "direct-move",
|
|
.description = "Enable Power8 direct move instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_e500 = Feature{
|
|
.name = "e500",
|
|
.llvm_name = "e500",
|
|
.description = "Enable E500/E500mc instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_extdiv = Feature{
|
|
.name = "extdiv",
|
|
.llvm_name = "extdiv",
|
|
.description = "Enable extended divide instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_fcpsgn = Feature{
|
|
.name = "fcpsgn",
|
|
.llvm_name = "fcpsgn",
|
|
.description = "Enable the fcpsgn instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_fpcvt = Feature{
|
|
.name = "fpcvt",
|
|
.llvm_name = "fpcvt",
|
|
.description = "Enable fc[ft]* (unsigned and single-precision) and lfiwzx instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_fprnd = Feature{
|
|
.name = "fprnd",
|
|
.llvm_name = "fprnd",
|
|
.description = "Enable the fri[mnpz] instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_fpu = Feature{
|
|
.name = "fpu",
|
|
.llvm_name = "fpu",
|
|
.description = "Enable classic FPU instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_fre = Feature{
|
|
.name = "fre",
|
|
.llvm_name = "fre",
|
|
.description = "Enable the fre instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_fres = Feature{
|
|
.name = "fres",
|
|
.llvm_name = "fres",
|
|
.description = "Enable the fres instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_frsqrte = Feature{
|
|
.name = "frsqrte",
|
|
.llvm_name = "frsqrte",
|
|
.description = "Enable the frsqrte instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_frsqrtes = Feature{
|
|
.name = "frsqrtes",
|
|
.llvm_name = "frsqrtes",
|
|
.description = "Enable the frsqrtes instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_fsqrt = Feature{
|
|
.name = "fsqrt",
|
|
.llvm_name = "fsqrt",
|
|
.description = "Enable the fsqrt instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_float128 = Feature{
|
|
.name = "float128",
|
|
.llvm_name = "float128",
|
|
.description = "Enable the __float128 data type for IEEE-754R Binary128.",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_htm = Feature{
|
|
.name = "htm",
|
|
.llvm_name = "htm",
|
|
.description = "Enable Hardware Transactional Memory instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_hardFloat = Feature{
|
|
.name = "hardFloat",
|
|
.llvm_name = "hard-float",
|
|
.description = "Enable floating-point instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_icbt = Feature{
|
|
.name = "icbt",
|
|
.llvm_name = "icbt",
|
|
.description = "Enable icbt instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_isaV30Instructions = Feature{
|
|
.name = "isaV30Instructions",
|
|
.llvm_name = "isa-v30-instructions",
|
|
.description = "Enable instructions added in ISA 3.0.",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_isel = Feature{
|
|
.name = "isel",
|
|
.llvm_name = "isel",
|
|
.description = "Enable the isel instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_invariantFunctionDescriptors = Feature{
|
|
.name = "invariantFunctionDescriptors",
|
|
.llvm_name = "invariant-function-descriptors",
|
|
.description = "Assume function descriptors are invariant",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_ldbrx = Feature{
|
|
.name = "ldbrx",
|
|
.llvm_name = "ldbrx",
|
|
.description = "Enable the ldbrx instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_lfiwax = Feature{
|
|
.name = "lfiwax",
|
|
.llvm_name = "lfiwax",
|
|
.description = "Enable the lfiwax instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_longcall = Feature{
|
|
.name = "longcall",
|
|
.llvm_name = "longcall",
|
|
.description = "Always use indirect calls",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_mfocrf = Feature{
|
|
.name = "mfocrf",
|
|
.llvm_name = "mfocrf",
|
|
.description = "Enable the MFOCRF instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_msync = Feature{
|
|
.name = "msync",
|
|
.llvm_name = "msync",
|
|
.description = "Has only the msync instruction instead of sync",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_icbt,
|
|
},
|
|
};
|
|
|
|
pub const feature_power8Altivec = Feature{
|
|
.name = "power8Altivec",
|
|
.llvm_name = "power8-altivec",
|
|
.description = "Enable POWER8 Altivec instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_crypto = Feature{
|
|
.name = "crypto",
|
|
.llvm_name = "crypto",
|
|
.description = "Enable POWER8 Crypto instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_power8Vector = Feature{
|
|
.name = "power8Vector",
|
|
.llvm_name = "power8-vector",
|
|
.description = "Enable POWER8 vector instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_power9Altivec = Feature{
|
|
.name = "power9Altivec",
|
|
.llvm_name = "power9-altivec",
|
|
.description = "Enable POWER9 Altivec instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_isaV30Instructions,
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_power9Vector = Feature{
|
|
.name = "power9Vector",
|
|
.llvm_name = "power9-vector",
|
|
.description = "Enable POWER9 vector instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_isaV30Instructions,
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_popcntd = Feature{
|
|
.name = "popcntd",
|
|
.llvm_name = "popcntd",
|
|
.description = "Enable the popcnt[dw] instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_ppc4xx = Feature{
|
|
.name = "ppc4xx",
|
|
.llvm_name = "ppc4xx",
|
|
.description = "Enable PPC 4xx instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_ppc6xx = Feature{
|
|
.name = "ppc6xx",
|
|
.llvm_name = "ppc6xx",
|
|
.description = "Enable PPC 6xx instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_ppcPostraSched = Feature{
|
|
.name = "ppcPostraSched",
|
|
.llvm_name = "ppc-postra-sched",
|
|
.description = "Use PowerPC post-RA scheduling strategy",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_ppcPreraSched = Feature{
|
|
.name = "ppcPreraSched",
|
|
.llvm_name = "ppc-prera-sched",
|
|
.description = "Use PowerPC pre-RA scheduling strategy",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_partwordAtomics = Feature{
|
|
.name = "partwordAtomics",
|
|
.llvm_name = "partword-atomics",
|
|
.description = "Enable l[bh]arx and st[bh]cx.",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_qpx = Feature{
|
|
.name = "qpx",
|
|
.llvm_name = "qpx",
|
|
.description = "Enable QPX instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_recipprec = Feature{
|
|
.name = "recipprec",
|
|
.llvm_name = "recipprec",
|
|
.description = "Assume higher precision reciprocal estimates",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_spe = Feature{
|
|
.name = "spe",
|
|
.llvm_name = "spe",
|
|
.description = "Enable SPE instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_stfiwx = Feature{
|
|
.name = "stfiwx",
|
|
.llvm_name = "stfiwx",
|
|
.description = "Enable the stfiwx instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_securePlt = Feature{
|
|
.name = "securePlt",
|
|
.llvm_name = "secure-plt",
|
|
.description = "Enable secure plt mode",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_slowPopcntd = Feature{
|
|
.name = "slowPopcntd",
|
|
.llvm_name = "slow-popcntd",
|
|
.description = "Has slow popcnt[dw] instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_twoConstNr = Feature{
|
|
.name = "twoConstNr",
|
|
.llvm_name = "two-const-nr",
|
|
.description = "Requires two constant Newton-Raphson computation",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_vsx = Feature{
|
|
.name = "vsx",
|
|
.llvm_name = "vsx",
|
|
.description = "Enable VSX instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const feature_vectorsUseTwoUnits = Feature{
|
|
.name = "vectorsUseTwoUnits",
|
|
.llvm_name = "vectors-use-two-units",
|
|
.description = "Vectors use two units",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const features = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_bitregs64,
|
|
&feature_altivec,
|
|
&feature_bpermd,
|
|
&feature_booke,
|
|
&feature_cmpb,
|
|
&feature_crbits,
|
|
&feature_directMove,
|
|
&feature_e500,
|
|
&feature_extdiv,
|
|
&feature_fcpsgn,
|
|
&feature_fpcvt,
|
|
&feature_fprnd,
|
|
&feature_fpu,
|
|
&feature_fre,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_frsqrtes,
|
|
&feature_fsqrt,
|
|
&feature_float128,
|
|
&feature_htm,
|
|
&feature_hardFloat,
|
|
&feature_icbt,
|
|
&feature_isaV30Instructions,
|
|
&feature_isel,
|
|
&feature_invariantFunctionDescriptors,
|
|
&feature_ldbrx,
|
|
&feature_lfiwax,
|
|
&feature_longcall,
|
|
&feature_mfocrf,
|
|
&feature_msync,
|
|
&feature_power8Altivec,
|
|
&feature_crypto,
|
|
&feature_power8Vector,
|
|
&feature_power9Altivec,
|
|
&feature_power9Vector,
|
|
&feature_popcntd,
|
|
&feature_ppc4xx,
|
|
&feature_ppc6xx,
|
|
&feature_ppcPostraSched,
|
|
&feature_ppcPreraSched,
|
|
&feature_partwordAtomics,
|
|
&feature_qpx,
|
|
&feature_recipprec,
|
|
&feature_spe,
|
|
&feature_stfiwx,
|
|
&feature_securePlt,
|
|
&feature_slowPopcntd,
|
|
&feature_twoConstNr,
|
|
&feature_vsx,
|
|
&feature_vectorsUseTwoUnits,
|
|
};
|
|
|
|
pub const cpu_440 = Cpu{
|
|
.name = "440",
|
|
.llvm_name = "440",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_icbt,
|
|
&feature_booke,
|
|
&feature_hardFloat,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_isel,
|
|
&feature_msync,
|
|
},
|
|
};
|
|
|
|
pub const cpu_450 = Cpu{
|
|
.name = "450",
|
|
.llvm_name = "450",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_icbt,
|
|
&feature_booke,
|
|
&feature_hardFloat,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_isel,
|
|
&feature_msync,
|
|
},
|
|
};
|
|
|
|
pub const cpu_601 = Cpu{
|
|
.name = "601",
|
|
.llvm_name = "601",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
&feature_fpu,
|
|
},
|
|
};
|
|
|
|
pub const cpu_602 = Cpu{
|
|
.name = "602",
|
|
.llvm_name = "602",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
&feature_fpu,
|
|
},
|
|
};
|
|
|
|
pub const cpu_603 = Cpu{
|
|
.name = "603",
|
|
.llvm_name = "603",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
},
|
|
};
|
|
|
|
pub const cpu_e603 = Cpu{
|
|
.name = "e603",
|
|
.llvm_name = "603e",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
},
|
|
};
|
|
|
|
pub const cpu_ev603 = Cpu{
|
|
.name = "ev603",
|
|
.llvm_name = "603ev",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
},
|
|
};
|
|
|
|
pub const cpu_604 = Cpu{
|
|
.name = "604",
|
|
.llvm_name = "604",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
},
|
|
};
|
|
|
|
pub const cpu_e604 = Cpu{
|
|
.name = "e604",
|
|
.llvm_name = "604e",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
},
|
|
};
|
|
|
|
pub const cpu_620 = Cpu{
|
|
.name = "620",
|
|
.llvm_name = "620",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
},
|
|
};
|
|
|
|
pub const cpu_7400 = Cpu{
|
|
.name = "7400",
|
|
.llvm_name = "7400",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
},
|
|
};
|
|
|
|
pub const cpu_7450 = Cpu{
|
|
.name = "7450",
|
|
.llvm_name = "7450",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
},
|
|
};
|
|
|
|
pub const cpu_750 = Cpu{
|
|
.name = "750",
|
|
.llvm_name = "750",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
},
|
|
};
|
|
|
|
pub const cpu_970 = Cpu{
|
|
.name = "970",
|
|
.llvm_name = "970",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_fsqrt,
|
|
&feature_mfocrf,
|
|
&feature_stfiwx,
|
|
},
|
|
};
|
|
|
|
pub const cpu_a2 = Cpu{
|
|
.name = "a2",
|
|
.llvm_name = "a2",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_icbt,
|
|
&feature_booke,
|
|
&feature_cmpb,
|
|
&feature_hardFloat,
|
|
&feature_fcpsgn,
|
|
&feature_fpcvt,
|
|
&feature_fprnd,
|
|
&feature_fre,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_frsqrtes,
|
|
&feature_fsqrt,
|
|
&feature_isel,
|
|
&feature_ldbrx,
|
|
&feature_lfiwax,
|
|
&feature_mfocrf,
|
|
&feature_recipprec,
|
|
&feature_stfiwx,
|
|
&feature_slowPopcntd,
|
|
},
|
|
};
|
|
|
|
pub const cpu_a2q = Cpu{
|
|
.name = "a2q",
|
|
.llvm_name = "a2q",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_icbt,
|
|
&feature_booke,
|
|
&feature_cmpb,
|
|
&feature_hardFloat,
|
|
&feature_fcpsgn,
|
|
&feature_fpcvt,
|
|
&feature_fprnd,
|
|
&feature_fre,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_frsqrtes,
|
|
&feature_fsqrt,
|
|
&feature_isel,
|
|
&feature_ldbrx,
|
|
&feature_lfiwax,
|
|
&feature_mfocrf,
|
|
&feature_qpx,
|
|
&feature_recipprec,
|
|
&feature_stfiwx,
|
|
&feature_slowPopcntd,
|
|
},
|
|
};
|
|
|
|
pub const cpu_e500 = Cpu{
|
|
.name = "e500",
|
|
.llvm_name = "e500",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_icbt,
|
|
&feature_booke,
|
|
&feature_isel,
|
|
},
|
|
};
|
|
|
|
pub const cpu_e500mc = Cpu{
|
|
.name = "e500mc",
|
|
.llvm_name = "e500mc",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_icbt,
|
|
&feature_booke,
|
|
&feature_isel,
|
|
&feature_hardFloat,
|
|
&feature_stfiwx,
|
|
},
|
|
};
|
|
|
|
pub const cpu_e5500 = Cpu{
|
|
.name = "e5500",
|
|
.llvm_name = "e5500",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_icbt,
|
|
&feature_booke,
|
|
&feature_isel,
|
|
&feature_mfocrf,
|
|
&feature_hardFloat,
|
|
&feature_stfiwx,
|
|
},
|
|
};
|
|
|
|
pub const cpu_g3 = Cpu{
|
|
.name = "g3",
|
|
.llvm_name = "g3",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
},
|
|
};
|
|
|
|
pub const cpu_g4 = Cpu{
|
|
.name = "g4",
|
|
.llvm_name = "g4",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
},
|
|
};
|
|
|
|
pub const cpu_g4Plus = Cpu{
|
|
.name = "g4Plus",
|
|
.llvm_name = "g4+",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
},
|
|
};
|
|
|
|
pub const cpu_g5 = Cpu{
|
|
.name = "g5",
|
|
.llvm_name = "g5",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_fsqrt,
|
|
&feature_mfocrf,
|
|
&feature_stfiwx,
|
|
},
|
|
};
|
|
|
|
pub const cpu_generic = Cpu{
|
|
.name = "generic",
|
|
.llvm_name = "generic",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const cpu_ppc = Cpu{
|
|
.name = "ppc",
|
|
.llvm_name = "ppc",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const cpu_ppc32 = Cpu{
|
|
.name = "ppc32",
|
|
.llvm_name = "ppc32",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_hardFloat,
|
|
},
|
|
};
|
|
|
|
pub const cpu_ppc64 = Cpu{
|
|
.name = "ppc64",
|
|
.llvm_name = "ppc64",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_fsqrt,
|
|
&feature_mfocrf,
|
|
&feature_stfiwx,
|
|
},
|
|
};
|
|
|
|
pub const cpu_ppc64le = Cpu{
|
|
.name = "ppc64le",
|
|
.llvm_name = "ppc64le",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_bpermd,
|
|
&feature_cmpb,
|
|
&feature_directMove,
|
|
&feature_extdiv,
|
|
&feature_fcpsgn,
|
|
&feature_fpcvt,
|
|
&feature_fprnd,
|
|
&feature_fre,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_frsqrtes,
|
|
&feature_fsqrt,
|
|
&feature_htm,
|
|
&feature_icbt,
|
|
&feature_isel,
|
|
&feature_ldbrx,
|
|
&feature_lfiwax,
|
|
&feature_mfocrf,
|
|
&feature_power8Altivec,
|
|
&feature_crypto,
|
|
&feature_power8Vector,
|
|
&feature_popcntd,
|
|
&feature_partwordAtomics,
|
|
&feature_recipprec,
|
|
&feature_stfiwx,
|
|
&feature_twoConstNr,
|
|
&feature_vsx,
|
|
},
|
|
};
|
|
|
|
pub const cpu_pwr3 = Cpu{
|
|
.name = "pwr3",
|
|
.llvm_name = "pwr3",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_mfocrf,
|
|
&feature_stfiwx,
|
|
},
|
|
};
|
|
|
|
pub const cpu_pwr4 = Cpu{
|
|
.name = "pwr4",
|
|
.llvm_name = "pwr4",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_fsqrt,
|
|
&feature_mfocrf,
|
|
&feature_stfiwx,
|
|
},
|
|
};
|
|
|
|
pub const cpu_pwr5 = Cpu{
|
|
.name = "pwr5",
|
|
.llvm_name = "pwr5",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_fre,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_frsqrtes,
|
|
&feature_fsqrt,
|
|
&feature_mfocrf,
|
|
&feature_stfiwx,
|
|
},
|
|
};
|
|
|
|
pub const cpu_pwr5x = Cpu{
|
|
.name = "pwr5x",
|
|
.llvm_name = "pwr5x",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_fprnd,
|
|
&feature_fre,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_frsqrtes,
|
|
&feature_fsqrt,
|
|
&feature_mfocrf,
|
|
&feature_stfiwx,
|
|
},
|
|
};
|
|
|
|
pub const cpu_pwr6 = Cpu{
|
|
.name = "pwr6",
|
|
.llvm_name = "pwr6",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_cmpb,
|
|
&feature_fcpsgn,
|
|
&feature_fprnd,
|
|
&feature_fre,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_frsqrtes,
|
|
&feature_fsqrt,
|
|
&feature_lfiwax,
|
|
&feature_mfocrf,
|
|
&feature_recipprec,
|
|
&feature_stfiwx,
|
|
},
|
|
};
|
|
|
|
pub const cpu_pwr6x = Cpu{
|
|
.name = "pwr6x",
|
|
.llvm_name = "pwr6x",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_cmpb,
|
|
&feature_fcpsgn,
|
|
&feature_fprnd,
|
|
&feature_fre,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_frsqrtes,
|
|
&feature_fsqrt,
|
|
&feature_lfiwax,
|
|
&feature_mfocrf,
|
|
&feature_recipprec,
|
|
&feature_stfiwx,
|
|
},
|
|
};
|
|
|
|
pub const cpu_pwr7 = Cpu{
|
|
.name = "pwr7",
|
|
.llvm_name = "pwr7",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_bpermd,
|
|
&feature_cmpb,
|
|
&feature_extdiv,
|
|
&feature_fcpsgn,
|
|
&feature_fpcvt,
|
|
&feature_fprnd,
|
|
&feature_fre,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_frsqrtes,
|
|
&feature_fsqrt,
|
|
&feature_isel,
|
|
&feature_ldbrx,
|
|
&feature_lfiwax,
|
|
&feature_mfocrf,
|
|
&feature_popcntd,
|
|
&feature_recipprec,
|
|
&feature_stfiwx,
|
|
&feature_twoConstNr,
|
|
&feature_vsx,
|
|
},
|
|
};
|
|
|
|
pub const cpu_pwr8 = Cpu{
|
|
.name = "pwr8",
|
|
.llvm_name = "pwr8",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_bpermd,
|
|
&feature_cmpb,
|
|
&feature_directMove,
|
|
&feature_extdiv,
|
|
&feature_fcpsgn,
|
|
&feature_fpcvt,
|
|
&feature_fprnd,
|
|
&feature_fre,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_frsqrtes,
|
|
&feature_fsqrt,
|
|
&feature_htm,
|
|
&feature_icbt,
|
|
&feature_isel,
|
|
&feature_ldbrx,
|
|
&feature_lfiwax,
|
|
&feature_mfocrf,
|
|
&feature_power8Altivec,
|
|
&feature_crypto,
|
|
&feature_power8Vector,
|
|
&feature_popcntd,
|
|
&feature_partwordAtomics,
|
|
&feature_recipprec,
|
|
&feature_stfiwx,
|
|
&feature_twoConstNr,
|
|
&feature_vsx,
|
|
},
|
|
};
|
|
|
|
pub const cpu_pwr9 = Cpu{
|
|
.name = "pwr9",
|
|
.llvm_name = "pwr9",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_bit64,
|
|
&feature_hardFloat,
|
|
&feature_altivec,
|
|
&feature_bpermd,
|
|
&feature_cmpb,
|
|
&feature_directMove,
|
|
&feature_extdiv,
|
|
&feature_fcpsgn,
|
|
&feature_fpcvt,
|
|
&feature_fprnd,
|
|
&feature_fre,
|
|
&feature_fres,
|
|
&feature_frsqrte,
|
|
&feature_frsqrtes,
|
|
&feature_fsqrt,
|
|
&feature_htm,
|
|
&feature_icbt,
|
|
&feature_isaV30Instructions,
|
|
&feature_isel,
|
|
&feature_ldbrx,
|
|
&feature_lfiwax,
|
|
&feature_mfocrf,
|
|
&feature_power8Altivec,
|
|
&feature_crypto,
|
|
&feature_power8Vector,
|
|
&feature_power9Altivec,
|
|
&feature_power9Vector,
|
|
&feature_popcntd,
|
|
&feature_ppcPostraSched,
|
|
&feature_ppcPreraSched,
|
|
&feature_partwordAtomics,
|
|
&feature_recipprec,
|
|
&feature_stfiwx,
|
|
&feature_twoConstNr,
|
|
&feature_vsx,
|
|
&feature_vectorsUseTwoUnits,
|
|
},
|
|
};
|
|
|
|
pub const cpus = &[_]*const Cpu {
|
|
&cpu_440,
|
|
&cpu_450,
|
|
&cpu_601,
|
|
&cpu_602,
|
|
&cpu_603,
|
|
&cpu_e603,
|
|
&cpu_ev603,
|
|
&cpu_604,
|
|
&cpu_e604,
|
|
&cpu_620,
|
|
&cpu_7400,
|
|
&cpu_7450,
|
|
&cpu_750,
|
|
&cpu_970,
|
|
&cpu_a2,
|
|
&cpu_a2q,
|
|
&cpu_e500,
|
|
&cpu_e500mc,
|
|
&cpu_e5500,
|
|
&cpu_g3,
|
|
&cpu_g4,
|
|
&cpu_g4Plus,
|
|
&cpu_g5,
|
|
&cpu_generic,
|
|
&cpu_ppc,
|
|
&cpu_ppc32,
|
|
&cpu_ppc64,
|
|
&cpu_ppc64le,
|
|
&cpu_pwr3,
|
|
&cpu_pwr4,
|
|
&cpu_pwr5,
|
|
&cpu_pwr5x,
|
|
&cpu_pwr6,
|
|
&cpu_pwr6x,
|
|
&cpu_pwr7,
|
|
&cpu_pwr8,
|
|
&cpu_pwr9,
|
|
};
|