191 lines
4.9 KiB
Zig
191 lines
4.9 KiB
Zig
const feature = @import("std").target.feature;
|
|
const CpuInfo = @import("std").target.cpu.CpuInfo;
|
|
|
|
pub const MipsCpu = enum {
|
|
Mips1,
|
|
Mips2,
|
|
Mips3,
|
|
Mips32,
|
|
Mips32r2,
|
|
Mips32r3,
|
|
Mips32r5,
|
|
Mips32r6,
|
|
Mips4,
|
|
Mips5,
|
|
Mips64,
|
|
Mips64r2,
|
|
Mips64r3,
|
|
Mips64r5,
|
|
Mips64r6,
|
|
Octeon,
|
|
P5600,
|
|
|
|
const FeatureType = feature.MipsFeature;
|
|
|
|
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(.Mips1, "mips1", &[_]FeatureType {
|
|
.Mips1,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.Mips2, "mips2", &[_]FeatureType {
|
|
.Mips1,
|
|
.Mips2,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.Mips3, "mips3", &[_]FeatureType {
|
|
.Mips3_32r2,
|
|
.Fp64,
|
|
.Gp64,
|
|
.Mips1,
|
|
.Mips3_32,
|
|
.Mips3,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.Mips32, "mips32", &[_]FeatureType {
|
|
.Mips4_32,
|
|
.Mips1,
|
|
.Mips3_32,
|
|
.Mips32,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.Mips32r2, "mips32r2", &[_]FeatureType {
|
|
.Mips5_32r2,
|
|
.Mips4_32r2,
|
|
.Mips3_32r2,
|
|
.Mips4_32,
|
|
.Mips1,
|
|
.Mips3_32,
|
|
.Mips32r2,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.Mips32r3, "mips32r3", &[_]FeatureType {
|
|
.Mips5_32r2,
|
|
.Mips3_32r2,
|
|
.Mips4_32r2,
|
|
.Mips4_32,
|
|
.Mips1,
|
|
.Mips3_32,
|
|
.Mips32r3,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.Mips32r5, "mips32r5", &[_]FeatureType {
|
|
.Mips5_32r2,
|
|
.Mips3_32r2,
|
|
.Mips4_32r2,
|
|
.Mips4_32,
|
|
.Mips1,
|
|
.Mips3_32,
|
|
.Mips32r5,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.Mips32r6, "mips32r6", &[_]FeatureType {
|
|
.Mips5_32r2,
|
|
.Mips3_32r2,
|
|
.Mips4_32r2,
|
|
.Abs2008,
|
|
.Nan2008,
|
|
.Fp64,
|
|
.Mips4_32,
|
|
.Mips1,
|
|
.Mips3_32,
|
|
.Mips32r6,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.Mips4, "mips4", &[_]FeatureType {
|
|
.Mips3_32r2,
|
|
.Mips4_32r2,
|
|
.Fp64,
|
|
.Gp64,
|
|
.Mips4_32,
|
|
.Mips1,
|
|
.Mips3_32,
|
|
.Mips4,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.Mips5, "mips5", &[_]FeatureType {
|
|
.Mips5_32r2,
|
|
.Mips4_32r2,
|
|
.Mips3_32r2,
|
|
.Gp64,
|
|
.Fp64,
|
|
.Mips4_32,
|
|
.Mips1,
|
|
.Mips3_32,
|
|
.Mips5,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.Mips64, "mips64", &[_]FeatureType {
|
|
.Mips5_32r2,
|
|
.Mips3_32r2,
|
|
.Mips4_32r2,
|
|
.Gp64,
|
|
.Fp64,
|
|
.Mips4_32,
|
|
.Mips1,
|
|
.Mips3_32,
|
|
.Mips64,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.Mips64r2, "mips64r2", &[_]FeatureType {
|
|
.Mips5_32r2,
|
|
.Mips3_32r2,
|
|
.Mips4_32r2,
|
|
.Gp64,
|
|
.Fp64,
|
|
.Mips4_32,
|
|
.Mips1,
|
|
.Mips3_32,
|
|
.Mips64r2,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.Mips64r3, "mips64r3", &[_]FeatureType {
|
|
.Mips5_32r2,
|
|
.Mips3_32r2,
|
|
.Mips4_32r2,
|
|
.Gp64,
|
|
.Fp64,
|
|
.Mips4_32,
|
|
.Mips1,
|
|
.Mips3_32,
|
|
.Mips64r3,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.Mips64r5, "mips64r5", &[_]FeatureType {
|
|
.Mips5_32r2,
|
|
.Mips3_32r2,
|
|
.Mips4_32r2,
|
|
.Gp64,
|
|
.Fp64,
|
|
.Mips4_32,
|
|
.Mips1,
|
|
.Mips3_32,
|
|
.Mips64r5,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.Mips64r6, "mips64r6", &[_]FeatureType {
|
|
.Mips5_32r2,
|
|
.Mips3_32r2,
|
|
.Nan2008,
|
|
.Abs2008,
|
|
.Mips4_32r2,
|
|
.Fp64,
|
|
.Gp64,
|
|
.Mips4_32,
|
|
.Mips1,
|
|
.Mips3_32,
|
|
.Mips64r6,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.Octeon, "octeon", &[_]FeatureType {
|
|
.Mips5_32r2,
|
|
.Mips3_32r2,
|
|
.Mips4_32r2,
|
|
.Gp64,
|
|
.Fp64,
|
|
.Mips4_32,
|
|
.Mips1,
|
|
.Mips3_32,
|
|
.Cnmips,
|
|
.Mips64r2,
|
|
}),
|
|
CpuInfo(@This(), FeatureType).create(.P5600, "p5600", &[_]FeatureType {
|
|
.Mips5_32r2,
|
|
.Mips3_32r2,
|
|
.Mips4_32r2,
|
|
.Mips4_32,
|
|
.Mips1,
|
|
.Mips3_32,
|
|
.P5600,
|
|
}),
|
|
};
|
|
};
|