/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|* *|
|* Subtarget Enumeration Source Fragment *|
|* *|
|* Automatically generated file, do not edit! *|
|* *|
\*===----------------------------------------------------------------------===*/
#ifdef GET_SUBTARGETINFO_ENUM
#undef GET_SUBTARGETINFO_ENUM
namespace llvm {
namespace X86 {
enum {
Feature3DNow = 0,
Feature3DNowA = 1,
Feature64Bit = 2,
FeatureADX = 3,
FeatureAES = 4,
FeatureAVX = 5,
FeatureAVX2 = 6,
FeatureAVX512 = 7,
FeatureBF16 = 8,
FeatureBITALG = 9,
FeatureBMI = 10,
FeatureBMI2 = 11,
FeatureBWI = 12,
FeatureBranchFusion = 13,
FeatureCDI = 14,
FeatureCLDEMOTE = 15,
FeatureCLFLUSHOPT = 16,
FeatureCLWB = 17,
FeatureCLZERO = 18,
FeatureCMOV = 19,
FeatureCMPXCHG8B = 20,
FeatureCMPXCHG16B = 21,
FeatureDQI = 22,
FeatureDeprecatedMPX = 23,
FeatureENQCMD = 24,
FeatureERI = 25,
FeatureERMSB = 26,
FeatureF16C = 27,
FeatureFMA = 28,
FeatureFMA4 = 29,
FeatureFSGSBase = 30,
FeatureFXSR = 31,
FeatureFast11ByteNOP = 32,
FeatureFast15ByteNOP = 33,
FeatureFastBEXTR = 34,
FeatureFastHorizontalOps = 35,
FeatureFastLZCNT = 36,
FeatureFastPartialYMMorZMMWrite = 37,
FeatureFastSHLDRotate = 38,
FeatureFastScalarFSQRT = 39,
FeatureFastScalarShiftMasks = 40,
FeatureFastVariableShuffle = 41,
FeatureFastVectorFSQRT = 42,
FeatureFastVectorShiftMasks = 43,
FeatureGFNI = 44,
FeatureHasFastGather = 45,
FeatureIFMA = 46,
FeatureINVPCID = 47,
FeatureLAHFSAHF = 48,
FeatureLEAForSP = 49,
FeatureLEAUsesAG = 50,
FeatureLWP = 51,
FeatureLZCNT = 52,
FeatureLZCNTFalseDeps = 53,
FeatureMMX = 54,
FeatureMOVBE = 55,
FeatureMOVDIR64B = 56,
FeatureMOVDIRI = 57,
FeatureMWAITX = 58,
FeatureMacroFusion = 59,
FeatureMergeToThreeWayBranch = 60,
FeatureNOPL = 61,
FeaturePCLMUL = 62,
FeaturePCONFIG = 63,
FeaturePFI = 64,
FeaturePKU = 65,
FeaturePOPCNT = 66,
FeaturePOPCNTFalseDeps = 67,
FeaturePREFETCHWT1 = 68,
FeaturePRFCHW = 69,
FeaturePTWRITE = 70,
FeaturePadShortFunctions = 71,
FeaturePrefer128Bit = 72,
FeaturePrefer256Bit = 73,
FeaturePreferMaskRegisters = 74,
FeatureRDPID = 75,
FeatureRDRAND = 76,
FeatureRDSEED = 77,
FeatureRTM = 78,
FeatureRetpoline = 79,
FeatureRetpolineExternalThunk = 80,
FeatureRetpolineIndirectBranches = 81,
FeatureRetpolineIndirectCalls = 82,
FeatureSGX = 83,
FeatureSHA = 84,
FeatureSHSTK = 85,
FeatureSSE1 = 86,
FeatureSSE2 = 87,
FeatureSSE3 = 88,
FeatureSSE4A = 89,
FeatureSSE41 = 90,
FeatureSSE42 = 91,
FeatureSSEUnalignedMem = 92,
FeatureSSSE3 = 93,
FeatureSlow3OpsLEA = 94,
FeatureSlowDivide32 = 95,
FeatureSlowDivide64 = 96,
FeatureSlowIncDec = 97,
FeatureSlowLEA = 98,
FeatureSlowPMADDWD = 99,
FeatureSlowPMULLD = 100,
FeatureSlowSHLD = 101,
FeatureSlowTwoMemOps = 102,
FeatureSlowUAMem16 = 103,
FeatureSlowUAMem32 = 104,
FeatureSoftFloat = 105,
FeatureTBM = 106,
FeatureUseAA = 107,
FeatureVAES = 108,
FeatureVBMI = 109,
FeatureVBMI2 = 110,
FeatureVLX = 111,
FeatureVNNI = 112,
FeatureVP2INTERSECT = 113,
FeatureVPCLMULQDQ = 114,
FeatureVPOPCNTDQ = 115,
FeatureWAITPKG = 116,
FeatureWBNOINVD = 117,
FeatureX87 = 118,
FeatureXOP = 119,
FeatureXSAVE = 120,
FeatureXSAVEC = 121,
FeatureXSAVEOPT = 122,
FeatureXSAVES = 123,
Mode16Bit = 124,
Mode32Bit = 125,
Mode64Bit = 126,
ProcIntelAtom = 127,
ProcIntelGLM = 128,
ProcIntelGLP = 129,
ProcIntelSLM = 130,
ProcIntelTRM = 131,
NumSubtargetFeatures = 132
};
} // end namespace X86
} // end namespace llvm
#endif // GET_SUBTARGETINFO_ENUM
#ifdef GET_SUBTARGETINFO_MC_DESC
#undef GET_SUBTARGETINFO_MC_DESC
namespace llvm {
// Sorted (by key) array of values for CPU features.
extern const llvm::SubtargetFeatureKV X86FeatureKV[] = {
{ "16bit-mode", "16-bit mode (i8086)", X86::Mode16Bit, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "32bit-mode", "32-bit mode (80386)", X86::Mode32Bit, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "3dnow", "Enable 3DNow! instructions", X86::Feature3DNow, { { { 0x40000000000000ULL, 0x0ULL, 0x0ULL, } } } },
{ "3dnowa", "Enable 3DNow! Athlon instructions", X86::Feature3DNowA, { { { 0x1ULL, 0x0ULL, 0x0ULL, } } } },
{ "64bit", "Support 64-bit instructions", X86::Feature64Bit, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "64bit-mode", "64-bit mode (x86_64)", X86::Mode64Bit, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "adx", "Support ADX instructions", X86::FeatureADX, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "aes", "Enable AES instructions", X86::FeatureAES, { { { 0x0ULL, 0x800000ULL, 0x0ULL, } } } },
{ "avx", "Enable AVX instructions", X86::FeatureAVX, { { { 0x0ULL, 0x8000000ULL, 0x0ULL, } } } },
{ "avx2", "Enable AVX2 instructions", X86::FeatureAVX2, { { { 0x20ULL, 0x0ULL, 0x0ULL, } } } },
{ "avx512bf16", "Support bfloat16 floating point", X86::FeatureBF16, { { { 0x1000ULL, 0x0ULL, 0x0ULL, } } } },
{ "avx512bitalg", "Enable AVX-512 Bit Algorithms", X86::FeatureBITALG, { { { 0x1000ULL, 0x0ULL, 0x0ULL, } } } },
{ "avx512bw", "Enable AVX-512 Byte and Word Instructions", X86::FeatureBWI, { { { 0x80ULL, 0x0ULL, 0x0ULL, } } } },
{ "avx512cd", "Enable AVX-512 Conflict Detection Instructions", X86::FeatureCDI, { { { 0x80ULL, 0x0ULL, 0x0ULL, } } } },
{ "avx512dq", "Enable AVX-512 Doubleword and Quadword Instructions", X86::FeatureDQI, { { { 0x80ULL, 0x0ULL, 0x0ULL, } } } },
{ "avx512er", "Enable AVX-512 Exponential and Reciprocal Instructions", X86::FeatureERI, { { { 0x80ULL, 0x0ULL, 0x0ULL, } } } },
{ "avx512f", "Enable AVX-512 instructions", X86::FeatureAVX512, { { { 0x18000040ULL, 0x0ULL, 0x0ULL, } } } },
{ "avx512ifma", "Enable AVX-512 Integer Fused Multiple-Add", X86::FeatureIFMA, { { { 0x80ULL, 0x0ULL, 0x0ULL, } } } },
{ "avx512pf", "Enable AVX-512 PreFetch Instructions", X86::FeaturePFI, { { { 0x80ULL, 0x0ULL, 0x0ULL, } } } },
{ "avx512vbmi", "Enable AVX-512 Vector Byte Manipulation Instructions", X86::FeatureVBMI, { { { 0x1000ULL, 0x0ULL, 0x0ULL, } } } },
{ "avx512vbmi2", "Enable AVX-512 further Vector Byte Manipulation Instructions", X86::FeatureVBMI2, { { { 0x1000ULL, 0x0ULL, 0x0ULL, } } } },
{ "avx512vl", "Enable AVX-512 Vector Length eXtensions", X86::FeatureVLX, { { { 0x80ULL, 0x0ULL, 0x0ULL, } } } },
{ "avx512vnni", "Enable AVX-512 Vector Neural Network Instructions", X86::FeatureVNNI, { { { 0x80ULL, 0x0ULL, 0x0ULL, } } } },
{ "avx512vp2intersect", "Enable AVX-512 vp2intersect", X86::FeatureVP2INTERSECT, { { { 0x80ULL, 0x0ULL, 0x0ULL, } } } },
{ "avx512vpopcntdq", "Enable AVX-512 Population Count Instructions", X86::FeatureVPOPCNTDQ, { { { 0x80ULL, 0x0ULL, 0x0ULL, } } } },
{ "bmi", "Support BMI instructions", X86::FeatureBMI, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "bmi2", "Support BMI2 instructions", X86::FeatureBMI2, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "branchfusion", "CMP/TEST can be fused with conditional branches", X86::FeatureBranchFusion, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "cldemote", "Enable Cache Demote", X86::FeatureCLDEMOTE, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "clflushopt", "Flush A Cache Line Optimized", X86::FeatureCLFLUSHOPT, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "clwb", "Cache Line Write Back", X86::FeatureCLWB, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "clzero", "Enable Cache Line Zero", X86::FeatureCLZERO, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "cmov", "Enable conditional move instructions", X86::FeatureCMOV, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "cx16", "64-bit with cmpxchg16b", X86::FeatureCMPXCHG16B, { { { 0x100000ULL, 0x0ULL, 0x0ULL, } } } },
{ "cx8", "Support CMPXCHG8B instructions", X86::FeatureCMPXCHG8B, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "enqcmd", "Has ENQCMD instructions", X86::FeatureENQCMD, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "ermsb", "REP MOVS/STOS are fast", X86::FeatureERMSB, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "f16c", "Support 16-bit floating point conversion instructions", X86::FeatureF16C, { { { 0x20ULL, 0x0ULL, 0x0ULL, } } } },
{ "false-deps-lzcnt-tzcnt", "LZCNT/TZCNT have a false dependency on dest register", X86::FeatureLZCNTFalseDeps, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "false-deps-popcnt", "POPCNT has a false dependency on dest register", X86::FeaturePOPCNTFalseDeps, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "fast-11bytenop", "Target can quickly decode up to 11 byte NOPs", X86::FeatureFast11ByteNOP, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "fast-15bytenop", "Target can quickly decode up to 15 byte NOPs", X86::FeatureFast15ByteNOP, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "fast-bextr", "Indicates that the BEXTR instruction is implemented as a single uop with good throughput", X86::FeatureFastBEXTR, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "fast-gather", "Indicates if gather is reasonably fast", X86::FeatureHasFastGather, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "fast-hops", "Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles", X86::FeatureFastHorizontalOps, { { { 0x0ULL, 0x1000000ULL, 0x0ULL, } } } },
{ "fast-lzcnt", "LZCNT instructions are as fast as most simple integer ops", X86::FeatureFastLZCNT, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "fast-partial-ymm-or-zmm-write", "Partial writes to YMM/ZMM registers are fast", X86::FeatureFastPartialYMMorZMMWrite, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "fast-scalar-fsqrt", "Scalar SQRT is fast (disable Newton-Raphson)", X86::FeatureFastScalarFSQRT, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "fast-scalar-shift-masks", "Prefer a left/right scalar logical shift pair over a shift+and pair", X86::FeatureFastScalarShiftMasks, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "fast-shld-rotate", "SHLD can be used as a faster rotate", X86::FeatureFastSHLDRotate, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "fast-variable-shuffle", "Shuffles with variable masks are fast", X86::FeatureFastVariableShuffle, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "fast-vector-fsqrt", "Vector SQRT is fast (disable Newton-Raphson)", X86::FeatureFastVectorFSQRT, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "fast-vector-shift-masks", "Prefer a left/right vector logical shift pair over a shift+and pair", X86::FeatureFastVectorShiftMasks, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "fma", "Enable three-operand fused multiple-add", X86::FeatureFMA, { { { 0x20ULL, 0x0ULL, 0x0ULL, } } } },
{ "fma4", "Enable four-operand fused multiple-add", X86::FeatureFMA4, { { { 0x20ULL, 0x2000000ULL, 0x0ULL, } } } },
{ "fsgsbase", "Support FS/GS Base instructions", X86::FeatureFSGSBase, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "fxsr", "Support fxsave/fxrestore instructions", X86::FeatureFXSR, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "gfni", "Enable Galois Field Arithmetic Instructions", X86::FeatureGFNI, { { { 0x0ULL, 0x800000ULL, 0x0ULL, } } } },
{ "idivl-to-divb", "Use 8-bit divide for positive values less than 256", X86::FeatureSlowDivide32, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "idivq-to-divl", "Use 32-bit divide for positive values less than 2^32", X86::FeatureSlowDivide64, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "invpcid", "Invalidate Process-Context Identifier", X86::FeatureINVPCID, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "lea-sp", "Use LEA for adjusting the stack pointer", X86::FeatureLEAForSP, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "lea-uses-ag", "LEA instruction needs inputs at AG stage", X86::FeatureLEAUsesAG, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "lwp", "Enable LWP instructions", X86::FeatureLWP, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "lzcnt", "Support LZCNT instruction", X86::FeatureLZCNT, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "macrofusion", "Various instructions can be fused with conditional branches", X86::FeatureMacroFusion, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "merge-to-threeway-branch", "Merge branches to a three-way conditional branch", X86::FeatureMergeToThreeWayBranch, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "mmx", "Enable MMX instructions", X86::FeatureMMX, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "movbe", "Support MOVBE instruction", X86::FeatureMOVBE, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "movdir64b", "Support movdir64b instruction", X86::FeatureMOVDIR64B, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "movdiri", "Support movdiri instruction", X86::FeatureMOVDIRI, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "mpx", "Deprecated. Support MPX instructions", X86::FeatureDeprecatedMPX, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "mwaitx", "Enable MONITORX/MWAITX timer functionality", X86::FeatureMWAITX, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "nopl", "Enable NOPL instruction", X86::FeatureNOPL, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "pad-short-functions", "Pad short functions", X86::FeaturePadShortFunctions, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "pclmul", "Enable packed carry-less multiplication instructions", X86::FeaturePCLMUL, { { { 0x0ULL, 0x800000ULL, 0x0ULL, } } } },
{ "pconfig", "platform configuration instruction", X86::FeaturePCONFIG, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "pku", "Enable protection keys", X86::FeaturePKU, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "popcnt", "Support POPCNT instruction", X86::FeaturePOPCNT, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "prefer-128-bit", "Prefer 128-bit AVX instructions", X86::FeaturePrefer128Bit, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "prefer-256-bit", "Prefer 256-bit AVX instructions", X86::FeaturePrefer256Bit, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "prefer-mask-registers", "Prefer AVX512 mask registers over PTEST/MOVMSK", X86::FeaturePreferMaskRegisters, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "prefetchwt1", "Prefetch with Intent to Write and T1 Hint", X86::FeaturePREFETCHWT1, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "prfchw", "Support PRFCHW instructions", X86::FeaturePRFCHW, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "ptwrite", "Support ptwrite instruction", X86::FeaturePTWRITE, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "rdpid", "Support RDPID instructions", X86::FeatureRDPID, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "rdrnd", "Support RDRAND instruction", X86::FeatureRDRAND, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "rdseed", "Support RDSEED instruction", X86::FeatureRDSEED, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "retpoline", "Remove speculation of indirect branches from the generated code, either by avoiding them entirely or lowering them with a speculation blocking construct", X86::FeatureRetpoline, { { { 0x0ULL, 0x60000ULL, 0x0ULL, } } } },
{ "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", X86::FeatureRetpolineExternalThunk, { { { 0x0ULL, 0x40000ULL, 0x0ULL, } } } },
{ "retpoline-indirect-branches", "Remove speculation of indirect branches from the generated code", X86::FeatureRetpolineIndirectBranches, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "retpoline-indirect-calls", "Remove speculation of indirect calls from the generated code", X86::FeatureRetpolineIndirectCalls, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "rtm", "Support RTM instructions", X86::FeatureRTM, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "sahf", "Support LAHF and SAHF instructions", X86::FeatureLAHFSAHF, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "sgx", "Enable Software Guard Extensions", X86::FeatureSGX, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "sha", "Enable SHA instructions", X86::FeatureSHA, { { { 0x0ULL, 0x800000ULL, 0x0ULL, } } } },
{ "shstk", "Support CET Shadow-Stack instructions", X86::FeatureSHSTK, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "slow-3ops-lea", "LEA instruction with 3 ops or certain registers is slow", X86::FeatureSlow3OpsLEA, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "slow-incdec", "INC and DEC instructions are slower than ADD and SUB", X86::FeatureSlowIncDec, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "slow-lea", "LEA instruction with certain arguments is slow", X86::FeatureSlowLEA, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "slow-pmaddwd", "PMADDWD is slower than PMULLD", X86::FeatureSlowPMADDWD, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "slow-pmulld", "PMULLD instruction is slow", X86::FeatureSlowPMULLD, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "slow-shld", "SHLD instruction is slow", X86::FeatureSlowSHLD, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "slow-two-mem-ops", "Two memory operand instructions are slow", X86::FeatureSlowTwoMemOps, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "slow-unaligned-mem-16", "Slow unaligned 16-byte memory access", X86::FeatureSlowUAMem16, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "slow-unaligned-mem-32", "Slow unaligned 32-byte memory access", X86::FeatureSlowUAMem32, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "soft-float", "Use software floating point features", X86::FeatureSoftFloat, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "sse", "Enable SSE instructions", X86::FeatureSSE1, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "sse-unaligned-mem", "Allow unaligned memory operands with SSE instructions", X86::FeatureSSEUnalignedMem, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "sse2", "Enable SSE2 instructions", X86::FeatureSSE2, { { { 0x0ULL, 0x400000ULL, 0x0ULL, } } } },
{ "sse3", "Enable SSE3 instructions", X86::FeatureSSE3, { { { 0x0ULL, 0x800000ULL, 0x0ULL, } } } },
{ "sse4.1", "Enable SSE 4.1 instructions", X86::FeatureSSE41, { { { 0x0ULL, 0x20000000ULL, 0x0ULL, } } } },
{ "sse4.2", "Enable SSE 4.2 instructions", X86::FeatureSSE42, { { { 0x0ULL, 0x4000000ULL, 0x0ULL, } } } },
{ "sse4a", "Support SSE 4a instructions", X86::FeatureSSE4A, { { { 0x0ULL, 0x1000000ULL, 0x0ULL, } } } },
{ "ssse3", "Enable SSSE3 instructions", X86::FeatureSSSE3, { { { 0x0ULL, 0x1000000ULL, 0x0ULL, } } } },
{ "tbm", "Enable TBM instructions", X86::FeatureTBM, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "use-aa", "Use alias analysis during codegen", X86::FeatureUseAA, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "vaes", "Promote selected AES instructions to AVX512/AVX registers", X86::FeatureVAES, { { { 0x30ULL, 0x0ULL, 0x0ULL, } } } },
{ "vpclmulqdq", "Enable vpclmulqdq instructions", X86::FeatureVPCLMULQDQ, { { { 0x4000000000000020ULL, 0x0ULL, 0x0ULL, } } } },
{ "waitpkg", "Wait and pause enhancements", X86::FeatureWAITPKG, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "wbnoinvd", "Write Back No Invalidate", X86::FeatureWBNOINVD, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "x87", "Enable X87 float instructions", X86::FeatureX87, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "xop", "Enable XOP instructions", X86::FeatureXOP, { { { 0x20000000ULL, 0x0ULL, 0x0ULL, } } } },
{ "xsave", "Support xsave instructions", X86::FeatureXSAVE, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "xsavec", "Support xsavec instructions", X86::FeatureXSAVEC, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "xsaveopt", "Support xsaveopt instructions", X86::FeatureXSAVEOPT, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
{ "xsaves", "Support xsaves instructions", X86::FeatureXSAVES, { { { 0x0ULL, 0x0ULL, 0x0ULL, } } } },
};
#ifdef DBGFIELD
#error "<target>GenSubtargetInfo.inc requires a DBGFIELD macro"
#endif
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
#define DBGFIELD(x) x,
#else
#define DBGFIELD(x)
#endif
// ===============================================================
// Data tables for the new per-operand machine model.
// {ProcResourceIdx, Cycles}
extern const llvm::MCWriteProcResEntry X86WriteProcResTable[] = {
{ 0, 0}, // Invalid
{ 3, 1}, // #1
{ 1, 1}, // #2
{ 3, 2}, // #3
{ 2, 1}, // #4
{ 3, 1}, // #5
{ 1, 1}, // #6
{ 3, 1}, // #7
{ 3, 7}, // #8
{ 3, 6}, // #9
{ 1, 5}, // #10
{ 3, 5}, // #11
{ 3, 16}, // #12
{ 3, 9}, // #13
{ 3, 11}, // #14
{ 3, 15}, // #15
{ 3, 8}, // #16
{ 3, 50}, // #17
{ 3, 130}, // #18
{ 3, 68}, // #19
{ 3, 125}, // #20
{ 3, 70}, // #21
{ 3, 34}, // #22
{ 3, 62}, // #23
{ 3, 10}, // #24
{ 3, 12}, // #25
{ 3, 14}, // #26
{ 1, 3}, // #27
{ 3, 3}, // #28
{ 3, 4}, // #29
{ 1, 4}, // #30
{ 3, 4}, // #31
{ 1, 2}, // #32
{ 3, 2}, // #33
{ 3, 71}, // #34
{ 2, 5}, // #35
{ 3, 5}, // #36
{ 1, 1}, // #37
{ 2, 1}, // #38
{ 3, 2}, // #39
{ 1, 5}, // #40
{ 2, 5}, // #41
{ 3, 10}, // #42
{ 3, 13}, // #43
{ 3, 17}, // #44
{ 3, 18}, // #45
{ 3, 20}, // #46
{ 3, 21}, // #47
{ 3, 22}, // #48
{ 3, 23}, // #49
{ 3, 25}, // #50
{ 3, 26}, // #51
{ 3, 29}, // #52
{ 3, 30}, // #53
{ 3, 32}, // #54
{ 3, 45}, // #55
{ 3, 46}, // #56
{ 3, 48}, // #57
{ 3, 55}, // #58
{ 3, 59}, // #59
{ 3, 63}, // #60
{ 3, 72}, // #61
{ 3, 74}, // #62
{ 3, 77}, // #63
{ 3, 78}, // #64
{ 3, 79}, // #65
{ 3, 92}, // #66
{ 3, 94}, // #67
{ 3, 99}, // #68
{ 3, 121}, // #69
{ 3, 127}, // #70
{ 3, 140}, // #71
{ 3, 141}, // #72
{ 3, 146}, // #73
{ 3, 147}, // #74
{ 3, 168}, // #75
{ 3, 174}, // #76
{ 3, 183}, // #77
{ 3, 202}, // #78
{ 5, 2}, // #79
{ 8, 2}, // #80
{11, 1}, // #81
{14, 1}, // #82
{19, 1}, // #83
{ 1, 2}, // #84
{ 5, 44}, // #85
{ 7, 44}, // #86
{ 8, 44}, // #87
{22, 1}, // #88
{24, 1}, // #89
{ 1, 3}, // #90
{ 2, 1}, // #91
{ 5, 1}, // #92
{ 7, 1}, // #93
{ 8, 1}, // #94
{22, 3}, // #95
{ 5, 1}, // #96
{ 8, 1}, // #97
{ 5, 6}, // #98
{ 8, 6}, // #99
{ 1, 1}, // #100
{13, 1}, // #101
{14, 3}, // #102
{20, 3}, // #103
{24, 1}, // #104
{ 1, 3}, // #105
{10, 3}, // #106
{14, 1}, // #107
{19, 1}, // #108
{22, 3}, // #109
{ 1, 1}, // #110
{13, 2}, // #111
{14, 36}, // #112
{20, 36}, // #113
{24, 1}, // #114
{10, 4}, // #115
{14, 1}, // #116
{16, 1}, // #117
{19, 1}, // #118
{ 1, 4}, // #119
{ 5, 2}, // #120
{ 8, 2}, // #121
{22, 3}, // #122
{24, 1}, // #123
{ 1, 3}, // #124
{ 5, 2}, // #125
{ 8, 2}, // #126
{22, 3}, // #127
{ 1, 3}, // #128
{10, 1}, // #129
{14, 1}, // #130
{15, 1}, // #131
{19, 1}, // #132
{22, 3}, // #133
{ 1, 3}, // #134
{12, 1}, // #135
{14, 1}, // #136
{15, 1}, // #137
{19, 1}, // #138
{22, 3}, // #139
{ 1, 3}, // #140
{10, 2}, // #141
{14, 1}, // #142
{19, 1}, // #143
{22, 3}, // #144
{ 1, 3}, // #145
{ 5, 6}, // #146
{ 8, 6}, // #147
{22, 3}, // #148
{ 1, 3}, // #149
{ 5, 8}, // #150
{ 8, 8}, // #151
{22, 3}, // #152
{ 1, 2}, // #153
{ 5, 7}, // #154
{ 8, 7}, // #155
{22, 2}, // #156
{ 1, 1}, // #157
{ 5, 42}, // #158
{ 8, 42}, // #159
{22, 1}, // #160
{ 1, 1}, // #161
{ 5, 44}, // #162
{ 8, 44}, // #163
{22, 1}, // #164
{ 1, 3}, // #165
{ 5, 1}, // #166
{ 8, 1}, // #167
{22, 3}, // #168
{ 1, 2}, // #169
{22, 2}, // #170
{ 5, 3}, // #171
{ 7, 3}, // #172
{ 8, 3}, // #173
{ 1, 3}, // #174
{ 5, 1}, // #175
{ 6, 1}, // #176
{ 8, 1}, // #177
{10, 1}, // #178
{14, 1}, // #179
{15, 1}, // #180
{19, 1}, // #181
{22, 3}, // #182
{ 1, 3}, // #183
{ 5, 4}, // #184
{ 8, 4}, // #185
{22, 3}, // #186
{ 1, 3}, // #187
{ 9, 1}, // #188
{13, 1}, // #189
{14, 1}, // #190
{15, 1}, // #191
{19, 1}, // #192
{22, 3}, // #193
{ 1, 3}, // #194
{ 5, 1}, // #195
{ 6, 1}, // #196
{ 8, 1}, // #197
{ 9, 1}, // #198
{10, 1}, // #199
{13, 1}, // #200
{14, 1}, // #201
{15, 1}, // #202
{19, 1}, // #203
{22, 3}, // #204
{ 1, 3}, // #205
{ 9, 2}, // #206
{13, 1}, // #207
{14, 1}, // #208
{15, 1}, // #209
{19, 1}, // #210
{22, 3}, // #211
{ 1, 3}, // #212
{ 4, 15}, // #213
{ 5, 1}, // #214
{ 7, 1}, // #215
{ 8, 1}, // #216
{22, 3}, // #217
{ 1, 3}, // #218
{ 4, 14}, // #219
{ 5, 1}, // #220
{ 7, 1}, // #221
{ 8, 1}, // #222
{22, 3}, // #223
{ 1, 3}, // #224
{ 4, 12}, // #225
{ 5, 1}, // #226
{ 7, 1}, // #227
{ 8, 1}, // #228
{22, 3}, // #229
{ 1, 3}, // #230
{10, 9}, // #231
{14, 1}, // #232
{16, 1}, // #233
{19, 1}, // #234
{22, 3}, // #235
{ 1, 3}, // #236
{10, 10}, // #237
{14, 1}, // #238
{16, 1}, // #239
{19, 1}, // #240
{22, 3}, // #241
{ 1, 3}, // #242
{10, 14}, // #243
{14, 1}, // #244
{16, 1}, // #245
{19, 1}, // #246
{22, 3}, // #247
{ 1, 1}, // #248
{24, 1}, // #249
{ 1, 1}, // #250
{13, 1}, // #251
{14, 2}, // #252
{16, 2}, // #253
{19, 2}, // #254
{24, 1}, // #255
{ 5, 1}, // #256
{ 6, 1}, // #257
{ 8, 1}, // #258
{10, 3}, // #259
{14, 1}, // #260
{15, 1}, // #261
{19, 1}, // #262
{11, 2}, // #263
{14, 1}, // #264
{19, 1}, // #265
{10, 1}, // #266
{14, 1}, // #267
{19, 1}, // #268
{13, 1}, // #269
{14, 1}, // #270
{16, 1}, // #271
{19, 1}, // #272
{ 1, 3}, // #273
{11, 2}, // #274
{14, 1}, // #275
{19, 1}, // #276
{22, 3}, // #277
{ 1, 3}, // #278
{10, 5}, // #279
{14, 1}, // #280
{15, 1}, // #281
{19, 1}, // #282
{22, 3}, // #283
{ 1, 3}, // #284
{ 4, 17}, // #285
{ 5, 1}, // #286
{ 7, 1}, // #287
{ 8, 1}, // #288
{22, 3}, // #289
{ 1, 3}, // #290
{ 4, 25}, // #291
{ 5, 1}, // #292
{ 7, 1}, // #293
{ 8, 1}, // #294
{22, 3}, // #295
{ 1, 3}, // #296
{ 5, 1}, // #297
{ 7, 1}, // #298
{ 8, 1}, // #299
{22, 3}, // #300
{23, 5}, // #301
{ 5, 1}, // #302
{ 7, 1}, // #303
{ 8, 1}, // #304
{23, 5}, // #305
{ 1, 3}, // #306
{ 5, 1}, // #307
{ 7, 1}, // #308
{ 8, 1}, // #309
{22, 3}, // #310
{23, 2}, // #311
{ 5, 1}, // #312
{ 7, 1}, // #313
{ 8, 1}, // #314
{23, 2}, // #315
{ 1, 3}, // #316
{ 5, 1}, // #317
{ 7, 1}, // #318
{ 8, 1}, // #319
{22, 3}, // #320
{23, 4}, // #321
{ 5, 1}, // #322
{ 7, 1}, // #323
{ 8, 1}, // #324
{23, 4}, // #325
{ 1, 3}, // #326
{ 5, 1}, // #327
{ 7, 1}, // #328
{ 8, 1}, // #329
{22, 3}, // #330
{23, 6}, // #331
{ 5, 1}, // #332
{ 7, 1}, // #333
{ 8, 1}, // #334
{23, 6}, // #335
{ 1, 3}, // #336
{11, 3}, // #337
{14, 1}, // #338
{19, 1}, // #339
{22, 3}, // #340
{ 1, 1}, // #341
{22, 1}, // #342
{ 1, 3}, // #343
{ 5, 2}, // #344
{ 6, 2}, // #345
{ 8, 2}, // #346
{22, 3}, // #347
{ 1, 1}, // #348
{13, 1}, // #349
{14, 1}, // #350
{16, 1}, // #351
{19, 1}, // #352
{24, 1}, // #353
{ 1, 3}, // #354
{11, 1}, // #355
{14, 1}, // #356
{19, 1}, // #357
{22, 3}, // #358
{ 1, 3}, // #359
{11, 4}, // #360
{14, 1}, // #361
{19, 1}, // #362
{22, 3}, // #363
{ 1, 3}, // #364
{12, 4}, // #365
{14, 1}, // #366
{15, 1}, // #367
{19, 1}, // #368
{22, 3}, // #369
{ 1, 3}, // #370
{10, 1}, // #371
{14, 1}, // #372
{16, 1}, // #373
{19, 1}, // #374
{22, 3}, // #375
{ 1, 3}, // #376
{12, 7}, // #377
{14, 1}, // #378
{15, 1}, // #379
{19, 1}, // #380
{22, 3}, // #381
{ 1, 23}, // #382
{ 5, 1}, // #383
{ 6, 1}, // #384
{ 8, 1}, // #385
{10, 1}, // #386
{11, 10}, // #387
{14, 1}, // #388
{16, 1}, // #389
{19, 1}, // #390
{22, 13}, // #391
{24, 10}, // #392
{ 1, 20}, // #393
{ 5, 1}, // #394
{ 6, 1}, // #395
{ 8, 1}, // #396
{10, 1}, // #397
{11, 10}, // #398
{14, 1}, // #399
{16, 1}, // #400
{19, 1}, // #401
{22, 10}, // #402
{24, 10}, // #403
{ 1, 3}, // #404
{ 5, 1}, // #405
{ 6, 1}, // #406
{ 8, 1}, // #407
{10, 6}, // #408
{14, 1}, // #409
{16, 1}, // #410
{19, 1}, // #411
{22, 3}, // #412
{ 1, 3}, // #413
{ 5, 1}, // #414
{ 6, 1}, // #415
{ 8, 1}, // #416
{10, 8}, // #417
{14, 1}, // #418
{16, 1}, // #419
{19, 1}, // #420
{22, 3}, // #421
{ 1, 3}, // #422
{11, 1}, // #423
{14, 1}, // #424
{15, 1}, // #425
{19, 1}, // #426
{22, 3}, // #427
{ 1, 3}, // #428
{11, 1}, // #429
{12, 2}, // #430
{14, 3}, // #431
{15, 2}, // #432
{19, 3}, // #433
{22, 3}, // #434
{ 1, 3}, // #435
{22, 2}, // #436
{24, 1}, // #437
{ 1, 4}, // #438
{ 5, 1}, // #439
{ 8, 1}, // #440
{22, 3}, // #441
{24, 1}, // #442
{ 1, 3}, // #443
{13, 1}, // #444
{14, 1}, // #445
{16, 1}, // #446
{19, 1}, // #447
{22, 3}, // #448
{ 1, 3}, // #449
{10, 2}, // #450
{14, 1}, // #451
{16, 1}, // #452
{19, 1}, // #453
{22, 3}, // #454
{ 1, 1}, // #455
{ 5, 1}, // #456
{ 8, 1}, // #457
{24, 1}, // #458
{ 1, 1}, // #459
{ 5, 22}, // #460
{ 8, 22}, // #461
{22, 1}, // #462
{10, 18}, // #463
{14, 1}, // #464
{16, 1}, // #465
{19, 1}, // #466
{ 1, 18}, // #467
{24, 18}, // #468
{ 1, 3}, // #469
{10, 3}, // #470
{14, 1}, // #471
{22, 3}, // #472
{ 1, 3}, // #473
{10, 2}, // #474
{14, 1}, // #475
{15, 1}, // #476
{19, 1}, // #477
{22, 3}, // #478
{ 1, 3}, // #479
{10, 2}, // #480
{14, 2}, // #481
{19, 2}, // #482
{22, 3}, // #483
{ 1, 3}, // #484
{10, 4}, // #485
{14, 2}, // #486
{19, 2}, // #487
{22, 3}, // #488
{ 1, 3}, // #489
{10, 3}, // #490
{14, 2}, // #491
{19, 2}, // #492
{22, 3}, // #493
{ 1, 3}, // #494
{ 9, 2}, // #495
{10, 1}, // #496
{13, 1}, // #497
{14, 1}, // #498
{15, 1}, // #499
{19, 1}, // #500
{22, 3}, // #501
{ 1, 1}, // #502
{ 9, 2}, // #503
{10, 1}, // #504
{13, 1}, // #505
{14, 1}, // #506
{15, 1}, // #507
{19, 1}, // #508
{24, 1}, // #509
{ 1, 1}, // #510
{ 9, 2}, // #511
{13, 1}, // #512
{14, 1}, // #513
{15, 1}, // #514
{19, 1}, // #515
{24, 1}, // #516
{ 1, 3}, // #517
{10, 18}, // #518
{14, 2}, // #519
{16, 2}, // #520
{19, 2}, // #521
{22, 3}, // #522
{ 1, 3}, // #523
{10, 25}, // #524
{14, 2}, // #525
{16, 2}, // #526
{19, 2}, // #527
{22, 3}, // #528
{ 1, 3}, // #529
{13, 1}, // #530
{14, 2}, // #531
{16, 2}, // #532
{19, 2}, // #533
{22, 3}, // #534
{ 1, 3}, // #535
{10, 8}, // #536
{14, 1}, // #537
{15, 1}, // #538
{19, 1}, // #539
{22, 3}, // #540
{ 1, 3}, // #541
{11, 3}, // #542
{14, 2}, // #543
{19, 2}, // #544
{22, 3}, // #545
{ 1, 2}, // #546
{10, 376}, // #547
{14, 2}, // #548
{19, 2}, // #549
{24, 2}, // #550
{ 1, 1}, // #551
{10, 188}, // #552
{14, 1}, // #553
{19, 1}, // #554
{24, 1}, // #555
{ 1, 3}, // #556
{10, 4}, // #557
{14, 1}, // #558
{19, 1}, // #559
{22, 3}, // #560
{ 1, 2}, // #561
{13, 2}, // #562
{14, 36}, // #563
{20, 36}, // #564
{24, 2}, // #565
{11, 2}, // #566
{14, 2}, // #567
{19, 2}, // #568
{ 1, 3}, // #569
{11, 4}, // #570
{14, 2}, // #571
{19, 2}, // #572
{22, 3}, // #573
{ 1, 2}, // #574
{13, 2}, // #575
{14, 2}, // #576
{16, 2}, // #577
{19, 2}, // #578
{24, 2}, // #579
{ 1, 2}, // #580
{11, 4}, // #581
{14, 2}, // #582
{19, 2}, // #583
{24, 2}, // #584
{ 1, 1}, // #585
{11, 4}, // #586
{14, 1}, // #587
{19, 1}, // #588
{24, 1}, // #589
{ 1, 3}, // #590
{ 5, 1}, // #591
{ 6, 1}, // #592
{ 8, 1}, // #593
{10, 4}, // #594
{14, 2}, // #595
{19, 2}, // #596
{22, 3}, // #597
{ 1, 3}, // #598
{10, 1}, // #599
{14, 2}, // #600
{16, 2}, // #601
{19, 2}, // #602
{22, 3}, // #603
{ 1, 3}, // #604
{10, 2}, // #605
{14, 2}, // #606
{16, 2}, // #607
{19, 2}, // #608
{22, 3}, // #609
{ 1, 3}, // #610
{ 5, 1}, // #611
{ 6, 1}, // #612
{ 8, 1}, // #613
{10, 4}, // #614
{14, 4}, // #615
{19, 4}, // #616
{22, 3}, // #617
{ 5, 23}, // #618
{ 7, 23}, // #619
{ 8, 23}, // #620
{ 5, 21}, // #621
{ 7, 21}, // #622
{ 8, 21}, // #623
{ 5, 26}, // #624
{ 7, 26}, // #625
{ 8, 26}, // #626
{ 5, 69}, // #627
{ 7, 69}, // #628
{ 8, 69}, // #629
{ 5, 25}, // #630
{ 8, 25}, // #631
{ 1, 1}, // #632
{10, 4}, // #633
{14, 2}, // #634
{19, 2}, // #635
{22, 1}, // #636
{ 5, 20}, // #637
{ 7, 20}, // #638
{ 8, 20}, // #639
{ 1, 3}, // #640
{10, 10}, // #641
{14, 1}, // #642
{15, 1}, // #643
{19, 1}, // #644
{22, 3}, // #645
{ 1, 3}, // #646
{10, 18}, // #647
{14, 1}, // #648
{15, 1}, // #649
{19, 1}, // #650
{22, 3}, // #651
{ 9, 3}, // #652
{13, 1}, // #653
{14, 1}, // #654
{15, 1}, // #655
{19, 1}, // #656
{ 5, 375}, // #657
{ 8, 375}, // #658
{ 5, 18}, // #659
{ 8, 18}, // #660
{ 5, 24}, // #661
{ 8, 24}, // #662
{10, 6}, // #663
{14, 1}, // #664
{19, 1}, // #665
{10, 8}, // #666
{14, 1}, // #667
{19, 1}, // #668
{ 5, 88}, // #669
{ 8, 88}, // #670
{ 1, 3}, // #671
{ 5, 3}, // #672
{ 8, 3}, // #673
{22, 3}, // #674
{ 5, 10}, // #675
{ 8, 10}, // #676
{ 5, 12}, // #677
{ 8, 12}, // #678
{ 5, 17}, // #679
{ 8, 17}, // #680
{ 5, 5}, // #681
{ 8, 5}, // #682
{ 5, 23}, // #683
{ 8, 23}, // #684
{ 5, 20}, // #685
{ 8, 20}, // #686
{ 5, 19}, // #687
{ 8, 19}, // #688
{ 5, 14}, // #689
{ 8, 14}, // #690
{ 5, 13}, // #691
{ 8, 13}, // #692
{ 5, 21}, // #693
{ 8, 21}, // #694
{ 5, 15}, // #695
{ 8, 15}, // #696
{13, 1}, // #697
{14, 10}, // #698
{16, 10}, // #699
{19, 10}, // #700
{13, 1}, // #701
{14, 3}, // #702
{16, 3}, // #703
{19, 3}, // #704
{13, 1}, // #705
{14, 4}, // #706
{16, 4}, // #707
{19, 4}, // #708
{11, 1}, // #709
{12, 1}, // #710
{14, 1}, // #711
{15, 1}, // #712
{19, 1}, // #713
{22, 1}, // #714
{23, 1}, // #715
{ 7, 1}, // #716
{12, 1}, // #717
{14, 2}, // #718
{17, 1}, // #719
{20, 2}, // #720
{21, 2}, // #721
{22, 3}, // #722
{23, 6}, // #723
{14, 1}, // #724
{17, 1}, // #725
{20, 1}, // #726
{21, 1}, // #727
{22, 1}, // #728
{23, 2}, // #729
{14, 1}, // #730
{20, 1}, // #731
{22, 1}, // #732
{23, 1}, // #733
{ 4, 1}, // #734
{11, 1}, // #735
{15, 1}, // #736
{16, 1}, // #737
{19, 1}, // #738
{22, 1}, // #739
{23, 1}, // #740
{ 7, 1}, // #741
{12, 1}, // #742
{21, 1}, // #743
{23, 2}, // #744
{17, 1}, // #745
{21, 1}, // #746
{23, 1}, // #747
{ 8, 1}, // #748
{13, 1}, // #749
{15, 1}, // #750
{18, 1}, // #751
{19, 1}, // #752
{20, 1}, // #753
{22, 1}, // #754
{23, 1}, // #755
{ 7, 1}, // #756
{12, 1}, // #757
{17, 1}, // #758
{21, 2}, // #759
{22, 1}, // #760
{23, 4}, // #761
{17, 1}, // #762
{21, 1}, // #763
{22, 1}, // #764
{23, 2}, // #765
{ 4, 1}, // #766
{11, 1}, // #767
{15, 1}, // #768
{16, 1}, // #769
{17, 1}, // #770
{19, 1}, // #771
{21, 1}, // #772
{22, 1}, // #773
{23, 2}, // #774
{ 8, 1}, // #775
{13, 1}, // #776
{15, 1}, // #777
{17, 1}, // #778
{18, 1}, // #779
{19, 1}, // #780
{20, 1}, // #781
{21, 1}, // #782
{22, 1}, // #783
{23, 2}, // #784
{ 8, 2}, // #785
{13, 2}, // #786
{15, 2}, // #787
{17, 1}, // #788
{18, 2}, // #789
{19, 2}, // #790
{20, 2}, // #791
{21, 1}, // #792
{22, 2}, // #793
{23, 3}, // #794
{ 8, 2}, // #795
{13, 2}, // #796
{15, 2}, // #797
{18, 2}, // #798
{19, 2}, // #799
{20, 2}, // #800
{22, 2}, // #801
{23, 2}, // #802
{ 3, 2}, // #803
{ 8, 7}, // #804
{11, 2}, // #805
{12, 2}, // #806
{13, 9}, // #807
{14, 2}, // #808
{15, 7}, // #809
{17, 1}, // #810
{18, 7}, // #811
{19, 10}, // #812
{20, 9}, // #813
{21, 1}, // #814
{22, 10}, // #815
{23, 11}, // #816
{ 3, 2}, // #817
{ 8, 7}, // #818
{11, 2}, // #819
{12, 2}, // #820
{13, 9}, // #821
{14, 2}, // #822
{15, 7}, // #823
{18, 7}, // #824
{19, 11}, // #825
{20, 9}, // #826
{22, 11}, // #827
{23, 11}, // #828
{14, 1}, // #829
{15, 1}, // #830
{17, 1}, // #831
{19, 1}, // #832
{20, 1}, // #833
{21, 1}, // #834
{22, 2}, // #835
{23, 3}, // #836
{14, 1}, // #837
{15, 1}, // #838
{19, 1}, // #839
{20, 1}, // #840
{22, 2}, // #841
{23, 2}, // #842
{15, 1}, // #843
{17, 1}, // #844
{19, 1}, // #845
{21, 1}, // #846
{22, 1}, // #847
{23, 2}, // #848
{ 7, 1}, // #849
{12, 1}, // #850
{14, 1}, // #851
{17, 1}, // #852
{20, 1}, // #853
{21, 2}, // #854
{22, 1}, // #855
{23, 4}, // #856
{14, 2}, // #857
{20, 2}, // #858
{22, 5}, // #859
{23, 5}, // #860
{ 3, 2}, // #861
{ 4, 2}, // #862
{ 8, 2}, // #863
{11, 4}, // #864
{12, 2}, // #865
{13, 4}, // #866
{14, 2}, // #867
{15, 4}, // #868
{16, 2}, // #869
{17, 1}, // #870
{18, 2}, // #871
{19, 6}, // #872
{20, 4}, // #873
{21, 1}, // #874
{22, 7}, // #875
{23, 8}, // #876
{ 3, 7}, // #877
{ 4, 7}, // #878
{ 8, 3}, // #879
{ 9, 3}, // #880
{11, 15}, // #881
{12, 7}, // #882
{13, 10}, // #883
{14, 10}, // #884
{15, 10}, // #885
{16, 10}, // #886
{18, 6}, // #887
{19, 18}, // #888
{20, 13}, // #889
{22, 32}, // #890
{23, 32}, // #891
{ 1, 10}, // #892
{ 3, 1}, // #893
{11, 1}, // #894
{12, 1}, // #895
{13, 1}, // #896
{14, 1}, // #897
{19, 1}, // #898
{20, 1}, // #899
{22, 1}, // #900
{23, 1}, // #901
{ 2, 8}, // #902
{ 3, 1}, // #903
{11, 1}, // #904
{12, 1}, // #905
{13, 1}, // #906
{14, 1}, // #907
{17, 1}, // #908
{19, 1}, // #909
{20, 1}, // #910
{21, 1}, // #911
{22, 1}, // #912
{23, 2}, // #913
{ 2, 8}, // #914
{ 3, 1}, // #915
{11, 1}, // #916
{12, 1}, // #917
{13, 1}, // #918
{14, 1}, // #919
{19, 1}, // #920
{20, 1}, // #921
{22, 1}, // #922
{23, 1}, // #923
{ 2, 5}, // #924
{ 3, 1}, // #925
{11, 1}, // #926
{12, 1}, // #927
{13, 1}, // #928
{14, 1}, // #929
{17, 1}, // #930
{19, 1}, // #931
{20, 1}, // #932
{21, 1}, // #933
{22, 1}, // #934
{23, 2}, // #935
{ 2, 5}, // #936
{ 3, 1}, // #937
{11, 1}, // #938
{12, 1}, // #939
{13, 1}, // #940
{14, 1}, // #941
{19, 1}, // #942
{20, 1}, // #943
{22, 1}, // #944
{23, 1}, // #945
{ 2, 3}, // #946
{ 3, 1}, // #947
{11, 1}, // #948
{12, 1}, // #949
{13, 1}, // #950
{14, 1}, // #951
{19, 1}, // #952
{20, 1}, // #953
{22, 1}, // #954
{23, 1}, // #955
{ 2, 4}, // #956
{ 3, 1}, // #957
{11, 1}, // #958
{12, 1}, // #959
{13, 1}, // #960
{14, 1}, // #961
{19, 1}, // #962
{20, 1}, // #963
{22, 1}, // #964
{23, 1}, // #965
{ 3, 1}, // #966
{ 4, 1}, // #967
{ 8, 1}, // #968
{11, 2}, // #969
{12, 1}, // #970
{13, 2}, // #971
{14, 1}, // #972
{15, 2}, // #973
{16, 1}, // #974
{17, 1}, // #975
{18, 1}, // #976
{19, 3}, // #977
{20, 2}, // #978
{21, 1}, // #979
{22, 3}, // #980
{23, 4}, // #981
{ 3, 1}, // #982
{ 4, 1}, // #983
{ 8, 1}, // #984
{11, 2}, // #985
{12, 1}, // #986
{13, 2}, // #987
{14, 1}, // #988
{15, 2}, // #989
{16, 1}, // #990
{18, 1}, // #991
{19, 3}, // #992
{20, 2}, // #993
{22, 3}, // #994
{23, 3}, // #995
{ 3, 2}, // #996
{ 4, 1}, // #997
{ 8, 1}, // #998
{11, 3}, // #999
{12, 2}, // #1000
{13, 3}, // #1001
{14, 2}, // #1002
{15, 2}, // #1003
{16, 1}, // #1004
{17, 1}, // #1005
{18, 1}, // #1006
{19, 4}, // #1007
{20, 3}, // #1008
{21, 1}, // #1009
{22, 4}, // #1010
{23, 5}, // #1011
{ 3, 2}, // #1012
{ 4, 1}, // #1013
{ 8, 1}, // #1014
{11, 3}, // #1015
{12, 2}, // #1016
{13, 3}, // #1017
{14, 2}, // #1018
{15, 2}, // #1019
{16, 1}, // #1020
{18, 1}, // #1021
{19, 4}, // #1022
{20, 3}, // #1023
{22, 4}, // #1024
{23, 4}, // #1025
{ 7, 1}, // #1026
{ 8, 1}, // #1027
{12, 1}, // #1028
{13, 1}, // #1029
{15, 1}, // #1030
{18, 1}, // #1031
{19, 1}, // #1032
{20, 1}, // #1033
{21, 1}, // #1034
{22, 1}, // #1035
{23, 3}, // #1036
{ 3, 1}, // #1037
{ 8, 1}, // #1038
{11, 1}, // #1039
{12, 1}, // #1040
{13, 2}, // #1041
{14, 1}, // #1042
{15, 1}, // #1043
{18, 1}, // #1044
{19, 2}, // #1045
{20, 2}, // #1046
{22, 2}, // #1047
{23, 2}, // #1048
{11, 8}, // #1049
{15, 1}, // #1050
{19, 30}, // #1051
{22, 31}, // #1052
{23, 31}, // #1053
{11, 2}, // #1054
{19, 2}, // #1055
{22, 2}, // #1056
{23, 2}, // #1057
{ 4, 1}, // #1058
{ 8, 2}, // #1059
{11, 1}, // #1060
{13, 2}, // #1061
{15, 3}, // #1062
{16, 1}, // #1063
{17, 1}, // #1064
{18, 2}, // #1065
{19, 3}, // #1066
{20, 2}, // #1067
{21, 1}, // #1068
{22, 3}, // #1069
{23, 4}, // #1070
{ 4, 1}, // #1071
{ 8, 2}, // #1072
{11, 1}, // #1073
{13, 2}, // #1074
{15, 3}, // #1075
{16, 1}, // #1076
{18, 2}, // #1077
{19, 3}, // #1078
{20, 2}, // #1079
{22, 3}, // #1080
{23, 3}, // #1081
{ 4, 1}, // #1082
{11, 1}, // #1083
{14, 1}, // #1084
{15, 1}, // #1085
{16, 1}, // #1086
{17, 1}, // #1087
{19, 1}, // #1088
{20, 1}, // #1089
{21, 1}, // #1090
{22, 4}, // #1091
{23, 5}, // #1092
{ 4, 1}, // #1093
{11, 1}, // #1094
{14, 1}, // #1095
{15, 1}, // #1096
{16, 1}, // #1097
{19, 1}, // #1098
{20, 1}, // #1099
{22, 4}, // #1100
{23, 4}, // #1101
{ 4, 1}, // #1102
{11, 1}, // #1103
{15, 1}, // #1104
{16, 1}, // #1105
{17, 1}, // #1106
{19, 1}, // #1107
{21, 1}, // #1108
{22, 2}, // #1109
{23, 3}, // #1110
{ 4, 1}, // #1111
{11, 1}, // #1112
{15, 1}, // #1113
{16, 1}, // #1114
{19, 1}, // #1115
{22, 2}, // #1116
{23, 2}, // #1117
{ 4, 1}, // #1118
{11, 1}, // #1119
{14, 1}, // #1120
{15, 1}, // #1121
{16, 1}, // #1122
{17, 1}, // #1123
{19, 1}, // #1124
{20, 1}, // #1125
{21, 1}, // #1126
{22, 3}, // #1127
{23, 4}, // #1128
{ 4, 1}, // #1129
{11, 1}, // #1130
{14, 1}, // #1131
{15, 1}, // #1132
{16, 1}, // #1133
{19, 1}, // #1134
{20, 1}, // #1135
{22, 3}, // #1136
{23, 3}, // #1137
{ 4, 1}, // #1138
{ 8, 1}, // #1139
{11, 1}, // #1140
{13, 1}, // #1141
{15, 2}, // #1142
{16, 1}, // #1143
{17, 1}, // #1144
{18, 1}, // #1145
{19, 2}, // #1146
{20, 1}, // #1147
{21, 1}, // #1148
{22, 2}, // #1149
{23, 3}, // #1150
{ 4, 1}, // #1151
{ 8, 1}, // #1152
{11, 1}, // #1153
{13, 1}, // #1154
{15, 2}, // #1155
{16, 1}, // #1156
{18, 1}, // #1157
{19, 2}, // #1158
{20, 1}, // #1159
{22, 2}, // #1160
{23, 2}, // #1161
{ 3, 1}, // #1162
{11, 1}, // #1163
{12, 1}, // #1164
{13, 1}, // #1165
{14, 1}, // #1166
{17, 1}, // #1167
{19, 1}, // #1168
{20, 1}, // #1169
{21, 1}, // #1170
{22, 2}, // #1171
{23, 3}, // #1172
{11, 1}, // #1173
{19, 1}, // #1174
{22, 1}, // #1175
{23, 1}, // #1176
{ 7, 1}, // #1177
{12, 1}, // #1178
{17, 1}, // #1179
{21, 1}, // #1180
{23, 2}, // #1181
{ 8, 2}, // #1182
{13, 2}, // #1183
{15, 3}, // #1184
{17, 1}, // #1185
{18, 2}, // #1186
{19, 3}, // #1187
{20, 2}, // #1188
{21, 1}, // #1189
{22, 3}, // #1190
{23, 4}, // #1191
{ 8, 2}, // #1192
{13, 2}, // #1193
{15, 3}, // #1194
{18, 2}, // #1195
{19, 3}, // #1196
{20, 2}, // #1197
{22, 3}, // #1198
{23, 3}, // #1199
{ 3, 1}, // #1200
{ 8, 2}, // #1201
{11, 1}, // #1202
{12, 1}, // #1203
{13, 3}, // #1204
{14, 1}, // #1205
{15, 2}, // #1206
{17, 1}, // #1207
{18, 2}, // #1208
{19, 3}, // #1209
{20, 3}, // #1210
{21, 1}, // #1211
{22, 3}, // #1212
{23, 4}, // #1213
{ 3, 1}, // #1214
{ 8, 2}, // #1215
{11, 1}, // #1216
{12, 1}, // #1217
{13, 3}, // #1218
{14, 1}, // #1219
{15, 2}, // #1220
{18, 2}, // #1221
{19, 3}, // #1222
{20, 3}, // #1223
{22, 3}, // #1224
{23, 3}, // #1225
{11, 1}, // #1226
{17, 1}, // #1227
{19, 1}, // #1228
{21, 1}, // #1229
{22, 1}, // #1230
{23, 2}, // #1231
{ 3, 4}, // #1232
{ 8, 3}, // #1233
{11, 4}, // #1234
{12, 4}, // #1235
{13, 7}, // #1236
{14, 4}, // #1237
{15, 3}, // #1238
{17, 1}, // #1239
{18, 3}, // #1240
{19, 7}, // #1241
{20, 7}, // #1242
{21, 1}, // #1243
{22, 8}, // #1244
{23, 9}, // #1245
{ 3, 4}, // #1246
{ 8, 3}, // #1247
{11, 4}, // #1248
{12, 4}, // #1249
{13, 7}, // #1250
{14, 4}, // #1251
{15, 3}, // #1252
{18, 3}, // #1253
{19, 7}, // #1254
{20, 7}, // #1255
{22, 8}, // #1256
{23, 8}, // #1257
{ 3, 4}, // #1258
{ 8, 3}, // #1259
{11, 4}, // #1260
{12, 4}, // #1261
{13, 7}, // #1262
{14, 4}, // #1263
{15, 3}, // #1264
{17, 1}, // #1265
{18, 3}, // #1266
{19, 8}, // #1267
{20, 7}, // #1268
{21, 1}, // #1269
{22, 9}, // #1270
{23, 10}, // #1271
{ 3, 4}, // #1272
{ 8, 3}, // #1273
{11, 4}, // #1274
{12, 4}, // #1275
{13, 7}, // #1276
{14, 4}, // #1277
{15, 3}, // #1278
{18, 3}, // #1279
{19, 8}, // #1280
{20, 7}, // #1281
{22, 9}, // #1282
{23, 9}, // #1283
{ 3, 3}, // #1284
{11, 3}, // #1285
{12, 3}, // #1286
{13, 3}, // #1287
{14, 3}, // #1288
{17, 1}, // #1289
{19, 3}, // #1290
{20, 3}, // #1291
{21, 1}, // #1292
{22, 3}, // #1293
{23, 4}, // #1294
{ 3, 3}, // #1295
{11, 3}, // #1296
{12, 3}, // #1297
{13, 3}, // #1298
{14, 3}, // #1299
{19, 3}, // #1300
{20, 3}, // #1301
{22, 3}, // #1302
{23, 3}, // #1303
{ 3, 2}, // #1304
{11, 2}, // #1305
{12, 2}, // #1306
{13, 2}, // #1307
{14, 2}, // #1308
{17, 1}, // #1309
{19, 2}, // #1310
{20, 2}, // #1311
{21, 1}, // #1312
{22, 2}, // #1313
{23, 3}, // #1314
{ 3, 2}, // #1315
{11, 2}, // #1316
{12, 2}, // #1317
{13, 2}, // #1318
{14, 2}, // #1319
{19, 2}, // #1320
{20, 2}, // #1321
{22, 2}, // #1322
{23, 2}, // #1323
{ 7, 1}, // #1324
{12, 1}, // #1325
{17, 1}, // #1326
{21, 2}, // #1327
{23, 3}, // #1328
{ 3, 1}, // #1329
{ 8, 1}, // #1330
{11, 1}, // #1331
{12, 1}, // #1332
{13, 2}, // #1333
{14, 1}, // #1334
{15, 1}, // #1335
{17, 1}, // #1336
{18, 1}, // #1337
{19, 2}, // #1338
{20, 2}, // #1339
{21, 1}, // #1340
{22, 2}, // #1341
{23, 3}, // #1342
{14, 2}, // #1343
{20, 2}, // #1344
{22, 3}, // #1345
{23, 3}, // #1346
{ 4, 2}, // #1347
{11, 2}, // #1348
{15, 2}, // #1349
{16, 2}, // #1350
{17, 1}, // #1351
{19, 2}, // #1352
{21, 1}, // #1353
{22, 2}, // #1354
{23, 3}, // #1355
{ 7, 1}, // #1356
{12, 1}, // #1357
{14, 1}, // #1358
{20, 1}, // #1359
{21, 1}, // #1360
{22, 1}, // #1361
|