blob: 9d5f6634f5045437805427dec7544d75965d2b54 [file] [log] [blame] [edit]
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|* *|
|* Global Instruction Selector for the X86 target *|
|* *|
|* Automatically generated file, do not edit! *|
|* *|
\*===----------------------------------------------------------------------===*/
#ifdef GET_GLOBALISEL_PREDICATE_BITSET
const unsigned MAX_SUBTARGET_PREDICATES = 133;
using PredicateBitset = llvm::PredicateBitsetImpl<MAX_SUBTARGET_PREDICATES>;
#endif // ifdef GET_GLOBALISEL_PREDICATE_BITSET
#ifdef GET_GLOBALISEL_TEMPORARIES_DECL
mutable MatcherState State;
typedef ComplexRendererFns(X86InstructionSelector::*ComplexMatcherMemFn)(MachineOperand &) const;
typedef void(X86InstructionSelector::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
const ISelInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ISelInfo;
static X86InstructionSelector::ComplexMatcherMemFn ComplexPredicateFns[];
static X86InstructionSelector::CustomRendererFn CustomRenderers[];
bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
const int64_t *getMatchTable() const override;
bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const std::array<const MachineOperand *, 3> &Operands) const override;
#endif // ifdef GET_GLOBALISEL_TEMPORARIES_DECL
#ifdef GET_GLOBALISEL_TEMPORARIES_INIT
, State(0),
ISelInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
#endif // ifdef GET_GLOBALISEL_TEMPORARIES_INIT
#ifdef GET_GLOBALISEL_IMPL
// Bits for subtarget features that participate in instruction matching.
enum SubtargetFeatureBits : uint8_t {
Feature_TruePredicateBit = 54,
Feature_HasCMOVBit = 23,
Feature_NoCMOVBit = 120,
Feature_HasMMXBit = 95,
Feature_Has3DNowBit = 97,
Feature_HasSSE1Bit = 40,
Feature_UseSSE1Bit = 47,
Feature_HasSSE2Bit = 39,
Feature_UseSSE2Bit = 48,
Feature_HasSSE3Bit = 31,
Feature_UseSSE3Bit = 57,
Feature_HasSSSE3Bit = 96,
Feature_UseSSSE3Bit = 58,
Feature_UseSSE41Bit = 55,
Feature_UseSSE42Bit = 61,
Feature_HasSSE4ABit = 71,
Feature_NoAVXBit = 67,
Feature_HasAVXBit = 49,
Feature_HasAVX2Bit = 43,
Feature_HasAVX1OnlyBit = 41,
Feature_HasAVX512Bit = 80,
Feature_UseAVXBit = 45,
Feature_NoAVX512Bit = 36,
Feature_HasCDIBit = 84,
Feature_HasVPOPCNTDQBit = 89,
Feature_HasERIBit = 88,
Feature_HasDQIBit = 82,
Feature_NoDQIBit = 59,
Feature_HasBWIBit = 83,
Feature_NoBWIBit = 56,
Feature_HasVLXBit = 81,
Feature_NoVLXBit = 35,
Feature_NoVLX_Or_NoBWIBit = 53,
Feature_HasVNNIBit = 91,
Feature_HasVP2INTERSECTBit = 93,
Feature_HasBF16Bit = 94,
Feature_HasFP16Bit = 86,
Feature_HasAVXVNNIINT8Bit = 78,
Feature_HasAVXVNNIBit = 72,
Feature_NoVLX_Or_NoVNNIBit = 73,
Feature_HasBITALGBit = 92,
Feature_HasPOPCNTBit = 60,
Feature_HasAESBit = 64,
Feature_HasVAESBit = 66,
Feature_NoVLX_Or_NoVAESBit = 65,
Feature_HasFXSRBit = 32,
Feature_HasX87Bit = 30,
Feature_HasXSAVEBit = 109,
Feature_HasXSAVEOPTBit = 110,
Feature_HasXSAVECBit = 111,
Feature_HasXSAVESBit = 112,
Feature_HasPCLMULBit = 68,
Feature_NoVLX_Or_NoVPCLMULQDQBit = 69,
Feature_HasVPCLMULQDQBit = 70,
Feature_HasGFNIBit = 75,
Feature_HasFMABit = 33,
Feature_HasFMA4Bit = 37,
Feature_NoFMA4Bit = 34,
Feature_HasXOPBit = 38,
Feature_HasTBMBit = 8,
Feature_NoTBMBit = 125,
Feature_HasLWPBit = 9,
Feature_HasMOVBEBit = 2,
Feature_HasRDRANDBit = 3,
Feature_HasF16CBit = 74,
Feature_HasFSGSBaseBit = 113,
Feature_HasLZCNTBit = 5,
Feature_HasBMIBit = 6,
Feature_HasBMI2Bit = 7,
Feature_NoBMI2Bit = 124,
Feature_HasVBMIBit = 85,
Feature_HasVBMI2Bit = 90,
Feature_HasIFMABit = 87,
Feature_HasAVXIFMABit = 76,
Feature_NoVLX_Or_NoIFMABit = 77,
Feature_HasRTMBit = 101,
Feature_HasSHABit = 63,
Feature_HasRDSEEDBit = 4,
Feature_HasSSEPrefetchBit = 50,
Feature_NoSSEPrefetchBit = 98,
Feature_HasPREFETCHIBit = 17,
Feature_HasPrefetchWBit = 99,
Feature_HasPREFETCHWT1Bit = 100,
Feature_HasMWAITXBit = 123,
Feature_HasCLDEMOTEBit = 21,
Feature_HasMOVDIRIBit = 11,
Feature_HasMOVDIR64BBit = 12,
Feature_HasPTWRITEBit = 116,
Feature_FPStackf32Bit = 28,
Feature_FPStackf64Bit = 29,
Feature_HasCLFLUSHBit = 51,
Feature_HasCLFLUSHOPTBit = 19,
Feature_HasCLWBBit = 20,
Feature_HasWBNOINVDBit = 108,
Feature_HasRDPIDBit = 115,
Feature_HasWAITPKGBit = 10,
Feature_HasINVPCIDBit = 114,
Feature_HasCX8Bit = 121,
Feature_HasCX16Bit = 122,
Feature_HasENQCMDBit = 13,
Feature_HasAMXFP16Bit = 106,
Feature_HasCMPCCXADDBit = 18,
Feature_HasAVXNECONVERTBit = 79,
Feature_HasKLBit = 102,
Feature_HasRAOINTBit = 107,
Feature_HasSERIALIZEBit = 14,
Feature_HasTSXLDTRKBit = 15,
Feature_HasAMXTILEBit = 103,
Feature_HasAMXBF16Bit = 105,
Feature_HasAMXINT8Bit = 104,
Feature_HasUINTRBit = 16,
Feature_HasCRC32Bit = 62,
Feature_Not64BitModeBit = 0,
Feature_In64BitModeBit = 1,
Feature_IsLP64Bit = 118,
Feature_NotLP64Bit = 117,
Feature_NotWin64WithoutFPBit = 119,
Feature_IsPSBit = 128,
Feature_NotPSBit = 127,
Feature_KernelCodeBit = 129,
Feature_NearDataBit = 131,
Feature_IsNotPICBit = 130,
Feature_OptForSizeBit = 44,
Feature_OptForMinSizeBit = 42,
Feature_OptForSpeedBit = 126,
Feature_UseIncDecBit = 22,
Feature_NoSSE41_Or_OptForSizeBit = 46,
Feature_CallImmAddrBit = 132,
Feature_FavorMemIndirectCallBit = 24,
Feature_HasFastSHLDRotateBit = 27,
Feature_HasMFenceBit = 52,
Feature_UseIndirectThunkCallsBit = 26,
Feature_NotUseIndirectThunkCallsBit = 25,
};
PredicateBitset X86InstructionSelector::
computeAvailableModuleFeatures(const X86Subtarget *Subtarget) const {
PredicateBitset Features;
if (true)
Features.set(Feature_TruePredicateBit);
if (Subtarget->canUseCMOV())
Features.set(Feature_HasCMOVBit);
if (!Subtarget->canUseCMOV())
Features.set(Feature_NoCMOVBit);
if (Subtarget->hasMMX())
Features.set(Feature_HasMMXBit);
if (Subtarget->hasThreeDNow())
Features.set(Feature_Has3DNowBit);
if (Subtarget->hasSSE1())
Features.set(Feature_HasSSE1Bit);
if (Subtarget->hasSSE1() && !Subtarget->hasAVX())
Features.set(Feature_UseSSE1Bit);
if (Subtarget->hasSSE2())
Features.set(Feature_HasSSE2Bit);
if (Subtarget->hasSSE2() && !Subtarget->hasAVX())
Features.set(Feature_UseSSE2Bit);
if (Subtarget->hasSSE3())
Features.set(Feature_HasSSE3Bit);
if (Subtarget->hasSSE3() && !Subtarget->hasAVX())
Features.set(Feature_UseSSE3Bit);
if (Subtarget->hasSSSE3())
Features.set(Feature_HasSSSE3Bit);
if (Subtarget->hasSSSE3() && !Subtarget->hasAVX())
Features.set(Feature_UseSSSE3Bit);
if (Subtarget->hasSSE41() && !Subtarget->hasAVX())
Features.set(Feature_UseSSE41Bit);
if (Subtarget->hasSSE42() && !Subtarget->hasAVX())
Features.set(Feature_UseSSE42Bit);
if (Subtarget->hasSSE4A())
Features.set(Feature_HasSSE4ABit);
if (!Subtarget->hasAVX())
Features.set(Feature_NoAVXBit);
if (Subtarget->hasAVX())
Features.set(Feature_HasAVXBit);
if (Subtarget->hasAVX2())
Features.set(Feature_HasAVX2Bit);
if (Subtarget->hasAVX() && !Subtarget->hasAVX2())
Features.set(Feature_HasAVX1OnlyBit);
if (Subtarget->hasAVX512())
Features.set(Feature_HasAVX512Bit);
if (Subtarget->hasAVX() && !Subtarget->hasAVX512())
Features.set(Feature_UseAVXBit);
if (!Subtarget->hasAVX512())
Features.set(Feature_NoAVX512Bit);
if (Subtarget->hasCDI())
Features.set(Feature_HasCDIBit);
if (Subtarget->hasVPOPCNTDQ())
Features.set(Feature_HasVPOPCNTDQBit);
if (Subtarget->hasERI())
Features.set(Feature_HasERIBit);
if (Subtarget->hasDQI())
Features.set(Feature_HasDQIBit);
if (!Subtarget->hasDQI())
Features.set(Feature_NoDQIBit);
if (Subtarget->hasBWI())
Features.set(Feature_HasBWIBit);
if (!Subtarget->hasBWI())
Features.set(Feature_NoBWIBit);
if (Subtarget->hasVLX())
Features.set(Feature_HasVLXBit);
if (!Subtarget->hasVLX())
Features.set(Feature_NoVLXBit);
if (!Subtarget->hasVLX() || !Subtarget->hasBWI())
Features.set(Feature_NoVLX_Or_NoBWIBit);
if (Subtarget->hasVNNI())
Features.set(Feature_HasVNNIBit);
if (Subtarget->hasVP2INTERSECT())
Features.set(Feature_HasVP2INTERSECTBit);
if (Subtarget->hasBF16())
Features.set(Feature_HasBF16Bit);
if (Subtarget->hasFP16())
Features.set(Feature_HasFP16Bit);
if (Subtarget->hasAVXVNNIINT8())
Features.set(Feature_HasAVXVNNIINT8Bit);
if (Subtarget->hasAVXVNNI())
Features.set(Feature_HasAVXVNNIBit);
if (!Subtarget->hasVLX() || !Subtarget->hasVNNI())
Features.set(Feature_NoVLX_Or_NoVNNIBit);
if (Subtarget->hasBITALG())
Features.set(Feature_HasBITALGBit);
if (Subtarget->hasPOPCNT())
Features.set(Feature_HasPOPCNTBit);
if (Subtarget->hasAES())
Features.set(Feature_HasAESBit);
if (Subtarget->hasVAES())
Features.set(Feature_HasVAESBit);
if (!Subtarget->hasVLX() || !Subtarget->hasVAES())
Features.set(Feature_NoVLX_Or_NoVAESBit);
if (Subtarget->hasFXSR())
Features.set(Feature_HasFXSRBit);
if (Subtarget->hasX87())
Features.set(Feature_HasX87Bit);
if (Subtarget->hasXSAVE())
Features.set(Feature_HasXSAVEBit);
if (Subtarget->hasXSAVEOPT())
Features.set(Feature_HasXSAVEOPTBit);
if (Subtarget->hasXSAVEC())
Features.set(Feature_HasXSAVECBit);
if (Subtarget->hasXSAVES())
Features.set(Feature_HasXSAVESBit);
if (Subtarget->hasPCLMUL())
Features.set(Feature_HasPCLMULBit);
if (!Subtarget->hasVLX() || !Subtarget->hasVPCLMULQDQ())
Features.set(Feature_NoVLX_Or_NoVPCLMULQDQBit);
if (Subtarget->hasVPCLMULQDQ())
Features.set(Feature_HasVPCLMULQDQBit);
if (Subtarget->hasGFNI())
Features.set(Feature_HasGFNIBit);
if (Subtarget->hasFMA())
Features.set(Feature_HasFMABit);
if (Subtarget->hasFMA4())
Features.set(Feature_HasFMA4Bit);
if (!Subtarget->hasFMA4())
Features.set(Feature_NoFMA4Bit);
if (Subtarget->hasXOP())
Features.set(Feature_HasXOPBit);
if (Subtarget->hasTBM())
Features.set(Feature_HasTBMBit);
if (!Subtarget->hasTBM())
Features.set(Feature_NoTBMBit);
if (Subtarget->hasLWP())
Features.set(Feature_HasLWPBit);
if (Subtarget->hasMOVBE())
Features.set(Feature_HasMOVBEBit);
if (Subtarget->hasRDRAND())
Features.set(Feature_HasRDRANDBit);
if (Subtarget->hasF16C())
Features.set(Feature_HasF16CBit);
if (Subtarget->hasFSGSBase())
Features.set(Feature_HasFSGSBaseBit);
if (Subtarget->hasLZCNT())
Features.set(Feature_HasLZCNTBit);
if (Subtarget->hasBMI())
Features.set(Feature_HasBMIBit);
if (Subtarget->hasBMI2())
Features.set(Feature_HasBMI2Bit);
if (!Subtarget->hasBMI2())
Features.set(Feature_NoBMI2Bit);
if (Subtarget->hasVBMI())
Features.set(Feature_HasVBMIBit);
if (Subtarget->hasVBMI2())
Features.set(Feature_HasVBMI2Bit);
if (Subtarget->hasIFMA())
Features.set(Feature_HasIFMABit);
if (Subtarget->hasAVXIFMA())
Features.set(Feature_HasAVXIFMABit);
if (!Subtarget->hasVLX() || !Subtarget->hasIFMA())
Features.set(Feature_NoVLX_Or_NoIFMABit);
if (Subtarget->hasRTM())
Features.set(Feature_HasRTMBit);
if (Subtarget->hasSHA())
Features.set(Feature_HasSHABit);
if (Subtarget->hasRDSEED())
Features.set(Feature_HasRDSEEDBit);
if (Subtarget->hasSSEPrefetch())
Features.set(Feature_HasSSEPrefetchBit);
if (!Subtarget->hasSSEPrefetch())
Features.set(Feature_NoSSEPrefetchBit);
if (Subtarget->hasPREFETCHI())
Features.set(Feature_HasPREFETCHIBit);
if (Subtarget->hasPrefetchW())
Features.set(Feature_HasPrefetchWBit);
if (Subtarget->hasPREFETCHWT1())
Features.set(Feature_HasPREFETCHWT1Bit);
if (Subtarget->hasMWAITX())
Features.set(Feature_HasMWAITXBit);
if (Subtarget->hasCLDEMOTE())
Features.set(Feature_HasCLDEMOTEBit);
if (Subtarget->hasMOVDIRI())
Features.set(Feature_HasMOVDIRIBit);
if (Subtarget->hasMOVDIR64B())
Features.set(Feature_HasMOVDIR64BBit);
if (Subtarget->hasPTWRITE())
Features.set(Feature_HasPTWRITEBit);
if (!Subtarget->hasSSE1())
Features.set(Feature_FPStackf32Bit);
if (!Subtarget->hasSSE2())
Features.set(Feature_FPStackf64Bit);
if (Subtarget->hasCLFLUSH())
Features.set(Feature_HasCLFLUSHBit);
if (Subtarget->hasCLFLUSHOPT())
Features.set(Feature_HasCLFLUSHOPTBit);
if (Subtarget->hasCLWB())
Features.set(Feature_HasCLWBBit);
if (Subtarget->hasWBNOINVD())
Features.set(Feature_HasWBNOINVDBit);
if (Subtarget->hasRDPID())
Features.set(Feature_HasRDPIDBit);
if (Subtarget->hasWAITPKG())
Features.set(Feature_HasWAITPKGBit);
if (Subtarget->hasINVPCID())
Features.set(Feature_HasINVPCIDBit);
if (Subtarget->hasCX8())
Features.set(Feature_HasCX8Bit);
if (Subtarget->hasCX16())
Features.set(Feature_HasCX16Bit);
if (Subtarget->hasENQCMD())
Features.set(Feature_HasENQCMDBit);
if (Subtarget->hasAMXFP16())
Features.set(Feature_HasAMXFP16Bit);
if (Subtarget->hasCMPCCXADD())
Features.set(Feature_HasCMPCCXADDBit);
if (Subtarget->hasAVXNECONVERT())
Features.set(Feature_HasAVXNECONVERTBit);
if (Subtarget->hasKL())
Features.set(Feature_HasKLBit);
if (Subtarget->hasRAOINT())
Features.set(Feature_HasRAOINTBit);
if (Subtarget->hasSERIALIZE())
Features.set(Feature_HasSERIALIZEBit);
if (Subtarget->hasTSXLDTRK())
Features.set(Feature_HasTSXLDTRKBit);
if (Subtarget->hasAMXTILE())
Features.set(Feature_HasAMXTILEBit);
if (Subtarget->hasAMXBF16())
Features.set(Feature_HasAMXBF16Bit);
if (Subtarget->hasAMXINT8())
Features.set(Feature_HasAMXINT8Bit);
if (Subtarget->hasUINTR())
Features.set(Feature_HasUINTRBit);
if (Subtarget->hasCRC32())
Features.set(Feature_HasCRC32Bit);
if (!Subtarget->is64Bit())
Features.set(Feature_Not64BitModeBit);
if (Subtarget->is64Bit())
Features.set(Feature_In64BitModeBit);
if (Subtarget->isTarget64BitLP64())
Features.set(Feature_IsLP64Bit);
if (!Subtarget->isTarget64BitLP64())
Features.set(Feature_NotLP64Bit);
if (Subtarget->isTargetPS())
Features.set(Feature_IsPSBit);
if (!Subtarget->isTargetPS())
Features.set(Feature_NotPSBit);
if (TM.getCodeModel() == CodeModel::Kernel)
Features.set(Feature_KernelCodeBit);
if (TM.getCodeModel() == CodeModel::Small ||TM.getCodeModel() == CodeModel::Kernel)
Features.set(Feature_NearDataBit);
if (!TM.isPositionIndependent())
Features.set(Feature_IsNotPICBit);
if (Subtarget->isLegalToCallImmediateAddr())
Features.set(Feature_CallImmAddrBit);
if (!Subtarget->slowTwoMemOps())
Features.set(Feature_FavorMemIndirectCallBit);
if (Subtarget->hasFastSHLDRotate())
Features.set(Feature_HasFastSHLDRotateBit);
if (Subtarget->hasMFence())
Features.set(Feature_HasMFenceBit);
if (Subtarget->useIndirectThunkCalls())
Features.set(Feature_UseIndirectThunkCallsBit);
if (!Subtarget->useIndirectThunkCalls())
Features.set(Feature_NotUseIndirectThunkCallsBit);
return Features;
}
void X86InstructionSelector::setupGeneratedPerFunctionState(MachineFunction &MF) {
AvailableFunctionFeatures = computeAvailableFunctionFeatures((const X86Subtarget *)&MF.getSubtarget(), &MF);
}
PredicateBitset X86InstructionSelector::
computeAvailableFunctionFeatures(const X86Subtarget *Subtarget, const MachineFunction *MF) const {
PredicateBitset Features;
if (!Subtarget->isTargetWin64() ||Subtarget->getFrameLowering()->hasFP(*MF))
Features.set(Feature_NotWin64WithoutFPBit);
if (shouldOptForSize(MF))
Features.set(Feature_OptForSizeBit);
if (MF->getFunction().hasMinSize())
Features.set(Feature_OptForMinSizeBit);
if (!shouldOptForSize(MF))
Features.set(Feature_OptForSpeedBit);
if (!Subtarget->slowIncDec() || shouldOptForSize(MF))
Features.set(Feature_UseIncDecBit);
if (shouldOptForSize(MF) || !Subtarget->hasSSE41())
Features.set(Feature_NoSSE41_Or_OptForSizeBit);
return Features;
}
// LLT Objects.
enum {
GILLT_s1,
GILLT_s8,
GILLT_s16,
GILLT_s32,
GILLT_s64,
GILLT_s80,
GILLT_s128,
GILLT_v2s1,
GILLT_v2s64,
GILLT_v4s1,
GILLT_v4s32,
GILLT_v4s64,
GILLT_v8s1,
GILLT_v8s16,
GILLT_v8s32,
GILLT_v8s64,
GILLT_v16s1,
GILLT_v16s8,
GILLT_v16s16,
GILLT_v16s32,
GILLT_v32s1,
GILLT_v32s8,
GILLT_v32s16,
GILLT_v64s1,
GILLT_v64s8,
};
const static size_t NumTypeObjects = 25;
const static LLT TypeObjects[] = {
LLT::scalar(1),
LLT::scalar(8),
LLT::scalar(16),
LLT::scalar(32),
LLT::scalar(64),
LLT::scalar(80),
LLT::scalar(128),
LLT::vector(ElementCount::getFixed(2), 1),
LLT::vector(ElementCount::getFixed(2), 64),
LLT::vector(ElementCount::getFixed(4), 1),
LLT::vector(ElementCount::getFixed(4), 32),
LLT::vector(ElementCount::getFixed(4), 64),
LLT::vector(ElementCount::getFixed(8), 1),
LLT::vector(ElementCount::getFixed(8), 16),
LLT::vector(ElementCount::getFixed(8), 32),
LLT::vector(ElementCount::getFixed(8), 64),
LLT::vector(ElementCount::getFixed(16), 1),
LLT::vector(ElementCount::getFixed(16), 8),
LLT::vector(ElementCount::getFixed(16), 16),
LLT::vector(ElementCount::getFixed(16), 32),
LLT::vector(ElementCount::getFixed(32), 1),
LLT::vector(ElementCount::getFixed(32), 8),
LLT::vector(ElementCount::getFixed(32), 16),
LLT::vector(ElementCount::getFixed(64), 1),
LLT::vector(ElementCount::getFixed(64), 8),
};
// Feature bitsets.
enum {
GIFBS_Invalid,
GIFBS_FPStackf32,
GIFBS_FPStackf64,
GIFBS_Has3DNow,
GIFBS_HasAVX,
GIFBS_HasAVX1Only,
GIFBS_HasAVX2,
GIFBS_HasAVX512,
GIFBS_HasAVXNECONVERT,
GIFBS_HasBITALG,
GIFBS_HasBMI,
GIFBS_HasBMI2,
GIFBS_HasBWI,
GIFBS_HasCDI,
GIFBS_HasCRC32,
GIFBS_HasDQI,
GIFBS_HasFP16,
GIFBS_HasFastSHLDRotate,
GIFBS_HasKL,
GIFBS_HasLWP,
GIFBS_HasMFence,
GIFBS_HasMMX,
GIFBS_HasMOVBE,
GIFBS_HasMWAITX,
GIFBS_HasPTWRITE,
GIFBS_HasRTM,
GIFBS_HasSERIALIZE,
GIFBS_HasSHA,
GIFBS_HasSSE1,
GIFBS_HasSSE2,
GIFBS_HasSSE3,
GIFBS_HasSSE4A,
GIFBS_HasTBM,
GIFBS_HasTSXLDTRK,
GIFBS_HasVLX,
GIFBS_HasVPOPCNTDQ,
GIFBS_HasWAITPKG,
GIFBS_HasWBNOINVD,
GIFBS_HasX87,
GIFBS_HasXOP,
GIFBS_In64BitMode,
GIFBS_NoDQI,
GIFBS_Not64BitMode,
GIFBS_UseAVX,
GIFBS_UseIncDec,
GIFBS_UseSSE1,
GIFBS_UseSSE2,
GIFBS_UseSSE41,
GIFBS_UseSSSE3,
GIFBS_HasAES_HasAVX,
GIFBS_HasAES_NoAVX,
GIFBS_HasAMXBF16_In64BitMode,
GIFBS_HasAMXFP16_In64BitMode,
GIFBS_HasAMXINT8_In64BitMode,
GIFBS_HasAMXTILE_In64BitMode,
GIFBS_HasAVX_In64BitMode,
GIFBS_HasAVX_NoBWI,
GIFBS_HasAVX_NoVLX,
GIFBS_HasAVX_NoVLX_Or_NoBWI,
GIFBS_HasAVX2_NoVLX,
GIFBS_HasAVX2_NoVLX_Or_NoBWI,
GIFBS_HasAVX512_HasVAES,
GIFBS_HasAVX512_HasVLX,
GIFBS_HasAVX512_HasVPCLMULQDQ,
GIFBS_HasAVX512_NoBWI,
GIFBS_HasAVX512_NoDQI,
GIFBS_HasAVX512_NoVLX,
GIFBS_HasBF16_HasVLX,
GIFBS_HasBITALG_HasVLX,
GIFBS_HasBITALG_NoVLX,
GIFBS_HasBWI_HasVLX,
GIFBS_HasBWI_NoVLX,
GIFBS_HasCDI_HasVLX,
GIFBS_HasCDI_NoVLX,
GIFBS_HasDQI_HasVLX,
GIFBS_HasDQI_NoBWI,
GIFBS_HasDQI_NoVLX,
GIFBS_HasFMA4_NoAVX512,
GIFBS_HasFMA4_NoVLX,
GIFBS_HasFP16_HasVLX,
GIFBS_HasFSGSBase_In64BitMode,
GIFBS_HasPCLMUL_NoAVX,
GIFBS_HasPTWRITE_In64BitMode,
GIFBS_HasRDPID_In64BitMode,
GIFBS_HasRDPID_Not64BitMode,
GIFBS_HasUINTR_In64BitMode,
GIFBS_HasVAES_HasVLX,
GIFBS_HasVAES_NoVLX,
GIFBS_HasVLX_HasVPCLMULQDQ,
GIFBS_HasVLX_HasVPOPCNTDQ,
GIFBS_HasVPCLMULQDQ_NoVLX,
GIFBS_HasVPOPCNTDQ_NoVLX,
GIFBS_HasWAITPKG_In64BitMode,
GIFBS_HasWAITPKG_Not64BitMode,
GIFBS_In64BitMode_UseSSE2,
GIFBS_Not64BitMode_OptForSize,
GIFBS_NotWin64WithoutFP_OptForMinSize,
GIFBS_HasAES_HasAVX_NoVLX_Or_NoVAES,
GIFBS_HasAVX_HasPCLMUL_NoVLX_Or_NoVPCLMULQDQ,
GIFBS_HasDQI_HasVLX_NoBWI,
GIFBS_HasFMA_NoAVX512_NoFMA4,
GIFBS_HasFMA_NoFMA4_NoVLX,
};
const static PredicateBitset FeatureBitsets[] {
{}, // GIFBS_Invalid
{Feature_FPStackf32Bit, },
{Feature_FPStackf64Bit, },
{Feature_Has3DNowBit, },
{Feature_HasAVXBit, },
{Feature_HasAVX1OnlyBit, },
{Feature_HasAVX2Bit, },
{Feature_HasAVX512Bit, },
{Feature_HasAVXNECONVERTBit, },
{Feature_HasBITALGBit, },
{Feature_HasBMIBit, },
{Feature_HasBMI2Bit, },
{Feature_HasBWIBit, },
{Feature_HasCDIBit, },
{Feature_HasCRC32Bit, },
{Feature_HasDQIBit, },
{Feature_HasFP16Bit, },
{Feature_HasFastSHLDRotateBit, },
{Feature_HasKLBit, },
{Feature_HasLWPBit, },
{Feature_HasMFenceBit, },
{Feature_HasMMXBit, },
{Feature_HasMOVBEBit, },
{Feature_HasMWAITXBit, },
{Feature_HasPTWRITEBit, },
{Feature_HasRTMBit, },
{Feature_HasSERIALIZEBit, },
{Feature_HasSHABit, },
{Feature_HasSSE1Bit, },
{Feature_HasSSE2Bit, },
{Feature_HasSSE3Bit, },
{Feature_HasSSE4ABit, },
{Feature_HasTBMBit, },
{Feature_HasTSXLDTRKBit, },
{Feature_HasVLXBit, },
{Feature_HasVPOPCNTDQBit, },
{Feature_HasWAITPKGBit, },
{Feature_HasWBNOINVDBit, },
{Feature_HasX87Bit, },
{Feature_HasXOPBit, },
{Feature_In64BitModeBit, },
{Feature_NoDQIBit, },
{Feature_Not64BitModeBit, },
{Feature_UseAVXBit, },
{Feature_UseIncDecBit, },
{Feature_UseSSE1Bit, },
{Feature_UseSSE2Bit, },
{Feature_UseSSE41Bit, },
{Feature_UseSSSE3Bit, },
{Feature_HasAESBit, Feature_HasAVXBit, },
{Feature_HasAESBit, Feature_NoAVXBit, },
{Feature_HasAMXBF16Bit, Feature_In64BitModeBit, },
{Feature_HasAMXFP16Bit, Feature_In64BitModeBit, },
{Feature_HasAMXINT8Bit, Feature_In64BitModeBit, },
{Feature_HasAMXTILEBit, Feature_In64BitModeBit, },
{Feature_HasAVXBit, Feature_In64BitModeBit, },
{Feature_HasAVXBit, Feature_NoBWIBit, },
{Feature_HasAVXBit, Feature_NoVLXBit, },
{Feature_HasAVXBit, Feature_NoVLX_Or_NoBWIBit, },
{Feature_HasAVX2Bit, Feature_NoVLXBit, },
{Feature_HasAVX2Bit, Feature_NoVLX_Or_NoBWIBit, },
{Feature_HasAVX512Bit, Feature_HasVAESBit, },
{Feature_HasAVX512Bit, Feature_HasVLXBit, },
{Feature_HasAVX512Bit, Feature_HasVPCLMULQDQBit, },
{Feature_HasAVX512Bit, Feature_NoBWIBit, },
{Feature_HasAVX512Bit, Feature_NoDQIBit, },
{Feature_HasAVX512Bit, Feature_NoVLXBit, },
{Feature_HasBF16Bit, Feature_HasVLXBit, },
{Feature_HasBITALGBit, Feature_HasVLXBit, },
{Feature_HasBITALGBit, Feature_NoVLXBit, },
{Feature_HasBWIBit, Feature_HasVLXBit, },
{Feature_HasBWIBit, Feature_NoVLXBit, },
{Feature_HasCDIBit, Feature_HasVLXBit, },
{Feature_HasCDIBit, Feature_NoVLXBit, },
{Feature_HasDQIBit, Feature_HasVLXBit, },
{Feature_HasDQIBit, Feature_NoBWIBit, },
{Feature_HasDQIBit, Feature_NoVLXBit, },
{Feature_HasFMA4Bit, Feature_NoAVX512Bit, },
{Feature_HasFMA4Bit, Feature_NoVLXBit, },
{Feature_HasFP16Bit, Feature_HasVLXBit, },
{Feature_HasFSGSBaseBit, Feature_In64BitModeBit, },
{Feature_HasPCLMULBit, Feature_NoAVXBit, },
{Feature_HasPTWRITEBit, Feature_In64BitModeBit, },
{Feature_HasRDPIDBit, Feature_In64BitModeBit, },
{Feature_HasRDPIDBit, Feature_Not64BitModeBit, },
{Feature_HasUINTRBit, Feature_In64BitModeBit, },
{Feature_HasVAESBit, Feature_HasVLXBit, },
{Feature_HasVAESBit, Feature_NoVLXBit, },
{Feature_HasVLXBit, Feature_HasVPCLMULQDQBit, },
{Feature_HasVLXBit, Feature_HasVPOPCNTDQBit, },
{Feature_HasVPCLMULQDQBit, Feature_NoVLXBit, },
{Feature_HasVPOPCNTDQBit, Feature_NoVLXBit, },
{Feature_HasWAITPKGBit, Feature_In64BitModeBit, },
{Feature_HasWAITPKGBit, Feature_Not64BitModeBit, },
{Feature_In64BitModeBit, Feature_UseSSE2Bit, },
{Feature_Not64BitModeBit, Feature_OptForSizeBit, },
{Feature_NotWin64WithoutFPBit, Feature_OptForMinSizeBit, },
{Feature_HasAESBit, Feature_HasAVXBit, Feature_NoVLX_Or_NoVAESBit, },
{Feature_HasAVXBit, Feature_HasPCLMULBit, Feature_NoVLX_Or_NoVPCLMULQDQBit, },
{Feature_HasDQIBit, Feature_HasVLXBit, Feature_NoBWIBit, },
{Feature_HasFMABit, Feature_NoAVX512Bit, Feature_NoFMA4Bit, },
{Feature_HasFMABit, Feature_NoFMA4Bit, Feature_NoVLXBit, },
};
// ComplexPattern predicates.
enum {
GICP_Invalid,
};
// See constructor for table contents
// PatFrag predicates.
enum {
GIPFP_I64_Predicate_AndMask64 = GIPFP_I64_Invalid + 1,
GIPFP_I64_Predicate_BTCBTSMask64,
GIPFP_I64_Predicate_BTRMask64,
GIPFP_I64_Predicate_PrefetchWT1Level,
GIPFP_I64_Predicate_i16immSExt8,
GIPFP_I64_Predicate_i32immSExt8,
GIPFP_I64_Predicate_i64immSExt32,
GIPFP_I64_Predicate_i64immSExt8,
GIPFP_I64_Predicate_i64immZExt32,
GIPFP_I64_Predicate_i64immZExt32SExt8,
GIPFP_I64_Predicate_i64timmSExt32,
GIPFP_I64_Predicate_immff00_ffff,
};
bool X86InstructionSelector::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
switch (PredicateID) {
case GIPFP_I64_Predicate_AndMask64: {
return isMask_64(Imm) && !isUInt<32>(Imm);
llvm_unreachable("ImmediateCode should have returned");
return false;
}
case GIPFP_I64_Predicate_BTCBTSMask64: {
return !isInt<32>(Imm) && isPowerOf2_64(Imm);
llvm_unreachable("ImmediateCode should have returned");
return false;
}
case GIPFP_I64_Predicate_BTRMask64: {
return !isUInt<32>(Imm) && !isInt<32>(Imm) && isPowerOf2_64(~Imm);
llvm_unreachable("ImmediateCode should have returned");
return false;
}
case GIPFP_I64_Predicate_PrefetchWT1Level: {
return Imm < 3;
llvm_unreachable("ImmediateCode should have returned");
return false;
}
case GIPFP_I64_Predicate_i16immSExt8: {
return isInt<8>(Imm);
llvm_unreachable("ImmediateCode should have returned");
return false;
}
case GIPFP_I64_Predicate_i32immSExt8: {
return isInt<8>(Imm);
llvm_unreachable("ImmediateCode should have returned");
return false;
}
case GIPFP_I64_Predicate_i64immSExt32: {
return isInt<32>(Imm);
llvm_unreachable("ImmediateCode should have returned");
return false;
}
case GIPFP_I64_Predicate_i64immSExt8: {
return isInt<8>(Imm);
llvm_unreachable("ImmediateCode should have returned");
return false;
}
case GIPFP_I64_Predicate_i64immZExt32: {
return isUInt<32>(Imm);
llvm_unreachable("ImmediateCode should have returned");
return false;
}
case GIPFP_I64_Predicate_i64immZExt32SExt8: {
return isUInt<32>(Imm) && isInt<8>(static_cast<int32_t>(Imm));
llvm_unreachable("ImmediateCode should have returned");
return false;
}
case GIPFP_I64_Predicate_i64timmSExt32: {
return isInt<32>(Imm);
llvm_unreachable("ImmediateCode should have returned");
return false;
}
case GIPFP_I64_Predicate_immff00_ffff: {
return Imm >= 0xff00 && Imm <= 0xffff;
llvm_unreachable("ImmediateCode should have returned");
return false;
}
}
llvm_unreachable("Unknown predicate");
return false;
}
// PatFrag predicates.
enum {
GIPFP_APFloat_Predicate_fpimm0 = GIPFP_APFloat_Invalid + 1,
GIPFP_APFloat_Predicate_fpimm1,
GIPFP_APFloat_Predicate_fpimmneg0,
GIPFP_APFloat_Predicate_fpimmneg1,
};
bool X86InstructionSelector::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
switch (PredicateID) {
case GIPFP_APFloat_Predicate_fpimm0: {
return Imm.isExactlyValue(+0.0);
llvm_unreachable("ImmediateCode should have returned");
return false;
}
case GIPFP_APFloat_Predicate_fpimm1: {
return Imm.isExactlyValue(+1.0);
llvm_unreachable("ImmediateCode should have returned");
return false;
}
case GIPFP_APFloat_Predicate_fpimmneg0: {
return Imm.isExactlyValue(-0.0);
llvm_unreachable("ImmediateCode should have returned");
return false;
}
case GIPFP_APFloat_Predicate_fpimmneg1: {
return Imm.isExactlyValue(-1.0);
llvm_unreachable("ImmediateCode should have returned");
return false;
}
}
llvm_unreachable("Unknown predicate");
return false;
}
bool X86InstructionSelector::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
llvm_unreachable("Unknown predicate");
return false;
}
bool X86InstructionSelector::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const std::array<const MachineOperand *, 3> &Operands) const {
const MachineFunction &MF = *MI.getParent()->getParent();
const MachineRegisterInfo &MRI = MF.getRegInfo();
(void)MRI;
llvm_unreachable("Unknown predicate");
return false;
}
X86InstructionSelector::ComplexMatcherMemFn
X86InstructionSelector::ComplexPredicateFns[] = {
nullptr, // GICP_Invalid
};
// Custom renderers.
enum {
GICR_Invalid,
};
X86InstructionSelector::CustomRendererFn
X86InstructionSelector::CustomRenderers[] = {
nullptr, // GICR_Invalid
};
bool X86InstructionSelector::selectImpl(MachineInstr &I, CodeGenCoverage &CoverageInfo) const {
MachineFunction &MF = *I.getParent()->getParent();
MachineRegisterInfo &MRI = MF.getRegInfo();
const PredicateBitset AvailableFeatures = getAvailableFeatures();
NewMIVector OutMIs;
State.MIs.clear();
State.MIs.push_back(&I);
if (executeMatchTable(*this, OutMIs, State, ISelInfo, getMatchTable(), TII, MRI, TRI, RBI, AvailableFeatures, CoverageInfo)) {
return true;
}
return false;
}
const int64_t *X86InstructionSelector::getMatchTable() const {
constexpr static int64_t MatchTable0[] = {
GIM_SwitchOpcode, /*MI*/0, /*[*/46, 227, /*)*//*default:*//*Label 61*/ 63086,
/*TargetOpcode::G_ADD*//*Label 0*/ 186,
/*TargetOpcode::G_SUB*//*Label 1*/ 1803,
/*TargetOpcode::G_MUL*//*Label 2*/ 2884, 0, 0, 0, 0, 0, 0,
/*TargetOpcode::G_AND*//*Label 3*/ 3954,
/*TargetOpcode::G_OR*//*Label 4*/ 9364,
/*TargetOpcode::G_XOR*//*Label 5*/ 13234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/*TargetOpcode::G_CONCAT_VECTORS*//*Label 6*/ 20965, 0, 0,
/*TargetOpcode::G_BITCAST*//*Label 7*/ 21121, 0, 0, 0, 0,
/*TargetOpcode::G_INTRINSIC_LRINT*//*Label 8*/ 22667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/*TargetOpcode::G_INTRINSIC*//*Label 9*/ 22990,
/*TargetOpcode::G_INTRINSIC_W_SIDE_EFFECTS*//*Label 10*/ 28683,
/*TargetOpcode::G_ANYEXT*//*Label 11*/ 31047,
/*TargetOpcode::G_TRUNC*//*Label 12*/ 31458,
/*TargetOpcode::G_CONSTANT*//*Label 13*/ 32316,
/*TargetOpcode::G_FCONSTANT*//*Label 14*/ 32585, 0, 0,
/*TargetOpcode::G_SEXT*//*Label 15*/ 32736, 0,
/*TargetOpcode::G_ZEXT*//*Label 16*/ 33596,
/*TargetOpcode::G_SHL*//*Label 17*/ 34384,
/*TargetOpcode::G_LSHR*//*Label 18*/ 34977,
/*TargetOpcode::G_ASHR*//*Label 19*/ 35554,
/*TargetOpcode::G_FSHL*//*Label 20*/ 36131,
/*TargetOpcode::G_FSHR*//*Label 21*/ 36338,
/*TargetOpcode::G_ROTR*//*Label 22*/ 36545,
/*TargetOpcode::G_ROTL*//*Label 23*/ 38007,
/*TargetOpcode::G_ICMP*//*Label 24*/ 39515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/*TargetOpcode::G_UMULH*//*Label 25*/ 41072,
/*TargetOpcode::G_SMULH*//*Label 26*/ 41260,
/*TargetOpcode::G_UADDSAT*//*Label 27*/ 41448,
/*TargetOpcode::G_SADDSAT*//*Label 28*/ 41809,
/*TargetOpcode::G_USUBSAT*//*Label 29*/ 42170,
/*TargetOpcode::G_SSUBSAT*//*Label 30*/ 42531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/*TargetOpcode::G_FADD*//*Label 31*/ 42892,
/*TargetOpcode::G_FSUB*//*Label 32*/ 43714,
/*TargetOpcode::G_FMUL*//*Label 33*/ 44536,
/*TargetOpcode::G_FMA*//*Label 34*/ 45358, 0,
/*TargetOpcode::G_FDIV*//*Label 35*/ 46532, 0, 0, 0, 0, 0, 0, 0, 0,
/*TargetOpcode::G_FNEG*//*Label 36*/ 47354,
/*TargetOpcode::G_FPEXT*//*Label 37*/ 47445,
/*TargetOpcode::G_FPTRUNC*//*Label 38*/ 47924,
/*TargetOpcode::G_FPTOSI*//*Label 39*/ 48230,
/*TargetOpcode::G_FPTOUI*//*Label 40*/ 48638,
/*TargetOpcode::G_SITOFP*//*Label 41*/ 48805,
/*TargetOpcode::G_UITOFP*//*Label 42*/ 49937,
/*TargetOpcode::G_FABS*//*Label 43*/ 50675, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/*TargetOpcode::G_SMIN*//*Label 44*/ 50766,
/*TargetOpcode::G_SMAX*//*Label 45*/ 51703,
/*TargetOpcode::G_UMIN*//*Label 46*/ 52640,
/*TargetOpcode::G_UMAX*//*Label 47*/ 53577,
/*TargetOpcode::G_ABS*//*Label 48*/ 54514, 0, 0,
/*TargetOpcode::G_BR*//*Label 49*/ 55213, 0, 0, 0, 0, 0,
/*TargetOpcode::G_CTTZ_ZERO_UNDEF*//*Label 50*/ 55226,
/*TargetOpcode::G_CTLZ*//*Label 51*/ 55311, 0,
/*TargetOpcode::G_CTPOP*//*Label 52*/ 55870,
/*TargetOpcode::G_BSWAP*//*Label 53*/ 56974, 0, 0, 0, 0,
/*TargetOpcode::G_FSQRT*//*Label 54*/ 57064, 0, 0, 0, 0, 0, 0, 0,
/*TargetOpcode::G_STRICT_FADD*//*Label 55*/ 57844,
/*TargetOpcode::G_STRICT_FSUB*//*Label 56*/ 58666,
/*TargetOpcode::G_STRICT_FMUL*//*Label 57*/ 59488,
/*TargetOpcode::G_STRICT_FDIV*//*Label 58*/ 60310, 0,
/*TargetOpcode::G_STRICT_FMA*//*Label 59*/ 61132,
/*TargetOpcode::G_STRICT_FSQRT*//*Label 60*/ 62306,
// Label 0: @186
GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/1, 25, /*)*//*default:*//*Label 78*/ 1802,
/*GILLT_s8*//*Label 62*/ 216,
/*GILLT_s16*//*Label 63*/ 330,
/*GILLT_s32*//*Label 64*/ 502,
/*GILLT_s64*//*Label 65*/ 674, 0, 0, 0,
/*GILLT_v2s64*//*Label 66*/ 874, 0,
/*GILLT_v4s32*//*Label 67*/ 955,
/*GILLT_v4s64*//*Label 68*/ 1158, 0,
/*GILLT_v8s16*//*Label 69*/ 1216,
/*GILLT_v8s32*//*Label 70*/ 1419,
/*GILLT_v8s64*//*Label 71*/ 1477, 0,
/*GILLT_v16s8*//*Label 72*/ 1509,
/*GILLT_v16s16*//*Label 73*/ 1590,
/*GILLT_v16s32*//*Label 74*/ 1648, 0,
/*GILLT_v32s8*//*Label 75*/ 1680,
/*GILLT_v32s16*//*Label 76*/ 1738, 0,
/*GILLT_v64s8*//*Label 77*/ 1770,
// Label 62: @216
GIM_Try, /*On fail goto*//*Label 79*/ 329,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR8RegClassID,
GIM_Try, /*On fail goto*//*Label 80*/ 258, // Rule ID 21047 //
GIM_CheckFeatures, GIFBS_UseIncDec,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 1,
// (add:{ *:[i8] } GR8:{ *:[i8] }:$src, 1:{ *:[i8] }) => (INC8r:{ *:[i8] }:{ *:[i32] } GR8:{ *:[i8] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::INC8r,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21047,
GIR_Done,
// Label 80: @258
GIM_Try, /*On fail goto*//*Label 81*/ 282, // Rule ID 21051 //
GIM_CheckFeatures, GIFBS_UseIncDec,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, -1,
// (add:{ *:[i8] } GR8:{ *:[i8] }:$src, -1:{ *:[i8] }) => (DEC8r:{ *:[i8] }:{ *:[i32] } GR8:{ *:[i8] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::DEC8r,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21051,
GIR_Done,
// Label 81: @282
GIM_Try, /*On fail goto*//*Label 82*/ 312, // Rule ID 21003 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (add:{ *:[i8] } GR8:{ *:[i8] }:$src1, (imm:{ *:[i8] }):$src2) => (ADD8ri:{ *:[i8] }:{ *:[i32] } GR8:{ *:[i8] }:$src1, (imm:{ *:[i8] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::ADD8ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21003,
GIR_Done,
// Label 82: @312
GIM_Try, /*On fail goto*//*Label 83*/ 328, // Rule ID 20995 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR8RegClassID,
// (add:{ *:[i8] } GR8:{ *:[i8] }:$src1, GR8:{ *:[i8] }:$src2) => (ADD8rr:{ *:[i8] }:{ *:[i32] } GR8:{ *:[i8] }:$src1, GR8:{ *:[i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::ADD8rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20995,
GIR_Done,
// Label 83: @328
GIM_Reject,
// Label 79: @329
GIM_Reject,
// Label 63: @330
GIM_Try, /*On fail goto*//*Label 84*/ 501,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_Try, /*On fail goto*//*Label 85*/ 373, // Rule ID 20859 //
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 128,
// (add:{ *:[i16] } GR16:{ *:[i16] }:$src1, 128:{ *:[i16] }) => (SUB16ri8:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, -128:{ *:[i16] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::SUB16ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddImm, /*InsnID*/0, /*Imm*/-128,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20859,
GIR_Done,
// Label 85: @373
GIM_Try, /*On fail goto*//*Label 86*/ 397, // Rule ID 21048 //
GIM_CheckFeatures, GIFBS_UseIncDec,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 1,
// (add:{ *:[i16] } GR16:{ *:[i16] }:$src, 1:{ *:[i16] }) => (INC16r:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::INC16r,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21048,
GIR_Done,
// Label 86: @397
GIM_Try, /*On fail goto*//*Label 87*/ 421, // Rule ID 21052 //
GIM_CheckFeatures, GIFBS_UseIncDec,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, -1,
// (add:{ *:[i16] } GR16:{ *:[i16] }:$src, -1:{ *:[i16] }) => (DEC16r:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::DEC16r,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21052,
GIR_Done,
// Label 87: @421
GIM_Try, /*On fail goto*//*Label 88*/ 454, // Rule ID 21006 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i16immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (add:{ *:[i16] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] })<<P:Predicate_i16immSExt8>>:$src2) => (ADD16ri8:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] })<<P:Predicate_i16immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::ADD16ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21006,
GIR_Done,
// Label 88: @454
GIM_Try, /*On fail goto*//*Label 89*/ 484, // Rule ID 21004 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (add:{ *:[i16] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] }):$src2) => (ADD16ri:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::ADD16ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21004,
GIR_Done,
// Label 89: @484
GIM_Try, /*On fail goto*//*Label 90*/ 500, // Rule ID 20996 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR16RegClassID,
// (add:{ *:[i16] } GR16:{ *:[i16] }:$src1, GR16:{ *:[i16] }:$src2) => (ADD16rr:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, GR16:{ *:[i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::ADD16rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20996,
GIR_Done,
// Label 90: @500
GIM_Reject,
// Label 84: @501
GIM_Reject,
// Label 64: @502
GIM_Try, /*On fail goto*//*Label 91*/ 673,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_Try, /*On fail goto*//*Label 92*/ 545, // Rule ID 20861 //
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 128,
// (add:{ *:[i32] } GR32:{ *:[i32] }:$src1, 128:{ *:[i32] }) => (SUB32ri8:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, -128:{ *:[i32] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::SUB32ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddImm, /*InsnID*/0, /*Imm*/-128,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20861,
GIR_Done,
// Label 92: @545
GIM_Try, /*On fail goto*//*Label 93*/ 569, // Rule ID 21049 //
GIM_CheckFeatures, GIFBS_UseIncDec,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 1,
// (add:{ *:[i32] } GR32:{ *:[i32] }:$src, 1:{ *:[i32] }) => (INC32r:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::INC32r,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21049,
GIR_Done,
// Label 93: @569
GIM_Try, /*On fail goto*//*Label 94*/ 593, // Rule ID 21053 //
GIM_CheckFeatures, GIFBS_UseIncDec,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, -1,
// (add:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] }) => (DEC32r:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::DEC32r,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21053,
GIR_Done,
// Label 94: @593
GIM_Try, /*On fail goto*//*Label 95*/ 626, // Rule ID 21007 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i32immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (add:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] })<<P:Predicate_i32immSExt8>>:$src2) => (ADD32ri8:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] })<<P:Predicate_i32immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::ADD32ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21007,
GIR_Done,
// Label 95: @626
GIM_Try, /*On fail goto*//*Label 96*/ 656, // Rule ID 21005 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (add:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] }):$src2) => (ADD32ri:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::ADD32ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21005,
GIR_Done,
// Label 96: @656
GIM_Try, /*On fail goto*//*Label 97*/ 672, // Rule ID 20997 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR32RegClassID,
// (add:{ *:[i32] } GR32:{ *:[i32] }:$src1, GR32:{ *:[i32] }:$src2) => (ADD32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, GR32:{ *:[i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::ADD32rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20997,
GIR_Done,
// Label 97: @672
GIM_Reject,
// Label 91: @673
GIM_Reject,
// Label 65: @674
GIM_Try, /*On fail goto*//*Label 98*/ 873,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_Try, /*On fail goto*//*Label 99*/ 717, // Rule ID 20863 //
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 128,
// (add:{ *:[i64] } GR64:{ *:[i64] }:$src1, 128:{ *:[i64] }) => (SUB64ri8:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, -128:{ *:[i64] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::SUB64ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddImm, /*InsnID*/0, /*Imm*/-128,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20863,
GIR_Done,
// Label 99: @717
GIM_Try, /*On fail goto*//*Label 100*/ 742, // Rule ID 20868 //
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 2147483648,
// (add:{ *:[i64] } GR64:{ *:[i64] }:$src1, 2147483648:{ *:[i64] }) => (SUB64ri32:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, -2147483648:{ *:[i64] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::SUB64ri32,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddImm, /*InsnID*/0, /*Imm*/-2147483648,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20868,
GIR_Done,
// Label 100: @742
GIM_Try, /*On fail goto*//*Label 101*/ 766, // Rule ID 21050 //
GIM_CheckFeatures, GIFBS_UseIncDec,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 1,
// (add:{ *:[i64] } GR64:{ *:[i64] }:$src, 1:{ *:[i64] }) => (INC64r:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::INC64r,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21050,
GIR_Done,
// Label 101: @766
GIM_Try, /*On fail goto*//*Label 102*/ 790, // Rule ID 21054 //
GIM_CheckFeatures, GIFBS_UseIncDec,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, -1,
// (add:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] }) => (DEC64r:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::DEC64r,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21054,
GIR_Done,
// Label 102: @790
GIM_Try, /*On fail goto*//*Label 103*/ 823, // Rule ID 21008 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i64immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (add:{ *:[i64] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt8>>:$src2) => (ADD64ri8:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::ADD64ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21008,
GIR_Done,
// Label 103: @823
GIM_Try, /*On fail goto*//*Label 104*/ 856, // Rule ID 21009 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i64immSExt32,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (add:{ *:[i64] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt32>>:$src2) => (ADD64ri32:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt32>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::ADD64ri32,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21009,
GIR_Done,
// Label 104: @856
GIM_Try, /*On fail goto*//*Label 105*/ 872, // Rule ID 20998 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR64RegClassID,
// (add:{ *:[i64] } GR64:{ *:[i64] }:$src1, GR64:{ *:[i64] }:$src2) => (ADD64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, GR64:{ *:[i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::ADD64rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20998,
GIR_Done,
// Label 105: @872
GIM_Reject,
// Label 98: @873
GIM_Reject,
// Label 66: @874
GIM_Try, /*On fail goto*//*Label 106*/ 954,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s64,
GIM_Try, /*On fail goto*//*Label 107*/ 907, // Rule ID 2232 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (add:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2) => (VPADDQrr:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDQrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2232,
GIR_Done,
// Label 107: @907
GIM_Try, /*On fail goto*//*Label 108*/ 930, // Rule ID 2234 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (add:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2) => (PADDQrr:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PADDQrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2234,
GIR_Done,
// Label 108: @930
GIM_Try, /*On fail goto*//*Label 109*/ 953, // Rule ID 4290 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (add:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src1, VR128X:{ *:[v2i64] }:$src2) => (VPADDQZ128rr:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src1, VR128X:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDQZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4290,
GIR_Done,
// Label 109: @953
GIM_Reject,
// Label 106: @954
GIM_Reject,
// Label 67: @955
GIM_Try, /*On fail goto*//*Label 110*/ 1157,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_Try, /*On fail goto*//*Label 111*/ 1026, // Rule ID 16322 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (add:{ *:[v4i32] } (mul:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2), VR128:{ *:[v4i32] }:$src3) => (VPMACSDDrr:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2, VR128:{ *:[v4i32] }:$src3)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPMACSDDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src3
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16322,
GIR_Done,
// Label 111: @1026
GIM_Try, /*On fail goto*//*Label 112*/ 1087, // Rule ID 23056 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::VR128RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (add:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src3, (mul:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2)) => (VPMACSDDrr:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2, VR128:{ *:[v4i32] }:$src3)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPMACSDDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src3
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 23056,
GIR_Done,
// Label 112: @1087
GIM_Try, /*On fail goto*//*Label 113*/ 1110, // Rule ID 2226 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (add:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2) => (VPADDDrr:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2226,
GIR_Done,
// Label 113: @1110
GIM_Try, /*On fail goto*//*Label 114*/ 1133, // Rule ID 2228 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (add:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2) => (PADDDrr:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PADDDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2228,
GIR_Done,
// Label 114: @1133
GIM_Try, /*On fail goto*//*Label 115*/ 1156, // Rule ID 4317 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (add:{ *:[v4i32] } VR128X:{ *:[v4i32] }:$src1, VR128X:{ *:[v4i32] }:$src2) => (VPADDDZ128rr:{ *:[v4i32] } VR128X:{ *:[v4i32] }:$src1, VR128X:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDDZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4317,
GIR_Done,
// Label 115: @1156
GIM_Reject,
// Label 110: @1157
GIM_Reject,
// Label 68: @1158
GIM_Try, /*On fail goto*//*Label 116*/ 1215,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s64,
GIM_Try, /*On fail goto*//*Label 117*/ 1191, // Rule ID 2236 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (add:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2) => (VPADDQYrr:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDQYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2236,
GIR_Done,
// Label 117: @1191
GIM_Try, /*On fail goto*//*Label 118*/ 1214, // Rule ID 4281 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (add:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src1, VR256X:{ *:[v4i64] }:$src2) => (VPADDQZ256rr:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src1, VR256X:{ *:[v4i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDQZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4281,
GIR_Done,
// Label 118: @1214
GIM_Reject,
// Label 116: @1215
GIM_Reject,
// Label 69: @1216
GIM_Try, /*On fail goto*//*Label 119*/ 1418,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_Try, /*On fail goto*//*Label 120*/ 1287, // Rule ID 16321 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (add:{ *:[v8i16] } (mul:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2), VR128:{ *:[v8i16] }:$src3) => (VPMACSWWrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2, VR128:{ *:[v8i16] }:$src3)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPMACSWWrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src3
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16321,
GIR_Done,
// Label 120: @1287
GIM_Try, /*On fail goto*//*Label 121*/ 1348, // Rule ID 23055 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::VR128RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (add:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src3, (mul:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)) => (VPMACSWWrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2, VR128:{ *:[v8i16] }:$src3)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPMACSWWrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src3
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 23055,
GIR_Done,
// Label 121: @1348
GIM_Try, /*On fail goto*//*Label 122*/ 1371, // Rule ID 2220 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX_Or_NoBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (add:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2) => (VPADDWrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDWrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2220,
GIR_Done,
// Label 122: @1371
GIM_Try, /*On fail goto*//*Label 123*/ 1394, // Rule ID 2222 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (add:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2) => (PADDWrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PADDWrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2222,
GIR_Done,
// Label 123: @1394
GIM_Try, /*On fail goto*//*Label 124*/ 1417, // Rule ID 4338 //
GIM_CheckFeatures, GIFBS_HasBWI_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (add:{ *:[v8i16] } VR128X:{ *:[v8i16] }:$src1, VR128X:{ *:[v8i16] }:$src2) => (VPADDWZ128rr:{ *:[v8i16] } VR128X:{ *:[v8i16] }:$src1, VR128X:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDWZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4338,
GIR_Done,
// Label 124: @1417
GIM_Reject,
// Label 119: @1418
GIM_Reject,
// Label 70: @1419
GIM_Try, /*On fail goto*//*Label 125*/ 1476,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s32,
GIM_Try, /*On fail goto*//*Label 126*/ 1452, // Rule ID 2230 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (add:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2) => (VPADDDYrr:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDDYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2230,
GIR_Done,
// Label 126: @1452
GIM_Try, /*On fail goto*//*Label 127*/ 1475, // Rule ID 4308 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (add:{ *:[v8i32] } VR256X:{ *:[v8i32] }:$src1, VR256X:{ *:[v8i32] }:$src2) => (VPADDDZ256rr:{ *:[v8i32] } VR256X:{ *:[v8i32] }:$src1, VR256X:{ *:[v8i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDDZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4308,
GIR_Done,
// Label 127: @1475
GIM_Reject,
// Label 125: @1476
GIM_Reject,
// Label 71: @1477
GIM_Try, /*On fail goto*//*Label 128*/ 1508, // Rule ID 4272 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (add:{ *:[v8i64] } VR512:{ *:[v8i64] }:$src1, VR512:{ *:[v8i64] }:$src2) => (VPADDQZrr:{ *:[v8i64] } VR512:{ *:[v8i64] }:$src1, VR512:{ *:[v8i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDQZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4272,
GIR_Done,
// Label 128: @1508
GIM_Reject,
// Label 72: @1509
GIM_Try, /*On fail goto*//*Label 129*/ 1589,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
GIM_Try, /*On fail goto*//*Label 130*/ 1542, // Rule ID 2214 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX_Or_NoBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (add:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2) => (VPADDBrr:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDBrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2214,
GIR_Done,
// Label 130: @1542
GIM_Try, /*On fail goto*//*Label 131*/ 1565, // Rule ID 2216 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (add:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2) => (PADDBrr:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PADDBrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2216,
GIR_Done,
// Label 131: @1565
GIM_Try, /*On fail goto*//*Label 132*/ 1588, // Rule ID 4356 //
GIM_CheckFeatures, GIFBS_HasBWI_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (add:{ *:[v16i8] } VR128X:{ *:[v16i8] }:$src1, VR128X:{ *:[v16i8] }:$src2) => (VPADDBZ128rr:{ *:[v16i8] } VR128X:{ *:[v16i8] }:$src1, VR128X:{ *:[v16i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDBZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4356,
GIR_Done,
// Label 132: @1588
GIM_Reject,
// Label 129: @1589
GIM_Reject,
// Label 73: @1590
GIM_Try, /*On fail goto*//*Label 133*/ 1647,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s16,
GIM_Try, /*On fail goto*//*Label 134*/ 1623, // Rule ID 2224 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX_Or_NoBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (add:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2) => (VPADDWYrr:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDWYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2224,
GIR_Done,
// Label 134: @1623
GIM_Try, /*On fail goto*//*Label 135*/ 1646, // Rule ID 4332 //
GIM_CheckFeatures, GIFBS_HasBWI_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (add:{ *:[v16i16] } VR256X:{ *:[v16i16] }:$src1, VR256X:{ *:[v16i16] }:$src2) => (VPADDWZ256rr:{ *:[v16i16] } VR256X:{ *:[v16i16] }:$src1, VR256X:{ *:[v16i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDWZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4332,
GIR_Done,
// Label 135: @1646
GIM_Reject,
// Label 133: @1647
GIM_Reject,
// Label 74: @1648
GIM_Try, /*On fail goto*//*Label 136*/ 1679, // Rule ID 4299 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (add:{ *:[v16i32] } VR512:{ *:[v16i32] }:$src1, VR512:{ *:[v16i32] }:$src2) => (VPADDDZrr:{ *:[v16i32] } VR512:{ *:[v16i32] }:$src1, VR512:{ *:[v16i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDDZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4299,
GIR_Done,
// Label 136: @1679
GIM_Reject,
// Label 75: @1680
GIM_Try, /*On fail goto*//*Label 137*/ 1737,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s8,
GIM_Try, /*On fail goto*//*Label 138*/ 1713, // Rule ID 2218 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX_Or_NoBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (add:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2) => (VPADDBYrr:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDBYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2218,
GIR_Done,
// Label 138: @1713
GIM_Try, /*On fail goto*//*Label 139*/ 1736, // Rule ID 4350 //
GIM_CheckFeatures, GIFBS_HasBWI_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (add:{ *:[v32i8] } VR256X:{ *:[v32i8] }:$src1, VR256X:{ *:[v32i8] }:$src2) => (VPADDBZ256rr:{ *:[v32i8] } VR256X:{ *:[v32i8] }:$src1, VR256X:{ *:[v32i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDBZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4350,
GIR_Done,
// Label 139: @1736
GIM_Reject,
// Label 137: @1737
GIM_Reject,
// Label 76: @1738
GIM_Try, /*On fail goto*//*Label 140*/ 1769, // Rule ID 4326 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (add:{ *:[v32i16] } VR512:{ *:[v32i16] }:$src1, VR512:{ *:[v32i16] }:$src2) => (VPADDWZrr:{ *:[v32i16] } VR512:{ *:[v32i16] }:$src1, VR512:{ *:[v32i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDWZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4326,
GIR_Done,
// Label 140: @1769
GIM_Reject,
// Label 77: @1770
GIM_Try, /*On fail goto*//*Label 141*/ 1801, // Rule ID 4344 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v64s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v64s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (add:{ *:[v64i8] } VR512:{ *:[v64i8] }:$src1, VR512:{ *:[v64i8] }:$src2) => (VPADDBZrr:{ *:[v64i8] } VR512:{ *:[v64i8] }:$src1, VR512:{ *:[v64i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPADDBZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4344,
GIR_Done,
// Label 141: @1801
GIM_Reject,
// Label 78: @1802
GIM_Reject,
// Label 1: @1803
GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/1, 25, /*)*//*default:*//*Label 158*/ 2883,
/*GILLT_s8*//*Label 142*/ 1833,
/*GILLT_s16*//*Label 143*/ 1899,
/*GILLT_s32*//*Label 144*/ 1998,
/*GILLT_s64*//*Label 145*/ 2097, 0, 0, 0,
/*GILLT_v2s64*//*Label 146*/ 2199, 0,
/*GILLT_v4s32*//*Label 147*/ 2280,
/*GILLT_v4s64*//*Label 148*/ 2361, 0,
/*GILLT_v8s16*//*Label 149*/ 2419,
/*GILLT_v8s32*//*Label 150*/ 2500,
/*GILLT_v8s64*//*Label 151*/ 2558, 0,
/*GILLT_v16s8*//*Label 152*/ 2590,
/*GILLT_v16s16*//*Label 153*/ 2671,
/*GILLT_v16s32*//*Label 154*/ 2729, 0,
/*GILLT_v32s8*//*Label 155*/ 2761,
/*GILLT_v32s16*//*Label 156*/ 2819, 0,
/*GILLT_v64s8*//*Label 157*/ 2851,
// Label 142: @1833
GIM_Try, /*On fail goto*//*Label 159*/ 1898,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR8RegClassID,
GIM_Try, /*On fail goto*//*Label 160*/ 1881, // Rule ID 21018 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (sub:{ *:[i8] } GR8:{ *:[i8] }:$src1, (imm:{ *:[i8] }):$src2) => (SUB8ri:{ *:[i8] }:{ *:[i32] } GR8:{ *:[i8] }:$src1, (imm:{ *:[i8] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::SUB8ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21018,
GIR_Done,
// Label 160: @1881
GIM_Try, /*On fail goto*//*Label 161*/ 1897, // Rule ID 21010 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR8RegClassID,
// (sub:{ *:[i8] } GR8:{ *:[i8] }:$src1, GR8:{ *:[i8] }:$src2) => (SUB8rr:{ *:[i8] }:{ *:[i32] } GR8:{ *:[i8] }:$src1, GR8:{ *:[i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::SUB8rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21010,
GIR_Done,
// Label 161: @1897
GIM_Reject,
// Label 159: @1898
GIM_Reject,
// Label 143: @1899
GIM_Try, /*On fail goto*//*Label 162*/ 1997,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_Try, /*On fail goto*//*Label 163*/ 1950, // Rule ID 21021 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i16immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (sub:{ *:[i16] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] })<<P:Predicate_i16immSExt8>>:$src2) => (SUB16ri8:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] })<<P:Predicate_i16immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::SUB16ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21021,
GIR_Done,
// Label 163: @1950
GIM_Try, /*On fail goto*//*Label 164*/ 1980, // Rule ID 21019 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (sub:{ *:[i16] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] }):$src2) => (SUB16ri:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::SUB16ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21019,
GIR_Done,
// Label 164: @1980
GIM_Try, /*On fail goto*//*Label 165*/ 1996, // Rule ID 21011 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR16RegClassID,
// (sub:{ *:[i16] } GR16:{ *:[i16] }:$src1, GR16:{ *:[i16] }:$src2) => (SUB16rr:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, GR16:{ *:[i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::SUB16rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21011,
GIR_Done,
// Label 165: @1996
GIM_Reject,
// Label 162: @1997
GIM_Reject,
// Label 144: @1998
GIM_Try, /*On fail goto*//*Label 166*/ 2096,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_Try, /*On fail goto*//*Label 167*/ 2049, // Rule ID 21022 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i32immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (sub:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] })<<P:Predicate_i32immSExt8>>:$src2) => (SUB32ri8:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] })<<P:Predicate_i32immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::SUB32ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21022,
GIR_Done,
// Label 167: @2049
GIM_Try, /*On fail goto*//*Label 168*/ 2079, // Rule ID 21020 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (sub:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] }):$src2) => (SUB32ri:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::SUB32ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21020,
GIR_Done,
// Label 168: @2079
GIM_Try, /*On fail goto*//*Label 169*/ 2095, // Rule ID 21012 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR32RegClassID,
// (sub:{ *:[i32] } GR32:{ *:[i32] }:$src1, GR32:{ *:[i32] }:$src2) => (SUB32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, GR32:{ *:[i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::SUB32rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21012,
GIR_Done,
// Label 169: @2095
GIM_Reject,
// Label 166: @2096
GIM_Reject,
// Label 145: @2097
GIM_Try, /*On fail goto*//*Label 170*/ 2198,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_Try, /*On fail goto*//*Label 171*/ 2148, // Rule ID 21023 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i64immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (sub:{ *:[i64] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt8>>:$src2) => (SUB64ri8:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::SUB64ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21023,
GIR_Done,
// Label 171: @2148
GIM_Try, /*On fail goto*//*Label 172*/ 2181, // Rule ID 21024 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i64immSExt32,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (sub:{ *:[i64] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt32>>:$src2) => (SUB64ri32:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt32>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::SUB64ri32,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21024,
GIR_Done,
// Label 172: @2181
GIM_Try, /*On fail goto*//*Label 173*/ 2197, // Rule ID 21013 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR64RegClassID,
// (sub:{ *:[i64] } GR64:{ *:[i64] }:$src1, GR64:{ *:[i64] }:$src2) => (SUB64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, GR64:{ *:[i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::SUB64rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21013,
GIR_Done,
// Label 173: @2197
GIM_Reject,
// Label 170: @2198
GIM_Reject,
// Label 146: @2199
GIM_Try, /*On fail goto*//*Label 174*/ 2279,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s64,
GIM_Try, /*On fail goto*//*Label 175*/ 2232, // Rule ID 2298 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (sub:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2) => (VPSUBQrr:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBQrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2298,
GIR_Done,
// Label 175: @2232
GIM_Try, /*On fail goto*//*Label 176*/ 2255, // Rule ID 2300 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (sub:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2) => (PSUBQrr:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PSUBQrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2300,
GIR_Done,
// Label 176: @2255
GIM_Try, /*On fail goto*//*Label 177*/ 2278, // Rule ID 4380 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (sub:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src1, VR128X:{ *:[v2i64] }:$src2) => (VPSUBQZ128rr:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src1, VR128X:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBQZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4380,
GIR_Done,
// Label 177: @2278
GIM_Reject,
// Label 174: @2279
GIM_Reject,
// Label 147: @2280
GIM_Try, /*On fail goto*//*Label 178*/ 2360,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_Try, /*On fail goto*//*Label 179*/ 2313, // Rule ID 2292 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (sub:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2) => (VPSUBDrr:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2292,
GIR_Done,
// Label 179: @2313
GIM_Try, /*On fail goto*//*Label 180*/ 2336, // Rule ID 2294 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (sub:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2) => (PSUBDrr:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PSUBDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2294,
GIR_Done,
// Label 180: @2336
GIM_Try, /*On fail goto*//*Label 181*/ 2359, // Rule ID 4407 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (sub:{ *:[v4i32] } VR128X:{ *:[v4i32] }:$src1, VR128X:{ *:[v4i32] }:$src2) => (VPSUBDZ128rr:{ *:[v4i32] } VR128X:{ *:[v4i32] }:$src1, VR128X:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBDZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4407,
GIR_Done,
// Label 181: @2359
GIM_Reject,
// Label 178: @2360
GIM_Reject,
// Label 148: @2361
GIM_Try, /*On fail goto*//*Label 182*/ 2418,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s64,
GIM_Try, /*On fail goto*//*Label 183*/ 2394, // Rule ID 2302 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (sub:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2) => (VPSUBQYrr:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBQYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2302,
GIR_Done,
// Label 183: @2394
GIM_Try, /*On fail goto*//*Label 184*/ 2417, // Rule ID 4371 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (sub:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src1, VR256X:{ *:[v4i64] }:$src2) => (VPSUBQZ256rr:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src1, VR256X:{ *:[v4i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBQZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4371,
GIR_Done,
// Label 184: @2417
GIM_Reject,
// Label 182: @2418
GIM_Reject,
// Label 149: @2419
GIM_Try, /*On fail goto*//*Label 185*/ 2499,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_Try, /*On fail goto*//*Label 186*/ 2452, // Rule ID 2286 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX_Or_NoBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (sub:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2) => (VPSUBWrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBWrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2286,
GIR_Done,
// Label 186: @2452
GIM_Try, /*On fail goto*//*Label 187*/ 2475, // Rule ID 2288 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (sub:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2) => (PSUBWrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PSUBWrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2288,
GIR_Done,
// Label 187: @2475
GIM_Try, /*On fail goto*//*Label 188*/ 2498, // Rule ID 4428 //
GIM_CheckFeatures, GIFBS_HasBWI_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (sub:{ *:[v8i16] } VR128X:{ *:[v8i16] }:$src1, VR128X:{ *:[v8i16] }:$src2) => (VPSUBWZ128rr:{ *:[v8i16] } VR128X:{ *:[v8i16] }:$src1, VR128X:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBWZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4428,
GIR_Done,
// Label 188: @2498
GIM_Reject,
// Label 185: @2499
GIM_Reject,
// Label 150: @2500
GIM_Try, /*On fail goto*//*Label 189*/ 2557,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s32,
GIM_Try, /*On fail goto*//*Label 190*/ 2533, // Rule ID 2296 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (sub:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2) => (VPSUBDYrr:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBDYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2296,
GIR_Done,
// Label 190: @2533
GIM_Try, /*On fail goto*//*Label 191*/ 2556, // Rule ID 4398 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (sub:{ *:[v8i32] } VR256X:{ *:[v8i32] }:$src1, VR256X:{ *:[v8i32] }:$src2) => (VPSUBDZ256rr:{ *:[v8i32] } VR256X:{ *:[v8i32] }:$src1, VR256X:{ *:[v8i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBDZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4398,
GIR_Done,
// Label 191: @2556
GIM_Reject,
// Label 189: @2557
GIM_Reject,
// Label 151: @2558
GIM_Try, /*On fail goto*//*Label 192*/ 2589, // Rule ID 4362 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (sub:{ *:[v8i64] } VR512:{ *:[v8i64] }:$src1, VR512:{ *:[v8i64] }:$src2) => (VPSUBQZrr:{ *:[v8i64] } VR512:{ *:[v8i64] }:$src1, VR512:{ *:[v8i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBQZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4362,
GIR_Done,
// Label 192: @2589
GIM_Reject,
// Label 152: @2590
GIM_Try, /*On fail goto*//*Label 193*/ 2670,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
GIM_Try, /*On fail goto*//*Label 194*/ 2623, // Rule ID 2280 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX_Or_NoBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (sub:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2) => (VPSUBBrr:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBBrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2280,
GIR_Done,
// Label 194: @2623
GIM_Try, /*On fail goto*//*Label 195*/ 2646, // Rule ID 2282 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (sub:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2) => (PSUBBrr:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PSUBBrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2282,
GIR_Done,
// Label 195: @2646
GIM_Try, /*On fail goto*//*Label 196*/ 2669, // Rule ID 4446 //
GIM_CheckFeatures, GIFBS_HasBWI_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (sub:{ *:[v16i8] } VR128X:{ *:[v16i8] }:$src1, VR128X:{ *:[v16i8] }:$src2) => (VPSUBBZ128rr:{ *:[v16i8] } VR128X:{ *:[v16i8] }:$src1, VR128X:{ *:[v16i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBBZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4446,
GIR_Done,
// Label 196: @2669
GIM_Reject,
// Label 193: @2670
GIM_Reject,
// Label 153: @2671
GIM_Try, /*On fail goto*//*Label 197*/ 2728,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s16,
GIM_Try, /*On fail goto*//*Label 198*/ 2704, // Rule ID 2290 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX_Or_NoBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (sub:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2) => (VPSUBWYrr:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBWYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2290,
GIR_Done,
// Label 198: @2704
GIM_Try, /*On fail goto*//*Label 199*/ 2727, // Rule ID 4422 //
GIM_CheckFeatures, GIFBS_HasBWI_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (sub:{ *:[v16i16] } VR256X:{ *:[v16i16] }:$src1, VR256X:{ *:[v16i16] }:$src2) => (VPSUBWZ256rr:{ *:[v16i16] } VR256X:{ *:[v16i16] }:$src1, VR256X:{ *:[v16i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBWZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4422,
GIR_Done,
// Label 199: @2727
GIM_Reject,
// Label 197: @2728
GIM_Reject,
// Label 154: @2729
GIM_Try, /*On fail goto*//*Label 200*/ 2760, // Rule ID 4389 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (sub:{ *:[v16i32] } VR512:{ *:[v16i32] }:$src1, VR512:{ *:[v16i32] }:$src2) => (VPSUBDZrr:{ *:[v16i32] } VR512:{ *:[v16i32] }:$src1, VR512:{ *:[v16i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBDZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4389,
GIR_Done,
// Label 200: @2760
GIM_Reject,
// Label 155: @2761
GIM_Try, /*On fail goto*//*Label 201*/ 2818,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s8,
GIM_Try, /*On fail goto*//*Label 202*/ 2794, // Rule ID 2284 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX_Or_NoBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (sub:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2) => (VPSUBBYrr:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBBYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2284,
GIR_Done,
// Label 202: @2794
GIM_Try, /*On fail goto*//*Label 203*/ 2817, // Rule ID 4440 //
GIM_CheckFeatures, GIFBS_HasBWI_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (sub:{ *:[v32i8] } VR256X:{ *:[v32i8] }:$src1, VR256X:{ *:[v32i8] }:$src2) => (VPSUBBZ256rr:{ *:[v32i8] } VR256X:{ *:[v32i8] }:$src1, VR256X:{ *:[v32i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBBZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4440,
GIR_Done,
// Label 203: @2817
GIM_Reject,
// Label 201: @2818
GIM_Reject,
// Label 156: @2819
GIM_Try, /*On fail goto*//*Label 204*/ 2850, // Rule ID 4416 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (sub:{ *:[v32i16] } VR512:{ *:[v32i16] }:$src1, VR512:{ *:[v32i16] }:$src2) => (VPSUBWZrr:{ *:[v32i16] } VR512:{ *:[v32i16] }:$src1, VR512:{ *:[v32i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBWZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4416,
GIR_Done,
// Label 204: @2850
GIM_Reject,
// Label 157: @2851
GIM_Try, /*On fail goto*//*Label 205*/ 2882, // Rule ID 4434 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v64s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v64s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (sub:{ *:[v64i8] } VR512:{ *:[v64i8] }:$src1, VR512:{ *:[v64i8] }:$src2) => (VPSUBBZrr:{ *:[v64i8] } VR512:{ *:[v64i8] }:$src1, VR512:{ *:[v64i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPSUBBZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4434,
GIR_Done,
// Label 205: @2882
GIM_Reject,
// Label 158: @2883
GIM_Reject,
// Label 2: @2884
GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/2, 23, /*)*//*default:*//*Label 218*/ 3953,
/*GILLT_s16*//*Label 206*/ 2911,
/*GILLT_s32*//*Label 207*/ 3010,
/*GILLT_s64*//*Label 208*/ 3109, 0, 0, 0,
/*GILLT_v2s64*//*Label 209*/ 3211, 0,
/*GILLT_v4s32*//*Label 210*/ 3395,
/*GILLT_v4s64*//*Label 211*/ 3476, 0,
/*GILLT_v8s16*//*Label 212*/ 3660,
/*GILLT_v8s32*//*Label 213*/ 3741,
/*GILLT_v8s64*//*Label 214*/ 3799, 0, 0,
/*GILLT_v16s16*//*Label 215*/ 3831,
/*GILLT_v16s32*//*Label 216*/ 3889, 0, 0,
/*GILLT_v32s16*//*Label 217*/ 3921,
// Label 206: @2911
GIM_Try, /*On fail goto*//*Label 219*/ 3009,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_Try, /*On fail goto*//*Label 220*/ 2962, // Rule ID 21037 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i16immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (mul:{ *:[i16] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] })<<P:Predicate_i16immSExt8>>:$src2) => (IMUL16rri8:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] })<<P:Predicate_i16immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::IMUL16rri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21037,
GIR_Done,
// Label 220: @2962
GIM_Try, /*On fail goto*//*Label 221*/ 2992, // Rule ID 21035 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (mul:{ *:[i16] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] }):$src2) => (IMUL16rri:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::IMUL16rri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21035,
GIR_Done,
// Label 221: @2992
GIM_Try, /*On fail goto*//*Label 222*/ 3008, // Rule ID 21029 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR16RegClassID,
// (mul:{ *:[i16] } GR16:{ *:[i16] }:$src1, GR16:{ *:[i16] }:$src2) => (IMUL16rr:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, GR16:{ *:[i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::IMUL16rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21029,
GIR_Done,
// Label 222: @3008
GIM_Reject,
// Label 219: @3009
GIM_Reject,
// Label 207: @3010
GIM_Try, /*On fail goto*//*Label 223*/ 3108,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_Try, /*On fail goto*//*Label 224*/ 3061, // Rule ID 21038 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i32immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (mul:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] })<<P:Predicate_i32immSExt8>>:$src2) => (IMUL32rri8:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] })<<P:Predicate_i32immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::IMUL32rri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21038,
GIR_Done,
// Label 224: @3061
GIM_Try, /*On fail goto*//*Label 225*/ 3091, // Rule ID 21036 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (mul:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] }):$src2) => (IMUL32rri:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::IMUL32rri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21036,
GIR_Done,
// Label 225: @3091
GIM_Try, /*On fail goto*//*Label 226*/ 3107, // Rule ID 21030 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR32RegClassID,
// (mul:{ *:[i32] } GR32:{ *:[i32] }:$src1, GR32:{ *:[i32] }:$src2) => (IMUL32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, GR32:{ *:[i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::IMUL32rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21030,
GIR_Done,
// Label 226: @3107
GIM_Reject,
// Label 223: @3108
GIM_Reject,
// Label 208: @3109
GIM_Try, /*On fail goto*//*Label 227*/ 3210,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_Try, /*On fail goto*//*Label 228*/ 3160, // Rule ID 21039 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i64immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (mul:{ *:[i64] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt8>>:$src2) => (IMUL64rri8:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::IMUL64rri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21039,
GIR_Done,
// Label 228: @3160
GIM_Try, /*On fail goto*//*Label 229*/ 3193, // Rule ID 21040 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i64immSExt32,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (mul:{ *:[i64] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt32>>:$src2) => (IMUL64rri32:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt32>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::IMUL64rri32,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21040,
GIR_Done,
// Label 229: @3193
GIM_Try, /*On fail goto*//*Label 230*/ 3209, // Rule ID 21031 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR64RegClassID,
// (mul:{ *:[i64] } GR64:{ *:[i64] }:$src1, GR64:{ *:[i64] }:$src2) => (IMUL64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, GR64:{ *:[i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::IMUL64rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21031,
GIR_Done,
// Label 230: @3209
GIM_Reject,
// Label 227: @3210
GIM_Reject,
// Label 209: @3211
GIM_Try, /*On fail goto*//*Label 231*/ 3394,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s64,
GIM_Try, /*On fail goto*//*Label 232*/ 3244, // Rule ID 4659 //
GIM_CheckFeatures, GIFBS_HasDQI_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (mul:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src1, VR128X:{ *:[v2i64] }:$src2) => (VPMULLQZ128rr:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src1, VR128X:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPMULLQZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4659,
GIR_Done,
// Label 232: @3244
GIM_Try, /*On fail goto*//*Label 233*/ 3393, // Rule ID 18483 //
GIM_CheckFeatures, GIFBS_HasDQI_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (mul:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src1, VR128X:{ *:[v2i64] }:$src2) => (EXTRACT_SUBREG:{ *:[v2i64] } (VPMULLQZrr:{ *:[v64i8] } (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR128X:{ *:[v2i64] }:$src1, sub_xmm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR128X:{ *:[v2i64] }:$src2, sub_xmm:{ *:[i32] })), sub_xmm:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v64s8,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_v8s64,
GIR_BuildMI, /*InsnID*/5, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/5, /*TempRegID*/4, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/5,
GIR_BuildMI, /*InsnID*/4, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/3, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/4, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/4, /*Imm*/9,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/2, X86::VR128XRegClassID,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddImm, /*InsnID*/2, /*Imm*/9,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/2, X86::VR128XRegClassID,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VPMULLQZrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_xmm,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::FR16XRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::VR512RegClassID,
// GIR_Coverage, 18483,
GIR_Done,
// Label 233: @3393
GIM_Reject,
// Label 231: @3394
GIM_Reject,
// Label 210: @3395
GIM_Try, /*On fail goto*//*Label 234*/ 3475,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_Try, /*On fail goto*//*Label 235*/ 3428, // Rule ID 2931 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (mul:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2) => (VPMULLDrr:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPMULLDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2931,
GIR_Done,
// Label 235: @3428
GIM_Try, /*On fail goto*//*Label 236*/ 3451, // Rule ID 2939 //
GIM_CheckFeatures, GIFBS_UseSSE41,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (mul:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2) => (PMULLDrr:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PMULLDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2939,
GIR_Done,
// Label 236: @3451
GIM_Try, /*On fail goto*//*Label 237*/ 3474, // Rule ID 4614 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (mul:{ *:[v4i32] } VR128X:{ *:[v4i32] }:$src1, VR128X:{ *:[v4i32] }:$src2) => (VPMULLDZ128rr:{ *:[v4i32] } VR128X:{ *:[v4i32] }:$src1, VR128X:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPMULLDZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4614,
GIR_Done,
// Label 237: @3474
GIM_Reject,
// Label 234: @3475
GIM_Reject,
// Label 211: @3476
GIM_Try, /*On fail goto*//*Label 238*/ 3659,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s64,
GIM_Try, /*On fail goto*//*Label 239*/ 3509, // Rule ID 4650 //
GIM_CheckFeatures, GIFBS_HasDQI_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (mul:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src1, VR256X:{ *:[v4i64] }:$src2) => (VPMULLQZ256rr:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src1, VR256X:{ *:[v4i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPMULLQZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4650,
GIR_Done,
// Label 239: @3509
GIM_Try, /*On fail goto*//*Label 240*/ 3658, // Rule ID 18481 //
GIM_CheckFeatures, GIFBS_HasDQI_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (mul:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src1, VR256X:{ *:[v4i64] }:$src2) => (EXTRACT_SUBREG:{ *:[v4i64] } (VPMULLQZrr:{ *:[v64i8] } (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR256X:{ *:[v4i64] }:$src1, sub_ymm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR256X:{ *:[v4i64] }:$src2, sub_ymm:{ *:[i32] })), sub_ymm:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v64s8,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_v8s64,
GIR_BuildMI, /*InsnID*/5, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/5, /*TempRegID*/4, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/5,
GIR_BuildMI, /*InsnID*/4, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/3, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/4, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/4, /*Imm*/10,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/2, X86::VR256XRegClassID,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddImm, /*InsnID*/2, /*Imm*/10,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/2, X86::VR256XRegClassID,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VPMULLQZrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_ymm,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VR256XRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::VR512RegClassID,
// GIR_Coverage, 18481,
GIR_Done,
// Label 240: @3658
GIM_Reject,
// Label 238: @3659
GIM_Reject,
// Label 212: @3660
GIM_Try, /*On fail goto*//*Label 241*/ 3740,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_Try, /*On fail goto*//*Label 242*/ 3693, // Rule ID 2262 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX_Or_NoBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (mul:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2) => (VPMULLWrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPMULLWrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2262,
GIR_Done,
// Label 242: @3693
GIM_Try, /*On fail goto*//*Label 243*/ 3716, // Rule ID 2264 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (mul:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2) => (PMULLWrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PMULLWrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2264,
GIR_Done,
// Label 243: @3716
GIM_Try, /*On fail goto*//*Label 244*/ 3739, // Rule ID 4635 //
GIM_CheckFeatures, GIFBS_HasBWI_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (mul:{ *:[v8i16] } VR128X:{ *:[v8i16] }:$src1, VR128X:{ *:[v8i16] }:$src2) => (VPMULLWZ128rr:{ *:[v8i16] } VR128X:{ *:[v8i16] }:$src1, VR128X:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPMULLWZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4635,
GIR_Done,
// Label 244: @3739
GIM_Reject,
// Label 241: @3740
GIM_Reject,
// Label 213: @3741
GIM_Try, /*On fail goto*//*Label 245*/ 3798,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s32,
GIM_Try, /*On fail goto*//*Label 246*/ 3774, // Rule ID 2935 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (mul:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2) => (VPMULLDYrr:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPMULLDYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2935,
GIR_Done,
// Label 246: @3774
GIM_Try, /*On fail goto*//*Label 247*/ 3797, // Rule ID 4605 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (mul:{ *:[v8i32] } VR256X:{ *:[v8i32] }:$src1, VR256X:{ *:[v8i32] }:$src2) => (VPMULLDZ256rr:{ *:[v8i32] } VR256X:{ *:[v8i32] }:$src1, VR256X:{ *:[v8i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPMULLDZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4605,
GIR_Done,
// Label 247: @3797
GIM_Reject,
// Label 245: @3798
GIM_Reject,
// Label 214: @3799
GIM_Try, /*On fail goto*//*Label 248*/ 3830, // Rule ID 4641 //
GIM_CheckFeatures, GIFBS_HasDQI,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (mul:{ *:[v8i64] } VR512:{ *:[v8i64] }:$src1, VR512:{ *:[v8i64] }:$src2) => (VPMULLQZrr:{ *:[v8i64] } VR512:{ *:[v8i64] }:$src1, VR512:{ *:[v8i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPMULLQZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4641,
GIR_Done,
// Label 248: @3830
GIM_Reject,
// Label 215: @3831
GIM_Try, /*On fail goto*//*Label 249*/ 3888,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s16,
GIM_Try, /*On fail goto*//*Label 250*/ 3864, // Rule ID 2266 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX_Or_NoBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (mul:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2) => (VPMULLWYrr:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPMULLWYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2266,
GIR_Done,
// Label 250: @3864
GIM_Try, /*On fail goto*//*Label 251*/ 3887, // Rule ID 4629 //
GIM_CheckFeatures, GIFBS_HasBWI_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (mul:{ *:[v16i16] } VR256X:{ *:[v16i16] }:$src1, VR256X:{ *:[v16i16] }:$src2) => (VPMULLWZ256rr:{ *:[v16i16] } VR256X:{ *:[v16i16] }:$src1, VR256X:{ *:[v16i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPMULLWZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4629,
GIR_Done,
// Label 251: @3887
GIM_Reject,
// Label 249: @3888
GIM_Reject,
// Label 216: @3889
GIM_Try, /*On fail goto*//*Label 252*/ 3920, // Rule ID 4596 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (mul:{ *:[v16i32] } VR512:{ *:[v16i32] }:$src1, VR512:{ *:[v16i32] }:$src2) => (VPMULLDZrr:{ *:[v16i32] } VR512:{ *:[v16i32] }:$src1, VR512:{ *:[v16i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPMULLDZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4596,
GIR_Done,
// Label 252: @3920
GIM_Reject,
// Label 217: @3921
GIM_Try, /*On fail goto*//*Label 253*/ 3952, // Rule ID 4623 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (mul:{ *:[v32i16] } VR512:{ *:[v32i16] }:$src1, VR512:{ *:[v32i16] }:$src2) => (VPMULLWZrr:{ *:[v32i16] } VR512:{ *:[v32i16] }:$src1, VR512:{ *:[v32i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPMULLWZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4623,
GIR_Done,
// Label 253: @3952
GIM_Reject,
// Label 218: @3953
GIM_Reject,
// Label 3: @3954
GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/0, 25, /*)*//*default:*//*Label 277*/ 9363,
/*GILLT_s1*//*Label 254*/ 3985,
/*GILLT_s8*//*Label 255*/ 4299,
/*GILLT_s16*//*Label 256*/ 4365,
/*GILLT_s32*//*Label 257*/ 4756,
/*GILLT_s64*//*Label 258*/ 5947, 0, 0,
/*GILLT_v2s1*//*Label 259*/ 7027,
/*GILLT_v2s64*//*Label 260*/ 7341,
/*GILLT_v4s1*//*Label 261*/ 7422,
/*GILLT_v4s32*//*Label 262*/ 7736,
/*GILLT_v4s64*//*Label 263*/ 7817,
/*GILLT_v8s1*//*Label 264*/ 7898,
/*GILLT_v8s16*//*Label 265*/ 8359,
/*GILLT_v8s32*//*Label 266*/ 8440,
/*GILLT_v8s64*//*Label 267*/ 8521,
/*GILLT_v16s1*//*Label 268*/ 8553,
/*GILLT_v16s8*//*Label 269*/ 8710,
/*GILLT_v16s16*//*Label 270*/ 8791,
/*GILLT_v16s32*//*Label 271*/ 8872,
/*GILLT_v32s1*//*Label 272*/ 8904,
/*GILLT_v32s8*//*Label 273*/ 9061,
/*GILLT_v32s16*//*Label 274*/ 9142,
/*GILLT_v64s1*//*Label 275*/ 9174,
/*GILLT_v64s8*//*Label 276*/ 9331,
// Label 254: @3985
GIM_Try, /*On fail goto*//*Label 278*/ 4298,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK1RegClassID,
GIM_Try, /*On fail goto*//*Label 279*/ 4108, // Rule ID 17927 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK1RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK1RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v1i1] } (xor:{ *:[v1i1] } VK1:{ *:[v1i1] }:$src1, immAllOnesV:{ *:[v1i1] }), VK1:{ *:[v1i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v1i1] } (KANDNWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src2, VK16:{ *:[i32] })), VK1:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KANDNWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK1RegClassID,
// GIR_Coverage, 17927,
GIR_Done,
// Label 279: @4108
GIM_Try, /*On fail goto*//*Label 280*/ 4217, // Rule ID 23233 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK1RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK1RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v1i1] } VK1:{ *:[v1i1] }:$src2, (xor:{ *:[v1i1] } VK1:{ *:[v1i1] }:$src1, immAllOnesV:{ *:[v1i1] })) => (COPY_TO_REGCLASS:{ *:[v1i1] } (KANDNWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src2, VK16:{ *:[i32] })), VK1:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KANDNWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK1RegClassID,
// GIR_Coverage, 23233,
GIR_Done,
// Label 280: @4217
GIM_Try, /*On fail goto*//*Label 281*/ 4297, // Rule ID 17923 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK1RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK1RegClassID,
// (and:{ *:[v1i1] } VK1:{ *:[v1i1] }:$src1, VK1:{ *:[v1i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v1i1] } (KANDWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src2, VK16:{ *:[i32] })), VK1:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KANDWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK1RegClassID,
// GIR_Coverage, 17923,
GIR_Done,
// Label 281: @4297
GIM_Reject,
// Label 278: @4298
GIM_Reject,
// Label 255: @4299
GIM_Try, /*On fail goto*//*Label 282*/ 4364,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR8RegClassID,
GIM_Try, /*On fail goto*//*Label 283*/ 4347, // Rule ID 15703 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i8] } GR8:{ *:[i8] }:$src1, (imm:{ *:[i8] }):$src2) => (AND8ri:{ *:[i8] }:{ *:[i32] } GR8:{ *:[i8] }:$src1, (imm:{ *:[i8] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::AND8ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15703,
GIR_Done,
// Label 283: @4347
GIM_Try, /*On fail goto*//*Label 284*/ 4363, // Rule ID 15695 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR8RegClassID,
// (and:{ *:[i8] } GR8:{ *:[i8] }:$src1, GR8:{ *:[i8] }:$src2) => (AND8rr:{ *:[i8] }:{ *:[i32] } GR8:{ *:[i8] }:$src1, GR8:{ *:[i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::AND8rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15695,
GIR_Done,
// Label 284: @4363
GIM_Reject,
// Label 282: @4364
GIM_Reject,
// Label 256: @4365
GIM_Try, /*On fail goto*//*Label 285*/ 4755,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s16,
GIM_Try, /*On fail goto*//*Label 286*/ 4475, // Rule ID 23892 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR16RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ROTL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -2,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR16RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i16] } (rotl:{ *:[i16] } -2:{ *:[i16] }, GR8:{ *:[i8] }:$src2), GR16:{ *:[i16] }:$src1) => (BTR16rr:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (INSERT_SUBREG:{ *:[i16] } (IMPLICIT_DEF:{ *:[i16] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s16,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s16,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTR16rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 23892,
GIR_Done,
// Label 286: @4475
GIM_Try, /*On fail goto*//*Label 287*/ 4575, // Rule ID 20977 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ROTL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -2,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i16] } GR16:{ *:[i16] }:$src1, (rotl:{ *:[i16] } -2:{ *:[i16] }, GR8:{ *:[i8] }:$src2)) => (BTR16rr:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (INSERT_SUBREG:{ *:[i16] } (IMPLICIT_DEF:{ *:[i16] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s16,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s16,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTR16rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20977,
GIR_Done,
// Label 287: @4575
GIM_Try, /*On fail goto*//*Label 288*/ 4651, // Rule ID 20875 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 255,
// (and:{ *:[i16] } GR16:{ *:[i16] }:$src1, 255:{ *:[i16] }) => (EXTRACT_SUBREG:{ *:[i16] } (MOVZX32rr8:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i8] } GR16:{ *:[i16] }:$src1, sub_8bit:{ *:[i32] })), sub_16bit:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s8,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_CopySubReg, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, /*SubRegIdx*/1, // src1
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/0, X86::GR8RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/1, X86::GR16RegClassID,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::MOVZX32rr8,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_16bit,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::GR32RegClassID,
// GIR_Coverage, 20875,
GIR_Done,
// Label 288: @4651
GIM_Try, /*On fail goto*//*Label 289*/ 4692, // Rule ID 15706 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i16immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i16] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] })<<P:Predicate_i16immSExt8>>:$src2) => (AND16ri8:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] })<<P:Predicate_i16immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::AND16ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15706,
GIR_Done,
// Label 289: @4692
GIM_Try, /*On fail goto*//*Label 290*/ 4730, // Rule ID 15704 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i16] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] }):$src2) => (AND16ri:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::AND16ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15704,
GIR_Done,
// Label 290: @4730
GIM_Try, /*On fail goto*//*Label 291*/ 4754, // Rule ID 15696 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR16RegClassID,
// (and:{ *:[i16] } GR16:{ *:[i16] }:$src1, GR16:{ *:[i16] }:$src2) => (AND16rr:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, GR16:{ *:[i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::AND16rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15696,
GIR_Done,
// Label 291: @4754
GIM_Reject,
// Label 285: @4755
GIM_Reject,
// Label 257: @4756
GIM_Try, /*On fail goto*//*Label 292*/ 5946,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_Try, /*On fail goto*//*Label 293*/ 4837, // Rule ID 22873 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[i32] } (add:{ *:[i32] } GR32:{ *:[i32] }:$src, 1:{ *:[i32] }), (xor:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] })) => (BLCIC32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCIC32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22873,
GIR_Done,
// Label 293: @4837
GIM_Try, /*On fail goto*//*Label 294*/ 4912, // Rule ID 22885 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[i32] } (add:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] }), (xor:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] })) => (TZMSK32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::TZMSK32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22885,
GIR_Done,
// Label 294: @4912
GIM_Try, /*On fail goto*//*Label 295*/ 4987, // Rule ID 15930 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[i32] } (xor:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] }), (add:{ *:[i32] } GR32:{ *:[i32] }:$src, 1:{ *:[i32] })) => (BLCIC32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCIC32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15930,
GIR_Done,
// Label 295: @4987
GIM_Try, /*On fail goto*//*Label 296*/ 5062, // Rule ID 15942 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[i32] } (xor:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] }), (add:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] })) => (TZMSK32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::TZMSK32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15942,
GIR_Done,
// Label 296: @5062
GIM_Try, /*On fail goto*//*Label 297*/ 5116, // Rule ID 22855 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i32] } (add:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] }), GR32:{ *:[i32] }:$src) => (BLSR32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSR32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22855,
GIR_Done,
// Label 297: @5116
GIM_Try, /*On fail goto*//*Label 298*/ 5170, // Rule ID 22867 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i32] } (add:{ *:[i32] } GR32:{ *:[i32] }:$src, 1:{ *:[i32] }), GR32:{ *:[i32] }:$src) => (BLCFILL32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCFILL32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22867,
GIR_Done,
// Label 298: @5170
GIM_Try, /*On fail goto*//*Label 299*/ 5274, // Rule ID 23898 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ROTL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -2,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR32RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i32] } (rotl:{ *:[i32] } -2:{ *:[i32] }, GR8:{ *:[i8] }:$src2), GR32:{ *:[i32] }:$src1) => (BTR32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (INSERT_SUBREG:{ *:[i32] } (IMPLICIT_DEF:{ *:[i32] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTR32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 23898,
GIR_Done,
// Label 299: @5274
GIM_Try, /*On fail goto*//*Label 300*/ 5328, // Rule ID 22859 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SUB,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 0,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR32RegClassID,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i32] } (sub:{ *:[i32] } 0:{ *:[i32] }, GR32:{ *:[i32] }:$src), GR32:{ *:[i32] }:$src) => (BLSI32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSI32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22859,
GIR_Done,
// Label 300: @5328
GIM_Try, /*On fail goto*//*Label 301*/ 5382, // Rule ID 15906 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i32] } GR32:{ *:[i32] }:$src, (add:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] })) => (BLSR32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSR32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15906,
GIR_Done,
// Label 301: @5382
GIM_Try, /*On fail goto*//*Label 302*/ 5436, // Rule ID 15924 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i32] } GR32:{ *:[i32] }:$src, (add:{ *:[i32] } GR32:{ *:[i32] }:$src, 1:{ *:[i32] })) => (BLCFILL32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCFILL32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15924,
GIR_Done,
// Label 302: @5436
GIM_Try, /*On fail goto*//*Label 303*/ 5540, // Rule ID 20983 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ROTL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -2,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i32] } GR32:{ *:[i32] }:$src1, (rotl:{ *:[i32] } -2:{ *:[i32] }, GR8:{ *:[i8] }:$src2)) => (BTR32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (INSERT_SUBREG:{ *:[i32] } (IMPLICIT_DEF:{ *:[i32] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTR32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20983,
GIR_Done,
// Label 303: @5540
GIM_Try, /*On fail goto*//*Label 304*/ 5594, // Rule ID 15910 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SUB,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 0,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i32] } GR32:{ *:[i32] }:$src, (sub:{ *:[i32] } 0:{ *:[i32] }, GR32:{ *:[i32] }:$src)) => (BLSI32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSI32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15910,
GIR_Done,
// Label 304: @5594
GIM_Try, /*On fail goto*//*Label 305*/ 5651, // Rule ID 20873 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 65535,
// (and:{ *:[i32] } GR32:{ *:[i32] }:$src1, 65535:{ *:[i32] }) => (MOVZX32rr16:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i16] } GR32:{ *:[i32] }:$src1, sub_16bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s16,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_CopySubReg, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, /*SubRegIdx*/4, // src1
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::GR32RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::MOVZX32rr16,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20873,
GIR_Done,
// Label 305: @5651
GIM_Try, /*On fail goto*//*Label 306*/ 5708, // Rule ID 20874 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 255,
// (and:{ *:[i32] } GR32:{ *:[i32] }:$src1, 255:{ *:[i32] }) => (MOVZX32rr8:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i8] } GR32:{ *:[i32] }:$src1, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s8,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_CopySubReg, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, /*SubRegIdx*/1, // src1
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::GR8RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::GR32RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::MOVZX32rr8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20874,
GIR_Done,
// Label 306: @5708
GIM_Try, /*On fail goto*//*Label 307*/ 5753, // Rule ID 15707 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i32immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] })<<P:Predicate_i32immSExt8>>:$src2) => (AND32ri8:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] })<<P:Predicate_i32immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::AND32ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15707,
GIR_Done,
// Label 307: @5753
GIM_Try, /*On fail goto*//*Label 308*/ 5795, // Rule ID 15705 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] }):$src2) => (AND32ri:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::AND32ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15705,
GIR_Done,
// Label 308: @5795
GIM_Try, /*On fail goto*//*Label 309*/ 5856, // Rule ID 16106 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR32RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i32] } (xor:{ *:[i32] } GR32:{ *:[i32] }:$src1, -1:{ *:[i32] }), GR32:{ *:[i32] }:$src2) => (ANDN32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, GR32:{ *:[i32] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::ANDN32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16106,
GIR_Done,
// Label 309: @5856
GIM_Try, /*On fail goto*//*Label 310*/ 5917, // Rule ID 22971 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i32] } GR32:{ *:[i32] }:$src2, (xor:{ *:[i32] } GR32:{ *:[i32] }:$src1, -1:{ *:[i32] })) => (ANDN32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, GR32:{ *:[i32] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::ANDN32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22971,
GIR_Done,
// Label 310: @5917
GIM_Try, /*On fail goto*//*Label 311*/ 5945, // Rule ID 15697 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR32RegClassID,
// (and:{ *:[i32] } GR32:{ *:[i32] }:$src1, GR32:{ *:[i32] }:$src2) => (AND32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, GR32:{ *:[i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::AND32rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15697,
GIR_Done,
// Label 311: @5945
GIM_Reject,
// Label 292: @5946
GIM_Reject,
// Label 258: @5947
GIM_Try, /*On fail goto*//*Label 312*/ 7026,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_Try, /*On fail goto*//*Label 313*/ 6028, // Rule ID 22874 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s64,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[i64] } (add:{ *:[i64] } GR64:{ *:[i64] }:$src, 1:{ *:[i64] }), (xor:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] })) => (BLCIC64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCIC64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22874,
GIR_Done,
// Label 313: @6028
GIM_Try, /*On fail goto*//*Label 314*/ 6103, // Rule ID 22886 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s64,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[i64] } (add:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] }), (xor:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] })) => (TZMSK64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::TZMSK64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22886,
GIR_Done,
// Label 314: @6103
GIM_Try, /*On fail goto*//*Label 315*/ 6178, // Rule ID 15931 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s64,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[i64] } (xor:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] }), (add:{ *:[i64] } GR64:{ *:[i64] }:$src, 1:{ *:[i64] })) => (BLCIC64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCIC64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15931,
GIR_Done,
// Label 315: @6178
GIM_Try, /*On fail goto*//*Label 316*/ 6253, // Rule ID 15943 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s64,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[i64] } (xor:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] }), (add:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] })) => (TZMSK64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::TZMSK64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15943,
GIR_Done,
// Label 316: @6253
GIM_Try, /*On fail goto*//*Label 317*/ 6307, // Rule ID 22856 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i64] } (add:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] }), GR64:{ *:[i64] }:$src) => (BLSR64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSR64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22856,
GIR_Done,
// Label 317: @6307
GIM_Try, /*On fail goto*//*Label 318*/ 6361, // Rule ID 22868 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i64] } (add:{ *:[i64] } GR64:{ *:[i64] }:$src, 1:{ *:[i64] }), GR64:{ *:[i64] }:$src) => (BLCFILL64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCFILL64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22868,
GIR_Done,
// Label 318: @6361
GIM_Try, /*On fail goto*//*Label 319*/ 6465, // Rule ID 23904 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ROTL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -2,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR64RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i64] } (rotl:{ *:[i64] } -2:{ *:[i64] }, GR8:{ *:[i8] }:$src2), GR64:{ *:[i64] }:$src1) => (BTR64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s64,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::GR64_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::GR64_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTR64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 23904,
GIR_Done,
// Label 319: @6465
GIM_Try, /*On fail goto*//*Label 320*/ 6519, // Rule ID 22860 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SUB,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 0,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR64RegClassID,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i64] } (sub:{ *:[i64] } 0:{ *:[i64] }, GR64:{ *:[i64] }:$src), GR64:{ *:[i64] }:$src) => (BLSI64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSI64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22860,
GIR_Done,
// Label 320: @6519
GIM_Try, /*On fail goto*//*Label 321*/ 6573, // Rule ID 15907 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i64] } GR64:{ *:[i64] }:$src, (add:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] })) => (BLSR64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSR64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15907,
GIR_Done,
// Label 321: @6573
GIM_Try, /*On fail goto*//*Label 322*/ 6627, // Rule ID 15925 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i64] } GR64:{ *:[i64] }:$src, (add:{ *:[i64] } GR64:{ *:[i64] }:$src, 1:{ *:[i64] })) => (BLCFILL64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCFILL64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15925,
GIR_Done,
// Label 322: @6627
GIM_Try, /*On fail goto*//*Label 323*/ 6731, // Rule ID 20989 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ROTL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -2,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i64] } GR64:{ *:[i64] }:$src1, (rotl:{ *:[i64] } -2:{ *:[i64] }, GR8:{ *:[i8] }:$src2)) => (BTR64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s64,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::GR64_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::GR64_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTR64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20989,
GIR_Done,
// Label 323: @6731
GIM_Try, /*On fail goto*//*Label 324*/ 6785, // Rule ID 15911 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SUB,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 0,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i64] } GR64:{ *:[i64] }:$src, (sub:{ *:[i64] } 0:{ *:[i64] }, GR64:{ *:[i64] }:$src)) => (BLSI64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSI64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15911,
GIR_Done,
// Label 324: @6785
GIM_Try, /*On fail goto*//*Label 325*/ 6830, // Rule ID 15708 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i64immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i64] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt8>>:$src2) => (AND64ri8:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::AND64ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15708,
GIR_Done,
// Label 325: @6830
GIM_Try, /*On fail goto*//*Label 326*/ 6875, // Rule ID 15709 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i64immSExt32,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i64] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt32>>:$src2) => (AND64ri32:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt32>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::AND64ri32,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15709,
GIR_Done,
// Label 326: @6875
GIM_Try, /*On fail goto*//*Label 327*/ 6936, // Rule ID 16107 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR64RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i64] } (xor:{ *:[i64] } GR64:{ *:[i64] }:$src1, -1:{ *:[i64] }), GR64:{ *:[i64] }:$src2) => (ANDN64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, GR64:{ *:[i64] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::ANDN64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16107,
GIR_Done,
// Label 327: @6936
GIM_Try, /*On fail goto*//*Label 328*/ 6997, // Rule ID 22972 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (and:{ *:[i64] } GR64:{ *:[i64] }:$src2, (xor:{ *:[i64] } GR64:{ *:[i64] }:$src1, -1:{ *:[i64] })) => (ANDN64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, GR64:{ *:[i64] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::ANDN64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22972,
GIR_Done,
// Label 328: @6997
GIM_Try, /*On fail goto*//*Label 329*/ 7025, // Rule ID 15698 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR64RegClassID,
// (and:{ *:[i64] } GR64:{ *:[i64] }:$src1, GR64:{ *:[i64] }:$src2) => (AND64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, GR64:{ *:[i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::AND64rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15698,
GIR_Done,
// Label 329: @7025
GIM_Reject,
// Label 312: @7026
GIM_Reject,
// Label 259: @7027
GIM_Try, /*On fail goto*//*Label 330*/ 7340,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK2RegClassID,
GIM_Try, /*On fail goto*//*Label 331*/ 7150, // Rule ID 17928 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v2s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK2RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK2RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v2i1] } (xor:{ *:[v2i1] } VK2:{ *:[v2i1] }:$src1, immAllOnesV:{ *:[v2i1] }), VK2:{ *:[v2i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v2i1] } (KANDNWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src2, VK16:{ *:[i32] })), VK2:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KANDNWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK2RegClassID,
// GIR_Coverage, 17928,
GIR_Done,
// Label 331: @7150
GIM_Try, /*On fail goto*//*Label 332*/ 7259, // Rule ID 23234 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK2RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v2s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK2RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v2i1] } VK2:{ *:[v2i1] }:$src2, (xor:{ *:[v2i1] } VK2:{ *:[v2i1] }:$src1, immAllOnesV:{ *:[v2i1] })) => (COPY_TO_REGCLASS:{ *:[v2i1] } (KANDNWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src2, VK16:{ *:[i32] })), VK2:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KANDNWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK2RegClassID,
// GIR_Coverage, 23234,
GIR_Done,
// Label 332: @7259
GIM_Try, /*On fail goto*//*Label 333*/ 7339, // Rule ID 17924 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK2RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK2RegClassID,
// (and:{ *:[v2i1] } VK2:{ *:[v2i1] }:$src1, VK2:{ *:[v2i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v2i1] } (KANDWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src2, VK16:{ *:[i32] })), VK2:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KANDWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK2RegClassID,
// GIR_Coverage, 17924,
GIR_Done,
// Label 333: @7339
GIM_Reject,
// Label 330: @7340
GIM_Reject,
// Label 260: @7341
GIM_Try, /*On fail goto*//*Label 334*/ 7421,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s64,
GIM_Try, /*On fail goto*//*Label 335*/ 7374, // Rule ID 1842 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (and:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2) => (VPANDrr:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1842,
GIR_Done,
// Label 335: @7374
GIM_Try, /*On fail goto*//*Label 336*/ 7397, // Rule ID 1844 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (and:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2) => (PANDrr:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PANDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1844,
GIR_Done,
// Label 336: @7397
GIM_Try, /*On fail goto*//*Label 337*/ 7420, // Rule ID 5343 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (and:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src1, VR128X:{ *:[v2i64] }:$src2) => (VPANDQZ128rr:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src1, VR128X:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDQZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5343,
GIR_Done,
// Label 337: @7420
GIM_Reject,
// Label 334: @7421
GIM_Reject,
// Label 261: @7422
GIM_Try, /*On fail goto*//*Label 338*/ 7735,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK4RegClassID,
GIM_Try, /*On fail goto*//*Label 339*/ 7545, // Rule ID 17929 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK4RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK4RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v4i1] } (xor:{ *:[v4i1] } VK4:{ *:[v4i1] }:$src1, immAllOnesV:{ *:[v4i1] }), VK4:{ *:[v4i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v4i1] } (KANDNWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src2, VK16:{ *:[i32] })), VK4:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KANDNWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK4RegClassID,
// GIR_Coverage, 17929,
GIR_Done,
// Label 339: @7545
GIM_Try, /*On fail goto*//*Label 340*/ 7654, // Rule ID 23235 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK4RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK4RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v4i1] } VK4:{ *:[v4i1] }:$src2, (xor:{ *:[v4i1] } VK4:{ *:[v4i1] }:$src1, immAllOnesV:{ *:[v4i1] })) => (COPY_TO_REGCLASS:{ *:[v4i1] } (KANDNWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src2, VK16:{ *:[i32] })), VK4:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KANDNWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK4RegClassID,
// GIR_Coverage, 23235,
GIR_Done,
// Label 340: @7654
GIM_Try, /*On fail goto*//*Label 341*/ 7734, // Rule ID 17925 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK4RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK4RegClassID,
// (and:{ *:[v4i1] } VK4:{ *:[v4i1] }:$src1, VK4:{ *:[v4i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v4i1] } (KANDWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src2, VK16:{ *:[i32] })), VK4:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KANDWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK4RegClassID,
// GIR_Coverage, 17925,
GIR_Done,
// Label 341: @7734
GIM_Reject,
// Label 338: @7735
GIM_Reject,
// Label 262: @7736
GIM_Try, /*On fail goto*//*Label 342*/ 7816,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_Try, /*On fail goto*//*Label 343*/ 7769, // Rule ID 5370 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (and:{ *:[v4i32] } VR128X:{ *:[v4i32] }:$src1, VR128X:{ *:[v4i32] }:$src2) => (VPANDDZ128rr:{ *:[v4i32] } VR128X:{ *:[v4i32] }:$src1, VR128X:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDDZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5370,
GIR_Done,
// Label 343: @7769
GIM_Try, /*On fail goto*//*Label 344*/ 7792, // Rule ID 16595 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (and:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2) => (VPANDrr:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16595,
GIR_Done,
// Label 344: @7792
GIM_Try, /*On fail goto*//*Label 345*/ 7815, // Rule ID 16619 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (and:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2) => (PANDrr:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PANDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16619,
GIR_Done,
// Label 345: @7815
GIM_Reject,
// Label 342: @7816
GIM_Reject,
// Label 263: @7817
GIM_Try, /*On fail goto*//*Label 346*/ 7897,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s64,
GIM_Try, /*On fail goto*//*Label 347*/ 7850, // Rule ID 1846 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (and:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2) => (VPANDYrr:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1846,
GIR_Done,
// Label 347: @7850
GIM_Try, /*On fail goto*//*Label 348*/ 7873, // Rule ID 5334 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (and:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src1, VR256X:{ *:[v4i64] }:$src2) => (VPANDQZ256rr:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src1, VR256X:{ *:[v4i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDQZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5334,
GIR_Done,
// Label 348: @7873
GIM_Try, /*On fail goto*//*Label 349*/ 7896, // Rule ID 16564 //
GIM_CheckFeatures, GIFBS_HasAVX1Only,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (and:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2) => (VANDPSYrr:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VANDPSYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16564,
GIR_Done,
// Label 349: @7896
GIM_Reject,
// Label 346: @7897
GIM_Reject,
// Label 264: @7898
GIM_Try, /*On fail goto*//*Label 350*/ 8358,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK8RegClassID,
GIM_Try, /*On fail goto*//*Label 351*/ 7973, // Rule ID 4070 //
GIM_CheckFeatures, GIFBS_HasDQI,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK8RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v8i1] } (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, immAllOnesV:{ *:[v8i1] }), VK8:{ *:[v8i1] }:$src2) => (KANDNBrr:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KANDNBrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4070,
GIR_Done,
// Label 351: @7973
GIM_Try, /*On fail goto*//*Label 352*/ 8084, // Rule ID 17926 //
GIM_CheckFeatures, GIFBS_NoDQI,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK8RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v8i1] } (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, immAllOnesV:{ *:[v8i1] }), VK8:{ *:[v8i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v8i1] } (KANDNWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src2, VK16:{ *:[i32] })), VK8:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KANDNWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK8RegClassID,
// GIR_Coverage, 17926,
GIR_Done,
// Label 352: @8084
GIM_Try, /*On fail goto*//*Label 353*/ 8145, // Rule ID 21561 //
GIM_CheckFeatures, GIFBS_HasDQI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src2, (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, immAllOnesV:{ *:[v8i1] })) => (KANDNBrr:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KANDNBrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21561,
GIR_Done,
// Label 353: @8145
GIM_Try, /*On fail goto*//*Label 354*/ 8256, // Rule ID 23232 //
GIM_CheckFeatures, GIFBS_NoDQI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src2, (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, immAllOnesV:{ *:[v8i1] })) => (COPY_TO_REGCLASS:{ *:[v8i1] } (KANDNWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src2, VK16:{ *:[i32] })), VK8:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KANDNWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK8RegClassID,
// GIR_Coverage, 23232,
GIR_Done,
// Label 354: @8256
GIM_Try, /*On fail goto*//*Label 355*/ 8275, // Rule ID 4054 //
GIM_CheckFeatures, GIFBS_HasDQI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK8RegClassID,
// (and:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2) => (KANDBrr:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::KANDBrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4054,
GIR_Done,
// Label 355: @8275
GIM_Try, /*On fail goto*//*Label 356*/ 8357, // Rule ID 17922 //
GIM_CheckFeatures, GIFBS_NoDQI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK8RegClassID,
// (and:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v8i1] } (KANDWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src2, VK16:{ *:[i32] })), VK8:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KANDWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK8RegClassID,
// GIR_Coverage, 17922,
GIR_Done,
// Label 356: @8357
GIM_Reject,
// Label 350: @8358
GIM_Reject,
// Label 265: @8359
GIM_Try, /*On fail goto*//*Label 357*/ 8439,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_Try, /*On fail goto*//*Label 358*/ 8392, // Rule ID 16594 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (and:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2) => (VPANDrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16594,
GIR_Done,
// Label 358: @8392
GIM_Try, /*On fail goto*//*Label 359*/ 8415, // Rule ID 16618 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (and:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2) => (PANDrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PANDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16618,
GIR_Done,
// Label 359: @8415
GIM_Try, /*On fail goto*//*Label 360*/ 8438, // Rule ID 18502 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (and:{ *:[v8i16] } VR128X:{ *:[v8i16] }:$src1, VR128X:{ *:[v8i16] }:$src2) => (VPANDQZ128rr:{ *:[v8i16] } VR128X:{ *:[v8i16] }:$src1, VR128X:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDQZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18502,
GIR_Done,
// Label 360: @8438
GIM_Reject,
// Label 357: @8439
GIM_Reject,
// Label 266: @8440
GIM_Try, /*On fail goto*//*Label 361*/ 8520,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s32,
GIM_Try, /*On fail goto*//*Label 362*/ 8473, // Rule ID 5361 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (and:{ *:[v8i32] } VR256X:{ *:[v8i32] }:$src1, VR256X:{ *:[v8i32] }:$src2) => (VPANDDZ256rr:{ *:[v8i32] } VR256X:{ *:[v8i32] }:$src1, VR256X:{ *:[v8i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDDZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5361,
GIR_Done,
// Label 362: @8473
GIM_Try, /*On fail goto*//*Label 363*/ 8496, // Rule ID 16539 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (and:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2) => (VPANDYrr:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16539,
GIR_Done,
// Label 363: @8496
GIM_Try, /*On fail goto*//*Label 364*/ 8519, // Rule ID 16563 //
GIM_CheckFeatures, GIFBS_HasAVX1Only,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (and:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2) => (VANDPSYrr:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VANDPSYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16563,
GIR_Done,
// Label 364: @8519
GIM_Reject,
// Label 361: @8520
GIM_Reject,
// Label 267: @8521
GIM_Try, /*On fail goto*//*Label 365*/ 8552, // Rule ID 5325 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (and:{ *:[v8i64] } VR512:{ *:[v8i64] }:$src1, VR512:{ *:[v8i64] }:$src2) => (VPANDQZrr:{ *:[v8i64] } VR512:{ *:[v8i64] }:$src1, VR512:{ *:[v8i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDQZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5325,
GIR_Done,
// Label 365: @8552
GIM_Reject,
// Label 268: @8553
GIM_Try, /*On fail goto*//*Label 366*/ 8709,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK16RegClassID,
GIM_Try, /*On fail goto*//*Label 367*/ 8628, // Rule ID 4071 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v16s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v16s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK16RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK16RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v16i1] } (xor:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, immAllOnesV:{ *:[v16i1] }), VK16:{ *:[v16i1] }:$src2) => (KANDNWrr:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, VK16:{ *:[v16i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KANDNWrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4071,
GIR_Done,
// Label 367: @8628
GIM_Try, /*On fail goto*//*Label 368*/ 8689, // Rule ID 21562 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK16RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v16s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v16s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK16RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src2, (xor:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, immAllOnesV:{ *:[v16i1] })) => (KANDNWrr:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, VK16:{ *:[v16i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KANDNWrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21562,
GIR_Done,
// Label 368: @8689
GIM_Try, /*On fail goto*//*Label 369*/ 8708, // Rule ID 4055 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK16RegClassID,
// (and:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, VK16:{ *:[v16i1] }:$src2) => (KANDWrr:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, VK16:{ *:[v16i1] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::KANDWrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4055,
GIR_Done,
// Label 369: @8708
GIM_Reject,
// Label 366: @8709
GIM_Reject,
// Label 269: @8710
GIM_Try, /*On fail goto*//*Label 370*/ 8790,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
GIM_Try, /*On fail goto*//*Label 371*/ 8743, // Rule ID 16593 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (and:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2) => (VPANDrr:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16593,
GIR_Done,
// Label 371: @8743
GIM_Try, /*On fail goto*//*Label 372*/ 8766, // Rule ID 16617 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (and:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2) => (PANDrr:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PANDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16617,
GIR_Done,
// Label 372: @8766
GIM_Try, /*On fail goto*//*Label 373*/ 8789, // Rule ID 18501 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (and:{ *:[v16i8] } VR128X:{ *:[v16i8] }:$src1, VR128X:{ *:[v16i8] }:$src2) => (VPANDQZ128rr:{ *:[v16i8] } VR128X:{ *:[v16i8] }:$src1, VR128X:{ *:[v16i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDQZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18501,
GIR_Done,
// Label 373: @8789
GIM_Reject,
// Label 370: @8790
GIM_Reject,
// Label 270: @8791
GIM_Try, /*On fail goto*//*Label 374*/ 8871,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s16,
GIM_Try, /*On fail goto*//*Label 375*/ 8824, // Rule ID 16538 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (and:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2) => (VPANDYrr:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16538,
GIR_Done,
// Label 375: @8824
GIM_Try, /*On fail goto*//*Label 376*/ 8847, // Rule ID 16562 //
GIM_CheckFeatures, GIFBS_HasAVX1Only,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (and:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2) => (VANDPSYrr:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VANDPSYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16562,
GIR_Done,
// Label 376: @8847
GIM_Try, /*On fail goto*//*Label 377*/ 8870, // Rule ID 18518 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (and:{ *:[v16i16] } VR256X:{ *:[v16i16] }:$src1, VR256X:{ *:[v16i16] }:$src2) => (VPANDQZ256rr:{ *:[v16i16] } VR256X:{ *:[v16i16] }:$src1, VR256X:{ *:[v16i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDQZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18518,
GIR_Done,
// Label 377: @8870
GIM_Reject,
// Label 374: @8871
GIM_Reject,
// Label 271: @8872
GIM_Try, /*On fail goto*//*Label 378*/ 8903, // Rule ID 5352 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (and:{ *:[v16i32] } VR512:{ *:[v16i32] }:$src1, VR512:{ *:[v16i32] }:$src2) => (VPANDDZrr:{ *:[v16i32] } VR512:{ *:[v16i32] }:$src1, VR512:{ *:[v16i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDDZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5352,
GIR_Done,
// Label 378: @8903
GIM_Reject,
// Label 272: @8904
GIM_Try, /*On fail goto*//*Label 379*/ 9060,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK32RegClassID,
GIM_Try, /*On fail goto*//*Label 380*/ 8979, // Rule ID 4072 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v32s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v32s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK32RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK32RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v32i1] } (xor:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, immAllOnesV:{ *:[v32i1] }), VK32:{ *:[v32i1] }:$src2) => (KANDNDrr:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, VK32:{ *:[v32i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KANDNDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4072,
GIR_Done,
// Label 380: @8979
GIM_Try, /*On fail goto*//*Label 381*/ 9040, // Rule ID 21563 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v32s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v32s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK32RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src2, (xor:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, immAllOnesV:{ *:[v32i1] })) => (KANDNDrr:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, VK32:{ *:[v32i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KANDNDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21563,
GIR_Done,
// Label 381: @9040
GIM_Try, /*On fail goto*//*Label 382*/ 9059, // Rule ID 4056 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK32RegClassID,
// (and:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, VK32:{ *:[v32i1] }:$src2) => (KANDDrr:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, VK32:{ *:[v32i1] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::KANDDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4056,
GIR_Done,
// Label 382: @9059
GIM_Reject,
// Label 379: @9060
GIM_Reject,
// Label 273: @9061
GIM_Try, /*On fail goto*//*Label 383*/ 9141,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s8,
GIM_Try, /*On fail goto*//*Label 384*/ 9094, // Rule ID 16537 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (and:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2) => (VPANDYrr:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16537,
GIR_Done,
// Label 384: @9094
GIM_Try, /*On fail goto*//*Label 385*/ 9117, // Rule ID 16561 //
GIM_CheckFeatures, GIFBS_HasAVX1Only,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (and:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2) => (VANDPSYrr:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VANDPSYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16561,
GIR_Done,
// Label 385: @9117
GIM_Try, /*On fail goto*//*Label 386*/ 9140, // Rule ID 18517 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (and:{ *:[v32i8] } VR256X:{ *:[v32i8] }:$src1, VR256X:{ *:[v32i8] }:$src2) => (VPANDQZ256rr:{ *:[v32i8] } VR256X:{ *:[v32i8] }:$src1, VR256X:{ *:[v32i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDQZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18517,
GIR_Done,
// Label 386: @9140
GIM_Reject,
// Label 383: @9141
GIM_Reject,
// Label 274: @9142
GIM_Try, /*On fail goto*//*Label 387*/ 9173, // Rule ID 18534 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (and:{ *:[v32i16] } VR512:{ *:[v32i16] }:$src1, VR512:{ *:[v32i16] }:$src2) => (VPANDQZrr:{ *:[v32i16] } VR512:{ *:[v32i16] }:$src1, VR512:{ *:[v32i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDQZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18534,
GIR_Done,
// Label 387: @9173
GIM_Reject,
// Label 275: @9174
GIM_Try, /*On fail goto*//*Label 388*/ 9330,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v64s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v64s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK64RegClassID,
GIM_Try, /*On fail goto*//*Label 389*/ 9249, // Rule ID 4073 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v64s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v64s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK64RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK64RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v64i1] } (xor:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, immAllOnesV:{ *:[v64i1] }), VK64:{ *:[v64i1] }:$src2) => (KANDNQrr:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, VK64:{ *:[v64i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KANDNQrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4073,
GIR_Done,
// Label 389: @9249
GIM_Try, /*On fail goto*//*Label 390*/ 9310, // Rule ID 21564 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v64s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v64s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK64RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (and:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src2, (xor:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, immAllOnesV:{ *:[v64i1] })) => (KANDNQrr:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, VK64:{ *:[v64i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KANDNQrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21564,
GIR_Done,
// Label 390: @9310
GIM_Try, /*On fail goto*//*Label 391*/ 9329, // Rule ID 4057 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK64RegClassID,
// (and:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, VK64:{ *:[v64i1] }:$src2) => (KANDQrr:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, VK64:{ *:[v64i1] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::KANDQrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4057,
GIR_Done,
// Label 391: @9329
GIM_Reject,
// Label 388: @9330
GIM_Reject,
// Label 276: @9331
GIM_Try, /*On fail goto*//*Label 392*/ 9362, // Rule ID 18533 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v64s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v64s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (and:{ *:[v64i8] } VR512:{ *:[v64i8] }:$src1, VR512:{ *:[v64i8] }:$src2) => (VPANDQZrr:{ *:[v64i8] } VR512:{ *:[v64i8] }:$src1, VR512:{ *:[v64i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPANDQZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18533,
GIR_Done,
// Label 392: @9362
GIM_Reject,
// Label 277: @9363
GIM_Reject,
// Label 4: @9364
GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/0, 25, /*)*//*default:*//*Label 416*/ 13233,
/*GILLT_s1*//*Label 393*/ 9395,
/*GILLT_s8*//*Label 394*/ 9488,
/*GILLT_s16*//*Label 395*/ 9554,
/*GILLT_s32*//*Label 396*/ 9853,
/*GILLT_s64*//*Label 397*/ 10958, 0, 0,
/*GILLT_v2s1*//*Label 398*/ 12066,
/*GILLT_v2s64*//*Label 399*/ 12159,
/*GILLT_v4s1*//*Label 400*/ 12240,
/*GILLT_v4s32*//*Label 401*/ 12333,
/*GILLT_v4s64*//*Label 402*/ 12414,
/*GILLT_v8s1*//*Label 403*/ 12495,
/*GILLT_v8s16*//*Label 404*/ 12604,
/*GILLT_v8s32*//*Label 405*/ 12685,
/*GILLT_v8s64*//*Label 406*/ 12766,
/*GILLT_v16s1*//*Label 407*/ 12798,
/*GILLT_v16s8*//*Label 408*/ 12830,
/*GILLT_v16s16*//*Label 409*/ 12911,
/*GILLT_v16s32*//*Label 410*/ 12992,
/*GILLT_v32s1*//*Label 411*/ 13024,
/*GILLT_v32s8*//*Label 412*/ 13056,
/*GILLT_v32s16*//*Label 413*/ 13137,
/*GILLT_v64s1*//*Label 414*/ 13169,
/*GILLT_v64s8*//*Label 415*/ 13201,
// Label 393: @9395
GIM_Try, /*On fail goto*//*Label 417*/ 9487, // Rule ID 17931 //
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK1RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK1RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK1RegClassID,
// (or:{ *:[v1i1] } VK1:{ *:[v1i1] }:$src1, VK1:{ *:[v1i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v1i1] } (KORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src2, VK16:{ *:[i32] })), VK1:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK1RegClassID,
// GIR_Coverage, 17931,
GIR_Done,
// Label 417: @9487
GIM_Reject,
// Label 394: @9488
GIM_Try, /*On fail goto*//*Label 418*/ 9553,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR8RegClassID,
GIM_Try, /*On fail goto*//*Label 419*/ 9536, // Rule ID 15673 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i8] } GR8:{ *:[i8] }:$src1, (imm:{ *:[i8] }):$src2) => (OR8ri:{ *:[i8] }:{ *:[i32] } GR8:{ *:[i8] }:$src1, (imm:{ *:[i8] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::OR8ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15673,
GIR_Done,
// Label 419: @9536
GIM_Try, /*On fail goto*//*Label 420*/ 9552, // Rule ID 21063 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR8RegClassID,
// (or:{ *:[i8] } GR8:{ *:[i8] }:$src1, GR8:{ *:[i8] }:$src2) => (OR8rr:{ *:[i8] }:{ *:[i32] } GR8:{ *:[i8] }:$src1, GR8:{ *:[i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::OR8rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21063,
GIR_Done,
// Label 420: @9552
GIM_Reject,
// Label 418: @9553
GIM_Reject,
// Label 395: @9554
GIM_Try, /*On fail goto*//*Label 421*/ 9852,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR16RegClassID,
GIM_Try, /*On fail goto*//*Label 422*/ 9664, // Rule ID 23893 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SHL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR16RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i16] } (shl:{ *:[i16] } 1:{ *:[i16] }, GR8:{ *:[i8] }:$src2), GR16:{ *:[i16] }:$src1) => (BTS16rr:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (INSERT_SUBREG:{ *:[i16] } (IMPLICIT_DEF:{ *:[i16] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s16,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s16,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTS16rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 23893,
GIR_Done,
// Label 422: @9664
GIM_Try, /*On fail goto*//*Label 423*/ 9760, // Rule ID 20978 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SHL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i16] } GR16:{ *:[i16] }:$src1, (shl:{ *:[i16] } 1:{ *:[i16] }, GR8:{ *:[i8] }:$src2)) => (BTS16rr:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (INSERT_SUBREG:{ *:[i16] } (IMPLICIT_DEF:{ *:[i16] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s16,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s16,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTS16rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20978,
GIR_Done,
// Label 423: @9760
GIM_Try, /*On fail goto*//*Label 424*/ 9797, // Rule ID 15676 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i16immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i16] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] })<<P:Predicate_i16immSExt8>>:$src2) => (OR16ri8:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] })<<P:Predicate_i16immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::OR16ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15676,
GIR_Done,
// Label 424: @9797
GIM_Try, /*On fail goto*//*Label 425*/ 9831, // Rule ID 15674 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i16] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] }):$src2) => (OR16ri:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::OR16ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15674,
GIR_Done,
// Label 425: @9831
GIM_Try, /*On fail goto*//*Label 426*/ 9851, // Rule ID 15666 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR16RegClassID,
// (or:{ *:[i16] } GR16:{ *:[i16] }:$src1, GR16:{ *:[i16] }:$src2) => (OR16rr:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, GR16:{ *:[i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::OR16rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15666,
GIR_Done,
// Label 426: @9851
GIM_Reject,
// Label 421: @9852
GIM_Reject,
// Label 396: @9853
GIM_Try, /*On fail goto*//*Label 427*/ 10957,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_Try, /*On fail goto*//*Label 428*/ 9934, // Rule ID 22881 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (or:{ *:[i32] } (add:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] }), (xor:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] })) => (BLSIC32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSIC32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22881,
GIR_Done,
// Label 428: @9934
GIM_Try, /*On fail goto*//*Label 429*/ 10009, // Rule ID 22883 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (or:{ *:[i32] } (add:{ *:[i32] } GR32:{ *:[i32] }:$src, 1:{ *:[i32] }), (xor:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] })) => (T1MSKC32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::T1MSKC32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22883,
GIR_Done,
// Label 429: @10009
GIM_Try, /*On fail goto*//*Label 430*/ 10084, // Rule ID 22869 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (or:{ *:[i32] } (xor:{ *:[i32] } (add:{ *:[i32] } GR32:{ *:[i32] }:$src, 1:{ *:[i32] }), -1:{ *:[i32] }), GR32:{ *:[i32] }:$src) => (BLCI32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCI32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22869,
GIR_Done,
// Label 430: @10084
GIM_Try, /*On fail goto*//*Label 431*/ 10159, // Rule ID 15938 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (or:{ *:[i32] } (xor:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] }), (add:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] })) => (BLSIC32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSIC32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15938,
GIR_Done,
// Label 431: @10159
GIM_Try, /*On fail goto*//*Label 432*/ 10234, // Rule ID 15940 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (or:{ *:[i32] } (xor:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] }), (add:{ *:[i32] } GR32:{ *:[i32] }:$src, 1:{ *:[i32] })) => (T1MSKC32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::T1MSKC32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15940,
GIR_Done,
// Label 432: @10234
GIM_Try, /*On fail goto*//*Label 433*/ 10309, // Rule ID 15926 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (or:{ *:[i32] } GR32:{ *:[i32] }:$src, (xor:{ *:[i32] } (add:{ *:[i32] } GR32:{ *:[i32] }:$src, 1:{ *:[i32] }), -1:{ *:[i32] })) => (BLCI32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCI32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15926,
GIR_Done,
// Label 433: @10309
GIM_Try, /*On fail goto*//*Label 434*/ 10363, // Rule ID 22877 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i32] } (add:{ *:[i32] } GR32:{ *:[i32] }:$src, 1:{ *:[i32] }), GR32:{ *:[i32] }:$src) => (BLCS32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCS32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22877,
GIR_Done,
// Label 434: @10363
GIM_Try, /*On fail goto*//*Label 435*/ 10417, // Rule ID 22879 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i32] } (add:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] }), GR32:{ *:[i32] }:$src) => (BLSFILL32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSFILL32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22879,
GIR_Done,
// Label 435: @10417
GIM_Try, /*On fail goto*//*Label 436*/ 10521, // Rule ID 23899 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SHL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR32RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i32] } (shl:{ *:[i32] } 1:{ *:[i32] }, GR8:{ *:[i8] }:$src2), GR32:{ *:[i32] }:$src1) => (BTS32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (INSERT_SUBREG:{ *:[i32] } (IMPLICIT_DEF:{ *:[i32] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTS32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 23899,
GIR_Done,
// Label 436: @10521
GIM_Try, /*On fail goto*//*Label 437*/ 10575, // Rule ID 22871 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SUB,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -2,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR32RegClassID,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i32] } (sub:{ *:[i32] } -2:{ *:[i32] }, GR32:{ *:[i32] }:$src), GR32:{ *:[i32] }:$src) => (BLCI32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCI32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22871,
GIR_Done,
// Label 437: @10575
GIM_Try, /*On fail goto*//*Label 438*/ 10629, // Rule ID 15934 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i32] } GR32:{ *:[i32] }:$src, (add:{ *:[i32] } GR32:{ *:[i32] }:$src, 1:{ *:[i32] })) => (BLCS32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCS32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15934,
GIR_Done,
// Label 438: @10629
GIM_Try, /*On fail goto*//*Label 439*/ 10683, // Rule ID 15936 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i32] } GR32:{ *:[i32] }:$src, (add:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] })) => (BLSFILL32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSFILL32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15936,
GIR_Done,
// Label 439: @10683
GIM_Try, /*On fail goto*//*Label 440*/ 10787, // Rule ID 20984 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SHL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i32] } GR32:{ *:[i32] }:$src1, (shl:{ *:[i32] } 1:{ *:[i32] }, GR8:{ *:[i8] }:$src2)) => (BTS32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (INSERT_SUBREG:{ *:[i32] } (IMPLICIT_DEF:{ *:[i32] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTS32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20984,
GIR_Done,
// Label 440: @10787
GIM_Try, /*On fail goto*//*Label 441*/ 10841, // Rule ID 15928 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SUB,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -2,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i32] } GR32:{ *:[i32] }:$src, (sub:{ *:[i32] } -2:{ *:[i32] }, GR32:{ *:[i32] }:$src)) => (BLCI32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCI32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15928,
GIR_Done,
// Label 441: @10841
GIM_Try, /*On fail goto*//*Label 442*/ 10886, // Rule ID 15677 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i32immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] })<<P:Predicate_i32immSExt8>>:$src2) => (OR32ri8:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] })<<P:Predicate_i32immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::OR32ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15677,
GIR_Done,
// Label 442: @10886
GIM_Try, /*On fail goto*//*Label 443*/ 10928, // Rule ID 15675 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] }):$src2) => (OR32ri:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::OR32ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15675,
GIR_Done,
// Label 443: @10928
GIM_Try, /*On fail goto*//*Label 444*/ 10956, // Rule ID 15667 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR32RegClassID,
// (or:{ *:[i32] } GR32:{ *:[i32] }:$src1, GR32:{ *:[i32] }:$src2) => (OR32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, GR32:{ *:[i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::OR32rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15667,
GIR_Done,
// Label 444: @10956
GIM_Reject,
// Label 427: @10957
GIM_Reject,
// Label 397: @10958
GIM_Try, /*On fail goto*//*Label 445*/ 12065,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_Try, /*On fail goto*//*Label 446*/ 11039, // Rule ID 22882 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s64,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (or:{ *:[i64] } (add:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] }), (xor:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] })) => (BLSIC64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSIC64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22882,
GIR_Done,
// Label 446: @11039
GIM_Try, /*On fail goto*//*Label 447*/ 11114, // Rule ID 22884 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s64,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (or:{ *:[i64] } (add:{ *:[i64] } GR64:{ *:[i64] }:$src, 1:{ *:[i64] }), (xor:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] })) => (T1MSKC64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::T1MSKC64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22884,
GIR_Done,
// Label 447: @11114
GIM_Try, /*On fail goto*//*Label 448*/ 11189, // Rule ID 22870 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (or:{ *:[i64] } (xor:{ *:[i64] } (add:{ *:[i64] } GR64:{ *:[i64] }:$src, 1:{ *:[i64] }), -1:{ *:[i64] }), GR64:{ *:[i64] }:$src) => (BLCI64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCI64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22870,
GIR_Done,
// Label 448: @11189
GIM_Try, /*On fail goto*//*Label 449*/ 11264, // Rule ID 15939 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s64,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (or:{ *:[i64] } (xor:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] }), (add:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] })) => (BLSIC64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSIC64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15939,
GIR_Done,
// Label 449: @11264
GIM_Try, /*On fail goto*//*Label 450*/ 11339, // Rule ID 15941 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s64,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (or:{ *:[i64] } (xor:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] }), (add:{ *:[i64] } GR64:{ *:[i64] }:$src, 1:{ *:[i64] })) => (T1MSKC64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::T1MSKC64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15941,
GIR_Done,
// Label 450: @11339
GIM_Try, /*On fail goto*//*Label 451*/ 11414, // Rule ID 15927 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s64,
// MIs[2] src
GIM_CheckIsSameOperand, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (or:{ *:[i64] } GR64:{ *:[i64] }:$src, (xor:{ *:[i64] } (add:{ *:[i64] } GR64:{ *:[i64] }:$src, 1:{ *:[i64] }), -1:{ *:[i64] })) => (BLCI64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCI64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15927,
GIR_Done,
// Label 451: @11414
GIM_Try, /*On fail goto*//*Label 452*/ 11468, // Rule ID 22878 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i64] } (add:{ *:[i64] } GR64:{ *:[i64] }:$src, 1:{ *:[i64] }), GR64:{ *:[i64] }:$src) => (BLCS64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCS64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22878,
GIR_Done,
// Label 452: @11468
GIM_Try, /*On fail goto*//*Label 453*/ 11522, // Rule ID 22880 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i64] } (add:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] }), GR64:{ *:[i64] }:$src) => (BLSFILL64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSFILL64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22880,
GIR_Done,
// Label 453: @11522
GIM_Try, /*On fail goto*//*Label 454*/ 11626, // Rule ID 23905 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SHL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR64RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i64] } (shl:{ *:[i64] } 1:{ *:[i64] }, GR8:{ *:[i8] }:$src2), GR64:{ *:[i64] }:$src1) => (BTS64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s64,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::GR64_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::GR64_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTS64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 23905,
GIR_Done,
// Label 454: @11626
GIM_Try, /*On fail goto*//*Label 455*/ 11680, // Rule ID 22872 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SUB,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -2,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR64RegClassID,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i64] } (sub:{ *:[i64] } -2:{ *:[i64] }, GR64:{ *:[i64] }:$src), GR64:{ *:[i64] }:$src) => (BLCI64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCI64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22872,
GIR_Done,
// Label 455: @11680
GIM_Try, /*On fail goto*//*Label 456*/ 11734, // Rule ID 15935 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i64] } GR64:{ *:[i64] }:$src, (add:{ *:[i64] } GR64:{ *:[i64] }:$src, 1:{ *:[i64] })) => (BLCS64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCS64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15935,
GIR_Done,
// Label 456: @11734
GIM_Try, /*On fail goto*//*Label 457*/ 11788, // Rule ID 15937 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i64] } GR64:{ *:[i64] }:$src, (add:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] })) => (BLSFILL64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSFILL64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15937,
GIR_Done,
// Label 457: @11788
GIM_Try, /*On fail goto*//*Label 458*/ 11892, // Rule ID 20990 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SHL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i64] } GR64:{ *:[i64] }:$src1, (shl:{ *:[i64] } 1:{ *:[i64] }, GR8:{ *:[i8] }:$src2)) => (BTS64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s64,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::GR64_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::GR64_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTS64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20990,
GIR_Done,
// Label 458: @11892
GIM_Try, /*On fail goto*//*Label 459*/ 11946, // Rule ID 15929 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SUB,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -2,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i64] } GR64:{ *:[i64] }:$src, (sub:{ *:[i64] } -2:{ *:[i64] }, GR64:{ *:[i64] }:$src)) => (BLCI64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCI64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15929,
GIR_Done,
// Label 459: @11946
GIM_Try, /*On fail goto*//*Label 460*/ 11991, // Rule ID 15678 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i64immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i64] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt8>>:$src2) => (OR64ri8:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::OR64ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15678,
GIR_Done,
// Label 460: @11991
GIM_Try, /*On fail goto*//*Label 461*/ 12036, // Rule ID 15679 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i64immSExt32,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (or:{ *:[i64] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt32>>:$src2) => (OR64ri32:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt32>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::OR64ri32,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15679,
GIR_Done,
// Label 461: @12036
GIM_Try, /*On fail goto*//*Label 462*/ 12064, // Rule ID 15668 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR64RegClassID,
// (or:{ *:[i64] } GR64:{ *:[i64] }:$src1, GR64:{ *:[i64] }:$src2) => (OR64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, GR64:{ *:[i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::OR64rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15668,
GIR_Done,
// Label 462: @12064
GIM_Reject,
// Label 445: @12065
GIM_Reject,
// Label 398: @12066
GIM_Try, /*On fail goto*//*Label 463*/ 12158, // Rule ID 17932 //
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK2RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK2RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK2RegClassID,
// (or:{ *:[v2i1] } VK2:{ *:[v2i1] }:$src1, VK2:{ *:[v2i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v2i1] } (KORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src2, VK16:{ *:[i32] })), VK2:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK2RegClassID,
// GIR_Coverage, 17932,
GIR_Done,
// Label 463: @12158
GIM_Reject,
// Label 399: @12159
GIM_Try, /*On fail goto*//*Label 464*/ 12239,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s64,
GIM_Try, /*On fail goto*//*Label 465*/ 12192, // Rule ID 1848 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (or:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2) => (VPORrr:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1848,
GIR_Done,
// Label 465: @12192
GIM_Try, /*On fail goto*//*Label 466*/ 12215, // Rule ID 1850 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (or:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2) => (PORrr:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1850,
GIR_Done,
// Label 466: @12215
GIM_Try, /*On fail goto*//*Label 467*/ 12238, // Rule ID 5397 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (or:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src1, VR128X:{ *:[v2i64] }:$src2) => (VPORQZ128rr:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src1, VR128X:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORQZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5397,
GIR_Done,
// Label 467: @12238
GIM_Reject,
// Label 464: @12239
GIM_Reject,
// Label 400: @12240
GIM_Try, /*On fail goto*//*Label 468*/ 12332, // Rule ID 17933 //
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK4RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK4RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK4RegClassID,
// (or:{ *:[v4i1] } VK4:{ *:[v4i1] }:$src1, VK4:{ *:[v4i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v4i1] } (KORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src2, VK16:{ *:[i32] })), VK4:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK4RegClassID,
// GIR_Coverage, 17933,
GIR_Done,
// Label 468: @12332
GIM_Reject,
// Label 401: @12333
GIM_Try, /*On fail goto*//*Label 469*/ 12413,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_Try, /*On fail goto*//*Label 470*/ 12366, // Rule ID 5424 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (or:{ *:[v4i32] } VR128X:{ *:[v4i32] }:$src1, VR128X:{ *:[v4i32] }:$src2) => (VPORDZ128rr:{ *:[v4i32] } VR128X:{ *:[v4i32] }:$src1, VR128X:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORDZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5424,
GIR_Done,
// Label 470: @12366
GIM_Try, /*On fail goto*//*Label 471*/ 12389, // Rule ID 16598 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (or:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2) => (VPORrr:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16598,
GIR_Done,
// Label 471: @12389
GIM_Try, /*On fail goto*//*Label 472*/ 12412, // Rule ID 16622 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (or:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2) => (PORrr:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16622,
GIR_Done,
// Label 472: @12412
GIM_Reject,
// Label 469: @12413
GIM_Reject,
// Label 402: @12414
GIM_Try, /*On fail goto*//*Label 473*/ 12494,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s64,
GIM_Try, /*On fail goto*//*Label 474*/ 12447, // Rule ID 1852 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (or:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2) => (VPORYrr:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1852,
GIR_Done,
// Label 474: @12447
GIM_Try, /*On fail goto*//*Label 475*/ 12470, // Rule ID 5388 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (or:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src1, VR256X:{ *:[v4i64] }:$src2) => (VPORQZ256rr:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src1, VR256X:{ *:[v4i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORQZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5388,
GIR_Done,
// Label 475: @12470
GIM_Try, /*On fail goto*//*Label 476*/ 12493, // Rule ID 16568 //
GIM_CheckFeatures, GIFBS_HasAVX1Only,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (or:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2) => (VORPSYrr:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VORPSYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16568,
GIR_Done,
// Label 476: @12493
GIM_Reject,
// Label 473: @12494
GIM_Reject,
// Label 403: @12495
GIM_Try, /*On fail goto*//*Label 477*/ 12603,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK8RegClassID,
GIM_Try, /*On fail goto*//*Label 478*/ 12528, // Rule ID 4058 //
GIM_CheckFeatures, GIFBS_HasDQI,
// (or:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2) => (KORBrr:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::KORBrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4058,
GIR_Done,
// Label 478: @12528
GIM_Try, /*On fail goto*//*Label 479*/ 12602, // Rule ID 17930 //
GIM_CheckFeatures, GIFBS_NoDQI,
// (or:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v8i1] } (KORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src2, VK16:{ *:[i32] })), VK8:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK8RegClassID,
// GIR_Coverage, 17930,
GIR_Done,
// Label 479: @12602
GIM_Reject,
// Label 477: @12603
GIM_Reject,
// Label 404: @12604
GIM_Try, /*On fail goto*//*Label 480*/ 12684,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_Try, /*On fail goto*//*Label 481*/ 12637, // Rule ID 16597 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (or:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2) => (VPORrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16597,
GIR_Done,
// Label 481: @12637
GIM_Try, /*On fail goto*//*Label 482*/ 12660, // Rule ID 16621 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (or:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2) => (PORrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16621,
GIR_Done,
// Label 482: @12660
GIM_Try, /*On fail goto*//*Label 483*/ 12683, // Rule ID 18504 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (or:{ *:[v8i16] } VR128X:{ *:[v8i16] }:$src1, VR128X:{ *:[v8i16] }:$src2) => (VPORQZ128rr:{ *:[v8i16] } VR128X:{ *:[v8i16] }:$src1, VR128X:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORQZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18504,
GIR_Done,
// Label 483: @12683
GIM_Reject,
// Label 480: @12684
GIM_Reject,
// Label 405: @12685
GIM_Try, /*On fail goto*//*Label 484*/ 12765,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s32,
GIM_Try, /*On fail goto*//*Label 485*/ 12718, // Rule ID 5415 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (or:{ *:[v8i32] } VR256X:{ *:[v8i32] }:$src1, VR256X:{ *:[v8i32] }:$src2) => (VPORDZ256rr:{ *:[v8i32] } VR256X:{ *:[v8i32] }:$src1, VR256X:{ *:[v8i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORDZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5415,
GIR_Done,
// Label 485: @12718
GIM_Try, /*On fail goto*//*Label 486*/ 12741, // Rule ID 16542 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (or:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2) => (VPORYrr:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16542,
GIR_Done,
// Label 486: @12741
GIM_Try, /*On fail goto*//*Label 487*/ 12764, // Rule ID 16567 //
GIM_CheckFeatures, GIFBS_HasAVX1Only,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (or:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2) => (VORPSYrr:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VORPSYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16567,
GIR_Done,
// Label 487: @12764
GIM_Reject,
// Label 484: @12765
GIM_Reject,
// Label 406: @12766
GIM_Try, /*On fail goto*//*Label 488*/ 12797, // Rule ID 5379 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (or:{ *:[v8i64] } VR512:{ *:[v8i64] }:$src1, VR512:{ *:[v8i64] }:$src2) => (VPORQZrr:{ *:[v8i64] } VR512:{ *:[v8i64] }:$src1, VR512:{ *:[v8i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORQZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5379,
GIR_Done,
// Label 488: @12797
GIM_Reject,
// Label 407: @12798
GIM_Try, /*On fail goto*//*Label 489*/ 12829, // Rule ID 4059 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK16RegClassID,
// (or:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, VK16:{ *:[v16i1] }:$src2) => (KORWrr:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, VK16:{ *:[v16i1] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::KORWrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4059,
GIR_Done,
// Label 489: @12829
GIM_Reject,
// Label 408: @12830
GIM_Try, /*On fail goto*//*Label 490*/ 12910,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
GIM_Try, /*On fail goto*//*Label 491*/ 12863, // Rule ID 16596 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (or:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2) => (VPORrr:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16596,
GIR_Done,
// Label 491: @12863
GIM_Try, /*On fail goto*//*Label 492*/ 12886, // Rule ID 16620 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (or:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2) => (PORrr:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16620,
GIR_Done,
// Label 492: @12886
GIM_Try, /*On fail goto*//*Label 493*/ 12909, // Rule ID 18503 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (or:{ *:[v16i8] } VR128X:{ *:[v16i8] }:$src1, VR128X:{ *:[v16i8] }:$src2) => (VPORQZ128rr:{ *:[v16i8] } VR128X:{ *:[v16i8] }:$src1, VR128X:{ *:[v16i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORQZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18503,
GIR_Done,
// Label 493: @12909
GIM_Reject,
// Label 490: @12910
GIM_Reject,
// Label 409: @12911
GIM_Try, /*On fail goto*//*Label 494*/ 12991,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s16,
GIM_Try, /*On fail goto*//*Label 495*/ 12944, // Rule ID 16541 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (or:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2) => (VPORYrr:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16541,
GIR_Done,
// Label 495: @12944
GIM_Try, /*On fail goto*//*Label 496*/ 12967, // Rule ID 16566 //
GIM_CheckFeatures, GIFBS_HasAVX1Only,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (or:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2) => (VORPSYrr:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VORPSYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16566,
GIR_Done,
// Label 496: @12967
GIM_Try, /*On fail goto*//*Label 497*/ 12990, // Rule ID 18520 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (or:{ *:[v16i16] } VR256X:{ *:[v16i16] }:$src1, VR256X:{ *:[v16i16] }:$src2) => (VPORQZ256rr:{ *:[v16i16] } VR256X:{ *:[v16i16] }:$src1, VR256X:{ *:[v16i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORQZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18520,
GIR_Done,
// Label 497: @12990
GIM_Reject,
// Label 494: @12991
GIM_Reject,
// Label 410: @12992
GIM_Try, /*On fail goto*//*Label 498*/ 13023, // Rule ID 5406 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (or:{ *:[v16i32] } VR512:{ *:[v16i32] }:$src1, VR512:{ *:[v16i32] }:$src2) => (VPORDZrr:{ *:[v16i32] } VR512:{ *:[v16i32] }:$src1, VR512:{ *:[v16i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORDZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5406,
GIR_Done,
// Label 498: @13023
GIM_Reject,
// Label 411: @13024
GIM_Try, /*On fail goto*//*Label 499*/ 13055, // Rule ID 4060 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK32RegClassID,
// (or:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, VK32:{ *:[v32i1] }:$src2) => (KORDrr:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, VK32:{ *:[v32i1] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::KORDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4060,
GIR_Done,
// Label 499: @13055
GIM_Reject,
// Label 412: @13056
GIM_Try, /*On fail goto*//*Label 500*/ 13136,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s8,
GIM_Try, /*On fail goto*//*Label 501*/ 13089, // Rule ID 16540 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (or:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2) => (VPORYrr:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16540,
GIR_Done,
// Label 501: @13089
GIM_Try, /*On fail goto*//*Label 502*/ 13112, // Rule ID 16565 //
GIM_CheckFeatures, GIFBS_HasAVX1Only,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (or:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2) => (VORPSYrr:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VORPSYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16565,
GIR_Done,
// Label 502: @13112
GIM_Try, /*On fail goto*//*Label 503*/ 13135, // Rule ID 18519 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (or:{ *:[v32i8] } VR256X:{ *:[v32i8] }:$src1, VR256X:{ *:[v32i8] }:$src2) => (VPORQZ256rr:{ *:[v32i8] } VR256X:{ *:[v32i8] }:$src1, VR256X:{ *:[v32i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORQZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18519,
GIR_Done,
// Label 503: @13135
GIM_Reject,
// Label 500: @13136
GIM_Reject,
// Label 413: @13137
GIM_Try, /*On fail goto*//*Label 504*/ 13168, // Rule ID 18536 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (or:{ *:[v32i16] } VR512:{ *:[v32i16] }:$src1, VR512:{ *:[v32i16] }:$src2) => (VPORQZrr:{ *:[v32i16] } VR512:{ *:[v32i16] }:$src1, VR512:{ *:[v32i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORQZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18536,
GIR_Done,
// Label 504: @13168
GIM_Reject,
// Label 414: @13169
GIM_Try, /*On fail goto*//*Label 505*/ 13200, // Rule ID 4061 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v64s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v64s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK64RegClassID,
// (or:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, VK64:{ *:[v64i1] }:$src2) => (KORQrr:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, VK64:{ *:[v64i1] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::KORQrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4061,
GIR_Done,
// Label 505: @13200
GIM_Reject,
// Label 415: @13201
GIM_Try, /*On fail goto*//*Label 506*/ 13232, // Rule ID 18535 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v64s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v64s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (or:{ *:[v64i8] } VR512:{ *:[v64i8] }:$src1, VR512:{ *:[v64i8] }:$src2) => (VPORQZrr:{ *:[v64i8] } VR512:{ *:[v64i8] }:$src1, VR512:{ *:[v64i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPORQZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18535,
GIR_Done,
// Label 506: @13232
GIM_Reject,
// Label 416: @13233
GIM_Reject,
// Label 5: @13234
GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/0, 25, /*)*//*default:*//*Label 530*/ 20964,
/*GILLT_s1*//*Label 507*/ 13265,
/*GILLT_s8*//*Label 508*/ 13772,
/*GILLT_s16*//*Label 509*/ 13885,
/*GILLT_s32*//*Label 510*/ 14239,
/*GILLT_s64*//*Label 511*/ 14857, 0, 0,
/*GILLT_v2s1*//*Label 512*/ 15441,
/*GILLT_v2s64*//*Label 513*/ 15932,
/*GILLT_v4s1*//*Label 514*/ 16273,
/*GILLT_v4s32*//*Label 515*/ 16764,
/*GILLT_v4s64*//*Label 516*/ 17105,
/*GILLT_v8s1*//*Label 517*/ 17446,
/*GILLT_v8s16*//*Label 518*/ 18185,
/*GILLT_v8s32*//*Label 519*/ 18526,
/*GILLT_v8s64*//*Label 520*/ 18867,
/*GILLT_v16s1*//*Label 521*/ 18945,
/*GILLT_v16s8*//*Label 522*/ 19199,
/*GILLT_v16s16*//*Label 523*/ 19540,
/*GILLT_v16s32*//*Label 524*/ 19881,
/*GILLT_v32s1*//*Label 525*/ 19959,
/*GILLT_v32s8*//*Label 526*/ 20213,
/*GILLT_v32s16*//*Label 527*/ 20554,
/*GILLT_v64s1*//*Label 528*/ 20632,
/*GILLT_v64s8*//*Label 529*/ 20886,
// Label 507: @13265
GIM_Try, /*On fail goto*//*Label 531*/ 13771,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s1,
GIM_Try, /*On fail goto*//*Label 532*/ 13388, // Rule ID 23238 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK1RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK1RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK1RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v1i1] } (xor:{ *:[v1i1] } VK1:{ *:[v1i1] }:$src1, immAllOnesV:{ *:[v1i1] }), VK1:{ *:[v1i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v1i1] } (KXNORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src2, VK16:{ *:[i32] })), VK1:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXNORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK1RegClassID,
// GIR_Coverage, 23238,
GIR_Done,
// Label 532: @13388
GIM_Try, /*On fail goto*//*Label 533*/ 13501, // Rule ID 17935 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK1RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK1RegClassID,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::VK1RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v1i1] } (xor:{ *:[v1i1] } VK1:{ *:[v1i1] }:$src1, VK1:{ *:[v1i1] }:$src2), immAllOnesV:{ *:[v1i1] }) => (COPY_TO_REGCLASS:{ *:[v1i1] } (KXNORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src2, VK16:{ *:[i32] })), VK1:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXNORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK1RegClassID,
// GIR_Coverage, 17935,
GIR_Done,
// Label 533: @13501
GIM_Try, /*On fail goto*//*Label 534*/ 13614, // Rule ID 23239 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK1RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK1RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK1RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v1i1] } VK1:{ *:[v1i1] }:$src2, (xor:{ *:[v1i1] } VK1:{ *:[v1i1] }:$src1, immAllOnesV:{ *:[v1i1] })) => (COPY_TO_REGCLASS:{ *:[v1i1] } (KXNORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src2, VK16:{ *:[i32] })), VK1:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXNORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK1RegClassID,
// GIR_Coverage, 23239,
GIR_Done,
// Label 534: @13614
GIM_Try, /*On fail goto*//*Label 535*/ 13686, // Rule ID 17921 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK2RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK1RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v1i1] } VK1:{ *:[v1i1] }:$src, immAllOnesV:{ *:[v1i1] }) => (COPY_TO_REGCLASS:{ *:[v1i1] } (KNOTWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src, VK16:{ *:[i32] })), VK2:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KNOTWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK2RegClassID,
// GIR_Coverage, 17921,
GIR_Done,
// Label 535: @13686
GIM_Try, /*On fail goto*//*Label 536*/ 13770, // Rule ID 17939 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK1RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK1RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK1RegClassID,
// (xor:{ *:[v1i1] } VK1:{ *:[v1i1] }:$src1, VK1:{ *:[v1i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v1i1] } (KXORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK1:{ *:[v1i1] }:$src2, VK16:{ *:[i32] })), VK1:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK1RegClassID,
// GIR_Coverage, 17939,
GIR_Done,
// Label 536: @13770
GIM_Reject,
// Label 531: @13771
GIM_Reject,
// Label 508: @13772
GIM_Try, /*On fail goto*//*Label 537*/ 13884,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR8RegClassID,
GIM_Try, /*On fail goto*//*Label 538*/ 13815, // Rule ID 20856 //
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, -128,
// (xor:{ *:[i8] } GR8:{ *:[i8] }:$src1, -128:{ *:[i8] }) => (ADD8ri:{ *:[i8] }:{ *:[i32] } GR8:{ *:[i8] }:$src1, -128:{ *:[i8] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::ADD8ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddImm, /*InsnID*/0, /*Imm*/-128,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20856,
GIR_Done,
// Label 538: @13815
GIM_Try, /*On fail goto*//*Label 539*/ 13837, // Rule ID 165 //
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, -1,
// (xor:{ *:[i8] } GR8:{ *:[i8] }:$src1, -1:{ *:[i8] }) => (NOT8r:{ *:[i8] } GR8:{ *:[i8] }:$src1)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::NOT8r,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 165,
GIR_Done,
// Label 539: @13837
GIM_Try, /*On fail goto*//*Label 540*/ 13867, // Rule ID 15688 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i8] } GR8:{ *:[i8] }:$src1, (imm:{ *:[i8] }):$src2) => (XOR8ri:{ *:[i8] }:{ *:[i32] } GR8:{ *:[i8] }:$src1, (imm:{ *:[i8] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::XOR8ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15688,
GIR_Done,
// Label 540: @13867
GIM_Try, /*On fail goto*//*Label 541*/ 13883, // Rule ID 15680 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR8RegClassID,
// (xor:{ *:[i8] } GR8:{ *:[i8] }:$src1, GR8:{ *:[i8] }:$src2) => (XOR8rr:{ *:[i8] }:{ *:[i32] } GR8:{ *:[i8] }:$src1, GR8:{ *:[i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::XOR8rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15680,
GIR_Done,
// Label 541: @13883
GIM_Reject,
// Label 537: @13884
GIM_Reject,
// Label 509: @13885
GIM_Try, /*On fail goto*//*Label 542*/ 14238,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR16RegClassID,
GIM_Try, /*On fail goto*//*Label 543*/ 13928, // Rule ID 20857 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, -32768,
// (xor:{ *:[i16] } GR16:{ *:[i16] }:$src1, -32768:{ *:[i16] }) => (ADD16ri:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, -32768:{ *:[i16] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::ADD16ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddImm, /*InsnID*/0, /*Imm*/-32768,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20857,
GIR_Done,
// Label 543: @13928
GIM_Try, /*On fail goto*//*Label 544*/ 14024, // Rule ID 23894 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SHL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR16RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i16] } (shl:{ *:[i16] } 1:{ *:[i16] }, GR8:{ *:[i8] }:$src2), GR16:{ *:[i16] }:$src1) => (BTC16rr:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (INSERT_SUBREG:{ *:[i16] } (IMPLICIT_DEF:{ *:[i16] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s16,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s16,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTC16rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 23894,
GIR_Done,
// Label 544: @14024
GIM_Try, /*On fail goto*//*Label 545*/ 14120, // Rule ID 20979 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SHL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i16] } GR16:{ *:[i16] }:$src1, (shl:{ *:[i16] } 1:{ *:[i16] }, GR8:{ *:[i8] }:$src2)) => (BTC16rr:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (INSERT_SUBREG:{ *:[i16] } (IMPLICIT_DEF:{ *:[i16] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s16,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s16,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTC16rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20979,
GIR_Done,
// Label 545: @14120
GIM_Try, /*On fail goto*//*Label 546*/ 14146, // Rule ID 166 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, -1,
// (xor:{ *:[i16] } GR16:{ *:[i16] }:$src1, -1:{ *:[i16] }) => (NOT16r:{ *:[i16] } GR16:{ *:[i16] }:$src1)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::NOT16r,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 166,
GIR_Done,
// Label 546: @14146
GIM_Try, /*On fail goto*//*Label 547*/ 14183, // Rule ID 15691 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i16immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i16] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] })<<P:Predicate_i16immSExt8>>:$src2) => (XOR16ri8:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] })<<P:Predicate_i16immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::XOR16ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15691,
GIR_Done,
// Label 547: @14183
GIM_Try, /*On fail goto*//*Label 548*/ 14217, // Rule ID 15689 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i16] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] }):$src2) => (XOR16ri:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, (imm:{ *:[i16] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::XOR16ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15689,
GIR_Done,
// Label 548: @14217
GIM_Try, /*On fail goto*//*Label 549*/ 14237, // Rule ID 15681 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR16RegClassID,
// (xor:{ *:[i16] } GR16:{ *:[i16] }:$src1, GR16:{ *:[i16] }:$src2) => (XOR16rr:{ *:[i16] }:{ *:[i32] } GR16:{ *:[i16] }:$src1, GR16:{ *:[i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::XOR16rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15681,
GIR_Done,
// Label 549: @14237
GIM_Reject,
// Label 542: @14238
GIM_Reject,
// Label 510: @14239
GIM_Try, /*On fail goto*//*Label 550*/ 14856,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_Try, /*On fail goto*//*Label 551*/ 14282, // Rule ID 20858 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, -2147483648,
// (xor:{ *:[i32] } GR32:{ *:[i32] }:$src1, -2147483648:{ *:[i32] }) => (ADD32ri:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, -2147483648:{ *:[i32] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::ADD32ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddImm, /*InsnID*/0, /*Imm*/-2147483648,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20858,
GIR_Done,
// Label 551: @14282
GIM_Try, /*On fail goto*//*Label 552*/ 14336, // Rule ID 22857 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i32] } (add:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] }), GR32:{ *:[i32] }:$src) => (BLSMSK32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSMSK32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22857,
GIR_Done,
// Label 552: @14336
GIM_Try, /*On fail goto*//*Label 553*/ 14390, // Rule ID 22875 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i32] } (add:{ *:[i32] } GR32:{ *:[i32] }:$src, 1:{ *:[i32] }), GR32:{ *:[i32] }:$src) => (BLCMSK32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCMSK32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22875,
GIR_Done,
// Label 553: @14390
GIM_Try, /*On fail goto*//*Label 554*/ 14494, // Rule ID 23900 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SHL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR32RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i32] } (shl:{ *:[i32] } 1:{ *:[i32] }, GR8:{ *:[i8] }:$src2), GR32:{ *:[i32] }:$src1) => (BTC32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (INSERT_SUBREG:{ *:[i32] } (IMPLICIT_DEF:{ *:[i32] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTC32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 23900,
GIR_Done,
// Label 554: @14494
GIM_Try, /*On fail goto*//*Label 555*/ 14548, // Rule ID 15908 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i32] } GR32:{ *:[i32] }:$src, (add:{ *:[i32] } GR32:{ *:[i32] }:$src, -1:{ *:[i32] })) => (BLSMSK32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSMSK32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15908,
GIR_Done,
// Label 555: @14548
GIM_Try, /*On fail goto*//*Label 556*/ 14602, // Rule ID 15932 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i32] } GR32:{ *:[i32] }:$src, (add:{ *:[i32] } GR32:{ *:[i32] }:$src, 1:{ *:[i32] })) => (BLCMSK32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCMSK32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15932,
GIR_Done,
// Label 556: @14602
GIM_Try, /*On fail goto*//*Label 557*/ 14706, // Rule ID 20985 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SHL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i32] } GR32:{ *:[i32] }:$src1, (shl:{ *:[i32] } 1:{ *:[i32] }, GR8:{ *:[i8] }:$src2)) => (BTC32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (INSERT_SUBREG:{ *:[i32] } (IMPLICIT_DEF:{ *:[i32] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTC32rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20985,
GIR_Done,
// Label 557: @14706
GIM_Try, /*On fail goto*//*Label 558*/ 14740, // Rule ID 167 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, -1,
// (xor:{ *:[i32] } GR32:{ *:[i32] }:$src1, -1:{ *:[i32] }) => (NOT32r:{ *:[i32] } GR32:{ *:[i32] }:$src1)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::NOT32r,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 167,
GIR_Done,
// Label 558: @14740
GIM_Try, /*On fail goto*//*Label 559*/ 14785, // Rule ID 15692 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i32immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] })<<P:Predicate_i32immSExt8>>:$src2) => (XOR32ri8:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] })<<P:Predicate_i32immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::XOR32ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15692,
GIR_Done,
// Label 559: @14785
GIM_Try, /*On fail goto*//*Label 560*/ 14827, // Rule ID 15690 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] }):$src2) => (XOR32ri:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, (imm:{ *:[i32] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::XOR32ri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15690,
GIR_Done,
// Label 560: @14827
GIM_Try, /*On fail goto*//*Label 561*/ 14855, // Rule ID 15682 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR32RegClassID,
// (xor:{ *:[i32] } GR32:{ *:[i32] }:$src1, GR32:{ *:[i32] }:$src2) => (XOR32rr:{ *:[i32] }:{ *:[i32] } GR32:{ *:[i32] }:$src1, GR32:{ *:[i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::XOR32rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15682,
GIR_Done,
// Label 561: @14855
GIM_Reject,
// Label 550: @14856
GIM_Reject,
// Label 511: @14857
GIM_Try, /*On fail goto*//*Label 562*/ 15440,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_Try, /*On fail goto*//*Label 563*/ 14917, // Rule ID 22858 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i64] } (add:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] }), GR64:{ *:[i64] }:$src) => (BLSMSK64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSMSK64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22858,
GIR_Done,
// Label 563: @14917
GIM_Try, /*On fail goto*//*Label 564*/ 14971, // Rule ID 22876 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
// MIs[0] src
GIM_CheckIsSameOperand, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i64] } (add:{ *:[i64] } GR64:{ *:[i64] }:$src, 1:{ *:[i64] }), GR64:{ *:[i64] }:$src) => (BLCMSK64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCMSK64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 22876,
GIR_Done,
// Label 564: @14971
GIM_Try, /*On fail goto*//*Label 565*/ 15075, // Rule ID 23906 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SHL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR64RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i64] } (shl:{ *:[i64] } 1:{ *:[i64] }, GR8:{ *:[i8] }:$src2), GR64:{ *:[i64] }:$src1) => (BTC64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s64,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::GR64_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::GR64_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTC64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 23906,
GIR_Done,
// Label 565: @15075
GIM_Try, /*On fail goto*//*Label 566*/ 15129, // Rule ID 15909 //
GIM_CheckFeatures, GIFBS_HasBMI,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i64] } GR64:{ *:[i64] }:$src, (add:{ *:[i64] } GR64:{ *:[i64] }:$src, -1:{ *:[i64] })) => (BLSMSK64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLSMSK64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15909,
GIR_Done,
// Label 566: @15129
GIM_Try, /*On fail goto*//*Label 567*/ 15183, // Rule ID 15933 //
GIM_CheckFeatures, GIFBS_HasTBM,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ADD,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s64,
// MIs[1] src
GIM_CheckIsSameOperand, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i64] } GR64:{ *:[i64] }:$src, (add:{ *:[i64] } GR64:{ *:[i64] }:$src, 1:{ *:[i64] })) => (BLCMSK64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BLCMSK64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15933,
GIR_Done,
// Label 567: @15183
GIM_Try, /*On fail goto*//*Label 568*/ 15287, // Rule ID 20991 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SHL,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s8,
GIM_CheckConstantInt, /*MI*/1, /*Op*/1, 1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::GR8RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i64] } GR64:{ *:[i64] }:$src1, (shl:{ *:[i64] } 1:{ *:[i64] }, GR8:{ *:[i8] }:$src2)) => (BTC64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), GR8:{ *:[i8] }:$src2, sub_8bit:{ *:[i32] }))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s64,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::GR64_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::GR64_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::BTC64rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20991,
GIR_Done,
// Label 568: @15287
GIM_Try, /*On fail goto*//*Label 569*/ 15321, // Rule ID 168 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckConstantInt, /*MI*/0, /*Op*/2, -1,
// (xor:{ *:[i64] } GR64:{ *:[i64] }:$src1, -1:{ *:[i64] }) => (NOT64r:{ *:[i64] } GR64:{ *:[i64] }:$src1)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::NOT64r,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 168,
GIR_Done,
// Label 569: @15321
GIM_Try, /*On fail goto*//*Label 570*/ 15366, // Rule ID 15693 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i64immSExt8,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i64] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt8>>:$src2) => (XOR64ri8:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt8>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::XOR64ri8,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15693,
GIR_Done,
// Label 570: @15366
GIM_Try, /*On fail goto*//*Label 571*/ 15411, // Rule ID 15694 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_i64immSExt32,
// MIs[1] Operand 1
// No operand predicates
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[i64] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt32>>:$src2) => (XOR64ri32:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, (imm:{ *:[i64] })<<P:Predicate_i64immSExt32>>:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::XOR64ri32,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15694,
GIR_Done,
// Label 571: @15411
GIM_Try, /*On fail goto*//*Label 572*/ 15439, // Rule ID 15683 //
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::GR64RegClassID,
// (xor:{ *:[i64] } GR64:{ *:[i64] }:$src1, GR64:{ *:[i64] }:$src2) => (XOR64rr:{ *:[i64] }:{ *:[i32] } GR64:{ *:[i64] }:$src1, GR64:{ *:[i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::XOR64rr,
GIR_AddImplicitDef, /*InsnID*/0, X86::EFLAGS,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 15683,
GIR_Done,
// Label 572: @15439
GIM_Reject,
// Label 562: @15440
GIM_Reject,
// Label 512: @15441
GIM_Try, /*On fail goto*//*Label 573*/ 15931,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK2RegClassID,
GIM_Try, /*On fail goto*//*Label 574*/ 15564, // Rule ID 23240 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v2s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK2RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK2RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v2i1] } (xor:{ *:[v2i1] } VK2:{ *:[v2i1] }:$src1, immAllOnesV:{ *:[v2i1] }), VK2:{ *:[v2i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v2i1] } (KXNORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src2, VK16:{ *:[i32] })), VK2:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXNORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK2RegClassID,
// GIR_Coverage, 23240,
GIR_Done,
// Label 574: @15564
GIM_Try, /*On fail goto*//*Label 575*/ 15673, // Rule ID 17936 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v2s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK2RegClassID,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::VK2RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v2i1] } (xor:{ *:[v2i1] } VK2:{ *:[v2i1] }:$src1, VK2:{ *:[v2i1] }:$src2), immAllOnesV:{ *:[v2i1] }) => (COPY_TO_REGCLASS:{ *:[v2i1] } (KXNORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src2, VK16:{ *:[i32] })), VK2:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXNORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK2RegClassID,
// GIR_Coverage, 17936,
GIR_Done,
// Label 575: @15673
GIM_Try, /*On fail goto*//*Label 576*/ 15782, // Rule ID 23241 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK2RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v2s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK2RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v2i1] } VK2:{ *:[v2i1] }:$src2, (xor:{ *:[v2i1] } VK2:{ *:[v2i1] }:$src1, immAllOnesV:{ *:[v2i1] })) => (COPY_TO_REGCLASS:{ *:[v2i1] } (KXNORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src2, VK16:{ *:[i32] })), VK2:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXNORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK2RegClassID,
// GIR_Coverage, 23241,
GIR_Done,
// Label 576: @15782
GIM_Try, /*On fail goto*//*Label 577*/ 15850, // Rule ID 17920 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK2RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v2i1] } VK2:{ *:[v2i1] }:$src, immAllOnesV:{ *:[v2i1] }) => (COPY_TO_REGCLASS:{ *:[v2i1] } (KNOTWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src, VK16:{ *:[i32] })), VK2:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KNOTWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK2RegClassID,
// GIR_Coverage, 17920,
GIR_Done,
// Label 577: @15850
GIM_Try, /*On fail goto*//*Label 578*/ 15930, // Rule ID 17940 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK2RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK2RegClassID,
// (xor:{ *:[v2i1] } VK2:{ *:[v2i1] }:$src1, VK2:{ *:[v2i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v2i1] } (KXORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK2:{ *:[v2i1] }:$src2, VK16:{ *:[i32] })), VK2:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK2RegClassID,
// GIR_Coverage, 17940,
GIR_Done,
// Label 578: @15930
GIM_Reject,
// Label 573: @15931
GIM_Reject,
// Label 513: @15932
GIM_Try, /*On fail goto*//*Label 579*/ 16272,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s64,
GIM_Try, /*On fail goto*//*Label 580*/ 16151, // Rule ID 20365 //
GIM_CheckFeatures, GIFBS_HasAVX512_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src, immAllOnesV:{ *:[v2i64] }) => (EXTRACT_SUBREG:{ *:[v2i64] } (VPTERNLOGQZrri:{ *:[v64i8] } (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR128X:{ *:[v2i64] }:$src, sub_xmm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR128X:{ *:[v2i64] }:$src, sub_xmm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR128X:{ *:[v2i64] }:$src, sub_xmm:{ *:[i32] }), 15:{ *:[i8] }), sub_xmm:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v64s8,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/6, /*TypeID*/GILLT_v8s64,
GIR_BuildMI, /*InsnID*/7, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/7, /*TempRegID*/6, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/7,
GIR_BuildMI, /*InsnID*/6, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/5, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/6, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/6, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/6, /*Imm*/9,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/2, X86::VR128XRegClassID,
GIR_BuildMI, /*InsnID*/5, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/5, /*TempRegID*/4, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/5,
GIR_BuildMI, /*InsnID*/4, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/3, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/4, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/4, /*Imm*/9,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/2, X86::VR128XRegClassID,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/2, /*Imm*/9,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/2, X86::VR128XRegClassID,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VPTERNLOGQZrri,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/5, /*TempRegFlags*/0,
GIR_AddImm, /*InsnID*/1, /*Imm*/15,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_xmm,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::FR16XRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::VR512RegClassID,
// GIR_Coverage, 20365,
GIR_Done,
// Label 580: @16151
GIM_Try, /*On fail goto*//*Label 581*/ 16202, // Rule ID 20373 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src, immAllOnesV:{ *:[v2i64] }) => (VPTERNLOGQZ128rri:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src, VR128X:{ *:[v2i64] }:$src, VR128X:{ *:[v2i64] }:$src, 15:{ *:[i8] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPTERNLOGQZ128rri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/0, /*Imm*/15,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20373,
GIR_Done,
// Label 581: @16202
GIM_Try, /*On fail goto*//*Label 582*/ 16225, // Rule ID 1854 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (xor:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2) => (VPXORrr:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1854,
GIR_Done,
// Label 582: @16225
GIM_Try, /*On fail goto*//*Label 583*/ 16248, // Rule ID 1856 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (xor:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2) => (PXORrr:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, VR128:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PXORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1856,
GIR_Done,
// Label 583: @16248
GIM_Try, /*On fail goto*//*Label 584*/ 16271, // Rule ID 5451 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (xor:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src1, VR128X:{ *:[v2i64] }:$src2) => (VPXORQZ128rr:{ *:[v2i64] } VR128X:{ *:[v2i64] }:$src1, VR128X:{ *:[v2i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORQZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5451,
GIR_Done,
// Label 584: @16271
GIM_Reject,
// Label 579: @16272
GIM_Reject,
// Label 514: @16273
GIM_Try, /*On fail goto*//*Label 585*/ 16763,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK4RegClassID,
GIM_Try, /*On fail goto*//*Label 586*/ 16396, // Rule ID 23242 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK4RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK4RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v4i1] } (xor:{ *:[v4i1] } VK4:{ *:[v4i1] }:$src1, immAllOnesV:{ *:[v4i1] }), VK4:{ *:[v4i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v4i1] } (KXNORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src2, VK16:{ *:[i32] })), VK4:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXNORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK4RegClassID,
// GIR_Coverage, 23242,
GIR_Done,
// Label 586: @16396
GIM_Try, /*On fail goto*//*Label 587*/ 16505, // Rule ID 17937 //
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK4RegClassID,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::VK4RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v4i1] } (xor:{ *:[v4i1] } VK4:{ *:[v4i1] }:$src1, VK4:{ *:[v4i1] }:$src2), immAllOnesV:{ *:[v4i1] }) => (COPY_TO_REGCLASS:{ *:[v4i1] } (KXNORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src2, VK16:{ *:[i32] })), VK4:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXNORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK4RegClassID,
// GIR_Coverage, 17937,
GIR_Done,
// Label 587: @16505
GIM_Try, /*On fail goto*//*Label 588*/ 16614, // Rule ID 23243 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK4RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK4RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v4i1] } VK4:{ *:[v4i1] }:$src2, (xor:{ *:[v4i1] } VK4:{ *:[v4i1] }:$src1, immAllOnesV:{ *:[v4i1] })) => (COPY_TO_REGCLASS:{ *:[v4i1] } (KXNORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src2, VK16:{ *:[i32] })), VK4:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXNORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK4RegClassID,
// GIR_Coverage, 23243,
GIR_Done,
// Label 588: @16614
GIM_Try, /*On fail goto*//*Label 589*/ 16682, // Rule ID 17919 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK4RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v4i1] } VK4:{ *:[v4i1] }:$src, immAllOnesV:{ *:[v4i1] }) => (COPY_TO_REGCLASS:{ *:[v4i1] } (KNOTWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src, VK16:{ *:[i32] })), VK4:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KNOTWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK4RegClassID,
// GIR_Coverage, 17919,
GIR_Done,
// Label 589: @16682
GIM_Try, /*On fail goto*//*Label 590*/ 16762, // Rule ID 17941 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK4RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK4RegClassID,
// (xor:{ *:[v4i1] } VK4:{ *:[v4i1] }:$src1, VK4:{ *:[v4i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v4i1] } (KXORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK4:{ *:[v4i1] }:$src2, VK16:{ *:[i32] })), VK4:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK4RegClassID,
// GIR_Coverage, 17941,
GIR_Done,
// Label 590: @16762
GIM_Reject,
// Label 585: @16763
GIM_Reject,
// Label 515: @16764
GIM_Try, /*On fail goto*//*Label 591*/ 17104,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_Try, /*On fail goto*//*Label 592*/ 16983, // Rule ID 20364 //
GIM_CheckFeatures, GIFBS_HasAVX512_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v4i32] } VR128X:{ *:[v4i32] }:$src, immAllOnesV:{ *:[v4i32] }) => (EXTRACT_SUBREG:{ *:[v4i32] } (VPTERNLOGQZrri:{ *:[v64i8] } (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR128X:{ *:[v4i32] }:$src, sub_xmm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR128X:{ *:[v4i32] }:$src, sub_xmm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR128X:{ *:[v4i32] }:$src, sub_xmm:{ *:[i32] }), 15:{ *:[i8] }), sub_xmm:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v64s8,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/6, /*TypeID*/GILLT_v8s64,
GIR_BuildMI, /*InsnID*/7, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/7, /*TempRegID*/6, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/7,
GIR_BuildMI, /*InsnID*/6, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/5, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/6, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/6, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/6, /*Imm*/9,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/2, X86::VR128XRegClassID,
GIR_BuildMI, /*InsnID*/5, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/5, /*TempRegID*/4, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/5,
GIR_BuildMI, /*InsnID*/4, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/3, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/4, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/4, /*Imm*/9,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/2, X86::VR128XRegClassID,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/2, /*Imm*/9,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/2, X86::VR128XRegClassID,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VPTERNLOGQZrri,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/5, /*TempRegFlags*/0,
GIR_AddImm, /*InsnID*/1, /*Imm*/15,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_xmm,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::FR16XRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::VR512RegClassID,
// GIR_Coverage, 20364,
GIR_Done,
// Label 592: @16983
GIM_Try, /*On fail goto*//*Label 593*/ 17034, // Rule ID 20372 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v4i32] } VR128X:{ *:[v4i32] }:$src, immAllOnesV:{ *:[v4i32] }) => (VPTERNLOGQZ128rri:{ *:[v4i32] } VR128X:{ *:[v4i32] }:$src, VR128X:{ *:[v4i32] }:$src, VR128X:{ *:[v4i32] }:$src, 15:{ *:[i8] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPTERNLOGQZ128rri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/0, /*Imm*/15,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20372,
GIR_Done,
// Label 593: @17034
GIM_Try, /*On fail goto*//*Label 594*/ 17057, // Rule ID 5478 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (xor:{ *:[v4i32] } VR128X:{ *:[v4i32] }:$src1, VR128X:{ *:[v4i32] }:$src2) => (VPXORDZ128rr:{ *:[v4i32] } VR128X:{ *:[v4i32] }:$src1, VR128X:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORDZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5478,
GIR_Done,
// Label 594: @17057
GIM_Try, /*On fail goto*//*Label 595*/ 17080, // Rule ID 16601 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (xor:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2) => (VPXORrr:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16601,
GIR_Done,
// Label 595: @17080
GIM_Try, /*On fail goto*//*Label 596*/ 17103, // Rule ID 16625 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (xor:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2) => (PXORrr:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PXORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16625,
GIR_Done,
// Label 596: @17103
GIM_Reject,
// Label 591: @17104
GIM_Reject,
// Label 516: @17105
GIM_Try, /*On fail goto*//*Label 597*/ 17445,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s64,
GIM_Try, /*On fail goto*//*Label 598*/ 17324, // Rule ID 20369 //
GIM_CheckFeatures, GIFBS_HasAVX512_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src, immAllOnesV:{ *:[v4i64] }) => (EXTRACT_SUBREG:{ *:[v4i64] } (VPTERNLOGQZrri:{ *:[v64i8] } (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR256X:{ *:[v4i64] }:$src, sub_ymm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR256X:{ *:[v4i64] }:$src, sub_ymm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR256X:{ *:[v4i64] }:$src, sub_ymm:{ *:[i32] }), 15:{ *:[i8] }), sub_ymm:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v64s8,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/6, /*TypeID*/GILLT_v8s64,
GIR_BuildMI, /*InsnID*/7, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/7, /*TempRegID*/6, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/7,
GIR_BuildMI, /*InsnID*/6, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/5, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/6, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/6, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/6, /*Imm*/10,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/2, X86::VR256XRegClassID,
GIR_BuildMI, /*InsnID*/5, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/5, /*TempRegID*/4, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/5,
GIR_BuildMI, /*InsnID*/4, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/3, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/4, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/4, /*Imm*/10,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/2, X86::VR256XRegClassID,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/2, /*Imm*/10,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/2, X86::VR256XRegClassID,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VPTERNLOGQZrri,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/5, /*TempRegFlags*/0,
GIR_AddImm, /*InsnID*/1, /*Imm*/15,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_ymm,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VR256XRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::VR512RegClassID,
// GIR_Coverage, 20369,
GIR_Done,
// Label 598: @17324
GIM_Try, /*On fail goto*//*Label 599*/ 17375, // Rule ID 20377 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src, immAllOnesV:{ *:[v4i64] }) => (VPTERNLOGQZ256rri:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src, VR256X:{ *:[v4i64] }:$src, VR256X:{ *:[v4i64] }:$src, 15:{ *:[i8] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPTERNLOGQZ256rri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/0, /*Imm*/15,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20377,
GIR_Done,
// Label 599: @17375
GIM_Try, /*On fail goto*//*Label 600*/ 17398, // Rule ID 1858 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (xor:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2) => (VPXORYrr:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1858,
GIR_Done,
// Label 600: @17398
GIM_Try, /*On fail goto*//*Label 601*/ 17421, // Rule ID 5442 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (xor:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src1, VR256X:{ *:[v4i64] }:$src2) => (VPXORQZ256rr:{ *:[v4i64] } VR256X:{ *:[v4i64] }:$src1, VR256X:{ *:[v4i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORQZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5442,
GIR_Done,
// Label 601: @17421
GIM_Try, /*On fail goto*//*Label 602*/ 17444, // Rule ID 16572 //
GIM_CheckFeatures, GIFBS_HasAVX1Only,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (xor:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2) => (VXORPSYrr:{ *:[v4i64] } VR256:{ *:[v4i64] }:$src1, VR256:{ *:[v4i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VXORPSYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16572,
GIR_Done,
// Label 602: @17444
GIM_Reject,
// Label 597: @17445
GIM_Reject,
// Label 517: @17446
GIM_Try, /*On fail goto*//*Label 603*/ 18184,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK8RegClassID,
GIM_Try, /*On fail goto*//*Label 604*/ 17521, // Rule ID 21553 //
GIM_CheckFeatures, GIFBS_HasDQI,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK8RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v8i1] } (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, immAllOnesV:{ *:[v8i1] }), VK8:{ *:[v8i1] }:$src2) => (KXNORBrr:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KXNORBrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21553,
GIR_Done,
// Label 604: @17521
GIM_Try, /*On fail goto*//*Label 605*/ 17632, // Rule ID 23236 //
GIM_CheckFeatures, GIFBS_NoDQI,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK8RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v8i1] } (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, immAllOnesV:{ *:[v8i1] }), VK8:{ *:[v8i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v8i1] } (KXNORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src2, VK16:{ *:[i32] })), VK8:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXNORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK8RegClassID,
// GIR_Coverage, 23236,
GIR_Done,
// Label 605: @17632
GIM_Try, /*On fail goto*//*Label 606*/ 17693, // Rule ID 4062 //
GIM_CheckFeatures, GIFBS_HasDQI,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v8i1] } (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2), immAllOnesV:{ *:[v8i1] }) => (KXNORBrr:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KXNORBrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4062,
GIR_Done,
// Label 606: @17693
GIM_Try, /*On fail goto*//*Label 607*/ 17804, // Rule ID 17934 //
GIM_CheckFeatures, GIFBS_NoDQI,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v8i1] } (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2), immAllOnesV:{ *:[v8i1] }) => (COPY_TO_REGCLASS:{ *:[v8i1] } (KXNORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src2, VK16:{ *:[i32] })), VK8:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXNORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK8RegClassID,
// GIR_Coverage, 17934,
GIR_Done,
// Label 607: @17804
GIM_Try, /*On fail goto*//*Label 608*/ 17865, // Rule ID 21554 //
GIM_CheckFeatures, GIFBS_HasDQI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src2, (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, immAllOnesV:{ *:[v8i1] })) => (KXNORBrr:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KXNORBrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21554,
GIR_Done,
// Label 608: @17865
GIM_Try, /*On fail goto*//*Label 609*/ 17976, // Rule ID 23237 //
GIM_CheckFeatures, GIFBS_NoDQI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src2, (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, immAllOnesV:{ *:[v8i1] })) => (COPY_TO_REGCLASS:{ *:[v8i1] } (KXNORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src2, VK16:{ *:[i32] })), VK8:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXNORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK8RegClassID,
// GIR_Coverage, 23237,
GIR_Done,
// Label 609: @17976
GIM_Try, /*On fail goto*//*Label 610*/ 18012, // Rule ID 4050 //
GIM_CheckFeatures, GIFBS_HasDQI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src, immAllOnesV:{ *:[v8i1] }) => (KNOTBrr:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KNOTBrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4050,
GIR_Done,
// Label 610: @18012
GIM_Try, /*On fail goto*//*Label 611*/ 18082, // Rule ID 17918 //
GIM_CheckFeatures, GIFBS_HasAVX512_NoDQI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src, immAllOnesV:{ *:[v8i1] }) => (COPY_TO_REGCLASS:{ *:[v8i1] } (KNOTWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src, VK16:{ *:[i32] })), VK8:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KNOTWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK8RegClassID,
// GIR_Coverage, 17918,
GIR_Done,
// Label 611: @18082
GIM_Try, /*On fail goto*//*Label 612*/ 18101, // Rule ID 4066 //
GIM_CheckFeatures, GIFBS_HasDQI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK8RegClassID,
// (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2) => (KXORBrr:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::KXORBrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4066,
GIR_Done,
// Label 612: @18101
GIM_Try, /*On fail goto*//*Label 613*/ 18183, // Rule ID 17938 //
GIM_CheckFeatures, GIFBS_NoDQI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK8RegClassID,
// (xor:{ *:[v8i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2) => (COPY_TO_REGCLASS:{ *:[v8i1] } (KXORWrr:{ *:[v16i1] } (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src1, VK16:{ *:[i32] }), (COPY_TO_REGCLASS:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src2, VK16:{ *:[i32] })), VK8:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v16s1,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v16s1,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KXORWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK8RegClassID,
// GIR_Coverage, 17938,
GIR_Done,
// Label 613: @18183
GIM_Reject,
// Label 603: @18184
GIM_Reject,
// Label 518: @18185
GIM_Try, /*On fail goto*//*Label 614*/ 18525,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_Try, /*On fail goto*//*Label 615*/ 18404, // Rule ID 20363 //
GIM_CheckFeatures, GIFBS_HasAVX512_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v8i16] } VR128X:{ *:[v8i16] }:$src, immAllOnesV:{ *:[v8i16] }) => (EXTRACT_SUBREG:{ *:[v8i16] } (VPTERNLOGQZrri:{ *:[v64i8] } (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR128X:{ *:[v8i16] }:$src, sub_xmm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR128X:{ *:[v8i16] }:$src, sub_xmm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR128X:{ *:[v8i16] }:$src, sub_xmm:{ *:[i32] }), 15:{ *:[i8] }), sub_xmm:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v64s8,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/6, /*TypeID*/GILLT_v8s64,
GIR_BuildMI, /*InsnID*/7, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/7, /*TempRegID*/6, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/7,
GIR_BuildMI, /*InsnID*/6, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/5, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/6, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/6, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/6, /*Imm*/9,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/2, X86::VR128XRegClassID,
GIR_BuildMI, /*InsnID*/5, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/5, /*TempRegID*/4, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/5,
GIR_BuildMI, /*InsnID*/4, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/3, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/4, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/4, /*Imm*/9,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/2, X86::VR128XRegClassID,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/2, /*Imm*/9,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/2, X86::VR128XRegClassID,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VPTERNLOGQZrri,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/5, /*TempRegFlags*/0,
GIR_AddImm, /*InsnID*/1, /*Imm*/15,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_xmm,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::FR16XRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::VR512RegClassID,
// GIR_Coverage, 20363,
GIR_Done,
// Label 615: @18404
GIM_Try, /*On fail goto*//*Label 616*/ 18455, // Rule ID 20371 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v8i16] } VR128X:{ *:[v8i16] }:$src, immAllOnesV:{ *:[v8i16] }) => (VPTERNLOGQZ128rri:{ *:[v8i16] } VR128X:{ *:[v8i16] }:$src, VR128X:{ *:[v8i16] }:$src, VR128X:{ *:[v8i16] }:$src, 15:{ *:[i8] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPTERNLOGQZ128rri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/0, /*Imm*/15,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20371,
GIR_Done,
// Label 616: @18455
GIM_Try, /*On fail goto*//*Label 617*/ 18478, // Rule ID 16600 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (xor:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2) => (VPXORrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16600,
GIR_Done,
// Label 617: @18478
GIM_Try, /*On fail goto*//*Label 618*/ 18501, // Rule ID 16624 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (xor:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2) => (PXORrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PXORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16624,
GIR_Done,
// Label 618: @18501
GIM_Try, /*On fail goto*//*Label 619*/ 18524, // Rule ID 18506 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (xor:{ *:[v8i16] } VR128X:{ *:[v8i16] }:$src1, VR128X:{ *:[v8i16] }:$src2) => (VPXORQZ128rr:{ *:[v8i16] } VR128X:{ *:[v8i16] }:$src1, VR128X:{ *:[v8i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORQZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18506,
GIR_Done,
// Label 619: @18524
GIM_Reject,
// Label 614: @18525
GIM_Reject,
// Label 519: @18526
GIM_Try, /*On fail goto*//*Label 620*/ 18866,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s32,
GIM_Try, /*On fail goto*//*Label 621*/ 18745, // Rule ID 20368 //
GIM_CheckFeatures, GIFBS_HasAVX512_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v8i32] } VR256X:{ *:[v8i32] }:$src, immAllOnesV:{ *:[v8i32] }) => (EXTRACT_SUBREG:{ *:[v8i32] } (VPTERNLOGQZrri:{ *:[v64i8] } (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR256X:{ *:[v8i32] }:$src, sub_ymm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR256X:{ *:[v8i32] }:$src, sub_ymm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR256X:{ *:[v8i32] }:$src, sub_ymm:{ *:[i32] }), 15:{ *:[i8] }), sub_ymm:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v64s8,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/6, /*TypeID*/GILLT_v8s64,
GIR_BuildMI, /*InsnID*/7, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/7, /*TempRegID*/6, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/7,
GIR_BuildMI, /*InsnID*/6, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/5, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/6, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/6, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/6, /*Imm*/10,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/2, X86::VR256XRegClassID,
GIR_BuildMI, /*InsnID*/5, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/5, /*TempRegID*/4, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/5,
GIR_BuildMI, /*InsnID*/4, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/3, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/4, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/4, /*Imm*/10,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/2, X86::VR256XRegClassID,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/2, /*Imm*/10,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/2, X86::VR256XRegClassID,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VPTERNLOGQZrri,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/5, /*TempRegFlags*/0,
GIR_AddImm, /*InsnID*/1, /*Imm*/15,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_ymm,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VR256XRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::VR512RegClassID,
// GIR_Coverage, 20368,
GIR_Done,
// Label 621: @18745
GIM_Try, /*On fail goto*//*Label 622*/ 18796, // Rule ID 20376 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v8i32] } VR256X:{ *:[v8i32] }:$src, immAllOnesV:{ *:[v8i32] }) => (VPTERNLOGQZ256rri:{ *:[v8i32] } VR256X:{ *:[v8i32] }:$src, VR256X:{ *:[v8i32] }:$src, VR256X:{ *:[v8i32] }:$src, 15:{ *:[i8] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPTERNLOGQZ256rri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/0, /*Imm*/15,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20376,
GIR_Done,
// Label 622: @18796
GIM_Try, /*On fail goto*//*Label 623*/ 18819, // Rule ID 5469 //
GIM_CheckFeatures, GIFBS_HasAVX512_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (xor:{ *:[v8i32] } VR256X:{ *:[v8i32] }:$src1, VR256X:{ *:[v8i32] }:$src2) => (VPXORDZ256rr:{ *:[v8i32] } VR256X:{ *:[v8i32] }:$src1, VR256X:{ *:[v8i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORDZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5469,
GIR_Done,
// Label 623: @18819
GIM_Try, /*On fail goto*//*Label 624*/ 18842, // Rule ID 16545 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (xor:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2) => (VPXORYrr:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16545,
GIR_Done,
// Label 624: @18842
GIM_Try, /*On fail goto*//*Label 625*/ 18865, // Rule ID 16571 //
GIM_CheckFeatures, GIFBS_HasAVX1Only,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (xor:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2) => (VXORPSYrr:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VXORPSYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16571,
GIR_Done,
// Label 625: @18865
GIM_Reject,
// Label 620: @18866
GIM_Reject,
// Label 520: @18867
GIM_Try, /*On fail goto*//*Label 626*/ 18944,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_Try, /*On fail goto*//*Label 627*/ 18928, // Rule ID 20361 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v8i64] } VR512:{ *:[v8i64] }:$src, immAllOnesV:{ *:[v8i64] }) => (VPTERNLOGQZrri:{ *:[v8i64] } VR512:{ *:[v8i64] }:$src, VR512:{ *:[v8i64] }:$src, VR512:{ *:[v8i64] }:$src, 15:{ *:[i8] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPTERNLOGQZrri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/0, /*Imm*/15,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20361,
GIR_Done,
// Label 627: @18928
GIM_Try, /*On fail goto*//*Label 628*/ 18943, // Rule ID 5433 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (xor:{ *:[v8i64] } VR512:{ *:[v8i64] }:$src1, VR512:{ *:[v8i64] }:$src2) => (VPXORQZrr:{ *:[v8i64] } VR512:{ *:[v8i64] }:$src1, VR512:{ *:[v8i64] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORQZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5433,
GIR_Done,
// Label 628: @18943
GIM_Reject,
// Label 626: @18944
GIM_Reject,
// Label 521: @18945
GIM_Try, /*On fail goto*//*Label 629*/ 19198,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK16RegClassID,
GIM_Try, /*On fail goto*//*Label 630*/ 19020, // Rule ID 21555 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v16s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v16s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK16RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK16RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v16i1] } (xor:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, immAllOnesV:{ *:[v16i1] }), VK16:{ *:[v16i1] }:$src2) => (KXNORWrr:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, VK16:{ *:[v16i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KXNORWrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21555,
GIR_Done,
// Label 630: @19020
GIM_Try, /*On fail goto*//*Label 631*/ 19081, // Rule ID 4063 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v16s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v16s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK16RegClassID,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::VK16RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v16i1] } (xor:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, VK16:{ *:[v16i1] }:$src2), immAllOnesV:{ *:[v16i1] }) => (KXNORWrr:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, VK16:{ *:[v16i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KXNORWrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4063,
GIR_Done,
// Label 631: @19081
GIM_Try, /*On fail goto*//*Label 632*/ 19142, // Rule ID 21556 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK16RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v16s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v16s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK16RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src2, (xor:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, immAllOnesV:{ *:[v16i1] })) => (KXNORWrr:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, VK16:{ *:[v16i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KXNORWrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21556,
GIR_Done,
// Label 632: @19142
GIM_Try, /*On fail goto*//*Label 633*/ 19178, // Rule ID 4051 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK16RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src, immAllOnesV:{ *:[v16i1] }) => (KNOTWrr:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KNOTWrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4051,
GIR_Done,
// Label 633: @19178
GIM_Try, /*On fail goto*//*Label 634*/ 19197, // Rule ID 4067 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK16RegClassID,
// (xor:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, VK16:{ *:[v16i1] }:$src2) => (KXORWrr:{ *:[v16i1] } VK16:{ *:[v16i1] }:$src1, VK16:{ *:[v16i1] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::KXORWrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4067,
GIR_Done,
// Label 634: @19197
GIM_Reject,
// Label 629: @19198
GIM_Reject,
// Label 522: @19199
GIM_Try, /*On fail goto*//*Label 635*/ 19539,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
GIM_Try, /*On fail goto*//*Label 636*/ 19418, // Rule ID 20362 //
GIM_CheckFeatures, GIFBS_HasAVX512_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v16i8] } VR128X:{ *:[v16i8] }:$src, immAllOnesV:{ *:[v16i8] }) => (EXTRACT_SUBREG:{ *:[v16i8] } (VPTERNLOGQZrri:{ *:[v64i8] } (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR128X:{ *:[v16i8] }:$src, sub_xmm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR128X:{ *:[v16i8] }:$src, sub_xmm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR128X:{ *:[v16i8] }:$src, sub_xmm:{ *:[i32] }), 15:{ *:[i8] }), sub_xmm:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v64s8,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/6, /*TypeID*/GILLT_v8s64,
GIR_BuildMI, /*InsnID*/7, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/7, /*TempRegID*/6, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/7,
GIR_BuildMI, /*InsnID*/6, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/5, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/6, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/6, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/6, /*Imm*/9,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/2, X86::VR128XRegClassID,
GIR_BuildMI, /*InsnID*/5, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/5, /*TempRegID*/4, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/5,
GIR_BuildMI, /*InsnID*/4, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/3, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/4, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/4, /*Imm*/9,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/2, X86::VR128XRegClassID,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/2, /*Imm*/9,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/2, X86::VR128XRegClassID,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VPTERNLOGQZrri,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/5, /*TempRegFlags*/0,
GIR_AddImm, /*InsnID*/1, /*Imm*/15,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_xmm,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::FR16XRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::VR512RegClassID,
// GIR_Coverage, 20362,
GIR_Done,
// Label 636: @19418
GIM_Try, /*On fail goto*//*Label 637*/ 19469, // Rule ID 20370 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v16i8] } VR128X:{ *:[v16i8] }:$src, immAllOnesV:{ *:[v16i8] }) => (VPTERNLOGQZ128rri:{ *:[v16i8] } VR128X:{ *:[v16i8] }:$src, VR128X:{ *:[v16i8] }:$src, VR128X:{ *:[v16i8] }:$src, 15:{ *:[i8] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPTERNLOGQZ128rri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/0, /*Imm*/15,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20370,
GIR_Done,
// Label 637: @19469
GIM_Try, /*On fail goto*//*Label 638*/ 19492, // Rule ID 16599 //
GIM_CheckFeatures, GIFBS_HasAVX_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (xor:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2) => (VPXORrr:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16599,
GIR_Done,
// Label 638: @19492
GIM_Try, /*On fail goto*//*Label 639*/ 19515, // Rule ID 16623 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (xor:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2) => (PXORrr:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::PXORrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16623,
GIR_Done,
// Label 639: @19515
GIM_Try, /*On fail goto*//*Label 640*/ 19538, // Rule ID 18505 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (xor:{ *:[v16i8] } VR128X:{ *:[v16i8] }:$src1, VR128X:{ *:[v16i8] }:$src2) => (VPXORQZ128rr:{ *:[v16i8] } VR128X:{ *:[v16i8] }:$src1, VR128X:{ *:[v16i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORQZ128rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18505,
GIR_Done,
// Label 640: @19538
GIM_Reject,
// Label 635: @19539
GIM_Reject,
// Label 523: @19540
GIM_Try, /*On fail goto*//*Label 641*/ 19880,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s16,
GIM_Try, /*On fail goto*//*Label 642*/ 19759, // Rule ID 20367 //
GIM_CheckFeatures, GIFBS_HasAVX512_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v16i16] } VR256X:{ *:[v16i16] }:$src, immAllOnesV:{ *:[v16i16] }) => (EXTRACT_SUBREG:{ *:[v16i16] } (VPTERNLOGQZrri:{ *:[v64i8] } (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR256X:{ *:[v16i16] }:$src, sub_ymm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR256X:{ *:[v16i16] }:$src, sub_ymm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR256X:{ *:[v16i16] }:$src, sub_ymm:{ *:[i32] }), 15:{ *:[i8] }), sub_ymm:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v64s8,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/6, /*TypeID*/GILLT_v8s64,
GIR_BuildMI, /*InsnID*/7, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/7, /*TempRegID*/6, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/7,
GIR_BuildMI, /*InsnID*/6, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/5, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/6, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/6, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/6, /*Imm*/10,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/2, X86::VR256XRegClassID,
GIR_BuildMI, /*InsnID*/5, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/5, /*TempRegID*/4, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/5,
GIR_BuildMI, /*InsnID*/4, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/3, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/4, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/4, /*Imm*/10,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/2, X86::VR256XRegClassID,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/2, /*Imm*/10,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/2, X86::VR256XRegClassID,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VPTERNLOGQZrri,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/5, /*TempRegFlags*/0,
GIR_AddImm, /*InsnID*/1, /*Imm*/15,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_ymm,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VR256XRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::VR512RegClassID,
// GIR_Coverage, 20367,
GIR_Done,
// Label 642: @19759
GIM_Try, /*On fail goto*//*Label 643*/ 19810, // Rule ID 20375 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v16i16] } VR256X:{ *:[v16i16] }:$src, immAllOnesV:{ *:[v16i16] }) => (VPTERNLOGQZ256rri:{ *:[v16i16] } VR256X:{ *:[v16i16] }:$src, VR256X:{ *:[v16i16] }:$src, VR256X:{ *:[v16i16] }:$src, 15:{ *:[i8] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPTERNLOGQZ256rri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/0, /*Imm*/15,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20375,
GIR_Done,
// Label 643: @19810
GIM_Try, /*On fail goto*//*Label 644*/ 19833, // Rule ID 16544 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (xor:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2) => (VPXORYrr:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16544,
GIR_Done,
// Label 644: @19833
GIM_Try, /*On fail goto*//*Label 645*/ 19856, // Rule ID 16570 //
GIM_CheckFeatures, GIFBS_HasAVX1Only,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (xor:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2) => (VXORPSYrr:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VXORPSYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16570,
GIR_Done,
// Label 645: @19856
GIM_Try, /*On fail goto*//*Label 646*/ 19879, // Rule ID 18522 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (xor:{ *:[v16i16] } VR256X:{ *:[v16i16] }:$src1, VR256X:{ *:[v16i16] }:$src2) => (VPXORQZ256rr:{ *:[v16i16] } VR256X:{ *:[v16i16] }:$src1, VR256X:{ *:[v16i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORQZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18522,
GIR_Done,
// Label 646: @19879
GIM_Reject,
// Label 641: @19880
GIM_Reject,
// Label 524: @19881
GIM_Try, /*On fail goto*//*Label 647*/ 19958,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_Try, /*On fail goto*//*Label 648*/ 19942, // Rule ID 20360 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v16i32] } VR512:{ *:[v16i32] }:$src, immAllOnesV:{ *:[v16i32] }) => (VPTERNLOGQZrri:{ *:[v16i32] } VR512:{ *:[v16i32] }:$src, VR512:{ *:[v16i32] }:$src, VR512:{ *:[v16i32] }:$src, 15:{ *:[i8] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPTERNLOGQZrri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/0, /*Imm*/15,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20360,
GIR_Done,
// Label 648: @19942
GIM_Try, /*On fail goto*//*Label 649*/ 19957, // Rule ID 5460 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (xor:{ *:[v16i32] } VR512:{ *:[v16i32] }:$src1, VR512:{ *:[v16i32] }:$src2) => (VPXORDZrr:{ *:[v16i32] } VR512:{ *:[v16i32] }:$src1, VR512:{ *:[v16i32] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORDZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 5460,
GIR_Done,
// Label 649: @19957
GIM_Reject,
// Label 647: @19958
GIM_Reject,
// Label 525: @19959
GIM_Try, /*On fail goto*//*Label 650*/ 20212,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK32RegClassID,
GIM_Try, /*On fail goto*//*Label 651*/ 20034, // Rule ID 21557 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v32s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v32s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK32RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK32RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v32i1] } (xor:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, immAllOnesV:{ *:[v32i1] }), VK32:{ *:[v32i1] }:$src2) => (KXNORDrr:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, VK32:{ *:[v32i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KXNORDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21557,
GIR_Done,
// Label 651: @20034
GIM_Try, /*On fail goto*//*Label 652*/ 20095, // Rule ID 4064 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v32s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v32s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK32RegClassID,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::VK32RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v32i1] } (xor:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, VK32:{ *:[v32i1] }:$src2), immAllOnesV:{ *:[v32i1] }) => (KXNORDrr:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, VK32:{ *:[v32i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KXNORDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4064,
GIR_Done,
// Label 652: @20095
GIM_Try, /*On fail goto*//*Label 653*/ 20156, // Rule ID 21558 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v32s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v32s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK32RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src2, (xor:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, immAllOnesV:{ *:[v32i1] })) => (KXNORDrr:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, VK32:{ *:[v32i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KXNORDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21558,
GIR_Done,
// Label 653: @20156
GIM_Try, /*On fail goto*//*Label 654*/ 20192, // Rule ID 4052 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK32RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src, immAllOnesV:{ *:[v32i1] }) => (KNOTDrr:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KNOTDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4052,
GIR_Done,
// Label 654: @20192
GIM_Try, /*On fail goto*//*Label 655*/ 20211, // Rule ID 4068 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK32RegClassID,
// (xor:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, VK32:{ *:[v32i1] }:$src2) => (KXORDrr:{ *:[v32i1] } VK32:{ *:[v32i1] }:$src1, VK32:{ *:[v32i1] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::KXORDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4068,
GIR_Done,
// Label 655: @20211
GIM_Reject,
// Label 650: @20212
GIM_Reject,
// Label 526: @20213
GIM_Try, /*On fail goto*//*Label 656*/ 20553,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s8,
GIM_Try, /*On fail goto*//*Label 657*/ 20432, // Rule ID 20366 //
GIM_CheckFeatures, GIFBS_HasAVX512_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v32i8] } VR256X:{ *:[v32i8] }:$src, immAllOnesV:{ *:[v32i8] }) => (EXTRACT_SUBREG:{ *:[v32i8] } (VPTERNLOGQZrri:{ *:[v64i8] } (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR256X:{ *:[v32i8] }:$src, sub_ymm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR256X:{ *:[v32i8] }:$src, sub_ymm:{ *:[i32] }), (INSERT_SUBREG:{ *:[v8i64] } (IMPLICIT_DEF:{ *:[v8i64] }), VR256X:{ *:[v32i8] }:$src, sub_ymm:{ *:[i32] }), 15:{ *:[i8] }), sub_ymm:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_v64s8,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_v8s64,
GIR_MakeTempReg, /*TempRegID*/6, /*TypeID*/GILLT_v8s64,
GIR_BuildMI, /*InsnID*/7, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/7, /*TempRegID*/6, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/7,
GIR_BuildMI, /*InsnID*/6, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/5, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/6, /*TempRegID*/6, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/6, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/6, /*Imm*/10,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/6, /*Op*/2, X86::VR256XRegClassID,
GIR_BuildMI, /*InsnID*/5, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/5, /*TempRegID*/4, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/5,
GIR_BuildMI, /*InsnID*/4, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/3, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/4, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/4, /*Imm*/10,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/4, /*Op*/2, X86::VR256XRegClassID,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/2, /*Imm*/10,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/0, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/1, X86::VR512RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/2, X86::VR256XRegClassID,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VPTERNLOGQZrri,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/5, /*TempRegFlags*/0,
GIR_AddImm, /*InsnID*/1, /*Imm*/15,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_ymm,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VR256XRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::VR512RegClassID,
// GIR_Coverage, 20366,
GIR_Done,
// Label 657: @20432
GIM_Try, /*On fail goto*//*Label 658*/ 20483, // Rule ID 20374 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v32i8] } VR256X:{ *:[v32i8] }:$src, immAllOnesV:{ *:[v32i8] }) => (VPTERNLOGQZ256rri:{ *:[v32i8] } VR256X:{ *:[v32i8] }:$src, VR256X:{ *:[v32i8] }:$src, VR256X:{ *:[v32i8] }:$src, 15:{ *:[i8] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPTERNLOGQZ256rri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/0, /*Imm*/15,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20374,
GIR_Done,
// Label 658: @20483
GIM_Try, /*On fail goto*//*Label 659*/ 20506, // Rule ID 16543 //
GIM_CheckFeatures, GIFBS_HasAVX2_NoVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (xor:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2) => (VPXORYrr:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16543,
GIR_Done,
// Label 659: @20506
GIM_Try, /*On fail goto*//*Label 660*/ 20529, // Rule ID 16569 //
GIM_CheckFeatures, GIFBS_HasAVX1Only,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (xor:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2) => (VXORPSYrr:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VXORPSYrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16569,
GIR_Done,
// Label 660: @20529
GIM_Try, /*On fail goto*//*Label 661*/ 20552, // Rule ID 18521 //
GIM_CheckFeatures, GIFBS_HasVLX,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR256XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (xor:{ *:[v32i8] } VR256X:{ *:[v32i8] }:$src1, VR256X:{ *:[v32i8] }:$src2) => (VPXORQZ256rr:{ *:[v32i8] } VR256X:{ *:[v32i8] }:$src1, VR256X:{ *:[v32i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORQZ256rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18521,
GIR_Done,
// Label 661: @20552
GIM_Reject,
// Label 656: @20553
GIM_Reject,
// Label 527: @20554
GIM_Try, /*On fail goto*//*Label 662*/ 20631,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_Try, /*On fail goto*//*Label 663*/ 20615, // Rule ID 20359 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v32i16] } VR512:{ *:[v32i16] }:$src, immAllOnesV:{ *:[v32i16] }) => (VPTERNLOGQZrri:{ *:[v32i16] } VR512:{ *:[v32i16] }:$src, VR512:{ *:[v32i16] }:$src, VR512:{ *:[v32i16] }:$src, 15:{ *:[i8] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPTERNLOGQZrri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/0, /*Imm*/15,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20359,
GIR_Done,
// Label 663: @20615
GIM_Try, /*On fail goto*//*Label 664*/ 20630, // Rule ID 18538 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (xor:{ *:[v32i16] } VR512:{ *:[v32i16] }:$src1, VR512:{ *:[v32i16] }:$src2) => (VPXORQZrr:{ *:[v32i16] } VR512:{ *:[v32i16] }:$src1, VR512:{ *:[v32i16] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORQZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18538,
GIR_Done,
// Label 664: @20630
GIM_Reject,
// Label 662: @20631
GIM_Reject,
// Label 528: @20632
GIM_Try, /*On fail goto*//*Label 665*/ 20885,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v64s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v64s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK64RegClassID,
GIM_Try, /*On fail goto*//*Label 666*/ 20707, // Rule ID 21559 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v64s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v64s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK64RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK64RegClassID,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v64i1] } (xor:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, immAllOnesV:{ *:[v64i1] }), VK64:{ *:[v64i1] }:$src2) => (KXNORQrr:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, VK64:{ *:[v64i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KXNORQrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21559,
GIR_Done,
// Label 666: @20707
GIM_Try, /*On fail goto*//*Label 667*/ 20768, // Rule ID 4065 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v64s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v64s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK64RegClassID,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/X86::VK64RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v64i1] } (xor:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, VK64:{ *:[v64i1] }:$src2), immAllOnesV:{ *:[v64i1] }) => (KXNORQrr:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, VK64:{ *:[v64i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KXNORQrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4065,
GIR_Done,
// Label 667: @20768
GIM_Try, /*On fail goto*//*Label 668*/ 20829, // Rule ID 21560 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v64s1,
GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v64s1,
GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/X86::VK64RegClassID,
GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
GIM_CheckOpcodeIsEither, /*MI*/2, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/2,
GIM_CheckIsSafeToFold, /*InsnID*/1,
GIM_CheckIsSafeToFold, /*InsnID*/2,
// (xor:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src2, (xor:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, immAllOnesV:{ *:[v64i1] })) => (KXNORQrr:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, VK64:{ *:[v64i1] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KXNORQrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 21560,
GIR_Done,
// Label 668: @20829
GIM_Try, /*On fail goto*//*Label 669*/ 20865, // Rule ID 4053 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK64RegClassID,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src, immAllOnesV:{ *:[v64i1] }) => (KNOTQrr:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KNOTQrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4053,
GIR_Done,
// Label 669: @20865
GIM_Try, /*On fail goto*//*Label 670*/ 20884, // Rule ID 4069 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK64RegClassID,
// (xor:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, VK64:{ *:[v64i1] }:$src2) => (KXORQrr:{ *:[v64i1] } VK64:{ *:[v64i1] }:$src1, VK64:{ *:[v64i1] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::KXORQrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4069,
GIR_Done,
// Label 670: @20884
GIM_Reject,
// Label 665: @20885
GIM_Reject,
// Label 529: @20886
GIM_Try, /*On fail goto*//*Label 671*/ 20963,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v64s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v64s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR512RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VR512RegClassID,
GIM_Try, /*On fail goto*//*Label 672*/ 20947, // Rule ID 20358 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
GIM_CheckOpcodeIsEither, /*MI*/1, TargetOpcode::G_BUILD_VECTOR, TargetOpcode::G_BUILD_VECTOR_TRUNC,
GIM_CheckIsBuildVectorAllOnes, /*MI*/1,
GIM_CheckIsSafeToFold, /*InsnID*/1,
// (xor:{ *:[v64i8] } VR512:{ *:[v64i8] }:$src, immAllOnesV:{ *:[v64i8] }) => (VPTERNLOGQZrri:{ *:[v64i8] } VR512:{ *:[v64i8] }:$src, VR512:{ *:[v64i8] }:$src, VR512:{ *:[v64i8] }:$src, 15:{ *:[i8] })
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPTERNLOGQZrri,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/0, /*Imm*/15,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20358,
GIR_Done,
// Label 672: @20947
GIM_Try, /*On fail goto*//*Label 673*/ 20962, // Rule ID 18537 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR512RegClassID,
// (xor:{ *:[v64i8] } VR512:{ *:[v64i8] }:$src1, VR512:{ *:[v64i8] }:$src2) => (VPXORQZrr:{ *:[v64i8] } VR512:{ *:[v64i8] }:$src1, VR512:{ *:[v64i8] }:$src2)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VPXORQZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18537,
GIR_Done,
// Label 673: @20962
GIM_Reject,
// Label 671: @20963
GIM_Reject,
// Label 530: @20964
GIM_Reject,
// Label 6: @20965
GIM_Try, /*On fail goto*//*Label 674*/ 21120,
GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/16, 24, /*)*//*default:*//*Label 678*/ 21119,
/*GILLT_v16s1*//*Label 675*/ 20984, 0, 0, 0,
/*GILLT_v32s1*//*Label 676*/ 21029, 0, 0,
/*GILLT_v64s1*//*Label 677*/ 21074,
// Label 675: @20984
GIM_Try, /*On fail goto*//*Label 679*/ 21028, // Rule ID 17942 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK8RegClassID,
// (concat_vectors:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src1, VK8:{ *:[v8i1] }:$src2) => (KUNPCKBWrr:{ *:[v16i1] } VK8:{ *:[v8i1] }:$src2, VK8:{ *:[v8i1] }:$src1)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KUNPCKBWrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 17942,
GIR_Done,
// Label 679: @21028
GIM_Reject,
// Label 676: @21029
GIM_Try, /*On fail goto*//*Label 680*/ 21073, // Rule ID 17943 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK16RegClassID,
// (concat_vectors:{ *:[v32i1] } VK16:{ *:[v16i1] }:$src1, VK16:{ *:[v16i1] }:$src2) => (KUNPCKWDrr:{ *:[v32i1] } VK16:{ *:[v16i1] }:$src2, VK16:{ *:[v16i1] }:$src1)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KUNPCKWDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 17943,
GIR_Done,
// Label 680: @21073
GIM_Reject,
// Label 677: @21074
GIM_Try, /*On fail goto*//*Label 681*/ 21118, // Rule ID 17944 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s1,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VK32RegClassID,
// (concat_vectors:{ *:[v64i1] } VK32:{ *:[v32i1] }:$src1, VK32:{ *:[v32i1] }:$src2) => (KUNPCKDQrr:{ *:[v64i1] } VK32:{ *:[v32i1] }:$src2, VK32:{ *:[v32i1] }:$src1)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KUNPCKDQrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src2
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 17944,
GIR_Done,
// Label 681: @21118
GIM_Reject,
// Label 678: @21119
GIM_Reject,
// Label 674: @21120
GIM_Reject,
// Label 7: @21121
GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/1, 24, /*)*//*default:*//*Label 690*/ 22666,
/*GILLT_s8*//*Label 682*/ 21150,
/*GILLT_s16*//*Label 683*/ 21204,
/*GILLT_s32*//*Label 684*/ 21964,
/*GILLT_s64*//*Label 685*/ 22172, 0, 0, 0, 0, 0, 0, 0,
/*GILLT_v8s1*//*Label 686*/ 22380, 0, 0, 0,
/*GILLT_v16s1*//*Label 687*/ 22458, 0, 0, 0,
/*GILLT_v32s1*//*Label 688*/ 22536, 0, 0,
/*GILLT_v64s1*//*Label 689*/ 22601,
// Label 682: @21150
GIM_Try, /*On fail goto*//*Label 691*/ 21203, // Rule ID 17873 //
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK8RegClassID,
// (bitconvert:{ *:[i8] } VK8:{ *:[v8i1] }:$src) => (EXTRACT_SUBREG:{ *:[i8] } (COPY_TO_REGCLASS:{ *:[i32] } VK8:{ *:[v8i1] }:$src, GR32:{ *:[i32] }), sub_8bit:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_8bit,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::GR8RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::GR32RegClassID,
// GIR_Coverage, 17873,
GIR_Done,
// Label 691: @21203
GIM_Reject,
// Label 683: @21204
GIM_Try, /*On fail goto*//*Label 692*/ 21257, // Rule ID 17870 //
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK16RegClassID,
// (bitconvert:{ *:[i16] } VK16:{ *:[v16i1] }:$src) => (EXTRACT_SUBREG:{ *:[i16] } (COPY_TO_REGCLASS:{ *:[i32] } VK16:{ *:[v16i1] }:$src, GR32:{ *:[i32] }), sub_16bit:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_16bit,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::GR32RegClassID,
// GIR_Coverage, 17870,
GIR_Done,
// Label 692: @21257
GIM_Try, /*On fail goto*//*Label 693*/ 21352, // Rule ID 20554 //
GIM_CheckFeatures, GIFBS_HasFP16,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::FR16XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
// (bitconvert:{ *:[f16] } GR16:{ *:[i16] }:$src) => (COPY_TO_REGCLASS:{ *:[f16] } (VMOVW2SHrr:{ *:[f128] } (INSERT_SUBREG:{ *:[i32] } (IMPLICIT_DEF:{ *:[i32] }), GR16:{ *:[i16] }:$src, sub_16bit:{ *:[i32] })), FR16X:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s128,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/3,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/2, /*Imm*/4,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/0, X86::LOW32_ADDR_ACCESS_RBPRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/1, X86::LOW32_ADDR_ACCESS_RBPRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/2, /*Op*/2, X86::GR16RegClassID,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VMOVW2SHrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::FR16XRegClassID,
// GIR_Coverage, 20554,
GIR_Done,
// Label 693: @21352
GIM_Try, /*On fail goto*//*Label 694*/ 21423, // Rule ID 20567 //
GIM_CheckFeatures, GIFBS_HasFP16,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR16XRegClassID,
// (bitconvert:{ *:[i16] } FR16X:{ *:[f16] }:$src) => (EXTRACT_SUBREG:{ *:[i16] } (VMOVSH2Wrr:{ *:[i32] } (COPY_TO_REGCLASS:{ *:[f128] } FR16X:{ *:[f16] }:$src, VR128X:{ *:[i32] })), sub_16bit:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s128,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VMOVSH2Wrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_16bit,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::GR32RegClassID,
// GIR_Coverage, 20567,
GIR_Done,
// Label 694: @21423
GIM_Try, /*On fail goto*//*Label 695*/ 21493, // Rule ID 16787 //
GIM_CheckFeatures, GIFBS_HasAVX_NoBWI,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
// (bitconvert:{ *:[i16] } f16:{ *:[f16] }:$src) => (EXTRACT_SUBREG:{ *:[i16] } (VPEXTRWrr:{ *:[i32] } (COPY_TO_REGCLASS:{ *:[v8i16] } FR16:{ *:[f16] }:$src, VR128:{ *:[i32] }), 0:{ *:[i8] }), sub_16bit:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s16,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VPEXTRWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddImm, /*InsnID*/1, /*Imm*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_16bit,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::GR32RegClassID,
// GIR_Coverage, 16787,
GIR_Done,
// Label 695: @21493
GIM_Try, /*On fail goto*//*Label 696*/ 21603, // Rule ID 16788 //
GIM_CheckFeatures, GIFBS_HasAVX_NoBWI,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::FR16RegClassID,
// (bitconvert:{ *:[f16] } i16:{ *:[i16] }:$src) => (COPY_TO_REGCLASS:{ *:[f16] } (VPINSRWrr:{ *:[f128] } (IMPLICIT_DEF:{ *:[v8i16] }), (INSERT_SUBREG:{ *:[i32] } (IMPLICIT_DEF:{ *:[i32] }), GR16:{ *:[i16] }:$src, sub_16bit:{ *:[i32] }), 0:{ *:[i8] }), FR16:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s128,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s16,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/4, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/3, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/4,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/3, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/3, /*Imm*/4,
GIR_ConstrainOperandRC, /*InsnID*/3, /*Op*/0, X86::LOW32_ADDR_ACCESS_RBPRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/3, /*Op*/1, X86::LOW32_ADDR_ACCESS_RBPRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/3, /*Op*/2, X86::GR16RegClassID,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VPINSRWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_AddImm, /*InsnID*/1, /*Imm*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::FR16RegClassID,
// GIR_Coverage, 16788,
GIR_Done,
// Label 696: @21603
GIM_Try, /*On fail goto*//*Label 697*/ 21673, // Rule ID 16784 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
// (bitconvert:{ *:[i16] } f16:{ *:[f16] }:$src) => (EXTRACT_SUBREG:{ *:[i16] } (PEXTRWrr:{ *:[i32] } (COPY_TO_REGCLASS:{ *:[v8i16] } FR16:{ *:[f16] }:$src, VR128:{ *:[i32] }), 0:{ *:[i8] }), sub_16bit:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s16,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::PEXTRWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddImm, /*InsnID*/1, /*Imm*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_16bit,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::GR32RegClassID,
// GIR_Coverage, 16784,
GIR_Done,
// Label 697: @21673
GIM_Try, /*On fail goto*//*Label 698*/ 21783, // Rule ID 16785 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::FR16RegClassID,
// (bitconvert:{ *:[f16] } i16:{ *:[i16] }:$src) => (COPY_TO_REGCLASS:{ *:[f16] } (PINSRWrr:{ *:[f128] } (IMPLICIT_DEF:{ *:[v8i16] }), (INSERT_SUBREG:{ *:[i32] } (IMPLICIT_DEF:{ *:[i32] }), GR16:{ *:[i16] }:$src, sub_16bit:{ *:[i32] }), 0:{ *:[i8] }), FR16:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s128,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s16,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/4, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/3, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/4,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/3, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/3, /*Imm*/4,
GIR_ConstrainOperandRC, /*InsnID*/3, /*Op*/0, X86::LOW32_ADDR_ACCESS_RBPRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/3, /*Op*/1, X86::LOW32_ADDR_ACCESS_RBPRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/3, /*Op*/2, X86::GR16RegClassID,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::PINSRWrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_AddImm, /*InsnID*/1, /*Imm*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::FR16RegClassID,
// GIR_Coverage, 16785,
GIR_Done,
// Label 698: @21783
GIM_Try, /*On fail goto*//*Label 699*/ 21853, // Rule ID 20260 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
// (bitconvert:{ *:[i16] } f16:{ *:[f16] }:$src) => (EXTRACT_SUBREG:{ *:[i16] } (VPEXTRWZrr:{ *:[i32] } (COPY_TO_REGCLASS:{ *:[v8i16] } FR16X:{ *:[f16] }:$src, VR128X:{ *:[i32] }), 0:{ *:[i8] }), sub_16bit:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s16,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::COPY,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VPEXTRWZrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddImm, /*InsnID*/1, /*Imm*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempSubRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0, X86::sub_16bit,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::GR16RegClassID,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, X86::GR32RegClassID,
// GIR_Coverage, 20260,
GIR_Done,
// Label 699: @21853
GIM_Try, /*On fail goto*//*Label 700*/ 21963, // Rule ID 20261 //
GIM_CheckFeatures, GIFBS_HasBWI,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::FR16XRegClassID,
// (bitconvert:{ *:[f16] } i16:{ *:[i16] }:$src) => (COPY_TO_REGCLASS:{ *:[f16] } (VPINSRWZrr:{ *:[f128] } (IMPLICIT_DEF:{ *:[v8i16] }), (INSERT_SUBREG:{ *:[i32] } (IMPLICIT_DEF:{ *:[i32] }), GR16:{ *:[i16] }:$src, sub_16bit:{ *:[i32] }), 0:{ *:[i8] }), FR16X:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s128,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_v8s16,
GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/4, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/4, /*TempRegID*/3, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/4,
GIR_BuildMI, /*InsnID*/3, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/2, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/3, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/3, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/3, /*Imm*/4,
GIR_ConstrainOperandRC, /*InsnID*/3, /*Op*/0, X86::LOW32_ADDR_ACCESS_RBPRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/3, /*Op*/1, X86::LOW32_ADDR_ACCESS_RBPRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/3, /*Op*/2, X86::GR16RegClassID,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VPINSRWZrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/0,
GIR_AddImm, /*InsnID*/1, /*Imm*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::FR16XRegClassID,
// GIR_Coverage, 20261,
GIR_Done,
// Label 700: @21963
GIM_Reject,
// Label 684: @21964
GIM_Try, /*On fail goto*//*Label 701*/ 21987, // Rule ID 2607 //
GIM_CheckFeatures, GIFBS_UseAVX,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::FR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
// (bitconvert:{ *:[f32] } GR32:{ *:[i32] }:$src) => (VMOVDI2SSrr:{ *:[f32] } GR32:{ *:[i32] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VMOVDI2SSrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2607,
GIR_Done,
// Label 701: @21987
GIM_Try, /*On fail goto*//*Label 702*/ 22010, // Rule ID 2608 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::FR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
// (bitconvert:{ *:[f32] } GR32:{ *:[i32] }:$src) => (MOVDI2SSrr:{ *:[f32] } GR32:{ *:[i32] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::MOVDI2SSrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2608,
GIR_Done,
// Label 702: @22010
GIM_Try, /*On fail goto*//*Label 703*/ 22033, // Rule ID 2617 //
GIM_CheckFeatures, GIFBS_UseAVX,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR32RegClassID,
// (bitconvert:{ *:[i32] } FR32:{ *:[f32] }:$src) => (VMOVSS2DIrr:{ *:[i32] } FR32:{ *:[f32] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VMOVSS2DIrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2617,
GIR_Done,
// Label 703: @22033
GIM_Try, /*On fail goto*//*Label 704*/ 22056, // Rule ID 2618 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR32RegClassID,
// (bitconvert:{ *:[i32] } FR32:{ *:[f32] }:$src) => (MOVSS2DIrr:{ *:[i32] } FR32:{ *:[f32] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::MOVSS2DIrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2618,
GIR_Done,
// Label 704: @22056
GIM_Try, /*On fail goto*//*Label 705*/ 22079, // Rule ID 4237 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::FR32XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
// (bitconvert:{ *:[f32] } GR32:{ *:[i32] }:$src) => (VMOVDI2SSZrr:{ *:[f32] } GR32:{ *:[i32] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VMOVDI2SSZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4237,
GIR_Done,
// Label 705: @22079
GIM_Try, /*On fail goto*//*Label 706*/ 22102, // Rule ID 4242 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR32XRegClassID,
// (bitconvert:{ *:[i32] } FR32X:{ *:[f32] }:$src) => (VMOVSS2DIZrr:{ *:[i32] } FR32X:{ *:[f32] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VMOVSS2DIZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4242,
GIR_Done,
// Label 706: @22102
GIM_Try, /*On fail goto*//*Label 707*/ 22125, // Rule ID 17881 //
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK32RegClassID,
// (bitconvert:{ *:[i32] } VK32:{ *:[v32i1] }:$src) => (COPY_TO_REGCLASS:{ *:[i32] } VK32:{ *:[v32i1] }:$src, GR32:{ *:[i32] })
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::GR32RegClassID,
// GIR_Coverage, 17881,
GIR_Done,
// Label 707: @22125
GIM_Try, /*On fail goto*//*Label 708*/ 22171, // Rule ID 18361 //
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v32s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::FR32XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK32RegClassID,
// (bitconvert:{ *:[f32] } VK32:{ *:[v32i1] }:$src) => (VMOVDI2SSZrr:{ *:[f32] } (KMOVDrk:{ *:[i32] } VK32:{ *:[v32i1] }:$src))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KMOVDrk,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VMOVDI2SSZrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18361,
GIR_Done,
// Label 708: @22171
GIM_Reject,
// Label 685: @22172
GIM_Try, /*On fail goto*//*Label 709*/ 22195, // Rule ID 2602 //
GIM_CheckFeatures, GIFBS_UseAVX,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::FR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
// (bitconvert:{ *:[f64] } GR64:{ *:[i64] }:$src) => (VMOV64toSDrr:{ *:[f64] } GR64:{ *:[i64] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VMOV64toSDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2602,
GIR_Done,
// Label 709: @22195
GIM_Try, /*On fail goto*//*Label 710*/ 22218, // Rule ID 2606 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::FR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
// (bitconvert:{ *:[f64] } GR64:{ *:[i64] }:$src) => (MOV64toSDrr:{ *:[f64] } GR64:{ *:[i64] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::MOV64toSDrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2606,
GIR_Done,
// Label 710: @22218
GIM_Try, /*On fail goto*//*Label 711*/ 22241, // Rule ID 2615 //
GIM_CheckFeatures, GIFBS_UseAVX,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR64RegClassID,
// (bitconvert:{ *:[i64] } FR64:{ *:[f64] }:$src) => (VMOVSDto64rr:{ *:[i64] } FR64:{ *:[f64] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VMOVSDto64rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2615,
GIR_Done,
// Label 711: @22241
GIM_Try, /*On fail goto*//*Label 712*/ 22264, // Rule ID 2616 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR64RegClassID,
// (bitconvert:{ *:[i64] } FR64:{ *:[f64] }:$src) => (MOVSDto64rr:{ *:[i64] } FR64:{ *:[f64] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::MOVSDto64rr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2616,
GIR_Done,
// Label 712: @22264
GIM_Try, /*On fail goto*//*Label 713*/ 22287, // Rule ID 4235 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::FR64XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
// (bitconvert:{ *:[f64] } GR64:{ *:[i64] }:$src) => (VMOV64toSDZrr:{ *:[f64] } GR64:{ *:[i64] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VMOV64toSDZrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4235,
GIR_Done,
// Label 713: @22287
GIM_Try, /*On fail goto*//*Label 714*/ 22310, // Rule ID 4236 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR64XRegClassID,
// (bitconvert:{ *:[i64] } FR64X:{ *:[f64] }:$src) => (VMOVSDto64Zrr:{ *:[i64] } FR64X:{ *:[f64] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VMOVSDto64Zrr,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 4236,
GIR_Done,
// Label 714: @22310
GIM_Try, /*On fail goto*//*Label 715*/ 22333, // Rule ID 17883 //
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v64s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK64RegClassID,
// (bitconvert:{ *:[i64] } VK64:{ *:[v64i1] }:$src) => (COPY_TO_REGCLASS:{ *:[i64] } VK64:{ *:[v64i1] }:$src, GR64:{ *:[i32] })
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::GR64RegClassID,
// GIR_Coverage, 17883,
GIR_Done,
// Label 715: @22333
GIM_Try, /*On fail goto*//*Label 716*/ 22379, // Rule ID 18363 //
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v64s1,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::FR64XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::VK64RegClassID,
// (bitconvert:{ *:[f64] } VK64:{ *:[v64i1] }:$src) => (VMOV64toSDZrr:{ *:[f64] } (KMOVQrk:{ *:[i64] } VK64:{ *:[v64i1] }:$src))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::KMOVQrk,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VMOV64toSDZrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18363,
GIR_Done,
// Label 716: @22379
GIM_Reject,
// Label 686: @22380
GIM_Try, /*On fail goto*//*Label 717*/ 22457, // Rule ID 17872 //
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK8RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR8RegClassID,
// (bitconvert:{ *:[v8i1] } GR8:{ *:[i8] }:$src) => (COPY_TO_REGCLASS:{ *:[v8i1] } (INSERT_SUBREG:{ *:[i32] } (IMPLICIT_DEF:{ *:[i32] }), GR8:{ *:[i8] }:$src, sub_8bit:{ *:[i32] }), VK8:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/1, /*Imm*/1,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR8RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK8RegClassID,
// GIR_Coverage, 17872,
GIR_Done,
// Label 717: @22457
GIM_Reject,
// Label 687: @22458
GIM_Try, /*On fail goto*//*Label 718*/ 22535, // Rule ID 17869 //
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK16RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR16RegClassID,
// (bitconvert:{ *:[v16i1] } GR16:{ *:[i16] }:$src) => (COPY_TO_REGCLASS:{ *:[v16i1] } (INSERT_SUBREG:{ *:[i32] } (IMPLICIT_DEF:{ *:[i32] }), GR16:{ *:[i16] }:$src, sub_16bit:{ *:[i32] }), VK16:{ *:[i32] })
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/2, /*Opcode*/TargetOpcode::IMPLICIT_DEF,
GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/RegState::Define,
GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/TargetOpcode::INSERT_SUBREG,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/0,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_AddImm, /*InsnID*/1, /*Imm*/4,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/0, X86::LOW32_ADDR_ACCESS_RBPRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/1, X86::LOW32_ADDR_ACCESS_RBPRegClassID,
GIR_ConstrainOperandRC, /*InsnID*/1, /*Op*/2, X86::GR16RegClassID,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK16RegClassID,
// GIR_Coverage, 17869,
GIR_Done,
// Label 718: @22535
GIM_Reject,
// Label 688: @22536
GIM_Try, /*On fail goto*//*Label 719*/ 22600,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK32RegClassID,
GIM_Try, /*On fail goto*//*Label 720*/ 22561, // Rule ID 17880 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR32RegClassID,
// (bitconvert:{ *:[v32i1] } GR32:{ *:[i32] }:$src) => (COPY_TO_REGCLASS:{ *:[v32i1] } GR32:{ *:[i32] }:$src, VK32:{ *:[i32] })
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK32RegClassID,
// GIR_Coverage, 17880,
GIR_Done,
// Label 720: @22561
GIM_Try, /*On fail goto*//*Label 721*/ 22599, // Rule ID 18360 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR32XRegClassID,
// (bitconvert:{ *:[v32i1] } FR32X:{ *:[f32] }:$src) => (KMOVDkr:{ *:[v32i1] } (VMOVSS2DIZrr:{ *:[i32] } FR32X:{ *:[f32] }:$src))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VMOVSS2DIZrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KMOVDkr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18360,
GIR_Done,
// Label 721: @22599
GIM_Reject,
// Label 719: @22600
GIM_Reject,
// Label 689: @22601
GIM_Try, /*On fail goto*//*Label 722*/ 22665,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VK64RegClassID,
GIM_Try, /*On fail goto*//*Label 723*/ 22626, // Rule ID 17882 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::GR64RegClassID,
// (bitconvert:{ *:[v64i1] } GR64:{ *:[i64] }:$src) => (COPY_TO_REGCLASS:{ *:[v64i1] } GR64:{ *:[i64] }:$src, VK64:{ *:[i32] })
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/TargetOpcode::COPY,
GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, X86::VK64RegClassID,
// GIR_Coverage, 17882,
GIR_Done,
// Label 723: @22626
GIM_Try, /*On fail goto*//*Label 724*/ 22664, // Rule ID 18362 //
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR64XRegClassID,
// (bitconvert:{ *:[v64i1] } FR64X:{ *:[f64] }:$src) => (KMOVQkr:{ *:[v64i1] } (VMOVSDto64Zrr:{ *:[i64] } FR64X:{ *:[f64] }:$src))
GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
GIR_BuildMI, /*InsnID*/1, /*Opcode*/X86::VMOVSDto64Zrr,
GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/RegState::Define,
GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::KMOVQkr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/0,
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 18362,
GIR_Done,
// Label 724: @22664
GIM_Reject,
// Label 722: @22665
GIM_Reject,
// Label 690: @22666
GIM_Reject,
// Label 8: @22667
GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/3, 5, /*)*//*default:*//*Label 727*/ 22989,
/*GILLT_s32*//*Label 725*/ 22675,
/*GILLT_s64*//*Label 726*/ 22832,
// Label 725: @22675
GIM_Try, /*On fail goto*//*Label 728*/ 22701, // Rule ID 1487 //
GIM_CheckFeatures, GIFBS_UseAVX,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR32RegClassID,
// (lrint:{ *:[i32] } FR32:{ *:[f32] }:$src) => (VCVTSS2SIrr:{ *:[i32] } FR32:{ *:[f32] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VCVTSS2SIrr,
GIR_AddImplicitUse, /*InsnID*/0, X86::MXCSR,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1487,
GIR_Done,
// Label 728: @22701
GIM_Try, /*On fail goto*//*Label 729*/ 22727, // Rule ID 1491 //
GIM_CheckFeatures, GIFBS_UseAVX,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR64RegClassID,
// (lrint:{ *:[i32] } FR64:{ *:[f64] }:$src) => (VCVTSD2SIrr:{ *:[i32] } FR64:{ *:[f64] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VCVTSD2SIrr,
GIR_AddImplicitUse, /*InsnID*/0, X86::MXCSR,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1491,
GIR_Done,
// Label 729: @22727
GIM_Try, /*On fail goto*//*Label 730*/ 22753, // Rule ID 1511 //
GIM_CheckFeatures, GIFBS_UseSSE1,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR32RegClassID,
// (lrint:{ *:[i32] } FR32:{ *:[f32] }:$src) => (CVTSS2SIrr:{ *:[i32] } FR32:{ *:[f32] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::CVTSS2SIrr,
GIR_AddImplicitUse, /*InsnID*/0, X86::MXCSR,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1511,
GIR_Done,
// Label 730: @22753
GIM_Try, /*On fail goto*//*Label 731*/ 22779, // Rule ID 1515 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR64RegClassID,
// (lrint:{ *:[i32] } FR64:{ *:[f64] }:$src) => (CVTSD2SIrr:{ *:[i32] } FR64:{ *:[f64] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::CVTSD2SIrr,
GIR_AddImplicitUse, /*InsnID*/0, X86::MXCSR,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1515,
GIR_Done,
// Label 731: @22779
GIM_Try, /*On fail goto*//*Label 732*/ 22805, // Rule ID 9925 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR32XRegClassID,
// (lrint:{ *:[i32] } FR32X:{ *:[f32] }:$src) => (VCVTSS2SIZrr:{ *:[i32] } FR32X:{ *:[f32] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VCVTSS2SIZrr,
GIR_AddImplicitUse, /*InsnID*/0, X86::MXCSR,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 9925,
GIR_Done,
// Label 732: @22805
GIM_Try, /*On fail goto*//*Label 733*/ 22831, // Rule ID 9929 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR32RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR64XRegClassID,
// (lrint:{ *:[i32] } FR64X:{ *:[f64] }:$src) => (VCVTSD2SIZrr:{ *:[i32] } FR64X:{ *:[f64] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VCVTSD2SIZrr,
GIR_AddImplicitUse, /*InsnID*/0, X86::MXCSR,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 9929,
GIR_Done,
// Label 733: @22831
GIM_Reject,
// Label 726: @22832
GIM_Try, /*On fail goto*//*Label 734*/ 22858, // Rule ID 16444 //
GIM_CheckFeatures, GIFBS_UseAVX,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR32RegClassID,
// (lrint:{ *:[i64] } FR32:{ *:[f32] }:$src) => (VCVTSS2SI64rr:{ *:[i64] } FR32:{ *:[f32] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VCVTSS2SI64rr,
GIR_AddImplicitUse, /*InsnID*/0, X86::MXCSR,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16444,
GIR_Done,
// Label 734: @22858
GIM_Try, /*On fail goto*//*Label 735*/ 22884, // Rule ID 16446 //
GIM_CheckFeatures, GIFBS_UseAVX,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR64RegClassID,
// (lrint:{ *:[i64] } FR64:{ *:[f64] }:$src) => (VCVTSD2SI64rr:{ *:[i64] } FR64:{ *:[f64] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VCVTSD2SI64rr,
GIR_AddImplicitUse, /*InsnID*/0, X86::MXCSR,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16446,
GIR_Done,
// Label 735: @22884
GIM_Try, /*On fail goto*//*Label 736*/ 22910, // Rule ID 16448 //
GIM_CheckFeatures, GIFBS_UseSSE1,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR32RegClassID,
// (lrint:{ *:[i64] } FR32:{ *:[f32] }:$src) => (CVTSS2SI64rr:{ *:[i64] } FR32:{ *:[f32] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::CVTSS2SI64rr,
GIR_AddImplicitUse, /*InsnID*/0, X86::MXCSR,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16448,
GIR_Done,
// Label 736: @22910
GIM_Try, /*On fail goto*//*Label 737*/ 22936, // Rule ID 16450 //
GIM_CheckFeatures, GIFBS_UseSSE2,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR64RegClassID,
// (lrint:{ *:[i64] } FR64:{ *:[f64] }:$src) => (CVTSD2SI64rr:{ *:[i64] } FR64:{ *:[f64] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::CVTSD2SI64rr,
GIR_AddImplicitUse, /*InsnID*/0, X86::MXCSR,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16450,
GIR_Done,
// Label 737: @22936
GIM_Try, /*On fail goto*//*Label 738*/ 22962, // Rule ID 19644 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR32RegClassID,
// (lrint:{ *:[i64] } FR32:{ *:[f32] }:$src) => (VCVTSS2SI64Zrr:{ *:[i64] } FR32:{ *:[f32] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VCVTSS2SI64Zrr,
GIR_AddImplicitUse, /*InsnID*/0, X86::MXCSR,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 19644,
GIR_Done,
// Label 738: @22962
GIM_Try, /*On fail goto*//*Label 739*/ 22988, // Rule ID 19646 //
GIM_CheckFeatures, GIFBS_HasAVX512,
GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::GR64RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/X86::FR64RegClassID,
// (lrint:{ *:[i64] } FR64:{ *:[f64] }:$src) => (VCVTSD2SI64Zrr:{ *:[i64] } FR64:{ *:[f64] }:$src)
GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/X86::VCVTSD2SI64Zrr,
GIR_AddImplicitUse, /*InsnID*/0, X86::MXCSR,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 19646,
GIR_Done,
// Label 739: @22988
GIM_Reject,
// Label 727: @22989
GIM_Reject,
// Label 9: @22990
GIM_Try, /*On fail goto*//*Label 740*/ 24252,
GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
GIM_Try, /*On fail goto*//*Label 741*/ 23035, // Rule ID 1261 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vphsubwd,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v4i32] } 11287:{ *:[iPTR] }, VR128:{ *:[v8i16] }:$src) => (VPHSUBWDrr:{ *:[v4i32] } VR128:{ *:[v8i16] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHSUBWDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1261,
GIR_Done,
// Label 741: @23035
GIM_Try, /*On fail goto*//*Label 742*/ 23075, // Rule ID 1263 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vphsubdq,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v2i64] } 11286:{ *:[iPTR] }, VR128:{ *:[v4i32] }:$src) => (VPHSUBDQrr:{ *:[v2i64] } VR128:{ *:[v4i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHSUBDQrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1263,
GIR_Done,
// Label 742: @23075
GIM_Try, /*On fail goto*//*Label 743*/ 23115, // Rule ID 1265 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vphsubbw,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v8i16] } 11285:{ *:[iPTR] }, VR128:{ *:[v16i8] }:$src) => (VPHSUBBWrr:{ *:[v8i16] } VR128:{ *:[v16i8] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHSUBBWrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1265,
GIR_Done,
// Label 743: @23115
GIM_Try, /*On fail goto*//*Label 744*/ 23155, // Rule ID 1267 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vphaddwq,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v2i64] } 11284:{ *:[iPTR] }, VR128:{ *:[v8i16] }:$src) => (VPHADDWQrr:{ *:[v2i64] } VR128:{ *:[v8i16] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHADDWQrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1267,
GIR_Done,
// Label 744: @23155
GIM_Try, /*On fail goto*//*Label 745*/ 23195, // Rule ID 1269 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vphaddwd,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v4i32] } 11283:{ *:[iPTR] }, VR128:{ *:[v8i16] }:$src) => (VPHADDWDrr:{ *:[v4i32] } VR128:{ *:[v8i16] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHADDWDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1269,
GIR_Done,
// Label 745: @23195
GIM_Try, /*On fail goto*//*Label 746*/ 23235, // Rule ID 1271 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vphadduwq,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v2i64] } 11282:{ *:[iPTR] }, VR128:{ *:[v8i16] }:$src) => (VPHADDUWQrr:{ *:[v2i64] } VR128:{ *:[v8i16] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHADDUWQrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1271,
GIR_Done,
// Label 746: @23235
GIM_Try, /*On fail goto*//*Label 747*/ 23275, // Rule ID 1273 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vphadduwd,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v4i32] } 11281:{ *:[iPTR] }, VR128:{ *:[v8i16] }:$src) => (VPHADDUWDrr:{ *:[v4i32] } VR128:{ *:[v8i16] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHADDUWDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1273,
GIR_Done,
// Label 747: @23275
GIM_Try, /*On fail goto*//*Label 748*/ 23315, // Rule ID 1275 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vphaddudq,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v2i64] } 11280:{ *:[iPTR] }, VR128:{ *:[v4i32] }:$src) => (VPHADDUDQrr:{ *:[v2i64] } VR128:{ *:[v4i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHADDUDQrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1275,
GIR_Done,
// Label 748: @23315
GIM_Try, /*On fail goto*//*Label 749*/ 23355, // Rule ID 1277 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vphaddubw,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v8i16] } 11279:{ *:[iPTR] }, VR128:{ *:[v16i8] }:$src) => (VPHADDUBWrr:{ *:[v8i16] } VR128:{ *:[v16i8] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHADDUBWrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1277,
GIR_Done,
// Label 749: @23355
GIM_Try, /*On fail goto*//*Label 750*/ 23395, // Rule ID 1279 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vphaddubq,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v2i64] } 11278:{ *:[iPTR] }, VR128:{ *:[v16i8] }:$src) => (VPHADDUBQrr:{ *:[v2i64] } VR128:{ *:[v16i8] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHADDUBQrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1279,
GIR_Done,
// Label 750: @23395
GIM_Try, /*On fail goto*//*Label 751*/ 23435, // Rule ID 1281 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vphaddubd,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v4i32] } 11277:{ *:[iPTR] }, VR128:{ *:[v16i8] }:$src) => (VPHADDUBDrr:{ *:[v4i32] } VR128:{ *:[v16i8] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHADDUBDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1281,
GIR_Done,
// Label 751: @23435
GIM_Try, /*On fail goto*//*Label 752*/ 23475, // Rule ID 1283 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vphadddq,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v2i64] } 11276:{ *:[iPTR] }, VR128:{ *:[v4i32] }:$src) => (VPHADDDQrr:{ *:[v2i64] } VR128:{ *:[v4i32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHADDDQrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1283,
GIR_Done,
// Label 752: @23475
GIM_Try, /*On fail goto*//*Label 753*/ 23515, // Rule ID 1285 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vphaddbw,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v8i16] } 11275:{ *:[iPTR] }, VR128:{ *:[v16i8] }:$src) => (VPHADDBWrr:{ *:[v8i16] } VR128:{ *:[v16i8] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHADDBWrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1285,
GIR_Done,
// Label 753: @23515
GIM_Try, /*On fail goto*//*Label 754*/ 23555, // Rule ID 1287 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vphaddbq,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v2i64] } 11274:{ *:[iPTR] }, VR128:{ *:[v16i8] }:$src) => (VPHADDBQrr:{ *:[v2i64] } VR128:{ *:[v16i8] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHADDBQrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1287,
GIR_Done,
// Label 754: @23555
GIM_Try, /*On fail goto*//*Label 755*/ 23595, // Rule ID 1289 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vphaddbd,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v4i32] } 11273:{ *:[iPTR] }, VR128:{ *:[v16i8] }:$src) => (VPHADDBDrr:{ *:[v4i32] } VR128:{ *:[v16i8] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHADDBDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1289,
GIR_Done,
// Label 755: @23595
GIM_Try, /*On fail goto*//*Label 756*/ 23635, // Rule ID 1291 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vfrcz_ss,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v4f32] } 11268:{ *:[iPTR] }, VR128:{ *:[v4f32] }:$src) => (VFRCZSSrr:{ *:[v4f32] } VR128:{ *:[v4f32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VFRCZSSrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1291,
GIR_Done,
// Label 756: @23635
GIM_Try, /*On fail goto*//*Label 757*/ 23675, // Rule ID 1295 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vfrcz_ps,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v4f32] } 11265:{ *:[iPTR] }, VR128:{ *:[v4f32] }:$src) => (VFRCZPSrr:{ *:[v4f32] } VR128:{ *:[v4f32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VFRCZPSrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1295,
GIR_Done,
// Label 757: @23675
GIM_Try, /*On fail goto*//*Label 758*/ 23715, // Rule ID 1297 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vfrcz_ps_256,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (intrinsic_wo_chain:{ *:[v8f32] } 11266:{ *:[iPTR] }, VR256:{ *:[v8f32] }:$src) => (VFRCZPSYrr:{ *:[v8f32] } VR256:{ *:[v8f32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VFRCZPSYrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1297,
GIR_Done,
// Label 758: @23715
GIM_Try, /*On fail goto*//*Label 759*/ 23755, // Rule ID 1299 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vfrcz_sd,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v2f64] } 11267:{ *:[iPTR] }, VR128:{ *:[v2f64] }:$src) => (VFRCZSDrr:{ *:[v2f64] } VR128:{ *:[v2f64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VFRCZSDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1299,
GIR_Done,
// Label 759: @23755
GIM_Try, /*On fail goto*//*Label 760*/ 23795, // Rule ID 1303 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vfrcz_pd,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v2f64] } 11263:{ *:[iPTR] }, VR128:{ *:[v2f64] }:$src) => (VFRCZPDrr:{ *:[v2f64] } VR128:{ *:[v2f64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VFRCZPDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1303,
GIR_Done,
// Label 760: @23795
GIM_Try, /*On fail goto*//*Label 761*/ 23835, // Rule ID 1305 //
GIM_CheckFeatures, GIFBS_HasXOP,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_xop_vfrcz_pd_256,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (intrinsic_wo_chain:{ *:[v4f64] } 11264:{ *:[iPTR] }, VR256:{ *:[v4f64] }:$src) => (VFRCZPDYrr:{ *:[v4f64] } VR256:{ *:[v4f64] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VFRCZPDYrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 1305,
GIR_Done,
// Label 761: @23835
GIM_Try, /*On fail goto*//*Label 762*/ 23875, // Rule ID 3047 //
GIM_CheckFeatures, GIFBS_HasAES_HasAVX,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_aesni_aesimc,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v2i64] } 9957:{ *:[iPTR] }, VR128:{ *:[v2i64] }:$src1) => (VAESIMCrr:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VAESIMCrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 3047,
GIR_Done,
// Label 762: @23875
GIM_Try, /*On fail goto*//*Label 763*/ 23915, // Rule ID 3049 //
GIM_CheckFeatures, GIFBS_HasAES_NoAVX,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_aesni_aesimc,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v2i64] } 9957:{ *:[iPTR] }, VR128:{ *:[v2i64] }:$src1) => (AESIMCrr:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::AESIMCrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 3049,
GIR_Done,
// Label 763: @23915
GIM_Try, /*On fail goto*//*Label 764*/ 23955, // Rule ID 3239 //
GIM_CheckFeatures, GIFBS_HasAVXNECONVERT,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_vcvtneps2bf16128,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v8bf16] } 11235:{ *:[iPTR] }, VR128:{ *:[v4f32] }:$src) => (VCVTNEPS2BF16rr:{ *:[v8bf16] } VR128:{ *:[v4f32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VCVTNEPS2BF16rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 3239,
GIR_Done,
// Label 764: @23955
GIM_Try, /*On fail goto*//*Label 765*/ 23995, // Rule ID 3241 //
GIM_CheckFeatures, GIFBS_HasAVXNECONVERT,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_vcvtneps2bf16256,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
// (intrinsic_wo_chain:{ *:[v8bf16] } 11236:{ *:[iPTR] }, VR256:{ *:[v8f32] }:$src) => (VCVTNEPS2BF16Yrr:{ *:[v8bf16] } VR256:{ *:[v8f32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VCVTNEPS2BF16Yrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 3241,
GIR_Done,
// Label 765: @23995
GIM_Try, /*On fail goto*//*Label 766*/ 24039, // Rule ID 16713 //
GIM_CheckFeatures, GIFBS_UseSSE1,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_sse_rsqrt_ss,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v4f32] } 11049:{ *:[iPTR] }, VR128:{ *:[v4f32] }:$src) => (RSQRTSSr_Int:{ *:[v4f32] } VR128:{ *:[v4f32] }:$src, VR128:{ *:[v4f32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::RSQRTSSr_Int,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16713,
GIR_Done,
// Label 766: @24039
GIM_Try, /*On fail goto*//*Label 767*/ 24083, // Rule ID 16717 //
GIM_CheckFeatures, GIFBS_HasAVX,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_sse_rsqrt_ss,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v4f32] } 11049:{ *:[iPTR] }, VR128:{ *:[v4f32] }:$src) => (VRSQRTSSr_Int:{ *:[v4f32] } VR128:{ *:[v4f32] }:$src, VR128:{ *:[v4f32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VRSQRTSSr_Int,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16717,
GIR_Done,
// Label 767: @24083
GIM_Try, /*On fail goto*//*Label 768*/ 24127, // Rule ID 16733 //
GIM_CheckFeatures, GIFBS_UseSSE1,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_sse_rcp_ss,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v4f32] } 11047:{ *:[iPTR] }, VR128:{ *:[v4f32] }:$src) => (RCPSSr_Int:{ *:[v4f32] } VR128:{ *:[v4f32] }:$src, VR128:{ *:[v4f32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::RCPSSr_Int,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16733,
GIR_Done,
// Label 768: @24127
GIM_Try, /*On fail goto*//*Label 769*/ 24171, // Rule ID 16737 //
GIM_CheckFeatures, GIFBS_HasAVX,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_sse_rcp_ss,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v4f32] } 11047:{ *:[iPTR] }, VR128:{ *:[v4f32] }:$src) => (VRCPSSr_Int:{ *:[v4f32] } VR128:{ *:[v4f32] }:$src, VR128:{ *:[v4f32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VRCPSSr_Int,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 16737,
GIR_Done,
// Label 769: @24171
GIM_Try, /*On fail goto*//*Label 770*/ 24211, // Rule ID 20550 //
GIM_CheckFeatures, GIFBS_HasBF16_HasVLX,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_vcvtneps2bf16128,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128XRegClassID,
// (intrinsic_wo_chain:{ *:[v8bf16] } 11235:{ *:[iPTR] }, VR128X:{ *:[v4f32] }:$src) => (VCVTNEPS2BF16Z128rr:{ *:[v8bf16] } VR128X:{ *:[v4f32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VCVTNEPS2BF16Z128rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20550,
GIR_Done,
// Label 770: @24211
GIM_Try, /*On fail goto*//*Label 771*/ 24251, // Rule ID 20552 //
GIM_CheckFeatures, GIFBS_HasBF16_HasVLX,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_vcvtneps2bf16256,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128XRegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256XRegClassID,
// (intrinsic_wo_chain:{ *:[v8bf16] } 11236:{ *:[iPTR] }, VR256X:{ *:[v8f32] }:$src) => (VCVTNEPS2BF16Z256rr:{ *:[v8bf16] } VR256X:{ *:[v8f32] }:$src)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VCVTNEPS2BF16Z256rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 20552,
GIR_Done,
// Label 771: @24251
GIM_Reject,
// Label 740: @24252
GIM_Try, /*On fail goto*//*Label 772*/ 26952,
GIM_CheckNumOperands, /*MI*/0, /*Expected*/4,
GIM_Try, /*On fail goto*//*Label 773*/ 24304, // Rule ID 3051 //
GIM_CheckFeatures, GIFBS_HasAES_HasAVX,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_aesni_aeskeygenassist,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// MIs[0] src2
GIM_CheckIsImm, /*MI*/0, /*Op*/3,
// (intrinsic_wo_chain:{ *:[v2i64] } 9958:{ *:[iPTR] }, VR128:{ *:[v2i64] }:$src1, (timm:{ *:[i8] }):$src2) => (VAESKEYGENASSIST128rr:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, (timm:{ *:[i8] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VAESKEYGENASSIST128rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/3, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 3051,
GIR_Done,
// Label 773: @24304
GIM_Try, /*On fail goto*//*Label 774*/ 24351, // Rule ID 3053 //
GIM_CheckFeatures, GIFBS_HasAES_NoAVX,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_aesni_aeskeygenassist,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s64,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s64,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
// MIs[0] src2
GIM_CheckIsImm, /*MI*/0, /*Op*/3,
// (intrinsic_wo_chain:{ *:[v2i64] } 9958:{ *:[iPTR] }, VR128:{ *:[v2i64] }:$src1, (timm:{ *:[i8] }):$src2) => (AESKEYGENASSIST128rr:{ *:[v2i64] } VR128:{ *:[v2i64] }:$src1, (timm:{ *:[i8] }):$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::AESKEYGENASSIST128rr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/3, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 3053,
GIR_Done,
// Label 774: @24351
GIM_Try, /*On fail goto*//*Label 775*/ 24403, // Rule ID 2714 //
GIM_CheckFeatures, GIFBS_HasAVX,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_ssse3_psign_b_128,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v16s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
GIM_CheckType, /*MI*/0, /*Op*/3, /*Type*/GILLT_v16s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/3, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v16i8] } 11187:{ *:[iPTR] }, VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2) => (VPSIGNBrr:{ *:[v16i8] } VR128:{ *:[v16i8] }:$src1, VR128:{ *:[v16i8] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPSIGNBrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/3, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2714,
GIR_Done,
// Label 775: @24403
GIM_Try, /*On fail goto*//*Label 776*/ 24455, // Rule ID 2716 //
GIM_CheckFeatures, GIFBS_HasAVX,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_ssse3_psign_w_128,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/3, /*Type*/GILLT_v8s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/3, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v8i16] } 11191:{ *:[iPTR] }, VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2) => (VPSIGNWrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPSIGNWrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/3, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2716,
GIR_Done,
// Label 776: @24455
GIM_Try, /*On fail goto*//*Label 777*/ 24507, // Rule ID 2718 //
GIM_CheckFeatures, GIFBS_HasAVX,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_ssse3_psign_d_128,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
GIM_CheckType, /*MI*/0, /*Op*/3, /*Type*/GILLT_v4s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/3, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v4i32] } 11189:{ *:[iPTR] }, VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2) => (VPSIGNDrr:{ *:[v4i32] } VR128:{ *:[v4i32] }:$src1, VR128:{ *:[v4i32] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPSIGNDrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/3, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2718,
GIR_Done,
// Label 777: @24507
GIM_Try, /*On fail goto*//*Label 778*/ 24559, // Rule ID 2720 //
GIM_CheckFeatures, GIFBS_HasAVX,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_ssse3_phadd_sw_128,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/3, /*Type*/GILLT_v8s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/3, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v8i16] } 11171:{ *:[iPTR] }, VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2) => (VPHADDSWrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHADDSWrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/3, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2720,
GIR_Done,
// Label 778: @24559
GIM_Try, /*On fail goto*//*Label 779*/ 24611, // Rule ID 2722 //
GIM_CheckFeatures, GIFBS_HasAVX,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_ssse3_phsub_sw_128,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
GIM_CheckType, /*MI*/0, /*Op*/3, /*Type*/GILLT_v8s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR128RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/3, /*RC*/X86::VR128RegClassID,
// (intrinsic_wo_chain:{ *:[v8i16] } 11177:{ *:[iPTR] }, VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2) => (VPHSUBSWrr:{ *:[v8i16] } VR128:{ *:[v8i16] }:$src1, VR128:{ *:[v8i16] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHSUBSWrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/3, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2722,
GIR_Done,
// Label 779: @24611
GIM_Try, /*On fail goto*//*Label 780*/ 24663, // Rule ID 2738 //
GIM_CheckFeatures, GIFBS_HasAVX2,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_avx2_psign_b,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v32s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v32s8,
GIM_CheckType, /*MI*/0, /*Op*/3, /*Type*/GILLT_v32s8,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/3, /*RC*/X86::VR256RegClassID,
// (intrinsic_wo_chain:{ *:[v32i8] } 10076:{ *:[iPTR] }, VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2) => (VPSIGNBYrr:{ *:[v32i8] } VR256:{ *:[v32i8] }:$src1, VR256:{ *:[v32i8] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPSIGNBYrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/3, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2738,
GIR_Done,
// Label 780: @24663
GIM_Try, /*On fail goto*//*Label 781*/ 24715, // Rule ID 2740 //
GIM_CheckFeatures, GIFBS_HasAVX2,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_avx2_psign_w,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v16s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s16,
GIM_CheckType, /*MI*/0, /*Op*/3, /*Type*/GILLT_v16s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/3, /*RC*/X86::VR256RegClassID,
// (intrinsic_wo_chain:{ *:[v16i16] } 10078:{ *:[iPTR] }, VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2) => (VPSIGNWYrr:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPSIGNWYrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/3, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2740,
GIR_Done,
// Label 781: @24715
GIM_Try, /*On fail goto*//*Label 782*/ 24767, // Rule ID 2742 //
GIM_CheckFeatures, GIFBS_HasAVX2,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_avx2_psign_d,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s32,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s32,
GIM_CheckType, /*MI*/0, /*Op*/3, /*Type*/GILLT_v8s32,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/3, /*RC*/X86::VR256RegClassID,
// (intrinsic_wo_chain:{ *:[v8i32] } 10077:{ *:[iPTR] }, VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2) => (VPSIGNDYrr:{ *:[v8i32] } VR256:{ *:[v8i32] }:$src1, VR256:{ *:[v8i32] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPSIGNDYrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/3, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2742,
GIR_Done,
// Label 782: @24767
GIM_Try, /*On fail goto*//*Label 783*/ 24819, // Rule ID 2744 //
GIM_CheckFeatures, GIFBS_HasAVX2,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_avx2_phadd_sw,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v16s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s16,
GIM_CheckType, /*MI*/0, /*Op*/3, /*Type*/GILLT_v16s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/3, /*RC*/X86::VR256RegClassID,
// (intrinsic_wo_chain:{ *:[v16i16] } 10063:{ *:[iPTR] }, VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2) => (VPHADDSWYrr:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHADDSWYrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/3, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2744,
GIR_Done,
// Label 783: @24819
GIM_Try, /*On fail goto*//*Label 784*/ 24871, // Rule ID 2746 //
GIM_CheckFeatures, GIFBS_HasAVX2,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_avx2_phsub_sw,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v16s16,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s16,
GIM_CheckType, /*MI*/0, /*Op*/3, /*Type*/GILLT_v16s16,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/X86::VR256RegClassID,
GIM_CheckRegBankForClass, /*MI*/0, /*Op*/3, /*RC*/X86::VR256RegClassID,
// (intrinsic_wo_chain:{ *:[v16i16] } 10066:{ *:[iPTR] }, VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2) => (VPHSUBSWYrr:{ *:[v16i16] } VR256:{ *:[v16i16] }:$src1, VR256:{ *:[v16i16] }:$src2)
GIR_BuildMI, /*InsnID*/0, /*Opcode*/X86::VPHSUBSWYrr,
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/3, // src2
GIR_EraseFromParent, /*InsnID*/0,
GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
// GIR_Coverage, 2746,
GIR_Done,
// Label 784: @24871
GIM_Try, /*On fail goto*//*Label 785*/ 24923, // Rule ID 2756 //
GIM_CheckFeatures, GIFBS_UseSSSE3,
GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::x86_ssse3_psign_b_128,
GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v16s8,
GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
GIM_CheckType, /*MI*/0, /*Op*/3, /*Type*/GILLT_v16s8,