blob: d0f8a818bbfe28c6bf99cd3c9a38f877935549f5 [file] [log] [blame]
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|* *|
|* DAG Instruction Selector for the LoongArch target *|
|* *|
|* Automatically generated file, do not edit! *|
|* *|
\*===----------------------------------------------------------------------===*/
// *** NOTE: This file is #included into the middle of the target
// *** instruction selector class. These functions are really methods.
// If GET_DAGISEL_DECL is #defined with any value, only function
// declarations will be included when this file is included.
// If GET_DAGISEL_BODY is #defined, its value should be the name of
// the instruction selector class. Function bodies will be emitted
// and each function's name will be qualified with the name of the
// class.
//
// When neither of the GET_DAGISEL* macros is defined, the functions
// are emitted inline.
#if defined(GET_DAGISEL_DECL) && defined(GET_DAGISEL_BODY)
#error GET_DAGISEL_DECL and GET_DAGISEL_BODY cannot be both defined, undef both for inline definitions
#endif
#ifdef GET_DAGISEL_BODY
#define LOCAL_DAGISEL_STRINGIZE(X) LOCAL_DAGISEL_STRINGIZE_(X)
#define LOCAL_DAGISEL_STRINGIZE_(X) #X
static_assert(sizeof(LOCAL_DAGISEL_STRINGIZE(GET_DAGISEL_BODY)) > 1,
"GET_DAGISEL_BODY is empty: it should be defined with the class name");
#undef LOCAL_DAGISEL_STRINGIZE_
#undef LOCAL_DAGISEL_STRINGIZE
#endif
#if !defined(GET_DAGISEL_DECL) && !defined(GET_DAGISEL_BODY)
#define DAGISEL_INLINE 1
#else
#define DAGISEL_INLINE 0
#endif
#if !DAGISEL_INLINE
#define DAGISEL_CLASS_COLONCOLON GET_DAGISEL_BODY ::
#else
#define DAGISEL_CLASS_COLONCOLON
#endif
#ifdef GET_DAGISEL_DECL
void SelectCode(SDNode *N);
#endif
#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
void DAGISEL_CLASS_COLONCOLON SelectCode(SDNode *N)
{
// Some target values are emitted as 2 bytes, TARGET_VAL handles
// this.
#define TARGET_VAL(X) X & 255, unsigned(X) >> 8
static const unsigned char MatcherTable[] = {
OPC_SwitchOpcode , 127, TARGET_VAL(ISD::MUL),
OPC_Scope, 67,
OPC_MoveChild0,
OPC_SwitchOpcode , 32, TARGET_VAL(LoongArchISD::BSTRPICK),
OPC_RecordChild0,
OPC_CheckChild1Integer, 62,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckChild2Integer, 0,
OPC_MoveParent,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(LoongArchISD::BSTRPICK),
OPC_RecordChild0,
OPC_CheckChild1Integer, 62,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckChild2Integer, 0,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULW_D_WU), 0,
MVT::i64, 2, 0, 1,
26, TARGET_VAL(ISD::SIGN_EXTEND_INREG),
OPC_RecordChild0,
OPC_MoveChild1,
OPC_CheckValueType, MVT::i32,
OPC_MoveParent,
OPC_MoveParent,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::SIGN_EXTEND_INREG),
OPC_RecordChild0,
OPC_MoveChild1,
OPC_CheckValueType, MVT::i32,
OPC_MoveParent,
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULW_D_W), 0,
MVT::i64, 2, 0, 1,
0,
56,
OPC_RecordChild0,
OPC_RecordChild1,
OPC_SwitchType , 24, MVT::i64,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MUL_W), 0,
MVT::i64, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MUL_D), 0,
MVT::i64, 2, 0, 1,
0,
24, MVT::i32,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MUL_W), 0,
MVT::i32, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MUL_D), 0,
MVT::i32, 2, 0, 1,
0,
0,
0,
23|128,2, TARGET_VAL(LoongArchISD::BSTRPICK),
OPC_Scope, 15|128,1,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::ADD),
OPC_Scope, 67,
OPC_RecordChild0,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 0,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_MoveParent,
OPC_MoveParent,
OPC_CheckChild1Integer, 62,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckChild2Integer, 0,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_WU), 0,
MVT::i64, 3, 1, 0, 3,
24, MVT::i32,
OPC_MoveParent,
OPC_MoveParent,
OPC_MoveParent,
OPC_CheckChild1Integer, 62,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckChild2Integer, 0,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_WU), 0,
MVT::i32, 3, 1, 0, 3,
0,
68,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 0,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_MoveParent,
OPC_RecordChild1,
OPC_MoveParent,
OPC_CheckChild1Integer, 62,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckChild2Integer, 0,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_WU), 0,
MVT::i64, 3, 0, 2, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_MoveParent,
OPC_RecordChild1,
OPC_MoveParent,
OPC_CheckChild1Integer, 62,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckChild2Integer, 0,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_WU), 0,
MVT::i32, 3, 0, 2, 3,
0,
0,
2|128,1,
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_Scope, 60,
OPC_CheckPredicate, 1,
OPC_SwitchType , 26, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 1,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 1,
OPC_EmitConvertToTarget, 1,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRPICK_W), 0,
MVT::i64, 3, 0, 3, 4,
26, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 1,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 2,
OPC_EmitConvertToTarget, 1,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRPICK_W), 0,
MVT::i32, 3, 0, 3, 4,
0,
60,
OPC_CheckPredicate, 2,
OPC_SwitchType , 26, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 2,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 1,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRPICK_D), 0,
MVT::i64, 3, 0, 3, 4,
26, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 2,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_EmitConvertToTarget, 1,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRPICK_D), 0,
MVT::i32, 3, 0, 3, 4,
0,
0,
0,
36|128,17, TARGET_VAL(ISD::LOAD),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_Scope, 54|128,10,
OPC_MoveChild1,
OPC_SwitchOpcode , 89|128,6, TARGET_VAL(ISD::ADD),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_Scope, 80|128,3,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_Scope, 17|128,3,
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_SwitchType , 107|128,1, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 5,
OPC_CheckType, MVT::i64,
OPC_Scope, 20,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
20,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
20,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
20,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
18,
OPC_CheckPredicate, 10,
OPC_CheckPatternPredicate, 1,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
42,
OPC_CheckPredicate, 11,
OPC_Scope, 18,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_BU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
18,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_HU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
0,
20,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
20,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
20,
OPC_CheckPredicate, 11,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_WU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
18,
OPC_CheckPredicate, 10,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
0,
25|128,1, MVT::i32,
OPC_MoveParent,
OPC_CheckPredicate, 5,
OPC_CheckType, MVT::i32,
OPC_Scope, 20,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
20,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
20,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
20,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
18,
OPC_CheckPredicate, 10,
OPC_CheckPatternPredicate, 2,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
42,
OPC_CheckPredicate, 11,
OPC_Scope, 18,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_BU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
18,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_HU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
0,
0,
0,
54,
OPC_CheckPredicate, 13,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_CheckType, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 5,
OPC_CheckType, MVT::i64,
OPC_Scope, 20,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDPTR_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
18,
OPC_CheckPredicate, 10,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDPTR_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
0,
0,
1|128,3,
OPC_CheckType, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 5,
OPC_CheckType, MVT::i64,
OPC_Scope, 18,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 2,
18,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 2,
18,
OPC_CheckPredicate, 11,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_BU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 2,
18,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 2,
18,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 2,
18,
OPC_CheckPredicate, 11,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_HU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 2,
18,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 2,
18,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 2,
18,
OPC_CheckPredicate, 11,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_WU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 2,
16,
OPC_CheckPredicate, 10,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 2,
18,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 1,
18,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 1,
18,
OPC_CheckPredicate, 11,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_BU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 1,
18,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 1,
18,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 1,
18,
OPC_CheckPredicate, 11,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_HU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 1,
18,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 1,
18,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 1,
18,
OPC_CheckPredicate, 11,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_WU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 1,
16,
OPC_CheckPredicate, 10,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 1,
0,
0,
82|128,3, TARGET_VAL(ISD::OR),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_Scope, 17|128,3,
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_SwitchType , 107|128,1, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 5,
OPC_CheckType, MVT::i64,
OPC_Scope, 20,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
20,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
20,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
20,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
18,
OPC_CheckPredicate, 10,
OPC_CheckPatternPredicate, 1,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
42,
OPC_CheckPredicate, 11,
OPC_Scope, 18,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_BU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
18,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_HU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
0,
20,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
20,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
20,
OPC_CheckPredicate, 11,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_WU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
18,
OPC_CheckPredicate, 10,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
0,
25|128,1, MVT::i32,
OPC_MoveParent,
OPC_CheckPredicate, 5,
OPC_CheckType, MVT::i32,
OPC_Scope, 20,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
20,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
20,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
20,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
18,
OPC_CheckPredicate, 10,
OPC_CheckPatternPredicate, 2,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
42,
OPC_CheckPredicate, 11,
OPC_Scope, 18,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_BU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
18,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_HU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
0,
0,
0,
54,
OPC_CheckPredicate, 13,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_CheckType, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 5,
OPC_CheckType, MVT::i64,
OPC_Scope, 20,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDPTR_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
18,
OPC_CheckPredicate, 10,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDPTR_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
0,
0,
0,
29|128,3,
OPC_RecordChild1,
OPC_CheckPredicate, 5,
OPC_Scope, 44,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 7,
OPC_SwitchType , 17, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 3,
17, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 3,
0,
44,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 7,
OPC_SwitchType , 17, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 3,
17, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 3,
0,
44,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 9,
OPC_SwitchType , 17, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 3,
17, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 3,
0,
44,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 9,
OPC_SwitchType , 17, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 3,
17, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 3,
0,
42,
OPC_CheckPredicate, 10,
OPC_SwitchType , 17, MVT::i64,
OPC_CheckPatternPredicate, 1,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 3,
17, MVT::i32,
OPC_CheckPatternPredicate, 2,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 3,
0,
90,
OPC_CheckPredicate, 11,
OPC_Scope, 42,
OPC_CheckPredicate, 7,
OPC_SwitchType , 17, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_BU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 3,
17, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_BU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 3,
0,
42,
OPC_CheckPredicate, 9,
OPC_SwitchType , 17, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_HU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 3,
17, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_HU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 3,
0,
0,
23,
OPC_CheckPredicate, 6,
OPC_CheckPredicate, 12,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 3,
23,
OPC_CheckPredicate, 8,
OPC_CheckPredicate, 12,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 3,
23,
OPC_CheckPredicate, 11,
OPC_CheckPredicate, 12,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_WU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 3,
21,
OPC_CheckPredicate, 10,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 3,
0,
111|128,2,
OPC_MoveChild1,
OPC_SwitchOpcode , 126|128,1, TARGET_VAL(ISD::ADD),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_Scope, 101,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_SwitchType , 43, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 5,
OPC_CheckPredicate, 10,
OPC_SwitchType , 16, MVT::f32,
OPC_CheckPatternPredicate, 6,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_S), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f32, 2, 3, 4,
16, MVT::f64,
OPC_CheckPatternPredicate, 7,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f64, 2, 3, 4,
0,
43, MVT::i32,
OPC_MoveParent,
OPC_CheckPredicate, 5,
OPC_CheckPredicate, 10,
OPC_SwitchType , 16, MVT::f32,
OPC_CheckPatternPredicate, 8,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_S), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f32, 2, 3, 4,
16, MVT::f64,
OPC_CheckPatternPredicate, 9,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f64, 2, 3, 4,
0,
0,
73,
OPC_CheckType, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 5,
OPC_CheckPredicate, 10,
OPC_SwitchType , 30, MVT::f32,
OPC_CheckPatternPredicate, 6,
OPC_Scope, 12,
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_S), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f32, 2, 3, 2,
12,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_S), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f32, 2, 3, 1,
0,
30, MVT::f64,
OPC_CheckPatternPredicate, 7,
OPC_Scope, 12,
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f64, 2, 3, 2,
12,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f64, 2, 3, 1,
0,
0,
73,
OPC_CheckType, MVT::i32,
OPC_MoveParent,
OPC_CheckPredicate, 5,
OPC_CheckPredicate, 10,
OPC_SwitchType , 30, MVT::f32,
OPC_CheckPatternPredicate, 8,
OPC_Scope, 12,
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_S), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f32, 2, 3, 2,
12,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_S), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f32, 2, 3, 1,
0,
30, MVT::f64,
OPC_CheckPatternPredicate, 9,
OPC_Scope, 12,
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f64, 2, 3, 2,
12,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f64, 2, 3, 1,
0,
0,
0,
103, TARGET_VAL(ISD::OR),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_SwitchType , 43, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 5,
OPC_CheckPredicate, 10,
OPC_SwitchType , 16, MVT::f32,
OPC_CheckPatternPredicate, 6,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_S), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f32, 2, 3, 4,
16, MVT::f64,
OPC_CheckPatternPredicate, 7,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f64, 2, 3, 4,
0,
43, MVT::i32,
OPC_MoveParent,
OPC_CheckPredicate, 5,
OPC_CheckPredicate, 10,
OPC_SwitchType , 16, MVT::f32,
OPC_CheckPatternPredicate, 8,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_S), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f32, 2, 3, 4,
16, MVT::f64,
OPC_CheckPatternPredicate, 9,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f64, 2, 3, 4,
0,
0,
0,
87,
OPC_RecordChild1,
OPC_CheckPredicate, 5,
OPC_CheckPredicate, 10,
OPC_SwitchType , 38, MVT::f32,
OPC_Scope, 17,
OPC_CheckPatternPredicate, 6,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_S), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f32, 2, 2, 3,
17,
OPC_CheckPatternPredicate, 8,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_S), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f32, 2, 2, 3,
0,
38, MVT::f64,
OPC_Scope, 17,
OPC_CheckPatternPredicate, 7,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f64, 2, 2, 3,
17,
OPC_CheckPatternPredicate, 9,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::f64, 2, 2, 3,
0,
0,
0,
70|128,10, TARGET_VAL(ISD::STORE),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_RecordChild1,
OPC_Scope, 65|128,4,
OPC_CheckChild1Type, MVT::i64,
OPC_Scope, 96|128,3,
OPC_MoveChild2,
OPC_SwitchOpcode , 58|128,2, TARGET_VAL(ISD::ADD),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_Scope, 25|128,1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_Scope, 93,
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_CheckType, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_Scope, 61,
OPC_CheckPredicate, 15,
OPC_Scope, 18,
OPC_CheckPredicate, 16,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
18,
OPC_CheckPredicate, 17,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
18,
OPC_CheckPredicate, 18,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
0,
18,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
0,
52,
OPC_CheckPredicate, 13,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_CheckType, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_Scope, 20,
OPC_CheckPredicate, 15,
OPC_CheckPredicate, 18,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STPTR_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
18,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STPTR_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
0,
0,
25|128,1,
OPC_CheckType, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_Scope, 55,
OPC_CheckPredicate, 15,
OPC_Scope, 16,
OPC_CheckPredicate, 16,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_B), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 3,
16,
OPC_CheckPredicate, 17,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_H), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 3,
16,
OPC_CheckPredicate, 18,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 3,
0,
16,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 3,
55,
OPC_CheckPredicate, 15,
OPC_Scope, 16,
OPC_CheckPredicate, 16,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_B), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 2,
16,
OPC_CheckPredicate, 17,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_H), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 2,
16,
OPC_CheckPredicate, 18,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 2,
0,
16,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/1, /*#*/3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 2,
0,
0,
27|128,1, TARGET_VAL(ISD::OR),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_Scope, 93,
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_CheckType, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_Scope, 61,
OPC_CheckPredicate, 15,
OPC_Scope, 18,
OPC_CheckPredicate, 16,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
18,
OPC_CheckPredicate, 17,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
18,
OPC_CheckPredicate, 18,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
0,
18,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
0,
52,
OPC_CheckPredicate, 13,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_CheckType, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_Scope, 20,
OPC_CheckPredicate, 15,
OPC_CheckPredicate, 18,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STPTR_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
18,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STPTR_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
0,
0,
0,
90,
OPC_RecordChild2,
OPC_CheckPredicate, 14,
OPC_Scope, 64,
OPC_CheckPredicate, 15,
OPC_Scope, 19,
OPC_CheckPredicate, 16,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 3, 4,
19,
OPC_CheckPredicate, 17,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 3, 4,
19,
OPC_CheckPredicate, 18,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 3, 4,
0,
19,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 3, 4,
0,
0,
118|128,1,
OPC_CheckChild1Type, MVT::i32,
OPC_Scope, 41|128,1,
OPC_MoveChild2,
OPC_SwitchOpcode , 80, TARGET_VAL(ISD::ADD),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_CheckType, MVT::i32,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_Scope, 42,
OPC_CheckPredicate, 15,
OPC_Scope, 18,
OPC_CheckPredicate, 16,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
18,
OPC_CheckPredicate, 17,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
0,
18,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 2,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
0,
80, TARGET_VAL(ISD::OR),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_CheckType, MVT::i32,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_Scope, 42,
OPC_CheckPredicate, 15,
OPC_Scope, 18,
OPC_CheckPredicate, 16,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
18,
OPC_CheckPredicate, 17,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
0,
18,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 2,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
0,
0,
70,
OPC_RecordChild2,
OPC_CheckPredicate, 14,
OPC_Scope, 44,
OPC_CheckPredicate, 15,
OPC_Scope, 19,
OPC_CheckPredicate, 16,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 3, 4,
19,
OPC_CheckPredicate, 17,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 3, 4,
0,
19,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 2,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 3, 4,
0,
0,
1|128,2,
OPC_CheckChild1Type, MVT::f32,
OPC_Scope, 79|128,1,
OPC_MoveChild2,
OPC_SwitchOpcode , 10|128,1, TARGET_VAL(ISD::ADD),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_Scope, 57,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_SwitchType , 21, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 6,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_S), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
21, MVT::i32,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 8,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_S), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
0,
37,
OPC_CheckType, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 6,
OPC_Scope, 12,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_S), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 3,
12,
OPC_CheckComplexPat, /*CP*/1, /*#*/3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_S), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 2,
0,
37,
OPC_CheckType, MVT::i32,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 8,
OPC_Scope, 12,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_S), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 3,
12,
OPC_CheckComplexPat, /*CP*/1, /*#*/3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_S), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 2,
0,
0,
59, TARGET_VAL(ISD::OR),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_SwitchType , 21, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 6,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_S), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
21, MVT::i32,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 8,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_S), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
0,
0,
43,
OPC_RecordChild2,
OPC_CheckPredicate, 14,
OPC_CheckPredicate, 19,
OPC_Scope, 17,
OPC_CheckPatternPredicate, 6,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_S), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 3, 4,
17,
OPC_CheckPatternPredicate, 8,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_S), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 3, 4,
0,
0,
1|128,2,
OPC_CheckChild1Type, MVT::f64,
OPC_Scope, 79|128,1,
OPC_MoveChild2,
OPC_SwitchOpcode , 10|128,1, TARGET_VAL(ISD::ADD),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_Scope, 57,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_SwitchType , 21, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 7,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
21, MVT::i32,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 9,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
0,
37,
OPC_CheckType, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 7,
OPC_Scope, 12,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 3,
12,
OPC_CheckComplexPat, /*CP*/1, /*#*/3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 2,
0,
37,
OPC_CheckType, MVT::i32,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 9,
OPC_Scope, 12,
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 3,
12,
OPC_CheckComplexPat, /*CP*/1, /*#*/3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 2,
0,
0,
59, TARGET_VAL(ISD::OR),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_SwitchType , 21, MVT::i64,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 7,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
21, MVT::i32,
OPC_MoveParent,
OPC_CheckPredicate, 14,
OPC_CheckPredicate, 19,
OPC_CheckPatternPredicate, 9,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 4, 5,
0,
0,
43,
OPC_RecordChild2,
OPC_CheckPredicate, 14,
OPC_CheckPredicate, 19,
OPC_Scope, 17,
OPC_CheckPatternPredicate, 7,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 3, 4,
17,
OPC_CheckPatternPredicate, 9,
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 1, 3, 4,
0,
0,
0,
40|128,4, TARGET_VAL(ISD::ATOMIC_LOAD),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_Scope, 113|128,2,
OPC_MoveChild1,
OPC_SwitchOpcode , 51|128,1, TARGET_VAL(ISD::ADD),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_SwitchType , 81, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_Scope, 18,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
18,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
18,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
18,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
0,
81, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_Scope, 18,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
18,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
18,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
18,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 3,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
0,
0,
51|128,1, TARGET_VAL(ISD::OR),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_SwitchType , 81, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_Scope, 18,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
18,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
18,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
18,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 3, 4,
0,
81, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_Scope, 18,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
18,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
18,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
18,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 3,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 3, 4,
0,
0,
0,
47|128,1,
OPC_RecordChild1,
OPC_Scope, 42,
OPC_CheckPredicate, 7,
OPC_SwitchType , 17, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 3,
17, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 3,
0,
42,
OPC_CheckPredicate, 9,
OPC_SwitchType , 17, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 3,
17, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 3,
0,
42,
OPC_CheckPredicate, 12,
OPC_SwitchType , 17, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 3,
17, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 3,
0,
42,
OPC_CheckPredicate, 20,
OPC_SwitchType , 17, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 3,
17, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 3,
0,
0,
0,
87|128,4, TARGET_VAL(ISD::ATOMIC_STORE),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_Scope, 91|128,2,
OPC_MoveChild1,
OPC_SwitchOpcode , 40|128,1, TARGET_VAL(ISD::ADD),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_SwitchType , 86, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i64,
OPC_Scope, 18,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
3, 3, 4, 5,
18,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
3, 3, 4, 5,
20,
OPC_CheckPredicate, 12,
OPC_CheckPredicate, 21,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 3, 4, 5,
20,
OPC_CheckPredicate, 20,
OPC_CheckPredicate, 21,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 3, 4, 5,
0,
65, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i32,
OPC_Scope, 18,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
3, 3, 4, 5,
18,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
3, 3, 4, 5,
20,
OPC_CheckPredicate, 12,
OPC_CheckPredicate, 21,
OPC_CheckPatternPredicate, 2,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 3, 4, 5,
0,
0,
40|128,1, TARGET_VAL(ISD::OR),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_SwitchType , 86, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i64,
OPC_Scope, 18,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
3, 3, 4, 5,
18,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
3, 3, 4, 5,
20,
OPC_CheckPredicate, 12,
OPC_CheckPredicate, 21,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 3, 4, 5,
20,
OPC_CheckPredicate, 20,
OPC_CheckPredicate, 21,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 3, 4, 5,
0,
65, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i32,
OPC_Scope, 18,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
3, 3, 4, 5,
18,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
3, 3, 4, 5,
20,
OPC_CheckPredicate, 12,
OPC_CheckPredicate, 21,
OPC_CheckPatternPredicate, 2,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 3, 4, 5,
0,
0,
0,
116|128,1,
OPC_RecordChild1,
OPC_Scope, 31|128,1,
OPC_RecordChild2,
OPC_Scope, 88,
OPC_CheckChild2Type, MVT::i64,
OPC_Scope, 19,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
3, 2, 3, 4,
19,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 4,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
3, 2, 3, 4,
21,
OPC_CheckPredicate, 12,
OPC_CheckPredicate, 21,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 2, 3, 4,
21,
OPC_CheckPredicate, 20,
OPC_CheckPredicate, 21,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_D), 0|OPFL_Chain|OPFL_MemRefs,
3, 2, 3, 4,
0,
66,
OPC_CheckChild2Type, MVT::i32,
OPC_Scope, 19,
OPC_CheckPredicate, 7,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
3, 2, 3, 4,
19,
OPC_CheckPredicate, 9,
OPC_CheckPatternPredicate, 5,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
3, 2, 3, 4,
21,
OPC_CheckPredicate, 12,
OPC_CheckPredicate, 21,
OPC_CheckPatternPredicate, 2,
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
3, 2, 3, 4,
0,
0,
39,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i64,
OPC_Scope, 15,
OPC_CheckPredicate, 12,
OPC_CheckPredicate, 22,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::PseudoAtomicStoreW), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 1, 2,
15,
OPC_CheckPredicate, 20,
OPC_CheckPredicate, 22,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::PseudoAtomicStoreD), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 1, 2,
0,
39,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i32,
OPC_Scope, 15,
OPC_CheckPredicate, 12,
OPC_CheckPredicate, 22,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::PseudoAtomicStoreW), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 1, 2,
15,
OPC_CheckPredicate, 20,
OPC_CheckPredicate, 22,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::PseudoAtomicStoreD), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 1, 2,
0,
0,
0,
104|128,2, TARGET_VAL(ISD::ADD),
OPC_Scope, 9|128,1,
OPC_RecordChild0,
OPC_Scope, 46,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_SwitchType , 15, MVT::i32,
OPC_CheckPatternPredicate, 2,
OPC_CheckComplexPat, /*CP*/0, /*#*/0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_W), 0,
MVT::i32, 2, 2, 3,
15, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_D), 0,
MVT::i64, 2, 2, 3,
0,
86,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 0,
OPC_SwitchType , 34, MVT::i64,
OPC_MoveParent,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_Scope, 13,
OPC_CheckPatternPredicate, 1,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_W), 0,
MVT::i64, 3, 1, 0, 3,
13,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_D), 0,
MVT::i64, 3, 1, 0, 3,
0,
34, MVT::i32,
OPC_MoveParent,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_Scope, 13,
OPC_CheckPatternPredicate, 2,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_W), 0,
MVT::i32, 3, 1, 0, 3,
13,
OPC_CheckPatternPredicate, 3,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_D), 0,
MVT::i32, 3, 1, 0, 3,
0,
0,
0,
88,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 0,
OPC_SwitchType , 35, MVT::i64,
OPC_MoveParent,
OPC_MoveParent,
OPC_RecordChild1,
OPC_CheckType, MVT::i64,
OPC_Scope, 13,
OPC_CheckPatternPredicate, 1,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_W), 0,
MVT::i64, 3, 0, 2, 3,
13,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_D), 0,
MVT::i64, 3, 0, 2, 3,
0,
35, MVT::i32,
OPC_MoveParent,
OPC_MoveParent,
OPC_RecordChild1,
OPC_CheckType, MVT::i32,
OPC_Scope, 13,
OPC_CheckPatternPredicate, 2,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_W), 0,
MVT::i32, 3, 0, 2, 3,
13,
OPC_CheckPatternPredicate, 3,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_D), 0,
MVT::i32, 3, 0, 2, 3,
0,
0,
0|128,1,
OPC_RecordChild0,
OPC_RecordChild1,
OPC_Scope, 69,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_SwitchType , 28, MVT::i64,
OPC_Scope, 12,
OPC_CheckPatternPredicate, 1,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_W), 0,
MVT::i64, 2, 0, 2,
12,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_D), 0,
MVT::i64, 2, 0, 2,
0,
28, MVT::i32,
OPC_Scope, 12,
OPC_CheckPatternPredicate, 2,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_W), 0,
MVT::i32, 2, 0, 2,
12,
OPC_CheckPatternPredicate, 3,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_D), 0,
MVT::i32, 2, 0, 2,
0,
0,
26,
OPC_CheckType, MVT::i64,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADD_W), 0,
MVT::i64, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADD_D), 0,
MVT::i64, 2, 0, 1,
0,
26,
OPC_CheckType, MVT::i32,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADD_W), 0,
MVT::i32, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADD_D), 0,
MVT::i32, 2, 0, 1,
0,
0,
0,
65|128,1, TARGET_VAL(ISD::OR),
OPC_Scope, 85,
OPC_RecordChild0,
OPC_Scope, 46,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckPredicate, 4,
OPC_SwitchType , 15, MVT::i32,
OPC_CheckPatternPredicate, 2,
OPC_CheckComplexPat, /*CP*/0, /*#*/0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_W), 0,
MVT::i32, 2, 2, 3,
15, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/0, /*#*/0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_D), 0,
MVT::i64, 2, 2, 3,
0,
34,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
OPC_RecordChild0,
OPC_CheckChild1Integer, 3,
OPC_MoveParent,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ORN), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ORN), 0,
MVT::i32, 2, 0, 1,
0,
0,
35,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
OPC_RecordChild0,
OPC_CheckChild1Integer, 3,
OPC_MoveParent,
OPC_RecordChild1,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ORN), 0,
MVT::i64, 2, 1, 0,
10, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ORN), 0,
MVT::i32, 2, 1, 0,
0,
68,
OPC_RecordChild0,
OPC_RecordChild1,
OPC_Scope, 37,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 23,
OPC_MoveParent,
OPC_SwitchType , 12, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ORI), 0,
MVT::i64, 2, 0, 2,
12, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ORI), 0,
MVT::i32, 2, 0, 2,
0,
12,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::OR), 0,
MVT::i64, 2, 0, 1,
12,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::OR), 0,
MVT::i32, 2, 0, 1,
0,
0,
112, TARGET_VAL(ISD::INTRINSIC_VOID),
OPC_RecordNode,
OPC_Scope, 31,
OPC_CheckChild1Integer, 14|128,75,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_RecordChild3,
OPC_RecordChild4,
OPC_MoveChild4,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 1,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::CACOP), 0|OPFL_Chain,
3, 4, 2, 5,
22,
OPC_CheckChild1Integer, 70|128,75,
OPC_RecordChild2,
OPC_RecordChild3,
OPC_MoveChild3,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::LDPTE), 0|OPFL_Chain,
2, 1, 3,
21,
OPC_CheckChild1Integer, 16|128,75,
OPC_RecordChild2,
OPC_RecordChild3,
OPC_RecordChild4,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 1,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::CACOP), 0|OPFL_Chain,
3, 4, 2, 5,
15,
OPC_CheckChild1Integer, 10|128,75,
OPC_RecordChild2,
OPC_RecordChild3,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ASRTLE_D), 0|OPFL_Chain,
2, 1, 2,
15,
OPC_CheckChild1Integer, 8|128,75,
OPC_RecordChild2,
OPC_RecordChild3,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ASRTGT_D), 0|OPFL_Chain,
2, 1, 2,
0,
94|128,25, TARGET_VAL(ISD::BRCOND),
OPC_RecordNode,
OPC_Scope, 47|128,25,
OPC_MoveChild1,
OPC_SwitchOpcode , 105|128,10, TARGET_VAL(ISD::XOR),
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::SETCC),
OPC_RecordChild0,
OPC_Scope, 47|128,5,
OPC_CheckChild0Type, MVT::f32,
OPC_RecordChild1,
OPC_Scope, 61,
OPC_CheckChild2CondCode, ISD::SETOEQ,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETOLT,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETOLE,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETONE,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETO,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETUEQ,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETULT,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETULE,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETUNE,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETUO,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETLT,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
0,
47|128,5,
OPC_CheckChild0Type, MVT::f64,
OPC_RecordChild1,
OPC_Scope, 61,
OPC_CheckChild2CondCode, ISD::SETOEQ,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETOLT,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETOLE,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETONE,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETO,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETUEQ,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETULT,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETULE,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETUNE,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETUO,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
61,
OPC_CheckChild2CondCode, ISD::SETLT,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2, 4, 3,
0,
0,
0,
59|128,14, TARGET_VAL(ISD::SETCC),
OPC_RecordChild0,
OPC_Scope, 10|128,2,
OPC_CheckChild0Type, MVT::i64,
OPC_CheckType, MVT::i64,
OPC_Scope, 44,
OPC_CheckChild1Integer, 0,
OPC_Scope, 19,
OPC_CheckChild2CondCode, ISD::SETEQ,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BEQZ), 0|OPFL_Chain,
2, 1, 2,
19,
OPC_CheckChild2CondCode, ISD::SETNE,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BNEZ), 0|OPFL_Chain,
2, 1, 2,
0,
85|128,1,
OPC_RecordChild1,
OPC_Scope, 20,
OPC_CheckChild2CondCode, ISD::SETEQ,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BEQ), 0|OPFL_Chain,
3, 1, 2, 3,
20,
OPC_CheckChild2CondCode, ISD::SETNE,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BNE), 0|OPFL_Chain,
3, 1, 2, 3,
20,
OPC_CheckChild2CondCode, ISD::SETLT,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLT), 0|OPFL_Chain,
3, 1, 2, 3,
20,
OPC_CheckChild2CondCode, ISD::SETGE,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGE), 0|OPFL_Chain,
3, 1, 2, 3,
20,
OPC_CheckChild2CondCode, ISD::SETULT,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLTU), 0|OPFL_Chain,
3, 1, 2, 3,
20,
OPC_CheckChild2CondCode, ISD::SETUGE,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGEU), 0|OPFL_Chain,
3, 1, 2, 3,
20,
OPC_CheckChild2CondCode, ISD::SETGT,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLT), 0|OPFL_Chain,
3, 2, 1, 3,
20,
OPC_CheckChild2CondCode, ISD::SETLE,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGE), 0|OPFL_Chain,
3, 2, 1, 3,
20,
OPC_CheckChild2CondCode, ISD::SETUGT,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLTU), 0|OPFL_Chain,
3, 2, 1, 3,
20,
OPC_CheckChild2CondCode, ISD::SETULE,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGEU), 0|OPFL_Chain,
3, 2, 1, 3,
0,
0,
10|128,2,
OPC_CheckChild0Type, MVT::i32,
OPC_CheckType, MVT::i32,
OPC_Scope, 44,
OPC_CheckChild1Integer, 0,
OPC_Scope, 19,
OPC_CheckChild2CondCode, ISD::SETEQ,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BEQZ), 0|OPFL_Chain,
2, 1, 2,
19,
OPC_CheckChild2CondCode, ISD::SETNE,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BNEZ), 0|OPFL_Chain,
2, 1, 2,
0,
85|128,1,
OPC_RecordChild1,
OPC_Scope, 20,
OPC_CheckChild2CondCode, ISD::SETEQ,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BEQ), 0|OPFL_Chain,
3, 1, 2, 3,
20,
OPC_CheckChild2CondCode, ISD::SETNE,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BNE), 0|OPFL_Chain,
3, 1, 2, 3,
20,
OPC_CheckChild2CondCode, ISD::SETLT,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLT), 0|OPFL_Chain,
3, 1, 2, 3,
20,
OPC_CheckChild2CondCode, ISD::SETGE,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGE), 0|OPFL_Chain,
3, 1, 2, 3,
20,
OPC_CheckChild2CondCode, ISD::SETULT,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLTU), 0|OPFL_Chain,
3, 1, 2, 3,
20,
OPC_CheckChild2CondCode, ISD::SETUGE,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGEU), 0|OPFL_Chain,
3, 1, 2, 3,
20,
OPC_CheckChild2CondCode, ISD::SETGT,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLT), 0|OPFL_Chain,
3, 2, 1, 3,
20,
OPC_CheckChild2CondCode, ISD::SETLE,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGE), 0|OPFL_Chain,
3, 2, 1, 3,
20,
OPC_CheckChild2CondCode, ISD::SETUGT,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLTU), 0|OPFL_Chain,
3, 2, 1, 3,
20,
OPC_CheckChild2CondCode, ISD::SETULE,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGEU), 0|OPFL_Chain,
3, 2, 1, 3,
0,
0,
14|128,5,
OPC_CheckChild0Type, MVT::f32,
OPC_RecordChild1,
OPC_Scope, 58,
OPC_CheckChild2CondCode, ISD::SETOEQ,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETOLT,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETOLE,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETONE,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETO,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETUEQ,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETULT,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETULE,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETUNE,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETUO,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETLT,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
0,
14|128,5,
OPC_CheckChild0Type, MVT::f64,
OPC_RecordChild1,
OPC_Scope, 58,
OPC_CheckChild2CondCode, ISD::SETOEQ,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETOLT,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETOLE,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETONE,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETO,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETUEQ,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETULT,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETULE,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETUNE,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETUO,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
58,
OPC_CheckChild2CondCode, ISD::SETLT,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
MVT::i64, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
25, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
MVT::i32, 2, 1, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
2, 4, 3,
0,
0,
0,
0,
41,
OPC_RecordChild1,
OPC_Scope, 18,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BNEZ), 0|OPFL_Chain,
2, 1, 2,
18,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BNEZ), 0|OPFL_Chain,
2, 1, 2,
0,
0,
17|128,1, TARGET_VAL(ISD::XOR),
OPC_Scope, 35,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::OR),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveParent,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::NOR), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::NOR), 0,
MVT::i32, 2, 0, 1,
0,
106,
OPC_RecordChild0,
OPC_Scope, 34,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 13, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::NOR), 0,
MVT::i64, 2, 0, 1,
13, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::NOR), 0,
MVT::i32, 2, 0, 1,
0,
67,
OPC_RecordChild1,
OPC_Scope, 37,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 23,
OPC_MoveParent,
OPC_SwitchType , 12, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
MVT::i64, 2, 0, 2,
12, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
MVT::i32, 2, 0, 2,
0,
12,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XOR), 0,
MVT::i64, 2, 0, 1,
12,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XOR), 0,
MVT::i32, 2, 0, 1,
0,
0,
0,
15|128,1, TARGET_VAL(ISD::AND),
OPC_Scope, 35,
OPC_RecordChild0,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
OPC_RecordChild0,
OPC_CheckChild1Integer, 3,
OPC_MoveParent,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ANDN), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ANDN), 0,
MVT::i32, 2, 0, 1,
0,
35,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
OPC_RecordChild0,
OPC_CheckChild1Integer, 3,
OPC_MoveParent,
OPC_RecordChild1,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ANDN), 0,
MVT::i64, 2, 1, 0,
10, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ANDN), 0,
MVT::i32, 2, 1, 0,
0,
68,
OPC_RecordChild0,
OPC_RecordChild1,
OPC_Scope, 37,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 23,
OPC_MoveParent,
OPC_SwitchType , 12, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ANDI), 0,
MVT::i64, 2, 0, 2,
12, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ANDI), 0,
MVT::i32, 2, 0, 2,
0,
12,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AND), 0,
MVT::i64, 2, 0, 1,
12,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AND), 0,
MVT::i32, 2, 0, 1,
0,
0,
122, TARGET_VAL(ISD::CTLZ),
OPC_Scope, 63,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
OPC_RecordChild0,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLO_D), 0,
MVT::i64, 1, 0,
9,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLO_W), 0,
MVT::i64, 1, 0,
0,
25, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLO_D), 0,
MVT::i32, 1, 0,
9,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLO_W), 0,
MVT::i32, 1, 0,
0,
0,
55,
OPC_RecordChild0,
OPC_SwitchType , 24, MVT::i64,
OPC_CheckChild0Type, MVT::i64,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLZ_D), 0,
MVT::i64, 1, 0,
9,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLZ_W), 0,
MVT::i64, 1, 0,
0,
24, MVT::i32,
OPC_CheckChild0Type, MVT::i32,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLZ_D), 0,
MVT::i32, 1, 0,
9,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLZ_W), 0,
MVT::i32, 1, 0,
0,
0,
0,
122, TARGET_VAL(ISD::CTTZ),
OPC_Scope, 63,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
OPC_RecordChild0,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 25, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTO_D), 0,
MVT::i64, 1, 0,
9,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTO_W), 0,
MVT::i64, 1, 0,
0,
25, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTO_D), 0,
MVT::i32, 1, 0,
9,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTO_W), 0,
MVT::i32, 1, 0,
0,
0,
55,
OPC_RecordChild0,
OPC_SwitchType , 24, MVT::i64,
OPC_CheckChild0Type, MVT::i64,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTZ_D), 0,
MVT::i64, 1, 0,
9,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTZ_W), 0,
MVT::i64, 1, 0,
0,
24, MVT::i32,
OPC_CheckChild0Type, MVT::i32,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTZ_D), 0,
MVT::i32, 1, 0,
9,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTZ_W), 0,
MVT::i32, 1, 0,
0,
0,
0,
70, TARGET_VAL(LoongArchISD::CLZ_W),
OPC_Scope, 37,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
OPC_RecordChild0,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 12, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLO_W), 0,
MVT::i64, 1, 0,
12, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLO_W), 0,
MVT::i32, 1, 0,
0,
29,
OPC_RecordChild0,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckChild0Type, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLZ_W), 0,
MVT::i64, 1, 0,
11, MVT::i32,
OPC_CheckChild0Type, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLZ_W), 0,
MVT::i32, 1, 0,
0,
0,
70, TARGET_VAL(LoongArchISD::CTZ_W),
OPC_Scope, 37,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
OPC_RecordChild0,
OPC_CheckChild1Integer, 3,
OPC_SwitchType , 12, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTO_W), 0,
MVT::i64, 1, 0,
12, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTO_W), 0,
MVT::i32, 1, 0,
0,
29,
OPC_RecordChild0,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckChild0Type, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTZ_W), 0,
MVT::i64, 1, 0,
11, MVT::i32,
OPC_CheckChild0Type, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTZ_W), 0,
MVT::i32, 1, 0,
0,
0,
7|128,1, TARGET_VAL(LoongArchISD::BSTRINS),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_Scope, 62,
OPC_CheckPredicate, 1,
OPC_SwitchType , 27, MVT::i64,
OPC_MoveParent,
OPC_RecordChild3,
OPC_MoveChild3,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 1,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 1,
OPC_EmitConvertToTarget, 2,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRINS_W), 0,
MVT::i64, 4, 0, 1, 4, 5,
27, MVT::i32,
OPC_MoveParent,
OPC_RecordChild3,
OPC_MoveChild3,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 1,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 2,
OPC_EmitConvertToTarget, 2,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRINS_W), 0,
MVT::i32, 4, 0, 1, 4, 5,
0,
62,
OPC_CheckPredicate, 2,
OPC_SwitchType , 27, MVT::i64,
OPC_MoveParent,
OPC_RecordChild3,
OPC_MoveChild3,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 2,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 2,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRINS_D), 0,
MVT::i64, 4, 0, 1, 4, 5,
27, MVT::i32,
OPC_MoveParent,
OPC_RecordChild3,
OPC_MoveChild3,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 2,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_EmitConvertToTarget, 2,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRINS_D), 0,
MVT::i32, 4, 0, 1, 4, 5,
0,
0,
34|128,3, TARGET_VAL(ISD::INTRINSIC_W_CHAIN),
OPC_RecordNode,
OPC_Scope, 28,
OPC_CheckChild1Integer, 98|128,75,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i64,
OPC_RecordChild3,
OPC_RecordChild4,
OPC_RecordChild5,
OPC_MoveChild5,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicSwap32), 0|OPFL_Chain,
MVT::i64, MVT::i64, 4, 1, 2, 3, 4,
28,
OPC_CheckChild1Integer, 74|128,75,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i64,
OPC_RecordChild3,
OPC_RecordChild4,
OPC_RecordChild5,
OPC_MoveChild5,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadAdd32), 0|OPFL_Chain,
MVT::i64, MVT::i64, 4, 1, 2, 3, 4,
28,
OPC_CheckChild1Integer, 86|128,75,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i64,
OPC_RecordChild3,
OPC_RecordChild4,
OPC_RecordChild5,
OPC_MoveChild5,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadSub32), 0|OPFL_Chain,
MVT::i64, MVT::i64, 4, 1, 2, 3, 4,
28,
OPC_CheckChild1Integer, 82|128,75,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i64,
OPC_RecordChild3,
OPC_RecordChild4,
OPC_RecordChild5,
OPC_MoveChild5,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadNand32), 0|OPFL_Chain,
MVT::i64, MVT::i64, 4, 1, 2, 3, 4,
30,
OPC_CheckChild1Integer, 90|128,75,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i64,
OPC_RecordChild3,
OPC_RecordChild4,
OPC_RecordChild5,
OPC_MoveChild5,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadUMax32), 0|OPFL_Chain,
3, MVT::i64, MVT::i64, MVT::i64, 4, 1, 2, 3, 4,
30,
OPC_CheckChild1Integer, 94|128,75,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i64,
OPC_RecordChild3,
OPC_RecordChild4,
OPC_RecordChild5,
OPC_MoveChild5,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadUMin32), 0|OPFL_Chain,
3, MVT::i64, MVT::i64, MVT::i64, 4, 1, 2, 3, 4,
30,
OPC_CheckChild1Integer, 100|128,75,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i64,
OPC_RecordChild3,
OPC_RecordChild4,
OPC_RecordChild5,
OPC_RecordChild6,
OPC_MoveChild6,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedCmpXchg32), 0|OPFL_Chain,
MVT::i64, MVT::i64, 5, 1, 2, 3, 4, 5,
32,
OPC_CheckChild1Integer, 76|128,75,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i64,
OPC_RecordChild3,
OPC_RecordChild4,
OPC_RecordChild5,
OPC_RecordChild6,
OPC_MoveChild6,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadMax32), 0|OPFL_Chain,
3, MVT::i64, MVT::i64, MVT::i64, 5, 1, 2, 3, 4, 5,
32,
OPC_CheckChild1Integer, 78|128,75,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i64,
OPC_RecordChild3,
OPC_RecordChild4,
OPC_RecordChild5,
OPC_RecordChild6,
OPC_MoveChild6,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadMin32), 0|OPFL_Chain,
3, MVT::i64, MVT::i64, MVT::i64, 5, 1, 2, 3, 4, 5,
28,
OPC_CheckChild1Integer, 96|128,75,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i32,
OPC_RecordChild3,
OPC_RecordChild4,
OPC_RecordChild5,
OPC_MoveChild5,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicSwap32), 0|OPFL_Chain,
MVT::i32, MVT::i32, 4, 1, 2, 3, 4,
28,
OPC_CheckChild1Integer, 72|128,75,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i32,
OPC_RecordChild3,
OPC_RecordChild4,
OPC_RecordChild5,
OPC_MoveChild5,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadAdd32), 0|OPFL_Chain,
MVT::i32, MVT::i32, 4, 1, 2, 3, 4,
28,
OPC_CheckChild1Integer, 84|128,75,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i32,
OPC_RecordChild3,
OPC_RecordChild4,
OPC_RecordChild5,
OPC_MoveChild5,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadSub32), 0|OPFL_Chain,
MVT::i32, MVT::i32, 4, 1, 2, 3, 4,
28,
OPC_CheckChild1Integer, 80|128,75,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i32,
OPC_RecordChild3,
OPC_RecordChild4,
OPC_RecordChild5,
OPC_MoveChild5,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadNand32), 0|OPFL_Chain,
MVT::i32, MVT::i32, 4, 1, 2, 3, 4,
23,
OPC_CheckChild1Integer, 68|128,75,
OPC_RecordChild2,
OPC_RecordChild3,
OPC_MoveChild3,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDDIR), 0|OPFL_Chain,
MVT::i64, 2, 1, 3,
0,
88|128,1, TARGET_VAL(ISD::SIGN_EXTEND_INREG),
OPC_Scope, 6|128,1,
OPC_MoveChild0,
OPC_SwitchOpcode , 45, TARGET_VAL(ISD::ADD),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_Scope, 24,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_MoveParent,
OPC_MoveChild1,
OPC_CheckValueType, MVT::i32,
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_W), 0,
MVT::i64, 2, 0, 2,
15,
OPC_MoveParent,
OPC_MoveChild1,
OPC_CheckValueType, MVT::i32,
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADD_W), 0,
MVT::i64, 2, 0, 1,
0,
28, TARGET_VAL(ISD::ROTR),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 1,
OPC_CheckType, MVT::i64,
OPC_MoveParent,
OPC_MoveParent,
OPC_MoveChild1,
OPC_CheckValueType, MVT::i32,
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_W), 0,
MVT::i64, 2, 0, 2,
29, TARGET_VAL(LoongArchISD::ROTL_W),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 1,
OPC_MoveParent,
OPC_MoveParent,
OPC_MoveChild1,
OPC_CheckValueType, MVT::i32,
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 1,
OPC_EmitNodeXForm, 0, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_W), 0,
MVT::i64, 2, 0, 3,
17, TARGET_VAL(ISD::SUB),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveParent,
OPC_MoveChild1,
OPC_CheckValueType, MVT::i32,
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SUB_W), 0,
MVT::i64, 2, 0, 1,
0,
77,
OPC_RecordChild0,
OPC_MoveChild1,
OPC_Scope, 27,
OPC_CheckValueType, MVT::i8,
OPC_MoveParent,
OPC_SwitchType , 9, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::EXT_W_B), 0,
MVT::i64, 1, 0,
9, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::EXT_W_B), 0,
MVT::i32, 1, 0,
0,
27,
OPC_CheckValueType, MVT::i16,
OPC_MoveParent,
OPC_SwitchType , 9, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::EXT_W_H), 0,
MVT::i64, 1, 0,
9, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::EXT_W_H), 0,
MVT::i32, 1, 0,
0,
16,
OPC_CheckValueType, MVT::i32,
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_W), 0,
MVT::i64, 2, 0, 1,
0,
0,
85, TARGET_VAL(ISD::BRIND),
OPC_RecordNode,
OPC_Scope, 45,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::ADD),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 24,
OPC_MoveParent,
OPC_SwitchType , 13, MVT::i64,
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoBRIND), 0|OPFL_Chain,
2, 1, 3,
13, MVT::i32,
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoBRIND), 0|OPFL_Chain,
2, 1, 3,
0,
35,
OPC_RecordChild1,
OPC_Scope, 15,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoBRIND), 0|OPFL_Chain,
2, 1, 2,
15,
OPC_CheckChild1Type, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoBRIND), 0|OPFL_Chain,
2, 1, 2,
0,
0,
21, TARGET_VAL(ISD::CALLSEQ_START),
OPC_RecordNode,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ADJCALLSTACKDOWN), 0|OPFL_Chain|OPFL_GlueOutput,
2, 1, 2,
22, TARGET_VAL(ISD::CALLSEQ_END),
OPC_RecordNode,
OPC_CaptureGlueInput,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ADJCALLSTACKUP), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
2, 1, 2,
39, TARGET_VAL(ISD::ATOMIC_FENCE),
OPC_RecordNode,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
OPC_MoveParent,
OPC_Scope, 12,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::DBAR), 0|OPFL_Chain,
1, 1,
12,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::DBAR), 0|OPFL_Chain,
1, 1,
0,
111|128,12, TARGET_VAL(ISD::SETCC),
OPC_RecordChild0,
OPC_Scope, 52|128,3,
OPC_CheckChild0Type, MVT::i64,
OPC_Scope, 38,
OPC_CheckChild1Integer, 0,
OPC_CheckType, MVT::i64,
OPC_Scope, 15,
OPC_CheckChild2CondCode, ISD::SETEQ,
OPC_CheckPatternPredicate, 4,
OPC_EmitInteger, MVT::i64, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
MVT::i64, 2, 0, 1,
15,
OPC_CheckChild2CondCode, ISD::SETNE,
OPC_CheckPatternPredicate, 4,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i64, 2, 1, 0,
0,
7|128,3,
OPC_RecordChild1,
OPC_Scope, 42|128,1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_Scope, 37,
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_Scope, 14,
OPC_CheckChild2CondCode, ISD::SETLT,
OPC_CheckPatternPredicate, 4,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTI), 0,
MVT::i64, 2, 0, 2,
14,
OPC_CheckChild2CondCode, ISD::SETULT,
OPC_CheckPatternPredicate, 4,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
MVT::i64, 2, 0, 2,
0,
125,
OPC_CheckPredicate, 25,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_Scope, 58,
OPC_CheckChild2CondCode, ISD::SETEQ,
OPC_Scope, 26,
OPC_CheckPatternPredicate, 1,
OPC_EmitConvertToTarget, 1,
OPC_EmitNodeXForm, 1, 2,
OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
MVT::i64, 2, 0, 3,
OPC_EmitInteger, MVT::i64, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
MVT::i64, 2, 4, 5,
26,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 1,
OPC_EmitNodeXForm, 1, 2,
OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_D), 0,
MVT::i64, 2, 0, 3,
OPC_EmitInteger, MVT::i64, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
MVT::i64, 2, 4, 5,
0,
58,
OPC_CheckChild2CondCode, ISD::SETNE,
OPC_Scope, 26,
OPC_CheckPatternPredicate, 1,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_EmitConvertToTarget, 1,
OPC_EmitNodeXForm, 1, 3,
OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
MVT::i64, 2, 0, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i64, 2, 2, 5,
26,
OPC_CheckPatternPredicate, 0,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_EmitConvertToTarget, 1,
OPC_EmitNodeXForm, 1, 3,
OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_D), 0,
MVT::i64, 2, 0, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i64, 2, 2, 5,
0,
0,
0,
14,
OPC_CheckChild2CondCode, ISD::SETLT,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLT), 0,
MVT::i64, 2, 0, 1,
14,
OPC_CheckChild2CondCode, ISD::SETULT,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i64, 2, 0, 1,
14,
OPC_CheckChild2CondCode, ISD::SETUGT,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i64, 2, 1, 0,
14,
OPC_CheckChild2CondCode, ISD::SETGT,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLT), 0,
MVT::i64, 2, 1, 0,
25,
OPC_CheckChild2CondCode, ISD::SETEQ,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitNode1, TARGET_VAL(LoongArch::XOR), 0,
MVT::i64, 2, 0, 1,
OPC_EmitInteger, MVT::i64, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
MVT::i64, 2, 2, 3,
25,
OPC_CheckChild2CondCode, ISD::SETNE,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::XOR), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i64, 2, 2, 3,
25,
OPC_CheckChild2CondCode, ISD::SETUGE,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitNode1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i64, 2, 0, 1,
OPC_EmitInteger, MVT::i64, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
MVT::i64, 2, 2, 3,
25,
OPC_CheckChild2CondCode, ISD::SETULE,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitNode1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i64, 2, 1, 0,
OPC_EmitInteger, MVT::i64, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
MVT::i64, 2, 2, 3,
25,
OPC_CheckChild2CondCode, ISD::SETGE,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitNode1, TARGET_VAL(LoongArch::SLT), 0,
MVT::i64, 2, 0, 1,
OPC_EmitInteger, MVT::i64, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
MVT::i64, 2, 2, 3,
25,
OPC_CheckChild2CondCode, ISD::SETLE,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitNode1, TARGET_VAL(LoongArch::SLT), 0,
MVT::i64, 2, 1, 0,
OPC_EmitInteger, MVT::i64, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
MVT::i64, 2, 2, 3,
0,
0,
52|128,3,
OPC_CheckChild0Type, MVT::i32,
OPC_Scope, 38,
OPC_CheckChild1Integer, 0,
OPC_CheckType, MVT::i32,
OPC_Scope, 15,
OPC_CheckChild2CondCode, ISD::SETEQ,
OPC_CheckPatternPredicate, 5,
OPC_EmitInteger, MVT::i32, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
MVT::i32, 2, 0, 1,
15,
OPC_CheckChild2CondCode, ISD::SETNE,
OPC_CheckPatternPredicate, 5,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i32, 2, 1, 0,
0,
7|128,3,
OPC_RecordChild1,
OPC_Scope, 42|128,1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_Scope, 37,
OPC_CheckPredicate, 3,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_Scope, 14,
OPC_CheckChild2CondCode, ISD::SETLT,
OPC_CheckPatternPredicate, 5,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTI), 0,
MVT::i32, 2, 0, 2,
14,
OPC_CheckChild2CondCode, ISD::SETULT,
OPC_CheckPatternPredicate, 5,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
MVT::i32, 2, 0, 2,
0,
125,
OPC_CheckPredicate, 25,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_Scope, 58,
OPC_CheckChild2CondCode, ISD::SETEQ,
OPC_Scope, 26,
OPC_CheckPatternPredicate, 2,
OPC_EmitConvertToTarget, 1,
OPC_EmitNodeXForm, 1, 2,
OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
MVT::i32, 2, 0, 3,
OPC_EmitInteger, MVT::i32, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
MVT::i32, 2, 4, 5,
26,
OPC_CheckPatternPredicate, 3,
OPC_EmitConvertToTarget, 1,
OPC_EmitNodeXForm, 1, 2,
OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_D), 0,
MVT::i32, 2, 0, 3,
OPC_EmitInteger, MVT::i32, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
MVT::i32, 2, 4, 5,
0,
58,
OPC_CheckChild2CondCode, ISD::SETNE,
OPC_Scope, 26,
OPC_CheckPatternPredicate, 2,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_EmitConvertToTarget, 1,
OPC_EmitNodeXForm, 1, 3,
OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
MVT::i32, 2, 0, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i32, 2, 2, 5,
26,
OPC_CheckPatternPredicate, 3,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_EmitConvertToTarget, 1,
OPC_EmitNodeXForm, 1, 3,
OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_D), 0,
MVT::i32, 2, 0, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i32, 2, 2, 5,
0,
0,
0,
14,
OPC_CheckChild2CondCode, ISD::SETLT,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLT), 0,
MVT::i32, 2, 0, 1,
14,
OPC_CheckChild2CondCode, ISD::SETULT,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i32, 2, 0, 1,
14,
OPC_CheckChild2CondCode, ISD::SETUGT,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i32, 2, 1, 0,
14,
OPC_CheckChild2CondCode, ISD::SETGT,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLT), 0,
MVT::i32, 2, 1, 0,
25,
OPC_CheckChild2CondCode, ISD::SETEQ,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitNode1, TARGET_VAL(LoongArch::XOR), 0,
MVT::i32, 2, 0, 1,
OPC_EmitInteger, MVT::i32, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
MVT::i32, 2, 2, 3,
25,
OPC_CheckChild2CondCode, ISD::SETNE,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::XOR), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i32, 2, 2, 3,
25,
OPC_CheckChild2CondCode, ISD::SETUGE,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitNode1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i32, 2, 0, 1,
OPC_EmitInteger, MVT::i32, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
MVT::i32, 2, 2, 3,
25,
OPC_CheckChild2CondCode, ISD::SETULE,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitNode1, TARGET_VAL(LoongArch::SLTU), 0,
MVT::i32, 2, 1, 0,
OPC_EmitInteger, MVT::i32, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
MVT::i32, 2, 2, 3,
25,
OPC_CheckChild2CondCode, ISD::SETGE,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitNode1, TARGET_VAL(LoongArch::SLT), 0,
MVT::i32, 2, 0, 1,
OPC_EmitInteger, MVT::i32, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
MVT::i32, 2, 2, 3,
25,
OPC_CheckChild2CondCode, ISD::SETLE,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitNode1, TARGET_VAL(LoongArch::SLT), 0,
MVT::i32, 2, 1, 0,
OPC_EmitInteger, MVT::i32, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
MVT::i32, 2, 2, 3,
0,
0,
126|128,2,
OPC_CheckChild0Type, MVT::f32,
OPC_RecordChild1,
OPC_Scope, 28,
OPC_CheckChild2CondCode, ISD::SETOEQ,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETEQ,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETOLT,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETOLE,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETLE,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETONE,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETO,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETUEQ,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETULT,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETULE,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETUNE,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETUO,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETLT,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
MVT::i32, 2, 0, 1,
0,
0,
126|128,2,
OPC_CheckChild0Type, MVT::f64,
OPC_RecordChild1,
OPC_Scope, 28,
OPC_CheckChild2CondCode, ISD::SETOEQ,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETEQ,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETOLT,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETOLE,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETLE,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETONE,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETO,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETUEQ,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETULT,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETULE,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETUNE,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETUO,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
MVT::i32, 2, 0, 1,
0,
28,
OPC_CheckChild2CondCode, ISD::SETLT,
OPC_SwitchType , 10, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
MVT::i64, 2, 0, 1,
10, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
MVT::i32, 2, 0, 1,
0,
0,
0,
19|128,1, TARGET_VAL(ISD::ROTR),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_Scope, 84,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_Scope, 38,
OPC_CheckPredicate, 1,
OPC_SwitchType , 15, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 1,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_W), 0,
MVT::i64, 2, 0, 2,
15, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 2,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_W), 0,
MVT::i32, 2, 0, 2,
0,
38,
OPC_CheckPredicate, 2,
OPC_SwitchType , 15, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_D), 0,
MVT::i64, 2, 0, 2,
15, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_D), 0,
MVT::i32, 2, 0, 2,
0,
0,
28,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckType, MVT::i64,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTR_W), 0,
MVT::i64, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTR_D), 0,
MVT::i64, 2, 0, 1,
0,
28,
OPC_CheckChild1Type, MVT::i32,
OPC_CheckType, MVT::i32,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTR_W), 0,
MVT::i32, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTR_D), 0,
MVT::i32, 2, 0, 1,
0,
0,
24, TARGET_VAL(LoongArchISD::ROTL_W),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 1,
OPC_MoveParent,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 1,
OPC_EmitNodeXForm, 0, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_W), 0,
MVT::i64, 2, 0, 3,
31|128,1, TARGET_VAL(ISD::SHL),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_Scope, 84,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_Scope, 38,
OPC_CheckPredicate, 1,
OPC_SwitchType , 15, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 1,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLLI_W), 0,
MVT::i64, 2, 0, 2,
15, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 2,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLLI_W), 0,
MVT::i32, 2, 0, 2,
0,
38,
OPC_CheckPredicate, 2,
OPC_SwitchType , 15, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLLI_D), 0,
MVT::i64, 2, 0, 2,
15, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLLI_D), 0,
MVT::i32, 2, 0, 2,
0,
0,
34,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckType, MVT::i64,
OPC_Scope, 13,
OPC_CheckPatternPredicate, 1,
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLL_W), 0,
MVT::i64, 2, 0, 2,
13,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLL_D), 0,
MVT::i64, 2, 0, 2,
0,
34,
OPC_CheckChild1Type, MVT::i32,
OPC_CheckType, MVT::i32,
OPC_Scope, 13,
OPC_CheckPatternPredicate, 2,
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLL_W), 0,
MVT::i32, 2, 0, 2,
13,
OPC_CheckPatternPredicate, 3,
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLL_D), 0,
MVT::i32, 2, 0, 2,
0,
0,
31|128,1, TARGET_VAL(ISD::SRA),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_Scope, 84,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_Scope, 38,
OPC_CheckPredicate, 1,
OPC_SwitchType , 15, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 1,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRAI_W), 0,
MVT::i64, 2, 0, 2,
15, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 2,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRAI_W), 0,
MVT::i32, 2, 0, 2,
0,
38,
OPC_CheckPredicate, 2,
OPC_SwitchType , 15, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRAI_D), 0,
MVT::i64, 2, 0, 2,
15, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRAI_D), 0,
MVT::i32, 2, 0, 2,
0,
0,
34,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckType, MVT::i64,
OPC_Scope, 13,
OPC_CheckPatternPredicate, 1,
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRA_W), 0,
MVT::i64, 2, 0, 2,
13,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRA_D), 0,
MVT::i64, 2, 0, 2,
0,
34,
OPC_CheckChild1Type, MVT::i32,
OPC_CheckType, MVT::i32,
OPC_Scope, 13,
OPC_CheckPatternPredicate, 2,
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRA_W), 0,
MVT::i32, 2, 0, 2,
13,
OPC_CheckPatternPredicate, 3,
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRA_D), 0,
MVT::i32, 2, 0, 2,
0,
0,
31|128,1, TARGET_VAL(ISD::SRL),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_Scope, 84,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_Scope, 38,
OPC_CheckPredicate, 1,
OPC_SwitchType , 15, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 1,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRLI_W), 0,
MVT::i64, 2, 0, 2,
15, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 2,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRLI_W), 0,
MVT::i32, 2, 0, 2,
0,
38,
OPC_CheckPredicate, 2,
OPC_SwitchType , 15, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRLI_D), 0,
MVT::i64, 2, 0, 2,
15, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRLI_D), 0,
MVT::i32, 2, 0, 2,
0,
0,
34,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckType, MVT::i64,
OPC_Scope, 13,
OPC_CheckPatternPredicate, 1,
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRL_W), 0,
MVT::i64, 2, 0, 2,
13,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRL_D), 0,
MVT::i64, 2, 0, 2,
0,
34,
OPC_CheckChild1Type, MVT::i32,
OPC_CheckType, MVT::i32,
OPC_Scope, 13,
OPC_CheckPatternPredicate, 2,
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRL_W), 0,
MVT::i32, 2, 0, 2,
13,
OPC_CheckPatternPredicate, 3,
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRL_D), 0,
MVT::i32, 2, 0, 2,
0,
0,
38, TARGET_VAL(LoongArchISD::DBAR),
OPC_RecordNode,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 26,
OPC_SwitchType , 12, MVT::i64,
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::DBAR), 0|OPFL_Chain,
1, 2,
12, MVT::i32,
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::DBAR), 0|OPFL_Chain,
1, 2,
0,
38, TARGET_VAL(LoongArchISD::IBAR),
OPC_RecordNode,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 26,
OPC_SwitchType , 12, MVT::i64,
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IBAR), 0|OPFL_Chain,
1, 2,
12, MVT::i32,
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IBAR), 0|OPFL_Chain,
1, 2,
0,
38, TARGET_VAL(LoongArchISD::BREAK),
OPC_RecordNode,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 26,
OPC_SwitchType , 12, MVT::i64,
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BREAK), 0|OPFL_Chain,
1, 2,
12, MVT::i32,
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BREAK), 0|OPFL_Chain,
1, 2,
0,
38, TARGET_VAL(LoongArchISD::SYSCALL),
OPC_RecordNode,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 26,
OPC_SwitchType , 12, MVT::i64,
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::SYSCALL), 0|OPFL_Chain,
1, 2,
12, MVT::i32,
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::SYSCALL), 0|OPFL_Chain,
1, 2,
0,
44, TARGET_VAL(LoongArchISD::CSRRD),
OPC_RecordNode,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 27,
OPC_SwitchType , 15, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CSRRD), 0|OPFL_Chain,
MVT::i64, 1, 2,
15, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CSRRD), 0|OPFL_Chain,
MVT::i32, 1, 2,
0,
47, TARGET_VAL(LoongArchISD::CSRWR),
OPC_RecordNode,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 27,
OPC_SwitchType , 16, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CSRWR), 0|OPFL_Chain,
MVT::i64, 2, 1, 3,
16, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CSRWR), 0|OPFL_Chain,
MVT::i32, 2, 1, 3,
0,
50, TARGET_VAL(LoongArchISD::CSRXCHG),
OPC_RecordNode,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_RecordChild3,
OPC_MoveChild3,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 27,
OPC_SwitchType , 17, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CSRXCHG), 0|OPFL_Chain,
MVT::i64, 3, 1, 2, 4,
17, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CSRXCHG), 0|OPFL_Chain,
MVT::i32, 3, 1, 2, 4,
0,
46, TARGET_VAL(LoongArchISD::MOVGR2FCSR),
OPC_RecordNode,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 28,
OPC_SwitchType , 16, MVT::i64,
OPC_MoveParent,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::WRFCSR), 0|OPFL_Chain,
2, 3, 2,
16, MVT::i32,
OPC_MoveParent,
OPC_RecordChild2,
OPC_CheckChild2Type, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_EmitConvertToTarget, 1,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::WRFCSR), 0|OPFL_Chain,
2, 3, 2,
0,
41, TARGET_VAL(LoongArchISD::MOVFCSR2GR),
OPC_RecordChild0,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
OPC_CheckPredicate, 28,
OPC_SwitchType , 14, MVT::i64,
OPC_MoveParent,
OPC_CheckType, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitConvertToTarget, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::RDFCSR), 0,
MVT::i64, 1, 1,
14, MVT::i32,
OPC_MoveParent,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitConvertToTarget, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::RDFCSR), 0,
MVT::i32, 1, 1,
0,
15, TARGET_VAL(LoongArchISD::SLL_W),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/3, /*#*/1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLL_W), 0,
MVT::i64, 2, 0, 2,
15, TARGET_VAL(LoongArchISD::SRA_W),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/3, /*#*/1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRA_W), 0,
MVT::i64, 2, 0, 2,
15, TARGET_VAL(LoongArchISD::SRL_W),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_CheckPatternPredicate, 0,
OPC_CheckComplexPat, /*CP*/3, /*#*/1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRL_W), 0,
MVT::i64, 2, 0, 2,
91, TARGET_VAL(LoongArchISD::CALL),
OPC_RecordNode,
OPC_CaptureGlueInput,
OPC_RecordChild1,
OPC_Scope, 61,
OPC_MoveChild1,
OPC_SwitchOpcode , 26, TARGET_VAL(ISD::TargetGlobalAddress),
OPC_SwitchType , 10, MVT::i64,
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1, 1,
10, MVT::i32,
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1, 1,
0,
26, TARGET_VAL(ISD::TargetExternalSymbol),
OPC_SwitchType , 10, MVT::i64,
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1, 1,
10, MVT::i32,
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1, 1,
0,
0,
11,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoCALLIndirect), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1, 1,
11,
OPC_CheckChild1Type, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoCALLIndirect), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1, 1,
0,
91, TARGET_VAL(LoongArchISD::TAIL),
OPC_RecordNode,
OPC_CaptureGlueInput,
OPC_RecordChild1,
OPC_Scope, 61,
OPC_MoveChild1,
OPC_SwitchOpcode , 26, TARGET_VAL(ISD::TargetGlobalAddress),
OPC_SwitchType , 10, MVT::i64,
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoTAIL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1, 1,
10, MVT::i32,
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoTAIL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1, 1,
0,
26, TARGET_VAL(ISD::TargetExternalSymbol),
OPC_SwitchType , 10, MVT::i64,
OPC_MoveParent,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoTAIL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1, 1,
10, MVT::i32,
OPC_MoveParent,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoTAIL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1, 1,
0,
0,
11,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoTAILIndirect), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1, 1,
11,
OPC_CheckChild1Type, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoTAILIndirect), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1, 1,
0,
5|128,1, TARGET_VAL(ISD::BSWAP),
OPC_Scope, 56,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::BITREVERSE),
OPC_RecordChild0,
OPC_MoveParent,
OPC_SwitchType , 22, MVT::i64,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_4B), 0,
MVT::i64, 1, 0,
9,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_8B), 0,
MVT::i64, 1, 0,
0,
22, MVT::i32,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_4B), 0,
MVT::i32, 1, 0,
9,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_8B), 0,
MVT::i32, 1, 0,
0,
0,
73,
OPC_RecordChild0,
OPC_SwitchType , 33, MVT::i64,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::REVB_D), 0,
MVT::i64, 1, 0,
20,
OPC_CheckPatternPredicate, 1,
OPC_EmitNode1, TARGET_VAL(LoongArch::REVB_2H), 0,
MVT::i64, 1, 0,
OPC_EmitInteger, MVT::i64, 32,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_W), 0,
MVT::i64, 2, 1, 2,
0,
33, MVT::i32,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::REVB_D), 0,
MVT::i32, 1, 0,
20,
OPC_CheckPatternPredicate, 2,
OPC_EmitNode1, TARGET_VAL(LoongArch::REVB_2H), 0,
MVT::i32, 1, 0,
OPC_EmitInteger, MVT::i32, 32,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_W), 0,
MVT::i32, 2, 1, 2,
0,
0,
0,
111, TARGET_VAL(ISD::BITREVERSE),
OPC_Scope, 56,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::BSWAP),
OPC_RecordChild0,
OPC_MoveParent,
OPC_SwitchType , 22, MVT::i64,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_4B), 0,
MVT::i64, 1, 0,
9,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_8B), 0,
MVT::i64, 1, 0,
0,
22, MVT::i32,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_4B), 0,
MVT::i32, 1, 0,
9,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_8B), 0,
MVT::i32, 1, 0,
0,
0,
51,
OPC_RecordChild0,
OPC_SwitchType , 22, MVT::i64,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_W), 0,
MVT::i64, 1, 0,
9,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_D), 0,
MVT::i64, 1, 0,
0,
22, MVT::i32,
OPC_Scope, 9,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_W), 0,
MVT::i32, 1, 0,
9,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_D), 0,
MVT::i32, 1, 0,
0,
0,
0,
37|128,3, TARGET_VAL(ISD::ATOMIC_LOAD_NAND),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 77|128,1, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_Scope, 99,
OPC_CheckPredicate, 20,
OPC_Scope, 18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
0,
99,
OPC_CheckPredicate, 12,
OPC_Scope, 18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
0,
0,
77|128,1, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_Scope, 99,
OPC_CheckPredicate, 20,
OPC_Scope, 18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
0,
99,
OPC_CheckPredicate, 12,
OPC_Scope, 18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
0,
0,
0,
21|128,2, TARGET_VAL(ISD::ATOMIC_SWAP),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 5|128,1, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMSWAP_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMSWAP_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
99,
OPC_CheckPredicate, 12,
OPC_Scope, 18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
0,
0,
5|128,1, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMSWAP_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMSWAP_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
99,
OPC_CheckPredicate, 12,
OPC_Scope, 18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
0,
0,
0,
17|128,2, TARGET_VAL(ISD::ATOMIC_LOAD_ADD),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 3|128,1, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
111,
OPC_CheckPredicate, 12,
OPC_Scope, 11,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
0,
0,
3|128,1, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
111,
OPC_CheckPredicate, 12,
OPC_Scope, 11,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
0,
0,
0,
21|128,2, TARGET_VAL(ISD::ATOMIC_LOAD_AND),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 5|128,1, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMAND_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMAND_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
99,
OPC_CheckPredicate, 12,
OPC_Scope, 18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
0,
0,
5|128,1, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMAND_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMAND_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
99,
OPC_CheckPredicate, 12,
OPC_Scope, 18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
0,
0,
0,
21|128,2, TARGET_VAL(ISD::ATOMIC_LOAD_OR),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 5|128,1, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMOR_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMOR_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
99,
OPC_CheckPredicate, 12,
OPC_Scope, 18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
0,
0,
5|128,1, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMOR_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMOR_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
99,
OPC_CheckPredicate, 12,
OPC_Scope, 18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
0,
0,
0,
21|128,2, TARGET_VAL(ISD::ATOMIC_LOAD_XOR),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 5|128,1, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMXOR_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMXOR_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
99,
OPC_CheckPredicate, 12,
OPC_Scope, 18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
0,
0,
5|128,1, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMXOR_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMXOR_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
99,
OPC_CheckPredicate, 12,
OPC_Scope, 18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
0,
0,
0,
75, TARGET_VAL(ISD::ATOMIC_LOAD_UMIN),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 33, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_WU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_DU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
0,
33, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_WU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_DU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
0,
0,
75, TARGET_VAL(ISD::ATOMIC_LOAD_UMAX),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 33, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_WU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_DU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
0,
33, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_WU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_DU), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
0,
0,
75, TARGET_VAL(ISD::ATOMIC_LOAD_MIN),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 33, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
0,
33, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
0,
0,
75, TARGET_VAL(ISD::ATOMIC_LOAD_MAX),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 33, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 2, 1,
0,
33, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_Scope, 13,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
13,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 2, 1,
0,
0,
85, TARGET_VAL(ISD::ATOMIC_CMP_SWAP),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 38, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_RecordChild3,
OPC_Scope, 15,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
15,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
0,
38, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_RecordChild3,
OPC_Scope, 15,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
15,
OPC_CheckPredicate, 12,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
0,
0,
61|128,2, TARGET_VAL(ISD::ATOMIC_LOAD_SUB),
OPC_RecordMemRef,
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 25|128,1, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_Scope, 122,
OPC_CheckPredicate, 12,
OPC_Scope, 18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 1,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, MVT::i64, 3, 1, 2, 3,
22,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::SUB_W), 0,
MVT::i64, 2, 3, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 4, 1,
0,
24,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::SUB_D), 0,
MVT::i64, 2, 3, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i64, 2, 4, 1,
0,
25|128,1, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_Scope, 122,
OPC_CheckPredicate, 12,
OPC_Scope, 18,
OPC_CheckPredicate, 29,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 4,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 30,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 8,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 31,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 10,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 32,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 12,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
18,
OPC_CheckPredicate, 33,
OPC_CheckPatternPredicate, 2,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 14,
OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, MVT::i32, 3, 1, 2, 3,
22,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::SUB_W), 0,
MVT::i32, 2, 3, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 4, 1,
0,
24,
OPC_CheckPredicate, 20,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::SUB_D), 0,
MVT::i32, 2, 3, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
MVT::i32, 2, 4, 1,
0,
0,
7, TARGET_VAL(ISD::TRAP),
OPC_RecordNode,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoUNIMP), 0|OPFL_Chain,
0,
14, TARGET_VAL(ISD::BR),
OPC_RecordNode,
OPC_RecordChild1,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
OPC_MoveParent,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoBR), 0|OPFL_Chain,
1, 1,
8, TARGET_VAL(LoongArchISD::RET),
OPC_RecordNode,
OPC_CaptureGlueInput,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoRET), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic0,
0,
56, TARGET_VAL(ISD::SUB),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_SwitchType , 24, MVT::i64,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SUB_W), 0,
MVT::i64, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SUB_D), 0,
MVT::i64, 2, 0, 1,
0,
24, MVT::i32,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SUB_W), 0,
MVT::i32, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SUB_D), 0,
MVT::i32, 2, 0, 1,
0,
0,
56, TARGET_VAL(ISD::MULHS),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_SwitchType , 24, MVT::i64,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_W), 0,
MVT::i64, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_D), 0,
MVT::i64, 2, 0, 1,
0,
24, MVT::i32,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_W), 0,
MVT::i32, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_D), 0,
MVT::i32, 2, 0, 1,
0,
0,
56, TARGET_VAL(ISD::MULHU),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_SwitchType , 24, MVT::i64,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_WU), 0,
MVT::i64, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_DU), 0,
MVT::i64, 2, 0, 1,
0,
24, MVT::i32,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_WU), 0,
MVT::i32, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_DU), 0,
MVT::i32, 2, 0, 1,
0,
0,
12, TARGET_VAL(LoongArchISD::ROTR_W),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTR_W), 0,
MVT::i64, 2, 0, 1,
29, TARGET_VAL(ISD::DEBUGTRAP),
OPC_RecordNode,
OPC_Scope, 12,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i64, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BREAK), 0|OPFL_Chain,
1, 1,
12,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_EmitInteger, MVT::i32, 0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BREAK), 0|OPFL_Chain,
1, 1,
0,
29, TARGET_VAL(LoongArchISD::REVB_2H),
OPC_RecordChild0,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckChild0Type, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::REVB_2H), 0,
MVT::i64, 1, 0,
11, MVT::i32,
OPC_CheckChild0Type, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::REVB_2H), 0,
MVT::i32, 1, 0,
0,
29, TARGET_VAL(LoongArchISD::BITREV_4B),
OPC_RecordChild0,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckChild0Type, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_4B), 0,
MVT::i64, 1, 0,
11, MVT::i32,
OPC_CheckChild0Type, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_4B), 0,
MVT::i32, 1, 0,
0,
29, TARGET_VAL(LoongArchISD::REVB_2W),
OPC_RecordChild0,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckChild0Type, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::REVB_2W), 0,
MVT::i64, 1, 0,
11, MVT::i32,
OPC_CheckChild0Type, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::REVB_2W), 0,
MVT::i32, 1, 0,
0,
29, TARGET_VAL(LoongArchISD::BITREV_W),
OPC_RecordChild0,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckChild0Type, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_W), 0,
MVT::i64, 1, 0,
11, MVT::i32,
OPC_CheckChild0Type, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_W), 0,
MVT::i32, 1, 0,
0,
12, TARGET_VAL(LoongArchISD::CRC_W_B_W),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRC_W_B_W), 0,
MVT::i64, 2, 0, 1,
12, TARGET_VAL(LoongArchISD::CRC_W_H_W),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRC_W_H_W), 0,
MVT::i64, 2, 0, 1,
12, TARGET_VAL(LoongArchISD::CRC_W_W_W),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRC_W_W_W), 0,
MVT::i64, 2, 0, 1,
12, TARGET_VAL(LoongArchISD::CRC_W_D_W),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRC_W_D_W), 0,
MVT::i64, 2, 0, 1,
12, TARGET_VAL(LoongArchISD::CRCC_W_B_W),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRCC_W_B_W), 0,
MVT::i64, 2, 0, 1,
12, TARGET_VAL(LoongArchISD::CRCC_W_H_W),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRCC_W_H_W), 0,
MVT::i64, 2, 0, 1,
12, TARGET_VAL(LoongArchISD::CRCC_W_W_W),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRCC_W_W_W), 0,
MVT::i64, 2, 0, 1,
12, TARGET_VAL(LoongArchISD::CRCC_W_D_W),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRCC_W_D_W), 0,
MVT::i64, 2, 0, 1,
84|128,6, TARGET_VAL(ISD::STRICT_FSETCC),
OPC_RecordNode,
OPC_RecordChild1,
OPC_Scope, 38|128,3,
OPC_CheckChild1Type, MVT::f32,
OPC_RecordChild2,
OPC_MoveChild3,
OPC_Scope, 31,
OPC_CheckCondCode, ISD::SETOEQ,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETEQ,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETOLT,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETOLE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETLE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETONE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETO,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETUEQ,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETULT,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETULE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETUNE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETUO,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETLT,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
0,
38|128,3,
OPC_CheckChild1Type, MVT::f64,
OPC_RecordChild2,
OPC_MoveChild3,
OPC_Scope, 31,
OPC_CheckCondCode, ISD::SETOEQ,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETEQ,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETOLT,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETOLE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETLE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETONE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETO,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETUEQ,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETULT,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETULE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETUNE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETUO,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETLT,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
0,
0,
84|128,5, TARGET_VAL(ISD::STRICT_FSETCCS),
OPC_RecordNode,
OPC_RecordChild1,
OPC_Scope, 102|128,2,
OPC_CheckChild1Type, MVT::f32,
OPC_RecordChild2,
OPC_MoveChild3,
OPC_Scope, 31,
OPC_CheckCondCode, ISD::SETOEQ,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SEQ_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SEQ_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETOLT,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETOLE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLE_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLE_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETONE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SNE_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SNE_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETO,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SOR_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SOR_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETUEQ,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUEQ_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUEQ_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETULT,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULT_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULT_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETULE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULE_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULE_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETUNE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUNE_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUNE_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETUO,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUN_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUN_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETLT,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 6,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_S), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 8,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_S), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
0,
102|128,2,
OPC_CheckChild1Type, MVT::f64,
OPC_RecordChild2,
OPC_MoveChild3,
OPC_Scope, 31,
OPC_CheckCondCode, ISD::SETOEQ,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SEQ_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SEQ_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETOLT,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETOLE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLE_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLE_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETONE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SNE_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SNE_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETO,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SOR_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SOR_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETUEQ,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUEQ_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUEQ_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETULT,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULT_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULT_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETULE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULE_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULE_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETUNE,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUNE_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUNE_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETUO,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUN_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUN_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
31,
OPC_CheckCondCode, ISD::SETLT,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::i64,
OPC_CheckPatternPredicate, 7,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_D), 0|OPFL_Chain,
MVT::i64, 2, 1, 2,
11, MVT::i32,
OPC_CheckPatternPredicate, 9,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_D), 0|OPFL_Chain,
MVT::i32, 2, 1, 2,
0,
0,
0,
10, TARGET_VAL(LoongArchISD::MOVFR2GR_S_LA64),
OPC_RecordChild0,
OPC_CheckPatternPredicate, 10,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVFR2GR_S), 0,
MVT::i64, 1, 0,
85, TARGET_VAL(ISD::BITCAST),
OPC_RecordChild0,
OPC_Scope, 13,
OPC_CheckChild0Type, MVT::f32,
OPC_CheckType, MVT::i32,
OPC_CheckPatternPredicate, 11,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVFR2GR_S), 0,
MVT::i32, 1, 0,
26,
OPC_CheckChild0Type, MVT::f64,
OPC_SwitchType , 9, MVT::i64,
OPC_CheckPatternPredicate, 12,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVFR2GR_D), 0,
MVT::i64, 1, 0,
9, MVT::i32,
OPC_CheckPatternPredicate, 13,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVFR2GR_D), 0,
MVT::i32, 1, 0,
0,
26,
OPC_CheckChild0Type, MVT::i32,
OPC_SwitchType , 9, MVT::f32,
OPC_CheckPatternPredicate, 11,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
MVT::f32, 1, 0,
9, MVT::f64,
OPC_CheckPatternPredicate, 13,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
MVT::f64, 1, 0,
0,
13,
OPC_CheckChild0Type, MVT::i64,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 12,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
MVT::f64, 1, 0,
0,
32, TARGET_VAL(LoongArchISD::IOCSRRD_B),
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 12, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_B), 0|OPFL_Chain,
MVT::i64, 1, 1,
12, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_B), 0|OPFL_Chain,
MVT::i32, 1, 1,
0,
32, TARGET_VAL(LoongArchISD::IOCSRRD_H),
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 12, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_H), 0|OPFL_Chain,
MVT::i64, 1, 1,
12, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_H), 0|OPFL_Chain,
MVT::i32, 1, 1,
0,
32, TARGET_VAL(LoongArchISD::IOCSRRD_W),
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 12, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_W), 0|OPFL_Chain,
MVT::i64, 1, 1,
12, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_W), 0|OPFL_Chain,
MVT::i32, 1, 1,
0,
32, TARGET_VAL(LoongArchISD::IOCSRWR_B),
OPC_RecordNode,
OPC_RecordChild1,
OPC_Scope, 13,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_B), 0|OPFL_Chain,
2, 1, 2,
13,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_B), 0|OPFL_Chain,
2, 1, 2,
0,
32, TARGET_VAL(LoongArchISD::IOCSRWR_H),
OPC_RecordNode,
OPC_RecordChild1,
OPC_Scope, 13,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_H), 0|OPFL_Chain,
2, 1, 2,
13,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_H), 0|OPFL_Chain,
2, 1, 2,
0,
32, TARGET_VAL(LoongArchISD::IOCSRWR_W),
OPC_RecordNode,
OPC_RecordChild1,
OPC_Scope, 13,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_W), 0|OPFL_Chain,
2, 1, 2,
13,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_W), 0|OPFL_Chain,
2, 1, 2,
0,
32, TARGET_VAL(LoongArchISD::CPUCFG),
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 12, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckPatternPredicate, 4,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CPUCFG), 0|OPFL_Chain,
MVT::i64, 1, 1,
12, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_CheckPatternPredicate, 5,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CPUCFG), 0|OPFL_Chain,
MVT::i32, 1, 1,
0,
32, TARGET_VAL(LoongArchISD::IOCSRRD_D),
OPC_RecordNode,
OPC_RecordChild1,
OPC_SwitchType , 12, MVT::i64,
OPC_CheckChild1Type, MVT::i64,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_D), 0|OPFL_Chain,
MVT::i64, 1, 1,
12, MVT::i32,
OPC_CheckChild1Type, MVT::i32,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_D), 0|OPFL_Chain,
MVT::i32, 1, 1,
0,
32, TARGET_VAL(LoongArchISD::IOCSRWR_D),
OPC_RecordNode,
OPC_RecordChild1,
OPC_Scope, 13,
OPC_CheckChild1Type, MVT::i64,
OPC_RecordChild2,
OPC_CheckPatternPredicate, 0,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_D), 0|OPFL_Chain,
2, 1, 2,
13,
OPC_CheckChild1Type, MVT::i32,
OPC_RecordChild2,
OPC_CheckPatternPredicate, 3,
OPC_EmitMergeInputChains1_0,
OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_D), 0|OPFL_Chain,
2, 1, 2,
0,
23|128,10, TARGET_VAL(ISD::SELECT),
OPC_Scope, 67,
OPC_RecordChild0,
OPC_SwitchType , 30, MVT::i64,
OPC_CheckChild0Type, MVT::i64,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckPatternPredicate, 4,
OPC_EmitNode1, TARGET_VAL(LoongArch::MASKEQZ), 0,
MVT::i64, 2, 1, 0,
OPC_EmitNode1, TARGET_VAL(LoongArch::MASKNEZ), 0,
MVT::i64, 2, 2, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::OR), 0,
MVT::i64, 2, 3, 4,
30, MVT::i32,
OPC_CheckChild0Type, MVT::i32,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckPatternPredicate, 5,
OPC_EmitNode1, TARGET_VAL(LoongArch::MASKEQZ), 0,
MVT::i32, 2, 1, 0,
OPC_EmitNode1, TARGET_VAL(LoongArch::MASKNEZ), 0,
MVT::i32, 2, 2, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::OR), 0,
MVT::i32, 2, 3, 4,
0,
9|128,9,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::SETCC),
OPC_RecordChild0,
OPC_Scope, 63|128,4,
OPC_CheckChild0Type, MVT::f32,
OPC_RecordChild1,
OPC_Scope, 56,
OPC_CheckChild2CondCode, ISD::SETOEQ,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 6,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 8,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETOLT,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 6,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 8,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETOLE,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 6,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 8,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETONE,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 6,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 8,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETO,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 6,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 8,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETUEQ,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 6,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 8,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETULT,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 6,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 8,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETULE,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 6,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 8,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETUNE,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 6,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 8,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETUO,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 6,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 8,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 3, 2, 4,
0,
0,
63|128,4,
OPC_CheckChild0Type, MVT::f64,
OPC_RecordChild1,
OPC_Scope, 56,
OPC_CheckChild2CondCode, ISD::SETOEQ,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 7,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 9,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETOLT,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 7,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 9,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETOLE,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 7,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 9,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETONE,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 7,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 9,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETO,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 7,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 9,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETUEQ,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 7,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 9,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETULT,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 7,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 9,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETULE,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 7,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 9,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETUNE,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 7,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 9,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
0,
56,
OPC_CheckChild2CondCode, ISD::SETUO,
OPC_SwitchType , 24, MVT::i64,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 7,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
MVT::i64, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
24, MVT::i32,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 9,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
MVT::i32, 2, 0, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 3, 2, 4,
0,
0,
0,
69,
OPC_RecordChild0,
OPC_Scope, 32,
OPC_CheckChild0Type, MVT::i64,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_SwitchType , 11, MVT::f32,
OPC_CheckPatternPredicate, 6,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 2, 1, 0,
11, MVT::f64,
OPC_CheckPatternPredicate, 7,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 2, 1, 0,
0,
32,
OPC_CheckChild0Type, MVT::i32,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_SwitchType , 11, MVT::f32,
OPC_CheckPatternPredicate, 8,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
MVT::f32, 3, 2, 1, 0,
11, MVT::f64,
OPC_CheckPatternPredicate, 9,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
MVT::f64, 3, 2, 1, 0,
0,
0,
0,
56, TARGET_VAL(ISD::SDIV),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_SwitchType , 24, MVT::i64,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_W), 0,
MVT::i64, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_D), 0,
MVT::i64, 2, 0, 1,
0,
24, MVT::i32,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_W), 0,
MVT::i32, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_D), 0,
MVT::i32, 2, 0, 1,
0,
0,
56, TARGET_VAL(ISD::UDIV),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_SwitchType , 24, MVT::i64,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_WU), 0,
MVT::i64, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_DU), 0,
MVT::i64, 2, 0, 1,
0,
24, MVT::i32,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_WU), 0,
MVT::i32, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_DU), 0,
MVT::i32, 2, 0, 1,
0,
0,
56, TARGET_VAL(ISD::SREM),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_SwitchType , 24, MVT::i64,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_W), 0,
MVT::i64, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_D), 0,
MVT::i64, 2, 0, 1,
0,
24, MVT::i32,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_W), 0,
MVT::i32, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_D), 0,
MVT::i32, 2, 0, 1,
0,
0,
56, TARGET_VAL(ISD::UREM),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_SwitchType , 24, MVT::i64,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_WU), 0,
MVT::i64, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_DU), 0,
MVT::i64, 2, 0, 1,
0,
24, MVT::i32,
OPC_Scope, 10,
OPC_CheckPatternPredicate, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_WU), 0,
MVT::i32, 2, 0, 1,
10,
OPC_CheckPatternPredicate, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_DU), 0,
MVT::i32, 2, 0, 1,
0,
0,
98, TARGET_VAL(ISD::FDIV),
OPC_Scope, 66,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP),
OPC_CheckPredicate, 34,
OPC_MoveParent,
OPC_Scope, 30,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::FSQRT),
OPC_RecordChild0,
OPC_MoveParent,
OPC_SwitchType , 9, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FRSQRT_S), 0,
MVT::f32, 1, 0,
9, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FRSQRT_D), 0,
MVT::f64, 1, 0,
0,
25,
OPC_RecordChild1,
OPC_SwitchType , 9, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FRECIP_S), 0,
MVT::f32, 1, 0,
9, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FRECIP_D), 0,
MVT::f64, 1, 0,
0,
0,
28,
OPC_RecordChild0,
OPC_RecordChild1,
OPC_SwitchType , 10, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FDIV_S), 0,
MVT::f32, 2, 0, 1,
10, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FDIV_D), 0,
MVT::f64, 2, 0, 1,
0,
0,
123|128,1, TARGET_VAL(ISD::FMA),
OPC_Scope, 43,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
OPC_RecordChild0,
OPC_MoveParent,
OPC_RecordChild1,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
OPC_RecordChild0,
OPC_MoveParent,
OPC_CheckPredicate, 35,
OPC_SwitchType , 11, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMADD_S), 0,
MVT::f32, 3, 0, 1, 2,
11, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMADD_D), 0,
MVT::f64, 3, 0, 1, 2,
0,
67,
OPC_RecordChild0,
OPC_Scope, 42,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
OPC_RecordChild0,
OPC_MoveParent,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
OPC_RecordChild0,
OPC_MoveParent,
OPC_CheckPredicate, 35,
OPC_SwitchType , 11, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMADD_S), 0,
MVT::f32, 3, 1, 0, 2,
11, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMADD_D), 0,
MVT::f64, 3, 1, 0, 2,
0,
20,
OPC_RecordChild1,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
OPC_RecordChild0,
OPC_MoveParent,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMSUB_S), 0,
MVT::f32, 3, 0, 1, 2,
0,
21,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
OPC_RecordChild0,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMSUB_S), 0,
MVT::f32, 3, 0, 1, 2,
21,
OPC_RecordChild0,
OPC_RecordChild1,
OPC_MoveChild2,
OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
OPC_RecordChild0,
OPC_MoveParent,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMSUB_D), 0,
MVT::f64, 3, 0, 1, 2,
21,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
OPC_RecordChild0,
OPC_MoveParent,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_CheckType, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMSUB_D), 0,
MVT::f64, 3, 0, 1, 2,
70,
OPC_RecordChild0,
OPC_Scope, 35,
OPC_MoveChild1,
OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
OPC_RecordChild0,
OPC_MoveParent,
OPC_RecordChild2,
OPC_SwitchType , 11, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMSUB_S), 0,
MVT::f32, 3, 1, 0, 2,
11, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMSUB_D), 0,
MVT::f64, 3, 1, 0, 2,
0,
30,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_SwitchType , 11, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMADD_S), 0,
MVT::f32, 3, 0, 1, 2,
11, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMADD_D), 0,
MVT::f64, 3, 0, 1, 2,
0,
0,
0,
41|128,1, TARGET_VAL(ISD::SINT_TO_FP),
OPC_RecordChild0,
OPC_Scope, 84,
OPC_CheckChild0Type, MVT::i64,
OPC_SwitchType , 39, MVT::f32,
OPC_Scope, 19,
OPC_CheckPatternPredicate, 10,
OPC_CheckComplexPat, /*CP*/4, /*#*/0,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
MVT::f32, 1, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_S_W), 0,
MVT::f32, 1, 2,
16,
OPC_CheckPatternPredicate, 12,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
MVT::f64, 1, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_S_L), 0,
MVT::f32, 1, 1,
0,
37, MVT::f64,
OPC_CheckPatternPredicate, 12,
OPC_Scope, 17,
OPC_CheckComplexPat, /*CP*/4, /*#*/0,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
MVT::f32, 1, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_D_W), 0,
MVT::f64, 1, 2,
14,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
MVT::f64, 1, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_D_L), 0,
MVT::f64, 1, 1,
0,
0,
80,
OPC_CheckChild0Type, MVT::i32,
OPC_SwitchType , 36, MVT::f32,
OPC_Scope, 16,
OPC_CheckPatternPredicate, 11,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
MVT::f32, 1, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_S_W), 0,
MVT::f32, 1, 1,
16,
OPC_CheckPatternPredicate, 13,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
MVT::f64, 1, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_S_L), 0,
MVT::f32, 1, 1,
0,
36, MVT::f64,
OPC_Scope, 16,
OPC_CheckPatternPredicate, 13,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
MVT::f64, 1, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_D_L), 0,
MVT::f64, 1, 1,
16,
OPC_CheckPatternPredicate, 16,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
MVT::f32, 1, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_D_W), 0,
MVT::f64, 1, 1,
0,
0,
0,
24, TARGET_VAL(ISD::UINT_TO_FP),
OPC_RecordChild0,
OPC_CheckChild0Type, MVT::i64,
OPC_CheckType, MVT::f32,
OPC_CheckPatternPredicate, 10,
OPC_CheckComplexPat, /*CP*/4, /*#*/0,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
MVT::f32, 1, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_S_W), 0,
MVT::f32, 1, 2,
65, TARGET_VAL(ISD::FNEG),
OPC_Scope, 36,
OPC_MoveChild0,
OPC_CheckOpcode, TARGET_VAL(ISD::FMA),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_RecordChild2,
OPC_MoveParent,
OPC_SwitchType , 11, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMADD_S), 0,
MVT::f32, 3, 0, 1, 2,
11, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMADD_D), 0,
MVT::f64, 3, 0, 1, 2,
0,
25,
OPC_RecordChild0,
OPC_SwitchType , 9, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_S), 0,
MVT::f32, 1, 0,
9, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_D), 0,
MVT::f64, 1, 0,
0,
0,
121|128,3, TARGET_VAL(ISD::ConstantFP),
OPC_Scope, 64,
OPC_CheckPredicate, 36,
OPC_SwitchType , 28, MVT::f32,
OPC_Scope, 12,
OPC_CheckPatternPredicate, 6,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
MVT::f32, 1, 0,
12,
OPC_CheckPatternPredicate, 8,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
MVT::f32, 1, 0,
0,
28, MVT::f64,
OPC_Scope, 12,
OPC_CheckPatternPredicate, 12,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
MVT::f64, 1, 0,
12,
OPC_CheckPatternPredicate, 13,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
MVT::f64, 1, 0,
0,
0,
92,
OPC_CheckPredicate, 37,
OPC_SwitchType , 42, MVT::f32,
OPC_Scope, 19,
OPC_CheckPatternPredicate, 6,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
MVT::f32, 1, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_S), 0,
MVT::f32, 1, 1,
19,
OPC_CheckPatternPredicate, 8,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
MVT::f32, 1, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_S), 0,
MVT::f32, 1, 1,
0,
42, MVT::f64,
OPC_Scope, 19,
OPC_CheckPatternPredicate, 12,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
MVT::f64, 1, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_D), 0,
MVT::f64, 1, 1,
19,
OPC_CheckPatternPredicate, 13,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
MVT::f64, 1, 0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_D), 0,
MVT::f64, 1, 1,
0,
0,
54,
OPC_CheckPredicate, 36,
OPC_CheckType, MVT::f64,
OPC_Scope, 23,
OPC_CheckPatternPredicate, 17,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W_64), 0,
MVT::f64, 1, 0,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FRH_W), 0,
MVT::f64, 2, 1, 2,
23,
OPC_CheckPatternPredicate, 16,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W_64), 0,
MVT::f64, 1, 0,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FRH_W), 0,
MVT::f64, 2, 1, 2,
0,
8|128,1,
OPC_CheckPredicate, 34,
OPC_SwitchType , 64, MVT::f32,
OPC_Scope, 30,
OPC_CheckPatternPredicate, 6,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_EmitInteger, MVT::i64, 2,
OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
MVT::i64, 2, 0, 1,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
MVT::f32, 1, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_S_W), 0,
MVT::f32, 1, 3,
30,
OPC_CheckPatternPredicate, 8,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_EmitInteger, MVT::i32, 2,
OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
MVT::i32, 2, 0, 1,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
MVT::f32, 1, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_S_W), 0,
MVT::f32, 1, 3,
0,
64, MVT::f64,
OPC_Scope, 30,
OPC_CheckPatternPredicate, 12,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_EmitInteger, MVT::i64, 2,
OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_D), 0,
MVT::i64, 2, 0, 1,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
MVT::f64, 1, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_D_L), 0,
MVT::f64, 1, 3,
30,
OPC_CheckPatternPredicate, 13,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_EmitInteger, MVT::i32, 2,
OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_D), 0,
MVT::i32, 2, 0, 1,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
MVT::f64, 1, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_D_L), 0,
MVT::f64, 1, 3,
0,
0,
68,
OPC_CheckPredicate, 37,
OPC_CheckType, MVT::f64,
OPC_Scope, 30,
OPC_CheckPatternPredicate, 17,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W_64), 0,
MVT::f64, 1, 0,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FRH_W), 0,
MVT::f64, 2, 1, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_D), 0,
MVT::f64, 1, 3,
30,
OPC_CheckPatternPredicate, 16,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W_64), 0,
MVT::f64, 1, 0,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FRH_W), 0,
MVT::f64, 2, 1, 2,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_D), 0,
MVT::f64, 1, 3,
0,
82,
OPC_CheckPredicate, 34,
OPC_CheckType, MVT::f64,
OPC_Scope, 37,
OPC_CheckPatternPredicate, 17,
OPC_EmitRegister, MVT::i64, LoongArch::R0,
OPC_EmitInteger, MVT::i64, 2,
OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
MVT::i64, 2, 0, 1,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
MVT::f32, 1, 2,
OPC_EmitNode1, TARGET_VAL(LoongArch::FFINT_S_W), 0,
MVT::f32, 1, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCVT_D_S), 0,
MVT::f64, 1, 4,
37,
OPC_CheckPatternPredicate, 16,
OPC_EmitRegister, MVT::i32, LoongArch::R0,
OPC_EmitInteger, MVT::i32, 2,
OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
MVT::i32, 2, 0, 1,
OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
MVT::f32, 1, 2,
OPC_EmitNode1, TARGET_VAL(LoongArch::FFINT_S_W), 0,
MVT::f32, 1, 3,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCVT_D_S), 0,
MVT::f64, 1, 4,
0,
0,
28, TARGET_VAL(ISD::FADD),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_SwitchType , 10, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FADD_S), 0,
MVT::f32, 2, 0, 1,
10, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FADD_D), 0,
MVT::f64, 2, 0, 1,
0,
28, TARGET_VAL(ISD::FSUB),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_SwitchType , 10, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSUB_S), 0,
MVT::f32, 2, 0, 1,
10, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSUB_D), 0,
MVT::f64, 2, 0, 1,
0,
28, TARGET_VAL(ISD::FMUL),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_SwitchType , 10, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMUL_S), 0,
MVT::f32, 2, 0, 1,
10, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMUL_D), 0,
MVT::f64, 2, 0, 1,
0,
76, TARGET_VAL(ISD::FCOPYSIGN),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_Scope, 35,
OPC_CheckChild1Type, MVT::f32,
OPC_SwitchType , 10, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCOPYSIGN_S), 0,
MVT::f32, 2, 0, 1,
17, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCVT_D_S), 0,
MVT::f64, 1, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCOPYSIGN_D), 0,
MVT::f64, 2, 0, 2,
0,
35,
OPC_CheckChild1Type, MVT::f64,
OPC_SwitchType , 10, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCOPYSIGN_D), 0,
MVT::f64, 2, 0, 1,
17, MVT::f32,
OPC_CheckPatternPredicate, 15,
OPC_EmitNode1, TARGET_VAL(LoongArch::FCVT_S_D), 0,
MVT::f32, 1, 1,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCOPYSIGN_S), 0,
MVT::f32, 2, 0, 2,
0,
0,
28, TARGET_VAL(ISD::FMAXNUM_IEEE),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_SwitchType , 10, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMAX_S), 0,
MVT::f32, 2, 0, 1,
10, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMAX_D), 0,
MVT::f64, 2, 0, 1,
0,
28, TARGET_VAL(ISD::FMINNUM_IEEE),
OPC_RecordChild0,
OPC_RecordChild1,
OPC_SwitchType , 10, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMIN_S), 0,
MVT::f32, 2, 0, 1,
10, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMIN_D), 0,
MVT::f64, 2, 0, 1,
0,
25, TARGET_VAL(ISD::FABS),
OPC_RecordChild0,
OPC_SwitchType , 9, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FABS_S), 0,
MVT::f32, 1, 0,
9, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FABS_D), 0,
MVT::f64, 1, 0,
0,
25, TARGET_VAL(ISD::FSQRT),
OPC_RecordChild0,
OPC_SwitchType , 9, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSQRT_S), 0,
MVT::f32, 1, 0,
9, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSQRT_D), 0,
MVT::f64, 1, 0,
0,
27, TARGET_VAL(ISD::FCANONICALIZE),
OPC_RecordChild0,
OPC_SwitchType , 10, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMAX_S), 0,
MVT::f32, 2, 0, 0,
10, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMAX_D), 0,
MVT::f64, 2, 0, 0,
0,
57, TARGET_VAL(LoongArchISD::FTINT),
OPC_RecordChild0,
OPC_Scope, 26,
OPC_CheckChild0Type, MVT::f32,
OPC_SwitchType , 9, MVT::f32,
OPC_CheckPatternPredicate, 14,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FTINTRZ_W_S), 0,
MVT::f32, 1, 0,
9, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FTINTRZ_L_S), 0,
MVT::f64, 1, 0,
0,
26,
OPC_CheckChild0Type, MVT::f64,
OPC_SwitchType , 9, MVT::f32,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FTINTRZ_W_D), 0,
MVT::f32, 1, 0,
9, MVT::f64,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FTINTRZ_L_D), 0,
MVT::f64, 1, 0,
0,
0,
25, TARGET_VAL(ISD::FRINT),
OPC_RecordChild0,
OPC_SwitchType , 9, MVT::f32,
OPC_CheckPatternPredicate, 18,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FRINT_S), 0,
MVT::f32, 1, 0,
9, MVT::f64,
OPC_CheckPatternPredicate, 19,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FRINT_D), 0,
MVT::f64, 1, 0,
0,
10, TARGET_VAL(ISD::FP_ROUND),
OPC_RecordChild0,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCVT_S_D), 0,
MVT::f32, 1, 0,
10, TARGET_VAL(ISD::FP_EXTEND),
OPC_RecordChild0,
OPC_CheckPatternPredicate, 15,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCVT_D_S), 0,
MVT::f64, 1, 0,
10, TARGET_VAL(LoongArchISD::MOVGR2FR_W_LA64),
OPC_RecordChild0,
OPC_CheckPatternPredicate, 10,
OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
MVT::f32, 1, 0,
0,
0
}; // Total Array size is 22169 bytes
#undef TARGET_VAL
SelectCodeCommon(N, MatcherTable,sizeof(MatcherTable));
}
#endif // GET_DAGISEL_BODY
#ifdef GET_DAGISEL_DECL
bool CheckPatternPredicate(unsigned PredNo) const override;
#endif
#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
bool DAGISEL_CLASS_COLONCOLON CheckPatternPredicate(unsigned PredNo) const
#if DAGISEL_INLINE
override
#endif
{
switch (PredNo) {
default: llvm_unreachable("Invalid predicate in table?");
case 0: return (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
case 1: return (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
case 2: return (!Subtarget->is64Bit()) && (!(MF->getSubtarget().checkFeatures("+64bit")));
case 3: return (Subtarget->is64Bit()) && (!(MF->getSubtarget().checkFeatures("+64bit")));
case 4: return (MF->getSubtarget().checkFeatures("+64bit"));
case 5: return (!(MF->getSubtarget().checkFeatures("+64bit")));
case 6: return (Subtarget->hasBasicF()) && (MF->getSubtarget().checkFeatures("+64bit"));
case 7: return (Subtarget->hasBasicD()) && (MF->getSubtarget().checkFeatures("+64bit"));
case 8: return (Subtarget->hasBasicF()) && (!(MF->getSubtarget().checkFeatures("+64bit")));
case 9: return (Subtarget->hasBasicD()) && (!(MF->getSubtarget().checkFeatures("+64bit")));
case 10: return (Subtarget->hasBasicF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
case 11: return (Subtarget->hasBasicF()) && (!Subtarget->is64Bit()) && (!(MF->getSubtarget().checkFeatures("+64bit")));
case 12: return (Subtarget->hasBasicD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
case 13: return (Subtarget->hasBasicD()) && (Subtarget->is64Bit()) && (!(MF->getSubtarget().checkFeatures("+64bit")));
case 14: return (Subtarget->hasBasicF());
case 15: return (Subtarget->hasBasicD());
case 16: return (Subtarget->hasBasicD()) && (!Subtarget->is64Bit()) && (!(MF->getSubtarget().checkFeatures("+64bit")));
case 17: return (Subtarget->hasBasicD()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
case 18: return (Subtarget->hasBasicF()) && (Subtarget->is64Bit());
case 19: return (Subtarget->hasBasicD()) && (Subtarget->is64Bit());
}
}
#endif // GET_DAGISEL_BODY
#ifdef GET_DAGISEL_DECL
bool CheckNodePredicate(SDNode *Node, unsigned PredNo) const override;
#endif
#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
bool DAGISEL_CLASS_COLONCOLON CheckNodePredicate(SDNode *Node, unsigned PredNo) const
#if DAGISEL_INLINE
override
#endif
{
switch (PredNo) {
default: llvm_unreachable("Invalid predicate in table?");
case 0: {
// Predicate_uimm2_plus1
int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<2>(Imm - 1);
}
case 1: {
// Predicate_uimm5
int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<5>(Imm);
}
case 2: {
// Predicate_uimm6
int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<6>(Imm);
}
case 3: {
// Predicate_simm12
int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isInt<12>(Imm);
}
case 4: {
// Predicate_AddLike
SDNode *N = Node;
(void)N;
return N->getOpcode() == ISD::ADD || isOrEquivalentToAdd(N);
}
case 5: {
// Predicate_unindexedload
SDNode *N = Node;
(void)N;
if (cast<LoadSDNode>(N)->getAddressingMode() != ISD::UNINDEXED) return false;
return true;
}
case 6: {
// Predicate_sextload
SDNode *N = Node;
(void)N;
if (cast<LoadSDNode>(N)->getExtensionType() != ISD::SEXTLOAD) return false;
return true;
}
case 7: {
// Predicate_sextloadi8
// Predicate_extloadi8
// Predicate_zextloadi8
// Predicate_atomic_load_8
// Predicate_atomic_store_8
SDNode *N = Node;
(void)N;
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i8) return false;
return true;
}
case 8: {
// Predicate_extload
SDNode *N = Node;
(void)N;
if (cast<LoadSDNode>(N)->getExtensionType() != ISD::EXTLOAD) return false;
return true;
}
case 9: {
// Predicate_sextloadi16
// Predicate_extloadi16
// Predicate_zextloadi16
// Predicate_atomic_load_16
// Predicate_atomic_store_16
SDNode *N = Node;
(void)N;
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i16) return false;
return true;
}
case 10: {
// Predicate_load
SDNode *N = Node;
(void)N;
if (cast<LoadSDNode>(N)->getExtensionType() != ISD::NON_EXTLOAD) return false;
return true;
}
case 11: {
// Predicate_zextload
SDNode *N = Node;
(void)N;
if (cast<LoadSDNode>(N)->getExtensionType() != ISD::ZEXTLOAD) return false;
return true;
}
case 12: {
// Predicate_sextloadi32
// Predicate_extloadi32
// Predicate_zextloadi32
// Predicate_atomic_load_32
// Predicate_atomic_store_32
// Predicate_atomic_load_nand_32
// Predicate_atomic_swap_32
// Predicate_atomic_load_add_32
// Predicate_atomic_load_and_32
// Predicate_atomic_load_or_32
// Predicate_atomic_load_xor_32
// Predicate_atomic_load_umin_32
// Predicate_atomic_load_umax_32
// Predicate_atomic_load_min_32
// Predicate_atomic_load_max_32
// Predicate_atomic_cmp_swap_32
// Predicate_atomic_load_sub_32
SDNode *N = Node;
(void)N;
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i32) return false;
return true;
}
case 13: {
// Predicate_simm14_lsl2
int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isShiftedInt<14,2>(Imm);
}
case 14: {
// Predicate_unindexedstore
SDNode *N = Node;
(void)N;
if (cast<StoreSDNode>(N)->getAddressingMode() != ISD::UNINDEXED) return false;
return true;
}
case 15: {
// Predicate_truncstore
SDNode *N = Node;
(void)N;
if (!cast<StoreSDNode>(N)->isTruncatingStore()) return false;
return true;
}
case 16: {
// Predicate_truncstorei8
SDNode *N = Node;
(void)N;
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i8) return false;
if (!cast<StoreSDNode>(N)->isTruncatingStore()) return false;
return true;
}
case 17: {
// Predicate_truncstorei16
SDNode *N = Node;
(void)N;
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i16) return false;
if (!cast<StoreSDNode>(N)->isTruncatingStore()) return false;
return true;
}
case 18: {
// Predicate_truncstorei32
SDNode *N = Node;
(void)N;
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i32) return false;
if (!cast<StoreSDNode>(N)->isTruncatingStore()) return false;
return true;
}
case 19: {
// Predicate_store
SDNode *N = Node;
(void)N;
if (cast<StoreSDNode>(N)->isTruncatingStore()) return false;
return true;
}
case 20: {
// Predicate_atomic_load_64
// Predicate_atomic_store_64
// Predicate_atomic_load_nand_64
// Predicate_atomic_swap_64
// Predicate_atomic_load_add_64
// Predicate_atomic_load_and_64
// Predicate_atomic_load_or_64
// Predicate_atomic_load_xor_64
// Predicate_atomic_load_umin_64
// Predicate_atomic_load_umax_64
// Predicate_atomic_load_min_64
// Predicate_atomic_load_max_64
// Predicate_atomic_cmp_swap_64
// Predicate_atomic_load_sub_64
SDNode *N = Node;
(void)N;
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i64) return false;
return true;
}
case 21: {
// Predicate_atomic_store_unordered_monotonic_32
// Predicate_atomic_store_unordered_monotonic_64
SDNode *N = Node;
(void)N;
AtomicOrdering Ordering = cast<AtomicSDNode>(N)->getSuccessOrdering();
return !isReleaseOrStronger(Ordering);
}
case 22: {
// Predicate_atomic_store_release_seqcst_32
// Predicate_atomic_store_release_seqcst_64
SDNode *N = Node;
(void)N;
AtomicOrdering Ordering = cast<AtomicSDNode>(N)->getSuccessOrdering();
return isReleaseOrStronger(Ordering);
}
case 23: {
// Predicate_uimm12
int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<12>(Imm);
}
case 24: {
// Predicate_simm16_lsl2
int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isInt<16>(Imm>>2);
}
case 25: {
// Predicate_simm12_plus1
int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return (isInt<12>(Imm) && Imm != -2048) || Imm == 2048;
}
case 26: {
// Predicate_uimm15
int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<15>(Imm);
}
case 27: {
// Predicate_uimm14
int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<14>(Imm);
}
case 28: {
// Predicate_uimm2
int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<2>(Imm);
}
case 29: {
// Predicate_atomic_load_nand_64_monotonic
// Predicate_atomic_load_nand_32_monotonic
// Predicate_atomic_swap_32_monotonic
// Predicate_atomic_load_add_32_monotonic
// Predicate_atomic_load_and_32_monotonic
// Predicate_atomic_load_or_32_monotonic
// Predicate_atomic_load_xor_32_monotonic
// Predicate_atomic_load_sub_32_monotonic
SDNode *N = Node;
(void)N;
if (cast<AtomicSDNode>(N)->getMergedOrdering() != AtomicOrdering::Monotonic) return false;
return true;
}
case 30: {
// Predicate_atomic_load_nand_64_acquire
// Predicate_atomic_load_nand_32_acquire
// Predicate_atomic_swap_32_acquire
// Predicate_atomic_load_add_32_acquire
// Predicate_atomic_load_and_32_acquire
// Predicate_atomic_load_or_32_acquire
// Predicate_atomic_load_xor_32_acquire
// Predicate_atomic_load_sub_32_acquire
SDNode *N = Node;
(void)N;
if (cast<AtomicSDNode>(N)->getMergedOrdering() != AtomicOrdering::Acquire) return false;
return true;
}
case 31: {
// Predicate_atomic_load_nand_64_release
// Predicate_atomic_load_nand_32_release
// Predicate_atomic_swap_32_release
// Predicate_atomic_load_add_32_release
// Predicate_atomic_load_and_32_release
// Predicate_atomic_load_or_32_release
// Predicate_atomic_load_xor_32_release
// Predicate_atomic_load_sub_32_release
SDNode *N = Node;
(void)N;
if (cast<AtomicSDNode>(N)->getMergedOrdering() != AtomicOrdering::Release) return false;
return true;
}
case 32: {
// Predicate_atomic_load_nand_64_acq_rel
// Predicate_atomic_load_nand_32_acq_rel
// Predicate_atomic_swap_32_acq_rel
// Predicate_atomic_load_add_32_acq_rel
// Predicate_atomic_load_and_32_acq_rel
// Predicate_atomic_load_or_32_acq_rel
// Predicate_atomic_load_xor_32_acq_rel
// Predicate_atomic_load_sub_32_acq_rel
SDNode *N = Node;
(void)N;
if (cast<AtomicSDNode>(N)->getMergedOrdering() != AtomicOrdering::AcquireRelease) return false;
return true;
}
case 33: {
// Predicate_atomic_load_nand_64_seq_cst
// Predicate_atomic_load_nand_32_seq_cst
// Predicate_atomic_swap_32_seq_cst
// Predicate_atomic_load_add_32_seq_cst
// Predicate_atomic_load_and_32_seq_cst
// Predicate_atomic_load_or_32_seq_cst
// Predicate_atomic_load_xor_32_seq_cst
// Predicate_atomic_load_sub_32_seq_cst
SDNode *N = Node;
(void)N;
if (cast<AtomicSDNode>(N)->getMergedOrdering() != AtomicOrdering::SequentiallyConsistent) return false;
return true;
}
case 34: {
// Predicate_fpimm1
auto *N = cast<ConstantFPSDNode>(Node);
(void)N;
return N->isExactlyValue(+1.0);
}
case 35: {
// Predicate_fma_nsz
SDNode *N = Node;
(void)N;
return N->getFlags().hasNoSignedZeros();
}
case 36: {
// Predicate_fpimm0
auto *N = cast<ConstantFPSDNode>(Node);
(void)N;
return N->isExactlyValue(+0.0);
}
case 37: {
// Predicate_fpimm0neg
auto *N = cast<ConstantFPSDNode>(Node);
(void)N;
return N->isExactlyValue(-0.0);
}
}
}
#endif // GET_DAGISEL_BODY
#ifdef GET_DAGISEL_DECL
bool CheckComplexPattern(SDNode *Root, SDNode *Parent,
SDValue N, unsigned PatternNo,
SmallVectorImpl<std::pair<SDValue, SDNode *>> &Result) override;
#endif
#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
bool DAGISEL_CLASS_COLONCOLON CheckComplexPattern(SDNode *Root, SDNode *Parent,
SDValue N, unsigned PatternNo,
SmallVectorImpl<std::pair<SDValue, SDNode *>> &Result)
#if DAGISEL_INLINE
override
#endif
{
unsigned NextRes = Result.size();
switch (PatternNo) {
default: llvm_unreachable("Invalid pattern # in table?");
case 0:
Result.resize(NextRes+1);
return SelectBaseAddr(N, Result[NextRes+0].first);
case 1:
Result.resize(NextRes+1);
return selectNonFIBaseAddr(N, Result[NextRes+0].first);
case 2:
Result.resize(NextRes+1);
return selectShiftMaskGRLen(N, Result[NextRes+0].first);
case 3:
Result.resize(NextRes+1);
return selectShiftMask32(N, Result[NextRes+0].first);
case 4:
Result.resize(NextRes+1);
return selectSExti32(N, Result[NextRes+0].first);
}
}
#endif // GET_DAGISEL_BODY
#ifdef GET_DAGISEL_DECL
SDValue RunSDNodeXForm(SDValue V, unsigned XFormNo) override;
#endif
#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
SDValue DAGISEL_CLASS_COLONCOLON RunSDNodeXForm(SDValue V, unsigned XFormNo)
#if DAGISEL_INLINE
override
#endif
{
switch (XFormNo) {
default: llvm_unreachable("Invalid xform # in table?");
case 0: {
ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
return CurDAG->getTargetConstant(32 - N->getZExtValue(), SDLoc(N),
N->getValueType(0));
}
case 1: {
ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
return CurDAG->getTargetConstant(-N->getSExtValue(), SDLoc(N),
N->getValueType(0));
}
}
}
#endif // GET_DAGISEL_BODY
#ifdef DAGISEL_INLINE
#undef DAGISEL_INLINE
#endif
#ifdef DAGISEL_CLASS_COLONCOLON
#undef DAGISEL_CLASS_COLONCOLON
#endif
#ifdef GET_DAGISEL_DECL
#undef GET_DAGISEL_DECL
#endif
#ifdef GET_DAGISEL_BODY
#undef GET_DAGISEL_BODY
#endif