You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
keystone/llvm/lib/Target/X86/X86GenSubtargetInfo.inc

389 lines
29 KiB

/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|* *|
|* Subtarget Enumeration Source Fragment *|
|* *|
|* Automatically generated file, do not edit! *|
|* *|
\*===----------------------------------------------------------------------===*/
#ifdef GET_SUBTARGETINFO_ENUM
#undef GET_SUBTARGETINFO_ENUM
namespace llvm_ks {
namespace X86 {
enum : uint64_t {
Feature3DNow = 0,
Feature3DNowA = 1,
Feature64Bit = 2,
FeatureADX = 3,
FeatureAES = 4,
FeatureAVX = 5,
FeatureAVX2 = 6,
FeatureAVX512 = 7,
FeatureBMI = 8,
FeatureBMI2 = 9,
FeatureBWI = 10,
FeatureCDI = 11,
FeatureCLFLUSHOPT = 12,
FeatureCLWB = 13,
FeatureCMOV = 14,
FeatureCMPXCHG16B = 15,
FeatureCallRegIndirect = 16,
FeatureDQI = 17,
FeatureERI = 18,
FeatureF16C = 19,
FeatureFMA = 20,
FeatureFMA4 = 21,
FeatureFSGSBase = 22,
FeatureFXSR = 23,
FeatureHLE = 24,
FeatureIFMA = 25,
FeatureINVPCID = 26,
FeatureLAHFSAHF = 27,
FeatureLEAForSP = 28,
FeatureLEAUsesAG = 29,
FeatureLZCNT = 30,
FeatureMMX = 31,
FeatureMOVBE = 32,
FeatureMPX = 33,
FeaturePCLMUL = 34,
FeaturePCOMMIT = 35,
FeaturePFI = 36,
FeaturePKU = 37,
FeaturePOPCNT = 38,
FeaturePREFETCHWT1 = 39,
FeaturePRFCHW = 40,
FeaturePadShortFunctions = 41,
FeatureRDRAND = 42,
FeatureRDSEED = 43,
FeatureRTM = 44,
FeatureSGX = 45,
FeatureSHA = 46,
FeatureSMAP = 47,
FeatureSSE1 = 48,
FeatureSSE2 = 49,
FeatureSSE3 = 50,
FeatureSSE4A = 51,
FeatureSSE41 = 52,
FeatureSSE42 = 53,
FeatureSSEUnalignedMem = 54,
FeatureSSSE3 = 55,
FeatureSlowBTMem = 56,
FeatureSlowDivide32 = 57,
FeatureSlowDivide64 = 58,
FeatureSlowIncDec = 59,
FeatureSlowLEA = 60,
FeatureSlowSHLD = 61,
FeatureSlowUAMem16 = 62,
FeatureSlowUAMem32 = 63,
FeatureSoftFloat = 64,
FeatureTBM = 65,
FeatureVBMI = 66,
FeatureVLX = 67,
FeatureVMFUNC = 68,
FeatureXOP = 69,
FeatureXSAVE = 70,
FeatureXSAVEC = 71,
FeatureXSAVEOPT = 72,
FeatureXSAVES = 73,
Mode16Bit = 74,
Mode32Bit = 75,
Mode64Bit = 76,
ProcIntelAtom = 77,
ProcIntelBDW = 78,
ProcIntelCNL = 79,
ProcIntelHSW = 80,
ProcIntelIVB = 81,
ProcIntelSKL = 82,
ProcIntelSKX = 83,
ProcIntelSLM = 84,
ProcIntelSNB = 85
};
}
} // end llvm namespace
#endif // GET_SUBTARGETINFO_ENUM
#ifdef GET_SUBTARGETINFO_MC_DESC
#undef GET_SUBTARGETINFO_MC_DESC
namespace llvm_ks {
// Sorted (by key) array of values for CPU features.
extern const llvm_ks::SubtargetFeatureKV X86FeatureKV[] = {
{ "16bit-mode", "16-bit mode (i8086)", { X86::Mode16Bit }, { } },
{ "32bit-mode", "32-bit mode (80386)", { X86::Mode32Bit }, { } },
{ "3dnow", "Enable 3DNow! instructions", { X86::Feature3DNow }, { X86::FeatureMMX } },
{ "3dnowa", "Enable 3DNow! Athlon instructions", { X86::Feature3DNowA }, { X86::Feature3DNow } },
{ "64bit", "Support 64-bit instructions", { X86::Feature64Bit }, { X86::FeatureCMOV } },
{ "64bit-mode", "64-bit mode (x86_64)", { X86::Mode64Bit }, { } },
{ "adx", "Support ADX instructions", { X86::FeatureADX }, { } },
{ "aes", "Enable AES instructions", { X86::FeatureAES }, { X86::FeatureSSE2 } },
{ "atom", "Intel Atom processors", { X86::ProcIntelAtom }, { } },
{ "avx", "Enable AVX instructions", { X86::FeatureAVX }, { X86::FeatureSSE42 } },
{ "avx2", "Enable AVX2 instructions", { X86::FeatureAVX2 }, { X86::FeatureAVX } },
{ "avx512bw", "Enable AVX-512 Byte and Word Instructions", { X86::FeatureBWI }, { X86::FeatureAVX512 } },
{ "avx512cd", "Enable AVX-512 Conflict Detection Instructions", { X86::FeatureCDI }, { X86::FeatureAVX512 } },
{ "avx512dq", "Enable AVX-512 Doubleword and Quadword Instructions", { X86::FeatureDQI }, { X86::FeatureAVX512 } },
{ "avx512er", "Enable AVX-512 Exponential and Reciprocal Instructions", { X86::FeatureERI }, { X86::FeatureAVX512 } },
{ "avx512f", "Enable AVX-512 instructions", { X86::FeatureAVX512 }, { X86::FeatureAVX2 } },
{ "avx512pf", "Enable AVX-512 PreFetch Instructions", { X86::FeaturePFI }, { X86::FeatureAVX512 } },
{ "avx512vbmi", "Enable AVX-512 Vector Bit Manipulation Instructions", { X86::FeatureVBMI }, { X86::FeatureAVX512 } },
{ "avx512vl", "Enable AVX-512 Vector Length eXtensions", { X86::FeatureVLX }, { X86::FeatureAVX512 } },
{ "bdw", " Intel Broadwell Processor", { X86::ProcIntelBDW }, { X86::ProcIntelHSW, X86::FeatureADX, X86::FeatureRDSEED, X86::FeatureSMAP } },
{ "bmi", "Support BMI instructions", { X86::FeatureBMI }, { } },
{ "bmi2", "Support BMI2 instructions", { X86::FeatureBMI2 }, { } },
{ "call-reg-indirect", "Call register indirect", { X86::FeatureCallRegIndirect }, { } },
{ "clflushopt", "Flush A Cache Line Optimized", { X86::FeatureCLFLUSHOPT }, { } },
{ "clwb", "Cache Line Write Back", { X86::FeatureCLWB }, { } },
{ "cmov", "Enable conditional move instructions", { X86::FeatureCMOV }, { } },
{ "cnl", " Intel Cannonlake Processor", { X86::ProcIntelCNL }, { X86::ProcIntelSKX, X86::FeatureVBMI, X86::FeatureIFMA, X86::FeatureSHA } },
{ "cx16", "64-bit with cmpxchg16b", { X86::FeatureCMPXCHG16B }, { X86::Feature64Bit } },
{ "f16c", "Support 16-bit floating point conversion instructions", { X86::FeatureF16C }, { X86::FeatureAVX } },
{ "fma", "Enable three-operand fused multiple-add", { X86::FeatureFMA }, { X86::FeatureAVX } },
{ "fma4", "Enable four-operand fused multiple-add", { X86::FeatureFMA4 }, { X86::FeatureAVX, X86::FeatureSSE4A } },
{ "fsgsbase", "Support FS/GS Base instructions", { X86::FeatureFSGSBase }, { } },
{ "fxsr", "Support fxsave/fxrestore instructions", { X86::FeatureFXSR }, { } },
{ "hle", "Support HLE", { X86::FeatureHLE }, { } },
{ "hsw", " Intel Haswell Processor", { X86::ProcIntelHSW }, { X86::ProcIntelIVB, X86::FeatureAVX2, X86::FeatureBMI, X86::FeatureBMI2, X86::FeatureFMA, X86::FeatureLZCNT, X86::FeatureMOVBE, X86::FeatureINVPCID, X86::FeatureVMFUNC, X86::FeatureRTM, X86::FeatureHLE, X86::FeatureSlowIncDec } },
{ "idivl-to-divb", "Use 8-bit divide for positive values less than 256", { X86::FeatureSlowDivide32 }, { } },
{ "idivq-to-divw", "Use 16-bit divide for positive values less than 65536", { X86::FeatureSlowDivide64 }, { } },
{ "ifma", "Enable AVX-512 Integer Fused Multiple-Add", { X86::FeatureIFMA }, { X86::FeatureAVX512 } },
{ "invpcid", "Invalidate Process-Context Identifier", { X86::FeatureINVPCID }, { } },
{ "ivb", " Intel IvyBridge Processor", { X86::ProcIntelIVB }, { X86::ProcIntelSNB, X86::FeatureRDRAND, X86::FeatureF16C, X86::FeatureFSGSBase } },
{ "lea-sp", "Use LEA for adjusting the stack pointer", { X86::FeatureLEAForSP }, { } },
{ "lea-uses-ag", "LEA instruction needs inputs at AG stage", { X86::FeatureLEAUsesAG }, { } },
{ "lzcnt", "Support LZCNT instruction", { X86::FeatureLZCNT }, { } },
{ "mmx", "Enable MMX instructions", { X86::FeatureMMX }, { } },
{ "movbe", "Support MOVBE instruction", { X86::FeatureMOVBE }, { } },
{ "mpx", "Support MPX instructions", { X86::FeatureMPX }, { } },
{ "pad-short-functions", "Pad short functions", { X86::FeaturePadShortFunctions }, { } },
{ "pclmul", "Enable packed carry-less multiplication instructions", { X86::FeaturePCLMUL }, { X86::FeatureSSE2 } },
{ "pcommit", "Enable Persistent Commit", { X86::FeaturePCOMMIT }, { } },
{ "pku", "Enable protection keys", { X86::FeaturePKU }, { } },
{ "popcnt", "Support POPCNT instruction", { X86::FeaturePOPCNT }, { } },
{ "prefetchwt1", "Prefetch with Intent to Write and T1 Hint", { X86::FeaturePREFETCHWT1 }, { } },
{ "prfchw", "Support PRFCHW instructions", { X86::FeaturePRFCHW }, { } },
{ "rdrnd", "Support RDRAND instruction", { X86::FeatureRDRAND }, { } },
{ "rdseed", "Support RDSEED instruction", { X86::FeatureRDSEED }, { } },
{ "rtm", "Support RTM instructions", { X86::FeatureRTM }, { } },
{ "sahf", "Support LAHF and SAHF instructions", { X86::FeatureLAHFSAHF }, { } },
{ "sgx", "Enable Software Guard Extensions", { X86::FeatureSGX }, { } },
{ "sha", "Enable SHA instructions", { X86::FeatureSHA }, { X86::FeatureSSE2 } },
{ "skl", " Intel Skylake Client Processor", { X86::ProcIntelSKL }, { X86::ProcIntelBDW, X86::FeatureMPX, X86::FeatureXSAVEC, X86::FeatureXSAVES, X86::FeatureSGX, X86::FeatureCLFLUSHOPT } },
{ "skx", " Intel Skylake Server Processor", { X86::ProcIntelSKX }, { X86::ProcIntelSKL, X86::FeatureAVX512, X86::FeatureCDI, X86::FeatureDQI, X86::FeatureBWI, X86::FeatureVLX, X86::FeaturePKU, X86::FeaturePCOMMIT, X86::FeatureCLWB } },
{ "slm", "Intel Silvermont processors", { X86::ProcIntelSLM }, { } },
{ "slow-bt-mem", "Bit testing of memory is slow", { X86::FeatureSlowBTMem }, { } },
{ "slow-incdec", "INC and DEC instructions are slower than ADD and SUB", { X86::FeatureSlowIncDec }, { } },
{ "slow-lea", "LEA instruction with certain arguments is slow", { X86::FeatureSlowLEA }, { } },
{ "slow-shld", "SHLD instruction is slow", { X86::FeatureSlowSHLD }, { } },
{ "slow-unaligned-mem-16", "Slow unaligned 16-byte memory access", { X86::FeatureSlowUAMem16 }, { } },
{ "slow-unaligned-mem-32", "Slow unaligned 32-byte memory access", { X86::FeatureSlowUAMem32 }, { } },
{ "smap", "Supervisor Mode Access Protection", { X86::FeatureSMAP }, { } },
{ "snb", " Intel SandyBridge Processor", { X86::ProcIntelSNB }, { X86::FeatureMMX, X86::FeatureAVX, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeaturePOPCNT, X86::FeatureAES, X86::FeaturePCLMUL, X86::FeatureXSAVE, X86::FeatureXSAVEOPT, X86::FeatureLAHFSAHF } },
{ "soft-float", "Use software floating point features.", { X86::FeatureSoftFloat }, { } },
{ "sse", "Enable SSE instructions", { X86::FeatureSSE1 }, { X86::FeatureCMOV } },
{ "sse-unaligned-mem", "Allow unaligned memory operands with SSE instructions", { X86::FeatureSSEUnalignedMem }, { } },
{ "sse2", "Enable SSE2 instructions", { X86::FeatureSSE2 }, { X86::FeatureSSE1 } },
{ "sse3", "Enable SSE3 instructions", { X86::FeatureSSE3 }, { X86::FeatureSSE2 } },
{ "sse4.1", "Enable SSE 4.1 instructions", { X86::FeatureSSE41 }, { X86::FeatureSSSE3 } },
{ "sse4.2", "Enable SSE 4.2 instructions", { X86::FeatureSSE42 }, { X86::FeatureSSE41 } },
{ "sse4a", "Support SSE 4a instructions", { X86::FeatureSSE4A }, { X86::FeatureSSE3 } },
{ "ssse3", "Enable SSSE3 instructions", { X86::FeatureSSSE3 }, { X86::FeatureSSE3 } },
{ "tbm", "Enable TBM instructions", { X86::FeatureTBM }, { } },
{ "vmfunc", "VM Functions", { X86::FeatureVMFUNC }, { } },
{ "xop", "Enable XOP instructions", { X86::FeatureXOP }, { X86::FeatureFMA4 } },
{ "xsave", "Support xsave instructions", { X86::FeatureXSAVE }, { } },
{ "xsavec", "Support xsavec instructions", { X86::FeatureXSAVEC }, { } },
{ "xsaveopt", "Support xsaveopt instructions", { X86::FeatureXSAVEOPT }, { } },
{ "xsaves", "Support xsaves instructions", { X86::FeatureXSAVES }, { } }
};
// Sorted (by key) array of values for CPU subtype.
extern const llvm_ks::SubtargetFeatureKV X86SubTypeKV[] = {
{ "amdfam10", "Select the amdfam10 processor", { X86::FeatureSSE4A, X86::Feature3DNowA, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeatureLZCNT, X86::FeaturePOPCNT, X86::FeatureSlowBTMem, X86::FeatureSlowSHLD, X86::FeatureLAHFSAHF }, { } },
{ "athlon", "Select the athlon processor", { X86::FeatureSlowUAMem16, X86::Feature3DNowA, X86::FeatureSlowBTMem, X86::FeatureSlowSHLD }, { } },
{ "athlon-4", "Select the athlon-4 processor", { X86::FeatureSlowUAMem16, X86::FeatureSSE1, X86::Feature3DNowA, X86::FeatureFXSR, X86::FeatureSlowBTMem, X86::FeatureSlowSHLD }, { } },
{ "athlon-fx", "Select the athlon-fx processor", { X86::FeatureSlowUAMem16, X86::FeatureSSE2, X86::Feature3DNowA, X86::FeatureFXSR, X86::Feature64Bit, X86::FeatureSlowBTMem, X86::FeatureSlowSHLD }, { } },
{ "athlon-mp", "Select the athlon-mp processor", { X86::FeatureSlowUAMem16, X86::FeatureSSE1, X86::Feature3DNowA, X86::FeatureFXSR, X86::FeatureSlowBTMem, X86::FeatureSlowSHLD }, { } },
{ "athlon-tbird", "Select the athlon-tbird processor", { X86::FeatureSlowUAMem16, X86::Feature3DNowA, X86::FeatureSlowBTMem, X86::FeatureSlowSHLD }, { } },
{ "athlon-xp", "Select the athlon-xp processor", { X86::FeatureSlowUAMem16, X86::FeatureSSE1, X86::Feature3DNowA, X86::FeatureFXSR, X86::FeatureSlowBTMem, X86::FeatureSlowSHLD }, { } },
{ "athlon64", "Select the athlon64 processor", { X86::FeatureSlowUAMem16, X86::FeatureSSE2, X86::Feature3DNowA, X86::FeatureFXSR, X86::Feature64Bit, X86::FeatureSlowBTMem, X86::FeatureSlowSHLD }, { } },
{ "athlon64-sse3", "Select the athlon64-sse3 processor", { X86::FeatureSlowUAMem16, X86::FeatureSSE3, X86::Feature3DNowA, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeatureSlowBTMem, X86::FeatureSlowSHLD }, { } },
{ "atom", "Select the atom processor", { X86::ProcIntelAtom, X86::FeatureSlowUAMem16, X86::FeatureMMX, X86::FeatureSSSE3, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeatureMOVBE, X86::FeatureSlowBTMem, X86::FeatureLEAForSP, X86::FeatureSlowDivide32, X86::FeatureSlowDivide64, X86::FeatureCallRegIndirect, X86::FeatureLEAUsesAG, X86::FeaturePadShortFunctions, X86::FeatureLAHFSAHF }, { } },
{ "barcelona", "Select the barcelona processor", { X86::FeatureSSE4A, X86::Feature3DNowA, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeatureLZCNT, X86::FeaturePOPCNT, X86::FeatureSlowBTMem, X86::FeatureSlowSHLD, X86::FeatureLAHFSAHF }, { } },
{ "bdver1", "Select the bdver1 processor", { X86::FeatureXOP, X86::FeatureFMA4, X86::FeatureCMPXCHG16B, X86::FeatureAES, X86::FeaturePRFCHW, X86::FeaturePCLMUL, X86::FeatureMMX, X86::FeatureAVX, X86::FeatureFXSR, X86::FeatureSSE4A, X86::FeatureLZCNT, X86::FeaturePOPCNT, X86::FeatureXSAVE, X86::FeatureSlowSHLD, X86::FeatureLAHFSAHF }, { } },
{ "bdver2", "Select the bdver2 processor", { X86::FeatureXOP, X86::FeatureFMA4, X86::FeatureCMPXCHG16B, X86::FeatureAES, X86::FeaturePRFCHW, X86::FeaturePCLMUL, X86::FeatureMMX, X86::FeatureAVX, X86::FeatureFXSR, X86::FeatureSSE4A, X86::FeatureF16C, X86::FeatureLZCNT, X86::FeaturePOPCNT, X86::FeatureXSAVE, X86::FeatureBMI, X86::FeatureTBM, X86::FeatureFMA, X86::FeatureSlowSHLD, X86::FeatureLAHFSAHF }, { } },
{ "bdver3", "Select the bdver3 processor", { X86::FeatureXOP, X86::FeatureFMA4, X86::FeatureCMPXCHG16B, X86::FeatureAES, X86::FeaturePRFCHW, X86::FeaturePCLMUL, X86::FeatureMMX, X86::FeatureAVX, X86::FeatureFXSR, X86::FeatureSSE4A, X86::FeatureF16C, X86::FeatureLZCNT, X86::FeaturePOPCNT, X86::FeatureXSAVE, X86::FeatureBMI, X86::FeatureTBM, X86::FeatureFMA, X86::FeatureXSAVEOPT, X86::FeatureSlowSHLD, X86::FeatureFSGSBase, X86::FeatureLAHFSAHF }, { } },
{ "bdver4", "Select the bdver4 processor", { X86::FeatureMMX, X86::FeatureAVX2, X86::FeatureFXSR, X86::FeatureXOP, X86::FeatureFMA4, X86::FeatureCMPXCHG16B, X86::FeatureAES, X86::FeaturePRFCHW, X86::FeaturePCLMUL, X86::FeatureF16C, X86::FeatureLZCNT, X86::FeaturePOPCNT, X86::FeatureXSAVE, X86::FeatureBMI, X86::FeatureBMI2, X86::FeatureTBM, X86::FeatureFMA, X86::FeatureXSAVEOPT, X86::FeatureFSGSBase, X86::FeatureLAHFSAHF }, { } },
{ "bonnell", "Select the bonnell processor", { X86::ProcIntelAtom, X86::FeatureSlowUAMem16, X86::FeatureMMX, X86::FeatureSSSE3, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeatureMOVBE, X86::FeatureSlowBTMem, X86::FeatureLEAForSP, X86::FeatureSlowDivide32, X86::FeatureSlowDivide64, X86::FeatureCallRegIndirect, X86::FeatureLEAUsesAG, X86::FeaturePadShortFunctions, X86::FeatureLAHFSAHF }, { } },
{ "broadwell", "Select the broadwell processor", { X86::ProcIntelBDW }, { } },
{ "btver1", "Select the btver1 processor", { X86::FeatureMMX, X86::FeatureSSSE3, X86::FeatureSSE4A, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeaturePRFCHW, X86::FeatureLZCNT, X86::FeaturePOPCNT, X86::FeatureXSAVE, X86::FeatureSlowSHLD, X86::FeatureLAHFSAHF }, { } },
{ "btver2", "Select the btver2 processor", { X86::FeatureMMX, X86::FeatureAVX, X86::FeatureFXSR, X86::FeatureSSE4A, X86::FeatureCMPXCHG16B, X86::FeaturePRFCHW, X86::FeatureAES, X86::FeaturePCLMUL, X86::FeatureBMI, X86::FeatureF16C, X86::FeatureMOVBE, X86::FeatureLZCNT, X86::FeaturePOPCNT, X86::FeatureXSAVE, X86::FeatureXSAVEOPT, X86::FeatureSlowSHLD, X86::FeatureLAHFSAHF }, { } },
{ "c3", "Select the c3 processor", { X86::FeatureSlowUAMem16, X86::Feature3DNow }, { } },
{ "c3-2", "Select the c3-2 processor", { X86::FeatureSlowUAMem16, X86::FeatureMMX, X86::FeatureSSE1, X86::FeatureFXSR }, { } },
{ "cannonlake", "Select the cannonlake processor", { X86::ProcIntelCNL }, { } },
{ "cnl", "Select the cnl processor", { X86::ProcIntelCNL }, { } },
{ "core-avx-i", "Select the core-avx-i processor", { X86::ProcIntelIVB, X86::FeatureSlowBTMem, X86::FeatureSlowUAMem32 }, { } },
{ "core-avx2", "Select the core-avx2 processor", { X86::ProcIntelHSW }, { } },
{ "core2", "Select the core2 processor", { X86::FeatureSlowUAMem16, X86::FeatureMMX, X86::FeatureSSSE3, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeatureSlowBTMem, X86::FeatureLAHFSAHF }, { } },
{ "corei7", "Select the corei7 processor", { X86::FeatureMMX, X86::FeatureSSE42, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeatureSlowBTMem, X86::FeaturePOPCNT, X86::FeatureLAHFSAHF }, { } },
{ "corei7-avx", "Select the corei7-avx processor", { X86::ProcIntelSNB, X86::FeatureSlowBTMem, X86::FeatureSlowUAMem32 }, { } },
{ "generic", "Select the generic processor", { X86::FeatureSlowUAMem16 }, { } },
{ "geode", "Select the geode processor", { X86::FeatureSlowUAMem16, X86::Feature3DNowA }, { } },
{ "haswell", "Select the haswell processor", { X86::ProcIntelHSW }, { } },
{ "i386", "Select the i386 processor", { X86::FeatureSlowUAMem16 }, { } },
{ "i486", "Select the i486 processor", { X86::FeatureSlowUAMem16 }, { } },
{ "i586", "Select the i586 processor", { X86::FeatureSlowUAMem16 }, { } },
{ "i686", "Select the i686 processor", { X86::FeatureSlowUAMem16 }, { } },
{ "ivybridge", "Select the ivybridge processor", { X86::ProcIntelIVB, X86::FeatureSlowBTMem, X86::FeatureSlowUAMem32 }, { } },
{ "k6", "Select the k6 processor", { X86::FeatureSlowUAMem16, X86::FeatureMMX }, { } },
{ "k6-2", "Select the k6-2 processor", { X86::FeatureSlowUAMem16, X86::Feature3DNow }, { } },
{ "k6-3", "Select the k6-3 processor", { X86::FeatureSlowUAMem16, X86::Feature3DNow }, { } },
{ "k8", "Select the k8 processor", { X86::FeatureSlowUAMem16, X86::FeatureSSE2, X86::Feature3DNowA, X86::FeatureFXSR, X86::Feature64Bit, X86::FeatureSlowBTMem, X86::FeatureSlowSHLD }, { } },
{ "k8-sse3", "Select the k8-sse3 processor", { X86::FeatureSlowUAMem16, X86::FeatureSSE3, X86::Feature3DNowA, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeatureSlowBTMem, X86::FeatureSlowSHLD }, { } },
{ "knl", "Select the knl processor", { X86::ProcIntelIVB, X86::FeatureAVX512, X86::FeatureERI, X86::FeatureCDI, X86::FeaturePFI, X86::FeaturePREFETCHWT1, X86::FeatureADX, X86::FeatureRDSEED, X86::FeatureMOVBE, X86::FeatureLZCNT, X86::FeatureBMI, X86::FeatureBMI2, X86::FeatureFMA }, { } },
{ "nehalem", "Select the nehalem processor", { X86::FeatureMMX, X86::FeatureSSE42, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeatureSlowBTMem, X86::FeaturePOPCNT, X86::FeatureLAHFSAHF }, { } },
{ "nocona", "Select the nocona processor", { X86::FeatureSlowUAMem16, X86::FeatureMMX, X86::FeatureSSE3, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeatureSlowBTMem }, { } },
{ "opteron", "Select the opteron processor", { X86::FeatureSlowUAMem16, X86::FeatureSSE2, X86::Feature3DNowA, X86::FeatureFXSR, X86::Feature64Bit, X86::FeatureSlowBTMem, X86::FeatureSlowSHLD }, { } },
{ "opteron-sse3", "Select the opteron-sse3 processor", { X86::FeatureSlowUAMem16, X86::FeatureSSE3, X86::Feature3DNowA, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeatureSlowBTMem, X86::FeatureSlowSHLD }, { } },
{ "penryn", "Select the penryn processor", { X86::FeatureSlowUAMem16, X86::FeatureMMX, X86::FeatureSSE41, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeatureSlowBTMem, X86::FeatureLAHFSAHF }, { } },
{ "pentium", "Select the pentium processor", { X86::FeatureSlowUAMem16 }, { } },
{ "pentium-m", "Select the pentium-m processor", { X86::FeatureSlowUAMem16, X86::FeatureMMX, X86::FeatureSSE2, X86::FeatureFXSR, X86::FeatureSlowBTMem }, { } },
{ "pentium-mmx", "Select the pentium-mmx processor", { X86::FeatureSlowUAMem16, X86::FeatureMMX }, { } },
{ "pentium2", "Select the pentium2 processor", { X86::FeatureSlowUAMem16, X86::FeatureMMX, X86::FeatureCMOV, X86::FeatureFXSR }, { } },
{ "pentium3", "Select the pentium3 processor", { X86::FeatureSlowUAMem16, X86::FeatureMMX, X86::FeatureSSE1, X86::FeatureFXSR }, { } },
{ "pentium3m", "Select the pentium3m processor", { X86::FeatureSlowUAMem16, X86::FeatureMMX, X86::FeatureSSE1, X86::FeatureFXSR, X86::FeatureSlowBTMem }, { } },
{ "pentium4", "Select the pentium4 processor", { X86::FeatureSlowUAMem16, X86::FeatureMMX, X86::FeatureSSE2, X86::FeatureFXSR }, { } },
{ "pentium4m", "Select the pentium4m processor", { X86::FeatureSlowUAMem16, X86::FeatureMMX, X86::FeatureSSE2, X86::FeatureFXSR, X86::FeatureSlowBTMem }, { } },
{ "pentiumpro", "Select the pentiumpro processor", { X86::FeatureSlowUAMem16, X86::FeatureCMOV }, { } },
{ "prescott", "Select the prescott processor", { X86::FeatureSlowUAMem16, X86::FeatureMMX, X86::FeatureSSE3, X86::FeatureFXSR, X86::FeatureSlowBTMem }, { } },
{ "sandybridge", "Select the sandybridge processor", { X86::ProcIntelSNB, X86::FeatureSlowBTMem, X86::FeatureSlowUAMem32 }, { } },
{ "silvermont", "Select the silvermont processor", { X86::ProcIntelSLM, X86::FeatureMMX, X86::FeatureSSE42, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeatureMOVBE, X86::FeaturePOPCNT, X86::FeaturePCLMUL, X86::FeatureAES, X86::FeatureSlowDivide64, X86::FeatureCallRegIndirect, X86::FeaturePRFCHW, X86::FeatureSlowLEA, X86::FeatureSlowIncDec, X86::FeatureSlowBTMem, X86::FeatureLAHFSAHF }, { } },
{ "skl", "Select the skl processor", { X86::ProcIntelSKL }, { } },
{ "skx", "Select the skx processor", { X86::ProcIntelSKX }, { } },
{ "skylake", "Select the skylake processor", { X86::ProcIntelSKX }, { } },
{ "slm", "Select the slm processor", { X86::ProcIntelSLM, X86::FeatureMMX, X86::FeatureSSE42, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeatureMOVBE, X86::FeaturePOPCNT, X86::FeaturePCLMUL, X86::FeatureAES, X86::FeatureSlowDivide64, X86::FeatureCallRegIndirect, X86::FeaturePRFCHW, X86::FeatureSlowLEA, X86::FeatureSlowIncDec, X86::FeatureSlowBTMem, X86::FeatureLAHFSAHF }, { } },
{ "westmere", "Select the westmere processor", { X86::FeatureMMX, X86::FeatureSSE42, X86::FeatureFXSR, X86::FeatureCMPXCHG16B, X86::FeatureSlowBTMem, X86::FeaturePOPCNT, X86::FeatureAES, X86::FeaturePCLMUL, X86::FeatureLAHFSAHF }, { } },
{ "winchip-c6", "Select the winchip-c6 processor", { X86::FeatureSlowUAMem16, X86::FeatureMMX }, { } },
{ "winchip2", "Select the winchip2 processor", { X86::FeatureSlowUAMem16, X86::Feature3DNow }, { } },
{ "x86-64", "Select the x86-64 processor", { X86::FeatureMMX, X86::FeatureSSE2, X86::FeatureFXSR, X86::Feature64Bit, X86::FeatureSlowBTMem }, { } },
{ "yonah", "Select the yonah processor", { X86::FeatureSlowUAMem16, X86::FeatureMMX, X86::FeatureSSE3, X86::FeatureFXSR, X86::FeatureSlowBTMem }, { } }
};
#ifdef DBGFIELD
#error "<target>GenSubtargetInfo.inc requires a DBGFIELD macro"
#endif
#ifndef NDEBUG
#define DBGFIELD(x) x,
#else
#define DBGFIELD(x)
#endif
#undef DBGFIELD
static inline MCSubtargetInfo *createX86MCSubtargetInfoImpl(const Triple &TT, StringRef CPU, StringRef FS) {
return new MCSubtargetInfo(TT, CPU, FS, X86FeatureKV, X86SubTypeKV, NULL);
}
} // end llvm namespace
#endif // GET_SUBTARGETINFO_MC_DESC
#ifdef GET_SUBTARGETINFO_TARGET_DESC
#undef GET_SUBTARGETINFO_TARGET_DESC
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
// ParseSubtargetFeatures - Parses features string setting specified
// subtarget options.
void llvm_ks::X86Subtarget::ParseSubtargetFeatures(StringRef CPU, StringRef FS) {
DEBUG(dbgs() << "\nFeatures:" << FS);
DEBUG(dbgs() << "\nCPU:" << CPU << "\n\n");
InitMCProcessorInfo(CPU, FS);
const FeatureBitset& Bits = getFeatureBits();
if (Bits[X86::Feature3DNow] && X863DNowLevel < ThreeDNow) X863DNowLevel = ThreeDNow;
if (Bits[X86::Feature3DNowA] && X863DNowLevel < ThreeDNowA) X863DNowLevel = ThreeDNowA;
if (Bits[X86::Feature64Bit]) HasX86_64 = true;
if (Bits[X86::FeatureADX]) HasADX = true;
if (Bits[X86::FeatureAES]) HasAES = true;
if (Bits[X86::FeatureAVX] && X86SSELevel < AVX) X86SSELevel = AVX;
if (Bits[X86::FeatureAVX2] && X86SSELevel < AVX2) X86SSELevel = AVX2;
if (Bits[X86::FeatureAVX512] && X86SSELevel < AVX512F) X86SSELevel = AVX512F;
if (Bits[X86::FeatureBMI]) HasBMI = true;
if (Bits[X86::FeatureBMI2]) HasBMI2 = true;
if (Bits[X86::FeatureBWI]) HasBWI = true;
if (Bits[X86::FeatureCDI]) HasCDI = true;
if (Bits[X86::FeatureCLFLUSHOPT]) HasCLFLUSHOPT = true;
if (Bits[X86::FeatureCLWB]) HasCLWB = true;
if (Bits[X86::FeatureCMOV]) HasCMov = true;
if (Bits[X86::FeatureCMPXCHG16B]) HasCmpxchg16b = true;
if (Bits[X86::FeatureCallRegIndirect]) CallRegIndirect = true;
if (Bits[X86::FeatureDQI]) HasDQI = true;
if (Bits[X86::FeatureERI]) HasERI = true;
if (Bits[X86::FeatureF16C]) HasF16C = true;
if (Bits[X86::FeatureFMA]) HasFMA = true;
if (Bits[X86::FeatureFMA4]) HasFMA4 = true;
if (Bits[X86::FeatureFSGSBase]) HasFSGSBase = true;
if (Bits[X86::FeatureFXSR]) HasFXSR = true;
if (Bits[X86::FeatureHLE]) HasHLE = true;
if (Bits[X86::FeatureIFMA]) HasIFMA = true;
if (Bits[X86::FeatureINVPCID]) HasInvPCId = true;
if (Bits[X86::FeatureLAHFSAHF]) HasLAHFSAHF = true;
if (Bits[X86::FeatureLEAForSP]) UseLeaForSP = true;
if (Bits[X86::FeatureLEAUsesAG]) LEAUsesAG = true;
if (Bits[X86::FeatureLZCNT]) HasLZCNT = true;
if (Bits[X86::FeatureMMX] && X863DNowLevel < MMX) X863DNowLevel = MMX;
if (Bits[X86::FeatureMOVBE]) HasMOVBE = true;
if (Bits[X86::FeatureMPX]) HasMPX = true;
if (Bits[X86::FeaturePCLMUL]) HasPCLMUL = true;
if (Bits[X86::FeaturePCOMMIT]) HasPCOMMIT = true;
if (Bits[X86::FeaturePFI]) HasPFI = true;
if (Bits[X86::FeaturePKU]) HasPKU = true;
if (Bits[X86::FeaturePOPCNT]) HasPOPCNT = true;
if (Bits[X86::FeaturePREFETCHWT1]) HasPFPREFETCHWT1 = true;
if (Bits[X86::FeaturePRFCHW]) HasPRFCHW = true;
if (Bits[X86::FeaturePadShortFunctions]) PadShortFunctions = true;
if (Bits[X86::FeatureRDRAND]) HasRDRAND = true;
if (Bits[X86::FeatureRDSEED]) HasRDSEED = true;
if (Bits[X86::FeatureRTM]) HasRTM = true;
if (Bits[X86::FeatureSGX]) HasSGX = true;
if (Bits[X86::FeatureSHA]) HasSHA = true;
if (Bits[X86::FeatureSMAP]) HasSMAP = true;
if (Bits[X86::FeatureSSE1] && X86SSELevel < SSE1) X86SSELevel = SSE1;
if (Bits[X86::FeatureSSE2] && X86SSELevel < SSE2) X86SSELevel = SSE2;
if (Bits[X86::FeatureSSE3] && X86SSELevel < SSE3) X86SSELevel = SSE3;
if (Bits[X86::FeatureSSE4A]) HasSSE4A = true;
if (Bits[X86::FeatureSSE41] && X86SSELevel < SSE41) X86SSELevel = SSE41;
if (Bits[X86::FeatureSSE42] && X86SSELevel < SSE42) X86SSELevel = SSE42;
if (Bits[X86::FeatureSSEUnalignedMem]) HasSSEUnalignedMem = true;
if (Bits[X86::FeatureSSSE3] && X86SSELevel < SSSE3) X86SSELevel = SSSE3;
if (Bits[X86::FeatureSlowBTMem]) IsBTMemSlow = true;
if (Bits[X86::FeatureSlowDivide32]) HasSlowDivide32 = true;
if (Bits[X86::FeatureSlowDivide64]) HasSlowDivide64 = true;
if (Bits[X86::FeatureSlowIncDec]) SlowIncDec = true;
if (Bits[X86::FeatureSlowLEA]) SlowLEA = true;
if (Bits[X86::FeatureSlowSHLD]) IsSHLDSlow = true;
if (Bits[X86::FeatureSlowUAMem16]) IsUAMem16Slow = true;
if (Bits[X86::FeatureSlowUAMem32]) IsUAMem32Slow = true;
if (Bits[X86::FeatureSoftFloat]) UseSoftFloat = true;
if (Bits[X86::FeatureTBM]) HasTBM = true;
if (Bits[X86::FeatureVBMI]) HasVBMI = true;
if (Bits[X86::FeatureVLX]) HasVLX = true;
if (Bits[X86::FeatureVMFUNC]) HasVMFUNC = true;
if (Bits[X86::FeatureXOP]) HasXOP = true;
if (Bits[X86::FeatureXSAVE]) HasXSAVE = true;
if (Bits[X86::FeatureXSAVEC]) HasXSAVEC = true;
if (Bits[X86::FeatureXSAVEOPT]) HasXSAVEOPT = true;
if (Bits[X86::FeatureXSAVES]) HasXSAVES = true;
if (Bits[X86::Mode16Bit]) In16BitMode = true;
if (Bits[X86::Mode32Bit]) In32BitMode = true;
if (Bits[X86::Mode64Bit]) In64BitMode = true;
if (Bits[X86::ProcIntelAtom] && X86ProcFamily < IntelAtom) X86ProcFamily = IntelAtom;
if (Bits[X86::ProcIntelBDW] && X86ProcFamily < IntelBDW) X86ProcFamily = IntelBDW;
if (Bits[X86::ProcIntelCNL] && X86ProcFamily < IntelCNL) X86ProcFamily = IntelCNL;
if (Bits[X86::ProcIntelHSW] && X86ProcFamily < IntelHSW) X86ProcFamily = IntelHSW;
if (Bits[X86::ProcIntelIVB] && X86ProcFamily < IntelIVB) X86ProcFamily = IntelIVB;
if (Bits[X86::ProcIntelSKL] && X86ProcFamily < IntelSKL) X86ProcFamily = IntelSKL;
if (Bits[X86::ProcIntelSKX] && X86ProcFamily < IntelSKX) X86ProcFamily = IntelSKX;
if (Bits[X86::ProcIntelSLM] && X86ProcFamily < IntelSLM) X86ProcFamily = IntelSLM;
if (Bits[X86::ProcIntelSNB] && X86ProcFamily < IntelSNB) X86ProcFamily = IntelSNB;
}
#endif // GET_SUBTARGETINFO_TARGET_DESC