mirror of
https://github.com/ziglang/zig.git
synced 2025-12-30 18:13:19 +00:00
343 lines
19 KiB
Zig
343 lines
19 KiB
Zig
const FeatureInfo = @import("std").target.feature.FeatureInfo;
|
|
|
|
pub const X86Feature = enum {
|
|
Dnow3,
|
|
Dnowa3,
|
|
Bit64,
|
|
Adx,
|
|
Aes,
|
|
Avx,
|
|
Avx2,
|
|
Avx512f,
|
|
Avx512bf16,
|
|
Avx512bitalg,
|
|
Bmi,
|
|
Bmi2,
|
|
Avx512bw,
|
|
Branchfusion,
|
|
Avx512cd,
|
|
Cldemote,
|
|
Clflushopt,
|
|
Clwb,
|
|
Clzero,
|
|
Cmov,
|
|
Cx8,
|
|
Cx16,
|
|
Avx512dq,
|
|
Mpx,
|
|
Enqcmd,
|
|
Avx512er,
|
|
Ermsb,
|
|
F16c,
|
|
Fma,
|
|
Fma4,
|
|
Fsgsbase,
|
|
Fxsr,
|
|
Fast11bytenop,
|
|
Fast15bytenop,
|
|
FastBextr,
|
|
FastHops,
|
|
FastLzcnt,
|
|
FastPartialYmmOrZmmWrite,
|
|
FastShldRotate,
|
|
FastScalarFsqrt,
|
|
FastScalarShiftMasks,
|
|
FastVariableShuffle,
|
|
FastVectorFsqrt,
|
|
FastVectorShiftMasks,
|
|
Gfni,
|
|
FastGather,
|
|
Avx512ifma,
|
|
Invpcid,
|
|
Sahf,
|
|
LeaSp,
|
|
LeaUsesAg,
|
|
Lwp,
|
|
Lzcnt,
|
|
FalseDepsLzcntTzcnt,
|
|
Mmx,
|
|
Movbe,
|
|
Movdir64b,
|
|
Movdiri,
|
|
Mwaitx,
|
|
Macrofusion,
|
|
MergeToThreewayBranch,
|
|
Nopl,
|
|
Pclmul,
|
|
Pconfig,
|
|
Avx512pf,
|
|
Pku,
|
|
Popcnt,
|
|
FalseDepsPopcnt,
|
|
Prefetchwt1,
|
|
Prfchw,
|
|
Ptwrite,
|
|
PadShortFunctions,
|
|
Prefer128Bit,
|
|
Prefer256Bit,
|
|
Rdpid,
|
|
Rdrnd,
|
|
Rdseed,
|
|
Rtm,
|
|
Retpoline,
|
|
RetpolineExternalThunk,
|
|
RetpolineIndirectBranches,
|
|
RetpolineIndirectCalls,
|
|
Sgx,
|
|
Sha,
|
|
Shstk,
|
|
Sse,
|
|
Sse2,
|
|
Sse3,
|
|
Sse4a,
|
|
Sse41,
|
|
Sse42,
|
|
SseUnalignedMem,
|
|
Ssse3,
|
|
Slow3opsLea,
|
|
IdivlToDivb,
|
|
IdivqToDivl,
|
|
SlowIncdec,
|
|
SlowLea,
|
|
SlowPmaddwd,
|
|
SlowPmulld,
|
|
SlowShld,
|
|
SlowTwoMemOps,
|
|
SlowUnalignedMem16,
|
|
SlowUnalignedMem32,
|
|
SoftFloat,
|
|
Tbm,
|
|
UseAa,
|
|
Vaes,
|
|
Avx512vbmi,
|
|
Avx512vbmi2,
|
|
Avx512vl,
|
|
Avx512vnni,
|
|
Avx512vp2intersect,
|
|
Vpclmulqdq,
|
|
Avx512vpopcntdq,
|
|
Waitpkg,
|
|
Wbnoinvd,
|
|
X87,
|
|
Xop,
|
|
Xsave,
|
|
Xsavec,
|
|
Xsaveopt,
|
|
Xsaves,
|
|
BitMode16,
|
|
BitMode32,
|
|
BitMode64,
|
|
|
|
pub fn getInfo(self: @This()) FeatureInfo {
|
|
return feature_infos[@enumToInt(self)];
|
|
}
|
|
|
|
pub const feature_infos = [@memberCount(@This())]FeatureInfo(@This()) {
|
|
FeatureInfo(@This()).createWithSubfeatures(.Dnow3, "3dnow", "Enable 3DNow! instructions", "3dnow", &[_]@This() {
|
|
.Mmx,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Dnowa3, "3dnowa", "Enable 3DNow! Athlon instructions", "3dnowa", &[_]@This() {
|
|
.Mmx,
|
|
}),
|
|
FeatureInfo(@This()).create(.Bit64, "64bit", "Support 64-bit instructions", "64bit"),
|
|
FeatureInfo(@This()).create(.Adx, "adx", "Support ADX instructions", "adx"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Aes, "aes", "Enable AES instructions", "aes", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx, "avx", "Enable AVX instructions", "avx", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx2, "avx2", "Enable AVX2 instructions", "avx2", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx512f, "avx512f", "Enable AVX-512 instructions", "avx512f", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx512bf16, "avx512bf16", "Support bfloat16 floating point", "avx512bf16", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx512bitalg, "avx512bitalg", "Enable AVX-512 Bit Algorithms", "avx512bitalg", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.Bmi, "bmi", "Support BMI instructions", "bmi"),
|
|
FeatureInfo(@This()).create(.Bmi2, "bmi2", "Support BMI2 instructions", "bmi2"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx512bw, "avx512bw", "Enable AVX-512 Byte and Word Instructions", "avx512bw", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.Branchfusion, "branchfusion", "CMP/TEST can be fused with conditional branches", "branchfusion"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx512cd, "avx512cd", "Enable AVX-512 Conflict Detection Instructions", "avx512cd", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.Cldemote, "cldemote", "Enable Cache Demote", "cldemote"),
|
|
FeatureInfo(@This()).create(.Clflushopt, "clflushopt", "Flush A Cache Line Optimized", "clflushopt"),
|
|
FeatureInfo(@This()).create(.Clwb, "clwb", "Cache Line Write Back", "clwb"),
|
|
FeatureInfo(@This()).create(.Clzero, "clzero", "Enable Cache Line Zero", "clzero"),
|
|
FeatureInfo(@This()).create(.Cmov, "cmov", "Enable conditional move instructions", "cmov"),
|
|
FeatureInfo(@This()).create(.Cx8, "cx8", "Support CMPXCHG8B instructions", "cx8"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Cx16, "cx16", "64-bit with cmpxchg16b", "cx16", &[_]@This() {
|
|
.Cx8,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx512dq, "avx512dq", "Enable AVX-512 Doubleword and Quadword Instructions", "avx512dq", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.Mpx, "mpx", "Deprecated. Support MPX instructions", "mpx"),
|
|
FeatureInfo(@This()).create(.Enqcmd, "enqcmd", "Has ENQCMD instructions", "enqcmd"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx512er, "avx512er", "Enable AVX-512 Exponential and Reciprocal Instructions", "avx512er", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.Ermsb, "ermsb", "REP MOVS/STOS are fast", "ermsb"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.F16c, "f16c", "Support 16-bit floating point conversion instructions", "f16c", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Fma, "fma", "Enable three-operand fused multiple-add", "fma", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Fma4, "fma4", "Enable four-operand fused multiple-add", "fma4", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.Fsgsbase, "fsgsbase", "Support FS/GS Base instructions", "fsgsbase"),
|
|
FeatureInfo(@This()).create(.Fxsr, "fxsr", "Support fxsave/fxrestore instructions", "fxsr"),
|
|
FeatureInfo(@This()).create(.Fast11bytenop, "fast-11bytenop", "Target can quickly decode up to 11 byte NOPs", "fast-11bytenop"),
|
|
FeatureInfo(@This()).create(.Fast15bytenop, "fast-15bytenop", "Target can quickly decode up to 15 byte NOPs", "fast-15bytenop"),
|
|
FeatureInfo(@This()).create(.FastBextr, "fast-bextr", "Indicates that the BEXTR instruction is implemented as a single uop with good throughput", "fast-bextr"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.FastHops, "fast-hops", "Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles", "fast-hops", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.FastLzcnt, "fast-lzcnt", "LZCNT instructions are as fast as most simple integer ops", "fast-lzcnt"),
|
|
FeatureInfo(@This()).create(.FastPartialYmmOrZmmWrite, "fast-partial-ymm-or-zmm-write", "Partial writes to YMM/ZMM registers are fast", "fast-partial-ymm-or-zmm-write"),
|
|
FeatureInfo(@This()).create(.FastShldRotate, "fast-shld-rotate", "SHLD can be used as a faster rotate", "fast-shld-rotate"),
|
|
FeatureInfo(@This()).create(.FastScalarFsqrt, "fast-scalar-fsqrt", "Scalar SQRT is fast (disable Newton-Raphson)", "fast-scalar-fsqrt"),
|
|
FeatureInfo(@This()).create(.FastScalarShiftMasks, "fast-scalar-shift-masks", "Prefer a left/right scalar logical shift pair over a shift+and pair", "fast-scalar-shift-masks"),
|
|
FeatureInfo(@This()).create(.FastVariableShuffle, "fast-variable-shuffle", "Shuffles with variable masks are fast", "fast-variable-shuffle"),
|
|
FeatureInfo(@This()).create(.FastVectorFsqrt, "fast-vector-fsqrt", "Vector SQRT is fast (disable Newton-Raphson)", "fast-vector-fsqrt"),
|
|
FeatureInfo(@This()).create(.FastVectorShiftMasks, "fast-vector-shift-masks", "Prefer a left/right vector logical shift pair over a shift+and pair", "fast-vector-shift-masks"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Gfni, "gfni", "Enable Galois Field Arithmetic Instructions", "gfni", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.FastGather, "fast-gather", "Indicates if gather is reasonably fast", "fast-gather"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx512ifma, "avx512ifma", "Enable AVX-512 Integer Fused Multiple-Add", "avx512ifma", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.Invpcid, "invpcid", "Invalidate Process-Context Identifier", "invpcid"),
|
|
FeatureInfo(@This()).create(.Sahf, "sahf", "Support LAHF and SAHF instructions", "sahf"),
|
|
FeatureInfo(@This()).create(.LeaSp, "lea-sp", "Use LEA for adjusting the stack pointer", "lea-sp"),
|
|
FeatureInfo(@This()).create(.LeaUsesAg, "lea-uses-ag", "LEA instruction needs inputs at AG stage", "lea-uses-ag"),
|
|
FeatureInfo(@This()).create(.Lwp, "lwp", "Enable LWP instructions", "lwp"),
|
|
FeatureInfo(@This()).create(.Lzcnt, "lzcnt", "Support LZCNT instruction", "lzcnt"),
|
|
FeatureInfo(@This()).create(.FalseDepsLzcntTzcnt, "false-deps-lzcnt-tzcnt", "LZCNT/TZCNT have a false dependency on dest register", "false-deps-lzcnt-tzcnt"),
|
|
FeatureInfo(@This()).create(.Mmx, "mmx", "Enable MMX instructions", "mmx"),
|
|
FeatureInfo(@This()).create(.Movbe, "movbe", "Support MOVBE instruction", "movbe"),
|
|
FeatureInfo(@This()).create(.Movdir64b, "movdir64b", "Support movdir64b instruction", "movdir64b"),
|
|
FeatureInfo(@This()).create(.Movdiri, "movdiri", "Support movdiri instruction", "movdiri"),
|
|
FeatureInfo(@This()).create(.Mwaitx, "mwaitx", "Enable MONITORX/MWAITX timer functionality", "mwaitx"),
|
|
FeatureInfo(@This()).create(.Macrofusion, "macrofusion", "Various instructions can be fused with conditional branches", "macrofusion"),
|
|
FeatureInfo(@This()).create(.MergeToThreewayBranch, "merge-to-threeway-branch", "Merge branches to a three-way conditional branch", "merge-to-threeway-branch"),
|
|
FeatureInfo(@This()).create(.Nopl, "nopl", "Enable NOPL instruction", "nopl"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Pclmul, "pclmul", "Enable packed carry-less multiplication instructions", "pclmul", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.Pconfig, "pconfig", "platform configuration instruction", "pconfig"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx512pf, "avx512pf", "Enable AVX-512 PreFetch Instructions", "avx512pf", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.Pku, "pku", "Enable protection keys", "pku"),
|
|
FeatureInfo(@This()).create(.Popcnt, "popcnt", "Support POPCNT instruction", "popcnt"),
|
|
FeatureInfo(@This()).create(.FalseDepsPopcnt, "false-deps-popcnt", "POPCNT has a false dependency on dest register", "false-deps-popcnt"),
|
|
FeatureInfo(@This()).create(.Prefetchwt1, "prefetchwt1", "Prefetch with Intent to Write and T1 Hint", "prefetchwt1"),
|
|
FeatureInfo(@This()).create(.Prfchw, "prfchw", "Support PRFCHW instructions", "prfchw"),
|
|
FeatureInfo(@This()).create(.Ptwrite, "ptwrite", "Support ptwrite instruction", "ptwrite"),
|
|
FeatureInfo(@This()).create(.PadShortFunctions, "pad-short-functions", "Pad short functions", "pad-short-functions"),
|
|
FeatureInfo(@This()).create(.Prefer128Bit, "prefer-128-bit", "Prefer 128-bit AVX instructions", "prefer-128-bit"),
|
|
FeatureInfo(@This()).create(.Prefer256Bit, "prefer-256-bit", "Prefer 256-bit AVX instructions", "prefer-256-bit"),
|
|
FeatureInfo(@This()).create(.Rdpid, "rdpid", "Support RDPID instructions", "rdpid"),
|
|
FeatureInfo(@This()).create(.Rdrnd, "rdrnd", "Support RDRAND instruction", "rdrnd"),
|
|
FeatureInfo(@This()).create(.Rdseed, "rdseed", "Support RDSEED instruction", "rdseed"),
|
|
FeatureInfo(@This()).create(.Rtm, "rtm", "Support RTM instructions", "rtm"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Retpoline, "retpoline", "Remove speculation of indirect branches from the generated code, either by avoiding them entirely or lowering them with a speculation blocking construct", "retpoline", &[_]@This() {
|
|
.RetpolineIndirectBranches,
|
|
.RetpolineIndirectCalls,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.RetpolineExternalThunk, "retpoline-external-thunk", "When lowering an indirect call or branch using a `retpoline`, rely on the specified user provided thunk rather than emitting one ourselves. Only has effect when combined with some other retpoline feature", "retpoline-external-thunk", &[_]@This() {
|
|
.RetpolineIndirectCalls,
|
|
}),
|
|
FeatureInfo(@This()).create(.RetpolineIndirectBranches, "retpoline-indirect-branches", "Remove speculation of indirect branches from the generated code", "retpoline-indirect-branches"),
|
|
FeatureInfo(@This()).create(.RetpolineIndirectCalls, "retpoline-indirect-calls", "Remove speculation of indirect calls from the generated code", "retpoline-indirect-calls"),
|
|
FeatureInfo(@This()).create(.Sgx, "sgx", "Enable Software Guard Extensions", "sgx"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Sha, "sha", "Enable SHA instructions", "sha", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.Shstk, "shstk", "Support CET Shadow-Stack instructions", "shstk"),
|
|
FeatureInfo(@This()).create(.Sse, "sse", "Enable SSE instructions", "sse"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Sse2, "sse2", "Enable SSE2 instructions", "sse2", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Sse3, "sse3", "Enable SSE3 instructions", "sse3", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Sse4a, "sse4a", "Support SSE 4a instructions", "sse4a", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Sse41, "sse4.1", "Enable SSE 4.1 instructions", "sse4.1", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Sse42, "sse4.2", "Enable SSE 4.2 instructions", "sse4.2", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.SseUnalignedMem, "sse-unaligned-mem", "Allow unaligned memory operands with SSE instructions", "sse-unaligned-mem"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Ssse3, "ssse3", "Enable SSSE3 instructions", "ssse3", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.Slow3opsLea, "slow-3ops-lea", "LEA instruction with 3 ops or certain registers is slow", "slow-3ops-lea"),
|
|
FeatureInfo(@This()).create(.IdivlToDivb, "idivl-to-divb", "Use 8-bit divide for positive values less than 256", "idivl-to-divb"),
|
|
FeatureInfo(@This()).create(.IdivqToDivl, "idivq-to-divl", "Use 32-bit divide for positive values less than 2^32", "idivq-to-divl"),
|
|
FeatureInfo(@This()).create(.SlowIncdec, "slow-incdec", "INC and DEC instructions are slower than ADD and SUB", "slow-incdec"),
|
|
FeatureInfo(@This()).create(.SlowLea, "slow-lea", "LEA instruction with certain arguments is slow", "slow-lea"),
|
|
FeatureInfo(@This()).create(.SlowPmaddwd, "slow-pmaddwd", "PMADDWD is slower than PMULLD", "slow-pmaddwd"),
|
|
FeatureInfo(@This()).create(.SlowPmulld, "slow-pmulld", "PMULLD instruction is slow", "slow-pmulld"),
|
|
FeatureInfo(@This()).create(.SlowShld, "slow-shld", "SHLD instruction is slow", "slow-shld"),
|
|
FeatureInfo(@This()).create(.SlowTwoMemOps, "slow-two-mem-ops", "Two memory operand instructions are slow", "slow-two-mem-ops"),
|
|
FeatureInfo(@This()).create(.SlowUnalignedMem16, "slow-unaligned-mem-16", "Slow unaligned 16-byte memory access", "slow-unaligned-mem-16"),
|
|
FeatureInfo(@This()).create(.SlowUnalignedMem32, "slow-unaligned-mem-32", "Slow unaligned 32-byte memory access", "slow-unaligned-mem-32"),
|
|
FeatureInfo(@This()).create(.SoftFloat, "soft-float", "Use software floating point features", "soft-float"),
|
|
FeatureInfo(@This()).create(.Tbm, "tbm", "Enable TBM instructions", "tbm"),
|
|
FeatureInfo(@This()).create(.UseAa, "use-aa", "Use alias analysis during codegen", "use-aa"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Vaes, "vaes", "Promote selected AES instructions to AVX512/AVX registers", "vaes", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx512vbmi, "avx512vbmi", "Enable AVX-512 Vector Byte Manipulation Instructions", "avx512vbmi", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx512vbmi2, "avx512vbmi2", "Enable AVX-512 further Vector Byte Manipulation Instructions", "avx512vbmi2", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx512vl, "avx512vl", "Enable AVX-512 Vector Length eXtensions", "avx512vl", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx512vnni, "avx512vnni", "Enable AVX-512 Vector Neural Network Instructions", "avx512vnni", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx512vp2intersect, "avx512vp2intersect", "Enable AVX-512 vp2intersect", "avx512vp2intersect", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Vpclmulqdq, "vpclmulqdq", "Enable vpclmulqdq instructions", "vpclmulqdq", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Avx512vpopcntdq, "avx512vpopcntdq", "Enable AVX-512 Population Count Instructions", "avx512vpopcntdq", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.Waitpkg, "waitpkg", "Wait and pause enhancements", "waitpkg"),
|
|
FeatureInfo(@This()).create(.Wbnoinvd, "wbnoinvd", "Write Back No Invalidate", "wbnoinvd"),
|
|
FeatureInfo(@This()).create(.X87, "x87", "Enable X87 float instructions", "x87"),
|
|
FeatureInfo(@This()).createWithSubfeatures(.Xop, "xop", "Enable XOP instructions", "xop", &[_]@This() {
|
|
.Sse,
|
|
}),
|
|
FeatureInfo(@This()).create(.Xsave, "xsave", "Support xsave instructions", "xsave"),
|
|
FeatureInfo(@This()).create(.Xsavec, "xsavec", "Support xsavec instructions", "xsavec"),
|
|
FeatureInfo(@This()).create(.Xsaveopt, "xsaveopt", "Support xsaveopt instructions", "xsaveopt"),
|
|
FeatureInfo(@This()).create(.Xsaves, "xsaves", "Support xsaves instructions", "xsaves"),
|
|
FeatureInfo(@This()).create(.BitMode16, "16bit-mode", "16-bit mode (i8086)", "16bit-mode"),
|
|
FeatureInfo(@This()).create(.BitMode32, "32bit-mode", "32-bit mode (80386)", "32bit-mode"),
|
|
FeatureInfo(@This()).create(.BitMode64, "64bit-mode", "64-bit mode (x86_64)", "64bit-mode"),
|
|
};
|
|
};
|