mirror of
https://github.com/ziglang/zig.git
synced 2025-12-25 23:53:15 +00:00
239 lines
9.0 KiB
Zig
239 lines
9.0 KiB
Zig
const FeatureInfo = @import("std").target.feature.FeatureInfo;
|
|
|
|
pub const MipsFeature = enum {
|
|
Abs2008,
|
|
Crc,
|
|
Cnmips,
|
|
Dsp,
|
|
Dspr2,
|
|
Dspr3,
|
|
Eva,
|
|
Fp64,
|
|
Fpxx,
|
|
Ginv,
|
|
Gp64,
|
|
LongCalls,
|
|
Msa,
|
|
Mt,
|
|
Nomadd4,
|
|
Micromips,
|
|
Mips1,
|
|
Mips2,
|
|
Mips3,
|
|
Mips3_32,
|
|
Mips3_32r2,
|
|
Mips4,
|
|
Mips4_32,
|
|
Mips4_32r2,
|
|
Mips5,
|
|
Mips5_32r2,
|
|
Mips16,
|
|
Mips32,
|
|
Mips32r2,
|
|
Mips32r3,
|
|
Mips32r5,
|
|
Mips32r6,
|
|
Mips64,
|
|
Mips64r2,
|
|
Mips64r3,
|
|
Mips64r5,
|
|
Mips64r6,
|
|
Nan2008,
|
|
Noabicalls,
|
|
Nooddspreg,
|
|
Ptr64,
|
|
SingleFloat,
|
|
SoftFloat,
|
|
Sym32,
|
|
UseIndirectJumpHazard,
|
|
UseTccInDiv,
|
|
Vfpu,
|
|
Virt,
|
|
Xgot,
|
|
P5600,
|
|
|
|
pub fn getInfo(self: @This()) FeatureInfo {
|
|
return feature_infos[@enumToInt(self)];
|
|
}
|
|
|
|
pub const feature_infos = [@memberCount(@This())]FeatureInfo(@This()) {
|
|
FeatureInfo(@This()).create(.Abs2008, "abs2008", "Disable IEEE 754-2008 abs.fmt mode", "abs2008"),
|
|
FeatureInfo(@This()).create(.Crc, "crc", "Mips R6 CRC ASE", "crc"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Cnmips, "cnmips", "Octeon cnMIPS Support", "cnmips", &[_]@This() {
|
|
.Mips3_32,
|
|
.Fp64,
|
|
.Mips4_32r2,
|
|
.Mips3_32r2,
|
|
.Mips1,
|
|
.Mips4_32,
|
|
.Gp64,
|
|
.Mips5_32r2,
|
|
}),
|
|
FeatureInfo(@This()).create(.Dsp, "dsp", "Mips DSP ASE", "dsp"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Dspr2, "dspr2", "Mips DSP-R2 ASE", "dspr2", &[_]@This() {
|
|
.Dsp,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Dspr3, "dspr3", "Mips DSP-R3 ASE", "dspr3", &[_]@This() {
|
|
.Dsp,
|
|
}),
|
|
FeatureInfo(@This()).create(.Eva, "eva", "Mips EVA ASE", "eva"),
|
|
FeatureInfo(@This()).create(.Fp64, "fp64", "Support 64-bit FP registers", "fp64"),
|
|
FeatureInfo(@This()).create(.Fpxx, "fpxx", "Support for FPXX", "fpxx"),
|
|
FeatureInfo(@This()).create(.Ginv, "ginv", "Mips Global Invalidate ASE", "ginv"),
|
|
FeatureInfo(@This()).create(.Gp64, "gp64", "General Purpose Registers are 64-bit wide", "gp64"),
|
|
FeatureInfo(@This()).create(.LongCalls, "long-calls", "Disable use of the jal instruction", "long-calls"),
|
|
FeatureInfo(@This()).create(.Msa, "msa", "Mips MSA ASE", "msa"),
|
|
FeatureInfo(@This()).create(.Mt, "mt", "Mips MT ASE", "mt"),
|
|
FeatureInfo(@This()).create(.Nomadd4, "nomadd4", "Disable 4-operand madd.fmt and related instructions", "nomadd4"),
|
|
FeatureInfo(@This()).create(.Micromips, "micromips", "microMips mode", "micromips"),
|
|
FeatureInfo(@This()).create(.Mips1, "mips1", "Mips I ISA Support [highly experimental]", "mips1"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Mips2, "mips2", "Mips II ISA Support [highly experimental]", "mips2", &[_]@This() {
|
|
.Mips1,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Mips3, "mips3", "MIPS III ISA Support [highly experimental]", "mips3", &[_]@This() {
|
|
.Mips3_32,
|
|
.Fp64,
|
|
.Mips3_32r2,
|
|
.Mips1,
|
|
.Gp64,
|
|
}),
|
|
FeatureInfo(@This()).create(.Mips3_32, "mips3_32", "Subset of MIPS-III that is also in MIPS32 [highly experimental]", "mips3_32"),
|
|
FeatureInfo(@This()).create(.Mips3_32r2, "mips3_32r2", "Subset of MIPS-III that is also in MIPS32r2 [highly experimental]", "mips3_32r2"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Mips4, "mips4", "MIPS IV ISA Support", "mips4", &[_]@This() {
|
|
.Mips3_32,
|
|
.Fp64,
|
|
.Mips4_32r2,
|
|
.Mips3_32r2,
|
|
.Mips1,
|
|
.Mips4_32,
|
|
.Gp64,
|
|
}),
|
|
FeatureInfo(@This()).create(.Mips4_32, "mips4_32", "Subset of MIPS-IV that is also in MIPS32 [highly experimental]", "mips4_32"),
|
|
FeatureInfo(@This()).create(.Mips4_32r2, "mips4_32r2", "Subset of MIPS-IV that is also in MIPS32r2 [highly experimental]", "mips4_32r2"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Mips5, "mips5", "MIPS V ISA Support [highly experimental]", "mips5", &[_]@This() {
|
|
.Mips3_32,
|
|
.Fp64,
|
|
.Mips4_32r2,
|
|
.Mips3_32r2,
|
|
.Mips1,
|
|
.Mips4_32,
|
|
.Gp64,
|
|
.Mips5_32r2,
|
|
}),
|
|
FeatureInfo(@This()).create(.Mips5_32r2, "mips5_32r2", "Subset of MIPS-V that is also in MIPS32r2 [highly experimental]", "mips5_32r2"),
|
|
FeatureInfo(@This()).create(.Mips16, "mips16", "Mips16 mode", "mips16"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Mips32, "mips32", "Mips32 ISA Support", "mips32", &[_]@This() {
|
|
.Mips3_32,
|
|
.Mips4_32,
|
|
.Mips1,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Mips32r2, "mips32r2", "Mips32r2 ISA Support", "mips32r2", &[_]@This() {
|
|
.Mips3_32,
|
|
.Mips4_32r2,
|
|
.Mips3_32r2,
|
|
.Mips1,
|
|
.Mips4_32,
|
|
.Mips5_32r2,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Mips32r3, "mips32r3", "Mips32r3 ISA Support", "mips32r3", &[_]@This() {
|
|
.Mips3_32,
|
|
.Mips4_32r2,
|
|
.Mips3_32r2,
|
|
.Mips1,
|
|
.Mips4_32,
|
|
.Mips5_32r2,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Mips32r5, "mips32r5", "Mips32r5 ISA Support", "mips32r5", &[_]@This() {
|
|
.Mips3_32,
|
|
.Mips4_32r2,
|
|
.Mips3_32r2,
|
|
.Mips1,
|
|
.Mips4_32,
|
|
.Mips5_32r2,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Mips32r6, "mips32r6", "Mips32r6 ISA Support [experimental]", "mips32r6", &[_]@This() {
|
|
.Mips3_32,
|
|
.Fp64,
|
|
.Mips4_32r2,
|
|
.Abs2008,
|
|
.Mips3_32r2,
|
|
.Mips1,
|
|
.Mips4_32,
|
|
.Nan2008,
|
|
.Mips5_32r2,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Mips64, "mips64", "Mips64 ISA Support", "mips64", &[_]@This() {
|
|
.Mips3_32,
|
|
.Fp64,
|
|
.Mips4_32r2,
|
|
.Mips3_32r2,
|
|
.Mips1,
|
|
.Mips4_32,
|
|
.Gp64,
|
|
.Mips5_32r2,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Mips64r2, "mips64r2", "Mips64r2 ISA Support", "mips64r2", &[_]@This() {
|
|
.Mips3_32,
|
|
.Fp64,
|
|
.Mips4_32r2,
|
|
.Mips3_32r2,
|
|
.Mips1,
|
|
.Mips4_32,
|
|
.Gp64,
|
|
.Mips5_32r2,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Mips64r3, "mips64r3", "Mips64r3 ISA Support", "mips64r3", &[_]@This() {
|
|
.Mips3_32,
|
|
.Fp64,
|
|
.Mips4_32r2,
|
|
.Mips3_32r2,
|
|
.Mips1,
|
|
.Mips4_32,
|
|
.Gp64,
|
|
.Mips5_32r2,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Mips64r5, "mips64r5", "Mips64r5 ISA Support", "mips64r5", &[_]@This() {
|
|
.Mips3_32,
|
|
.Fp64,
|
|
.Mips4_32r2,
|
|
.Mips3_32r2,
|
|
.Mips1,
|
|
.Mips4_32,
|
|
.Gp64,
|
|
.Mips5_32r2,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Mips64r6, "mips64r6", "Mips64r6 ISA Support [experimental]", "mips64r6", &[_]@This() {
|
|
.Mips3_32,
|
|
.Fp64,
|
|
.Mips4_32r2,
|
|
.Abs2008,
|
|
.Mips3_32r2,
|
|
.Mips1,
|
|
.Mips4_32,
|
|
.Nan2008,
|
|
.Gp64,
|
|
.Mips5_32r2,
|
|
}),
|
|
FeatureInfo(@This()).create(.Nan2008, "nan2008", "IEEE 754-2008 NaN encoding", "nan2008"),
|
|
FeatureInfo(@This()).create(.Noabicalls, "noabicalls", "Disable SVR4-style position-independent code", "noabicalls"),
|
|
FeatureInfo(@This()).create(.Nooddspreg, "nooddspreg", "Disable odd numbered single-precision registers", "nooddspreg"),
|
|
FeatureInfo(@This()).create(.Ptr64, "ptr64", "Pointers are 64-bit wide", "ptr64"),
|
|
FeatureInfo(@This()).create(.SingleFloat, "single-float", "Only supports single precision float", "single-float"),
|
|
FeatureInfo(@This()).create(.SoftFloat, "soft-float", "Does not support floating point instructions", "soft-float"),
|
|
FeatureInfo(@This()).create(.Sym32, "sym32", "Symbols are 32 bit on Mips64", "sym32"),
|
|
FeatureInfo(@This()).create(.UseIndirectJumpHazard, "use-indirect-jump-hazard", "Use indirect jump guards to prevent certain speculation based attacks", "use-indirect-jump-hazard"),
|
|
FeatureInfo(@This()).create(.UseTccInDiv, "use-tcc-in-div", "Force the assembler to use trapping", "use-tcc-in-div"),
|
|
FeatureInfo(@This()).create(.Vfpu, "vfpu", "Enable vector FPU instructions", "vfpu"),
|
|
FeatureInfo(@This()).create(.Virt, "virt", "Mips Virtualization ASE", "virt"),
|
|
FeatureInfo(@This()).create(.Xgot, "xgot", "Assume 32-bit GOT", "xgot"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.P5600, "p5600", "The P5600 Processor", "p5600", &[_]@This() {
|
|
.Mips3_32,
|
|
.Mips4_32r2,
|
|
.Mips3_32r2,
|
|
.Mips1,
|
|
.Mips4_32,
|
|
.Mips5_32r2,
|
|
}),
|
|
};
|
|
};
|