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

1865 lines
43 KiB
Zig

const feature = @import("std").target.feature;
const CpuInfo = @import("std").target.cpu.CpuInfo;
pub const X86Cpu = enum {
Amdfam10,
Athlon,
Athlon4,
AthlonFx,
AthlonMp,
AthlonTbird,
AthlonXp,
Athlon64,
Athlon64Sse3,
Atom,
Barcelona,
Bdver1,
Bdver2,
Bdver3,
Bdver4,
Bonnell,
Broadwell,
Btver1,
Btver2,
C3,
C32,
Cannonlake,
Cascadelake,
Cooperlake,
CoreAvxI,
CoreAvx2,
Core2,
Corei7,
Corei7Avx,
Generic,
Geode,
Goldmont,
GoldmontPlus,
Haswell,
I386,
I486,
I586,
I686,
IcelakeClient,
IcelakeServer,
Ivybridge,
K6,
K62,
K63,
K8,
K8Sse3,
Knl,
Knm,
Lakemont,
Nehalem,
Nocona,
Opteron,
OpteronSse3,
Penryn,
Pentium,
PentiumM,
PentiumMmx,
Pentium2,
Pentium3,
Pentium3m,
Pentium4,
Pentium4m,
Pentiumpro,
Prescott,
Sandybridge,
Silvermont,
Skx,
Skylake,
SkylakeAvx512,
Slm,
Tigerlake,
Tremont,
Westmere,
WinchipC6,
Winchip2,
X8664,
Yonah,
Znver1,
Znver2,
const FeatureType = feature.X86Feature;
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(.Amdfam10, "amdfam10", &[_]FeatureType {
.Mmx,
.Dnowa3,
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.FastScalarShiftMasks,
.Sahf,
.Lzcnt,
.Nopl,
.Popcnt,
.Sse,
.Sse4a,
.SlowShld,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Athlon, "athlon", &[_]FeatureType {
.Mmx,
.Dnowa3,
.Cmov,
.Cx8,
.Nopl,
.SlowShld,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Athlon4, "athlon-4", &[_]FeatureType {
.Mmx,
.Dnowa3,
.Cmov,
.Cx8,
.Fxsr,
.Nopl,
.Sse,
.SlowShld,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.AthlonFx, "athlon-fx", &[_]FeatureType {
.Mmx,
.Dnowa3,
.Bit64,
.Cmov,
.Cx8,
.Fxsr,
.FastScalarShiftMasks,
.Nopl,
.Sse,
.Sse2,
.SlowShld,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.AthlonMp, "athlon-mp", &[_]FeatureType {
.Mmx,
.Dnowa3,
.Cmov,
.Cx8,
.Fxsr,
.Nopl,
.Sse,
.SlowShld,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.AthlonTbird, "athlon-tbird", &[_]FeatureType {
.Mmx,
.Dnowa3,
.Cmov,
.Cx8,
.Nopl,
.SlowShld,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.AthlonXp, "athlon-xp", &[_]FeatureType {
.Mmx,
.Dnowa3,
.Cmov,
.Cx8,
.Fxsr,
.Nopl,
.Sse,
.SlowShld,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Athlon64, "athlon64", &[_]FeatureType {
.Mmx,
.Dnowa3,
.Bit64,
.Cmov,
.Cx8,
.Fxsr,
.FastScalarShiftMasks,
.Nopl,
.Sse,
.Sse2,
.SlowShld,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Athlon64Sse3, "athlon64-sse3", &[_]FeatureType {
.Mmx,
.Dnowa3,
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.FastScalarShiftMasks,
.Nopl,
.Sse,
.Sse3,
.SlowShld,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Atom, "atom", &[_]FeatureType {
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.Sahf,
.LeaSp,
.LeaUsesAg,
.Mmx,
.Movbe,
.Nopl,
.PadShortFunctions,
.Sse,
.Ssse3,
.IdivlToDivb,
.IdivqToDivl,
.SlowTwoMemOps,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Barcelona, "barcelona", &[_]FeatureType {
.Mmx,
.Dnowa3,
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.FastScalarShiftMasks,
.Sahf,
.Lzcnt,
.Nopl,
.Popcnt,
.Sse,
.Sse4a,
.SlowShld,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Bdver1, "bdver1", &[_]FeatureType {
.Bit64,
.Sse,
.Aes,
.Branchfusion,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.Fast11bytenop,
.FastScalarShiftMasks,
.Sahf,
.Lwp,
.Lzcnt,
.Mmx,
.Nopl,
.Pclmul,
.Popcnt,
.Prfchw,
.SlowShld,
.X87,
.Xop,
.Xsave,
}),
CpuInfo(@This(), FeatureType).create(.Bdver2, "bdver2", &[_]FeatureType {
.Bit64,
.Sse,
.Aes,
.Bmi,
.Branchfusion,
.Cmov,
.Cx8,
.Cx16,
.F16c,
.Fma,
.Fxsr,
.Fast11bytenop,
.FastBextr,
.FastScalarShiftMasks,
.Sahf,
.Lwp,
.Lzcnt,
.Mmx,
.Nopl,
.Pclmul,
.Popcnt,
.Prfchw,
.SlowShld,
.Tbm,
.X87,
.Xop,
.Xsave,
}),
CpuInfo(@This(), FeatureType).create(.Bdver3, "bdver3", &[_]FeatureType {
.Bit64,
.Sse,
.Aes,
.Bmi,
.Branchfusion,
.Cmov,
.Cx8,
.Cx16,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.Fast11bytenop,
.FastBextr,
.FastScalarShiftMasks,
.Sahf,
.Lwp,
.Lzcnt,
.Mmx,
.Nopl,
.Pclmul,
.Popcnt,
.Prfchw,
.SlowShld,
.Tbm,
.X87,
.Xop,
.Xsave,
.Xsaveopt,
}),
CpuInfo(@This(), FeatureType).create(.Bdver4, "bdver4", &[_]FeatureType {
.Bit64,
.Sse,
.Aes,
.Avx2,
.Bmi,
.Bmi2,
.Branchfusion,
.Cmov,
.Cx8,
.Cx16,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.Fast11bytenop,
.FastBextr,
.FastScalarShiftMasks,
.Sahf,
.Lwp,
.Lzcnt,
.Mmx,
.Mwaitx,
.Nopl,
.Pclmul,
.Popcnt,
.Prfchw,
.SlowShld,
.Tbm,
.X87,
.Xop,
.Xsave,
.Xsaveopt,
}),
CpuInfo(@This(), FeatureType).create(.Bonnell, "bonnell", &[_]FeatureType {
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.Sahf,
.LeaSp,
.LeaUsesAg,
.Mmx,
.Movbe,
.Nopl,
.PadShortFunctions,
.Sse,
.Ssse3,
.IdivlToDivb,
.IdivqToDivl,
.SlowTwoMemOps,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Broadwell, "broadwell", &[_]FeatureType {
.Bit64,
.Adx,
.Sse,
.Avx,
.Avx2,
.Bmi,
.Bmi2,
.Cmov,
.Cx8,
.Cx16,
.Ermsb,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.FastVariableShuffle,
.Invpcid,
.Sahf,
.Lzcnt,
.FalseDepsLzcntTzcnt,
.Mmx,
.Movbe,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Popcnt,
.FalseDepsPopcnt,
.Prfchw,
.Rdrnd,
.Rdseed,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.X87,
.Xsave,
.Xsaveopt,
}),
CpuInfo(@This(), FeatureType).create(.Btver1, "btver1", &[_]FeatureType {
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.Fast15bytenop,
.FastScalarShiftMasks,
.FastVectorShiftMasks,
.Sahf,
.Lzcnt,
.Mmx,
.Nopl,
.Popcnt,
.Prfchw,
.Sse,
.Sse4a,
.Ssse3,
.SlowShld,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Btver2, "btver2", &[_]FeatureType {
.Bit64,
.Sse,
.Aes,
.Avx,
.Bmi,
.Cmov,
.Cx8,
.Cx16,
.F16c,
.Fxsr,
.Fast15bytenop,
.FastBextr,
.FastHops,
.FastLzcnt,
.FastPartialYmmOrZmmWrite,
.FastScalarShiftMasks,
.FastVectorShiftMasks,
.Sahf,
.Lzcnt,
.Mmx,
.Movbe,
.Nopl,
.Pclmul,
.Popcnt,
.Prfchw,
.Sse4a,
.Ssse3,
.SlowShld,
.X87,
.Xsave,
.Xsaveopt,
}),
CpuInfo(@This(), FeatureType).create(.C3, "c3", &[_]FeatureType {
.Mmx,
.Dnow3,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.C32, "c3-2", &[_]FeatureType {
.Cmov,
.Cx8,
.Fxsr,
.Mmx,
.Sse,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Cannonlake, "cannonlake", &[_]FeatureType {
.Bit64,
.Adx,
.Sse,
.Aes,
.Avx,
.Avx2,
.Avx512f,
.Bmi,
.Bmi2,
.Avx512bw,
.Avx512cd,
.Clflushopt,
.Cmov,
.Cx8,
.Cx16,
.Avx512dq,
.Ermsb,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.FastVariableShuffle,
.FastVectorFsqrt,
.FastGather,
.Avx512ifma,
.Invpcid,
.Sahf,
.Lzcnt,
.Mmx,
.Movbe,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Pku,
.Popcnt,
.Prfchw,
.Prefer256Bit,
.Rdrnd,
.Rdseed,
.Sgx,
.Sha,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.Avx512vbmi,
.Avx512vl,
.X87,
.Xsave,
.Xsavec,
.Xsaveopt,
.Xsaves,
}),
CpuInfo(@This(), FeatureType).create(.Cascadelake, "cascadelake", &[_]FeatureType {
.Bit64,
.Adx,
.Sse,
.Aes,
.Avx,
.Avx2,
.Avx512f,
.Bmi,
.Bmi2,
.Avx512bw,
.Avx512cd,
.Clflushopt,
.Clwb,
.Cmov,
.Cx8,
.Cx16,
.Avx512dq,
.Ermsb,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.FastVariableShuffle,
.FastVectorFsqrt,
.FastGather,
.Invpcid,
.Sahf,
.Lzcnt,
.Mmx,
.Movbe,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Pku,
.Popcnt,
.FalseDepsPopcnt,
.Prfchw,
.Prefer256Bit,
.Rdrnd,
.Rdseed,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.Avx512vl,
.Avx512vnni,
.X87,
.Xsave,
.Xsavec,
.Xsaveopt,
.Xsaves,
}),
CpuInfo(@This(), FeatureType).create(.Cooperlake, "cooperlake", &[_]FeatureType {
.Bit64,
.Adx,
.Sse,
.Aes,
.Avx,
.Avx2,
.Avx512f,
.Avx512bf16,
.Bmi,
.Bmi2,
.Avx512bw,
.Avx512cd,
.Clflushopt,
.Clwb,
.Cmov,
.Cx8,
.Cx16,
.Avx512dq,
.Ermsb,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.FastVariableShuffle,
.FastVectorFsqrt,
.FastGather,
.Invpcid,
.Sahf,
.Lzcnt,
.Mmx,
.Movbe,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Pku,
.Popcnt,
.FalseDepsPopcnt,
.Prfchw,
.Prefer256Bit,
.Rdrnd,
.Rdseed,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.Avx512vl,
.Avx512vnni,
.X87,
.Xsave,
.Xsavec,
.Xsaveopt,
.Xsaves,
}),
CpuInfo(@This(), FeatureType).create(.CoreAvxI, "core-avx-i", &[_]FeatureType {
.Bit64,
.Sse,
.Avx,
.Cmov,
.Cx8,
.Cx16,
.F16c,
.Fsgsbase,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.Sahf,
.Mmx,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Popcnt,
.FalseDepsPopcnt,
.Rdrnd,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.SlowUnalignedMem32,
.X87,
.Xsave,
.Xsaveopt,
}),
CpuInfo(@This(), FeatureType).create(.CoreAvx2, "core-avx2", &[_]FeatureType {
.Bit64,
.Sse,
.Avx,
.Avx2,
.Bmi,
.Bmi2,
.Cmov,
.Cx8,
.Cx16,
.Ermsb,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.FastVariableShuffle,
.Invpcid,
.Sahf,
.Lzcnt,
.FalseDepsLzcntTzcnt,
.Mmx,
.Movbe,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Popcnt,
.FalseDepsPopcnt,
.Rdrnd,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.X87,
.Xsave,
.Xsaveopt,
}),
CpuInfo(@This(), FeatureType).create(.Core2, "core2", &[_]FeatureType {
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.Sahf,
.Mmx,
.Macrofusion,
.Nopl,
.Sse,
.Ssse3,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Corei7, "corei7", &[_]FeatureType {
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.Sahf,
.Mmx,
.Macrofusion,
.Nopl,
.Popcnt,
.Sse,
.Sse42,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Corei7Avx, "corei7-avx", &[_]FeatureType {
.Bit64,
.Sse,
.Avx,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.Sahf,
.Mmx,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Popcnt,
.FalseDepsPopcnt,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.SlowUnalignedMem32,
.X87,
.Xsave,
.Xsaveopt,
}),
CpuInfo(@This(), FeatureType).create(.Generic, "generic", &[_]FeatureType {
.Cx8,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Geode, "geode", &[_]FeatureType {
.Mmx,
.Dnowa3,
.Cx8,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Goldmont, "goldmont", &[_]FeatureType {
.Bit64,
.Sse,
.Aes,
.Clflushopt,
.Cmov,
.Cx8,
.Cx16,
.Fsgsbase,
.Fxsr,
.Sahf,
.Mmx,
.Movbe,
.Nopl,
.Pclmul,
.Popcnt,
.FalseDepsPopcnt,
.Prfchw,
.Rdrnd,
.Rdseed,
.Sha,
.Sse42,
.Ssse3,
.SlowIncdec,
.SlowLea,
.SlowTwoMemOps,
.X87,
.Xsave,
.Xsavec,
.Xsaveopt,
.Xsaves,
}),
CpuInfo(@This(), FeatureType).create(.GoldmontPlus, "goldmont-plus", &[_]FeatureType {
.Bit64,
.Sse,
.Aes,
.Clflushopt,
.Cmov,
.Cx8,
.Cx16,
.Fsgsbase,
.Fxsr,
.Sahf,
.Mmx,
.Movbe,
.Nopl,
.Pclmul,
.Popcnt,
.Prfchw,
.Ptwrite,
.Rdpid,
.Rdrnd,
.Rdseed,
.Sgx,
.Sha,
.Sse42,
.Ssse3,
.SlowIncdec,
.SlowLea,
.SlowTwoMemOps,
.X87,
.Xsave,
.Xsavec,
.Xsaveopt,
.Xsaves,
}),
CpuInfo(@This(), FeatureType).create(.Haswell, "haswell", &[_]FeatureType {
.Bit64,
.Sse,
.Avx,
.Avx2,
.Bmi,
.Bmi2,
.Cmov,
.Cx8,
.Cx16,
.Ermsb,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.FastVariableShuffle,
.Invpcid,
.Sahf,
.Lzcnt,
.FalseDepsLzcntTzcnt,
.Mmx,
.Movbe,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Popcnt,
.FalseDepsPopcnt,
.Rdrnd,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.X87,
.Xsave,
.Xsaveopt,
}),
CpuInfo(@This(), FeatureType).create(.I386, "i386", &[_]FeatureType {
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.I486, "i486", &[_]FeatureType {
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.I586, "i586", &[_]FeatureType {
.Cx8,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.I686, "i686", &[_]FeatureType {
.Cmov,
.Cx8,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.IcelakeClient, "icelake-client", &[_]FeatureType {
.Bit64,
.Adx,
.Sse,
.Aes,
.Avx,
.Avx2,
.Avx512f,
.Avx512bitalg,
.Bmi,
.Bmi2,
.Avx512bw,
.Avx512cd,
.Clflushopt,
.Clwb,
.Cmov,
.Cx8,
.Cx16,
.Avx512dq,
.Ermsb,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.FastVariableShuffle,
.FastVectorFsqrt,
.Gfni,
.FastGather,
.Avx512ifma,
.Invpcid,
.Sahf,
.Lzcnt,
.Mmx,
.Movbe,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Pku,
.Popcnt,
.Prfchw,
.Prefer256Bit,
.Rdpid,
.Rdrnd,
.Rdseed,
.Sgx,
.Sha,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.Vaes,
.Avx512vbmi,
.Avx512vbmi2,
.Avx512vl,
.Avx512vnni,
.Vpclmulqdq,
.Avx512vpopcntdq,
.X87,
.Xsave,
.Xsavec,
.Xsaveopt,
.Xsaves,
}),
CpuInfo(@This(), FeatureType).create(.IcelakeServer, "icelake-server", &[_]FeatureType {
.Bit64,
.Adx,
.Sse,
.Aes,
.Avx,
.Avx2,
.Avx512f,
.Avx512bitalg,
.Bmi,
.Bmi2,
.Avx512bw,
.Avx512cd,
.Clflushopt,
.Clwb,
.Cmov,
.Cx8,
.Cx16,
.Avx512dq,
.Ermsb,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.FastVariableShuffle,
.FastVectorFsqrt,
.Gfni,
.FastGather,
.Avx512ifma,
.Invpcid,
.Sahf,
.Lzcnt,
.Mmx,
.Movbe,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Pconfig,
.Pku,
.Popcnt,
.Prfchw,
.Prefer256Bit,
.Rdpid,
.Rdrnd,
.Rdseed,
.Sgx,
.Sha,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.Vaes,
.Avx512vbmi,
.Avx512vbmi2,
.Avx512vl,
.Avx512vnni,
.Vpclmulqdq,
.Avx512vpopcntdq,
.Wbnoinvd,
.X87,
.Xsave,
.Xsavec,
.Xsaveopt,
.Xsaves,
}),
CpuInfo(@This(), FeatureType).create(.Ivybridge, "ivybridge", &[_]FeatureType {
.Bit64,
.Sse,
.Avx,
.Cmov,
.Cx8,
.Cx16,
.F16c,
.Fsgsbase,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.Sahf,
.Mmx,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Popcnt,
.FalseDepsPopcnt,
.Rdrnd,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.SlowUnalignedMem32,
.X87,
.Xsave,
.Xsaveopt,
}),
CpuInfo(@This(), FeatureType).create(.K6, "k6", &[_]FeatureType {
.Cx8,
.Mmx,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.K62, "k6-2", &[_]FeatureType {
.Mmx,
.Dnow3,
.Cx8,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.K63, "k6-3", &[_]FeatureType {
.Mmx,
.Dnow3,
.Cx8,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.K8, "k8", &[_]FeatureType {
.Mmx,
.Dnowa3,
.Bit64,
.Cmov,
.Cx8,
.Fxsr,
.FastScalarShiftMasks,
.Nopl,
.Sse,
.Sse2,
.SlowShld,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.K8Sse3, "k8-sse3", &[_]FeatureType {
.Mmx,
.Dnowa3,
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.FastScalarShiftMasks,
.Nopl,
.Sse,
.Sse3,
.SlowShld,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Knl, "knl", &[_]FeatureType {
.Bit64,
.Adx,
.Sse,
.Aes,
.Avx512f,
.Bmi,
.Bmi2,
.Avx512cd,
.Cmov,
.Cx8,
.Cx16,
.Avx512er,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.FastPartialYmmOrZmmWrite,
.FastGather,
.Sahf,
.Lzcnt,
.Mmx,
.Movbe,
.Nopl,
.Pclmul,
.Avx512pf,
.Popcnt,
.Prefetchwt1,
.Prfchw,
.Rdrnd,
.Rdseed,
.Slow3opsLea,
.IdivqToDivl,
.SlowIncdec,
.SlowPmaddwd,
.SlowTwoMemOps,
.X87,
.Xsave,
.Xsaveopt,
}),
CpuInfo(@This(), FeatureType).create(.Knm, "knm", &[_]FeatureType {
.Bit64,
.Adx,
.Sse,
.Aes,
.Avx512f,
.Bmi,
.Bmi2,
.Avx512cd,
.Cmov,
.Cx8,
.Cx16,
.Avx512er,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.FastPartialYmmOrZmmWrite,
.FastGather,
.Sahf,
.Lzcnt,
.Mmx,
.Movbe,
.Nopl,
.Pclmul,
.Avx512pf,
.Popcnt,
.Prefetchwt1,
.Prfchw,
.Rdrnd,
.Rdseed,
.Slow3opsLea,
.IdivqToDivl,
.SlowIncdec,
.SlowPmaddwd,
.SlowTwoMemOps,
.Avx512vpopcntdq,
.X87,
.Xsave,
.Xsaveopt,
}),
CpuInfo(@This(), FeatureType).create(.Lakemont, "lakemont", &[_]FeatureType {
}),
CpuInfo(@This(), FeatureType).create(.Nehalem, "nehalem", &[_]FeatureType {
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.Sahf,
.Mmx,
.Macrofusion,
.Nopl,
.Popcnt,
.Sse,
.Sse42,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Nocona, "nocona", &[_]FeatureType {
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.Mmx,
.Nopl,
.Sse,
.Sse3,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Opteron, "opteron", &[_]FeatureType {
.Mmx,
.Dnowa3,
.Bit64,
.Cmov,
.Cx8,
.Fxsr,
.FastScalarShiftMasks,
.Nopl,
.Sse,
.Sse2,
.SlowShld,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.OpteronSse3, "opteron-sse3", &[_]FeatureType {
.Mmx,
.Dnowa3,
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.FastScalarShiftMasks,
.Nopl,
.Sse,
.Sse3,
.SlowShld,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Penryn, "penryn", &[_]FeatureType {
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.Sahf,
.Mmx,
.Macrofusion,
.Nopl,
.Sse,
.Sse41,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Pentium, "pentium", &[_]FeatureType {
.Cx8,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.PentiumM, "pentium-m", &[_]FeatureType {
.Cmov,
.Cx8,
.Fxsr,
.Mmx,
.Nopl,
.Sse,
.Sse2,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.PentiumMmx, "pentium-mmx", &[_]FeatureType {
.Cx8,
.Mmx,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Pentium2, "pentium2", &[_]FeatureType {
.Cmov,
.Cx8,
.Fxsr,
.Mmx,
.Nopl,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Pentium3, "pentium3", &[_]FeatureType {
.Cmov,
.Cx8,
.Fxsr,
.Mmx,
.Nopl,
.Sse,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Pentium3m, "pentium3m", &[_]FeatureType {
.Cmov,
.Cx8,
.Fxsr,
.Mmx,
.Nopl,
.Sse,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Pentium4, "pentium4", &[_]FeatureType {
.Cmov,
.Cx8,
.Fxsr,
.Mmx,
.Nopl,
.Sse,
.Sse2,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Pentium4m, "pentium4m", &[_]FeatureType {
.Cmov,
.Cx8,
.Fxsr,
.Mmx,
.Nopl,
.Sse,
.Sse2,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Pentiumpro, "pentiumpro", &[_]FeatureType {
.Cmov,
.Cx8,
.Nopl,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Prescott, "prescott", &[_]FeatureType {
.Cmov,
.Cx8,
.Fxsr,
.Mmx,
.Nopl,
.Sse,
.Sse3,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Sandybridge, "sandybridge", &[_]FeatureType {
.Bit64,
.Sse,
.Avx,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.Sahf,
.Mmx,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Popcnt,
.FalseDepsPopcnt,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.SlowUnalignedMem32,
.X87,
.Xsave,
.Xsaveopt,
}),
CpuInfo(@This(), FeatureType).create(.Silvermont, "silvermont", &[_]FeatureType {
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.Sahf,
.Mmx,
.Movbe,
.Nopl,
.Sse,
.Pclmul,
.Popcnt,
.FalseDepsPopcnt,
.Prfchw,
.Rdrnd,
.Sse42,
.Ssse3,
.IdivqToDivl,
.SlowIncdec,
.SlowLea,
.SlowPmulld,
.SlowTwoMemOps,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Skx, "skx", &[_]FeatureType {
.Bit64,
.Adx,
.Sse,
.Aes,
.Avx,
.Avx2,
.Avx512f,
.Bmi,
.Bmi2,
.Avx512bw,
.Avx512cd,
.Clflushopt,
.Clwb,
.Cmov,
.Cx8,
.Cx16,
.Avx512dq,
.Ermsb,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.FastVariableShuffle,
.FastVectorFsqrt,
.FastGather,
.Invpcid,
.Sahf,
.Lzcnt,
.Mmx,
.Movbe,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Pku,
.Popcnt,
.FalseDepsPopcnt,
.Prfchw,
.Prefer256Bit,
.Rdrnd,
.Rdseed,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.Avx512vl,
.X87,
.Xsave,
.Xsavec,
.Xsaveopt,
.Xsaves,
}),
CpuInfo(@This(), FeatureType).create(.Skylake, "skylake", &[_]FeatureType {
.Bit64,
.Adx,
.Sse,
.Aes,
.Avx,
.Avx2,
.Bmi,
.Bmi2,
.Clflushopt,
.Cmov,
.Cx8,
.Cx16,
.Ermsb,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.FastVariableShuffle,
.FastVectorFsqrt,
.FastGather,
.Invpcid,
.Sahf,
.Lzcnt,
.Mmx,
.Movbe,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Popcnt,
.FalseDepsPopcnt,
.Prfchw,
.Rdrnd,
.Rdseed,
.Sgx,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.X87,
.Xsave,
.Xsavec,
.Xsaveopt,
.Xsaves,
}),
CpuInfo(@This(), FeatureType).create(.SkylakeAvx512, "skylake-avx512", &[_]FeatureType {
.Bit64,
.Adx,
.Sse,
.Aes,
.Avx,
.Avx2,
.Avx512f,
.Bmi,
.Bmi2,
.Avx512bw,
.Avx512cd,
.Clflushopt,
.Clwb,
.Cmov,
.Cx8,
.Cx16,
.Avx512dq,
.Ermsb,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.FastVariableShuffle,
.FastVectorFsqrt,
.FastGather,
.Invpcid,
.Sahf,
.Lzcnt,
.Mmx,
.Movbe,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Pku,
.Popcnt,
.FalseDepsPopcnt,
.Prfchw,
.Prefer256Bit,
.Rdrnd,
.Rdseed,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.Avx512vl,
.X87,
.Xsave,
.Xsavec,
.Xsaveopt,
.Xsaves,
}),
CpuInfo(@This(), FeatureType).create(.Slm, "slm", &[_]FeatureType {
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.Sahf,
.Mmx,
.Movbe,
.Nopl,
.Sse,
.Pclmul,
.Popcnt,
.FalseDepsPopcnt,
.Prfchw,
.Rdrnd,
.Sse42,
.Ssse3,
.IdivqToDivl,
.SlowIncdec,
.SlowLea,
.SlowPmulld,
.SlowTwoMemOps,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Tigerlake, "tigerlake", &[_]FeatureType {
.Bit64,
.Adx,
.Sse,
.Aes,
.Avx,
.Avx2,
.Avx512f,
.Avx512bitalg,
.Bmi,
.Bmi2,
.Avx512bw,
.Avx512cd,
.Clflushopt,
.Clwb,
.Cmov,
.Cx8,
.Cx16,
.Avx512dq,
.Ermsb,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.FastShldRotate,
.FastScalarFsqrt,
.FastVariableShuffle,
.FastVectorFsqrt,
.Gfni,
.FastGather,
.Avx512ifma,
.Invpcid,
.Sahf,
.Lzcnt,
.Mmx,
.Movbe,
.Movdir64b,
.Movdiri,
.Macrofusion,
.MergeToThreewayBranch,
.Nopl,
.Pclmul,
.Pku,
.Popcnt,
.Prfchw,
.Prefer256Bit,
.Rdpid,
.Rdrnd,
.Rdseed,
.Sgx,
.Sha,
.Shstk,
.Sse42,
.Slow3opsLea,
.IdivqToDivl,
.Vaes,
.Avx512vbmi,
.Avx512vbmi2,
.Avx512vl,
.Avx512vnni,
.Avx512vp2intersect,
.Vpclmulqdq,
.Avx512vpopcntdq,
.X87,
.Xsave,
.Xsavec,
.Xsaveopt,
.Xsaves,
}),
CpuInfo(@This(), FeatureType).create(.Tremont, "tremont", &[_]FeatureType {
.Bit64,
.Sse,
.Aes,
.Cldemote,
.Clflushopt,
.Cmov,
.Cx8,
.Cx16,
.Fsgsbase,
.Fxsr,
.Gfni,
.Sahf,
.Mmx,
.Movbe,
.Movdir64b,
.Movdiri,
.Nopl,
.Pclmul,
.Popcnt,
.Prfchw,
.Ptwrite,
.Rdpid,
.Rdrnd,
.Rdseed,
.Sgx,
.Sha,
.Sse42,
.Ssse3,
.SlowIncdec,
.SlowLea,
.SlowTwoMemOps,
.Waitpkg,
.X87,
.Xsave,
.Xsavec,
.Xsaveopt,
.Xsaves,
}),
CpuInfo(@This(), FeatureType).create(.Westmere, "westmere", &[_]FeatureType {
.Bit64,
.Cmov,
.Cx8,
.Cx16,
.Fxsr,
.Sahf,
.Mmx,
.Macrofusion,
.Nopl,
.Sse,
.Pclmul,
.Popcnt,
.Sse42,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.WinchipC6, "winchip-c6", &[_]FeatureType {
.Mmx,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Winchip2, "winchip2", &[_]FeatureType {
.Mmx,
.Dnow3,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.X8664, "x86-64", &[_]FeatureType {
.Bit64,
.Cmov,
.Cx8,
.Fxsr,
.Mmx,
.Macrofusion,
.Nopl,
.Sse,
.Sse2,
.Slow3opsLea,
.SlowIncdec,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Yonah, "yonah", &[_]FeatureType {
.Cmov,
.Cx8,
.Fxsr,
.Mmx,
.Nopl,
.Sse,
.Sse3,
.SlowUnalignedMem16,
.X87,
}),
CpuInfo(@This(), FeatureType).create(.Znver1, "znver1", &[_]FeatureType {
.Bit64,
.Adx,
.Sse,
.Aes,
.Avx2,
.Bmi,
.Bmi2,
.Branchfusion,
.Clflushopt,
.Clzero,
.Cmov,
.Cx8,
.Cx16,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.Fast15bytenop,
.FastBextr,
.FastLzcnt,
.FastScalarShiftMasks,
.Sahf,
.Lzcnt,
.Mmx,
.Movbe,
.Mwaitx,
.Nopl,
.Pclmul,
.Popcnt,
.Prfchw,
.Rdrnd,
.Rdseed,
.Sha,
.Sse4a,
.SlowShld,
.X87,
.Xsave,
.Xsavec,
.Xsaveopt,
.Xsaves,
}),
CpuInfo(@This(), FeatureType).create(.Znver2, "znver2", &[_]FeatureType {
.Bit64,
.Adx,
.Sse,
.Aes,
.Avx2,
.Bmi,
.Bmi2,
.Branchfusion,
.Clflushopt,
.Clwb,
.Clzero,
.Cmov,
.Cx8,
.Cx16,
.F16c,
.Fma,
.Fsgsbase,
.Fxsr,
.Fast15bytenop,
.FastBextr,
.FastLzcnt,
.FastScalarShiftMasks,
.Sahf,
.Lzcnt,
.Mmx,
.Movbe,
.Mwaitx,
.Nopl,
.Pclmul,
.Popcnt,
.Prfchw,
.Rdpid,
.Rdrnd,
.Rdseed,
.Sha,
.Sse4a,
.SlowShld,
.Wbnoinvd,
.X87,
.Xsave,
.Xsavec,
.Xsaveopt,
.Xsaves,
}),
};
};