/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* DAG Instruction Selector for the Mips 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[] = {
/*     0*/  OPC_SwitchOpcode /*181 cases */, 73|128,7/*969*/, TARGET_VAL(ISD::STORE),// ->974
/*     5*/    OPC_RecordMemRef,
/*     6*/    OPC_RecordNode, // #0 = 'st' chained node
/*     7*/    OPC_Scope, 67|128,1/*195*/, /*->205*/ // 3 children in Scope
/*    10*/      OPC_RecordChild1, // #1 = $v
/*    11*/      OPC_Scope, 110, /*->123*/ // 2 children in Scope
/*    13*/        OPC_CheckChild1Type, MVT::f64,
/*    15*/        OPC_Scope, 67, /*->84*/ // 2 children in Scope
/*    17*/          OPC_RecordChild2, // #2 = $a
/*    18*/          OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*    20*/          OPC_CheckPredicate, 1, // Predicate_store
/*    22*/          OPC_Scope, 14, /*->38*/ // 4 children in Scope
/*    24*/            OPC_CheckPatternPredicate, 0, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit())
/*    26*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // selectAddrRegImm:$a #3 #4
/*    29*/            OPC_EmitMergeInputChains1_0,
/*    30*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SDC1_D64_MMR6), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st f64:{ *:[f64] }:$v, addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 54
                      // Dst: (SDC1_D64_MMR6 f64:{ *:[f64] }:$v, addrRegImm:{ *:[i32] }:$a)
/*    38*/          /*Scope*/ 14, /*->53*/
/*    39*/            OPC_CheckPatternPredicate, 1, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/*    41*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // selectAddrRegImm:$a #3 #4
/*    44*/            OPC_EmitMergeInputChains1_0,
/*    45*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SDC164), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st f64:{ *:[f64] }:$v, addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 53
                      // Dst: (SDC164 f64:{ *:[f64] }:$v, addrRegImm:{ *:[iPTR] }:$a)
/*    53*/          /*Scope*/ 14, /*->68*/
/*    54*/            OPC_CheckPatternPredicate, 2, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/*    56*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // selectAddrRegImm:$a #3 #4
/*    59*/            OPC_EmitMergeInputChains1_0,
/*    60*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SDC1), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st f64:{ *:[f64] }:$v, addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 53
                      // Dst: (SDC1 f64:{ *:[f64] }:$v, addrRegImm:{ *:[iPTR] }:$a)
/*    68*/          /*Scope*/ 14, /*->83*/
/*    69*/            OPC_CheckPatternPredicate, 3, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit())
/*    71*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // selectAddrRegImm:$a #3 #4
/*    74*/            OPC_EmitMergeInputChains1_0,
/*    75*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SDC1_MM), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st f64:{ *:[f64] }:$v, addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 53
                      // Dst: (SDC1_MM f64:{ *:[f64] }:$v, addrRegImm:{ *:[i32] }:$a)
/*    83*/          0, /*End of Scope*/
/*    84*/        /*Scope*/ 37, /*->122*/
/*    85*/          OPC_MoveChild2,
/*    86*/          OPC_CheckOpcode, TARGET_VAL(ISD::ADD),
/*    89*/          OPC_RecordChild0, // #2 = $base
/*    90*/          OPC_RecordChild1, // #3 = $index
/*    91*/          OPC_MoveParent,
/*    92*/          OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*    94*/          OPC_CheckPredicate, 1, // Predicate_store
/*    96*/          OPC_Scope, 11, /*->109*/ // 2 children in Scope
/*    98*/            OPC_CheckPatternPredicate, 4, // (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isTargetNaCl()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*   100*/            OPC_EmitMergeInputChains1_0,
/*   101*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SDXC1), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 2, 3, 
                      // Src: (st AFGR64Opnd:{ *:[f64] }:$fs, (add:{ *:[iPTR] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 27
                      // Dst: (SDXC1 AFGR64Opnd:{ *:[f64] }:$fs, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index)
/*   109*/          /*Scope*/ 11, /*->121*/
/*   110*/            OPC_CheckPatternPredicate, 5, // (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*   112*/            OPC_EmitMergeInputChains1_0,
/*   113*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SDXC164), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 2, 3, 
                      // Src: (st FGR64Opnd:{ *:[f64] }:$fs, (add:{ *:[iPTR] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 27
                      // Dst: (SDXC164 FGR64Opnd:{ *:[f64] }:$fs, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index)
/*   121*/          0, /*End of Scope*/
/*   122*/        0, /*End of Scope*/
/*   123*/      /*Scope*/ 80, /*->204*/
/*   124*/        OPC_CheckChild1Type, MVT::f32,
/*   126*/        OPC_Scope, 37, /*->165*/ // 2 children in Scope
/*   128*/          OPC_RecordChild2, // #2 = $a
/*   129*/          OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   131*/          OPC_CheckPredicate, 1, // Predicate_store
/*   133*/          OPC_Scope, 14, /*->149*/ // 2 children in Scope
/*   135*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*   137*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // selectAddrRegImm:$a #3 #4
/*   140*/            OPC_EmitMergeInputChains1_0,
/*   141*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SWC1), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st f32:{ *:[f32] }:$v, addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 53
                      // Dst: (SWC1 f32:{ *:[f32] }:$v, addrRegImm:{ *:[iPTR] }:$a)
/*   149*/          /*Scope*/ 14, /*->164*/
/*   150*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/*   152*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // selectAddrRegImm:$a #3 #4
/*   155*/            OPC_EmitMergeInputChains1_0,
/*   156*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SWC1_MM), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st f32:{ *:[f32] }:$v, addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 53
                      // Dst: (SWC1_MM f32:{ *:[f32] }:$v, addrRegImm:{ *:[i32] }:$a)
/*   164*/          0, /*End of Scope*/
/*   165*/        /*Scope*/ 37, /*->203*/
/*   166*/          OPC_MoveChild2,
/*   167*/          OPC_CheckOpcode, TARGET_VAL(ISD::ADD),
/*   170*/          OPC_RecordChild0, // #2 = $base
/*   171*/          OPC_RecordChild1, // #3 = $index
/*   172*/          OPC_MoveParent,
/*   173*/          OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   175*/          OPC_CheckPredicate, 1, // Predicate_store
/*   177*/          OPC_Scope, 11, /*->190*/ // 2 children in Scope
/*   179*/            OPC_CheckPatternPredicate, 8, // (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isTargetNaCl()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*   181*/            OPC_EmitMergeInputChains1_0,
/*   182*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SWXC1), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 2, 3, 
                      // Src: (st FGR32Opnd:{ *:[f32] }:$fs, (add:{ *:[iPTR] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 27
                      // Dst: (SWXC1 FGR32Opnd:{ *:[f32] }:$fs, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index)
/*   190*/          /*Scope*/ 11, /*->202*/
/*   191*/            OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/*   193*/            OPC_EmitMergeInputChains1_0,
/*   194*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SWXC1_MM), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 2, 3, 
                      // Src: (st FGR32Opnd:{ *:[f32] }:$fs, (add:{ *:[iPTR] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 27
                      // Dst: (SWXC1_MM FGR32Opnd:{ *:[f32] }:$fs, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index)
/*   202*/          0, /*End of Scope*/
/*   203*/        0, /*End of Scope*/
/*   204*/      0, /*End of Scope*/
/*   205*/    /*Scope*/ 26, /*->232*/
/*   206*/      OPC_CheckChild1Integer, 0, 
/*   208*/      OPC_CheckChild1Type, MVT::i32,
/*   210*/      OPC_RecordChild2, // #1 = $dst
/*   211*/      OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   213*/      OPC_CheckPredicate, 1, // Predicate_store
/*   215*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*   217*/      OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$dst #2 #3
/*   220*/      OPC_EmitMergeInputChains1_0,
/*   221*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*   224*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::SW), 0|OPFL_Chain|OPFL_MemRefs,
                    3/*#Ops*/, 4, 2, 3, 
                // Src: (st 0:{ *:[i32] }, addr:{ *:[iPTR] }:$dst)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 18
                // Dst: (SW ZERO:{ *:[i32] }, addr:{ *:[iPTR] }:$dst)
/*   232*/    /*Scope*/ 99|128,5/*739*/, /*->973*/
/*   234*/      OPC_RecordChild1, // #1 = $rt
/*   235*/      OPC_Scope, 44|128,2/*300*/, /*->538*/ // 14 children in Scope
/*   238*/        OPC_CheckChild1Type, MVT::i32,
/*   240*/        OPC_RecordChild2, // #2 = $addr
/*   241*/        OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   243*/        OPC_Scope, 38, /*->283*/ // 6 children in Scope
/*   245*/          OPC_CheckPredicate, 2, // Predicate_truncstore
/*   247*/          OPC_Scope, 16, /*->265*/ // 2 children in Scope
/*   249*/            OPC_CheckPredicate, 3, // Predicate_truncstorei8
/*   251*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*   253*/            OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/*   256*/            OPC_EmitMergeInputChains1_0,
/*   257*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SB), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st GPR32Opnd:{ *:[i32] }:$rt, addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 13
                      // Dst: (SB GPR32Opnd:{ *:[i32] }:$rt, addr:{ *:[iPTR] }:$addr)
/*   265*/          /*Scope*/ 16, /*->282*/
/*   266*/            OPC_CheckPredicate, 4, // Predicate_truncstorei16
/*   268*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*   270*/            OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/*   273*/            OPC_EmitMergeInputChains1_0,
/*   274*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SH), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st GPR32Opnd:{ *:[i32] }:$rt, addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 13
                      // Dst: (SH GPR32Opnd:{ *:[i32] }:$rt, addr:{ *:[iPTR] }:$addr)
/*   282*/          0, /*End of Scope*/
/*   283*/        /*Scope*/ 79, /*->363*/
/*   284*/          OPC_CheckPredicate, 1, // Predicate_store
/*   286*/          OPC_Scope, 14, /*->302*/ // 5 children in Scope
/*   288*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*   290*/            OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/*   293*/            OPC_EmitMergeInputChains1_0,
/*   294*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st GPR32Opnd:{ *:[i32] }:$rt, addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                      // Dst: (SW GPR32Opnd:{ *:[i32] }:$rt, addr:{ *:[iPTR] }:$addr)
/*   302*/          /*Scope*/ 14, /*->317*/
/*   303*/            OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*   305*/            OPC_CheckComplexPat, /*CP*/2, /*#*/2, // selectAddrDefault:$addr #3 #4
/*   308*/            OPC_EmitMergeInputChains1_0,
/*   309*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SWC2), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st COP2Opnd:{ *:[i32] }:$rt, addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                      // Dst: (SWC2 COP2Opnd:{ *:[i32] }:$rt, addrDefault:{ *:[iPTR] }:$addr)
/*   317*/          /*Scope*/ 14, /*->332*/
/*   318*/            OPC_CheckPatternPredicate, 11, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*   320*/            OPC_CheckComplexPat, /*CP*/2, /*#*/2, // selectAddrDefault:$addr #3 #4
/*   323*/            OPC_EmitMergeInputChains1_0,
/*   324*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SDC2), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st COP2Opnd:{ *:[i32] }:$rt, addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                      // Dst: (SDC2 COP2Opnd:{ *:[i32] }:$rt, addrDefault:{ *:[iPTR] }:$addr)
/*   332*/          /*Scope*/ 14, /*->347*/
/*   333*/            OPC_CheckPatternPredicate, 12, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasCnMips()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*   335*/            OPC_CheckComplexPat, /*CP*/2, /*#*/2, // selectAddrDefault:$addr #3 #4
/*   338*/            OPC_EmitMergeInputChains1_0,
/*   339*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SWC3), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st COP3Opnd:{ *:[i32] }:$rt, addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                      // Dst: (SWC3 COP3Opnd:{ *:[i32] }:$rt, addrDefault:{ *:[iPTR] }:$addr)
/*   347*/          /*Scope*/ 14, /*->362*/
/*   348*/            OPC_CheckPatternPredicate, 13, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasCnMips()) && (!Subtarget->inMicroMipsMode())
/*   350*/            OPC_CheckComplexPat, /*CP*/2, /*#*/2, // selectAddrDefault:$addr #3 #4
/*   353*/            OPC_EmitMergeInputChains1_0,
/*   354*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SDC3), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st COP3Opnd:{ *:[i32] }:$rt, addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                      // Dst: (SDC3 COP3Opnd:{ *:[i32] }:$rt, addrDefault:{ *:[iPTR] }:$addr)
/*   362*/          0, /*End of Scope*/
/*   363*/        /*Scope*/ 38, /*->402*/
/*   364*/          OPC_CheckPredicate, 2, // Predicate_truncstore
/*   366*/          OPC_Scope, 16, /*->384*/ // 2 children in Scope
/*   368*/            OPC_CheckPredicate, 3, // Predicate_truncstorei8
/*   370*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*   372*/            OPC_CheckComplexPat, /*CP*/3, /*#*/2, // selectAddr16:$addr #3 #4
/*   375*/            OPC_EmitMergeInputChains1_0,
/*   376*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SbRxRyOffMemX16), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st CPU16Regs:{ *:[i32] }:$r, addr16:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 13
                      // Dst: (SbRxRyOffMemX16 CPU16Regs:{ *:[i32] }:$r, addr16:{ *:[i32] }:$addr)
/*   384*/          /*Scope*/ 16, /*->401*/
/*   385*/            OPC_CheckPredicate, 4, // Predicate_truncstorei16
/*   387*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*   389*/            OPC_CheckComplexPat, /*CP*/3, /*#*/2, // selectAddr16:$addr #3 #4
/*   392*/            OPC_EmitMergeInputChains1_0,
/*   393*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::ShRxRyOffMemX16), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st CPU16Regs:{ *:[i32] }:$r, addr16:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 13
                      // Dst: (ShRxRyOffMemX16 CPU16Regs:{ *:[i32] }:$r, addr16:{ *:[i32] }:$addr)
/*   401*/          0, /*End of Scope*/
/*   402*/        /*Scope*/ 16, /*->419*/
/*   403*/          OPC_CheckPredicate, 1, // Predicate_store
/*   405*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*   407*/          OPC_CheckComplexPat, /*CP*/4, /*#*/2, // selectAddr16SP:$addr #3 #4
/*   410*/          OPC_EmitMergeInputChains1_0,
/*   411*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::SwRxSpImmX16), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4, 
                    // Src: (st CPU16Regs:{ *:[i32] }:$r, addr16sp:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                    // Dst: (SwRxSpImmX16 CPU16Regs:{ *:[i32] }:$r, addr16sp:{ *:[i32] }:$addr)
/*   419*/        /*Scope*/ 38, /*->458*/
/*   420*/          OPC_CheckPredicate, 2, // Predicate_truncstore
/*   422*/          OPC_Scope, 16, /*->440*/ // 2 children in Scope
/*   424*/            OPC_CheckPredicate, 3, // Predicate_truncstorei8
/*   426*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/*   428*/            OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/*   431*/            OPC_EmitMergeInputChains1_0,
/*   432*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SB_MM), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st GPR32Opnd:{ *:[i32] }:$rt, addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 13
                      // Dst: (SB_MM GPR32Opnd:{ *:[i32] }:$rt, addr:{ *:[iPTR] }:$addr)
/*   440*/          /*Scope*/ 16, /*->457*/
/*   441*/            OPC_CheckPredicate, 4, // Predicate_truncstorei16
/*   443*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/*   445*/            OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/*   448*/            OPC_EmitMergeInputChains1_0,
/*   449*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SH_MM), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st GPR32Opnd:{ *:[i32] }:$rt, addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 13
                      // Dst: (SH_MM GPR32Opnd:{ *:[i32] }:$rt, addr:{ *:[iPTR] }:$addr)
/*   457*/          0, /*End of Scope*/
/*   458*/        /*Scope*/ 78, /*->537*/
/*   459*/          OPC_CheckPredicate, 1, // Predicate_store
/*   461*/          OPC_Scope, 30, /*->493*/ // 2 children in Scope
/*   463*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/*   465*/            OPC_Scope, 12, /*->479*/ // 2 children in Scope
/*   467*/              OPC_CheckComplexPat, /*CP*/5, /*#*/2, // selectIntAddrLSL2MM:$addr #3 #4
/*   470*/              OPC_EmitMergeInputChains1_0,
/*   471*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::SW16_MM), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 3, 4, 
                        // Src: (st GPRMM16:{ *:[i32] }:$src, addrimm4lsl2:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                        // Dst: (SW16_MM GPRMM16:{ *:[i32] }:$src, addrimm4lsl2:{ *:[i32] }:$addr)
/*   479*/            /*Scope*/ 12, /*->492*/
/*   480*/              OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/*   483*/              OPC_EmitMergeInputChains1_0,
/*   484*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::SW_MM), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 3, 4, 
                        // Src: (st GPR32:{ *:[i32] }:$src, addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                        // Dst: (SW_MM GPR32:{ *:[i32] }:$src, addr:{ *:[iPTR] }:$addr)
/*   492*/            0, /*End of Scope*/
/*   493*/          /*Scope*/ 42, /*->536*/
/*   494*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*   496*/            OPC_Scope, 24, /*->522*/ // 2 children in Scope
/*   498*/              OPC_CheckComplexPat, /*CP*/6, /*#*/2, // selectIntAddr11MM:$addr #3 #4
/*   501*/              OPC_EmitMergeInputChains1_0,
/*   502*/              OPC_Scope, 8, /*->512*/ // 2 children in Scope
/*   504*/                OPC_MorphNodeTo0, TARGET_VAL(Mips::SDC2_MMR6), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 3, 4, 
                          // Src: (st COP2Opnd:{ *:[i32] }:$rt, addrimm11:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                          // Dst: (SDC2_MMR6 COP2Opnd:{ *:[i32] }:$rt, addrimm11:{ *:[i32] }:$addr)
/*   512*/              /*Scope*/ 8, /*->521*/
/*   513*/                OPC_MorphNodeTo0, TARGET_VAL(Mips::SWC2_MMR6), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 3, 4, 
                          // Src: (st COP2Opnd:{ *:[i32] }:$rt, addrimm11:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                          // Dst: (SWC2_MMR6 COP2Opnd:{ *:[i32] }:$rt, addrimm11:{ *:[i32] }:$addr)
/*   521*/              0, /*End of Scope*/
/*   522*/            /*Scope*/ 12, /*->535*/
/*   523*/              OPC_CheckComplexPat, /*CP*/5, /*#*/2, // selectIntAddrLSL2MM:$addr #3 #4
/*   526*/              OPC_EmitMergeInputChains1_0,
/*   527*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::SW16_MMR6), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 3, 4, 
                        // Src: (st GPRMM16:{ *:[i32] }:$src, addrimm4lsl2:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                        // Dst: (SW16_MMR6 GPRMM16:{ *:[i32] }:$src, addrimm4lsl2:{ *:[i32] }:$addr)
/*   535*/            0, /*End of Scope*/
/*   536*/          0, /*End of Scope*/
/*   537*/        0, /*End of Scope*/
/*   538*/      /*Scope*/ 39, /*->578*/
/*   539*/        OPC_CheckChild1Type, MVT::f32,
/*   541*/        OPC_RecordChild2, // #2 = $addr
/*   542*/        OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   544*/        OPC_CheckPredicate, 1, // Predicate_store
/*   546*/        OPC_Scope, 14, /*->562*/ // 2 children in Scope
/*   548*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/*   550*/          OPC_CheckComplexPat, /*CP*/2, /*#*/2, // selectAddrDefault:$addr #3 #4
/*   553*/          OPC_EmitMergeInputChains1_0,
/*   554*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::SWC1), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4, 
                    // Src: (st FGR32Opnd:{ *:[f32] }:$rt, addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                    // Dst: (SWC1 FGR32Opnd:{ *:[f32] }:$rt, addrDefault:{ *:[iPTR] }:$addr)
/*   562*/        /*Scope*/ 14, /*->577*/
/*   563*/          OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/*   565*/          OPC_CheckComplexPat, /*CP*/2, /*#*/2, // selectAddrDefault:$addr #3 #4
/*   568*/          OPC_EmitMergeInputChains1_0,
/*   569*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::SWC1_MM), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4, 
                    // Src: (st FGR32Opnd:{ *:[f32] }:$rt, addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                    // Dst: (SWC1_MM FGR32Opnd:{ *:[f32] }:$rt, addrDefault:{ *:[i32] }:$addr)
/*   577*/        0, /*End of Scope*/
/*   578*/      /*Scope*/ 69, /*->648*/
/*   579*/        OPC_CheckChild1Type, MVT::f64,
/*   581*/        OPC_RecordChild2, // #2 = $addr
/*   582*/        OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   584*/        OPC_CheckPredicate, 1, // Predicate_store
/*   586*/        OPC_Scope, 14, /*->602*/ // 4 children in Scope
/*   588*/          OPC_CheckPatternPredicate, 18, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/*   590*/          OPC_CheckComplexPat, /*CP*/2, /*#*/2, // selectAddrDefault:$addr #3 #4
/*   593*/          OPC_EmitMergeInputChains1_0,
/*   594*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::SDC164), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4, 
                    // Src: (st FGR64Opnd:{ *:[f64] }:$rt, addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                    // Dst: (SDC164 FGR64Opnd:{ *:[f64] }:$rt, addrDefault:{ *:[iPTR] }:$addr)
/*   602*/        /*Scope*/ 14, /*->617*/
/*   603*/          OPC_CheckPatternPredicate, 19, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/*   605*/          OPC_CheckComplexPat, /*CP*/2, /*#*/2, // selectAddrDefault:$addr #3 #4
/*   608*/          OPC_EmitMergeInputChains1_0,
/*   609*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::SDC1), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4, 
                    // Src: (st AFGR64Opnd:{ *:[f64] }:$rt, addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                    // Dst: (SDC1 AFGR64Opnd:{ *:[f64] }:$rt, addrDefault:{ *:[iPTR] }:$addr)
/*   617*/        /*Scope*/ 14, /*->632*/
/*   618*/          OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/*   620*/          OPC_CheckComplexPat, /*CP*/2, /*#*/2, // selectAddrDefault:$addr #3 #4
/*   623*/          OPC_EmitMergeInputChains1_0,
/*   624*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::SDC1_MM), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4, 
                    // Src: (st AFGR64Opnd:{ *:[f64] }:$rt, addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                    // Dst: (SDC1_MM AFGR64Opnd:{ *:[f64] }:$rt, addrDefault:{ *:[i32] }:$addr)
/*   632*/        /*Scope*/ 14, /*->647*/
/*   633*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/*   635*/          OPC_CheckComplexPat, /*CP*/7, /*#*/2, // selectIntAddr16MM:$addr #3 #4
/*   638*/          OPC_EmitMergeInputChains1_0,
/*   639*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::SDC1_D64_MMR6), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4, 
                    // Src: (st FGR64Opnd:{ *:[f64] }:$ft, addrimm16:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                    // Dst: (SDC1_D64_MMR6 FGR64Opnd:{ *:[f64] }:$ft, addrimm16:{ *:[i32] }:$addr)
/*   647*/        0, /*End of Scope*/
/*   648*/      /*Scope*/ 80, /*->729*/
/*   649*/        OPC_CheckChild1Type, MVT::i64,
/*   651*/        OPC_RecordChild2, // #2 = $addr
/*   652*/        OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   654*/        OPC_Scope, 55, /*->711*/ // 2 children in Scope
/*   656*/          OPC_CheckPredicate, 2, // Predicate_truncstore
/*   658*/          OPC_Scope, 16, /*->676*/ // 3 children in Scope
/*   660*/            OPC_CheckPredicate, 3, // Predicate_truncstorei8
/*   662*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*   664*/            OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/*   667*/            OPC_EmitMergeInputChains1_0,
/*   668*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SB64), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 13
                      // Dst: (SB64 GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr)
/*   676*/          /*Scope*/ 16, /*->693*/
/*   677*/            OPC_CheckPredicate, 4, // Predicate_truncstorei16
/*   679*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*   681*/            OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/*   684*/            OPC_EmitMergeInputChains1_0,
/*   685*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SH64), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 13
                      // Dst: (SH64 GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr)
/*   693*/          /*Scope*/ 16, /*->710*/
/*   694*/            OPC_CheckPredicate, 5, // Predicate_truncstorei32
/*   696*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*   698*/            OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/*   701*/            OPC_EmitMergeInputChains1_0,
/*   702*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::SW64), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4, 
                      // Src: (st GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 13
                      // Dst: (SW64 GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr)
/*   710*/          0, /*End of Scope*/
/*   711*/        /*Scope*/ 16, /*->728*/
/*   712*/          OPC_CheckPredicate, 1, // Predicate_store
/*   714*/          OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*   716*/          OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/*   719*/          OPC_EmitMergeInputChains1_0,
/*   720*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::SD), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4, 
                    // Src: (st GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                    // Dst: (SD GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr)
/*   728*/        0, /*End of Scope*/
/*   729*/      /*Scope*/ 21, /*->751*/
/*   730*/        OPC_CheckChild1Type, MVT::v16i8,
/*   732*/        OPC_RecordChild2, // #2 = $addr
/*   733*/        OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   735*/        OPC_CheckPredicate, 1, // Predicate_store
/*   737*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/*   739*/        OPC_CheckComplexPat, /*CP*/8, /*#*/2, // selectIntAddrSImm10:$addr #3 #4
/*   742*/        OPC_EmitMergeInputChains1_0,
/*   743*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 1, 3, 4, 
                  // Src: (st MSA128BOpnd:{ *:[v16i8] }:$wd, addrimm10:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                  // Dst: (ST_B MSA128BOpnd:{ *:[v16i8] }:$wd, addrimm10:{ *:[iPTR] }:$addr)
/*   751*/      /*Scope*/ 21, /*->773*/
/*   752*/        OPC_CheckChild1Type, MVT::v8i16,
/*   754*/        OPC_RecordChild2, // #2 = $addr
/*   755*/        OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   757*/        OPC_CheckPredicate, 1, // Predicate_store
/*   759*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/*   761*/        OPC_CheckComplexPat, /*CP*/9, /*#*/2, // selectIntAddrSImm10Lsl1:$addr #3 #4
/*   764*/        OPC_EmitMergeInputChains1_0,
/*   765*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 1, 3, 4, 
                  // Src: (st MSA128HOpnd:{ *:[v8i16] }:$wd, addrimm10lsl1:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                  // Dst: (ST_H MSA128HOpnd:{ *:[v8i16] }:$wd, addrimm10lsl1:{ *:[iPTR] }:$addr)
/*   773*/      /*Scope*/ 21, /*->795*/
/*   774*/        OPC_CheckChild1Type, MVT::v4i32,
/*   776*/        OPC_RecordChild2, // #2 = $addr
/*   777*/        OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   779*/        OPC_CheckPredicate, 1, // Predicate_store
/*   781*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/*   783*/        OPC_CheckComplexPat, /*CP*/10, /*#*/2, // selectIntAddrSImm10Lsl2:$addr #3 #4
/*   786*/        OPC_EmitMergeInputChains1_0,
/*   787*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 1, 3, 4, 
                  // Src: (st MSA128WOpnd:{ *:[v4i32] }:$wd, addrimm10lsl2:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                  // Dst: (ST_W MSA128WOpnd:{ *:[v4i32] }:$wd, addrimm10lsl2:{ *:[iPTR] }:$addr)
/*   795*/      /*Scope*/ 21, /*->817*/
/*   796*/        OPC_CheckChild1Type, MVT::v2i64,
/*   798*/        OPC_RecordChild2, // #2 = $addr
/*   799*/        OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   801*/        OPC_CheckPredicate, 1, // Predicate_store
/*   803*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/*   805*/        OPC_CheckComplexPat, /*CP*/11, /*#*/2, // selectIntAddrSImm10Lsl3:$addr #3 #4
/*   808*/        OPC_EmitMergeInputChains1_0,
/*   809*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::ST_D), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 1, 3, 4, 
                  // Src: (st MSA128DOpnd:{ *:[v2i64] }:$wd, addrimm10lsl3:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                  // Dst: (ST_D MSA128DOpnd:{ *:[v2i64] }:$wd, addrimm10lsl3:{ *:[iPTR] }:$addr)
/*   817*/      /*Scope*/ 21, /*->839*/
/*   818*/        OPC_CheckChild1Type, MVT::v8f16,
/*   820*/        OPC_RecordChild2, // #2 = $addr
/*   821*/        OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   823*/        OPC_CheckPredicate, 1, // Predicate_store
/*   825*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/*   827*/        OPC_CheckComplexPat, /*CP*/9, /*#*/2, // selectIntAddrSImm10Lsl1:$addr #3 #4
/*   830*/        OPC_EmitMergeInputChains1_0,
/*   831*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 1, 3, 4, 
                  // Src: (st MSA128H:{ *:[v8f16] }:$ws, addrimm10lsl1:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                  // Dst: (ST_H MSA128H:{ *:[v8f16] }:$ws, addrimm10lsl1:{ *:[iPTR] }:$addr)
/*   839*/      /*Scope*/ 21, /*->861*/
/*   840*/        OPC_CheckChild1Type, MVT::v4f32,
/*   842*/        OPC_RecordChild2, // #2 = $addr
/*   843*/        OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   845*/        OPC_CheckPredicate, 1, // Predicate_store
/*   847*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/*   849*/        OPC_CheckComplexPat, /*CP*/10, /*#*/2, // selectIntAddrSImm10Lsl2:$addr #3 #4
/*   852*/        OPC_EmitMergeInputChains1_0,
/*   853*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 1, 3, 4, 
                  // Src: (st MSA128W:{ *:[v4f32] }:$ws, addrimm10lsl2:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                  // Dst: (ST_W MSA128W:{ *:[v4f32] }:$ws, addrimm10lsl2:{ *:[iPTR] }:$addr)
/*   861*/      /*Scope*/ 21, /*->883*/
/*   862*/        OPC_CheckChild1Type, MVT::v2f64,
/*   864*/        OPC_RecordChild2, // #2 = $addr
/*   865*/        OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   867*/        OPC_CheckPredicate, 1, // Predicate_store
/*   869*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/*   871*/        OPC_CheckComplexPat, /*CP*/11, /*#*/2, // selectIntAddrSImm10Lsl3:$addr #3 #4
/*   874*/        OPC_EmitMergeInputChains1_0,
/*   875*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::ST_D), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 1, 3, 4, 
                  // Src: (st MSA128D:{ *:[v2f64] }:$ws, addrimm10lsl3:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                  // Dst: (ST_D MSA128D:{ *:[v2f64] }:$ws, addrimm10lsl3:{ *:[iPTR] }:$addr)
/*   883*/      /*Scope*/ 32, /*->916*/
/*   884*/        OPC_CheckChild1Type, MVT::v2i16,
/*   886*/        OPC_RecordChild2, // #2 = $a
/*   887*/        OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   889*/        OPC_CheckPredicate, 1, // Predicate_store
/*   891*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/*   893*/        OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$a #3 #4
/*   896*/        OPC_EmitMergeInputChains1_0,
/*   897*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/*   900*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*   908*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SW), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 6, 3, 4, 
                  // Src: (st DSPR:{ *:[v2i16] }:$val, addr:{ *:[iPTR] }:$a)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                  // Dst: (SW (COPY_TO_REGCLASS:{ *:[i32] } DSPR:{ *:[v2i16] }:$val, GPR32:{ *:[i32] }), addr:{ *:[iPTR] }:$a)
/*   916*/      /*Scope*/ 32, /*->949*/
/*   917*/        OPC_CheckChild1Type, MVT::v4i8,
/*   919*/        OPC_RecordChild2, // #2 = $a
/*   920*/        OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   922*/        OPC_CheckPredicate, 1, // Predicate_store
/*   924*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/*   926*/        OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$a #3 #4
/*   929*/        OPC_EmitMergeInputChains1_0,
/*   930*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/*   933*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*   941*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SW), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 6, 3, 4, 
                  // Src: (st DSPR:{ *:[v4i8] }:$val, addr:{ *:[iPTR] }:$a)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                  // Dst: (SW (COPY_TO_REGCLASS:{ *:[i32] } DSPR:{ *:[v4i8] }:$val, GPR32:{ *:[i32] }), addr:{ *:[iPTR] }:$a)
/*   949*/      /*Scope*/ 22, /*->972*/
/*   950*/        OPC_CheckChild1Type, MVT::f16,
/*   952*/        OPC_RecordChild2, // #2 = $addr
/*   953*/        OPC_RecordChild2, // #3 = $addrimm10
/*   954*/        OPC_CheckPredicate, 0, // Predicate_unindexedstore
/*   956*/        OPC_CheckPredicate, 1, // Predicate_store
/*   958*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/*   960*/        OPC_CheckComplexPat, /*CP*/8, /*#*/3, // selectIntAddrSImm10:$addr #4 #5
/*   963*/        OPC_EmitMergeInputChains1_0,
/*   964*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::ST_F16), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 1, 2, 3, 
                  // Src: (st MSA128F16:{ *:[f16] }:$ws, (addrimm10:{ *:[iPTR] }):$addr)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 13
                  // Dst: (ST_F16 MSA128F16:{ *:[f16] }:$ws, (addrimm10:{ *:[iPTR] }):$addr)
/*   972*/      0, /*End of Scope*/
/*   973*/    0, /*End of Scope*/
/*   974*/  /*SwitchOpcode*/ 79|128,11/*1487*/, TARGET_VAL(ISD::LOAD),// ->2465
/*   978*/    OPC_RecordMemRef,
/*   979*/    OPC_RecordNode, // #0 = 'ld' chained node
/*   980*/    OPC_Scope, 121, /*->1103*/ // 5 children in Scope
/*   982*/      OPC_RecordChild1, // #1 = $a
/*   983*/      OPC_CheckPredicate, 6, // Predicate_unindexedload
/*   985*/      OPC_CheckType, MVT::i32,
/*   987*/      OPC_Scope, 38, /*->1027*/ // 4 children in Scope
/*   989*/        OPC_CheckPredicate, 7, // Predicate_zextload
/*   991*/        OPC_Scope, 16, /*->1009*/ // 2 children in Scope
/*   993*/          OPC_CheckPredicate, 3, // Predicate_zextloadi8
/*   995*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*   997*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // selectAddrRegImm:$a #2 #3
/*  1000*/          OPC_EmitMergeInputChains1_0,
/*  1001*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LBu), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 53
                    // Dst: (LBu:{ *:[i32] } addrRegImm:{ *:[iPTR] }:$a)
/*  1009*/        /*Scope*/ 16, /*->1026*/
/*  1010*/          OPC_CheckPredicate, 4, // Predicate_zextloadi16
/*  1012*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  1014*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // selectAddrRegImm:$a #2 #3
/*  1017*/          OPC_EmitMergeInputChains1_0,
/*  1018*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LHu), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 53
                    // Dst: (LHu:{ *:[i32] } addrRegImm:{ *:[iPTR] }:$a)
/*  1026*/        0, /*End of Scope*/
/*  1027*/      /*Scope*/ 38, /*->1066*/
/*  1028*/        OPC_CheckPredicate, 8, // Predicate_sextload
/*  1030*/        OPC_Scope, 16, /*->1048*/ // 2 children in Scope
/*  1032*/          OPC_CheckPredicate, 3, // Predicate_sextloadi8
/*  1034*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  1036*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // selectAddrRegImm:$a #2 #3
/*  1039*/          OPC_EmitMergeInputChains1_0,
/*  1040*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LB), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 53
                    // Dst: (LB:{ *:[i32] } addrRegImm:{ *:[iPTR] }:$a)
/*  1048*/        /*Scope*/ 16, /*->1065*/
/*  1049*/          OPC_CheckPredicate, 4, // Predicate_sextloadi16
/*  1051*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  1053*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // selectAddrRegImm:$a #2 #3
/*  1056*/          OPC_EmitMergeInputChains1_0,
/*  1057*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LH), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 53
                    // Dst: (LH:{ *:[i32] } addrRegImm:{ *:[iPTR] }:$a)
/*  1065*/        0, /*End of Scope*/
/*  1066*/      /*Scope*/ 16, /*->1083*/
/*  1067*/        OPC_CheckPredicate, 9, // Predicate_load
/*  1069*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  1071*/        OPC_CheckComplexPat, /*CP*/0, /*#*/1, // selectAddrRegImm:$a #2 #3
/*  1074*/        OPC_EmitMergeInputChains1_0,
/*  1075*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LW), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i32] } addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 53
                  // Dst: (LW:{ *:[i32] } addrRegImm:{ *:[iPTR] }:$a)
/*  1083*/      /*Scope*/ 18, /*->1102*/
/*  1084*/        OPC_CheckPredicate, 8, // Predicate_sextload
/*  1086*/        OPC_CheckPredicate, 4, // Predicate_sextloadi16
/*  1088*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/*  1090*/        OPC_CheckComplexPat, /*CP*/0, /*#*/1, // selectAddrRegImm:$a #2 #3
/*  1093*/        OPC_EmitMergeInputChains1_0,
/*  1094*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LH_MM), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i32] } addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 53
                  // Dst: (LH_MM:{ *:[i32] } addrRegImm:{ *:[iPTR] }:$a)
/*  1102*/      0, /*End of Scope*/
/*  1103*/    /*Scope*/ 61, /*->1165*/
/*  1104*/      OPC_MoveChild1,
/*  1105*/      OPC_CheckOpcode, TARGET_VAL(ISD::ADD),
/*  1108*/      OPC_RecordChild0, // #1 = $base
/*  1109*/      OPC_RecordChild1, // #2 = $index
/*  1110*/      OPC_CheckType, MVT::i32,
/*  1112*/      OPC_MoveParent,
/*  1113*/      OPC_CheckPredicate, 6, // Predicate_unindexedload
/*  1115*/      OPC_CheckType, MVT::i32,
/*  1117*/      OPC_Scope, 15, /*->1134*/ // 3 children in Scope
/*  1119*/        OPC_CheckPredicate, 7, // Predicate_zextload
/*  1121*/        OPC_CheckPredicate, 3, // Predicate_zextloadi8
/*  1123*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/*  1125*/        OPC_EmitMergeInputChains1_0,
/*  1126*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LBUX), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (ld:{ *:[i32] } (add:{ *:[i32] } i32:{ *:[i32] }:$base, i32:{ *:[i32] }:$index))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 27
                  // Dst: (LBUX:{ *:[i32] } i32:{ *:[i32] }:$base, i32:{ *:[i32] }:$index)
/*  1134*/      /*Scope*/ 15, /*->1150*/
/*  1135*/        OPC_CheckPredicate, 8, // Predicate_sextload
/*  1137*/        OPC_CheckPredicate, 4, // Predicate_sextloadi16
/*  1139*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/*  1141*/        OPC_EmitMergeInputChains1_0,
/*  1142*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LHX), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (ld:{ *:[i32] } (add:{ *:[i32] } i32:{ *:[i32] }:$base, i32:{ *:[i32] }:$index))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 27
                  // Dst: (LHX:{ *:[i32] } i32:{ *:[i32] }:$base, i32:{ *:[i32] }:$index)
/*  1150*/      /*Scope*/ 13, /*->1164*/
/*  1151*/        OPC_CheckPredicate, 9, // Predicate_load
/*  1153*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/*  1155*/        OPC_EmitMergeInputChains1_0,
/*  1156*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LWX), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (ld:{ *:[i32] } (add:{ *:[i32] } i32:{ *:[i32] }:$base, i32:{ *:[i32] }:$index))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 27
                  // Dst: (LWX:{ *:[i32] } i32:{ *:[i32] }:$base, i32:{ *:[i32] }:$index)
/*  1164*/      0, /*End of Scope*/
/*  1165*/    /*Scope*/ 42|128,7/*938*/, /*->2105*/
/*  1167*/      OPC_RecordChild1, // #1 = $addr
/*  1168*/      OPC_CheckPredicate, 6, // Predicate_unindexedload
/*  1170*/      OPC_Scope, 20, /*->1192*/ // 27 children in Scope
/*  1172*/        OPC_CheckPredicate, 8, // Predicate_sextload
/*  1174*/        OPC_CheckPredicate, 3, // Predicate_sextloadi8
/*  1176*/        OPC_CheckType, MVT::i32,
/*  1178*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  1180*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #2 #3
/*  1183*/        OPC_EmitMergeInputChains1_0,
/*  1184*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LB), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i32] } addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 13
                  // Dst: (LB:{ *:[i32] } addr:{ *:[iPTR] }:$addr)
/*  1192*/      /*Scope*/ 20, /*->1213*/
/*  1193*/        OPC_CheckPredicate, 7, // Predicate_zextload
/*  1195*/        OPC_CheckPredicate, 3, // Predicate_zextloadi8
/*  1197*/        OPC_CheckType, MVT::i32,
/*  1199*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  1201*/        OPC_CheckComplexPat, /*CP*/2, /*#*/1, // selectAddrDefault:$addr #2 #3
/*  1204*/        OPC_EmitMergeInputChains1_0,
/*  1205*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LBu), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 13
                  // Dst: (LBu:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)
/*  1213*/      /*Scope*/ 20, /*->1234*/
/*  1214*/        OPC_CheckPredicate, 8, // Predicate_sextload
/*  1216*/        OPC_CheckPredicate, 4, // Predicate_sextloadi16
/*  1218*/        OPC_CheckType, MVT::i32,
/*  1220*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  1222*/        OPC_CheckComplexPat, /*CP*/2, /*#*/1, // selectAddrDefault:$addr #2 #3
/*  1225*/        OPC_EmitMergeInputChains1_0,
/*  1226*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LH), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 13
                  // Dst: (LH:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)
/*  1234*/      /*Scope*/ 20, /*->1255*/
/*  1235*/        OPC_CheckPredicate, 7, // Predicate_zextload
/*  1237*/        OPC_CheckPredicate, 4, // Predicate_zextloadi16
/*  1239*/        OPC_CheckType, MVT::i32,
/*  1241*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  1243*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #2 #3
/*  1246*/        OPC_EmitMergeInputChains1_0,
/*  1247*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LHu), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i32] } addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 13
                  // Dst: (LHu:{ *:[i32] } addr:{ *:[iPTR] }:$addr)
/*  1255*/      /*Scope*/ 81, /*->1337*/
/*  1256*/        OPC_CheckPredicate, 9, // Predicate_load
/*  1258*/        OPC_CheckType, MVT::i32,
/*  1260*/        OPC_Scope, 14, /*->1276*/ // 5 children in Scope
/*  1262*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  1264*/          OPC_CheckComplexPat, /*CP*/2, /*#*/1, // selectAddrDefault:$addr #2 #3
/*  1267*/          OPC_EmitMergeInputChains1_0,
/*  1268*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LW), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                    // Dst: (LW:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)
/*  1276*/        /*Scope*/ 14, /*->1291*/
/*  1277*/          OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  1279*/          OPC_CheckComplexPat, /*CP*/2, /*#*/1, // selectAddrDefault:$addr #2 #3
/*  1282*/          OPC_EmitMergeInputChains1_0,
/*  1283*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LWC2), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                    // Dst: (LWC2:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)
/*  1291*/        /*Scope*/ 14, /*->1306*/
/*  1292*/          OPC_CheckPatternPredicate, 11, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  1294*/          OPC_CheckComplexPat, /*CP*/2, /*#*/1, // selectAddrDefault:$addr #2 #3
/*  1297*/          OPC_EmitMergeInputChains1_0,
/*  1298*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LDC2), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                    // Dst: (LDC2:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)
/*  1306*/        /*Scope*/ 14, /*->1321*/
/*  1307*/          OPC_CheckPatternPredicate, 12, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasCnMips()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  1309*/          OPC_CheckComplexPat, /*CP*/2, /*#*/1, // selectAddrDefault:$addr #2 #3
/*  1312*/          OPC_EmitMergeInputChains1_0,
/*  1313*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LWC3), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                    // Dst: (LWC3:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)
/*  1321*/        /*Scope*/ 14, /*->1336*/
/*  1322*/          OPC_CheckPatternPredicate, 13, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasCnMips()) && (!Subtarget->inMicroMipsMode())
/*  1324*/          OPC_CheckComplexPat, /*CP*/2, /*#*/1, // selectAddrDefault:$addr #2 #3
/*  1327*/          OPC_EmitMergeInputChains1_0,
/*  1328*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LDC3), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                    // Dst: (LDC3:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)
/*  1336*/        0, /*End of Scope*/
/*  1337*/      /*Scope*/ 57, /*->1395*/
/*  1338*/        OPC_CheckPredicate, 10, // Predicate_extload
/*  1340*/        OPC_CheckType, MVT::i32,
/*  1342*/        OPC_Scope, 16, /*->1360*/ // 3 children in Scope
/*  1344*/          OPC_CheckPredicate, 11, // Predicate_extloadi1
/*  1346*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  1348*/          OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$src #2 #3
/*  1351*/          OPC_EmitMergeInputChains1_0,
/*  1352*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LBu), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addr:{ *:[iPTR] }:$src)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi1>> - Complexity = 13
                    // Dst: (LBu:{ *:[i32] } addr:{ *:[iPTR] }:$src)
/*  1360*/        /*Scope*/ 16, /*->1377*/
/*  1361*/          OPC_CheckPredicate, 3, // Predicate_extloadi8
/*  1363*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  1365*/          OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$src #2 #3
/*  1368*/          OPC_EmitMergeInputChains1_0,
/*  1369*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LBu), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addr:{ *:[iPTR] }:$src)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 13
                    // Dst: (LBu:{ *:[i32] } addr:{ *:[iPTR] }:$src)
/*  1377*/        /*Scope*/ 16, /*->1394*/
/*  1378*/          OPC_CheckPredicate, 4, // Predicate_extloadi16
/*  1380*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  1382*/          OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$src #2 #3
/*  1385*/          OPC_EmitMergeInputChains1_0,
/*  1386*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LHu), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addr:{ *:[iPTR] }:$src)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 13
                    // Dst: (LHu:{ *:[i32] } addr:{ *:[iPTR] }:$src)
/*  1394*/        0, /*End of Scope*/
/*  1395*/      /*Scope*/ 20, /*->1416*/
/*  1396*/        OPC_CheckPredicate, 8, // Predicate_sextload
/*  1398*/        OPC_CheckPredicate, 3, // Predicate_sextloadi8
/*  1400*/        OPC_CheckType, MVT::i64,
/*  1402*/        OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  1404*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #2 #3
/*  1407*/        OPC_EmitMergeInputChains1_0,
/*  1408*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LB64), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i64, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i64] } addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 13
                  // Dst: (LB64:{ *:[i64] } addr:{ *:[iPTR] }:$addr)
/*  1416*/      /*Scope*/ 20, /*->1437*/
/*  1417*/        OPC_CheckPredicate, 7, // Predicate_zextload
/*  1419*/        OPC_CheckPredicate, 3, // Predicate_zextloadi8
/*  1421*/        OPC_CheckType, MVT::i64,
/*  1423*/        OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  1425*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #2 #3
/*  1428*/        OPC_EmitMergeInputChains1_0,
/*  1429*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LBu64), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i64, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i64] } addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 13
                  // Dst: (LBu64:{ *:[i64] } addr:{ *:[iPTR] }:$addr)
/*  1437*/      /*Scope*/ 20, /*->1458*/
/*  1438*/        OPC_CheckPredicate, 8, // Predicate_sextload
/*  1440*/        OPC_CheckPredicate, 4, // Predicate_sextloadi16
/*  1442*/        OPC_CheckType, MVT::i64,
/*  1444*/        OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  1446*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #2 #3
/*  1449*/        OPC_EmitMergeInputChains1_0,
/*  1450*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LH64), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i64, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i64] } addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 13
                  // Dst: (LH64:{ *:[i64] } addr:{ *:[iPTR] }:$addr)
/*  1458*/      /*Scope*/ 20, /*->1479*/
/*  1459*/        OPC_CheckPredicate, 7, // Predicate_zextload
/*  1461*/        OPC_CheckPredicate, 4, // Predicate_zextloadi16
/*  1463*/        OPC_CheckType, MVT::i64,
/*  1465*/        OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  1467*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #2 #3
/*  1470*/        OPC_EmitMergeInputChains1_0,
/*  1471*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LHu64), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i64, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i64] } addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 13
                  // Dst: (LHu64:{ *:[i64] } addr:{ *:[iPTR] }:$addr)
/*  1479*/      /*Scope*/ 20, /*->1500*/
/*  1480*/        OPC_CheckPredicate, 8, // Predicate_sextload
/*  1482*/        OPC_CheckPredicate, 5, // Predicate_sextloadi32
/*  1484*/        OPC_CheckType, MVT::i64,
/*  1486*/        OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  1488*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #2 #3
/*  1491*/        OPC_EmitMergeInputChains1_0,
/*  1492*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LW64), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i64, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i64] } addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 13
                  // Dst: (LW64:{ *:[i64] } addr:{ *:[iPTR] }:$addr)
/*  1500*/      /*Scope*/ 20, /*->1521*/
/*  1501*/        OPC_CheckPredicate, 7, // Predicate_zextload
/*  1503*/        OPC_CheckPredicate, 5, // Predicate_zextloadi32
/*  1505*/        OPC_CheckType, MVT::i64,
/*  1507*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  1509*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #2 #3
/*  1512*/        OPC_EmitMergeInputChains1_0,
/*  1513*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LWu), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i64, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i64] } addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 13
                  // Dst: (LWu:{ *:[i64] } addr:{ *:[iPTR] }:$addr)
/*  1521*/      /*Scope*/ 18, /*->1540*/
/*  1522*/        OPC_CheckPredicate, 9, // Predicate_load
/*  1524*/        OPC_CheckType, MVT::i64,
/*  1526*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  1528*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #2 #3
/*  1531*/        OPC_EmitMergeInputChains1_0,
/*  1532*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LD), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i64, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i64] } addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                  // Dst: (LD:{ *:[i64] } addr:{ *:[iPTR] }:$addr)
/*  1540*/      /*Scope*/ 74, /*->1615*/
/*  1541*/        OPC_CheckPredicate, 10, // Predicate_extload
/*  1543*/        OPC_CheckType, MVT::i64,
/*  1545*/        OPC_Scope, 16, /*->1563*/ // 4 children in Scope
/*  1547*/          OPC_CheckPredicate, 11, // Predicate_extloadi1
/*  1549*/          OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  1551*/          OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$src #2 #3
/*  1554*/          OPC_EmitMergeInputChains1_0,
/*  1555*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LB64), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i64] } addr:{ *:[iPTR] }:$src)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi1>> - Complexity = 13
                    // Dst: (LB64:{ *:[i64] } addr:{ *:[iPTR] }:$src)
/*  1563*/        /*Scope*/ 16, /*->1580*/
/*  1564*/          OPC_CheckPredicate, 3, // Predicate_extloadi8
/*  1566*/          OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  1568*/          OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$src #2 #3
/*  1571*/          OPC_EmitMergeInputChains1_0,
/*  1572*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LB64), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i64] } addr:{ *:[iPTR] }:$src)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 13
                    // Dst: (LB64:{ *:[i64] } addr:{ *:[iPTR] }:$src)
/*  1580*/        /*Scope*/ 16, /*->1597*/
/*  1581*/          OPC_CheckPredicate, 4, // Predicate_extloadi16
/*  1583*/          OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  1585*/          OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$src #2 #3
/*  1588*/          OPC_EmitMergeInputChains1_0,
/*  1589*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LH64), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i64] } addr:{ *:[iPTR] }:$src)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 13
                    // Dst: (LH64:{ *:[i64] } addr:{ *:[iPTR] }:$src)
/*  1597*/        /*Scope*/ 16, /*->1614*/
/*  1598*/          OPC_CheckPredicate, 5, // Predicate_extloadi32
/*  1600*/          OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  1602*/          OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$src #2 #3
/*  1605*/          OPC_EmitMergeInputChains1_0,
/*  1606*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LW64), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i64] } addr:{ *:[iPTR] }:$src)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 13
                    // Dst: (LW64:{ *:[i64] } addr:{ *:[iPTR] }:$src)
/*  1614*/        0, /*End of Scope*/
/*  1615*/      /*Scope*/ 20, /*->1636*/
/*  1616*/        OPC_CheckPredicate, 8, // Predicate_sextload
/*  1618*/        OPC_CheckPredicate, 3, // Predicate_sextloadi8
/*  1620*/        OPC_CheckType, MVT::i32,
/*  1622*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  1624*/        OPC_CheckComplexPat, /*CP*/3, /*#*/1, // selectAddr16:$addr #2 #3
/*  1627*/        OPC_EmitMergeInputChains1_0,
/*  1628*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LbRxRyOffMemX16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i32] } addr16:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 13
                  // Dst: (LbRxRyOffMemX16:{ *:[i32] } addr16:{ *:[i32] }:$addr)
/*  1636*/      /*Scope*/ 20, /*->1657*/
/*  1637*/        OPC_CheckPredicate, 7, // Predicate_zextload
/*  1639*/        OPC_CheckPredicate, 3, // Predicate_zextloadi8
/*  1641*/        OPC_CheckType, MVT::i32,
/*  1643*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  1645*/        OPC_CheckComplexPat, /*CP*/3, /*#*/1, // selectAddr16:$addr #2 #3
/*  1648*/        OPC_EmitMergeInputChains1_0,
/*  1649*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LbuRxRyOffMemX16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i32] } addr16:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 13
                  // Dst: (LbuRxRyOffMemX16:{ *:[i32] } addr16:{ *:[i32] }:$addr)
/*  1657*/      /*Scope*/ 20, /*->1678*/
/*  1658*/        OPC_CheckPredicate, 8, // Predicate_sextload
/*  1660*/        OPC_CheckPredicate, 4, // Predicate_sextloadi16
/*  1662*/        OPC_CheckType, MVT::i32,
/*  1664*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  1666*/        OPC_CheckComplexPat, /*CP*/3, /*#*/1, // selectAddr16:$addr #2 #3
/*  1669*/        OPC_EmitMergeInputChains1_0,
/*  1670*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LhRxRyOffMemX16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i32] } addr16:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 13
                  // Dst: (LhRxRyOffMemX16:{ *:[i32] } addr16:{ *:[i32] }:$addr)
/*  1678*/      /*Scope*/ 20, /*->1699*/
/*  1679*/        OPC_CheckPredicate, 7, // Predicate_zextload
/*  1681*/        OPC_CheckPredicate, 4, // Predicate_zextloadi16
/*  1683*/        OPC_CheckType, MVT::i32,
/*  1685*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  1687*/        OPC_CheckComplexPat, /*CP*/3, /*#*/1, // selectAddr16:$addr #2 #3
/*  1690*/        OPC_EmitMergeInputChains1_0,
/*  1691*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LhuRxRyOffMemX16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i32] } addr16:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 13
                  // Dst: (LhuRxRyOffMemX16:{ *:[i32] } addr16:{ *:[i32] }:$addr)
/*  1699*/      /*Scope*/ 18, /*->1718*/
/*  1700*/        OPC_CheckPredicate, 9, // Predicate_load
/*  1702*/        OPC_CheckType, MVT::i32,
/*  1704*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  1706*/        OPC_CheckComplexPat, /*CP*/4, /*#*/1, // selectAddr16SP:$addr #2 #3
/*  1709*/        OPC_EmitMergeInputChains1_0,
/*  1710*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LwRxSpImmX16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i32] } addr16sp:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                  // Dst: (LwRxSpImmX16:{ *:[i32] } addr16sp:{ *:[i32] }:$addr)
/*  1718*/      /*Scope*/ 40, /*->1759*/
/*  1719*/        OPC_CheckPredicate, 10, // Predicate_extload
/*  1721*/        OPC_CheckType, MVT::i32,
/*  1723*/        OPC_Scope, 16, /*->1741*/ // 2 children in Scope
/*  1725*/          OPC_CheckPredicate, 3, // Predicate_extloadi8
/*  1727*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  1729*/          OPC_CheckComplexPat, /*CP*/3, /*#*/1, // selectAddr16:$src #2 #3
/*  1732*/          OPC_EmitMergeInputChains1_0,
/*  1733*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LbuRxRyOffMemX16), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addr16:{ *:[iPTR] }:$src)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 13
                    // Dst: (LbuRxRyOffMemX16:{ *:[i32] } addr16:{ *:[i32] }:$src)
/*  1741*/        /*Scope*/ 16, /*->1758*/
/*  1742*/          OPC_CheckPredicate, 4, // Predicate_extloadi16
/*  1744*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  1746*/          OPC_CheckComplexPat, /*CP*/3, /*#*/1, // selectAddr16:$src #2 #3
/*  1749*/          OPC_EmitMergeInputChains1_0,
/*  1750*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LhuRxRyOffMemX16), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addr16:{ *:[iPTR] }:$src)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 13
                    // Dst: (LhuRxRyOffMemX16:{ *:[i32] } addr16:{ *:[i32] }:$src)
/*  1758*/        0, /*End of Scope*/
/*  1759*/      /*Scope*/ 20, /*->1780*/
/*  1760*/        OPC_CheckPredicate, 8, // Predicate_sextload
/*  1762*/        OPC_CheckPredicate, 3, // Predicate_sextloadi8
/*  1764*/        OPC_CheckType, MVT::i32,
/*  1766*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/*  1768*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #2 #3
/*  1771*/        OPC_EmitMergeInputChains1_0,
/*  1772*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LB_MM), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i32] } addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 13
                  // Dst: (LB_MM:{ *:[i32] } addr:{ *:[i32] }:$addr)
/*  1780*/      /*Scope*/ 20, /*->1801*/
/*  1781*/        OPC_CheckPredicate, 7, // Predicate_zextload
/*  1783*/        OPC_CheckPredicate, 3, // Predicate_zextloadi8
/*  1785*/        OPC_CheckType, MVT::i32,
/*  1787*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/*  1789*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #2 #3
/*  1792*/        OPC_EmitMergeInputChains1_0,
/*  1793*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LBu_MM), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i32] } addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 13
                  // Dst: (LBu_MM:{ *:[i32] } addr:{ *:[i32] }:$addr)
/*  1801*/      /*Scope*/ 20, /*->1822*/
/*  1802*/        OPC_CheckPredicate, 8, // Predicate_sextload
/*  1804*/        OPC_CheckPredicate, 4, // Predicate_sextloadi16
/*  1806*/        OPC_CheckType, MVT::i32,
/*  1808*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/*  1810*/        OPC_CheckComplexPat, /*CP*/2, /*#*/1, // selectAddrDefault:$addr #2 #3
/*  1813*/        OPC_EmitMergeInputChains1_0,
/*  1814*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LH_MM), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 13
                  // Dst: (LH_MM:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)
/*  1822*/      /*Scope*/ 40, /*->1863*/
/*  1823*/        OPC_CheckPredicate, 7, // Predicate_zextload
/*  1825*/        OPC_CheckType, MVT::i32,
/*  1827*/        OPC_Scope, 16, /*->1845*/ // 2 children in Scope
/*  1829*/          OPC_CheckPredicate, 4, // Predicate_zextloadi16
/*  1831*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/*  1833*/          OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #2 #3
/*  1836*/          OPC_EmitMergeInputChains1_0,
/*  1837*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LHu_MM), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 13
                    // Dst: (LHu_MM:{ *:[i32] } addr:{ *:[iPTR] }:$addr)
/*  1845*/        /*Scope*/ 16, /*->1862*/
/*  1846*/          OPC_CheckPredicate, 5, // Predicate_zextloadi32
/*  1848*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  1850*/          OPC_CheckComplexPat, /*CP*/12, /*#*/1, // selectIntAddr12MM:$addr #2 #3
/*  1853*/          OPC_EmitMergeInputChains1_0,
/*  1854*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LWU_MM), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addrimm12:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 13
                    // Dst: (LWU_MM:{ *:[i32] } addrimm12:{ *:[iPTR] }:$addr)
/*  1862*/        0, /*End of Scope*/
/*  1863*/      /*Scope*/ 34, /*->1898*/
/*  1864*/        OPC_CheckPredicate, 9, // Predicate_load
/*  1866*/        OPC_CheckType, MVT::i32,
/*  1868*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/*  1870*/        OPC_Scope, 12, /*->1884*/ // 2 children in Scope
/*  1872*/          OPC_CheckComplexPat, /*CP*/5, /*#*/1, // selectIntAddrLSL2MM:$addr #2 #3
/*  1875*/          OPC_EmitMergeInputChains1_0,
/*  1876*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LW16_MM), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addrimm4lsl2:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                    // Dst: (LW16_MM:{ *:[i32] } addrimm4lsl2:{ *:[i32] }:$addr)
/*  1884*/        /*Scope*/ 12, /*->1897*/
/*  1885*/          OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #2 #3
/*  1888*/          OPC_EmitMergeInputChains1_0,
/*  1889*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LW_MM), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addr:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                    // Dst: (LW_MM:{ *:[i32] } addr:{ *:[iPTR] }:$addr)
/*  1897*/        0, /*End of Scope*/
/*  1898*/      /*Scope*/ 57, /*->1956*/
/*  1899*/        OPC_CheckPredicate, 10, // Predicate_extload
/*  1901*/        OPC_CheckType, MVT::i32,
/*  1903*/        OPC_Scope, 16, /*->1921*/ // 3 children in Scope
/*  1905*/          OPC_CheckPredicate, 11, // Predicate_extloadi1
/*  1907*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/*  1909*/          OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$src #2 #3
/*  1912*/          OPC_EmitMergeInputChains1_0,
/*  1913*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LBu_MM), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addr:{ *:[iPTR] }:$src)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi1>> - Complexity = 13
                    // Dst: (LBu_MM:{ *:[i32] } addr:{ *:[i32] }:$src)
/*  1921*/        /*Scope*/ 16, /*->1938*/
/*  1922*/          OPC_CheckPredicate, 3, // Predicate_extloadi8
/*  1924*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/*  1926*/          OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$src #2 #3
/*  1929*/          OPC_EmitMergeInputChains1_0,
/*  1930*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LBu_MM), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addr:{ *:[iPTR] }:$src)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 13
                    // Dst: (LBu_MM:{ *:[i32] } addr:{ *:[i32] }:$src)
/*  1938*/        /*Scope*/ 16, /*->1955*/
/*  1939*/          OPC_CheckPredicate, 4, // Predicate_extloadi16
/*  1941*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/*  1943*/          OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$src #2 #3
/*  1946*/          OPC_EmitMergeInputChains1_0,
/*  1947*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LHu_MM), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[i32] } addr:{ *:[iPTR] }:$src)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 13
                    // Dst: (LHu_MM:{ *:[i32] } addr:{ *:[iPTR] }:$src)
/*  1955*/        0, /*End of Scope*/
/*  1956*/      /*Scope*/ 18|128,1/*146*/, /*->2104*/
/*  1958*/        OPC_CheckPredicate, 9, // Predicate_load
/*  1960*/        OPC_SwitchType /*3 cases */, 42, MVT::i32,// ->2005
/*  1963*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  1965*/          OPC_Scope, 12, /*->1979*/ // 2 children in Scope
/*  1967*/            OPC_CheckComplexPat, /*CP*/2, /*#*/1, // selectAddrDefault:$addr #2 #3
/*  1970*/            OPC_EmitMergeInputChains1_0,
/*  1971*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::LW_MMR6), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3, 
                      // Src: (ld:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                      // Dst: (LW_MMR6:{ *:[i32] } addrDefault:{ *:[iPTR] }:$addr)
/*  1979*/          /*Scope*/ 24, /*->2004*/
/*  1980*/            OPC_CheckComplexPat, /*CP*/6, /*#*/1, // selectIntAddr11MM:$addr #2 #3
/*  1983*/            OPC_EmitMergeInputChains1_0,
/*  1984*/            OPC_Scope, 8, /*->1994*/ // 2 children in Scope
/*  1986*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::LDC2_MMR6), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 2, 3, 
                        // Src: (ld:{ *:[i32] } addrimm11:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                        // Dst: (LDC2_MMR6:{ *:[i32] } addrimm11:{ *:[i32] }:$addr)
/*  1994*/            /*Scope*/ 8, /*->2003*/
/*  1995*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::LWC2_MMR6), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 2, 3, 
                        // Src: (ld:{ *:[i32] } addrimm11:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                        // Dst: (LWC2_MMR6:{ *:[i32] } addrimm11:{ *:[i32] }:$addr)
/*  2003*/            0, /*End of Scope*/
/*  2004*/          0, /*End of Scope*/
/*  2005*/        /*SwitchType*/ 62, MVT::f64,// ->2069
/*  2007*/          OPC_Scope, 14, /*->2023*/ // 4 children in Scope
/*  2009*/            OPC_CheckPatternPredicate, 0, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit())
/*  2011*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // selectAddrRegImm:$a #2 #3
/*  2014*/            OPC_EmitMergeInputChains1_0,
/*  2015*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::LDC1_D64_MMR6), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::f64, 2/*#Ops*/, 2, 3, 
                      // Src: (ld:{ *:[f64] } addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 54
                      // Dst: (LDC1_D64_MMR6:{ *:[f64] } addrRegImm:{ *:[i32] }:$a)
/*  2023*/          /*Scope*/ 14, /*->2038*/
/*  2024*/            OPC_CheckPatternPredicate, 1, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/*  2026*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // selectAddrRegImm:$a #2 #3
/*  2029*/            OPC_EmitMergeInputChains1_0,
/*  2030*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::LDC164), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::f64, 2/*#Ops*/, 2, 3, 
                      // Src: (ld:{ *:[f64] } addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 53
                      // Dst: (LDC164:{ *:[f64] } addrRegImm:{ *:[iPTR] }:$a)
/*  2038*/          /*Scope*/ 14, /*->2053*/
/*  2039*/            OPC_CheckPatternPredicate, 2, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/*  2041*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // selectAddrRegImm:$a #2 #3
/*  2044*/            OPC_EmitMergeInputChains1_0,
/*  2045*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::LDC1), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::f64, 2/*#Ops*/, 2, 3, 
                      // Src: (ld:{ *:[f64] } addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 53
                      // Dst: (LDC1:{ *:[f64] } addrRegImm:{ *:[iPTR] }:$a)
/*  2053*/          /*Scope*/ 14, /*->2068*/
/*  2054*/            OPC_CheckPatternPredicate, 3, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit())
/*  2056*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // selectAddrRegImm:$a #2 #3
/*  2059*/            OPC_EmitMergeInputChains1_0,
/*  2060*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::LDC1_MM), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::f64, 2/*#Ops*/, 2, 3, 
                      // Src: (ld:{ *:[f64] } addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 53
                      // Dst: (LDC1_MM:{ *:[f64] } addrRegImm:{ *:[i32] }:$a)
/*  2068*/          0, /*End of Scope*/
/*  2069*/        /*SwitchType*/ 32, MVT::f32,// ->2103
/*  2071*/          OPC_Scope, 14, /*->2087*/ // 2 children in Scope
/*  2073*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  2075*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // selectAddrRegImm:$a #2 #3
/*  2078*/            OPC_EmitMergeInputChains1_0,
/*  2079*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::LWC1), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::f32, 2/*#Ops*/, 2, 3, 
                      // Src: (ld:{ *:[f32] } addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 53
                      // Dst: (LWC1:{ *:[f32] } addrRegImm:{ *:[iPTR] }:$a)
/*  2087*/          /*Scope*/ 14, /*->2102*/
/*  2088*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/*  2090*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // selectAddrRegImm:$a #2 #3
/*  2093*/            OPC_EmitMergeInputChains1_0,
/*  2094*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::LWC1_MM), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::f32, 2/*#Ops*/, 2, 3, 
                      // Src: (ld:{ *:[f32] } addrRegImm:{ *:[iPTR] }:$a)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 53
                      // Dst: (LWC1_MM:{ *:[f32] } addrRegImm:{ *:[i32] }:$a)
/*  2102*/          0, /*End of Scope*/
/*  2103*/        0, // EndSwitchType
/*  2104*/      0, /*End of Scope*/
/*  2105*/    /*Scope*/ 69, /*->2175*/
/*  2106*/      OPC_MoveChild1,
/*  2107*/      OPC_CheckOpcode, TARGET_VAL(ISD::ADD),
/*  2110*/      OPC_RecordChild0, // #1 = $base
/*  2111*/      OPC_RecordChild1, // #2 = $index
/*  2112*/      OPC_MoveParent,
/*  2113*/      OPC_CheckPredicate, 6, // Predicate_unindexedload
/*  2115*/      OPC_CheckPredicate, 9, // Predicate_load
/*  2117*/      OPC_SwitchType /*2 cases */, 26, MVT::f32,// ->2146
/*  2120*/        OPC_Scope, 11, /*->2133*/ // 2 children in Scope
/*  2122*/          OPC_CheckPatternPredicate, 8, // (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isTargetNaCl()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  2124*/          OPC_EmitMergeInputChains1_0,
/*  2125*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LWXC1), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f32, 2/*#Ops*/, 1, 2, 
                    // Src: (ld:{ *:[f32] } (add:{ *:[iPTR] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 27
                    // Dst: (LWXC1:{ *:[f32] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index)
/*  2133*/        /*Scope*/ 11, /*->2145*/
/*  2134*/          OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/*  2136*/          OPC_EmitMergeInputChains1_0,
/*  2137*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LWXC1_MM), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f32, 2/*#Ops*/, 1, 2, 
                    // Src: (ld:{ *:[f32] } (add:{ *:[iPTR] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 27
                    // Dst: (LWXC1_MM:{ *:[f32] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index)
/*  2145*/        0, /*End of Scope*/
/*  2146*/      /*SwitchType*/ 26, MVT::f64,// ->2174
/*  2148*/        OPC_Scope, 11, /*->2161*/ // 2 children in Scope
/*  2150*/          OPC_CheckPatternPredicate, 4, // (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isTargetNaCl()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  2152*/          OPC_EmitMergeInputChains1_0,
/*  2153*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LDXC1), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f64, 2/*#Ops*/, 1, 2, 
                    // Src: (ld:{ *:[f64] } (add:{ *:[iPTR] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 27
                    // Dst: (LDXC1:{ *:[f64] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index)
/*  2161*/        /*Scope*/ 11, /*->2173*/
/*  2162*/          OPC_CheckPatternPredicate, 5, // (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  2164*/          OPC_EmitMergeInputChains1_0,
/*  2165*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LDXC164), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f64, 2/*#Ops*/, 1, 2, 
                    // Src: (ld:{ *:[f64] } (add:{ *:[iPTR] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 27
                    // Dst: (LDXC164:{ *:[f64] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[iPTR] }:$index)
/*  2173*/        0, /*End of Scope*/
/*  2174*/      0, // EndSwitchType
/*  2175*/    /*Scope*/ 31|128,2/*287*/, /*->2464*/
/*  2177*/      OPC_RecordChild1, // #1 = $addr
/*  2178*/      OPC_CheckPredicate, 6, // Predicate_unindexedload
/*  2180*/      OPC_CheckPredicate, 9, // Predicate_load
/*  2182*/      OPC_SwitchType /*12 cases */, 32, MVT::f32,// ->2217
/*  2185*/        OPC_Scope, 14, /*->2201*/ // 2 children in Scope
/*  2187*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/*  2189*/          OPC_CheckComplexPat, /*CP*/2, /*#*/1, // selectAddrDefault:$addr #2 #3
/*  2192*/          OPC_EmitMergeInputChains1_0,
/*  2193*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LWC1), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[f32] } addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                    // Dst: (LWC1:{ *:[f32] } addrDefault:{ *:[iPTR] }:$addr)
/*  2201*/        /*Scope*/ 14, /*->2216*/
/*  2202*/          OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/*  2204*/          OPC_CheckComplexPat, /*CP*/2, /*#*/1, // selectAddrDefault:$addr #2 #3
/*  2207*/          OPC_EmitMergeInputChains1_0,
/*  2208*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LWC1_MM), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f32, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[f32] } addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                    // Dst: (LWC1_MM:{ *:[f32] } addrDefault:{ *:[i32] }:$addr)
/*  2216*/        0, /*End of Scope*/
/*  2217*/      /*SwitchType*/ 62, MVT::f64,// ->2281
/*  2219*/        OPC_Scope, 14, /*->2235*/ // 4 children in Scope
/*  2221*/          OPC_CheckPatternPredicate, 18, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/*  2223*/          OPC_CheckComplexPat, /*CP*/2, /*#*/1, // selectAddrDefault:$addr #2 #3
/*  2226*/          OPC_EmitMergeInputChains1_0,
/*  2227*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LDC164), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f64, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[f64] } addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                    // Dst: (LDC164:{ *:[f64] } addrDefault:{ *:[iPTR] }:$addr)
/*  2235*/        /*Scope*/ 14, /*->2250*/
/*  2236*/          OPC_CheckPatternPredicate, 19, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/*  2238*/          OPC_CheckComplexPat, /*CP*/2, /*#*/1, // selectAddrDefault:$addr #2 #3
/*  2241*/          OPC_EmitMergeInputChains1_0,
/*  2242*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LDC1), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f64, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[f64] } addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                    // Dst: (LDC1:{ *:[f64] } addrDefault:{ *:[iPTR] }:$addr)
/*  2250*/        /*Scope*/ 14, /*->2265*/
/*  2251*/          OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/*  2253*/          OPC_CheckComplexPat, /*CP*/2, /*#*/1, // selectAddrDefault:$addr #2 #3
/*  2256*/          OPC_EmitMergeInputChains1_0,
/*  2257*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LDC1_MM), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f64, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[f64] } addrDefault:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                    // Dst: (LDC1_MM:{ *:[f64] } addrDefault:{ *:[i32] }:$addr)
/*  2265*/        /*Scope*/ 14, /*->2280*/
/*  2266*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/*  2268*/          OPC_CheckComplexPat, /*CP*/7, /*#*/1, // selectIntAddr16MM:$addr #2 #3
/*  2271*/          OPC_EmitMergeInputChains1_0,
/*  2272*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LDC1_D64_MMR6), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f64, 2/*#Ops*/, 2, 3, 
                    // Src: (ld:{ *:[f64] } addrimm16:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                    // Dst: (LDC1_D64_MMR6:{ *:[f64] } addrimm16:{ *:[i32] }:$addr)
/*  2280*/        0, /*End of Scope*/
/*  2281*/      /*SwitchType*/ 14, MVT::f16,// ->2297
/*  2283*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/*  2285*/        OPC_CheckComplexPat, /*CP*/8, /*#*/1, // selectIntAddrSImm10:$addr #2 #3
/*  2288*/        OPC_EmitMergeInputChains1_0,
/*  2289*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LD_F16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::f16, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[f16] } addrimm10:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                  // Dst: (LD_F16:{ *:[f16] } addrimm10:{ *:[iPTR] }:$addr)
/*  2297*/      /*SwitchType*/ 14, MVT::v16i8,// ->2313
/*  2299*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/*  2301*/        OPC_CheckComplexPat, /*CP*/8, /*#*/1, // selectIntAddrSImm10:$addr #2 #3
/*  2304*/        OPC_EmitMergeInputChains1_0,
/*  2305*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::v16i8, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[v16i8] } addrimm10:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                  // Dst: (LD_B:{ *:[v16i8] } addrimm10:{ *:[iPTR] }:$addr)
/*  2313*/      /*SwitchType*/ 14, MVT::v8i16,// ->2329
/*  2315*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/*  2317*/        OPC_CheckComplexPat, /*CP*/9, /*#*/1, // selectIntAddrSImm10Lsl1:$addr #2 #3
/*  2320*/        OPC_EmitMergeInputChains1_0,
/*  2321*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::v8i16, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[v8i16] } addrimm10lsl1:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                  // Dst: (LD_H:{ *:[v8i16] } addrimm10lsl1:{ *:[iPTR] }:$addr)
/*  2329*/      /*SwitchType*/ 14, MVT::v4i32,// ->2345
/*  2331*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/*  2333*/        OPC_CheckComplexPat, /*CP*/10, /*#*/1, // selectIntAddrSImm10Lsl2:$addr #2 #3
/*  2336*/        OPC_EmitMergeInputChains1_0,
/*  2337*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::v4i32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[v4i32] } addrimm10lsl2:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                  // Dst: (LD_W:{ *:[v4i32] } addrimm10lsl2:{ *:[iPTR] }:$addr)
/*  2345*/      /*SwitchType*/ 14, MVT::v2i64,// ->2361
/*  2347*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/*  2349*/        OPC_CheckComplexPat, /*CP*/11, /*#*/1, // selectIntAddrSImm10Lsl3:$addr #2 #3
/*  2352*/        OPC_EmitMergeInputChains1_0,
/*  2353*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::v2i64, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[v2i64] } addrimm10lsl3:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                  // Dst: (LD_D:{ *:[v2i64] } addrimm10lsl3:{ *:[iPTR] }:$addr)
/*  2361*/      /*SwitchType*/ 25, MVT::v2i16,// ->2388
/*  2363*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/*  2365*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/*  2368*/        OPC_EmitMergeInputChains1_0,
/*  2369*/        OPC_EmitNode1, TARGET_VAL(Mips::LW), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/*  2377*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/*  2380*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 4, 5, 
                  // Src: (ld:{ *:[v2i16] } addr:{ *:[iPTR] }:$a)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                  // Dst: (COPY_TO_REGCLASS:{ *:[v2i16] } (LW:{ *:[i32] } addr:{ *:[iPTR] }:$a), DSPR:{ *:[i32] })
/*  2388*/      /*SwitchType*/ 25, MVT::v4i8,// ->2415
/*  2390*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/*  2392*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/*  2395*/        OPC_EmitMergeInputChains1_0,
/*  2396*/        OPC_EmitNode1, TARGET_VAL(Mips::LW), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/*  2404*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/*  2407*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 4, 5, 
                  // Src: (ld:{ *:[v4i8] } addr:{ *:[iPTR] }:$a)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                  // Dst: (COPY_TO_REGCLASS:{ *:[v4i8] } (LW:{ *:[i32] } addr:{ *:[iPTR] }:$a), DSPR:{ *:[i32] })
/*  2415*/      /*SwitchType*/ 14, MVT::v8f16,// ->2431
/*  2417*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/*  2419*/        OPC_CheckComplexPat, /*CP*/9, /*#*/1, // selectIntAddrSImm10Lsl1:$addr #2 #3
/*  2422*/        OPC_EmitMergeInputChains1_0,
/*  2423*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::v8f16, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[v8f16] } addrimm10lsl1:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                  // Dst: (LD_H:{ *:[v8f16] } addrimm10lsl1:{ *:[iPTR] }:$addr)
/*  2431*/      /*SwitchType*/ 14, MVT::v4f32,// ->2447
/*  2433*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/*  2435*/        OPC_CheckComplexPat, /*CP*/10, /*#*/1, // selectIntAddrSImm10Lsl2:$addr #2 #3
/*  2438*/        OPC_EmitMergeInputChains1_0,
/*  2439*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::v4f32, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[v4f32] } addrimm10lsl2:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                  // Dst: (LD_W:{ *:[v4f32] } addrimm10lsl2:{ *:[iPTR] }:$addr)
/*  2447*/      /*SwitchType*/ 14, MVT::v2f64,// ->2463
/*  2449*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/*  2451*/        OPC_CheckComplexPat, /*CP*/11, /*#*/1, // selectIntAddrSImm10Lsl3:$addr #2 #3
/*  2454*/        OPC_EmitMergeInputChains1_0,
/*  2455*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::v2f64, 2/*#Ops*/, 2, 3, 
                  // Src: (ld:{ *:[v2f64] } addrimm10lsl3:{ *:[iPTR] }:$addr)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 13
                  // Dst: (LD_D:{ *:[v2f64] } addrimm10lsl3:{ *:[iPTR] }:$addr)
/*  2463*/      0, // EndSwitchType
/*  2464*/    0, /*End of Scope*/
/*  2465*/  /*SwitchOpcode*/ 43|128,22/*2859*/, TARGET_VAL(ISD::BRCOND),// ->5328
/*  2469*/    OPC_RecordNode, // #0 = 'brcond' chained node
/*  2470*/    OPC_Scope, 75|128,21/*2763*/, /*->5236*/ // 2 children in Scope
/*  2473*/      OPC_MoveChild1,
/*  2474*/      OPC_CheckOpcode, TARGET_VAL(ISD::SETCC),
/*  2477*/      OPC_Scope, 52|128,4/*564*/, /*->3044*/ // 2 children in Scope
/*  2480*/        OPC_MoveChild0,
/*  2481*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/*  2484*/        OPC_Scope, 21|128,1/*149*/, /*->2636*/ // 3 children in Scope
/*  2487*/          OPC_RecordChild0, // #1 = $rs
/*  2488*/          OPC_MoveChild1,
/*  2489*/          OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/*  2492*/          OPC_Scope, 68, /*->2562*/ // 2 children in Scope
/*  2494*/            OPC_CheckChild0Integer, 1, 
/*  2496*/            OPC_RecordChild1, // #2 = $p
/*  2497*/            OPC_MoveChild1,
/*  2498*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  2501*/            OPC_CheckPredicate, 12, // Predicate_immZExt5_64
/*  2503*/            OPC_CheckType, MVT::i64,
/*  2505*/            OPC_MoveParent,
/*  2506*/            OPC_MoveParent,
/*  2507*/            OPC_CheckType, MVT::i64,
/*  2509*/            OPC_MoveParent,
/*  2510*/            OPC_CheckChild1Integer, 0, 
/*  2512*/            OPC_CheckType, MVT::i32,
/*  2514*/            OPC_Scope, 22, /*->2538*/ // 2 children in Scope
/*  2516*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  2518*/              OPC_MoveParent,
/*  2519*/              OPC_RecordChild2, // #3 = $offset
/*  2520*/              OPC_MoveChild2,
/*  2521*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2524*/              OPC_MoveParent,
/*  2525*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2527*/              OPC_EmitMergeInputChains1_0,
/*  2528*/              OPC_EmitConvertToTarget, 2,
/*  2530*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BBIT0), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 4, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } (and:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (shl:{ *:[i64] } 1:{ *:[i64] }, (imm:{ *:[i64] })<<P:Predicate_immZExt5_64>>:$p)), 0:{ *:[i64] }, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 26
                        // Dst: (BBIT0 GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] }):$p, (bb:{ *:[Other] }):$offset)
/*  2538*/            /*Scope*/ 22, /*->2561*/
/*  2539*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  2541*/              OPC_MoveParent,
/*  2542*/              OPC_RecordChild2, // #3 = $offset
/*  2543*/              OPC_MoveChild2,
/*  2544*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2547*/              OPC_MoveParent,
/*  2548*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2550*/              OPC_EmitMergeInputChains1_0,
/*  2551*/              OPC_EmitConvertToTarget, 2,
/*  2553*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BBIT1), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 4, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } (and:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (shl:{ *:[i64] } 1:{ *:[i64] }, (imm:{ *:[i64] })<<P:Predicate_immZExt5_64>>:$p)), 0:{ *:[i64] }, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 26
                        // Dst: (BBIT1 GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] }):$p, (bb:{ *:[Other] }):$offset)
/*  2561*/            0, /*End of Scope*/
/*  2562*/          /*Scope*/ 72, /*->2635*/
/*  2563*/            OPC_CheckChild0Integer, 0|128,0|128,0|128,0|128,16/*4294967296*/, 
/*  2569*/            OPC_RecordChild1, // #2 = $p
/*  2570*/            OPC_MoveChild1,
/*  2571*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  2574*/            OPC_CheckPredicate, 12, // Predicate_immZExt5_64
/*  2576*/            OPC_CheckType, MVT::i64,
/*  2578*/            OPC_MoveParent,
/*  2579*/            OPC_MoveParent,
/*  2580*/            OPC_CheckType, MVT::i64,
/*  2582*/            OPC_MoveParent,
/*  2583*/            OPC_CheckChild1Integer, 0, 
/*  2585*/            OPC_CheckType, MVT::i32,
/*  2587*/            OPC_Scope, 22, /*->2611*/ // 2 children in Scope
/*  2589*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  2591*/              OPC_MoveParent,
/*  2592*/              OPC_RecordChild2, // #3 = $offset
/*  2593*/              OPC_MoveChild2,
/*  2594*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2597*/              OPC_MoveParent,
/*  2598*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2600*/              OPC_EmitMergeInputChains1_0,
/*  2601*/              OPC_EmitConvertToTarget, 2,
/*  2603*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BBIT032), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 4, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } (and:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (shl:{ *:[i64] } 4294967296:{ *:[i64] }, (imm:{ *:[i64] })<<P:Predicate_immZExt5_64>>:$p)), 0:{ *:[i64] }, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 26
                        // Dst: (BBIT032 GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] }):$p, (bb:{ *:[Other] }):$offset)
/*  2611*/            /*Scope*/ 22, /*->2634*/
/*  2612*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  2614*/              OPC_MoveParent,
/*  2615*/              OPC_RecordChild2, // #3 = $offset
/*  2616*/              OPC_MoveChild2,
/*  2617*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2620*/              OPC_MoveParent,
/*  2621*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2623*/              OPC_EmitMergeInputChains1_0,
/*  2624*/              OPC_EmitConvertToTarget, 2,
/*  2626*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BBIT132), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 4, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } (and:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (shl:{ *:[i64] } 4294967296:{ *:[i64] }, (imm:{ *:[i64] })<<P:Predicate_immZExt5_64>>:$p)), 0:{ *:[i64] }, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 26
                        // Dst: (BBIT132 GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] }):$p, (bb:{ *:[Other] }):$offset)
/*  2634*/            0, /*End of Scope*/
/*  2635*/          0, /*End of Scope*/
/*  2636*/        /*Scope*/ 22|128,1/*150*/, /*->2788*/
/*  2638*/          OPC_MoveChild0,
/*  2639*/          OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/*  2642*/          OPC_Scope, 69, /*->2713*/ // 2 children in Scope
/*  2644*/            OPC_CheckChild0Integer, 1, 
/*  2646*/            OPC_RecordChild1, // #1 = $p
/*  2647*/            OPC_MoveChild1,
/*  2648*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  2651*/            OPC_CheckPredicate, 12, // Predicate_immZExt5_64
/*  2653*/            OPC_CheckType, MVT::i64,
/*  2655*/            OPC_MoveParent,
/*  2656*/            OPC_MoveParent,
/*  2657*/            OPC_RecordChild1, // #2 = $rs
/*  2658*/            OPC_CheckType, MVT::i64,
/*  2660*/            OPC_MoveParent,
/*  2661*/            OPC_CheckChild1Integer, 0, 
/*  2663*/            OPC_CheckType, MVT::i32,
/*  2665*/            OPC_Scope, 22, /*->2689*/ // 2 children in Scope
/*  2667*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  2669*/              OPC_MoveParent,
/*  2670*/              OPC_RecordChild2, // #3 = $offset
/*  2671*/              OPC_MoveChild2,
/*  2672*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2675*/              OPC_MoveParent,
/*  2676*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2678*/              OPC_EmitMergeInputChains1_0,
/*  2679*/              OPC_EmitConvertToTarget, 1,
/*  2681*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BBIT0), 0|OPFL_Chain,
                            3/*#Ops*/, 2, 4, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } (and:{ *:[i64] } (shl:{ *:[i64] } 1:{ *:[i64] }, (imm:{ *:[i64] })<<P:Predicate_immZExt5_64>>:$p), GPR64Opnd:{ *:[i64] }:$rs), 0:{ *:[i64] }, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 26
                        // Dst: (BBIT0 GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] }):$p, (bb:{ *:[Other] }):$offset)
/*  2689*/            /*Scope*/ 22, /*->2712*/
/*  2690*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  2692*/              OPC_MoveParent,
/*  2693*/              OPC_RecordChild2, // #3 = $offset
/*  2694*/              OPC_MoveChild2,
/*  2695*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2698*/              OPC_MoveParent,
/*  2699*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2701*/              OPC_EmitMergeInputChains1_0,
/*  2702*/              OPC_EmitConvertToTarget, 1,
/*  2704*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BBIT1), 0|OPFL_Chain,
                            3/*#Ops*/, 2, 4, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } (and:{ *:[i64] } (shl:{ *:[i64] } 1:{ *:[i64] }, (imm:{ *:[i64] })<<P:Predicate_immZExt5_64>>:$p), GPR64Opnd:{ *:[i64] }:$rs), 0:{ *:[i64] }, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 26
                        // Dst: (BBIT1 GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] }):$p, (bb:{ *:[Other] }):$offset)
/*  2712*/            0, /*End of Scope*/
/*  2713*/          /*Scope*/ 73, /*->2787*/
/*  2714*/            OPC_CheckChild0Integer, 0|128,0|128,0|128,0|128,16/*4294967296*/, 
/*  2720*/            OPC_RecordChild1, // #1 = $p
/*  2721*/            OPC_MoveChild1,
/*  2722*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  2725*/            OPC_CheckPredicate, 12, // Predicate_immZExt5_64
/*  2727*/            OPC_CheckType, MVT::i64,
/*  2729*/            OPC_MoveParent,
/*  2730*/            OPC_MoveParent,
/*  2731*/            OPC_RecordChild1, // #2 = $rs
/*  2732*/            OPC_CheckType, MVT::i64,
/*  2734*/            OPC_MoveParent,
/*  2735*/            OPC_CheckChild1Integer, 0, 
/*  2737*/            OPC_CheckType, MVT::i32,
/*  2739*/            OPC_Scope, 22, /*->2763*/ // 2 children in Scope
/*  2741*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  2743*/              OPC_MoveParent,
/*  2744*/              OPC_RecordChild2, // #3 = $offset
/*  2745*/              OPC_MoveChild2,
/*  2746*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2749*/              OPC_MoveParent,
/*  2750*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2752*/              OPC_EmitMergeInputChains1_0,
/*  2753*/              OPC_EmitConvertToTarget, 1,
/*  2755*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BBIT032), 0|OPFL_Chain,
                            3/*#Ops*/, 2, 4, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } (and:{ *:[i64] } (shl:{ *:[i64] } 4294967296:{ *:[i64] }, (imm:{ *:[i64] })<<P:Predicate_immZExt5_64>>:$p), GPR64Opnd:{ *:[i64] }:$rs), 0:{ *:[i64] }, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 26
                        // Dst: (BBIT032 GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] }):$p, (bb:{ *:[Other] }):$offset)
/*  2763*/            /*Scope*/ 22, /*->2786*/
/*  2764*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  2766*/              OPC_MoveParent,
/*  2767*/              OPC_RecordChild2, // #3 = $offset
/*  2768*/              OPC_MoveChild2,
/*  2769*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2772*/              OPC_MoveParent,
/*  2773*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2775*/              OPC_EmitMergeInputChains1_0,
/*  2776*/              OPC_EmitConvertToTarget, 1,
/*  2778*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BBIT132), 0|OPFL_Chain,
                            3/*#Ops*/, 2, 4, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } (and:{ *:[i64] } (shl:{ *:[i64] } 4294967296:{ *:[i64] }, (imm:{ *:[i64] })<<P:Predicate_immZExt5_64>>:$p), GPR64Opnd:{ *:[i64] }:$rs), 0:{ *:[i64] }, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 26
                        // Dst: (BBIT132 GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] }):$p, (bb:{ *:[Other] }):$offset)
/*  2786*/            0, /*End of Scope*/
/*  2787*/          0, /*End of Scope*/
/*  2788*/        /*Scope*/ 125|128,1/*253*/, /*->3043*/
/*  2790*/          OPC_RecordChild0, // #1 = $lhs
/*  2791*/          OPC_RecordChild1, // #2 = $mask
/*  2792*/          OPC_MoveChild1,
/*  2793*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  2796*/          OPC_Scope, 35, /*->2833*/ // 5 children in Scope
/*  2798*/            OPC_CheckPredicate, 13, // Predicate_PowerOf2LO
/*  2800*/            OPC_MoveParent,
/*  2801*/            OPC_CheckType, MVT::i64,
/*  2803*/            OPC_MoveParent,
/*  2804*/            OPC_CheckChild1Integer, 0, 
/*  2806*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  2808*/            OPC_CheckType, MVT::i32,
/*  2810*/            OPC_MoveParent,
/*  2811*/            OPC_RecordChild2, // #3 = $dst
/*  2812*/            OPC_MoveChild2,
/*  2813*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2816*/            OPC_MoveParent,
/*  2817*/            OPC_CheckPatternPredicate, 30, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding())
/*  2819*/            OPC_EmitMergeInputChains1_0,
/*  2820*/            OPC_EmitConvertToTarget, 2,
/*  2822*/            OPC_EmitNodeXForm, 0, 4, // Log2LO
/*  2825*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::BBIT0), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 5, 3, 
                      // Src: (brcond (setcc:{ *:[i32] } (and:{ *:[i64] } i64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_PowerOf2LO>>:$mask), 0:{ *:[i64] }, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 18
                      // Dst: (BBIT0 i64:{ *:[i64] }:$lhs, (Log2LO:{ *:[i64] } (imm:{ *:[i64] })<<P:Predicate_PowerOf2LO>>:$mask), (bb:{ *:[Other] }):$dst)
/*  2833*/          /*Scope*/ 35, /*->2869*/
/*  2834*/            OPC_CheckPredicate, 14, // Predicate_PowerOf2HI
/*  2836*/            OPC_MoveParent,
/*  2837*/            OPC_CheckType, MVT::i64,
/*  2839*/            OPC_MoveParent,
/*  2840*/            OPC_CheckChild1Integer, 0, 
/*  2842*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  2844*/            OPC_CheckType, MVT::i32,
/*  2846*/            OPC_MoveParent,
/*  2847*/            OPC_RecordChild2, // #3 = $dst
/*  2848*/            OPC_MoveChild2,
/*  2849*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2852*/            OPC_MoveParent,
/*  2853*/            OPC_CheckPatternPredicate, 30, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding())
/*  2855*/            OPC_EmitMergeInputChains1_0,
/*  2856*/            OPC_EmitConvertToTarget, 2,
/*  2858*/            OPC_EmitNodeXForm, 1, 4, // Log2HI
/*  2861*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::BBIT032), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 5, 3, 
                      // Src: (brcond (setcc:{ *:[i32] } (and:{ *:[i64] } i64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_PowerOf2HI>>:$mask), 0:{ *:[i64] }, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 18
                      // Dst: (BBIT032 i64:{ *:[i64] }:$lhs, (Log2HI:{ *:[i64] } (imm:{ *:[i64] })<<P:Predicate_PowerOf2HI>>:$mask), (bb:{ *:[Other] }):$dst)
/*  2869*/          /*Scope*/ 35, /*->2905*/
/*  2870*/            OPC_CheckPredicate, 13, // Predicate_PowerOf2LO
/*  2872*/            OPC_MoveParent,
/*  2873*/            OPC_CheckType, MVT::i64,
/*  2875*/            OPC_MoveParent,
/*  2876*/            OPC_CheckChild1Integer, 0, 
/*  2878*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  2880*/            OPC_CheckType, MVT::i32,
/*  2882*/            OPC_MoveParent,
/*  2883*/            OPC_RecordChild2, // #3 = $dst
/*  2884*/            OPC_MoveChild2,
/*  2885*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2888*/            OPC_MoveParent,
/*  2889*/            OPC_CheckPatternPredicate, 30, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding())
/*  2891*/            OPC_EmitMergeInputChains1_0,
/*  2892*/            OPC_EmitConvertToTarget, 2,
/*  2894*/            OPC_EmitNodeXForm, 0, 4, // Log2LO
/*  2897*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::BBIT1), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 5, 3, 
                      // Src: (brcond (setcc:{ *:[i32] } (and:{ *:[i64] } i64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_PowerOf2LO>>:$mask), 0:{ *:[i64] }, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 18
                      // Dst: (BBIT1 i64:{ *:[i64] }:$lhs, (Log2LO:{ *:[i64] } (imm:{ *:[i64] })<<P:Predicate_PowerOf2LO>>:$mask), (bb:{ *:[Other] }):$dst)
/*  2905*/          /*Scope*/ 35, /*->2941*/
/*  2906*/            OPC_CheckPredicate, 14, // Predicate_PowerOf2HI
/*  2908*/            OPC_MoveParent,
/*  2909*/            OPC_CheckType, MVT::i64,
/*  2911*/            OPC_MoveParent,
/*  2912*/            OPC_CheckChild1Integer, 0, 
/*  2914*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  2916*/            OPC_CheckType, MVT::i32,
/*  2918*/            OPC_MoveParent,
/*  2919*/            OPC_RecordChild2, // #3 = $dst
/*  2920*/            OPC_MoveChild2,
/*  2921*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2924*/            OPC_MoveParent,
/*  2925*/            OPC_CheckPatternPredicate, 30, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding())
/*  2927*/            OPC_EmitMergeInputChains1_0,
/*  2928*/            OPC_EmitConvertToTarget, 2,
/*  2930*/            OPC_EmitNodeXForm, 1, 4, // Log2HI
/*  2933*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::BBIT132), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 5, 3, 
                      // Src: (brcond (setcc:{ *:[i32] } (and:{ *:[i64] } i64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_PowerOf2HI>>:$mask), 0:{ *:[i64] }, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 18
                      // Dst: (BBIT132 i64:{ *:[i64] }:$lhs, (Log2HI:{ *:[i64] } (imm:{ *:[i64] })<<P:Predicate_PowerOf2HI>>:$mask), (bb:{ *:[Other] }):$dst)
/*  2941*/          /*Scope*/ 100, /*->3042*/
/*  2942*/            OPC_CheckPredicate, 15, // Predicate_PowerOf2LO_i32
/*  2944*/            OPC_MoveParent,
/*  2945*/            OPC_CheckType, MVT::i32,
/*  2947*/            OPC_MoveParent,
/*  2948*/            OPC_CheckChild1Integer, 0, 
/*  2950*/            OPC_CheckType, MVT::i32,
/*  2952*/            OPC_Scope, 43, /*->2997*/ // 2 children in Scope
/*  2954*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  2956*/              OPC_MoveParent,
/*  2957*/              OPC_RecordChild2, // #3 = $dst
/*  2958*/              OPC_MoveChild2,
/*  2959*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2962*/              OPC_MoveParent,
/*  2963*/              OPC_CheckPatternPredicate, 30, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding())
/*  2965*/              OPC_EmitMergeInputChains1_0,
/*  2966*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                            MVT::i64, 0/*#Ops*/,  // Results = #4
/*  2972*/              OPC_EmitInteger, MVT::i32, Mips::sub_32,
/*  2975*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                            MVT::i64, 3/*#Ops*/, 4, 1, 5,  // Results = #6
/*  2984*/              OPC_EmitConvertToTarget, 2,
/*  2986*/              OPC_EmitNodeXForm, 0, 7, // Log2LO
/*  2989*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BBIT0), 0|OPFL_Chain,
                            3/*#Ops*/, 6, 8, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } (and:{ *:[i32] } i32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_PowerOf2LO_i32>>:$mask), 0:{ *:[i32] }, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 18
                        // Dst: (BBIT0 (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), i32:{ *:[i32] }:$lhs, sub_32:{ *:[i32] }), (Log2LO:{ *:[i64] } (imm:{ *:[i32] })<<P:Predicate_PowerOf2LO_i32>>:$mask), (bb:{ *:[Other] }):$dst)
/*  2997*/            /*Scope*/ 43, /*->3041*/
/*  2998*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  3000*/              OPC_MoveParent,
/*  3001*/              OPC_RecordChild2, // #3 = $dst
/*  3002*/              OPC_MoveChild2,
/*  3003*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3006*/              OPC_MoveParent,
/*  3007*/              OPC_CheckPatternPredicate, 30, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding())
/*  3009*/              OPC_EmitMergeInputChains1_0,
/*  3010*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                            MVT::i64, 0/*#Ops*/,  // Results = #4
/*  3016*/              OPC_EmitInteger, MVT::i32, Mips::sub_32,
/*  3019*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                            MVT::i64, 3/*#Ops*/, 4, 1, 5,  // Results = #6
/*  3028*/              OPC_EmitConvertToTarget, 2,
/*  3030*/              OPC_EmitNodeXForm, 0, 7, // Log2LO
/*  3033*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BBIT1), 0|OPFL_Chain,
                            3/*#Ops*/, 6, 8, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } (and:{ *:[i32] } i32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_PowerOf2LO_i32>>:$mask), 0:{ *:[i32] }, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 18
                        // Dst: (BBIT1 (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), i32:{ *:[i32] }:$lhs, sub_32:{ *:[i32] }), (Log2LO:{ *:[i64] } (imm:{ *:[i32] })<<P:Predicate_PowerOf2LO_i32>>:$mask), (bb:{ *:[Other] }):$dst)
/*  3041*/            0, /*End of Scope*/
/*  3042*/          0, /*End of Scope*/
/*  3043*/        0, /*End of Scope*/
/*  3044*/      /*Scope*/ 13|128,17/*2189*/, /*->5235*/
/*  3046*/        OPC_RecordChild0, // #1 = $rs
/*  3047*/        OPC_Scope, 94|128,12/*1630*/, /*->4680*/ // 2 children in Scope
/*  3050*/          OPC_CheckChild0Type, MVT::i32,
/*  3052*/          OPC_Scope, 80|128,2/*336*/, /*->3391*/ // 4 children in Scope
/*  3055*/            OPC_CheckChild1Integer, 0, 
/*  3057*/            OPC_CheckType, MVT::i32,
/*  3059*/            OPC_Scope, 19, /*->3080*/ // 15 children in Scope
/*  3061*/              OPC_CheckChild2CondCode, ISD::SETGE,
/*  3063*/              OPC_MoveParent,
/*  3064*/              OPC_RecordChild2, // #2 = $offset
/*  3065*/              OPC_MoveChild2,
/*  3066*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3069*/              OPC_MoveParent,
/*  3070*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3072*/              OPC_EmitMergeInputChains1_0,
/*  3073*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BGEZ), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, 0:{ *:[i32] }, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 11
                        // Dst: (BGEZ GPR32Opnd:{ *:[i32] }:$rs, (bb:{ *:[Other] }):$offset)
/*  3080*/            /*Scope*/ 19, /*->3100*/
/*  3081*/              OPC_CheckChild2CondCode, ISD::SETGT,
/*  3083*/              OPC_MoveParent,
/*  3084*/              OPC_RecordChild2, // #2 = $offset
/*  3085*/              OPC_MoveChild2,
/*  3086*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3089*/              OPC_MoveParent,
/*  3090*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3092*/              OPC_EmitMergeInputChains1_0,
/*  3093*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BGTZ), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, 0:{ *:[i32] }, SETGT:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 11
                        // Dst: (BGTZ GPR32Opnd:{ *:[i32] }:$rs, (bb:{ *:[Other] }):$offset)
/*  3100*/            /*Scope*/ 19, /*->3120*/
/*  3101*/              OPC_CheckChild2CondCode, ISD::SETLE,
/*  3103*/              OPC_MoveParent,
/*  3104*/              OPC_RecordChild2, // #2 = $offset
/*  3105*/              OPC_MoveChild2,
/*  3106*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3109*/              OPC_MoveParent,
/*  3110*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3112*/              OPC_EmitMergeInputChains1_0,
/*  3113*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BLEZ), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, 0:{ *:[i32] }, SETLE:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 11
                        // Dst: (BLEZ GPR32Opnd:{ *:[i32] }:$rs, (bb:{ *:[Other] }):$offset)
/*  3120*/            /*Scope*/ 19, /*->3140*/
/*  3121*/              OPC_CheckChild2CondCode, ISD::SETLT,
/*  3123*/              OPC_MoveParent,
/*  3124*/              OPC_RecordChild2, // #2 = $offset
/*  3125*/              OPC_MoveChild2,
/*  3126*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3129*/              OPC_MoveParent,
/*  3130*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3132*/              OPC_EmitMergeInputChains1_0,
/*  3133*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BLTZ), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, 0:{ *:[i32] }, SETLT:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 11
                        // Dst: (BLTZ GPR32Opnd:{ *:[i32] }:$rs, (bb:{ *:[Other] }):$offset)
/*  3140*/            /*Scope*/ 23, /*->3164*/
/*  3141*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  3143*/              OPC_MoveParent,
/*  3144*/              OPC_RecordChild2, // #2 = $dst
/*  3145*/              OPC_MoveChild2,
/*  3146*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3149*/              OPC_MoveParent,
/*  3150*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3152*/              OPC_EmitMergeInputChains1_0,
/*  3153*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3156*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BNE), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 3, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 11
                        // Dst: (BNE GPR32:{ *:[i32] }:$lhs, ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  3164*/            /*Scope*/ 37, /*->3202*/
/*  3165*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  3167*/              OPC_MoveParent,
/*  3168*/              OPC_RecordChild2, // #2 = $dst
/*  3169*/              OPC_MoveChild2,
/*  3170*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3173*/              OPC_MoveParent,
/*  3174*/              OPC_Scope, 14, /*->3190*/ // 2 children in Scope
/*  3176*/                OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3178*/                OPC_EmitMergeInputChains1_0,
/*  3179*/                OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3182*/                OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                              3/*#Ops*/, 1, 3, 2, 
                          // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 11
                          // Dst: (BEQ GPR32:{ *:[i32] }:$lhs, ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  3190*/              /*Scope*/ 10, /*->3201*/
/*  3191*/                OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  3193*/                OPC_EmitMergeInputChains1_0,
/*  3194*/                OPC_MorphNodeTo0, TARGET_VAL(Mips::BeqzRxImm16), 0|OPFL_Chain,
                              2/*#Ops*/, 1, 2, 
                          // Src: (brcond (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, 0:{ *:[i32] }, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$targ16) - Complexity = 11
                          // Dst: (BeqzRxImm16 CPU16Regs:{ *:[i32] }:$rx, (bb:{ *:[Other] }):$targ16)
/*  3201*/              0, /*End of Scope*/
/*  3202*/            /*Scope*/ 19, /*->3222*/
/*  3203*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  3205*/              OPC_MoveParent,
/*  3206*/              OPC_RecordChild2, // #2 = $targ16
/*  3207*/              OPC_MoveChild2,
/*  3208*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3211*/              OPC_MoveParent,
/*  3212*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  3214*/              OPC_EmitMergeInputChains1_0,
/*  3215*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BnezRxImm16), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, 0:{ *:[i32] }, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$targ16) - Complexity = 11
                        // Dst: (BnezRxImm16 CPU16Regs:{ *:[i32] }:$rx, (bb:{ *:[Other] }):$targ16)
/*  3222*/            /*Scope*/ 19, /*->3242*/
/*  3223*/              OPC_CheckChild2CondCode, ISD::SETGE,
/*  3225*/              OPC_MoveParent,
/*  3226*/              OPC_RecordChild2, // #2 = $offset
/*  3227*/              OPC_MoveChild2,
/*  3228*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3231*/              OPC_MoveParent,
/*  3232*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3234*/              OPC_EmitMergeInputChains1_0,
/*  3235*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BGEZ_MM), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, 0:{ *:[i32] }, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 11
                        // Dst: (BGEZ_MM GPR32Opnd:{ *:[i32] }:$rs, (bb:{ *:[Other] }):$offset)
/*  3242*/            /*Scope*/ 19, /*->3262*/
/*  3243*/              OPC_CheckChild2CondCode, ISD::SETGT,
/*  3245*/              OPC_MoveParent,
/*  3246*/              OPC_RecordChild2, // #2 = $offset
/*  3247*/              OPC_MoveChild2,
/*  3248*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3251*/              OPC_MoveParent,
/*  3252*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3254*/              OPC_EmitMergeInputChains1_0,
/*  3255*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BGTZ_MM), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, 0:{ *:[i32] }, SETGT:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 11
                        // Dst: (BGTZ_MM GPR32Opnd:{ *:[i32] }:$rs, (bb:{ *:[Other] }):$offset)
/*  3262*/            /*Scope*/ 19, /*->3282*/
/*  3263*/              OPC_CheckChild2CondCode, ISD::SETLE,
/*  3265*/              OPC_MoveParent,
/*  3266*/              OPC_RecordChild2, // #2 = $offset
/*  3267*/              OPC_MoveChild2,
/*  3268*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3271*/              OPC_MoveParent,
/*  3272*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3274*/              OPC_EmitMergeInputChains1_0,
/*  3275*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BLEZ_MM), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, 0:{ *:[i32] }, SETLE:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 11
                        // Dst: (BLEZ_MM GPR32Opnd:{ *:[i32] }:$rs, (bb:{ *:[Other] }):$offset)
/*  3282*/            /*Scope*/ 19, /*->3302*/
/*  3283*/              OPC_CheckChild2CondCode, ISD::SETLT,
/*  3285*/              OPC_MoveParent,
/*  3286*/              OPC_RecordChild2, // #2 = $offset
/*  3287*/              OPC_MoveChild2,
/*  3288*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3291*/              OPC_MoveParent,
/*  3292*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3294*/              OPC_EmitMergeInputChains1_0,
/*  3295*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BLTZ_MM), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, 0:{ *:[i32] }, SETLT:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 11
                        // Dst: (BLTZ_MM GPR32Opnd:{ *:[i32] }:$rs, (bb:{ *:[Other] }):$offset)
/*  3302*/            /*Scope*/ 23, /*->3326*/
/*  3303*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  3305*/              OPC_MoveParent,
/*  3306*/              OPC_RecordChild2, // #2 = $dst
/*  3307*/              OPC_MoveChild2,
/*  3308*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3311*/              OPC_MoveParent,
/*  3312*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3314*/              OPC_EmitMergeInputChains1_0,
/*  3315*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3318*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BNE_MM), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 3, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 11
                        // Dst: (BNE_MM GPR32:{ *:[i32] }:$lhs, ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  3326*/            /*Scope*/ 23, /*->3350*/
/*  3327*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  3329*/              OPC_MoveParent,
/*  3330*/              OPC_RecordChild2, // #2 = $dst
/*  3331*/              OPC_MoveChild2,
/*  3332*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3335*/              OPC_MoveParent,
/*  3336*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3338*/              OPC_EmitMergeInputChains1_0,
/*  3339*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3342*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ_MM), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 3, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 11
                        // Dst: (BEQ_MM GPR32:{ *:[i32] }:$lhs, ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  3350*/            /*Scope*/ 19, /*->3370*/
/*  3351*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  3353*/              OPC_MoveParent,
/*  3354*/              OPC_RecordChild2, // #2 = $dst
/*  3355*/              OPC_MoveChild2,
/*  3356*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3359*/              OPC_MoveParent,
/*  3360*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  3362*/              OPC_EmitMergeInputChains1_0,
/*  3363*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BNEZC_MMR6), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 11
                        // Dst: (BNEZC_MMR6 GPR32:{ *:[i32] }:$lhs, (bb:{ *:[Other] }):$dst)
/*  3370*/            /*Scope*/ 19, /*->3390*/
/*  3371*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  3373*/              OPC_MoveParent,
/*  3374*/              OPC_RecordChild2, // #2 = $dst
/*  3375*/              OPC_MoveChild2,
/*  3376*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3379*/              OPC_MoveParent,
/*  3380*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  3382*/              OPC_EmitMergeInputChains1_0,
/*  3383*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQZC_MMR6), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 11
                        // Dst: (BEQZC_MMR6 GPR32:{ *:[i32] }:$lhs, (bb:{ *:[Other] }):$dst)
/*  3390*/            0, /*End of Scope*/
/*  3391*/          /*Scope*/ 37, /*->3429*/
/*  3392*/            OPC_CheckChild1Integer, 1, 
/*  3394*/            OPC_CheckChild2CondCode, ISD::SETLT,
/*  3396*/            OPC_CheckType, MVT::i32,
/*  3398*/            OPC_MoveParent,
/*  3399*/            OPC_RecordChild2, // #2 = $dst
/*  3400*/            OPC_MoveChild2,
/*  3401*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3404*/            OPC_MoveParent,
/*  3405*/            OPC_Scope, 10, /*->3417*/ // 2 children in Scope
/*  3407*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3409*/              OPC_EmitMergeInputChains1_0,
/*  3410*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BLEZ), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } i32:{ *:[i32] }:$lhs, 1:{ *:[i32] }, SETLT:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 11
                        // Dst: (BLEZ i32:{ *:[i32] }:$lhs, (bb:{ *:[Other] }):$dst)
/*  3417*/            /*Scope*/ 10, /*->3428*/
/*  3418*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3420*/              OPC_EmitMergeInputChains1_0,
/*  3421*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BLEZ_MM), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } i32:{ *:[i32] }:$lhs, 1:{ *:[i32] }, SETLT:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 11
                        // Dst: (BLEZ_MM i32:{ *:[i32] }:$lhs, (bb:{ *:[Other] }):$dst)
/*  3428*/            0, /*End of Scope*/
/*  3429*/          /*Scope*/ 46, /*->3476*/
/*  3430*/            OPC_CheckChild1Integer, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/*  3441*/            OPC_CheckChild2CondCode, ISD::SETGT,
/*  3443*/            OPC_CheckType, MVT::i32,
/*  3445*/            OPC_MoveParent,
/*  3446*/            OPC_RecordChild2, // #2 = $dst
/*  3447*/            OPC_MoveChild2,
/*  3448*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3451*/            OPC_MoveParent,
/*  3452*/            OPC_Scope, 10, /*->3464*/ // 2 children in Scope
/*  3454*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3456*/              OPC_EmitMergeInputChains1_0,
/*  3457*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BGEZ), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } i32:{ *:[i32] }:$lhs, -1:{ *:[i32] }, SETGT:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 11
                        // Dst: (BGEZ i32:{ *:[i32] }:$lhs, (bb:{ *:[Other] }):$dst)
/*  3464*/            /*Scope*/ 10, /*->3475*/
/*  3465*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3467*/              OPC_EmitMergeInputChains1_0,
/*  3468*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BGEZ_MM), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } i32:{ *:[i32] }:$lhs, -1:{ *:[i32] }, SETGT:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 11
                        // Dst: (BGEZ_MM i32:{ *:[i32] }:$lhs, (bb:{ *:[Other] }):$dst)
/*  3475*/            0, /*End of Scope*/
/*  3476*/          /*Scope*/ 49|128,9/*1201*/, /*->4679*/
/*  3478*/            OPC_RecordChild1, // #2 = $rhs
/*  3479*/            OPC_Scope, 62|128,4/*574*/, /*->4056*/ // 23 children in Scope
/*  3482*/              OPC_MoveChild1,
/*  3483*/              OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  3486*/              OPC_Scope, 75, /*->3563*/ // 9 children in Scope
/*  3488*/                OPC_CheckPredicate, 16, // Predicate_immSExt16
/*  3490*/                OPC_MoveParent,
/*  3491*/                OPC_CheckType, MVT::i32,
/*  3493*/                OPC_Scope, 33, /*->3528*/ // 2 children in Scope
/*  3495*/                  OPC_CheckChild2CondCode, ISD::SETGE,
/*  3497*/                  OPC_MoveParent,
/*  3498*/                  OPC_RecordChild2, // #3 = $dst
/*  3499*/                  OPC_MoveChild2,
/*  3500*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3503*/                  OPC_MoveParent,
/*  3504*/                  OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3506*/                  OPC_EmitMergeInputChains1_0,
/*  3507*/                  OPC_EmitConvertToTarget, 2,
/*  3509*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  3517*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3520*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                                3/*#Ops*/, 5, 6, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQ (SLTi:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  3528*/                /*Scope*/ 33, /*->3562*/
/*  3529*/                  OPC_CheckChild2CondCode, ISD::SETUGE,
/*  3531*/                  OPC_MoveParent,
/*  3532*/                  OPC_RecordChild2, // #3 = $dst
/*  3533*/                  OPC_MoveChild2,
/*  3534*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3537*/                  OPC_MoveParent,
/*  3538*/                  OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3540*/                  OPC_EmitMergeInputChains1_0,
/*  3541*/                  OPC_EmitConvertToTarget, 2,
/*  3543*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  3551*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3554*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                                3/*#Ops*/, 5, 6, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETUGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQ (SLTiu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  3562*/                0, /*End of Scope*/
/*  3563*/              /*Scope*/ 81, /*->3645*/
/*  3564*/                OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/*  3566*/                OPC_MoveParent,
/*  3567*/                OPC_CheckType, MVT::i32,
/*  3569*/                OPC_Scope, 36, /*->3607*/ // 2 children in Scope
/*  3571*/                  OPC_CheckChild2CondCode, ISD::SETGT,
/*  3573*/                  OPC_MoveParent,
/*  3574*/                  OPC_RecordChild2, // #3 = $dst
/*  3575*/                  OPC_MoveChild2,
/*  3576*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3579*/                  OPC_MoveParent,
/*  3580*/                  OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3582*/                  OPC_EmitMergeInputChains1_0,
/*  3583*/                  OPC_EmitConvertToTarget, 2,
/*  3585*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  3588*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  3596*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3599*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                                3/*#Ops*/, 6, 7, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQ (SLTi:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  3607*/                /*Scope*/ 36, /*->3644*/
/*  3608*/                  OPC_CheckChild2CondCode, ISD::SETUGT,
/*  3610*/                  OPC_MoveParent,
/*  3611*/                  OPC_RecordChild2, // #3 = $dst
/*  3612*/                  OPC_MoveChild2,
/*  3613*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3616*/                  OPC_MoveParent,
/*  3617*/                  OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3619*/                  OPC_EmitMergeInputChains1_0,
/*  3620*/                  OPC_EmitConvertToTarget, 2,
/*  3622*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  3625*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  3633*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3636*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                                3/*#Ops*/, 6, 7, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQ (SLTiu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  3644*/                0, /*End of Scope*/
/*  3645*/              /*Scope*/ 75, /*->3721*/
/*  3646*/                OPC_CheckPredicate, 16, // Predicate_immSExt16
/*  3648*/                OPC_MoveParent,
/*  3649*/                OPC_CheckType, MVT::i32,
/*  3651*/                OPC_Scope, 33, /*->3686*/ // 2 children in Scope
/*  3653*/                  OPC_CheckChild2CondCode, ISD::SETGE,
/*  3655*/                  OPC_MoveParent,
/*  3656*/                  OPC_RecordChild2, // #3 = $dst
/*  3657*/                  OPC_MoveChild2,
/*  3658*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3661*/                  OPC_MoveParent,
/*  3662*/                  OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3664*/                  OPC_EmitMergeInputChains1_0,
/*  3665*/                  OPC_EmitConvertToTarget, 2,
/*  3667*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  3675*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3678*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ_MM), 0|OPFL_Chain,
                                3/*#Ops*/, 5, 6, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQ_MM (SLTi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  3686*/                /*Scope*/ 33, /*->3720*/
/*  3687*/                  OPC_CheckChild2CondCode, ISD::SETUGE,
/*  3689*/                  OPC_MoveParent,
/*  3690*/                  OPC_RecordChild2, // #3 = $dst
/*  3691*/                  OPC_MoveChild2,
/*  3692*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3695*/                  OPC_MoveParent,
/*  3696*/                  OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3698*/                  OPC_EmitMergeInputChains1_0,
/*  3699*/                  OPC_EmitConvertToTarget, 2,
/*  3701*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  3709*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3712*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ_MM), 0|OPFL_Chain,
                                3/*#Ops*/, 5, 6, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETUGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQ_MM (SLTiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  3720*/                0, /*End of Scope*/
/*  3721*/              /*Scope*/ 81, /*->3803*/
/*  3722*/                OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/*  3724*/                OPC_MoveParent,
/*  3725*/                OPC_CheckType, MVT::i32,
/*  3727*/                OPC_Scope, 36, /*->3765*/ // 2 children in Scope
/*  3729*/                  OPC_CheckChild2CondCode, ISD::SETGT,
/*  3731*/                  OPC_MoveParent,
/*  3732*/                  OPC_RecordChild2, // #3 = $dst
/*  3733*/                  OPC_MoveChild2,
/*  3734*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3737*/                  OPC_MoveParent,
/*  3738*/                  OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3740*/                  OPC_EmitMergeInputChains1_0,
/*  3741*/                  OPC_EmitConvertToTarget, 2,
/*  3743*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  3746*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  3754*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3757*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ_MM), 0|OPFL_Chain,
                                3/*#Ops*/, 6, 7, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQ_MM (SLTi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  3765*/                /*Scope*/ 36, /*->3802*/
/*  3766*/                  OPC_CheckChild2CondCode, ISD::SETUGT,
/*  3768*/                  OPC_MoveParent,
/*  3769*/                  OPC_RecordChild2, // #3 = $dst
/*  3770*/                  OPC_MoveChild2,
/*  3771*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3774*/                  OPC_MoveParent,
/*  3775*/                  OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3777*/                  OPC_EmitMergeInputChains1_0,
/*  3778*/                  OPC_EmitConvertToTarget, 2,
/*  3780*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  3783*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  3791*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3794*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ_MM), 0|OPFL_Chain,
                                3/*#Ops*/, 6, 7, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQ_MM (SLTiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  3802*/                0, /*End of Scope*/
/*  3803*/              /*Scope*/ 67, /*->3871*/
/*  3804*/                OPC_CheckPredicate, 16, // Predicate_immSExt16
/*  3806*/                OPC_MoveParent,
/*  3807*/                OPC_CheckType, MVT::i32,
/*  3809*/                OPC_Scope, 29, /*->3840*/ // 2 children in Scope
/*  3811*/                  OPC_CheckChild2CondCode, ISD::SETGE,
/*  3813*/                  OPC_MoveParent,
/*  3814*/                  OPC_RecordChild2, // #3 = $dst
/*  3815*/                  OPC_MoveChild2,
/*  3816*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3819*/                  OPC_MoveParent,
/*  3820*/                  OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  3822*/                  OPC_EmitMergeInputChains1_0,
/*  3823*/                  OPC_EmitConvertToTarget, 2,
/*  3825*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  3833*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQZC_MMR6), 0|OPFL_Chain,
                                2/*#Ops*/, 5, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQZC_MMR6 (SLTi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), (bb:{ *:[Other] }):$dst)
/*  3840*/                /*Scope*/ 29, /*->3870*/
/*  3841*/                  OPC_CheckChild2CondCode, ISD::SETUGE,
/*  3843*/                  OPC_MoveParent,
/*  3844*/                  OPC_RecordChild2, // #3 = $dst
/*  3845*/                  OPC_MoveChild2,
/*  3846*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3849*/                  OPC_MoveParent,
/*  3850*/                  OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  3852*/                  OPC_EmitMergeInputChains1_0,
/*  3853*/                  OPC_EmitConvertToTarget, 2,
/*  3855*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  3863*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQZC_MMR6), 0|OPFL_Chain,
                                2/*#Ops*/, 5, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETUGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQZC_MMR6 (SLTiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), (bb:{ *:[Other] }):$dst)
/*  3870*/                0, /*End of Scope*/
/*  3871*/              /*Scope*/ 73, /*->3945*/
/*  3872*/                OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/*  3874*/                OPC_MoveParent,
/*  3875*/                OPC_CheckType, MVT::i32,
/*  3877*/                OPC_Scope, 32, /*->3911*/ // 2 children in Scope
/*  3879*/                  OPC_CheckChild2CondCode, ISD::SETGT,
/*  3881*/                  OPC_MoveParent,
/*  3882*/                  OPC_RecordChild2, // #3 = $dst
/*  3883*/                  OPC_MoveChild2,
/*  3884*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3887*/                  OPC_MoveParent,
/*  3888*/                  OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  3890*/                  OPC_EmitMergeInputChains1_0,
/*  3891*/                  OPC_EmitConvertToTarget, 2,
/*  3893*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  3896*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  3904*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQZC_MMR6), 0|OPFL_Chain,
                                2/*#Ops*/, 6, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQZC_MMR6 (SLTi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), (bb:{ *:[Other] }):$dst)
/*  3911*/                /*Scope*/ 32, /*->3944*/
/*  3912*/                  OPC_CheckChild2CondCode, ISD::SETUGT,
/*  3914*/                  OPC_MoveParent,
/*  3915*/                  OPC_RecordChild2, // #3 = $dst
/*  3916*/                  OPC_MoveChild2,
/*  3917*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3920*/                  OPC_MoveParent,
/*  3921*/                  OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  3923*/                  OPC_EmitMergeInputChains1_0,
/*  3924*/                  OPC_EmitConvertToTarget, 2,
/*  3926*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  3929*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  3937*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQZC_MMR6), 0|OPFL_Chain,
                                2/*#Ops*/, 6, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQZC_MMR6 (SLTiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), (bb:{ *:[Other] }):$dst)
/*  3944*/                0, /*End of Scope*/
/*  3945*/              /*Scope*/ 27, /*->3973*/
/*  3946*/                OPC_CheckPredicate, 18, // Predicate_immZExt16
/*  3948*/                OPC_MoveParent,
/*  3949*/                OPC_CheckChild2CondCode, ISD::SETEQ,
/*  3951*/                OPC_CheckType, MVT::i32,
/*  3953*/                OPC_MoveParent,
/*  3954*/                OPC_RecordChild2, // #3 = $targ16
/*  3955*/                OPC_MoveChild2,
/*  3956*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3959*/                OPC_MoveParent,
/*  3960*/                OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  3962*/                OPC_EmitMergeInputChains1_0,
/*  3963*/                OPC_EmitConvertToTarget, 2,
/*  3965*/                OPC_MorphNodeTo0, TARGET_VAL(Mips::BteqzT8CmpiX16), 0|OPFL_Chain,
                              3/*#Ops*/, 1, 4, 3, 
                          // Src: (brcond (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$targ16) - Complexity = 10
                          // Dst: (BteqzT8CmpiX16 CPU16Regs:{ *:[i32] }:$rx, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm, (bb:{ *:[Other] }):$targ16)
/*  3973*/              /*Scope*/ 53, /*->4027*/
/*  3974*/                OPC_CheckPredicate, 16, // Predicate_immSExt16
/*  3976*/                OPC_MoveParent,
/*  3977*/                OPC_CheckType, MVT::i32,
/*  3979*/                OPC_Scope, 22, /*->4003*/ // 2 children in Scope
/*  3981*/                  OPC_CheckChild2CondCode, ISD::SETGE,
/*  3983*/                  OPC_MoveParent,
/*  3984*/                  OPC_RecordChild2, // #3 = $imm16
/*  3985*/                  OPC_MoveChild2,
/*  3986*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3989*/                  OPC_MoveParent,
/*  3990*/                  OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  3992*/                  OPC_EmitMergeInputChains1_0,
/*  3993*/                  OPC_EmitConvertToTarget, 2,
/*  3995*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BteqzT8SltiX16), 0|OPFL_Chain,
                                3/*#Ops*/, 1, 4, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$imm16) - Complexity = 10
                            // Dst: (BteqzT8SltiX16 CPU16Regs:{ *:[i32] }:$rx, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm, (bb:{ *:[Other] }):$imm16)
/*  4003*/                /*Scope*/ 22, /*->4026*/
/*  4004*/                  OPC_CheckChild2CondCode, ISD::SETLT,
/*  4006*/                  OPC_MoveParent,
/*  4007*/                  OPC_RecordChild2, // #3 = $imm16
/*  4008*/                  OPC_MoveChild2,
/*  4009*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4012*/                  OPC_MoveParent,
/*  4013*/                  OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4015*/                  OPC_EmitMergeInputChains1_0,
/*  4016*/                  OPC_EmitConvertToTarget, 2,
/*  4018*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BtnezT8SltiX16), 0|OPFL_Chain,
                                3/*#Ops*/, 1, 4, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm, SETLT:{ *:[Other] }), (bb:{ *:[Other] }):$imm16) - Complexity = 10
                            // Dst: (BtnezT8SltiX16 CPU16Regs:{ *:[i32] }:$rx, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm, (bb:{ *:[Other] }):$imm16)
/*  4026*/                0, /*End of Scope*/
/*  4027*/              /*Scope*/ 27, /*->4055*/
/*  4028*/                OPC_CheckPredicate, 18, // Predicate_immZExt16
/*  4030*/                OPC_MoveParent,
/*  4031*/                OPC_CheckChild2CondCode, ISD::SETNE,
/*  4033*/                OPC_CheckType, MVT::i32,
/*  4035*/                OPC_MoveParent,
/*  4036*/                OPC_RecordChild2, // #3 = $targ16
/*  4037*/                OPC_MoveChild2,
/*  4038*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4041*/                OPC_MoveParent,
/*  4042*/                OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4044*/                OPC_EmitMergeInputChains1_0,
/*  4045*/                OPC_EmitConvertToTarget, 2,
/*  4047*/                OPC_MorphNodeTo0, TARGET_VAL(Mips::BtnezT8CmpiX16), 0|OPFL_Chain,
                              3/*#Ops*/, 1, 4, 3, 
                          // Src: (brcond (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$targ16) - Complexity = 10
                          // Dst: (BtnezT8CmpiX16 CPU16Regs:{ *:[i32] }:$rx, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm, (bb:{ *:[Other] }):$targ16)
/*  4055*/              0, /*End of Scope*/
/*  4056*/            /*Scope*/ 22, /*->4079*/
/*  4057*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  4059*/              OPC_CheckType, MVT::i32,
/*  4061*/              OPC_MoveParent,
/*  4062*/              OPC_RecordChild2, // #3 = $offset
/*  4063*/              OPC_MoveChild2,
/*  4064*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4067*/              OPC_MoveParent,
/*  4068*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  4070*/              OPC_EmitMergeInputChains1_0,
/*  4071*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 2, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 6
                        // Dst: (BEQ GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, (bb:{ *:[Other] }):$offset)
/*  4079*/            /*Scope*/ 22, /*->4102*/
/*  4080*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  4082*/              OPC_CheckType, MVT::i32,
/*  4084*/              OPC_MoveParent,
/*  4085*/              OPC_RecordChild2, // #3 = $offset
/*  4086*/              OPC_MoveChild2,
/*  4087*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4090*/              OPC_MoveParent,
/*  4091*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  4093*/              OPC_EmitMergeInputChains1_0,
/*  4094*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BNE), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 2, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 6
                        // Dst: (BNE GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, (bb:{ *:[Other] }):$offset)
/*  4102*/            /*Scope*/ 22, /*->4125*/
/*  4103*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  4105*/              OPC_CheckType, MVT::i32,
/*  4107*/              OPC_MoveParent,
/*  4108*/              OPC_RecordChild2, // #3 = $offset
/*  4109*/              OPC_MoveChild2,
/*  4110*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4113*/              OPC_MoveParent,
/*  4114*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  4116*/              OPC_EmitMergeInputChains1_0,
/*  4117*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ_MM), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 2, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 6
                        // Dst: (BEQ_MM GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, (bb:{ *:[Other] }):$offset)
/*  4125*/            /*Scope*/ 22, /*->4148*/
/*  4126*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  4128*/              OPC_CheckType, MVT::i32,
/*  4130*/              OPC_MoveParent,
/*  4131*/              OPC_RecordChild2, // #3 = $offset
/*  4132*/              OPC_MoveChild2,
/*  4133*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4136*/              OPC_MoveParent,
/*  4137*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  4139*/              OPC_EmitMergeInputChains1_0,
/*  4140*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BNE_MM), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 2, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 6
                        // Dst: (BNE_MM GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, (bb:{ *:[Other] }):$offset)
/*  4148*/            /*Scope*/ 33, /*->4182*/
/*  4149*/              OPC_CheckChild2CondCode, ISD::SETGE,
/*  4151*/              OPC_CheckType, MVT::i32,
/*  4153*/              OPC_MoveParent,
/*  4154*/              OPC_RecordChild2, // #3 = $dst
/*  4155*/              OPC_MoveChild2,
/*  4156*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4159*/              OPC_MoveParent,
/*  4160*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  4162*/              OPC_EmitMergeInputChains1_0,
/*  4163*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                            MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  4171*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4174*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                            3/*#Ops*/, 4, 5, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQ (SLT:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  4182*/            /*Scope*/ 33, /*->4216*/
/*  4183*/              OPC_CheckChild2CondCode, ISD::SETUGE,
/*  4185*/              OPC_CheckType, MVT::i32,
/*  4187*/              OPC_MoveParent,
/*  4188*/              OPC_RecordChild2, // #3 = $dst
/*  4189*/              OPC_MoveChild2,
/*  4190*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4193*/              OPC_MoveParent,
/*  4194*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  4196*/              OPC_EmitMergeInputChains1_0,
/*  4197*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                            MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  4205*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4208*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                            3/*#Ops*/, 4, 5, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQ (SLTu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  4216*/            /*Scope*/ 33, /*->4250*/
/*  4217*/              OPC_CheckChild2CondCode, ISD::SETLE,
/*  4219*/              OPC_CheckType, MVT::i32,
/*  4221*/              OPC_MoveParent,
/*  4222*/              OPC_RecordChild2, // #3 = $dst
/*  4223*/              OPC_MoveChild2,
/*  4224*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4227*/              OPC_MoveParent,
/*  4228*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  4230*/              OPC_EmitMergeInputChains1_0,
/*  4231*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                            MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  4239*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4242*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                            3/*#Ops*/, 4, 5, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETLE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQ (SLT:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  4250*/            /*Scope*/ 33, /*->4284*/
/*  4251*/              OPC_CheckChild2CondCode, ISD::SETULE,
/*  4253*/              OPC_CheckType, MVT::i32,
/*  4255*/              OPC_MoveParent,
/*  4256*/              OPC_RecordChild2, // #3 = $dst
/*  4257*/              OPC_MoveChild2,
/*  4258*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4261*/              OPC_MoveParent,
/*  4262*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  4264*/              OPC_EmitMergeInputChains1_0,
/*  4265*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                            MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  4273*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4276*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                            3/*#Ops*/, 4, 5, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETULE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQ (SLTu:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  4284*/            /*Scope*/ 33, /*->4318*/
/*  4285*/              OPC_CheckChild2CondCode, ISD::SETGE,
/*  4287*/              OPC_CheckType, MVT::i32,
/*  4289*/              OPC_MoveParent,
/*  4290*/              OPC_RecordChild2, // #3 = $dst
/*  4291*/              OPC_MoveChild2,
/*  4292*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4295*/              OPC_MoveParent,
/*  4296*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  4298*/              OPC_EmitMergeInputChains1_0,
/*  4299*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  4307*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4310*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ_MM), 0|OPFL_Chain,
                            3/*#Ops*/, 4, 5, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQ_MM (SLT_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  4318*/            /*Scope*/ 33, /*->4352*/
/*  4319*/              OPC_CheckChild2CondCode, ISD::SETUGE,
/*  4321*/              OPC_CheckType, MVT::i32,
/*  4323*/              OPC_MoveParent,
/*  4324*/              OPC_RecordChild2, // #3 = $dst
/*  4325*/              OPC_MoveChild2,
/*  4326*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4329*/              OPC_MoveParent,
/*  4330*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  4332*/              OPC_EmitMergeInputChains1_0,
/*  4333*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  4341*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4344*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ_MM), 0|OPFL_Chain,
                            3/*#Ops*/, 4, 5, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQ_MM (SLTu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  4352*/            /*Scope*/ 33, /*->4386*/
/*  4353*/              OPC_CheckChild2CondCode, ISD::SETLE,
/*  4355*/              OPC_CheckType, MVT::i32,
/*  4357*/              OPC_MoveParent,
/*  4358*/              OPC_RecordChild2, // #3 = $dst
/*  4359*/              OPC_MoveChild2,
/*  4360*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4363*/              OPC_MoveParent,
/*  4364*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  4366*/              OPC_EmitMergeInputChains1_0,
/*  4367*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                            MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  4375*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4378*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ_MM), 0|OPFL_Chain,
                            3/*#Ops*/, 4, 5, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETLE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQ_MM (SLT_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  4386*/            /*Scope*/ 33, /*->4420*/
/*  4387*/              OPC_CheckChild2CondCode, ISD::SETULE,
/*  4389*/              OPC_CheckType, MVT::i32,
/*  4391*/              OPC_MoveParent,
/*  4392*/              OPC_RecordChild2, // #3 = $dst
/*  4393*/              OPC_MoveChild2,
/*  4394*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4397*/              OPC_MoveParent,
/*  4398*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  4400*/              OPC_EmitMergeInputChains1_0,
/*  4401*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  4409*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4412*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ_MM), 0|OPFL_Chain,
                            3/*#Ops*/, 4, 5, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETULE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQ_MM (SLTu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  4420*/            /*Scope*/ 29, /*->4450*/
/*  4421*/              OPC_CheckChild2CondCode, ISD::SETGE,
/*  4423*/              OPC_CheckType, MVT::i32,
/*  4425*/              OPC_MoveParent,
/*  4426*/              OPC_RecordChild2, // #3 = $dst
/*  4427*/              OPC_MoveChild2,
/*  4428*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4431*/              OPC_MoveParent,
/*  4432*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  4434*/              OPC_EmitMergeInputChains1_0,
/*  4435*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  4443*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQZC_MMR6), 0|OPFL_Chain,
                            2/*#Ops*/, 4, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQZC_MMR6 (SLT_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), (bb:{ *:[Other] }):$dst)
/*  4450*/            /*Scope*/ 29, /*->4480*/
/*  4451*/              OPC_CheckChild2CondCode, ISD::SETUGE,
/*  4453*/              OPC_CheckType, MVT::i32,
/*  4455*/              OPC_MoveParent,
/*  4456*/              OPC_RecordChild2, // #3 = $dst
/*  4457*/              OPC_MoveChild2,
/*  4458*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4461*/              OPC_MoveParent,
/*  4462*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  4464*/              OPC_EmitMergeInputChains1_0,
/*  4465*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  4473*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQZC_MMR6), 0|OPFL_Chain,
                            2/*#Ops*/, 4, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQZC_MMR6 (SLTu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), (bb:{ *:[Other] }):$dst)
/*  4480*/            /*Scope*/ 29, /*->4510*/
/*  4481*/              OPC_CheckChild2CondCode, ISD::SETLE,
/*  4483*/              OPC_CheckType, MVT::i32,
/*  4485*/              OPC_MoveParent,
/*  4486*/              OPC_RecordChild2, // #3 = $dst
/*  4487*/              OPC_MoveChild2,
/*  4488*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4491*/              OPC_MoveParent,
/*  4492*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  4494*/              OPC_EmitMergeInputChains1_0,
/*  4495*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                            MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  4503*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQZC_MMR6), 0|OPFL_Chain,
                            2/*#Ops*/, 4, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETLE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQZC_MMR6 (SLT_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), (bb:{ *:[Other] }):$dst)
/*  4510*/            /*Scope*/ 29, /*->4540*/
/*  4511*/              OPC_CheckChild2CondCode, ISD::SETULE,
/*  4513*/              OPC_CheckType, MVT::i32,
/*  4515*/              OPC_MoveParent,
/*  4516*/              OPC_RecordChild2, // #3 = $dst
/*  4517*/              OPC_MoveChild2,
/*  4518*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4521*/              OPC_MoveParent,
/*  4522*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  4524*/              OPC_EmitMergeInputChains1_0,
/*  4525*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  4533*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQZC_MMR6), 0|OPFL_Chain,
                            2/*#Ops*/, 4, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETULE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQZC_MMR6 (SLTu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), (bb:{ *:[Other] }):$dst)
/*  4540*/            /*Scope*/ 22, /*->4563*/
/*  4541*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  4543*/              OPC_CheckType, MVT::i32,
/*  4545*/              OPC_MoveParent,
/*  4546*/              OPC_RecordChild2, // #3 = $imm16
/*  4547*/              OPC_MoveChild2,
/*  4548*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4551*/              OPC_MoveParent,
/*  4552*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4554*/              OPC_EmitMergeInputChains1_0,
/*  4555*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BteqzT8CmpX16), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 2, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$imm16) - Complexity = 6
                        // Dst: (BteqzT8CmpX16 CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry, (bb:{ *:[Other] }):$imm16)
/*  4563*/            /*Scope*/ 22, /*->4586*/
/*  4564*/              OPC_CheckChild2CondCode, ISD::SETGT,
/*  4566*/              OPC_CheckType, MVT::i32,
/*  4568*/              OPC_MoveParent,
/*  4569*/              OPC_RecordChild2, // #3 = $imm16
/*  4570*/              OPC_MoveChild2,
/*  4571*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4574*/              OPC_MoveParent,
/*  4575*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4577*/              OPC_EmitMergeInputChains1_0,
/*  4578*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BtnezT8SltX16), 0|OPFL_Chain,
                            3/*#Ops*/, 2, 1, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry, SETGT:{ *:[Other] }), (bb:{ *:[Other] }):$imm16) - Complexity = 6
                        // Dst: (BtnezT8SltX16 CPU16Regs:{ *:[i32] }:$ry, CPU16Regs:{ *:[i32] }:$rx, (bb:{ *:[Other] }):$imm16)
/*  4586*/            /*Scope*/ 22, /*->4609*/
/*  4587*/              OPC_CheckChild2CondCode, ISD::SETGE,
/*  4589*/              OPC_CheckType, MVT::i32,
/*  4591*/              OPC_MoveParent,
/*  4592*/              OPC_RecordChild2, // #3 = $imm16
/*  4593*/              OPC_MoveChild2,
/*  4594*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4597*/              OPC_MoveParent,
/*  4598*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4600*/              OPC_EmitMergeInputChains1_0,
/*  4601*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BteqzT8SltX16), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 2, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$imm16) - Complexity = 6
                        // Dst: (BteqzT8SltX16 CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry, (bb:{ *:[Other] }):$imm16)
/*  4609*/            /*Scope*/ 22, /*->4632*/
/*  4610*/              OPC_CheckChild2CondCode, ISD::SETLT,
/*  4612*/              OPC_CheckType, MVT::i32,
/*  4614*/              OPC_MoveParent,
/*  4615*/              OPC_RecordChild2, // #3 = $imm16
/*  4616*/              OPC_MoveChild2,
/*  4617*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4620*/              OPC_MoveParent,
/*  4621*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4623*/              OPC_EmitMergeInputChains1_0,
/*  4624*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BtnezT8SltX16), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 2, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry, SETLT:{ *:[Other] }), (bb:{ *:[Other] }):$imm16) - Complexity = 6
                        // Dst: (BtnezT8SltX16 CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry, (bb:{ *:[Other] }):$imm16)
/*  4632*/            /*Scope*/ 22, /*->4655*/
/*  4633*/              OPC_CheckChild2CondCode, ISD::SETLE,
/*  4635*/              OPC_CheckType, MVT::i32,
/*  4637*/              OPC_MoveParent,
/*  4638*/              OPC_RecordChild2, // #3 = $imm16
/*  4639*/              OPC_MoveChild2,
/*  4640*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4643*/              OPC_MoveParent,
/*  4644*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4646*/              OPC_EmitMergeInputChains1_0,
/*  4647*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BteqzT8SltX16), 0|OPFL_Chain,
                            3/*#Ops*/, 2, 1, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry, SETLE:{ *:[Other] }), (bb:{ *:[Other] }):$imm16) - Complexity = 6
                        // Dst: (BteqzT8SltX16 CPU16Regs:{ *:[i32] }:$ry, CPU16Regs:{ *:[i32] }:$rx, (bb:{ *:[Other] }):$imm16)
/*  4655*/            /*Scope*/ 22, /*->4678*/
/*  4656*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  4658*/              OPC_CheckType, MVT::i32,
/*  4660*/              OPC_MoveParent,
/*  4661*/              OPC_RecordChild2, // #3 = $imm16
/*  4662*/              OPC_MoveChild2,
/*  4663*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4666*/              OPC_MoveParent,
/*  4667*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4669*/              OPC_EmitMergeInputChains1_0,
/*  4670*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BtnezT8CmpX16), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 2, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$imm16) - Complexity = 6
                        // Dst: (BtnezT8CmpX16 CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry, (bb:{ *:[Other] }):$imm16)
/*  4678*/            0, /*End of Scope*/
/*  4679*/          0, /*End of Scope*/
/*  4680*/        /*Scope*/ 40|128,4/*552*/, /*->5234*/
/*  4682*/          OPC_CheckChild0Type, MVT::i64,
/*  4684*/          OPC_Scope, 8|128,1/*136*/, /*->4823*/ // 4 children in Scope
/*  4687*/            OPC_CheckChild1Integer, 0, 
/*  4689*/            OPC_CheckType, MVT::i32,
/*  4691*/            OPC_Scope, 19, /*->4712*/ // 6 children in Scope
/*  4693*/              OPC_CheckChild2CondCode, ISD::SETGE,
/*  4695*/              OPC_MoveParent,
/*  4696*/              OPC_RecordChild2, // #2 = $offset
/*  4697*/              OPC_MoveChild2,
/*  4698*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4701*/              OPC_MoveParent,
/*  4702*/              OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  4704*/              OPC_EmitMergeInputChains1_0,
/*  4705*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BGEZ64), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, 0:{ *:[i64] }, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 11
                        // Dst: (BGEZ64 GPR64Opnd:{ *:[i64] }:$rs, (bb:{ *:[Other] }):$offset)
/*  4712*/            /*Scope*/ 19, /*->4732*/
/*  4713*/              OPC_CheckChild2CondCode, ISD::SETGT,
/*  4715*/              OPC_MoveParent,
/*  4716*/              OPC_RecordChild2, // #2 = $offset
/*  4717*/              OPC_MoveChild2,
/*  4718*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4721*/              OPC_MoveParent,
/*  4722*/              OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  4724*/              OPC_EmitMergeInputChains1_0,
/*  4725*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BGTZ64), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, 0:{ *:[i64] }, SETGT:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 11
                        // Dst: (BGTZ64 GPR64Opnd:{ *:[i64] }:$rs, (bb:{ *:[Other] }):$offset)
/*  4732*/            /*Scope*/ 19, /*->4752*/
/*  4733*/              OPC_CheckChild2CondCode, ISD::SETLE,
/*  4735*/              OPC_MoveParent,
/*  4736*/              OPC_RecordChild2, // #2 = $offset
/*  4737*/              OPC_MoveChild2,
/*  4738*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4741*/              OPC_MoveParent,
/*  4742*/              OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  4744*/              OPC_EmitMergeInputChains1_0,
/*  4745*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BLEZ64), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, 0:{ *:[i64] }, SETLE:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 11
                        // Dst: (BLEZ64 GPR64Opnd:{ *:[i64] }:$rs, (bb:{ *:[Other] }):$offset)
/*  4752*/            /*Scope*/ 19, /*->4772*/
/*  4753*/              OPC_CheckChild2CondCode, ISD::SETLT,
/*  4755*/              OPC_MoveParent,
/*  4756*/              OPC_RecordChild2, // #2 = $offset
/*  4757*/              OPC_MoveChild2,
/*  4758*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4761*/              OPC_MoveParent,
/*  4762*/              OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  4764*/              OPC_EmitMergeInputChains1_0,
/*  4765*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BLTZ64), 0|OPFL_Chain,
                            2/*#Ops*/, 1, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, 0:{ *:[i64] }, SETLT:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 11
                        // Dst: (BLTZ64 GPR64Opnd:{ *:[i64] }:$rs, (bb:{ *:[Other] }):$offset)
/*  4772*/            /*Scope*/ 24, /*->4797*/
/*  4773*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  4775*/              OPC_MoveParent,
/*  4776*/              OPC_RecordChild2, // #2 = $dst
/*  4777*/              OPC_MoveChild2,
/*  4778*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4781*/              OPC_MoveParent,
/*  4782*/              OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  4784*/              OPC_EmitMergeInputChains1_0,
/*  4785*/              OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/*  4789*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BNE64), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 3, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, 0:{ *:[i64] }, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 11
                        // Dst: (BNE64 GPR64:{ *:[i64] }:$lhs, ZERO_64:{ *:[i64] }, (bb:{ *:[Other] }):$dst)
/*  4797*/            /*Scope*/ 24, /*->4822*/
/*  4798*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  4800*/              OPC_MoveParent,
/*  4801*/              OPC_RecordChild2, // #2 = $dst
/*  4802*/              OPC_MoveChild2,
/*  4803*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4806*/              OPC_MoveParent,
/*  4807*/              OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  4809*/              OPC_EmitMergeInputChains1_0,
/*  4810*/              OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/*  4814*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ64), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 3, 2, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, 0:{ *:[i64] }, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 11
                        // Dst: (BEQ64 GPR64:{ *:[i64] }:$lhs, ZERO_64:{ *:[i64] }, (bb:{ *:[Other] }):$dst)
/*  4822*/            0, /*End of Scope*/
/*  4823*/          /*Scope*/ 23, /*->4847*/
/*  4824*/            OPC_CheckChild1Integer, 1, 
/*  4826*/            OPC_CheckChild2CondCode, ISD::SETLT,
/*  4828*/            OPC_CheckType, MVT::i32,
/*  4830*/            OPC_MoveParent,
/*  4831*/            OPC_RecordChild2, // #2 = $dst
/*  4832*/            OPC_MoveChild2,
/*  4833*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4836*/            OPC_MoveParent,
/*  4837*/            OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  4839*/            OPC_EmitMergeInputChains1_0,
/*  4840*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::BLEZ64), 0|OPFL_Chain,
                          2/*#Ops*/, 1, 2, 
                      // Src: (brcond (setcc:{ *:[i32] } i64:{ *:[i64] }:$lhs, 1:{ *:[i64] }, SETLT:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 11
                      // Dst: (BLEZ64 i64:{ *:[i64] }:$lhs, (bb:{ *:[Other] }):$dst)
/*  4847*/          /*Scope*/ 32, /*->4880*/
/*  4848*/            OPC_CheckChild1Integer, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/*  4859*/            OPC_CheckChild2CondCode, ISD::SETGT,
/*  4861*/            OPC_CheckType, MVT::i32,
/*  4863*/            OPC_MoveParent,
/*  4864*/            OPC_RecordChild2, // #2 = $dst
/*  4865*/            OPC_MoveChild2,
/*  4866*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4869*/            OPC_MoveParent,
/*  4870*/            OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  4872*/            OPC_EmitMergeInputChains1_0,
/*  4873*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::BGEZ64), 0|OPFL_Chain,
                          2/*#Ops*/, 1, 2, 
                      // Src: (brcond (setcc:{ *:[i32] } i64:{ *:[i64] }:$lhs, -1:{ *:[i64] }, SETGT:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 11
                      // Dst: (BGEZ64 i64:{ *:[i64] }:$lhs, (bb:{ *:[Other] }):$dst)
/*  4880*/          /*Scope*/ 95|128,2/*351*/, /*->5233*/
/*  4882*/            OPC_RecordChild1, // #2 = $rhs
/*  4883*/            OPC_Scope, 36|128,1/*164*/, /*->5050*/ // 7 children in Scope
/*  4886*/              OPC_MoveChild1,
/*  4887*/              OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  4890*/              OPC_Scope, 75, /*->4967*/ // 2 children in Scope
/*  4892*/                OPC_CheckPredicate, 16, // Predicate_immSExt16
/*  4894*/                OPC_MoveParent,
/*  4895*/                OPC_CheckType, MVT::i32,
/*  4897*/                OPC_Scope, 33, /*->4932*/ // 2 children in Scope
/*  4899*/                  OPC_CheckChild2CondCode, ISD::SETGE,
/*  4901*/                  OPC_MoveParent,
/*  4902*/                  OPC_RecordChild2, // #3 = $dst
/*  4903*/                  OPC_MoveChild2,
/*  4904*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4907*/                  OPC_MoveParent,
/*  4908*/                  OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  4910*/                  OPC_EmitMergeInputChains1_0,
/*  4911*/                  OPC_EmitConvertToTarget, 2,
/*  4913*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  4921*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4924*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                                3/*#Ops*/, 5, 6, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQ (SLTi64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  4932*/                /*Scope*/ 33, /*->4966*/
/*  4933*/                  OPC_CheckChild2CondCode, ISD::SETUGE,
/*  4935*/                  OPC_MoveParent,
/*  4936*/                  OPC_RecordChild2, // #3 = $dst
/*  4937*/                  OPC_MoveChild2,
/*  4938*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4941*/                  OPC_MoveParent,
/*  4942*/                  OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  4944*/                  OPC_EmitMergeInputChains1_0,
/*  4945*/                  OPC_EmitConvertToTarget, 2,
/*  4947*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  4955*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4958*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                                3/*#Ops*/, 5, 6, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs, SETUGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQ (SLTiu64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  4966*/                0, /*End of Scope*/
/*  4967*/              /*Scope*/ 81, /*->5049*/
/*  4968*/                OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/*  4970*/                OPC_MoveParent,
/*  4971*/                OPC_CheckType, MVT::i32,
/*  4973*/                OPC_Scope, 36, /*->5011*/ // 2 children in Scope
/*  4975*/                  OPC_CheckChild2CondCode, ISD::SETGT,
/*  4977*/                  OPC_MoveParent,
/*  4978*/                  OPC_RecordChild2, // #3 = $dst
/*  4979*/                  OPC_MoveChild2,
/*  4980*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4983*/                  OPC_MoveParent,
/*  4984*/                  OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  4986*/                  OPC_EmitMergeInputChains1_0,
/*  4987*/                  OPC_EmitConvertToTarget, 2,
/*  4989*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  4992*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  5000*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5003*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                                3/*#Ops*/, 6, 7, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQ (SLTi64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (Plus1:{ *:[i64] } (imm:{ *:[i64] }):$rhs)), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  5011*/                /*Scope*/ 36, /*->5048*/
/*  5012*/                  OPC_CheckChild2CondCode, ISD::SETUGT,
/*  5014*/                  OPC_MoveParent,
/*  5015*/                  OPC_RecordChild2, // #3 = $dst
/*  5016*/                  OPC_MoveChild2,
/*  5017*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5020*/                  OPC_MoveParent,
/*  5021*/                  OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5023*/                  OPC_EmitMergeInputChains1_0,
/*  5024*/                  OPC_EmitConvertToTarget, 2,
/*  5026*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  5029*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  5037*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5040*/                  OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                                3/*#Ops*/, 6, 7, 3, 
                            // Src: (brcond (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 10
                            // Dst: (BEQ (SLTiu64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (Plus1:{ *:[i64] } (imm:{ *:[i64] }):$rhs)), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  5048*/                0, /*End of Scope*/
/*  5049*/              0, /*End of Scope*/
/*  5050*/            /*Scope*/ 22, /*->5073*/
/*  5051*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  5053*/              OPC_CheckType, MVT::i32,
/*  5055*/              OPC_MoveParent,
/*  5056*/              OPC_RecordChild2, // #3 = $offset
/*  5057*/              OPC_MoveChild2,
/*  5058*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5061*/              OPC_MoveParent,
/*  5062*/              OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  5064*/              OPC_EmitMergeInputChains1_0,
/*  5065*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ64), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 2, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 6
                        // Dst: (BEQ64 GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt, (bb:{ *:[Other] }):$offset)
/*  5073*/            /*Scope*/ 22, /*->5096*/
/*  5074*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  5076*/              OPC_CheckType, MVT::i32,
/*  5078*/              OPC_MoveParent,
/*  5079*/              OPC_RecordChild2, // #3 = $offset
/*  5080*/              OPC_MoveChild2,
/*  5081*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5084*/              OPC_MoveParent,
/*  5085*/              OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  5087*/              OPC_EmitMergeInputChains1_0,
/*  5088*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BNE64), 0|OPFL_Chain,
                            3/*#Ops*/, 1, 2, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$offset) - Complexity = 6
                        // Dst: (BNE64 GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt, (bb:{ *:[Other] }):$offset)
/*  5096*/            /*Scope*/ 33, /*->5130*/
/*  5097*/              OPC_CheckChild2CondCode, ISD::SETGE,
/*  5099*/              OPC_CheckType, MVT::i32,
/*  5101*/              OPC_MoveParent,
/*  5102*/              OPC_RecordChild2, // #3 = $dst
/*  5103*/              OPC_MoveChild2,
/*  5104*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5107*/              OPC_MoveParent,
/*  5108*/              OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5110*/              OPC_EmitMergeInputChains1_0,
/*  5111*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                            MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  5119*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5122*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                            3/*#Ops*/, 4, 5, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQ (SLT64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  5130*/            /*Scope*/ 33, /*->5164*/
/*  5131*/              OPC_CheckChild2CondCode, ISD::SETUGE,
/*  5133*/              OPC_CheckType, MVT::i32,
/*  5135*/              OPC_MoveParent,
/*  5136*/              OPC_RecordChild2, // #3 = $dst
/*  5137*/              OPC_MoveChild2,
/*  5138*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5141*/              OPC_MoveParent,
/*  5142*/              OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5144*/              OPC_EmitMergeInputChains1_0,
/*  5145*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                            MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  5153*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5156*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                            3/*#Ops*/, 4, 5, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETUGE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQ (SLTu64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  5164*/            /*Scope*/ 33, /*->5198*/
/*  5165*/              OPC_CheckChild2CondCode, ISD::SETLE,
/*  5167*/              OPC_CheckType, MVT::i32,
/*  5169*/              OPC_MoveParent,
/*  5170*/              OPC_RecordChild2, // #3 = $dst
/*  5171*/              OPC_MoveChild2,
/*  5172*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5175*/              OPC_MoveParent,
/*  5176*/              OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5178*/              OPC_EmitMergeInputChains1_0,
/*  5179*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                            MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  5187*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5190*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                            3/*#Ops*/, 4, 5, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETLE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQ (SLT64:{ *:[i32] } GPR64:{ *:[i64] }:$rhs, GPR64:{ *:[i64] }:$lhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  5198*/            /*Scope*/ 33, /*->5232*/
/*  5199*/              OPC_CheckChild2CondCode, ISD::SETULE,
/*  5201*/              OPC_CheckType, MVT::i32,
/*  5203*/              OPC_MoveParent,
/*  5204*/              OPC_RecordChild2, // #3 = $dst
/*  5205*/              OPC_MoveChild2,
/*  5206*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5209*/              OPC_MoveParent,
/*  5210*/              OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5212*/              OPC_EmitMergeInputChains1_0,
/*  5213*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                            MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  5221*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5224*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::BEQ), 0|OPFL_Chain,
                            3/*#Ops*/, 4, 5, 3, 
                        // Src: (brcond (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETULE:{ *:[Other] }), (bb:{ *:[Other] }):$dst) - Complexity = 6
                        // Dst: (BEQ (SLTu64:{ *:[i32] } GPR64:{ *:[i64] }:$rhs, GPR64:{ *:[i64] }:$lhs), ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  5232*/            0, /*End of Scope*/
/*  5233*/          0, /*End of Scope*/
/*  5234*/        0, /*End of Scope*/
/*  5235*/      0, /*End of Scope*/
/*  5236*/    /*Scope*/ 90, /*->5327*/
/*  5237*/      OPC_RecordChild1, // #1 = $cond
/*  5238*/      OPC_Scope, 62, /*->5302*/ // 2 children in Scope
/*  5240*/        OPC_CheckChild1Type, MVT::i32,
/*  5242*/        OPC_RecordChild2, // #2 = $dst
/*  5243*/        OPC_MoveChild2,
/*  5244*/        OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5247*/        OPC_MoveParent,
/*  5248*/        OPC_Scope, 14, /*->5264*/ // 4 children in Scope
/*  5250*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  5252*/          OPC_EmitMergeInputChains1_0,
/*  5253*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5256*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::BNE), 0|OPFL_Chain,
                        3/*#Ops*/, 1, 3, 2, 
                    // Src: (brcond GPR32:{ *:[i32] }:$cond, (bb:{ *:[Other] }):$dst) - Complexity = 3
                    // Dst: (BNE GPR32:{ *:[i32] }:$cond, ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  5264*/        /*Scope*/ 10, /*->5275*/
/*  5265*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  5267*/          OPC_EmitMergeInputChains1_0,
/*  5268*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::BnezRxImm16), 0|OPFL_Chain,
                        2/*#Ops*/, 1, 2, 
                    // Src: (brcond CPU16Regs:{ *:[i32] }:$rx, (bb:{ *:[Other] }):$targ16) - Complexity = 3
                    // Dst: (BnezRxImm16 CPU16Regs:{ *:[i32] }:$rx, (bb:{ *:[Other] }):$targ16)
/*  5275*/        /*Scope*/ 14, /*->5290*/
/*  5276*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  5278*/          OPC_EmitMergeInputChains1_0,
/*  5279*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5282*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::BNE_MM), 0|OPFL_Chain,
                        3/*#Ops*/, 1, 3, 2, 
                    // Src: (brcond GPR32:{ *:[i32] }:$cond, (bb:{ *:[Other] }):$dst) - Complexity = 3
                    // Dst: (BNE_MM GPR32:{ *:[i32] }:$cond, ZERO:{ *:[i32] }, (bb:{ *:[Other] }):$dst)
/*  5290*/        /*Scope*/ 10, /*->5301*/
/*  5291*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  5293*/          OPC_EmitMergeInputChains1_0,
/*  5294*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::BNEZC_MMR6), 0|OPFL_Chain,
                        2/*#Ops*/, 1, 2, 
                    // Src: (brcond GPR32:{ *:[i32] }:$cond, (bb:{ *:[Other] }):$dst) - Complexity = 3
                    // Dst: (BNEZC_MMR6 GPR32:{ *:[i32] }:$cond, (bb:{ *:[Other] }):$dst)
/*  5301*/        0, /*End of Scope*/
/*  5302*/      /*Scope*/ 23, /*->5326*/
/*  5303*/        OPC_CheckChild1Type, MVT::i64,
/*  5305*/        OPC_RecordChild2, // #2 = $dst
/*  5306*/        OPC_MoveChild2,
/*  5307*/        OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5310*/        OPC_MoveParent,
/*  5311*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5313*/        OPC_EmitMergeInputChains1_0,
/*  5314*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/*  5318*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::BNE64), 0|OPFL_Chain,
                      3/*#Ops*/, 1, 3, 2, 
                  // Src: (brcond GPR64:{ *:[i64] }:$cond, (bb:{ *:[Other] }):$dst) - Complexity = 3
                  // Dst: (BNE64 GPR64:{ *:[i64] }:$cond, ZERO_64:{ *:[i64] }, (bb:{ *:[Other] }):$dst)
/*  5326*/      0, /*End of Scope*/
/*  5327*/    0, /*End of Scope*/
/*  5328*/  /*SwitchOpcode*/ 24|128,58/*7448*/, TARGET_VAL(ISD::SELECT),// ->12780
/*  5332*/    OPC_Scope, 3|128,25/*3203*/, /*->8538*/ // 6 children in Scope
/*  5335*/      OPC_MoveChild0,
/*  5336*/      OPC_CheckOpcode, TARGET_VAL(ISD::SETCC),
/*  5339*/      OPC_RecordChild0, // #0 = $cond
/*  5340*/      OPC_Scope, 85|128,17/*2261*/, /*->7604*/ // 2 children in Scope
/*  5343*/        OPC_CheckChild0Type, MVT::i32,
/*  5345*/        OPC_Scope, 71|128,2/*327*/, /*->5675*/ // 7 children in Scope
/*  5348*/          OPC_MoveChild1,
/*  5349*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5352*/          OPC_CheckPredicate, 19, // Predicate_immz
/*  5354*/          OPC_MoveParent,
/*  5355*/          OPC_CheckType, MVT::i32,
/*  5357*/          OPC_Scope, 23, /*->5382*/ // 11 children in Scope
/*  5359*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  5361*/            OPC_MoveParent,
/*  5362*/            OPC_RecordChild1, // #1 = $t
/*  5363*/            OPC_MoveChild2,
/*  5364*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5367*/            OPC_CheckPredicate, 19, // Predicate_immz
/*  5369*/            OPC_MoveParent,
/*  5370*/            OPC_CheckType, MVT::i32,
/*  5372*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  5374*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SELEQZ), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETEQ:{ *:[Other] }), i32:{ *:[i32] }:$t, (imm:{ *:[i32] })<<P:Predicate_immz>>) - Complexity = 14
                      // Dst: (SELEQZ:{ *:[i32] } i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$cond)
/*  5382*/          /*Scope*/ 23, /*->5406*/
/*  5383*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  5385*/            OPC_MoveParent,
/*  5386*/            OPC_RecordChild1, // #1 = $t
/*  5387*/            OPC_MoveChild2,
/*  5388*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5391*/            OPC_CheckPredicate, 19, // Predicate_immz
/*  5393*/            OPC_MoveParent,
/*  5394*/            OPC_CheckType, MVT::i32,
/*  5396*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  5398*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SELNEZ), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETNE:{ *:[Other] }), i32:{ *:[i32] }:$t, (imm:{ *:[i32] })<<P:Predicate_immz>>) - Complexity = 14
                      // Dst: (SELNEZ:{ *:[i32] } i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$cond)
/*  5406*/          /*Scope*/ 23, /*->5430*/
/*  5407*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  5409*/            OPC_MoveParent,
/*  5410*/            OPC_MoveChild1,
/*  5411*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5414*/            OPC_CheckPredicate, 19, // Predicate_immz
/*  5416*/            OPC_MoveParent,
/*  5417*/            OPC_RecordChild2, // #1 = $f
/*  5418*/            OPC_CheckType, MVT::i32,
/*  5420*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  5422*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SELNEZ), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETEQ:{ *:[Other] }), (imm:{ *:[i32] })<<P:Predicate_immz>>, i32:{ *:[i32] }:$f) - Complexity = 14
                      // Dst: (SELNEZ:{ *:[i32] } i32:{ *:[i32] }:$f, i32:{ *:[i32] }:$cond)
/*  5430*/          /*Scope*/ 23, /*->5454*/
/*  5431*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  5433*/            OPC_MoveParent,
/*  5434*/            OPC_MoveChild1,
/*  5435*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5438*/            OPC_CheckPredicate, 19, // Predicate_immz
/*  5440*/            OPC_MoveParent,
/*  5441*/            OPC_RecordChild2, // #1 = $f
/*  5442*/            OPC_CheckType, MVT::i32,
/*  5444*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  5446*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SELEQZ), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETNE:{ *:[Other] }), (imm:{ *:[i32] })<<P:Predicate_immz>>, i32:{ *:[i32] }:$f) - Complexity = 14
                      // Dst: (SELEQZ:{ *:[i32] } i32:{ *:[i32] }:$f, i32:{ *:[i32] }:$cond)
/*  5454*/          /*Scope*/ 23, /*->5478*/
/*  5455*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  5457*/            OPC_MoveParent,
/*  5458*/            OPC_RecordChild1, // #1 = $t
/*  5459*/            OPC_MoveChild2,
/*  5460*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5463*/            OPC_CheckPredicate, 19, // Predicate_immz
/*  5465*/            OPC_MoveParent,
/*  5466*/            OPC_CheckType, MVT::i32,
/*  5468*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  5470*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETEQ:{ *:[Other] }), i32:{ *:[i32] }:$t, (imm:{ *:[i32] })<<P:Predicate_immz>>) - Complexity = 14
                      // Dst: (SELEQZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$cond)
/*  5478*/          /*Scope*/ 23, /*->5502*/
/*  5479*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  5481*/            OPC_MoveParent,
/*  5482*/            OPC_RecordChild1, // #1 = $t
/*  5483*/            OPC_MoveChild2,
/*  5484*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5487*/            OPC_CheckPredicate, 19, // Predicate_immz
/*  5489*/            OPC_MoveParent,
/*  5490*/            OPC_CheckType, MVT::i32,
/*  5492*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  5494*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETNE:{ *:[Other] }), i32:{ *:[i32] }:$t, (imm:{ *:[i32] })<<P:Predicate_immz>>) - Complexity = 14
                      // Dst: (SELNEZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$cond)
/*  5502*/          /*Scope*/ 23, /*->5526*/
/*  5503*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  5505*/            OPC_MoveParent,
/*  5506*/            OPC_MoveChild1,
/*  5507*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5510*/            OPC_CheckPredicate, 19, // Predicate_immz
/*  5512*/            OPC_MoveParent,
/*  5513*/            OPC_RecordChild2, // #1 = $f
/*  5514*/            OPC_CheckType, MVT::i32,
/*  5516*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  5518*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETEQ:{ *:[Other] }), (imm:{ *:[i32] })<<P:Predicate_immz>>, i32:{ *:[i32] }:$f) - Complexity = 14
                      // Dst: (SELNEZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$f, i32:{ *:[i32] }:$cond)
/*  5526*/          /*Scope*/ 54, /*->5581*/
/*  5527*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  5529*/            OPC_MoveParent,
/*  5530*/            OPC_Scope, 20, /*->5552*/ // 2 children in Scope
/*  5532*/              OPC_MoveChild1,
/*  5533*/              OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5536*/              OPC_CheckPredicate, 19, // Predicate_immz
/*  5538*/              OPC_MoveParent,
/*  5539*/              OPC_RecordChild2, // #1 = $f
/*  5540*/              OPC_CheckType, MVT::i32,
/*  5542*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  5544*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETNE:{ *:[Other] }), (imm:{ *:[i32] })<<P:Predicate_immz>>, i32:{ *:[i32] }:$f) - Complexity = 14
                        // Dst: (SELEQZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$f, i32:{ *:[i32] }:$cond)
/*  5552*/            /*Scope*/ 27, /*->5580*/
/*  5553*/              OPC_RecordChild1, // #1 = $t
/*  5554*/              OPC_MoveChild2,
/*  5555*/              OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5558*/              OPC_CheckPredicate, 19, // Predicate_immz
/*  5560*/              OPC_MoveParent,
/*  5561*/              OPC_CheckType, MVT::i64,
/*  5563*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  5565*/              OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                            MVT::i64, 1/*#Ops*/, 0,  // Results = #2
/*  5572*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::SELNEZ64), 0,
                            MVT::i64, 2/*#Ops*/, 1, 2, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETNE:{ *:[Other] }), i64:{ *:[i64] }:$t, (imm:{ *:[i64] })<<P:Predicate_immz>>) - Complexity = 14
                        // Dst: (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$t, (SLL64_32:{ *:[i64] } i32:{ *:[i32] }:$cond))
/*  5580*/            0, /*End of Scope*/
/*  5581*/          /*Scope*/ 30, /*->5612*/
/*  5582*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  5584*/            OPC_MoveParent,
/*  5585*/            OPC_RecordChild1, // #1 = $t
/*  5586*/            OPC_MoveChild2,
/*  5587*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5590*/            OPC_CheckPredicate, 19, // Predicate_immz
/*  5592*/            OPC_MoveParent,
/*  5593*/            OPC_CheckType, MVT::i64,
/*  5595*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  5597*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #2
/*  5604*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 2, 
                      // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETEQ:{ *:[Other] }), i64:{ *:[i64] }:$t, (imm:{ *:[i64] })<<P:Predicate_immz>>) - Complexity = 14
                      // Dst: (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$t, (SLL64_32:{ *:[i64] } i32:{ *:[i32] }:$cond))
/*  5612*/          /*Scope*/ 30, /*->5643*/
/*  5613*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  5615*/            OPC_MoveParent,
/*  5616*/            OPC_MoveChild1,
/*  5617*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5620*/            OPC_CheckPredicate, 19, // Predicate_immz
/*  5622*/            OPC_MoveParent,
/*  5623*/            OPC_RecordChild2, // #1 = $f
/*  5624*/            OPC_CheckType, MVT::i64,
/*  5626*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  5628*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #2
/*  5635*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 2, 
                      // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETNE:{ *:[Other] }), (imm:{ *:[i64] })<<P:Predicate_immz>>, i64:{ *:[i64] }:$f) - Complexity = 14
                      // Dst: (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$f, (SLL64_32:{ *:[i64] } i32:{ *:[i32] }:$cond))
/*  5643*/          /*Scope*/ 30, /*->5674*/
/*  5644*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  5646*/            OPC_MoveParent,
/*  5647*/            OPC_MoveChild1,
/*  5648*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5651*/            OPC_CheckPredicate, 19, // Predicate_immz
/*  5653*/            OPC_MoveParent,
/*  5654*/            OPC_RecordChild2, // #1 = $f
/*  5655*/            OPC_CheckType, MVT::i64,
/*  5657*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  5659*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #2
/*  5666*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SELNEZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 2, 
                      // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETEQ:{ *:[Other] }), (imm:{ *:[i64] })<<P:Predicate_immz>>, i64:{ *:[i64] }:$f) - Complexity = 14
                      // Dst: (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$f, (SLL64_32:{ *:[i64] } i32:{ *:[i32] }:$cond))
/*  5674*/          0, /*End of Scope*/
/*  5675*/        /*Scope*/ 60|128,1/*188*/, /*->5865*/
/*  5677*/          OPC_CheckChild1Integer, 0, 
/*  5679*/          OPC_CheckType, MVT::i32,
/*  5681*/          OPC_Scope, 33, /*->5716*/ // 8 children in Scope
/*  5683*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  5685*/            OPC_MoveParent,
/*  5686*/            OPC_RecordChild1, // #1 = $T
/*  5687*/            OPC_RecordChild2, // #2 = $F
/*  5688*/            OPC_SwitchType /*2 cases */, 11, MVT::i32,// ->5702
/*  5691*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  5693*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                            MVT::i32, 3/*#Ops*/, 1, 0, 2, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETEQ:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 11
                        // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$F)
/*  5702*/            /*SwitchType*/ 11, MVT::i64,// ->5715
/*  5704*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  5706*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                            MVT::i64, 3/*#Ops*/, 1, 0, 2, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETEQ:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 11
                        // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, GPR32:{ *:[i32] }:$lhs, GPR64:{ *:[i64] }:$F)
/*  5715*/            0, // EndSwitchType
/*  5716*/          /*Scope*/ 33, /*->5750*/
/*  5717*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  5719*/            OPC_MoveParent,
/*  5720*/            OPC_RecordChild1, // #1 = $T
/*  5721*/            OPC_RecordChild2, // #2 = $F
/*  5722*/            OPC_SwitchType /*2 cases */, 11, MVT::i32,// ->5736
/*  5725*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  5727*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_I), 0,
                            MVT::i32, 3/*#Ops*/, 1, 0, 2, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETNE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 11
                        // Dst: (MOVN_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$F)
/*  5736*/            /*SwitchType*/ 11, MVT::i64,// ->5749
/*  5738*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  5740*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_I64), 0,
                            MVT::i64, 3/*#Ops*/, 1, 0, 2, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETNE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 11
                        // Dst: (MOVN_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, GPR32:{ *:[i32] }:$lhs, GPR64:{ *:[i64] }:$F)
/*  5749*/            0, // EndSwitchType
/*  5750*/          /*Scope*/ 18, /*->5769*/
/*  5751*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  5753*/            OPC_MoveParent,
/*  5754*/            OPC_RecordChild1, // #1 = $T
/*  5755*/            OPC_RecordChild2, // #2 = $F
/*  5756*/            OPC_CheckType, MVT::i32,
/*  5758*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  5760*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                          MVT::i32, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETEQ:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 11
                      // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$F)
/*  5769*/          /*Scope*/ 18, /*->5788*/
/*  5770*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  5772*/            OPC_MoveParent,
/*  5773*/            OPC_RecordChild1, // #1 = $T
/*  5774*/            OPC_RecordChild2, // #2 = $F
/*  5775*/            OPC_CheckType, MVT::i32,
/*  5777*/            OPC_CheckPatternPredicate, 35, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  5779*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_MM), 0,
                          MVT::i32, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETNE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 11
                      // Dst: (MOVN_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$F)
/*  5788*/          /*Scope*/ 18, /*->5807*/
/*  5789*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  5791*/            OPC_MoveParent,
/*  5792*/            OPC_RecordChild1, // #1 = $T
/*  5793*/            OPC_RecordChild2, // #2 = $F
/*  5794*/            OPC_CheckType, MVT::i32,
/*  5796*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  5798*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                          MVT::i32, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETEQ:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 11
                      // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$F)
/*  5807*/          /*Scope*/ 18, /*->5826*/
/*  5808*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  5810*/            OPC_MoveParent,
/*  5811*/            OPC_RecordChild1, // #1 = $T
/*  5812*/            OPC_RecordChild2, // #2 = $F
/*  5813*/            OPC_CheckType, MVT::i32,
/*  5815*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  5817*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_MM), 0,
                          MVT::i32, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETNE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 11
                      // Dst: (MOVN_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$F)
/*  5826*/          /*Scope*/ 18, /*->5845*/
/*  5827*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  5829*/            OPC_MoveParent,
/*  5830*/            OPC_RecordChild1, // #1 = $x
/*  5831*/            OPC_RecordChild2, // #2 = $y
/*  5832*/            OPC_CheckType, MVT::i32,
/*  5834*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  5836*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SelBeqZ), 0,
                          MVT::i32, 3/*#Ops*/, 1, 2, 0, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$a, 0:{ *:[i32] }, SETEQ:{ *:[Other] }), CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y) - Complexity = 11
                      // Dst: (SelBeqZ:{ *:[i32] } CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y, CPU16Regs:{ *:[i32] }:$a)
/*  5845*/          /*Scope*/ 18, /*->5864*/
/*  5846*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  5848*/            OPC_MoveParent,
/*  5849*/            OPC_RecordChild1, // #1 = $x
/*  5850*/            OPC_RecordChild2, // #2 = $y
/*  5851*/            OPC_CheckType, MVT::i32,
/*  5853*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  5855*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SelBneZ), 0,
                          MVT::i32, 3/*#Ops*/, 1, 2, 0, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$a, 0:{ *:[i32] }, SETNE:{ *:[Other] }), CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y) - Complexity = 11
                      // Dst: (SelBneZ:{ *:[i32] } CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y, CPU16Regs:{ *:[i32] }:$a)
/*  5864*/          0, /*End of Scope*/
/*  5865*/        /*Scope*/ 67|128,5/*707*/, /*->6574*/
/*  5867*/          OPC_RecordChild1, // #1 = $rhs
/*  5868*/          OPC_MoveChild1,
/*  5869*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5872*/          OPC_Scope, 65, /*->5939*/ // 12 children in Scope
/*  5874*/            OPC_CheckPredicate, 16, // Predicate_immSExt16
/*  5876*/            OPC_MoveParent,
/*  5877*/            OPC_CheckType, MVT::i32,
/*  5879*/            OPC_Scope, 28, /*->5909*/ // 2 children in Scope
/*  5881*/              OPC_CheckChild2CondCode, ISD::SETGE,
/*  5883*/              OPC_MoveParent,
/*  5884*/              OPC_RecordChild1, // #2 = $T
/*  5885*/              OPC_RecordChild2, // #3 = $F
/*  5886*/              OPC_CheckType, MVT::i32,
/*  5888*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  5890*/              OPC_EmitConvertToTarget, 1,
/*  5892*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  5900*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                            MVT::i32, 3/*#Ops*/, 2, 5, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTi:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), GPR32:{ *:[i32] }:$F)
/*  5909*/            /*Scope*/ 28, /*->5938*/
/*  5910*/              OPC_CheckChild2CondCode, ISD::SETUGE,
/*  5912*/              OPC_MoveParent,
/*  5913*/              OPC_RecordChild1, // #2 = $T
/*  5914*/              OPC_RecordChild2, // #3 = $F
/*  5915*/              OPC_CheckType, MVT::i32,
/*  5917*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  5919*/              OPC_EmitConvertToTarget, 1,
/*  5921*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  5929*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                            MVT::i32, 3/*#Ops*/, 2, 5, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh, SETUGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTiu:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh), GPR32:{ *:[i32] }:$F)
/*  5938*/            0, /*End of Scope*/
/*  5939*/          /*Scope*/ 71, /*->6011*/
/*  5940*/            OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/*  5942*/            OPC_MoveParent,
/*  5943*/            OPC_CheckType, MVT::i32,
/*  5945*/            OPC_Scope, 31, /*->5978*/ // 2 children in Scope
/*  5947*/              OPC_CheckChild2CondCode, ISD::SETGT,
/*  5949*/              OPC_MoveParent,
/*  5950*/              OPC_RecordChild1, // #2 = $T
/*  5951*/              OPC_RecordChild2, // #3 = $F
/*  5952*/              OPC_CheckType, MVT::i32,
/*  5954*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  5956*/              OPC_EmitConvertToTarget, 1,
/*  5958*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  5961*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  5969*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                            MVT::i32, 3/*#Ops*/, 2, 6, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTi:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), GPR32:{ *:[i32] }:$F)
/*  5978*/            /*Scope*/ 31, /*->6010*/
/*  5979*/              OPC_CheckChild2CondCode, ISD::SETUGT,
/*  5981*/              OPC_MoveParent,
/*  5982*/              OPC_RecordChild1, // #2 = $T
/*  5983*/              OPC_RecordChild2, // #3 = $F
/*  5984*/              OPC_CheckType, MVT::i32,
/*  5986*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  5988*/              OPC_EmitConvertToTarget, 1,
/*  5990*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  5993*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6001*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                            MVT::i32, 3/*#Ops*/, 2, 6, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTiu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), GPR32:{ *:[i32] }:$F)
/*  6010*/            0, /*End of Scope*/
/*  6011*/          /*Scope*/ 36, /*->6048*/
/*  6012*/            OPC_CheckPredicate, 18, // Predicate_immZExt16
/*  6014*/            OPC_MoveParent,
/*  6015*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  6017*/            OPC_CheckType, MVT::i32,
/*  6019*/            OPC_MoveParent,
/*  6020*/            OPC_RecordChild1, // #2 = $T
/*  6021*/            OPC_RecordChild2, // #3 = $F
/*  6022*/            OPC_CheckType, MVT::i32,
/*  6024*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6026*/            OPC_EmitConvertToTarget, 1,
/*  6028*/            OPC_EmitNodeXForm, 3, 4, // LO16
/*  6031*/            OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                          MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6039*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                          MVT::i32, 3/*#Ops*/, 2, 6, 3, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$uimm16, SETEQ:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                      // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (XORi:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$uimm16)), GPR32:{ *:[i32] }:$F)
/*  6048*/          /*Scope*/ 65, /*->6114*/
/*  6049*/            OPC_CheckPredicate, 16, // Predicate_immSExt16
/*  6051*/            OPC_MoveParent,
/*  6052*/            OPC_CheckType, MVT::i32,
/*  6054*/            OPC_Scope, 28, /*->6084*/ // 2 children in Scope
/*  6056*/              OPC_CheckChild2CondCode, ISD::SETGE,
/*  6058*/              OPC_MoveParent,
/*  6059*/              OPC_RecordChild1, // #2 = $T
/*  6060*/              OPC_RecordChild2, // #3 = $F
/*  6061*/              OPC_CheckType, MVT::i64,
/*  6063*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6065*/              OPC_EmitConvertToTarget, 1,
/*  6067*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  6075*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                            MVT::i64, 3/*#Ops*/, 2, 5, 3, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLTi:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), GPR64:{ *:[i64] }:$F)
/*  6084*/            /*Scope*/ 28, /*->6113*/
/*  6085*/              OPC_CheckChild2CondCode, ISD::SETUGE,
/*  6087*/              OPC_MoveParent,
/*  6088*/              OPC_RecordChild1, // #2 = $T
/*  6089*/              OPC_RecordChild2, // #3 = $F
/*  6090*/              OPC_CheckType, MVT::i64,
/*  6092*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6094*/              OPC_EmitConvertToTarget, 1,
/*  6096*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  6104*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                            MVT::i64, 3/*#Ops*/, 2, 5, 3, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh, SETUGE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLTiu:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh), GPR64:{ *:[i64] }:$F)
/*  6113*/            0, /*End of Scope*/
/*  6114*/          /*Scope*/ 71, /*->6186*/
/*  6115*/            OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/*  6117*/            OPC_MoveParent,
/*  6118*/            OPC_CheckType, MVT::i32,
/*  6120*/            OPC_Scope, 31, /*->6153*/ // 2 children in Scope
/*  6122*/              OPC_CheckChild2CondCode, ISD::SETGT,
/*  6124*/              OPC_MoveParent,
/*  6125*/              OPC_RecordChild1, // #2 = $T
/*  6126*/              OPC_RecordChild2, // #3 = $F
/*  6127*/              OPC_CheckType, MVT::i64,
/*  6129*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6131*/              OPC_EmitConvertToTarget, 1,
/*  6133*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6136*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6144*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                            MVT::i64, 3/*#Ops*/, 2, 6, 3, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLTi:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), GPR64:{ *:[i64] }:$F)
/*  6153*/            /*Scope*/ 31, /*->6185*/
/*  6154*/              OPC_CheckChild2CondCode, ISD::SETUGT,
/*  6156*/              OPC_MoveParent,
/*  6157*/              OPC_RecordChild1, // #2 = $T
/*  6158*/              OPC_RecordChild2, // #3 = $F
/*  6159*/              OPC_CheckType, MVT::i64,
/*  6161*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6163*/              OPC_EmitConvertToTarget, 1,
/*  6165*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6168*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6176*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                            MVT::i64, 3/*#Ops*/, 2, 6, 3, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLTiu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), GPR64:{ *:[i64] }:$F)
/*  6185*/            0, /*End of Scope*/
/*  6186*/          /*Scope*/ 36, /*->6223*/
/*  6187*/            OPC_CheckPredicate, 18, // Predicate_immZExt16
/*  6189*/            OPC_MoveParent,
/*  6190*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  6192*/            OPC_CheckType, MVT::i32,
/*  6194*/            OPC_MoveParent,
/*  6195*/            OPC_RecordChild1, // #2 = $T
/*  6196*/            OPC_RecordChild2, // #3 = $F
/*  6197*/            OPC_CheckType, MVT::i64,
/*  6199*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6201*/            OPC_EmitConvertToTarget, 1,
/*  6203*/            OPC_EmitNodeXForm, 3, 4, // LO16
/*  6206*/            OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                          MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6214*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                          MVT::i64, 3/*#Ops*/, 2, 6, 3, 
                      // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$uimm16, SETEQ:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 10
                      // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (XORi:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$uimm16)), GPR64:{ *:[i64] }:$F)
/*  6223*/          /*Scope*/ 65, /*->6289*/
/*  6224*/            OPC_CheckPredicate, 16, // Predicate_immSExt16
/*  6226*/            OPC_MoveParent,
/*  6227*/            OPC_CheckType, MVT::i32,
/*  6229*/            OPC_Scope, 28, /*->6259*/ // 2 children in Scope
/*  6231*/              OPC_CheckChild2CondCode, ISD::SETGE,
/*  6233*/              OPC_MoveParent,
/*  6234*/              OPC_RecordChild1, // #2 = $T
/*  6235*/              OPC_RecordChild2, // #3 = $F
/*  6236*/              OPC_CheckType, MVT::i32,
/*  6238*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6240*/              OPC_EmitConvertToTarget, 1,
/*  6242*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  6250*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                            MVT::i32, 3/*#Ops*/, 2, 5, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), GPR32:{ *:[i32] }:$F)
/*  6259*/            /*Scope*/ 28, /*->6288*/
/*  6260*/              OPC_CheckChild2CondCode, ISD::SETUGE,
/*  6262*/              OPC_MoveParent,
/*  6263*/              OPC_RecordChild1, // #2 = $T
/*  6264*/              OPC_RecordChild2, // #3 = $F
/*  6265*/              OPC_CheckType, MVT::i32,
/*  6267*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6269*/              OPC_EmitConvertToTarget, 1,
/*  6271*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  6279*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                            MVT::i32, 3/*#Ops*/, 2, 5, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh, SETUGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh), GPR32:{ *:[i32] }:$F)
/*  6288*/            0, /*End of Scope*/
/*  6289*/          /*Scope*/ 71, /*->6361*/
/*  6290*/            OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/*  6292*/            OPC_MoveParent,
/*  6293*/            OPC_CheckType, MVT::i32,
/*  6295*/            OPC_Scope, 31, /*->6328*/ // 2 children in Scope
/*  6297*/              OPC_CheckChild2CondCode, ISD::SETGT,
/*  6299*/              OPC_MoveParent,
/*  6300*/              OPC_RecordChild1, // #2 = $T
/*  6301*/              OPC_RecordChild2, // #3 = $F
/*  6302*/              OPC_CheckType, MVT::i32,
/*  6304*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6306*/              OPC_EmitConvertToTarget, 1,
/*  6308*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6311*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6319*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                            MVT::i32, 3/*#Ops*/, 2, 6, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), GPR32:{ *:[i32] }:$F)
/*  6328*/            /*Scope*/ 31, /*->6360*/
/*  6329*/              OPC_CheckChild2CondCode, ISD::SETUGT,
/*  6331*/              OPC_MoveParent,
/*  6332*/              OPC_RecordChild1, // #2 = $T
/*  6333*/              OPC_RecordChild2, // #3 = $F
/*  6334*/              OPC_CheckType, MVT::i32,
/*  6336*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6338*/              OPC_EmitConvertToTarget, 1,
/*  6340*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6343*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6351*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                            MVT::i32, 3/*#Ops*/, 2, 6, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), GPR32:{ *:[i32] }:$F)
/*  6360*/            0, /*End of Scope*/
/*  6361*/          /*Scope*/ 36, /*->6398*/
/*  6362*/            OPC_CheckPredicate, 18, // Predicate_immZExt16
/*  6364*/            OPC_MoveParent,
/*  6365*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  6367*/            OPC_CheckType, MVT::i32,
/*  6369*/            OPC_MoveParent,
/*  6370*/            OPC_RecordChild1, // #2 = $T
/*  6371*/            OPC_RecordChild2, // #3 = $F
/*  6372*/            OPC_CheckType, MVT::i32,
/*  6374*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6376*/            OPC_EmitConvertToTarget, 1,
/*  6378*/            OPC_EmitNodeXForm, 3, 4, // LO16
/*  6381*/            OPC_EmitNode1, TARGET_VAL(Mips::XORi_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6389*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                          MVT::i32, 3/*#Ops*/, 2, 6, 3, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$uimm16, SETEQ:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                      // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (XORi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$uimm16)), GPR32:{ *:[i32] }:$F)
/*  6398*/          /*Scope*/ 65, /*->6464*/
/*  6399*/            OPC_CheckPredicate, 16, // Predicate_immSExt16
/*  6401*/            OPC_MoveParent,
/*  6402*/            OPC_CheckType, MVT::i32,
/*  6404*/            OPC_Scope, 28, /*->6434*/ // 2 children in Scope
/*  6406*/              OPC_CheckChild2CondCode, ISD::SETGE,
/*  6408*/              OPC_MoveParent,
/*  6409*/              OPC_RecordChild1, // #2 = $T
/*  6410*/              OPC_RecordChild2, // #3 = $F
/*  6411*/              OPC_CheckType, MVT::i32,
/*  6413*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6415*/              OPC_EmitConvertToTarget, 1,
/*  6417*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  6425*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                            MVT::i32, 3/*#Ops*/, 2, 5, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), GPR32:{ *:[i32] }:$F)
/*  6434*/            /*Scope*/ 28, /*->6463*/
/*  6435*/              OPC_CheckChild2CondCode, ISD::SETUGE,
/*  6437*/              OPC_MoveParent,
/*  6438*/              OPC_RecordChild1, // #2 = $T
/*  6439*/              OPC_RecordChild2, // #3 = $F
/*  6440*/              OPC_CheckType, MVT::i32,
/*  6442*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6444*/              OPC_EmitConvertToTarget, 1,
/*  6446*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  6454*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                            MVT::i32, 3/*#Ops*/, 2, 5, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh, SETUGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh), GPR32:{ *:[i32] }:$F)
/*  6463*/            0, /*End of Scope*/
/*  6464*/          /*Scope*/ 71, /*->6536*/
/*  6465*/            OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/*  6467*/            OPC_MoveParent,
/*  6468*/            OPC_CheckType, MVT::i32,
/*  6470*/            OPC_Scope, 31, /*->6503*/ // 2 children in Scope
/*  6472*/              OPC_CheckChild2CondCode, ISD::SETGT,
/*  6474*/              OPC_MoveParent,
/*  6475*/              OPC_RecordChild1, // #2 = $T
/*  6476*/              OPC_RecordChild2, // #3 = $F
/*  6477*/              OPC_CheckType, MVT::i32,
/*  6479*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6481*/              OPC_EmitConvertToTarget, 1,
/*  6483*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6486*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6494*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                            MVT::i32, 3/*#Ops*/, 2, 6, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), GPR32:{ *:[i32] }:$F)
/*  6503*/            /*Scope*/ 31, /*->6535*/
/*  6504*/              OPC_CheckChild2CondCode, ISD::SETUGT,
/*  6506*/              OPC_MoveParent,
/*  6507*/              OPC_RecordChild1, // #2 = $T
/*  6508*/              OPC_RecordChild2, // #3 = $F
/*  6509*/              OPC_CheckType, MVT::i32,
/*  6511*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6513*/              OPC_EmitConvertToTarget, 1,
/*  6515*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6518*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6526*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                            MVT::i32, 3/*#Ops*/, 2, 6, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), GPR32:{ *:[i32] }:$F)
/*  6535*/            0, /*End of Scope*/
/*  6536*/          /*Scope*/ 36, /*->6573*/
/*  6537*/            OPC_CheckPredicate, 18, // Predicate_immZExt16
/*  6539*/            OPC_MoveParent,
/*  6540*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  6542*/            OPC_CheckType, MVT::i32,
/*  6544*/            OPC_MoveParent,
/*  6545*/            OPC_RecordChild1, // #2 = $T
/*  6546*/            OPC_RecordChild2, // #3 = $F
/*  6547*/            OPC_CheckType, MVT::i32,
/*  6549*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6551*/            OPC_EmitConvertToTarget, 1,
/*  6553*/            OPC_EmitNodeXForm, 3, 4, // LO16
/*  6556*/            OPC_EmitNode1, TARGET_VAL(Mips::XORi_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6564*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                          MVT::i32, 3/*#Ops*/, 2, 6, 3, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$uimm16, SETEQ:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                      // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (XORi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$uimm16)), GPR32:{ *:[i32] }:$F)
/*  6573*/          0, /*End of Scope*/
/*  6574*/        /*Scope*/ 19|128,1/*147*/, /*->6723*/
/*  6576*/          OPC_MoveChild1,
/*  6577*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  6580*/          OPC_CheckPredicate, 19, // Predicate_immz
/*  6582*/          OPC_MoveParent,
/*  6583*/          OPC_CheckType, MVT::i32,
/*  6585*/          OPC_Scope, 33, /*->6620*/ // 4 children in Scope
/*  6587*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  6589*/            OPC_MoveParent,
/*  6590*/            OPC_RecordChild1, // #1 = $t
/*  6591*/            OPC_RecordChild2, // #2 = $f
/*  6592*/            OPC_CheckType, MVT::i32,
/*  6594*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  6596*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #3
/*  6604*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ), 0,
                          MVT::i32, 2/*#Ops*/, 2, 0,  // Results = #4
/*  6612*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::OR), 0,
                          MVT::i32, 2/*#Ops*/, 3, 4, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETEQ:{ *:[Other] }), i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$f) - Complexity = 10
                      // Dst: (OR:{ *:[i32] } (SELEQZ:{ *:[i32] } i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$cond), (SELNEZ:{ *:[i32] } i32:{ *:[i32] }:$f, i32:{ *:[i32] }:$cond))
/*  6620*/          /*Scope*/ 33, /*->6654*/
/*  6621*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  6623*/            OPC_MoveParent,
/*  6624*/            OPC_RecordChild1, // #1 = $t
/*  6625*/            OPC_RecordChild2, // #2 = $f
/*  6626*/            OPC_CheckType, MVT::i32,
/*  6628*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  6630*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #3
/*  6638*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ), 0,
                          MVT::i32, 2/*#Ops*/, 2, 0,  // Results = #4
/*  6646*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::OR), 0,
                          MVT::i32, 2/*#Ops*/, 3, 4, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETNE:{ *:[Other] }), i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$f) - Complexity = 10
                      // Dst: (OR:{ *:[i32] } (SELNEZ:{ *:[i32] } i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$cond), (SELEQZ:{ *:[i32] } i32:{ *:[i32] }:$f, i32:{ *:[i32] }:$cond))
/*  6654*/          /*Scope*/ 33, /*->6688*/
/*  6655*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  6657*/            OPC_MoveParent,
/*  6658*/            OPC_RecordChild1, // #1 = $t
/*  6659*/            OPC_RecordChild2, // #2 = $f
/*  6660*/            OPC_CheckType, MVT::i32,
/*  6662*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  6664*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #3
/*  6672*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 2, 0,  // Results = #4
/*  6680*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::OR_MM), 0,
                          MVT::i32, 2/*#Ops*/, 3, 4, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETEQ:{ *:[Other] }), i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$f) - Complexity = 10
                      // Dst: (OR_MM:{ *:[i32] } (SELEQZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$cond), (SELNEZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$f, i32:{ *:[i32] }:$cond))
/*  6688*/          /*Scope*/ 33, /*->6722*/
/*  6689*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  6691*/            OPC_MoveParent,
/*  6692*/            OPC_RecordChild1, // #1 = $t
/*  6693*/            OPC_RecordChild2, // #2 = $f
/*  6694*/            OPC_CheckType, MVT::i32,
/*  6696*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  6698*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #3
/*  6706*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 2, 0,  // Results = #4
/*  6714*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::OR_MM), 0,
                          MVT::i32, 2/*#Ops*/, 3, 4, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETNE:{ *:[Other] }), i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$f) - Complexity = 10
                      // Dst: (OR_MM:{ *:[i32] } (SELNEZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$cond), (SELEQZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$f, i32:{ *:[i32] }:$cond))
/*  6722*/          0, /*End of Scope*/
/*  6723*/        /*Scope*/ 7|128,2/*263*/, /*->6988*/
/*  6725*/          OPC_RecordChild1, // #1 = $imm
/*  6726*/          OPC_MoveChild1,
/*  6727*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  6730*/          OPC_Scope, 127, /*->6859*/ // 2 children in Scope
/*  6732*/            OPC_CheckPredicate, 18, // Predicate_immZExt16
/*  6734*/            OPC_MoveParent,
/*  6735*/            OPC_CheckType, MVT::i32,
/*  6737*/            OPC_Scope, 59, /*->6798*/ // 2 children in Scope
/*  6739*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  6741*/              OPC_MoveParent,
/*  6742*/              OPC_RecordChild1, // #2 = $t
/*  6743*/              OPC_RecordChild2, // #3 = $f
/*  6744*/              OPC_CheckType, MVT::i32,
/*  6746*/              OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  6748*/              OPC_EmitConvertToTarget, 1,
/*  6750*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  6753*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6761*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  6769*/              OPC_EmitConvertToTarget, 1,
/*  6771*/              OPC_EmitNodeXForm, 3, 8, // LO16
/*  6774*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  6782*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  6790*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR), 0,
                            MVT::i32, 2/*#Ops*/, 7, 11, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm, SETEQ:{ *:[Other] }), i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$f) - Complexity = 10
                        // Dst: (OR:{ *:[i32] } (SELEQZ:{ *:[i32] } i32:{ *:[i32] }:$t, (XORi:{ *:[i32] } i32:{ *:[i32] }:$cond, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$imm))), (SELNEZ:{ *:[i32] } i32:{ *:[i32] }:$f, (XORi:{ *:[i32] } i32:{ *:[i32] }:$cond, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$imm))))
/*  6798*/            /*Scope*/ 59, /*->6858*/
/*  6799*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  6801*/              OPC_MoveParent,
/*  6802*/              OPC_RecordChild1, // #2 = $t
/*  6803*/              OPC_RecordChild2, // #3 = $f
/*  6804*/              OPC_CheckType, MVT::i32,
/*  6806*/              OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  6808*/              OPC_EmitConvertToTarget, 1,
/*  6810*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  6813*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6821*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  6829*/              OPC_EmitConvertToTarget, 1,
/*  6831*/              OPC_EmitNodeXForm, 3, 8, // LO16
/*  6834*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  6842*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  6850*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR), 0,
                            MVT::i32, 2/*#Ops*/, 7, 11, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm, SETNE:{ *:[Other] }), i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$f) - Complexity = 10
                        // Dst: (OR:{ *:[i32] } (SELNEZ:{ *:[i32] } i32:{ *:[i32] }:$t, (XORi:{ *:[i32] } i32:{ *:[i32] }:$cond, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$imm))), (SELEQZ:{ *:[i32] } i32:{ *:[i32] }:$f, (XORi:{ *:[i32] } i32:{ *:[i32] }:$cond, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$imm))))
/*  6858*/            0, /*End of Scope*/
/*  6859*/          /*Scope*/ 127, /*->6987*/
/*  6860*/            OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/*  6862*/            OPC_MoveParent,
/*  6863*/            OPC_CheckType, MVT::i32,
/*  6865*/            OPC_Scope, 59, /*->6926*/ // 2 children in Scope
/*  6867*/              OPC_CheckChild2CondCode, ISD::SETGT,
/*  6869*/              OPC_MoveParent,
/*  6870*/              OPC_RecordChild1, // #2 = $t
/*  6871*/              OPC_RecordChild2, // #3 = $f
/*  6872*/              OPC_CheckType, MVT::i32,
/*  6874*/              OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  6876*/              OPC_EmitConvertToTarget, 1,
/*  6878*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6881*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6889*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  6897*/              OPC_EmitConvertToTarget, 1,
/*  6899*/              OPC_EmitNodeXForm, 2, 8, // Plus1
/*  6902*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  6910*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  6918*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR), 0,
                            MVT::i32, 2/*#Ops*/, 7, 11, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$imm, SETGT:{ *:[Other] }), i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$f) - Complexity = 10
                        // Dst: (OR:{ *:[i32] } (SELEQZ:{ *:[i32] } i32:{ *:[i32] }:$t, (SLTi:{ *:[i32] } i32:{ *:[i32] }:$cond, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$imm))), (SELNEZ:{ *:[i32] } i32:{ *:[i32] }:$f, (SLTi:{ *:[i32] } i32:{ *:[i32] }:$cond, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$imm))))
/*  6926*/            /*Scope*/ 59, /*->6986*/
/*  6927*/              OPC_CheckChild2CondCode, ISD::SETUGT,
/*  6929*/              OPC_MoveParent,
/*  6930*/              OPC_RecordChild1, // #2 = $t
/*  6931*/              OPC_RecordChild2, // #3 = $f
/*  6932*/              OPC_CheckType, MVT::i32,
/*  6934*/              OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  6936*/              OPC_EmitConvertToTarget, 1,
/*  6938*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6941*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6949*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  6957*/              OPC_EmitConvertToTarget, 1,
/*  6959*/              OPC_EmitNodeXForm, 2, 8, // Plus1
/*  6962*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  6970*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  6978*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR), 0,
                            MVT::i32, 2/*#Ops*/, 7, 11, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$imm, SETUGT:{ *:[Other] }), i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$f) - Complexity = 10
                        // Dst: (OR:{ *:[i32] } (SELEQZ:{ *:[i32] } i32:{ *:[i32] }:$t, (SLTiu:{ *:[i32] } i32:{ *:[i32] }:$cond, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$imm))), (SELNEZ:{ *:[i32] } i32:{ *:[i32] }:$f, (SLTiu:{ *:[i32] } i32:{ *:[i32] }:$cond, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$imm))))
/*  6986*/            0, /*End of Scope*/
/*  6987*/          0, /*End of Scope*/
/*  6988*/        /*Scope*/ 107, /*->7096*/
/*  6989*/          OPC_MoveChild1,
/*  6990*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  6993*/          OPC_CheckPredicate, 19, // Predicate_immz
/*  6995*/          OPC_MoveParent,
/*  6996*/          OPC_CheckType, MVT::i32,
/*  6998*/          OPC_Scope, 47, /*->7047*/ // 2 children in Scope
/*  7000*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  7002*/            OPC_MoveParent,
/*  7003*/            OPC_RecordChild1, // #1 = $t
/*  7004*/            OPC_RecordChild2, // #2 = $f
/*  7005*/            OPC_CheckType, MVT::i64,
/*  7007*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  7009*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #3
/*  7016*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 3,  // Results = #4
/*  7024*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #5
/*  7031*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                          MVT::i64, 2/*#Ops*/, 2, 5,  // Results = #6
/*  7039*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::OR64), 0,
                          MVT::i64, 2/*#Ops*/, 4, 6, 
                      // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETEQ:{ *:[Other] }), i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$f) - Complexity = 10
                      // Dst: (OR64:{ *:[i64] } (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$t, (SLL64_32:{ *:[i64] } i32:{ *:[i32] }:$cond)), (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$f, (SLL64_32:{ *:[i64] } i32:{ *:[i32] }:$cond)))
/*  7047*/          /*Scope*/ 47, /*->7095*/
/*  7048*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  7050*/            OPC_MoveParent,
/*  7051*/            OPC_RecordChild1, // #1 = $t
/*  7052*/            OPC_RecordChild2, // #2 = $f
/*  7053*/            OPC_CheckType, MVT::i64,
/*  7055*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  7057*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #3
/*  7064*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 3,  // Results = #4
/*  7072*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #5
/*  7079*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 2, 5,  // Results = #6
/*  7087*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::OR64), 0,
                          MVT::i64, 2/*#Ops*/, 4, 6, 
                      // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, SETNE:{ *:[Other] }), i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$f) - Complexity = 10
                      // Dst: (OR64:{ *:[i64] } (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$t, (SLL64_32:{ *:[i64] } i32:{ *:[i32] }:$cond)), (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$f, (SLL64_32:{ *:[i64] } i32:{ *:[i32] }:$cond)))
/*  7095*/          0, /*End of Scope*/
/*  7096*/        /*Scope*/ 121|128,3/*505*/, /*->7603*/
/*  7098*/          OPC_RecordChild1, // #1 = $imm
/*  7099*/          OPC_MoveChild1,
/*  7100*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  7103*/          OPC_Scope, 127, /*->7232*/ // 5 children in Scope
/*  7105*/            OPC_CheckPredicate, 18, // Predicate_immZExt16
/*  7107*/            OPC_MoveParent,
/*  7108*/            OPC_CheckType, MVT::i32,
/*  7110*/            OPC_Scope, 59, /*->7171*/ // 2 children in Scope
/*  7112*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  7114*/              OPC_MoveParent,
/*  7115*/              OPC_RecordChild1, // #2 = $t
/*  7116*/              OPC_RecordChild2, // #3 = $f
/*  7117*/              OPC_CheckType, MVT::i32,
/*  7119*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  7121*/              OPC_EmitConvertToTarget, 1,
/*  7123*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  7126*/              OPC_EmitNode1, TARGET_VAL(Mips::XORI_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7134*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  7142*/              OPC_EmitConvertToTarget, 1,
/*  7144*/              OPC_EmitNodeXForm, 3, 8, // LO16
/*  7147*/              OPC_EmitNode1, TARGET_VAL(Mips::XORI_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  7155*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  7163*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR_MM), 0,
                            MVT::i32, 2/*#Ops*/, 7, 11, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm, SETEQ:{ *:[Other] }), i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$f) - Complexity = 10
                        // Dst: (OR_MM:{ *:[i32] } (SELEQZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$t, (XORI_MMR6:{ *:[i32] } i32:{ *:[i32] }:$cond, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$imm))), (SELNEZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$f, (XORI_MMR6:{ *:[i32] } i32:{ *:[i32] }:$cond, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$imm))))
/*  7171*/            /*Scope*/ 59, /*->7231*/
/*  7172*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  7174*/              OPC_MoveParent,
/*  7175*/              OPC_RecordChild1, // #2 = $t
/*  7176*/              OPC_RecordChild2, // #3 = $f
/*  7177*/              OPC_CheckType, MVT::i32,
/*  7179*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  7181*/              OPC_EmitConvertToTarget, 1,
/*  7183*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  7186*/              OPC_EmitNode1, TARGET_VAL(Mips::XORI_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7194*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  7202*/              OPC_EmitConvertToTarget, 1,
/*  7204*/              OPC_EmitNodeXForm, 3, 8, // LO16
/*  7207*/              OPC_EmitNode1, TARGET_VAL(Mips::XORI_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  7215*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  7223*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR_MM), 0,
                            MVT::i32, 2/*#Ops*/, 7, 11, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm, SETNE:{ *:[Other] }), i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$f) - Complexity = 10
                        // Dst: (OR_MM:{ *:[i32] } (SELNEZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$t, (XORI_MMR6:{ *:[i32] } i32:{ *:[i32] }:$cond, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$imm))), (SELEQZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$f, (XORI_MMR6:{ *:[i32] } i32:{ *:[i32] }:$cond, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$imm))))
/*  7231*/            0, /*End of Scope*/
/*  7232*/          /*Scope*/ 127, /*->7360*/
/*  7233*/            OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/*  7235*/            OPC_MoveParent,
/*  7236*/            OPC_CheckType, MVT::i32,
/*  7238*/            OPC_Scope, 59, /*->7299*/ // 2 children in Scope
/*  7240*/              OPC_CheckChild2CondCode, ISD::SETGT,
/*  7242*/              OPC_MoveParent,
/*  7243*/              OPC_RecordChild1, // #2 = $t
/*  7244*/              OPC_RecordChild2, // #3 = $f
/*  7245*/              OPC_CheckType, MVT::i32,
/*  7247*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  7249*/              OPC_EmitConvertToTarget, 1,
/*  7251*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  7254*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7262*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  7270*/              OPC_EmitConvertToTarget, 1,
/*  7272*/              OPC_EmitNodeXForm, 2, 8, // Plus1
/*  7275*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  7283*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  7291*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR_MM), 0,
                            MVT::i32, 2/*#Ops*/, 7, 11, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$imm, SETGT:{ *:[Other] }), i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$f) - Complexity = 10
                        // Dst: (OR_MM:{ *:[i32] } (SELEQZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$t, (SLTi_MM:{ *:[i32] } i32:{ *:[i32] }:$cond, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$imm))), (SELNEZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$f, (SLTi_MM:{ *:[i32] } i32:{ *:[i32] }:$cond, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$imm))))
/*  7299*/            /*Scope*/ 59, /*->7359*/
/*  7300*/              OPC_CheckChild2CondCode, ISD::SETUGT,
/*  7302*/              OPC_MoveParent,
/*  7303*/              OPC_RecordChild1, // #2 = $t
/*  7304*/              OPC_RecordChild2, // #3 = $f
/*  7305*/              OPC_CheckType, MVT::i32,
/*  7307*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  7309*/              OPC_EmitConvertToTarget, 1,
/*  7311*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  7314*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7322*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  7330*/              OPC_EmitConvertToTarget, 1,
/*  7332*/              OPC_EmitNodeXForm, 2, 8, // Plus1
/*  7335*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  7343*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  7351*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR_MM), 0,
                            MVT::i32, 2/*#Ops*/, 7, 11, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$imm, SETUGT:{ *:[Other] }), i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$f) - Complexity = 10
                        // Dst: (OR_MM:{ *:[i32] } (SELEQZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$t, (SLTiu_MM:{ *:[i32] } i32:{ *:[i32] }:$cond, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$imm))), (SELNEZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$f, (SLTiu_MM:{ *:[i32] } i32:{ *:[i32] }:$cond, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$imm))))
/*  7359*/            0, /*End of Scope*/
/*  7360*/          /*Scope*/ 27|128,1/*155*/, /*->7517*/
/*  7362*/            OPC_CheckPredicate, 18, // Predicate_immZExt16
/*  7364*/            OPC_MoveParent,
/*  7365*/            OPC_CheckType, MVT::i32,
/*  7367*/            OPC_Scope, 73, /*->7442*/ // 2 children in Scope
/*  7369*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  7371*/              OPC_MoveParent,
/*  7372*/              OPC_RecordChild1, // #2 = $t
/*  7373*/              OPC_RecordChild2, // #3 = $f
/*  7374*/              OPC_CheckType, MVT::i64,
/*  7376*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  7378*/              OPC_EmitConvertToTarget, 1,
/*  7380*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  7383*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7391*/              OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                            MVT::i64, 1/*#Ops*/, 6,  // Results = #7
/*  7398*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                            MVT::i64, 2/*#Ops*/, 2, 7,  // Results = #8
/*  7406*/              OPC_EmitConvertToTarget, 1,
/*  7408*/              OPC_EmitNodeXForm, 3, 9, // LO16
/*  7411*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 10,  // Results = #11
/*  7419*/              OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                            MVT::i64, 1/*#Ops*/, 11,  // Results = #12
/*  7426*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                            MVT::i64, 2/*#Ops*/, 3, 12,  // Results = #13
/*  7434*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR64), 0,
                            MVT::i64, 2/*#Ops*/, 8, 13, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm, SETEQ:{ *:[Other] }), i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$f) - Complexity = 10
                        // Dst: (OR64:{ *:[i64] } (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$t, (SLL64_32:{ *:[i64] } (XORi:{ *:[i32] } i32:{ *:[i32] }:$cond, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$imm)))), (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$f, (SLL64_32:{ *:[i64] } (XORi:{ *:[i32] } i32:{ *:[i32] }:$cond, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$imm)))))
/*  7442*/            /*Scope*/ 73, /*->7516*/
/*  7443*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  7445*/              OPC_MoveParent,
/*  7446*/              OPC_RecordChild1, // #2 = $t
/*  7447*/              OPC_RecordChild2, // #3 = $f
/*  7448*/              OPC_CheckType, MVT::i64,
/*  7450*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  7452*/              OPC_EmitConvertToTarget, 1,
/*  7454*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  7457*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7465*/              OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                            MVT::i64, 1/*#Ops*/, 6,  // Results = #7
/*  7472*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                            MVT::i64, 2/*#Ops*/, 2, 7,  // Results = #8
/*  7480*/              OPC_EmitConvertToTarget, 1,
/*  7482*/              OPC_EmitNodeXForm, 3, 9, // LO16
/*  7485*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 10,  // Results = #11
/*  7493*/              OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                            MVT::i64, 1/*#Ops*/, 11,  // Results = #12
/*  7500*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                            MVT::i64, 2/*#Ops*/, 3, 12,  // Results = #13
/*  7508*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR64), 0,
                            MVT::i64, 2/*#Ops*/, 8, 13, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm, SETNE:{ *:[Other] }), i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$f) - Complexity = 10
                        // Dst: (OR64:{ *:[i64] } (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$t, (SLL64_32:{ *:[i64] } (XORi:{ *:[i32] } i32:{ *:[i32] }:$cond, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$imm)))), (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$f, (SLL64_32:{ *:[i64] } (XORi:{ *:[i32] } i32:{ *:[i32] }:$cond, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$imm)))))
/*  7516*/            0, /*End of Scope*/
/*  7517*/          /*Scope*/ 26, /*->7544*/
/*  7518*/            OPC_CheckPredicate, 16, // Predicate_immSExt16
/*  7520*/            OPC_MoveParent,
/*  7521*/            OPC_CheckChild2CondCode, ISD::SETLT,
/*  7523*/            OPC_CheckType, MVT::i32,
/*  7525*/            OPC_MoveParent,
/*  7526*/            OPC_RecordChild1, // #2 = $x
/*  7527*/            OPC_RecordChild2, // #3 = $y
/*  7528*/            OPC_CheckType, MVT::i32,
/*  7530*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  7532*/            OPC_EmitConvertToTarget, 1,
/*  7534*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SelTBtneZSlti), 0,
                          MVT::i32, 4/*#Ops*/, 2, 3, 0, 4, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$a, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$b, SETLT:{ *:[Other] }), CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y) - Complexity = 10
                      // Dst: (SelTBtneZSlti:{ *:[i32] } CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y, CPU16Regs:{ *:[i32] }:$a, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$b)
/*  7544*/          /*Scope*/ 57, /*->7602*/
/*  7545*/            OPC_CheckPredicate, 18, // Predicate_immZExt16
/*  7547*/            OPC_MoveParent,
/*  7548*/            OPC_CheckType, MVT::i32,
/*  7550*/            OPC_Scope, 24, /*->7576*/ // 2 children in Scope
/*  7552*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  7554*/              OPC_MoveParent,
/*  7555*/              OPC_RecordChild1, // #2 = $x
/*  7556*/              OPC_RecordChild2, // #3 = $y
/*  7557*/              OPC_CheckType, MVT::i32,
/*  7559*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  7561*/              OPC_EmitConvertToTarget, 1,
/*  7563*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  7566*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::SelTBteqZCmpi), 0,
                            MVT::i32, 4/*#Ops*/, 2, 3, 0, 5, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$a, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$k, SETEQ:{ *:[Other] }), CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y) - Complexity = 10
                        // Dst: (SelTBteqZCmpi:{ *:[i32] } CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y, CPU16Regs:{ *:[i32] }:$a, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$k))
/*  7576*/            /*Scope*/ 24, /*->7601*/
/*  7577*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  7579*/              OPC_MoveParent,
/*  7580*/              OPC_RecordChild1, // #2 = $x
/*  7581*/              OPC_RecordChild2, // #3 = $y
/*  7582*/              OPC_CheckType, MVT::i32,
/*  7584*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  7586*/              OPC_EmitConvertToTarget, 1,
/*  7588*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  7591*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::SelTBtneZCmpi), 0,
                            MVT::i32, 4/*#Ops*/, 2, 3, 0, 5, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$a, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$k, SETNE:{ *:[Other] }), CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y) - Complexity = 10
                        // Dst: (SelTBtneZCmpi:{ *:[i32] } CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y, CPU16Regs:{ *:[i32] }:$a, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$k))
/*  7601*/            0, /*End of Scope*/
/*  7602*/          0, /*End of Scope*/
/*  7603*/        0, /*End of Scope*/
/*  7604*/      /*Scope*/ 35|128,7/*931*/, /*->8537*/
/*  7606*/        OPC_CheckChild0Type, MVT::i64,
/*  7608*/        OPC_Scope, 107, /*->7717*/ // 5 children in Scope
/*  7610*/          OPC_MoveChild1,
/*  7611*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  7614*/          OPC_CheckPredicate, 19, // Predicate_immz
/*  7616*/          OPC_MoveParent,
/*  7617*/          OPC_CheckType, MVT::i32,
/*  7619*/          OPC_Scope, 23, /*->7644*/ // 4 children in Scope
/*  7621*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  7623*/            OPC_MoveParent,
/*  7624*/            OPC_RecordChild1, // #1 = $t
/*  7625*/            OPC_MoveChild2,
/*  7626*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  7629*/            OPC_CheckPredicate, 19, // Predicate_immz
/*  7631*/            OPC_MoveParent,
/*  7632*/            OPC_CheckType, MVT::i64,
/*  7634*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  7636*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SELNEZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 0, 
                      // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i64:{ *:[i64] }:$cond, (imm:{ *:[i64] })<<P:Predicate_immz>>, SETNE:{ *:[Other] }), i64:{ *:[i64] }:$t, (imm:{ *:[i64] })<<P:Predicate_immz>>) - Complexity = 14
                      // Dst: (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$cond)
/*  7644*/          /*Scope*/ 23, /*->7668*/
/*  7645*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  7647*/            OPC_MoveParent,
/*  7648*/            OPC_RecordChild1, // #1 = $t
/*  7649*/            OPC_MoveChild2,
/*  7650*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  7653*/            OPC_CheckPredicate, 19, // Predicate_immz
/*  7655*/            OPC_MoveParent,
/*  7656*/            OPC_CheckType, MVT::i64,
/*  7658*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  7660*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 0, 
                      // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i64:{ *:[i64] }:$cond, (imm:{ *:[i64] })<<P:Predicate_immz>>, SETEQ:{ *:[Other] }), i64:{ *:[i64] }:$t, (imm:{ *:[i64] })<<P:Predicate_immz>>) - Complexity = 14
                      // Dst: (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$cond)
/*  7668*/          /*Scope*/ 23, /*->7692*/
/*  7669*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  7671*/            OPC_MoveParent,
/*  7672*/            OPC_MoveChild1,
/*  7673*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  7676*/            OPC_CheckPredicate, 19, // Predicate_immz
/*  7678*/            OPC_MoveParent,
/*  7679*/            OPC_RecordChild2, // #1 = $f
/*  7680*/            OPC_CheckType, MVT::i64,
/*  7682*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  7684*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 0, 
                      // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i64:{ *:[i64] }:$cond, (imm:{ *:[i64] })<<P:Predicate_immz>>, SETNE:{ *:[Other] }), (imm:{ *:[i64] })<<P:Predicate_immz>>, i64:{ *:[i64] }:$f) - Complexity = 14
                      // Dst: (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$f, i64:{ *:[i64] }:$cond)
/*  7692*/          /*Scope*/ 23, /*->7716*/
/*  7693*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  7695*/            OPC_MoveParent,
/*  7696*/            OPC_MoveChild1,
/*  7697*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  7700*/            OPC_CheckPredicate, 19, // Predicate_immz
/*  7702*/            OPC_MoveParent,
/*  7703*/            OPC_RecordChild2, // #1 = $f
/*  7704*/            OPC_CheckType, MVT::i64,
/*  7706*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  7708*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SELNEZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 0, 
                      // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i64:{ *:[i64] }:$cond, (imm:{ *:[i64] })<<P:Predicate_immz>>, SETEQ:{ *:[Other] }), (imm:{ *:[i64] })<<P:Predicate_immz>>, i64:{ *:[i64] }:$f) - Complexity = 14
                      // Dst: (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$f, i64:{ *:[i64] }:$cond)
/*  7716*/          0, /*End of Scope*/
/*  7717*/        /*Scope*/ 74, /*->7792*/
/*  7718*/          OPC_CheckChild1Integer, 0, 
/*  7720*/          OPC_CheckType, MVT::i32,
/*  7722*/          OPC_Scope, 33, /*->7757*/ // 2 children in Scope
/*  7724*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  7726*/            OPC_MoveParent,
/*  7727*/            OPC_RecordChild1, // #1 = $T
/*  7728*/            OPC_RecordChild2, // #2 = $F
/*  7729*/            OPC_SwitchType /*2 cases */, 11, MVT::i32,// ->7743
/*  7732*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  7734*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I64_I), 0,
                            MVT::i32, 3/*#Ops*/, 1, 0, 2, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, 0:{ *:[i64] }, SETEQ:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 11
                        // Dst: (MOVZ_I64_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, GPR64:{ *:[i64] }:$lhs, GPR32:{ *:[i32] }:$F)
/*  7743*/            /*SwitchType*/ 11, MVT::i64,// ->7756
/*  7745*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  7747*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I64_I64), 0,
                            MVT::i64, 3/*#Ops*/, 1, 0, 2, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, 0:{ *:[i64] }, SETEQ:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 11
                        // Dst: (MOVZ_I64_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$F)
/*  7756*/            0, // EndSwitchType
/*  7757*/          /*Scope*/ 33, /*->7791*/
/*  7758*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  7760*/            OPC_MoveParent,
/*  7761*/            OPC_RecordChild1, // #1 = $T
/*  7762*/            OPC_RecordChild2, // #2 = $F
/*  7763*/            OPC_SwitchType /*2 cases */, 11, MVT::i32,// ->7777
/*  7766*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  7768*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I64_I), 0,
                            MVT::i32, 3/*#Ops*/, 1, 0, 2, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, 0:{ *:[i64] }, SETNE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 11
                        // Dst: (MOVN_I64_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, GPR64:{ *:[i64] }:$lhs, GPR32:{ *:[i32] }:$F)
/*  7777*/            /*SwitchType*/ 11, MVT::i64,// ->7790
/*  7779*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  7781*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I64_I64), 0,
                            MVT::i64, 3/*#Ops*/, 1, 0, 2, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, 0:{ *:[i64] }, SETNE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 11
                        // Dst: (MOVN_I64_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$F)
/*  7790*/            0, // EndSwitchType
/*  7791*/          0, /*End of Scope*/
/*  7792*/        /*Scope*/ 92|128,2/*348*/, /*->8142*/
/*  7794*/          OPC_RecordChild1, // #1 = $rhs
/*  7795*/          OPC_MoveChild1,
/*  7796*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  7799*/          OPC_Scope, 65, /*->7866*/ // 5 children in Scope
/*  7801*/            OPC_CheckPredicate, 16, // Predicate_immSExt16
/*  7803*/            OPC_MoveParent,
/*  7804*/            OPC_CheckType, MVT::i32,
/*  7806*/            OPC_Scope, 28, /*->7836*/ // 2 children in Scope
/*  7808*/              OPC_CheckChild2CondCode, ISD::SETGE,
/*  7810*/              OPC_MoveParent,
/*  7811*/              OPC_RecordChild1, // #2 = $T
/*  7812*/              OPC_RecordChild2, // #3 = $F
/*  7813*/              OPC_CheckType, MVT::i32,
/*  7815*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  7817*/              OPC_EmitConvertToTarget, 1,
/*  7819*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  7827*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                            MVT::i32, 3/*#Ops*/, 2, 5, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTi64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs), GPR32:{ *:[i32] }:$F)
/*  7836*/            /*Scope*/ 28, /*->7865*/
/*  7837*/              OPC_CheckChild2CondCode, ISD::SETUGE,
/*  7839*/              OPC_MoveParent,
/*  7840*/              OPC_RecordChild1, // #2 = $T
/*  7841*/              OPC_RecordChild2, // #3 = $F
/*  7842*/              OPC_CheckType, MVT::i32,
/*  7844*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  7846*/              OPC_EmitConvertToTarget, 1,
/*  7848*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  7856*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                            MVT::i32, 3/*#Ops*/, 2, 5, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lh, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rh, SETUGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTiu64:{ *:[i32] } GPR64:{ *:[i64] }:$lh, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rh), GPR32:{ *:[i32] }:$F)
/*  7865*/            0, /*End of Scope*/
/*  7866*/          /*Scope*/ 71, /*->7938*/
/*  7867*/            OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/*  7869*/            OPC_MoveParent,
/*  7870*/            OPC_CheckType, MVT::i32,
/*  7872*/            OPC_Scope, 31, /*->7905*/ // 2 children in Scope
/*  7874*/              OPC_CheckChild2CondCode, ISD::SETGT,
/*  7876*/              OPC_MoveParent,
/*  7877*/              OPC_RecordChild1, // #2 = $T
/*  7878*/              OPC_RecordChild2, // #3 = $F
/*  7879*/              OPC_CheckType, MVT::i32,
/*  7881*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  7883*/              OPC_EmitConvertToTarget, 1,
/*  7885*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  7888*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7896*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                            MVT::i32, 3/*#Ops*/, 2, 6, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTi64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (Plus1:{ *:[i64] } (imm:{ *:[i64] }):$rhs)), GPR32:{ *:[i32] }:$F)
/*  7905*/            /*Scope*/ 31, /*->7937*/
/*  7906*/              OPC_CheckChild2CondCode, ISD::SETUGT,
/*  7908*/              OPC_MoveParent,
/*  7909*/              OPC_RecordChild1, // #2 = $T
/*  7910*/              OPC_RecordChild2, // #3 = $F
/*  7911*/              OPC_CheckType, MVT::i32,
/*  7913*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  7915*/              OPC_EmitConvertToTarget, 1,
/*  7917*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  7920*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7928*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                            MVT::i32, 3/*#Ops*/, 2, 6, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTiu64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (Plus1:{ *:[i64] } (imm:{ *:[i64] }):$rhs)), GPR32:{ *:[i32] }:$F)
/*  7937*/            0, /*End of Scope*/
/*  7938*/          /*Scope*/ 65, /*->8004*/
/*  7939*/            OPC_CheckPredicate, 16, // Predicate_immSExt16
/*  7941*/            OPC_MoveParent,
/*  7942*/            OPC_CheckType, MVT::i32,
/*  7944*/            OPC_Scope, 28, /*->7974*/ // 2 children in Scope
/*  7946*/              OPC_CheckChild2CondCode, ISD::SETGE,
/*  7948*/              OPC_MoveParent,
/*  7949*/              OPC_RecordChild1, // #2 = $T
/*  7950*/              OPC_RecordChild2, // #3 = $F
/*  7951*/              OPC_CheckType, MVT::i64,
/*  7953*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  7955*/              OPC_EmitConvertToTarget, 1,
/*  7957*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  7965*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                            MVT::i64, 3/*#Ops*/, 2, 5, 3, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLTi64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs), GPR64:{ *:[i64] }:$F)
/*  7974*/            /*Scope*/ 28, /*->8003*/
/*  7975*/              OPC_CheckChild2CondCode, ISD::SETUGE,
/*  7977*/              OPC_MoveParent,
/*  7978*/              OPC_RecordChild1, // #2 = $T
/*  7979*/              OPC_RecordChild2, // #3 = $F
/*  7980*/              OPC_CheckType, MVT::i64,
/*  7982*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  7984*/              OPC_EmitConvertToTarget, 1,
/*  7986*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  7994*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                            MVT::i64, 3/*#Ops*/, 2, 5, 3, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lh, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rh, SETUGE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLTiu64:{ *:[i32] } GPR64:{ *:[i64] }:$lh, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rh), GPR64:{ *:[i64] }:$F)
/*  8003*/            0, /*End of Scope*/
/*  8004*/          /*Scope*/ 71, /*->8076*/
/*  8005*/            OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/*  8007*/            OPC_MoveParent,
/*  8008*/            OPC_CheckType, MVT::i32,
/*  8010*/            OPC_Scope, 31, /*->8043*/ // 2 children in Scope
/*  8012*/              OPC_CheckChild2CondCode, ISD::SETGT,
/*  8014*/              OPC_MoveParent,
/*  8015*/              OPC_RecordChild1, // #2 = $T
/*  8016*/              OPC_RecordChild2, // #3 = $F
/*  8017*/              OPC_CheckType, MVT::i64,
/*  8019*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8021*/              OPC_EmitConvertToTarget, 1,
/*  8023*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  8026*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  8034*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                            MVT::i64, 3/*#Ops*/, 2, 6, 3, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLTi64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (Plus1:{ *:[i64] } (imm:{ *:[i64] }):$rhs)), GPR64:{ *:[i64] }:$F)
/*  8043*/            /*Scope*/ 31, /*->8075*/
/*  8044*/              OPC_CheckChild2CondCode, ISD::SETUGT,
/*  8046*/              OPC_MoveParent,
/*  8047*/              OPC_RecordChild1, // #2 = $T
/*  8048*/              OPC_RecordChild2, // #3 = $F
/*  8049*/              OPC_CheckType, MVT::i64,
/*  8051*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8053*/              OPC_EmitConvertToTarget, 1,
/*  8055*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  8058*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  8066*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                            MVT::i64, 3/*#Ops*/, 2, 6, 3, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLTiu64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (Plus1:{ *:[i64] } (imm:{ *:[i64] }):$rhs)), GPR64:{ *:[i64] }:$F)
/*  8075*/            0, /*End of Scope*/
/*  8076*/          /*Scope*/ 64, /*->8141*/
/*  8077*/            OPC_CheckPredicate, 18, // Predicate_immZExt16
/*  8079*/            OPC_MoveParent,
/*  8080*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  8082*/            OPC_CheckType, MVT::i32,
/*  8084*/            OPC_MoveParent,
/*  8085*/            OPC_RecordChild1, // #2 = $T
/*  8086*/            OPC_RecordChild2, // #3 = $F
/*  8087*/            OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->8114
/*  8090*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8092*/              OPC_EmitConvertToTarget, 1,
/*  8094*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  8097*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 5,  // Results = #6
/*  8105*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I64_I), 0,
                            MVT::i32, 3/*#Ops*/, 2, 6, 3, 
                        // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immZExt16>><<X:LO16>>:$uimm16, SETEQ:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I64_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (XORi64:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, (LO16:{ *:[i64] } (imm:{ *:[i64] })<<P:Predicate_immZExt16>>:$uimm16)), GPR32:{ *:[i32] }:$F)
/*  8114*/            /*SwitchType*/ 24, MVT::i64,// ->8140
/*  8116*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8118*/              OPC_EmitConvertToTarget, 1,
/*  8120*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  8123*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 5,  // Results = #6
/*  8131*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I64_I64), 0,
                            MVT::i64, 3/*#Ops*/, 2, 6, 3, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immZExt16>><<X:LO16>>:$uimm16, SETEQ:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 10
                        // Dst: (MOVZ_I64_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (XORi64:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, (LO16:{ *:[i64] } (imm:{ *:[i64] })<<P:Predicate_immZExt16>>:$uimm16)), GPR64:{ *:[i64] }:$F)
/*  8140*/            0, // EndSwitchType
/*  8141*/          0, /*End of Scope*/
/*  8142*/        /*Scope*/ 79, /*->8222*/
/*  8143*/          OPC_MoveChild1,
/*  8144*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8147*/          OPC_CheckPredicate, 19, // Predicate_immz
/*  8149*/          OPC_MoveParent,
/*  8150*/          OPC_CheckType, MVT::i32,
/*  8152*/          OPC_Scope, 33, /*->8187*/ // 2 children in Scope
/*  8154*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/*  8156*/            OPC_MoveParent,
/*  8157*/            OPC_RecordChild1, // #1 = $t
/*  8158*/            OPC_RecordChild2, // #2 = $f
/*  8159*/            OPC_CheckType, MVT::i64,
/*  8161*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8163*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 0,  // Results = #3
/*  8171*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                          MVT::i64, 2/*#Ops*/, 2, 0,  // Results = #4
/*  8179*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::OR64), 0,
                          MVT::i64, 2/*#Ops*/, 3, 4, 
                      // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i64:{ *:[i64] }:$cond, (imm:{ *:[i64] })<<P:Predicate_immz>>, SETEQ:{ *:[Other] }), i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$f) - Complexity = 10
                      // Dst: (OR64:{ *:[i64] } (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$cond), (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$f, i64:{ *:[i64] }:$cond))
/*  8187*/          /*Scope*/ 33, /*->8221*/
/*  8188*/            OPC_CheckChild2CondCode, ISD::SETNE,
/*  8190*/            OPC_MoveParent,
/*  8191*/            OPC_RecordChild1, // #1 = $t
/*  8192*/            OPC_RecordChild2, // #2 = $f
/*  8193*/            OPC_CheckType, MVT::i64,
/*  8195*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8197*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 0,  // Results = #3
/*  8205*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 2, 0,  // Results = #4
/*  8213*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::OR64), 0,
                          MVT::i64, 2/*#Ops*/, 3, 4, 
                      // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i64:{ *:[i64] }:$cond, (imm:{ *:[i64] })<<P:Predicate_immz>>, SETNE:{ *:[Other] }), i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$f) - Complexity = 10
                      // Dst: (OR64:{ *:[i64] } (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$cond), (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$f, i64:{ *:[i64] }:$cond))
/*  8221*/          0, /*End of Scope*/
/*  8222*/        /*Scope*/ 56|128,2/*312*/, /*->8536*/
/*  8224*/          OPC_RecordChild1, // #1 = $imm
/*  8225*/          OPC_MoveChild1,
/*  8226*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8229*/          OPC_Scope, 115, /*->8346*/ // 2 children in Scope
/*  8231*/            OPC_CheckPredicate, 20, // Predicate_immZExt16_64
/*  8233*/            OPC_MoveParent,
/*  8234*/            OPC_CheckType, MVT::i32,
/*  8236*/            OPC_Scope, 53, /*->8291*/ // 2 children in Scope
/*  8238*/              OPC_CheckChild2CondCode, ISD::SETEQ,
/*  8240*/              OPC_MoveParent,
/*  8241*/              OPC_RecordChild1, // #2 = $t
/*  8242*/              OPC_RecordChild2, // #3 = $f
/*  8243*/              OPC_CheckType, MVT::i64,
/*  8245*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8247*/              OPC_EmitConvertToTarget, 1,
/*  8249*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 4,  // Results = #5
/*  8257*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                            MVT::i64, 2/*#Ops*/, 2, 5,  // Results = #6
/*  8265*/              OPC_EmitConvertToTarget, 1,
/*  8267*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 7,  // Results = #8
/*  8275*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                            MVT::i64, 2/*#Ops*/, 3, 8,  // Results = #9
/*  8283*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR64), 0,
                            MVT::i64, 2/*#Ops*/, 6, 9, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i64:{ *:[i64] }:$cond, (imm:{ *:[i64] })<<P:Predicate_immZExt16_64>>:$imm, SETEQ:{ *:[Other] }), i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$f) - Complexity = 10
                        // Dst: (OR64:{ *:[i64] } (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$t, (XORi64:{ *:[i64] } i64:{ *:[i64] }:$cond, (imm:{ *:[i64] })<<P:Predicate_immZExt16_64>>:$imm)), (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$f, (XORi64:{ *:[i64] } i64:{ *:[i64] }:$cond, (imm:{ *:[i64] })<<P:Predicate_immZExt16_64>>:$imm)))
/*  8291*/            /*Scope*/ 53, /*->8345*/
/*  8292*/              OPC_CheckChild2CondCode, ISD::SETNE,
/*  8294*/              OPC_MoveParent,
/*  8295*/              OPC_RecordChild1, // #2 = $t
/*  8296*/              OPC_RecordChild2, // #3 = $f
/*  8297*/              OPC_CheckType, MVT::i64,
/*  8299*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8301*/              OPC_EmitConvertToTarget, 1,
/*  8303*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 4,  // Results = #5
/*  8311*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                            MVT::i64, 2/*#Ops*/, 2, 5,  // Results = #6
/*  8319*/              OPC_EmitConvertToTarget, 1,
/*  8321*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 7,  // Results = #8
/*  8329*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                            MVT::i64, 2/*#Ops*/, 3, 8,  // Results = #9
/*  8337*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR64), 0,
                            MVT::i64, 2/*#Ops*/, 6, 9, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i64:{ *:[i64] }:$cond, (imm:{ *:[i64] })<<P:Predicate_immZExt16_64>>:$imm, SETNE:{ *:[Other] }), i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$f) - Complexity = 10
                        // Dst: (OR64:{ *:[i64] } (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$t, (XORi64:{ *:[i64] } i64:{ *:[i64] }:$cond, (imm:{ *:[i64] })<<P:Predicate_immZExt16_64>>:$imm)), (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$f, (XORi64:{ *:[i64] } i64:{ *:[i64] }:$cond, (imm:{ *:[i64] })<<P:Predicate_immZExt16_64>>:$imm)))
/*  8345*/            0, /*End of Scope*/
/*  8346*/          /*Scope*/ 59|128,1/*187*/, /*->8535*/
/*  8348*/            OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/*  8350*/            OPC_MoveParent,
/*  8351*/            OPC_CheckType, MVT::i32,
/*  8353*/            OPC_Scope, 89, /*->8444*/ // 2 children in Scope
/*  8355*/              OPC_CheckChild2CondCode, ISD::SETGT,
/*  8357*/              OPC_MoveParent,
/*  8358*/              OPC_RecordChild1, // #2 = $t
/*  8359*/              OPC_RecordChild2, // #3 = $f
/*  8360*/              OPC_CheckType, MVT::i64,
/*  8362*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8364*/              OPC_EmitInteger, MVT::i64, 0, 
/*  8367*/              OPC_EmitConvertToTarget, 1,
/*  8369*/              OPC_EmitNodeXForm, 2, 5, // Plus1
/*  8372*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 6,  // Results = #7
/*  8380*/              OPC_EmitInteger, MVT::i32, Mips::sub_32,
/*  8383*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::SUBREG_TO_REG), 0,
                            MVT::i64, 3/*#Ops*/, 4, 7, 8,  // Results = #9
/*  8392*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                            MVT::i64, 2/*#Ops*/, 2, 9,  // Results = #10
/*  8400*/              OPC_EmitInteger, MVT::i64, 0, 
/*  8403*/              OPC_EmitConvertToTarget, 1,
/*  8405*/              OPC_EmitNodeXForm, 2, 12, // Plus1
/*  8408*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 13,  // Results = #14
/*  8416*/              OPC_EmitInteger, MVT::i32, Mips::sub_32,
/*  8419*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::SUBREG_TO_REG), 0,
                            MVT::i64, 3/*#Ops*/, 11, 14, 15,  // Results = #16
/*  8428*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                            MVT::i64, 2/*#Ops*/, 3, 16,  // Results = #17
/*  8436*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR64), 0,
                            MVT::i64, 2/*#Ops*/, 10, 17, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i64:{ *:[i64] }:$cond, (imm:{ *:[i64] })<<P:Predicate_immSExt16Plus1>>:$imm, SETGT:{ *:[Other] }), i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$f) - Complexity = 10
                        // Dst: (OR64:{ *:[i64] } (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$t, (SUBREG_TO_REG:{ *:[i64] } 0:{ *:[i64] }, (SLTi64:{ *:[i32] } i64:{ *:[i64] }:$cond, (Plus1:{ *:[i64] } (imm:{ *:[i64] }):$imm)), sub_32:{ *:[i32] })), (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$f, (SUBREG_TO_REG:{ *:[i64] } 0:{ *:[i64] }, (SLTi64:{ *:[i32] } i64:{ *:[i64] }:$cond, (Plus1:{ *:[i64] } (imm:{ *:[i64] }):$imm)), sub_32:{ *:[i32] })))
/*  8444*/            /*Scope*/ 89, /*->8534*/
/*  8445*/              OPC_CheckChild2CondCode, ISD::SETUGT,
/*  8447*/              OPC_MoveParent,
/*  8448*/              OPC_RecordChild1, // #2 = $t
/*  8449*/              OPC_RecordChild2, // #3 = $f
/*  8450*/              OPC_CheckType, MVT::i64,
/*  8452*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8454*/              OPC_EmitInteger, MVT::i64, 0, 
/*  8457*/              OPC_EmitConvertToTarget, 1,
/*  8459*/              OPC_EmitNodeXForm, 2, 5, // Plus1
/*  8462*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 6,  // Results = #7
/*  8470*/              OPC_EmitInteger, MVT::i32, Mips::sub_32,
/*  8473*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::SUBREG_TO_REG), 0,
                            MVT::i64, 3/*#Ops*/, 4, 7, 8,  // Results = #9
/*  8482*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                            MVT::i64, 2/*#Ops*/, 2, 9,  // Results = #10
/*  8490*/              OPC_EmitInteger, MVT::i64, 0, 
/*  8493*/              OPC_EmitConvertToTarget, 1,
/*  8495*/              OPC_EmitNodeXForm, 2, 12, // Plus1
/*  8498*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 13,  // Results = #14
/*  8506*/              OPC_EmitInteger, MVT::i32, Mips::sub_32,
/*  8509*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::SUBREG_TO_REG), 0,
                            MVT::i64, 3/*#Ops*/, 11, 14, 15,  // Results = #16
/*  8518*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                            MVT::i64, 2/*#Ops*/, 3, 16,  // Results = #17
/*  8526*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR64), 0,
                            MVT::i64, 2/*#Ops*/, 10, 17, 
                        // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } i64:{ *:[i64] }:$cond, (imm:{ *:[i64] })<<P:Predicate_immSExt16Plus1>>:$imm, SETUGT:{ *:[Other] }), i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$f) - Complexity = 10
                        // Dst: (OR64:{ *:[i64] } (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$t, (SUBREG_TO_REG:{ *:[i64] } 0:{ *:[i64] }, (SLTiu64:{ *:[i32] } i64:{ *:[i64] }:$cond, (Plus1:{ *:[i64] } (imm:{ *:[i64] }):$imm)), sub_32:{ *:[i32] })), (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$f, (SUBREG_TO_REG:{ *:[i64] } 0:{ *:[i64] }, (SLTiu64:{ *:[i32] } i64:{ *:[i64] }:$cond, (Plus1:{ *:[i64] } (imm:{ *:[i64] }):$imm)), sub_32:{ *:[i32] })))
/*  8534*/            0, /*End of Scope*/
/*  8535*/          0, /*End of Scope*/
/*  8536*/        0, /*End of Scope*/
/*  8537*/      0, /*End of Scope*/
/*  8538*/    /*Scope*/ 17|128,1/*145*/, /*->8685*/
/*  8540*/      OPC_RecordChild0, // #0 = $cond
/*  8541*/      OPC_CheckChild0Type, MVT::i32,
/*  8543*/      OPC_Scope, 20, /*->8565*/ // 6 children in Scope
/*  8545*/        OPC_RecordChild1, // #1 = $t
/*  8546*/        OPC_MoveChild2,
/*  8547*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8550*/        OPC_CheckPredicate, 19, // Predicate_immz
/*  8552*/        OPC_MoveParent,
/*  8553*/        OPC_CheckType, MVT::i32,
/*  8555*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  8557*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SELNEZ), 0,
                      MVT::i32, 2/*#Ops*/, 1, 0, 
                  // Src: (select:{ *:[i32] } i32:{ *:[i32] }:$cond, i32:{ *:[i32] }:$t, (imm:{ *:[i32] })<<P:Predicate_immz>>) - Complexity = 7
                  // Dst: (SELNEZ:{ *:[i32] } i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$cond)
/*  8565*/      /*Scope*/ 20, /*->8586*/
/*  8566*/        OPC_MoveChild1,
/*  8567*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8570*/        OPC_CheckPredicate, 19, // Predicate_immz
/*  8572*/        OPC_MoveParent,
/*  8573*/        OPC_RecordChild2, // #1 = $f
/*  8574*/        OPC_CheckType, MVT::i32,
/*  8576*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  8578*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SELEQZ), 0,
                      MVT::i32, 2/*#Ops*/, 1, 0, 
                  // Src: (select:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, i32:{ *:[i32] }:$f) - Complexity = 7
                  // Dst: (SELEQZ:{ *:[i32] } i32:{ *:[i32] }:$f, i32:{ *:[i32] }:$cond)
/*  8586*/      /*Scope*/ 20, /*->8607*/
/*  8587*/        OPC_RecordChild1, // #1 = $t
/*  8588*/        OPC_MoveChild2,
/*  8589*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8592*/        OPC_CheckPredicate, 19, // Predicate_immz
/*  8594*/        OPC_MoveParent,
/*  8595*/        OPC_CheckType, MVT::i32,
/*  8597*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  8599*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 1, 0, 
                  // Src: (select:{ *:[i32] } i32:{ *:[i32] }:$cond, i32:{ *:[i32] }:$t, (imm:{ *:[i32] })<<P:Predicate_immz>>) - Complexity = 7
                  // Dst: (SELNEZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$cond)
/*  8607*/      /*Scope*/ 20, /*->8628*/
/*  8608*/        OPC_MoveChild1,
/*  8609*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8612*/        OPC_CheckPredicate, 19, // Predicate_immz
/*  8614*/        OPC_MoveParent,
/*  8615*/        OPC_RecordChild2, // #1 = $f
/*  8616*/        OPC_CheckType, MVT::i32,
/*  8618*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  8620*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 1, 0, 
                  // Src: (select:{ *:[i32] } i32:{ *:[i32] }:$cond, (imm:{ *:[i32] })<<P:Predicate_immz>>, i32:{ *:[i32] }:$f) - Complexity = 7
                  // Dst: (SELEQZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$f, i32:{ *:[i32] }:$cond)
/*  8628*/      /*Scope*/ 27, /*->8656*/
/*  8629*/        OPC_RecordChild1, // #1 = $t
/*  8630*/        OPC_MoveChild2,
/*  8631*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8634*/        OPC_CheckPredicate, 19, // Predicate_immz
/*  8636*/        OPC_MoveParent,
/*  8637*/        OPC_CheckType, MVT::i64,
/*  8639*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8641*/        OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                      MVT::i64, 1/*#Ops*/, 0,  // Results = #2
/*  8648*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SELNEZ64), 0,
                      MVT::i64, 2/*#Ops*/, 1, 2, 
                  // Src: (select:{ *:[i64] } i32:{ *:[i32] }:$cond, i64:{ *:[i64] }:$t, (imm:{ *:[i64] })<<P:Predicate_immz>>) - Complexity = 7
                  // Dst: (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$t, (SLL64_32:{ *:[i64] } i32:{ *:[i32] }:$cond))
/*  8656*/      /*Scope*/ 27, /*->8684*/
/*  8657*/        OPC_MoveChild1,
/*  8658*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8661*/        OPC_CheckPredicate, 19, // Predicate_immz
/*  8663*/        OPC_MoveParent,
/*  8664*/        OPC_RecordChild2, // #1 = $f
/*  8665*/        OPC_CheckType, MVT::i64,
/*  8667*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8669*/        OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                      MVT::i64, 1/*#Ops*/, 0,  // Results = #2
/*  8676*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SELEQZ64), 0,
                      MVT::i64, 2/*#Ops*/, 1, 2, 
                  // Src: (select:{ *:[i64] } i32:{ *:[i32] }:$cond, (imm:{ *:[i64] })<<P:Predicate_immz>>, i64:{ *:[i64] }:$f) - Complexity = 7
                  // Dst: (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$f, (SLL64_32:{ *:[i64] } i32:{ *:[i32] }:$cond))
/*  8684*/      0, /*End of Scope*/
/*  8685*/    /*Scope*/ 119|128,8/*1143*/, /*->9830*/
/*  8687*/      OPC_MoveChild0,
/*  8688*/      OPC_CheckOpcode, TARGET_VAL(ISD::SETCC),
/*  8691*/      OPC_RecordChild0, // #0 = $lhs
/*  8692*/      OPC_CheckType, MVT::i32,
/*  8694*/      OPC_Scope, 41|128,6/*809*/, /*->9506*/ // 2 children in Scope
/*  8697*/        OPC_CheckChild0Type, MVT::i32,
/*  8699*/        OPC_RecordChild1, // #1 = $rhs
/*  8700*/        OPC_Scope, 26, /*->8728*/ // 31 children in Scope
/*  8702*/          OPC_CheckChild2CondCode, ISD::SETGE,
/*  8704*/          OPC_MoveParent,
/*  8705*/          OPC_RecordChild1, // #2 = $T
/*  8706*/          OPC_RecordChild2, // #3 = $F
/*  8707*/          OPC_CheckType, MVT::i32,
/*  8709*/          OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8711*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  8719*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLT:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  8728*/        /*Scope*/ 26, /*->8755*/
/*  8729*/          OPC_CheckChild2CondCode, ISD::SETUGE,
/*  8731*/          OPC_MoveParent,
/*  8732*/          OPC_RecordChild1, // #2 = $T
/*  8733*/          OPC_RecordChild2, // #3 = $F
/*  8734*/          OPC_CheckType, MVT::i32,
/*  8736*/          OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8738*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  8746*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  8755*/        /*Scope*/ 26, /*->8782*/
/*  8756*/          OPC_CheckChild2CondCode, ISD::SETLE,
/*  8758*/          OPC_MoveParent,
/*  8759*/          OPC_RecordChild1, // #2 = $T
/*  8760*/          OPC_RecordChild2, // #3 = $F
/*  8761*/          OPC_CheckType, MVT::i32,
/*  8763*/          OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8765*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  8773*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETLE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLT:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), GPR32:{ *:[i32] }:$F)
/*  8782*/        /*Scope*/ 26, /*->8809*/
/*  8783*/          OPC_CheckChild2CondCode, ISD::SETULE,
/*  8785*/          OPC_MoveParent,
/*  8786*/          OPC_RecordChild1, // #2 = $T
/*  8787*/          OPC_RecordChild2, // #3 = $F
/*  8788*/          OPC_CheckType, MVT::i32,
/*  8790*/          OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8792*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  8800*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETULE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTu:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), GPR32:{ *:[i32] }:$F)
/*  8809*/        /*Scope*/ 26, /*->8836*/
/*  8810*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/*  8812*/          OPC_MoveParent,
/*  8813*/          OPC_RecordChild1, // #2 = $T
/*  8814*/          OPC_RecordChild2, // #3 = $F
/*  8815*/          OPC_CheckType, MVT::i32,
/*  8817*/          OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8819*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  8827*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETEQ:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (XOR:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  8836*/        /*Scope*/ 26, /*->8863*/
/*  8837*/          OPC_CheckChild2CondCode, ISD::SETGE,
/*  8839*/          OPC_MoveParent,
/*  8840*/          OPC_RecordChild1, // #2 = $T
/*  8841*/          OPC_RecordChild2, // #3 = $F
/*  8842*/          OPC_CheckType, MVT::i64,
/*  8844*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8846*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  8854*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                        MVT::i64, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLT:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR64:{ *:[i64] }:$F)
/*  8863*/        /*Scope*/ 26, /*->8890*/
/*  8864*/          OPC_CheckChild2CondCode, ISD::SETUGE,
/*  8866*/          OPC_MoveParent,
/*  8867*/          OPC_RecordChild1, // #2 = $T
/*  8868*/          OPC_RecordChild2, // #3 = $F
/*  8869*/          OPC_CheckType, MVT::i64,
/*  8871*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8873*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  8881*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                        MVT::i64, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLTu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR64:{ *:[i64] }:$F)
/*  8890*/        /*Scope*/ 26, /*->8917*/
/*  8891*/          OPC_CheckChild2CondCode, ISD::SETLE,
/*  8893*/          OPC_MoveParent,
/*  8894*/          OPC_RecordChild1, // #2 = $T
/*  8895*/          OPC_RecordChild2, // #3 = $F
/*  8896*/          OPC_CheckType, MVT::i64,
/*  8898*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8900*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  8908*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                        MVT::i64, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETLE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLT:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), GPR64:{ *:[i64] }:$F)
/*  8917*/        /*Scope*/ 26, /*->8944*/
/*  8918*/          OPC_CheckChild2CondCode, ISD::SETULE,
/*  8920*/          OPC_MoveParent,
/*  8921*/          OPC_RecordChild1, // #2 = $T
/*  8922*/          OPC_RecordChild2, // #3 = $F
/*  8923*/          OPC_CheckType, MVT::i64,
/*  8925*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8927*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  8935*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                        MVT::i64, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETULE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLTu:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), GPR64:{ *:[i64] }:$F)
/*  8944*/        /*Scope*/ 26, /*->8971*/
/*  8945*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/*  8947*/          OPC_MoveParent,
/*  8948*/          OPC_RecordChild1, // #2 = $T
/*  8949*/          OPC_RecordChild2, // #3 = $F
/*  8950*/          OPC_CheckType, MVT::i64,
/*  8952*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8954*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  8962*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                        MVT::i64, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETEQ:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (XOR:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR64:{ *:[i64] }:$F)
/*  8971*/        /*Scope*/ 49, /*->9021*/
/*  8972*/          OPC_CheckChild2CondCode, ISD::SETNE,
/*  8974*/          OPC_MoveParent,
/*  8975*/          OPC_RecordChild1, // #2 = $T
/*  8976*/          OPC_RecordChild2, // #3 = $F
/*  8977*/          OPC_SwitchType /*2 cases */, 19, MVT::i32,// ->8999
/*  8980*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8982*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  8990*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_I), 0,
                          MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETNE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                      // Dst: (MOVN_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (XOR:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  8999*/          /*SwitchType*/ 19, MVT::i64,// ->9020
/*  9001*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9003*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9011*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_I64), 0,
                          MVT::i64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETNE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 6
                      // Dst: (MOVN_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (XOR:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR64:{ *:[i64] }:$F)
/*  9020*/          0, // EndSwitchType
/*  9021*/        /*Scope*/ 26, /*->9048*/
/*  9022*/          OPC_CheckChild2CondCode, ISD::SETGE,
/*  9024*/          OPC_MoveParent,
/*  9025*/          OPC_RecordChild1, // #2 = $T
/*  9026*/          OPC_RecordChild2, // #3 = $F
/*  9027*/          OPC_CheckType, MVT::i32,
/*  9029*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9031*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9039*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLT_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  9048*/        /*Scope*/ 26, /*->9075*/
/*  9049*/          OPC_CheckChild2CondCode, ISD::SETUGE,
/*  9051*/          OPC_MoveParent,
/*  9052*/          OPC_RecordChild1, // #2 = $T
/*  9053*/          OPC_RecordChild2, // #3 = $F
/*  9054*/          OPC_CheckType, MVT::i32,
/*  9056*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9058*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9066*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  9075*/        /*Scope*/ 26, /*->9102*/
/*  9076*/          OPC_CheckChild2CondCode, ISD::SETLE,
/*  9078*/          OPC_MoveParent,
/*  9079*/          OPC_RecordChild1, // #2 = $T
/*  9080*/          OPC_RecordChild2, // #3 = $F
/*  9081*/          OPC_CheckType, MVT::i32,
/*  9083*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9085*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9093*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETLE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLT_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), GPR32:{ *:[i32] }:$F)
/*  9102*/        /*Scope*/ 26, /*->9129*/
/*  9103*/          OPC_CheckChild2CondCode, ISD::SETULE,
/*  9105*/          OPC_MoveParent,
/*  9106*/          OPC_RecordChild1, // #2 = $T
/*  9107*/          OPC_RecordChild2, // #3 = $F
/*  9108*/          OPC_CheckType, MVT::i32,
/*  9110*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9112*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9120*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETULE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), GPR32:{ *:[i32] }:$F)
/*  9129*/        /*Scope*/ 26, /*->9156*/
/*  9130*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/*  9132*/          OPC_MoveParent,
/*  9133*/          OPC_RecordChild1, // #2 = $T
/*  9134*/          OPC_RecordChild2, // #3 = $F
/*  9135*/          OPC_CheckType, MVT::i32,
/*  9137*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9139*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9147*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETEQ:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (XOR_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  9156*/        /*Scope*/ 26, /*->9183*/
/*  9157*/          OPC_CheckChild2CondCode, ISD::SETNE,
/*  9159*/          OPC_MoveParent,
/*  9160*/          OPC_RecordChild1, // #2 = $T
/*  9161*/          OPC_RecordChild2, // #3 = $F
/*  9162*/          OPC_CheckType, MVT::i32,
/*  9164*/          OPC_CheckPatternPredicate, 35, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9166*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9174*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_MM), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETNE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVN_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (XOR_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  9183*/        /*Scope*/ 26, /*->9210*/
/*  9184*/          OPC_CheckChild2CondCode, ISD::SETGE,
/*  9186*/          OPC_MoveParent,
/*  9187*/          OPC_RecordChild1, // #2 = $T
/*  9188*/          OPC_RecordChild2, // #3 = $F
/*  9189*/          OPC_CheckType, MVT::i32,
/*  9191*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9193*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9201*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLT_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  9210*/        /*Scope*/ 26, /*->9237*/
/*  9211*/          OPC_CheckChild2CondCode, ISD::SETUGE,
/*  9213*/          OPC_MoveParent,
/*  9214*/          OPC_RecordChild1, // #2 = $T
/*  9215*/          OPC_RecordChild2, // #3 = $F
/*  9216*/          OPC_CheckType, MVT::i32,
/*  9218*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9220*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9228*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  9237*/        /*Scope*/ 26, /*->9264*/
/*  9238*/          OPC_CheckChild2CondCode, ISD::SETLE,
/*  9240*/          OPC_MoveParent,
/*  9241*/          OPC_RecordChild1, // #2 = $T
/*  9242*/          OPC_RecordChild2, // #3 = $F
/*  9243*/          OPC_CheckType, MVT::i32,
/*  9245*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9247*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9255*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETLE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLT_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), GPR32:{ *:[i32] }:$F)
/*  9264*/        /*Scope*/ 26, /*->9291*/
/*  9265*/          OPC_CheckChild2CondCode, ISD::SETULE,
/*  9267*/          OPC_MoveParent,
/*  9268*/          OPC_RecordChild1, // #2 = $T
/*  9269*/          OPC_RecordChild2, // #3 = $F
/*  9270*/          OPC_CheckType, MVT::i32,
/*  9272*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9274*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9282*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETULE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), GPR32:{ *:[i32] }:$F)
/*  9291*/        /*Scope*/ 26, /*->9318*/
/*  9292*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/*  9294*/          OPC_MoveParent,
/*  9295*/          OPC_RecordChild1, // #2 = $T
/*  9296*/          OPC_RecordChild2, // #3 = $F
/*  9297*/          OPC_CheckType, MVT::i32,
/*  9299*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9301*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9309*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_MM), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETEQ:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (XOR_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  9318*/        /*Scope*/ 26, /*->9345*/
/*  9319*/          OPC_CheckChild2CondCode, ISD::SETNE,
/*  9321*/          OPC_MoveParent,
/*  9322*/          OPC_RecordChild1, // #2 = $T
/*  9323*/          OPC_RecordChild2, // #3 = $F
/*  9324*/          OPC_CheckType, MVT::i32,
/*  9326*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9328*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9336*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_MM), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETNE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVN_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, (XOR_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  9345*/        /*Scope*/ 19, /*->9365*/
/*  9346*/          OPC_CheckChild2CondCode, ISD::SETGE,
/*  9348*/          OPC_MoveParent,
/*  9349*/          OPC_RecordChild1, // #2 = $x
/*  9350*/          OPC_RecordChild2, // #3 = $y
/*  9351*/          OPC_CheckType, MVT::i32,
/*  9353*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9355*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SelTBteqZSlt), 0,
                        MVT::i32, 4/*#Ops*/, 2, 3, 0, 1, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$a, CPU16Regs:{ *:[i32] }:$b, SETGE:{ *:[Other] }), CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y) - Complexity = 6
                    // Dst: (SelTBteqZSlt:{ *:[i32] } CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y, CPU16Regs:{ *:[i32] }:$a, CPU16Regs:{ *:[i32] }:$b)
/*  9365*/        /*Scope*/ 19, /*->9385*/
/*  9366*/          OPC_CheckChild2CondCode, ISD::SETGT,
/*  9368*/          OPC_MoveParent,
/*  9369*/          OPC_RecordChild1, // #2 = $x
/*  9370*/          OPC_RecordChild2, // #3 = $y
/*  9371*/          OPC_CheckType, MVT::i32,
/*  9373*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9375*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SelTBtneZSlt), 0,
                        MVT::i32, 4/*#Ops*/, 2, 3, 1, 0, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$a, CPU16Regs:{ *:[i32] }:$b, SETGT:{ *:[Other] }), CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y) - Complexity = 6
                    // Dst: (SelTBtneZSlt:{ *:[i32] } CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y, CPU16Regs:{ *:[i32] }:$b, CPU16Regs:{ *:[i32] }:$a)
/*  9385*/        /*Scope*/ 19, /*->9405*/
/*  9386*/          OPC_CheckChild2CondCode, ISD::SETUGE,
/*  9388*/          OPC_MoveParent,
/*  9389*/          OPC_RecordChild1, // #2 = $x
/*  9390*/          OPC_RecordChild2, // #3 = $y
/*  9391*/          OPC_CheckType, MVT::i32,
/*  9393*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9395*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SelTBteqZSltu), 0,
                        MVT::i32, 4/*#Ops*/, 2, 3, 0, 1, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$a, CPU16Regs:{ *:[i32] }:$b, SETUGE:{ *:[Other] }), CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y) - Complexity = 6
                    // Dst: (SelTBteqZSltu:{ *:[i32] } CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y, CPU16Regs:{ *:[i32] }:$a, CPU16Regs:{ *:[i32] }:$b)
/*  9405*/        /*Scope*/ 19, /*->9425*/
/*  9406*/          OPC_CheckChild2CondCode, ISD::SETUGT,
/*  9408*/          OPC_MoveParent,
/*  9409*/          OPC_RecordChild1, // #2 = $x
/*  9410*/          OPC_RecordChild2, // #3 = $y
/*  9411*/          OPC_CheckType, MVT::i32,
/*  9413*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9415*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SelTBtneZSltu), 0,
                        MVT::i32, 4/*#Ops*/, 2, 3, 1, 0, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$a, CPU16Regs:{ *:[i32] }:$b, SETUGT:{ *:[Other] }), CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y) - Complexity = 6
                    // Dst: (SelTBtneZSltu:{ *:[i32] } CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y, CPU16Regs:{ *:[i32] }:$b, CPU16Regs:{ *:[i32] }:$a)
/*  9425*/        /*Scope*/ 19, /*->9445*/
/*  9426*/          OPC_CheckChild2CondCode, ISD::SETLE,
/*  9428*/          OPC_MoveParent,
/*  9429*/          OPC_RecordChild1, // #2 = $x
/*  9430*/          OPC_RecordChild2, // #3 = $y
/*  9431*/          OPC_CheckType, MVT::i32,
/*  9433*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9435*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SelTBteqZSlt), 0,
                        MVT::i32, 4/*#Ops*/, 2, 3, 1, 0, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$a, CPU16Regs:{ *:[i32] }:$b, SETLE:{ *:[Other] }), CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y) - Complexity = 6
                    // Dst: (SelTBteqZSlt:{ *:[i32] } CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y, CPU16Regs:{ *:[i32] }:$b, CPU16Regs:{ *:[i32] }:$a)
/*  9445*/        /*Scope*/ 19, /*->9465*/
/*  9446*/          OPC_CheckChild2CondCode, ISD::SETULE,
/*  9448*/          OPC_MoveParent,
/*  9449*/          OPC_RecordChild1, // #2 = $x
/*  9450*/          OPC_RecordChild2, // #3 = $y
/*  9451*/          OPC_CheckType, MVT::i32,
/*  9453*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9455*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SelTBteqZSltu), 0,
                        MVT::i32, 4/*#Ops*/, 2, 3, 1, 0, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$a, CPU16Regs:{ *:[i32] }:$b, SETULE:{ *:[Other] }), CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y) - Complexity = 6
                    // Dst: (SelTBteqZSltu:{ *:[i32] } CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y, CPU16Regs:{ *:[i32] }:$b, CPU16Regs:{ *:[i32] }:$a)
/*  9465*/        /*Scope*/ 19, /*->9485*/
/*  9466*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/*  9468*/          OPC_MoveParent,
/*  9469*/          OPC_RecordChild1, // #2 = $x
/*  9470*/          OPC_RecordChild2, // #3 = $y
/*  9471*/          OPC_CheckType, MVT::i32,
/*  9473*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9475*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SelTBteqZCmp), 0,
                        MVT::i32, 4/*#Ops*/, 2, 3, 1, 0, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$a, CPU16Regs:{ *:[i32] }:$b, SETEQ:{ *:[Other] }), CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y) - Complexity = 6
                    // Dst: (SelTBteqZCmp:{ *:[i32] } CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y, CPU16Regs:{ *:[i32] }:$b, CPU16Regs:{ *:[i32] }:$a)
/*  9485*/        /*Scope*/ 19, /*->9505*/
/*  9486*/          OPC_CheckChild2CondCode, ISD::SETNE,
/*  9488*/          OPC_MoveParent,
/*  9489*/          OPC_RecordChild1, // #2 = $x
/*  9490*/          OPC_RecordChild2, // #3 = $y
/*  9491*/          OPC_CheckType, MVT::i32,
/*  9493*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9495*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SelTBtneZCmp), 0,
                        MVT::i32, 4/*#Ops*/, 2, 3, 1, 0, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$a, CPU16Regs:{ *:[i32] }:$b, SETNE:{ *:[Other] }), CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y) - Complexity = 6
                    // Dst: (SelTBtneZCmp:{ *:[i32] } CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y, CPU16Regs:{ *:[i32] }:$b, CPU16Regs:{ *:[i32] }:$a)
/*  9505*/        0, /*End of Scope*/
/*  9506*/      /*Scope*/ 65|128,2/*321*/, /*->9829*/
/*  9508*/        OPC_CheckChild0Type, MVT::i64,
/*  9510*/        OPC_RecordChild1, // #1 = $rhs
/*  9511*/        OPC_Scope, 26, /*->9539*/ // 10 children in Scope
/*  9513*/          OPC_CheckChild2CondCode, ISD::SETGE,
/*  9515*/          OPC_MoveParent,
/*  9516*/          OPC_RecordChild1, // #2 = $T
/*  9517*/          OPC_RecordChild2, // #3 = $F
/*  9518*/          OPC_CheckType, MVT::i32,
/*  9520*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9522*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9530*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLT64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  9539*/        /*Scope*/ 26, /*->9566*/
/*  9540*/          OPC_CheckChild2CondCode, ISD::SETUGE,
/*  9542*/          OPC_MoveParent,
/*  9543*/          OPC_RecordChild1, // #2 = $T
/*  9544*/          OPC_RecordChild2, // #3 = $F
/*  9545*/          OPC_CheckType, MVT::i32,
/*  9547*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9549*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9557*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETUGE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTu64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  9566*/        /*Scope*/ 26, /*->9593*/
/*  9567*/          OPC_CheckChild2CondCode, ISD::SETLE,
/*  9569*/          OPC_MoveParent,
/*  9570*/          OPC_RecordChild1, // #2 = $T
/*  9571*/          OPC_RecordChild2, // #3 = $F
/*  9572*/          OPC_CheckType, MVT::i32,
/*  9574*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9576*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9584*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETLE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLT64:{ *:[i32] } GPR64:{ *:[i64] }:$rhs, GPR64:{ *:[i64] }:$lhs), GPR32:{ *:[i32] }:$F)
/*  9593*/        /*Scope*/ 26, /*->9620*/
/*  9594*/          OPC_CheckChild2CondCode, ISD::SETULE,
/*  9596*/          OPC_MoveParent,
/*  9597*/          OPC_RecordChild1, // #2 = $T
/*  9598*/          OPC_RecordChild2, // #3 = $F
/*  9599*/          OPC_CheckType, MVT::i32,
/*  9601*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9603*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9611*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I), 0,
                        MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETULE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (SLTu64:{ *:[i32] } GPR64:{ *:[i64] }:$rhs, GPR64:{ *:[i64] }:$lhs), GPR32:{ *:[i32] }:$F)
/*  9620*/        /*Scope*/ 26, /*->9647*/
/*  9621*/          OPC_CheckChild2CondCode, ISD::SETGE,
/*  9623*/          OPC_MoveParent,
/*  9624*/          OPC_RecordChild1, // #2 = $T
/*  9625*/          OPC_RecordChild2, // #3 = $F
/*  9626*/          OPC_CheckType, MVT::i64,
/*  9628*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9630*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9638*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                        MVT::i64, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETGE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLT64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), GPR64:{ *:[i64] }:$F)
/*  9647*/        /*Scope*/ 26, /*->9674*/
/*  9648*/          OPC_CheckChild2CondCode, ISD::SETUGE,
/*  9650*/          OPC_MoveParent,
/*  9651*/          OPC_RecordChild1, // #2 = $T
/*  9652*/          OPC_RecordChild2, // #3 = $F
/*  9653*/          OPC_CheckType, MVT::i64,
/*  9655*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9657*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9665*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                        MVT::i64, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETUGE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLTu64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), GPR64:{ *:[i64] }:$F)
/*  9674*/        /*Scope*/ 26, /*->9701*/
/*  9675*/          OPC_CheckChild2CondCode, ISD::SETLE,
/*  9677*/          OPC_MoveParent,
/*  9678*/          OPC_RecordChild1, // #2 = $T
/*  9679*/          OPC_RecordChild2, // #3 = $F
/*  9680*/          OPC_CheckType, MVT::i64,
/*  9682*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9684*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9692*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                        MVT::i64, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETLE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLT64:{ *:[i32] } GPR64:{ *:[i64] }:$rhs, GPR64:{ *:[i64] }:$lhs), GPR64:{ *:[i64] }:$F)
/*  9701*/        /*Scope*/ 26, /*->9728*/
/*  9702*/          OPC_CheckChild2CondCode, ISD::SETULE,
/*  9704*/          OPC_MoveParent,
/*  9705*/          OPC_RecordChild1, // #2 = $T
/*  9706*/          OPC_RecordChild2, // #3 = $F
/*  9707*/          OPC_CheckType, MVT::i64,
/*  9709*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9711*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9719*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_I64), 0,
                        MVT::i64, 3/*#Ops*/, 2, 4, 3, 
                    // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETULE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 6
                    // Dst: (MOVZ_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (SLTu64:{ *:[i32] } GPR64:{ *:[i64] }:$rhs, GPR64:{ *:[i64] }:$lhs), GPR64:{ *:[i64] }:$F)
/*  9728*/        /*Scope*/ 49, /*->9778*/
/*  9729*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/*  9731*/          OPC_MoveParent,
/*  9732*/          OPC_RecordChild1, // #2 = $T
/*  9733*/          OPC_RecordChild2, // #3 = $F
/*  9734*/          OPC_SwitchType /*2 cases */, 19, MVT::i32,// ->9756
/*  9737*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9739*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9747*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I64_I), 0,
                          MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETEQ:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I64_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (XOR64:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  9756*/          /*SwitchType*/ 19, MVT::i64,// ->9777
/*  9758*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9760*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9768*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I64_I64), 0,
                          MVT::i64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETEQ:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I64_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (XOR64:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), GPR64:{ *:[i64] }:$F)
/*  9777*/          0, // EndSwitchType
/*  9778*/        /*Scope*/ 49, /*->9828*/
/*  9779*/          OPC_CheckChild2CondCode, ISD::SETNE,
/*  9781*/          OPC_MoveParent,
/*  9782*/          OPC_RecordChild1, // #2 = $T
/*  9783*/          OPC_RecordChild2, // #3 = $F
/*  9784*/          OPC_SwitchType /*2 cases */, 19, MVT::i32,// ->9806
/*  9787*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9789*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9797*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I64_I), 0,
                          MVT::i32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[i32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETNE:{ *:[Other] }), GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 6
                      // Dst: (MOVN_I64_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, (XOR64:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), GPR32:{ *:[i32] }:$F)
/*  9806*/          /*SwitchType*/ 19, MVT::i64,// ->9827
/*  9808*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9810*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9818*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I64_I64), 0,
                          MVT::i64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[i64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETNE:{ *:[Other] }), GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 6
                      // Dst: (MOVN_I64_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, (XOR64:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), GPR64:{ *:[i64] }:$F)
/*  9827*/          0, // EndSwitchType
/*  9828*/        0, /*End of Scope*/
/*  9829*/      0, /*End of Scope*/
/*  9830*/    /*Scope*/ 5|128,2/*261*/, /*->10093*/
/*  9832*/      OPC_RecordChild0, // #0 = $cond
/*  9833*/      OPC_Scope, 65|128,1/*193*/, /*->10029*/ // 2 children in Scope
/*  9836*/        OPC_CheckChild0Type, MVT::i32,
/*  9838*/        OPC_RecordChild1, // #1 = $T
/*  9839*/        OPC_RecordChild2, // #2 = $F
/*  9840*/        OPC_SwitchType /*2 cases */, 116, MVT::i32,// ->9959
/*  9843*/          OPC_Scope, 11, /*->9856*/ // 7 children in Scope
/*  9845*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9847*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_I), 0,
                          MVT::i32, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[i32] } GPR32:{ *:[i32] }:$cond, GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 3
                      // Dst: (MOVN_I_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$cond, GPR32:{ *:[i32] }:$F)
/*  9856*/          /*Scope*/ 11, /*->9868*/
/*  9857*/            OPC_CheckPatternPredicate, 35, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9859*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_MM), 0,
                          MVT::i32, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[i32] } GPR32:{ *:[i32] }:$cond, GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 3
                      // Dst: (MOVN_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$cond, GPR32:{ *:[i32] }:$F)
/*  9868*/          /*Scope*/ 11, /*->9880*/
/*  9869*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9871*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_MM), 0,
                          MVT::i32, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[i32] } GPR32:{ *:[i32] }:$cond, GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 3
                      // Dst: (MOVN_I_MM:{ *:[i32] } GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$cond, GPR32:{ *:[i32] }:$F)
/*  9880*/          /*Scope*/ 26, /*->9907*/
/*  9881*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  9883*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #3
/*  9891*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ), 0,
                          MVT::i32, 2/*#Ops*/, 2, 0,  // Results = #4
/*  9899*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::OR), 0,
                          MVT::i32, 2/*#Ops*/, 3, 4, 
                      // Src: (select:{ *:[i32] } i32:{ *:[i32] }:$cond, i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$f) - Complexity = 3
                      // Dst: (OR:{ *:[i32] } (SELNEZ:{ *:[i32] } i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$cond), (SELEQZ:{ *:[i32] } i32:{ *:[i32] }:$f, i32:{ *:[i32] }:$cond))
/*  9907*/          /*Scope*/ 26, /*->9934*/
/*  9908*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  9910*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #3
/*  9918*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 2, 0,  // Results = #4
/*  9926*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::OR_MM), 0,
                          MVT::i32, 2/*#Ops*/, 3, 4, 
                      // Src: (select:{ *:[i32] } i32:{ *:[i32] }:$cond, i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$f) - Complexity = 3
                      // Dst: (OR_MM:{ *:[i32] } (SELNEZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$t, i32:{ *:[i32] }:$cond), (SELEQZ_MMR6:{ *:[i32] } i32:{ *:[i32] }:$f, i32:{ *:[i32] }:$cond))
/*  9934*/          /*Scope*/ 11, /*->9946*/
/*  9935*/            OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/*  9937*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSELECT_I), 0,
                          MVT::i32, 3/*#Ops*/, 0, 1, 2, 
                      // Src: (select:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$cond, GPR32Opnd:{ *:[i32] }:$T, GPR32Opnd:{ *:[i32] }:$F) - Complexity = 3
                      // Dst: (PseudoSELECT_I:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$cond, GPR32Opnd:{ *:[i32] }:$T, GPR32Opnd:{ *:[i32] }:$F)
/*  9946*/          /*Scope*/ 11, /*->9958*/
/*  9947*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9949*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SelBneZ), 0,
                          MVT::i32, 3/*#Ops*/, 1, 2, 0, 
                      // Src: (select:{ *:[i32] } CPU16Regs:{ *:[i32] }:$a, CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y) - Complexity = 3
                      // Dst: (SelBneZ:{ *:[i32] } CPU16Regs:{ *:[i32] }:$x, CPU16Regs:{ *:[i32] }:$y, CPU16Regs:{ *:[i32] }:$a)
/*  9958*/          0, /*End of Scope*/
/*  9959*/        /*SwitchType*/ 67, MVT::i64,// ->10028
/*  9961*/          OPC_Scope, 11, /*->9974*/ // 3 children in Scope
/*  9963*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9965*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_I64), 0,
                          MVT::i64, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[i64] } GPR32:{ *:[i32] }:$cond, GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 3
                      // Dst: (MOVN_I_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, GPR32:{ *:[i32] }:$cond, GPR64:{ *:[i64] }:$F)
/*  9974*/          /*Scope*/ 40, /*->10015*/
/*  9975*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  9977*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #3
/*  9984*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 3,  // Results = #4
/*  9992*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #5
/*  9999*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 2, 5,  // Results = #6
/* 10007*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::OR64), 0,
                          MVT::i64, 2/*#Ops*/, 4, 6, 
                      // Src: (select:{ *:[i64] } i32:{ *:[i32] }:$cond, i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$f) - Complexity = 3
                      // Dst: (OR64:{ *:[i64] } (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$t, (SLL64_32:{ *:[i64] } i32:{ *:[i32] }:$cond)), (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$f, (SLL64_32:{ *:[i64] } i32:{ *:[i32] }:$cond)))
/* 10015*/          /*Scope*/ 11, /*->10027*/
/* 10016*/            OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 10018*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSELECT_I64), 0,
                          MVT::i64, 3/*#Ops*/, 0, 1, 2, 
                      // Src: (select:{ *:[i64] } GPR32Opnd:{ *:[i32] }:$cond, GPR64Opnd:{ *:[i64] }:$T, GPR64Opnd:{ *:[i64] }:$F) - Complexity = 3
                      // Dst: (PseudoSELECT_I64:{ *:[i64] } GPR32Opnd:{ *:[i32] }:$cond, GPR64Opnd:{ *:[i64] }:$T, GPR64Opnd:{ *:[i64] }:$F)
/* 10027*/          0, /*End of Scope*/
/* 10028*/        0, // EndSwitchType
/* 10029*/      /*Scope*/ 62, /*->10092*/
/* 10030*/        OPC_CheckChild0Type, MVT::i64,
/* 10032*/        OPC_RecordChild1, // #1 = $T
/* 10033*/        OPC_RecordChild2, // #2 = $F
/* 10034*/        OPC_SwitchType /*2 cases */, 11, MVT::i32,// ->10048
/* 10037*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10039*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I64_I), 0,
                        MVT::i32, 3/*#Ops*/, 1, 0, 2, 
                    // Src: (select:{ *:[i32] } GPR64:{ *:[i64] }:$cond, GPR32:{ *:[i32] }:$T, GPR32:{ *:[i32] }:$F) - Complexity = 3
                    // Dst: (MOVN_I64_I:{ *:[i32] } GPR32:{ *:[i32] }:$T, GPR64:{ *:[i64] }:$cond, GPR32:{ *:[i32] }:$F)
/* 10048*/        /*SwitchType*/ 41, MVT::i64,// ->10091
/* 10050*/          OPC_Scope, 11, /*->10063*/ // 2 children in Scope
/* 10052*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10054*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I64_I64), 0,
                          MVT::i64, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[i64] } GPR64:{ *:[i64] }:$cond, GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$F) - Complexity = 3
                      // Dst: (MOVN_I64_I64:{ *:[i64] } GPR64:{ *:[i64] }:$T, GPR64:{ *:[i64] }:$cond, GPR64:{ *:[i64] }:$F)
/* 10063*/          /*Scope*/ 26, /*->10090*/
/* 10064*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 10066*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 0,  // Results = #3
/* 10074*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 2, 0,  // Results = #4
/* 10082*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::OR64), 0,
                          MVT::i64, 2/*#Ops*/, 3, 4, 
                      // Src: (select:{ *:[i64] } i64:{ *:[i64] }:$cond, i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$f) - Complexity = 3
                      // Dst: (OR64:{ *:[i64] } (SELNEZ64:{ *:[i64] } i64:{ *:[i64] }:$t, i64:{ *:[i64] }:$cond), (SELEQZ64:{ *:[i64] } i64:{ *:[i64] }:$f, i64:{ *:[i64] }:$cond))
/* 10090*/          0, /*End of Scope*/
/* 10091*/        0, // EndSwitchType
/* 10092*/      0, /*End of Scope*/
/* 10093*/    /*Scope*/ 78|128,19/*2510*/, /*->12605*/
/* 10095*/      OPC_MoveChild0,
/* 10096*/      OPC_CheckOpcode, TARGET_VAL(ISD::SETCC),
/* 10099*/      OPC_RecordChild0, // #0 = $lhs
/* 10100*/      OPC_Scope, 111|128,13/*1775*/, /*->11878*/ // 2 children in Scope
/* 10103*/        OPC_CheckChild0Type, MVT::i32,
/* 10105*/        OPC_Scope, 68|128,1/*196*/, /*->10304*/ // 2 children in Scope
/* 10108*/          OPC_CheckChild1Integer, 0, 
/* 10110*/          OPC_CheckType, MVT::i32,
/* 10112*/          OPC_Scope, 18, /*->10132*/ // 10 children in Scope
/* 10114*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 10116*/            OPC_MoveParent,
/* 10117*/            OPC_RecordChild1, // #1 = $T
/* 10118*/            OPC_RecordChild2, // #2 = $F
/* 10119*/            OPC_CheckType, MVT::f32,
/* 10121*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10123*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                          MVT::f32, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETEQ:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 11
                      // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, GPR32:{ *:[i32] }:$lhs, FGR32:{ *:[f32] }:$F)
/* 10132*/          /*Scope*/ 18, /*->10151*/
/* 10133*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 10135*/            OPC_MoveParent,
/* 10136*/            OPC_RecordChild1, // #1 = $T
/* 10137*/            OPC_RecordChild2, // #2 = $F
/* 10138*/            OPC_CheckType, MVT::f32,
/* 10140*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10142*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_S), 0,
                          MVT::f32, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETNE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 11
                      // Dst: (MOVN_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, GPR32:{ *:[i32] }:$lhs, FGR32:{ *:[f32] }:$F)
/* 10151*/          /*Scope*/ 18, /*->10170*/
/* 10152*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 10154*/            OPC_MoveParent,
/* 10155*/            OPC_RecordChild1, // #1 = $T
/* 10156*/            OPC_RecordChild2, // #2 = $F
/* 10157*/            OPC_CheckType, MVT::f64,
/* 10159*/            OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10161*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32), 0,
                          MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETEQ:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 11
                      // Dst: (MOVZ_I_D32:{ *:[f64] } AFGR64:{ *:[f64] }:$T, GPR32:{ *:[i32] }:$lhs, AFGR64:{ *:[f64] }:$F)
/* 10170*/          /*Scope*/ 18, /*->10189*/
/* 10171*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 10173*/            OPC_MoveParent,
/* 10174*/            OPC_RecordChild1, // #1 = $T
/* 10175*/            OPC_RecordChild2, // #2 = $F
/* 10176*/            OPC_CheckType, MVT::f64,
/* 10178*/            OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10180*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_D32), 0,
                          MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETNE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 11
                      // Dst: (MOVN_I_D32:{ *:[f64] } AFGR64:{ *:[f64] }:$T, GPR32:{ *:[i32] }:$lhs, AFGR64:{ *:[f64] }:$F)
/* 10189*/          /*Scope*/ 18, /*->10208*/
/* 10190*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 10192*/            OPC_MoveParent,
/* 10193*/            OPC_RecordChild1, // #1 = $T
/* 10194*/            OPC_RecordChild2, // #2 = $F
/* 10195*/            OPC_CheckType, MVT::f64,
/* 10197*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10199*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                          MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETEQ:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 11
                      // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, GPR32:{ *:[i32] }:$lhs, FGR64:{ *:[f64] }:$F)
/* 10208*/          /*Scope*/ 18, /*->10227*/
/* 10209*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 10211*/            OPC_MoveParent,
/* 10212*/            OPC_RecordChild1, // #1 = $T
/* 10213*/            OPC_RecordChild2, // #2 = $F
/* 10214*/            OPC_CheckType, MVT::f64,
/* 10216*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10218*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_D64), 0,
                          MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETNE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 11
                      // Dst: (MOVN_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, GPR32:{ *:[i32] }:$lhs, FGR64:{ *:[f64] }:$F)
/* 10227*/          /*Scope*/ 18, /*->10246*/
/* 10228*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 10230*/            OPC_MoveParent,
/* 10231*/            OPC_RecordChild1, // #1 = $T
/* 10232*/            OPC_RecordChild2, // #2 = $F
/* 10233*/            OPC_CheckType, MVT::f32,
/* 10235*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 10237*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S_MM), 0,
                          MVT::f32, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETEQ:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 11
                      // Dst: (MOVZ_I_S_MM:{ *:[f32] } FGR32:{ *:[f32] }:$T, GPR32:{ *:[i32] }:$lhs, FGR32:{ *:[f32] }:$F)
/* 10246*/          /*Scope*/ 18, /*->10265*/
/* 10247*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 10249*/            OPC_MoveParent,
/* 10250*/            OPC_RecordChild1, // #1 = $T
/* 10251*/            OPC_RecordChild2, // #2 = $F
/* 10252*/            OPC_CheckType, MVT::f32,
/* 10254*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 10256*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_S_MM), 0,
                          MVT::f32, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETNE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 11
                      // Dst: (MOVN_I_S_MM:{ *:[f32] } FGR32:{ *:[f32] }:$T, GPR32:{ *:[i32] }:$lhs, FGR32:{ *:[f32] }:$F)
/* 10265*/          /*Scope*/ 18, /*->10284*/
/* 10266*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 10268*/            OPC_MoveParent,
/* 10269*/            OPC_RecordChild1, // #1 = $T
/* 10270*/            OPC_RecordChild2, // #2 = $F
/* 10271*/            OPC_CheckType, MVT::f64,
/* 10273*/            OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 10275*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32_MM), 0,
                          MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETEQ:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 11
                      // Dst: (MOVZ_I_D32_MM:{ *:[f64] } AFGR64:{ *:[f64] }:$T, GPR32:{ *:[i32] }:$lhs, AFGR64:{ *:[f64] }:$F)
/* 10284*/          /*Scope*/ 18, /*->10303*/
/* 10285*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 10287*/            OPC_MoveParent,
/* 10288*/            OPC_RecordChild1, // #1 = $T
/* 10289*/            OPC_RecordChild2, // #2 = $F
/* 10290*/            OPC_CheckType, MVT::f64,
/* 10292*/            OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 10294*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_D32_MM), 0,
                          MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETNE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 11
                      // Dst: (MOVN_I_D32_MM:{ *:[f64] } AFGR64:{ *:[f64] }:$T, GPR32:{ *:[i32] }:$lhs, AFGR64:{ *:[f64] }:$F)
/* 10303*/          0, /*End of Scope*/
/* 10304*/        /*Scope*/ 35|128,12/*1571*/, /*->11877*/
/* 10306*/          OPC_RecordChild1, // #1 = $rhs
/* 10307*/          OPC_Scope, 56|128,5/*696*/, /*->11006*/ // 31 children in Scope
/* 10310*/            OPC_MoveChild1,
/* 10311*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 10314*/            OPC_Scope, 65, /*->10381*/ // 10 children in Scope
/* 10316*/              OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 10318*/              OPC_MoveParent,
/* 10319*/              OPC_CheckType, MVT::i32,
/* 10321*/              OPC_Scope, 28, /*->10351*/ // 2 children in Scope
/* 10323*/                OPC_CheckChild2CondCode, ISD::SETGE,
/* 10325*/                OPC_MoveParent,
/* 10326*/                OPC_RecordChild1, // #2 = $T
/* 10327*/                OPC_RecordChild2, // #3 = $F
/* 10328*/                OPC_CheckType, MVT::f32,
/* 10330*/                OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10332*/                OPC_EmitConvertToTarget, 1,
/* 10334*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 10342*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                              MVT::f32, 3/*#Ops*/, 2, 5, 3, 
                          // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTi:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), FGR32:{ *:[f32] }:$F)
/* 10351*/              /*Scope*/ 28, /*->10380*/
/* 10352*/                OPC_CheckChild2CondCode, ISD::SETUGE,
/* 10354*/                OPC_MoveParent,
/* 10355*/                OPC_RecordChild1, // #2 = $T
/* 10356*/                OPC_RecordChild2, // #3 = $F
/* 10357*/                OPC_CheckType, MVT::f32,
/* 10359*/                OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10361*/                OPC_EmitConvertToTarget, 1,
/* 10363*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 10371*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                              MVT::f32, 3/*#Ops*/, 2, 5, 3, 
                          // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh, SETUGE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTiu:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh), FGR32:{ *:[f32] }:$F)
/* 10380*/              0, /*End of Scope*/
/* 10381*/            /*Scope*/ 71, /*->10453*/
/* 10382*/              OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/* 10384*/              OPC_MoveParent,
/* 10385*/              OPC_CheckType, MVT::i32,
/* 10387*/              OPC_Scope, 31, /*->10420*/ // 2 children in Scope
/* 10389*/                OPC_CheckChild2CondCode, ISD::SETGT,
/* 10391*/                OPC_MoveParent,
/* 10392*/                OPC_RecordChild1, // #2 = $T
/* 10393*/                OPC_RecordChild2, // #3 = $F
/* 10394*/                OPC_CheckType, MVT::f32,
/* 10396*/                OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10398*/                OPC_EmitConvertToTarget, 1,
/* 10400*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 10403*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 10411*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                              MVT::f32, 3/*#Ops*/, 2, 6, 3, 
                          // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTi:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), FGR32:{ *:[f32] }:$F)
/* 10420*/              /*Scope*/ 31, /*->10452*/
/* 10421*/                OPC_CheckChild2CondCode, ISD::SETUGT,
/* 10423*/                OPC_MoveParent,
/* 10424*/                OPC_RecordChild1, // #2 = $T
/* 10425*/                OPC_RecordChild2, // #3 = $F
/* 10426*/                OPC_CheckType, MVT::f32,
/* 10428*/                OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10430*/                OPC_EmitConvertToTarget, 1,
/* 10432*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 10435*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 10443*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                              MVT::f32, 3/*#Ops*/, 2, 6, 3, 
                          // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTiu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), FGR32:{ *:[f32] }:$F)
/* 10452*/              0, /*End of Scope*/
/* 10453*/            /*Scope*/ 65, /*->10519*/
/* 10454*/              OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 10456*/              OPC_MoveParent,
/* 10457*/              OPC_CheckType, MVT::i32,
/* 10459*/              OPC_Scope, 28, /*->10489*/ // 2 children in Scope
/* 10461*/                OPC_CheckChild2CondCode, ISD::SETGE,
/* 10463*/                OPC_MoveParent,
/* 10464*/                OPC_RecordChild1, // #2 = $T
/* 10465*/                OPC_RecordChild2, // #3 = $F
/* 10466*/                OPC_CheckType, MVT::f64,
/* 10468*/                OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10470*/                OPC_EmitConvertToTarget, 1,
/* 10472*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 10480*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32), 0,
                              MVT::f64, 3/*#Ops*/, 2, 5, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D32:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLTi:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), AFGR64:{ *:[f64] }:$F)
/* 10489*/              /*Scope*/ 28, /*->10518*/
/* 10490*/                OPC_CheckChild2CondCode, ISD::SETUGE,
/* 10492*/                OPC_MoveParent,
/* 10493*/                OPC_RecordChild1, // #2 = $T
/* 10494*/                OPC_RecordChild2, // #3 = $F
/* 10495*/                OPC_CheckType, MVT::f64,
/* 10497*/                OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10499*/                OPC_EmitConvertToTarget, 1,
/* 10501*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 10509*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32), 0,
                              MVT::f64, 3/*#Ops*/, 2, 5, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh, SETUGE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D32:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLTiu:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh), AFGR64:{ *:[f64] }:$F)
/* 10518*/              0, /*End of Scope*/
/* 10519*/            /*Scope*/ 71, /*->10591*/
/* 10520*/              OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/* 10522*/              OPC_MoveParent,
/* 10523*/              OPC_CheckType, MVT::i32,
/* 10525*/              OPC_Scope, 31, /*->10558*/ // 2 children in Scope
/* 10527*/                OPC_CheckChild2CondCode, ISD::SETGT,
/* 10529*/                OPC_MoveParent,
/* 10530*/                OPC_RecordChild1, // #2 = $T
/* 10531*/                OPC_RecordChild2, // #3 = $F
/* 10532*/                OPC_CheckType, MVT::f64,
/* 10534*/                OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10536*/                OPC_EmitConvertToTarget, 1,
/* 10538*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 10541*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 10549*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32), 0,
                              MVT::f64, 3/*#Ops*/, 2, 6, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D32:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLTi:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), AFGR64:{ *:[f64] }:$F)
/* 10558*/              /*Scope*/ 31, /*->10590*/
/* 10559*/                OPC_CheckChild2CondCode, ISD::SETUGT,
/* 10561*/                OPC_MoveParent,
/* 10562*/                OPC_RecordChild1, // #2 = $T
/* 10563*/                OPC_RecordChild2, // #3 = $F
/* 10564*/                OPC_CheckType, MVT::f64,
/* 10566*/                OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10568*/                OPC_EmitConvertToTarget, 1,
/* 10570*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 10573*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 10581*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32), 0,
                              MVT::f64, 3/*#Ops*/, 2, 6, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D32:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLTiu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), AFGR64:{ *:[f64] }:$F)
/* 10590*/              0, /*End of Scope*/
/* 10591*/            /*Scope*/ 65, /*->10657*/
/* 10592*/              OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 10594*/              OPC_MoveParent,
/* 10595*/              OPC_CheckType, MVT::i32,
/* 10597*/              OPC_Scope, 28, /*->10627*/ // 2 children in Scope
/* 10599*/                OPC_CheckChild2CondCode, ISD::SETGE,
/* 10601*/                OPC_MoveParent,
/* 10602*/                OPC_RecordChild1, // #2 = $T
/* 10603*/                OPC_RecordChild2, // #3 = $F
/* 10604*/                OPC_CheckType, MVT::f64,
/* 10606*/                OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10608*/                OPC_EmitConvertToTarget, 1,
/* 10610*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 10618*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                              MVT::f64, 3/*#Ops*/, 2, 5, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLTi:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), FGR64:{ *:[f64] }:$F)
/* 10627*/              /*Scope*/ 28, /*->10656*/
/* 10628*/                OPC_CheckChild2CondCode, ISD::SETUGE,
/* 10630*/                OPC_MoveParent,
/* 10631*/                OPC_RecordChild1, // #2 = $T
/* 10632*/                OPC_RecordChild2, // #3 = $F
/* 10633*/                OPC_CheckType, MVT::f64,
/* 10635*/                OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10637*/                OPC_EmitConvertToTarget, 1,
/* 10639*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 10647*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                              MVT::f64, 3/*#Ops*/, 2, 5, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh, SETUGE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLTiu:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh), FGR64:{ *:[f64] }:$F)
/* 10656*/              0, /*End of Scope*/
/* 10657*/            /*Scope*/ 71, /*->10729*/
/* 10658*/              OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/* 10660*/              OPC_MoveParent,
/* 10661*/              OPC_CheckType, MVT::i32,
/* 10663*/              OPC_Scope, 31, /*->10696*/ // 2 children in Scope
/* 10665*/                OPC_CheckChild2CondCode, ISD::SETGT,
/* 10667*/                OPC_MoveParent,
/* 10668*/                OPC_RecordChild1, // #2 = $T
/* 10669*/                OPC_RecordChild2, // #3 = $F
/* 10670*/                OPC_CheckType, MVT::f64,
/* 10672*/                OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10674*/                OPC_EmitConvertToTarget, 1,
/* 10676*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 10679*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 10687*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                              MVT::f64, 3/*#Ops*/, 2, 6, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLTi:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), FGR64:{ *:[f64] }:$F)
/* 10696*/              /*Scope*/ 31, /*->10728*/
/* 10697*/                OPC_CheckChild2CondCode, ISD::SETUGT,
/* 10699*/                OPC_MoveParent,
/* 10700*/                OPC_RecordChild1, // #2 = $T
/* 10701*/                OPC_RecordChild2, // #3 = $F
/* 10702*/                OPC_CheckType, MVT::f64,
/* 10704*/                OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10706*/                OPC_EmitConvertToTarget, 1,
/* 10708*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 10711*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 10719*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                              MVT::f64, 3/*#Ops*/, 2, 6, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLTiu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), FGR64:{ *:[f64] }:$F)
/* 10728*/              0, /*End of Scope*/
/* 10729*/            /*Scope*/ 65, /*->10795*/
/* 10730*/              OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 10732*/              OPC_MoveParent,
/* 10733*/              OPC_CheckType, MVT::i32,
/* 10735*/              OPC_Scope, 28, /*->10765*/ // 2 children in Scope
/* 10737*/                OPC_CheckChild2CondCode, ISD::SETGE,
/* 10739*/                OPC_MoveParent,
/* 10740*/                OPC_RecordChild1, // #2 = $T
/* 10741*/                OPC_RecordChild2, // #3 = $F
/* 10742*/                OPC_CheckType, MVT::f32,
/* 10744*/                OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 10746*/                OPC_EmitConvertToTarget, 1,
/* 10748*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 10756*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S_MM), 0,
                              MVT::f32, 3/*#Ops*/, 2, 5, 3, 
                          // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_S_MM:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), FGR32:{ *:[f32] }:$F)
/* 10765*/              /*Scope*/ 28, /*->10794*/
/* 10766*/                OPC_CheckChild2CondCode, ISD::SETUGE,
/* 10768*/                OPC_MoveParent,
/* 10769*/                OPC_RecordChild1, // #2 = $T
/* 10770*/                OPC_RecordChild2, // #3 = $F
/* 10771*/                OPC_CheckType, MVT::f32,
/* 10773*/                OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 10775*/                OPC_EmitConvertToTarget, 1,
/* 10777*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 10785*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S_MM), 0,
                              MVT::f32, 3/*#Ops*/, 2, 5, 3, 
                          // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh, SETUGE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_S_MM:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh), FGR32:{ *:[f32] }:$F)
/* 10794*/              0, /*End of Scope*/
/* 10795*/            /*Scope*/ 71, /*->10867*/
/* 10796*/              OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/* 10798*/              OPC_MoveParent,
/* 10799*/              OPC_CheckType, MVT::i32,
/* 10801*/              OPC_Scope, 31, /*->10834*/ // 2 children in Scope
/* 10803*/                OPC_CheckChild2CondCode, ISD::SETGT,
/* 10805*/                OPC_MoveParent,
/* 10806*/                OPC_RecordChild1, // #2 = $T
/* 10807*/                OPC_RecordChild2, // #3 = $F
/* 10808*/                OPC_CheckType, MVT::f32,
/* 10810*/                OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 10812*/                OPC_EmitConvertToTarget, 1,
/* 10814*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 10817*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 10825*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S_MM), 0,
                              MVT::f32, 3/*#Ops*/, 2, 6, 3, 
                          // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_S_MM:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), FGR32:{ *:[f32] }:$F)
/* 10834*/              /*Scope*/ 31, /*->10866*/
/* 10835*/                OPC_CheckChild2CondCode, ISD::SETUGT,
/* 10837*/                OPC_MoveParent,
/* 10838*/                OPC_RecordChild1, // #2 = $T
/* 10839*/                OPC_RecordChild2, // #3 = $F
/* 10840*/                OPC_CheckType, MVT::f32,
/* 10842*/                OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 10844*/                OPC_EmitConvertToTarget, 1,
/* 10846*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 10849*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 10857*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S_MM), 0,
                              MVT::f32, 3/*#Ops*/, 2, 6, 3, 
                          // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_S_MM:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), FGR32:{ *:[f32] }:$F)
/* 10866*/              0, /*End of Scope*/
/* 10867*/            /*Scope*/ 65, /*->10933*/
/* 10868*/              OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 10870*/              OPC_MoveParent,
/* 10871*/              OPC_CheckType, MVT::i32,
/* 10873*/              OPC_Scope, 28, /*->10903*/ // 2 children in Scope
/* 10875*/                OPC_CheckChild2CondCode, ISD::SETGE,
/* 10877*/                OPC_MoveParent,
/* 10878*/                OPC_RecordChild1, // #2 = $T
/* 10879*/                OPC_RecordChild2, // #3 = $F
/* 10880*/                OPC_CheckType, MVT::f64,
/* 10882*/                OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 10884*/                OPC_EmitConvertToTarget, 1,
/* 10886*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 10894*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32_MM), 0,
                              MVT::f64, 3/*#Ops*/, 2, 5, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D32_MM:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLTi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), AFGR64:{ *:[f64] }:$F)
/* 10903*/              /*Scope*/ 28, /*->10932*/
/* 10904*/                OPC_CheckChild2CondCode, ISD::SETUGE,
/* 10906*/                OPC_MoveParent,
/* 10907*/                OPC_RecordChild1, // #2 = $T
/* 10908*/                OPC_RecordChild2, // #3 = $F
/* 10909*/                OPC_CheckType, MVT::f64,
/* 10911*/                OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 10913*/                OPC_EmitConvertToTarget, 1,
/* 10915*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 10923*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32_MM), 0,
                              MVT::f64, 3/*#Ops*/, 2, 5, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh, SETUGE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D32_MM:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLTiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lh, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rh), AFGR64:{ *:[f64] }:$F)
/* 10932*/              0, /*End of Scope*/
/* 10933*/            /*Scope*/ 71, /*->11005*/
/* 10934*/              OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/* 10936*/              OPC_MoveParent,
/* 10937*/              OPC_CheckType, MVT::i32,
/* 10939*/              OPC_Scope, 31, /*->10972*/ // 2 children in Scope
/* 10941*/                OPC_CheckChild2CondCode, ISD::SETGT,
/* 10943*/                OPC_MoveParent,
/* 10944*/                OPC_RecordChild1, // #2 = $T
/* 10945*/                OPC_RecordChild2, // #3 = $F
/* 10946*/                OPC_CheckType, MVT::f64,
/* 10948*/                OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 10950*/                OPC_EmitConvertToTarget, 1,
/* 10952*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 10955*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 10963*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32_MM), 0,
                              MVT::f64, 3/*#Ops*/, 2, 6, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D32_MM:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLTi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), AFGR64:{ *:[f64] }:$F)
/* 10972*/              /*Scope*/ 31, /*->11004*/
/* 10973*/                OPC_CheckChild2CondCode, ISD::SETUGT,
/* 10975*/                OPC_MoveParent,
/* 10976*/                OPC_RecordChild1, // #2 = $T
/* 10977*/                OPC_RecordChild2, // #3 = $F
/* 10978*/                OPC_CheckType, MVT::f64,
/* 10980*/                OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 10982*/                OPC_EmitConvertToTarget, 1,
/* 10984*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 10987*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 10995*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32_MM), 0,
                              MVT::f64, 3/*#Ops*/, 2, 6, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D32_MM:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLTiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (Plus1:{ *:[i32] } (imm:{ *:[i32] }):$rhs)), AFGR64:{ *:[f64] }:$F)
/* 11004*/              0, /*End of Scope*/
/* 11005*/            0, /*End of Scope*/
/* 11006*/          /*Scope*/ 28, /*->11035*/
/* 11007*/            OPC_CheckChild2CondCode, ISD::SETGE,
/* 11009*/            OPC_CheckType, MVT::i32,
/* 11011*/            OPC_MoveParent,
/* 11012*/            OPC_RecordChild1, // #2 = $T
/* 11013*/            OPC_RecordChild2, // #3 = $F
/* 11014*/            OPC_CheckType, MVT::f32,
/* 11016*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11018*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11026*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLT:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), FGR32:{ *:[f32] }:$F)
/* 11035*/          /*Scope*/ 28, /*->11064*/
/* 11036*/            OPC_CheckChild2CondCode, ISD::SETUGE,
/* 11038*/            OPC_CheckType, MVT::i32,
/* 11040*/            OPC_MoveParent,
/* 11041*/            OPC_RecordChild1, // #2 = $T
/* 11042*/            OPC_RecordChild2, // #3 = $F
/* 11043*/            OPC_CheckType, MVT::f32,
/* 11045*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11047*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11055*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), FGR32:{ *:[f32] }:$F)
/* 11064*/          /*Scope*/ 28, /*->11093*/
/* 11065*/            OPC_CheckChild2CondCode, ISD::SETLE,
/* 11067*/            OPC_CheckType, MVT::i32,
/* 11069*/            OPC_MoveParent,
/* 11070*/            OPC_RecordChild1, // #2 = $T
/* 11071*/            OPC_RecordChild2, // #3 = $F
/* 11072*/            OPC_CheckType, MVT::f32,
/* 11074*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11076*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 11084*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETLE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLT:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), FGR32:{ *:[f32] }:$F)
/* 11093*/          /*Scope*/ 28, /*->11122*/
/* 11094*/            OPC_CheckChild2CondCode, ISD::SETULE,
/* 11096*/            OPC_CheckType, MVT::i32,
/* 11098*/            OPC_MoveParent,
/* 11099*/            OPC_RecordChild1, // #2 = $T
/* 11100*/            OPC_RecordChild2, // #3 = $F
/* 11101*/            OPC_CheckType, MVT::f32,
/* 11103*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11105*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 11113*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETULE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTu:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), FGR32:{ *:[f32] }:$F)
/* 11122*/          /*Scope*/ 28, /*->11151*/
/* 11123*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 11125*/            OPC_CheckType, MVT::i32,
/* 11127*/            OPC_MoveParent,
/* 11128*/            OPC_RecordChild1, // #2 = $T
/* 11129*/            OPC_RecordChild2, // #3 = $F
/* 11130*/            OPC_CheckType, MVT::f32,
/* 11132*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11134*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11142*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETEQ:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (XOR:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), FGR32:{ *:[f32] }:$F)
/* 11151*/          /*Scope*/ 28, /*->11180*/
/* 11152*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 11154*/            OPC_CheckType, MVT::i32,
/* 11156*/            OPC_MoveParent,
/* 11157*/            OPC_RecordChild1, // #2 = $T
/* 11158*/            OPC_RecordChild2, // #3 = $F
/* 11159*/            OPC_CheckType, MVT::f32,
/* 11161*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11163*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11171*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_S), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETNE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVN_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (XOR:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), FGR32:{ *:[f32] }:$F)
/* 11180*/          /*Scope*/ 28, /*->11209*/
/* 11181*/            OPC_CheckChild2CondCode, ISD::SETGE,
/* 11183*/            OPC_CheckType, MVT::i32,
/* 11185*/            OPC_MoveParent,
/* 11186*/            OPC_RecordChild1, // #2 = $T
/* 11187*/            OPC_RecordChild2, // #3 = $F
/* 11188*/            OPC_CheckType, MVT::f64,
/* 11190*/            OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11192*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11200*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D32:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLT:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), AFGR64:{ *:[f64] }:$F)
/* 11209*/          /*Scope*/ 28, /*->11238*/
/* 11210*/            OPC_CheckChild2CondCode, ISD::SETUGE,
/* 11212*/            OPC_CheckType, MVT::i32,
/* 11214*/            OPC_MoveParent,
/* 11215*/            OPC_RecordChild1, // #2 = $T
/* 11216*/            OPC_RecordChild2, // #3 = $F
/* 11217*/            OPC_CheckType, MVT::f64,
/* 11219*/            OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11221*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11229*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D32:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLTu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), AFGR64:{ *:[f64] }:$F)
/* 11238*/          /*Scope*/ 28, /*->11267*/
/* 11239*/            OPC_CheckChild2CondCode, ISD::SETLE,
/* 11241*/            OPC_CheckType, MVT::i32,
/* 11243*/            OPC_MoveParent,
/* 11244*/            OPC_RecordChild1, // #2 = $T
/* 11245*/            OPC_RecordChild2, // #3 = $F
/* 11246*/            OPC_CheckType, MVT::f64,
/* 11248*/            OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11250*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 11258*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETLE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D32:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLT:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), AFGR64:{ *:[f64] }:$F)
/* 11267*/          /*Scope*/ 28, /*->11296*/
/* 11268*/            OPC_CheckChild2CondCode, ISD::SETULE,
/* 11270*/            OPC_CheckType, MVT::i32,
/* 11272*/            OPC_MoveParent,
/* 11273*/            OPC_RecordChild1, // #2 = $T
/* 11274*/            OPC_RecordChild2, // #3 = $F
/* 11275*/            OPC_CheckType, MVT::f64,
/* 11277*/            OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11279*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 11287*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETULE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D32:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLTu:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), AFGR64:{ *:[f64] }:$F)
/* 11296*/          /*Scope*/ 28, /*->11325*/
/* 11297*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 11299*/            OPC_CheckType, MVT::i32,
/* 11301*/            OPC_MoveParent,
/* 11302*/            OPC_RecordChild1, // #2 = $T
/* 11303*/            OPC_RecordChild2, // #3 = $F
/* 11304*/            OPC_CheckType, MVT::f64,
/* 11306*/            OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11308*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11316*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETEQ:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D32:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (XOR:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), AFGR64:{ *:[f64] }:$F)
/* 11325*/          /*Scope*/ 28, /*->11354*/
/* 11326*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 11328*/            OPC_CheckType, MVT::i32,
/* 11330*/            OPC_MoveParent,
/* 11331*/            OPC_RecordChild1, // #2 = $T
/* 11332*/            OPC_RecordChild2, // #3 = $F
/* 11333*/            OPC_CheckType, MVT::f64,
/* 11335*/            OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11337*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11345*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_D32), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETNE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVN_I_D32:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (XOR:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), AFGR64:{ *:[f64] }:$F)
/* 11354*/          /*Scope*/ 28, /*->11383*/
/* 11355*/            OPC_CheckChild2CondCode, ISD::SETGE,
/* 11357*/            OPC_CheckType, MVT::i32,
/* 11359*/            OPC_MoveParent,
/* 11360*/            OPC_RecordChild1, // #2 = $T
/* 11361*/            OPC_RecordChild2, // #3 = $F
/* 11362*/            OPC_CheckType, MVT::f64,
/* 11364*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11366*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11374*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLT:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), FGR64:{ *:[f64] }:$F)
/* 11383*/          /*Scope*/ 28, /*->11412*/
/* 11384*/            OPC_CheckChild2CondCode, ISD::SETUGE,
/* 11386*/            OPC_CheckType, MVT::i32,
/* 11388*/            OPC_MoveParent,
/* 11389*/            OPC_RecordChild1, // #2 = $T
/* 11390*/            OPC_RecordChild2, // #3 = $F
/* 11391*/            OPC_CheckType, MVT::f64,
/* 11393*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11395*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11403*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLTu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), FGR64:{ *:[f64] }:$F)
/* 11412*/          /*Scope*/ 28, /*->11441*/
/* 11413*/            OPC_CheckChild2CondCode, ISD::SETLE,
/* 11415*/            OPC_CheckType, MVT::i32,
/* 11417*/            OPC_MoveParent,
/* 11418*/            OPC_RecordChild1, // #2 = $T
/* 11419*/            OPC_RecordChild2, // #3 = $F
/* 11420*/            OPC_CheckType, MVT::f64,
/* 11422*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11424*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 11432*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETLE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLT:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), FGR64:{ *:[f64] }:$F)
/* 11441*/          /*Scope*/ 28, /*->11470*/
/* 11442*/            OPC_CheckChild2CondCode, ISD::SETULE,
/* 11444*/            OPC_CheckType, MVT::i32,
/* 11446*/            OPC_MoveParent,
/* 11447*/            OPC_RecordChild1, // #2 = $T
/* 11448*/            OPC_RecordChild2, // #3 = $F
/* 11449*/            OPC_CheckType, MVT::f64,
/* 11451*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11453*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 11461*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETULE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLTu:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), FGR64:{ *:[f64] }:$F)
/* 11470*/          /*Scope*/ 28, /*->11499*/
/* 11471*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 11473*/            OPC_CheckType, MVT::i32,
/* 11475*/            OPC_MoveParent,
/* 11476*/            OPC_RecordChild1, // #2 = $T
/* 11477*/            OPC_RecordChild2, // #3 = $F
/* 11478*/            OPC_CheckType, MVT::f64,
/* 11480*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11482*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11490*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETEQ:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (XOR:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), FGR64:{ *:[f64] }:$F)
/* 11499*/          /*Scope*/ 28, /*->11528*/
/* 11500*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 11502*/            OPC_CheckType, MVT::i32,
/* 11504*/            OPC_MoveParent,
/* 11505*/            OPC_RecordChild1, // #2 = $T
/* 11506*/            OPC_RecordChild2, // #3 = $F
/* 11507*/            OPC_CheckType, MVT::f64,
/* 11509*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11511*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11519*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_D64), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETNE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVN_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (XOR:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), FGR64:{ *:[f64] }:$F)
/* 11528*/          /*Scope*/ 28, /*->11557*/
/* 11529*/            OPC_CheckChild2CondCode, ISD::SETGE,
/* 11531*/            OPC_CheckType, MVT::i32,
/* 11533*/            OPC_MoveParent,
/* 11534*/            OPC_RecordChild1, // #2 = $T
/* 11535*/            OPC_RecordChild2, // #3 = $F
/* 11536*/            OPC_CheckType, MVT::f32,
/* 11538*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 11540*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11548*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S_MM), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_S_MM:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLT_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), FGR32:{ *:[f32] }:$F)
/* 11557*/          /*Scope*/ 28, /*->11586*/
/* 11558*/            OPC_CheckChild2CondCode, ISD::SETUGE,
/* 11560*/            OPC_CheckType, MVT::i32,
/* 11562*/            OPC_MoveParent,
/* 11563*/            OPC_RecordChild1, // #2 = $T
/* 11564*/            OPC_RecordChild2, // #3 = $F
/* 11565*/            OPC_CheckType, MVT::f32,
/* 11567*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 11569*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11577*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S_MM), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_S_MM:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), FGR32:{ *:[f32] }:$F)
/* 11586*/          /*Scope*/ 28, /*->11615*/
/* 11587*/            OPC_CheckChild2CondCode, ISD::SETLE,
/* 11589*/            OPC_CheckType, MVT::i32,
/* 11591*/            OPC_MoveParent,
/* 11592*/            OPC_RecordChild1, // #2 = $T
/* 11593*/            OPC_RecordChild2, // #3 = $F
/* 11594*/            OPC_CheckType, MVT::f32,
/* 11596*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 11598*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 11606*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S_MM), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETLE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_S_MM:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLT_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), FGR32:{ *:[f32] }:$F)
/* 11615*/          /*Scope*/ 28, /*->11644*/
/* 11616*/            OPC_CheckChild2CondCode, ISD::SETULE,
/* 11618*/            OPC_CheckType, MVT::i32,
/* 11620*/            OPC_MoveParent,
/* 11621*/            OPC_RecordChild1, // #2 = $T
/* 11622*/            OPC_RecordChild2, // #3 = $F
/* 11623*/            OPC_CheckType, MVT::f32,
/* 11625*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 11627*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 11635*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S_MM), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETULE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_S_MM:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), FGR32:{ *:[f32] }:$F)
/* 11644*/          /*Scope*/ 28, /*->11673*/
/* 11645*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 11647*/            OPC_CheckType, MVT::i32,
/* 11649*/            OPC_MoveParent,
/* 11650*/            OPC_RecordChild1, // #2 = $T
/* 11651*/            OPC_RecordChild2, // #3 = $F
/* 11652*/            OPC_CheckType, MVT::f32,
/* 11654*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 11656*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11664*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S_MM), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETEQ:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_S_MM:{ *:[f32] } FGR32:{ *:[f32] }:$T, (XOR_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), FGR32:{ *:[f32] }:$F)
/* 11673*/          /*Scope*/ 28, /*->11702*/
/* 11674*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 11676*/            OPC_CheckType, MVT::i32,
/* 11678*/            OPC_MoveParent,
/* 11679*/            OPC_RecordChild1, // #2 = $T
/* 11680*/            OPC_RecordChild2, // #3 = $F
/* 11681*/            OPC_CheckType, MVT::f32,
/* 11683*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 11685*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11693*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_S_MM), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETNE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVN_I_S_MM:{ *:[f32] } FGR32:{ *:[f32] }:$T, (XOR_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), FGR32:{ *:[f32] }:$F)
/* 11702*/          /*Scope*/ 28, /*->11731*/
/* 11703*/            OPC_CheckChild2CondCode, ISD::SETGE,
/* 11705*/            OPC_CheckType, MVT::i32,
/* 11707*/            OPC_MoveParent,
/* 11708*/            OPC_RecordChild1, // #2 = $T
/* 11709*/            OPC_RecordChild2, // #3 = $F
/* 11710*/            OPC_CheckType, MVT::f64,
/* 11712*/            OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 11714*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11722*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32_MM), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D32_MM:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLT_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), AFGR64:{ *:[f64] }:$F)
/* 11731*/          /*Scope*/ 28, /*->11760*/
/* 11732*/            OPC_CheckChild2CondCode, ISD::SETUGE,
/* 11734*/            OPC_CheckType, MVT::i32,
/* 11736*/            OPC_MoveParent,
/* 11737*/            OPC_RecordChild1, // #2 = $T
/* 11738*/            OPC_RecordChild2, // #3 = $F
/* 11739*/            OPC_CheckType, MVT::f64,
/* 11741*/            OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 11743*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11751*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32_MM), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D32_MM:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLTu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), AFGR64:{ *:[f64] }:$F)
/* 11760*/          /*Scope*/ 28, /*->11789*/
/* 11761*/            OPC_CheckChild2CondCode, ISD::SETLE,
/* 11763*/            OPC_CheckType, MVT::i32,
/* 11765*/            OPC_MoveParent,
/* 11766*/            OPC_RecordChild1, // #2 = $T
/* 11767*/            OPC_RecordChild2, // #3 = $F
/* 11768*/            OPC_CheckType, MVT::f64,
/* 11770*/            OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 11772*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 11780*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32_MM), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETLE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D32_MM:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLT_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), AFGR64:{ *:[f64] }:$F)
/* 11789*/          /*Scope*/ 28, /*->11818*/
/* 11790*/            OPC_CheckChild2CondCode, ISD::SETULE,
/* 11792*/            OPC_CheckType, MVT::i32,
/* 11794*/            OPC_MoveParent,
/* 11795*/            OPC_RecordChild1, // #2 = $T
/* 11796*/            OPC_RecordChild2, // #3 = $F
/* 11797*/            OPC_CheckType, MVT::f64,
/* 11799*/            OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 11801*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 11809*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32_MM), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETULE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D32_MM:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (SLTu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), AFGR64:{ *:[f64] }:$F)
/* 11818*/          /*Scope*/ 28, /*->11847*/
/* 11819*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 11821*/            OPC_CheckType, MVT::i32,
/* 11823*/            OPC_MoveParent,
/* 11824*/            OPC_RecordChild1, // #2 = $T
/* 11825*/            OPC_RecordChild2, // #3 = $F
/* 11826*/            OPC_CheckType, MVT::f64,
/* 11828*/            OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 11830*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11838*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D32_MM), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETEQ:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D32_MM:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (XOR_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), AFGR64:{ *:[f64] }:$F)
/* 11847*/          /*Scope*/ 28, /*->11876*/
/* 11848*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 11850*/            OPC_CheckType, MVT::i32,
/* 11852*/            OPC_MoveParent,
/* 11853*/            OPC_RecordChild1, // #2 = $T
/* 11854*/            OPC_RecordChild2, // #3 = $F
/* 11855*/            OPC_CheckType, MVT::f64,
/* 11857*/            OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 11859*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11867*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_D32_MM), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETNE:{ *:[Other] }), AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVN_I_D32_MM:{ *:[f64] } AFGR64:{ *:[f64] }:$T, (XOR_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), AFGR64:{ *:[f64] }:$F)
/* 11876*/          0, /*End of Scope*/
/* 11877*/        0, /*End of Scope*/
/* 11878*/      /*Scope*/ 84|128,5/*724*/, /*->12604*/
/* 11880*/        OPC_CheckChild0Type, MVT::i64,
/* 11882*/        OPC_Scope, 82, /*->11966*/ // 2 children in Scope
/* 11884*/          OPC_CheckChild1Integer, 0, 
/* 11886*/          OPC_CheckType, MVT::i32,
/* 11888*/          OPC_Scope, 18, /*->11908*/ // 4 children in Scope
/* 11890*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 11892*/            OPC_MoveParent,
/* 11893*/            OPC_RecordChild1, // #1 = $T
/* 11894*/            OPC_RecordChild2, // #2 = $F
/* 11895*/            OPC_CheckType, MVT::f32,
/* 11897*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11899*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I64_S), 0,
                          MVT::f32, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, 0:{ *:[i64] }, SETEQ:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 11
                      // Dst: (MOVZ_I64_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, GPR64:{ *:[i64] }:$lhs, FGR32:{ *:[f32] }:$F)
/* 11908*/          /*Scope*/ 18, /*->11927*/
/* 11909*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 11911*/            OPC_MoveParent,
/* 11912*/            OPC_RecordChild1, // #1 = $T
/* 11913*/            OPC_RecordChild2, // #2 = $F
/* 11914*/            OPC_CheckType, MVT::f32,
/* 11916*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11918*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I64_S), 0,
                          MVT::f32, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, 0:{ *:[i64] }, SETNE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 11
                      // Dst: (MOVN_I64_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, GPR64:{ *:[i64] }:$lhs, FGR32:{ *:[f32] }:$F)
/* 11927*/          /*Scope*/ 18, /*->11946*/
/* 11928*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 11930*/            OPC_MoveParent,
/* 11931*/            OPC_RecordChild1, // #1 = $T
/* 11932*/            OPC_RecordChild2, // #2 = $F
/* 11933*/            OPC_CheckType, MVT::f64,
/* 11935*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11937*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I64_D64), 0,
                          MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, 0:{ *:[i64] }, SETEQ:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 11
                      // Dst: (MOVZ_I64_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, GPR64:{ *:[i64] }:$lhs, FGR64:{ *:[f64] }:$F)
/* 11946*/          /*Scope*/ 18, /*->11965*/
/* 11947*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 11949*/            OPC_MoveParent,
/* 11950*/            OPC_RecordChild1, // #1 = $T
/* 11951*/            OPC_RecordChild2, // #2 = $F
/* 11952*/            OPC_CheckType, MVT::f64,
/* 11954*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11956*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I64_D64), 0,
                          MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, 0:{ *:[i64] }, SETNE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 11
                      // Dst: (MOVN_I64_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, GPR64:{ *:[i64] }:$lhs, FGR64:{ *:[f64] }:$F)
/* 11965*/          0, /*End of Scope*/
/* 11966*/        /*Scope*/ 123|128,4/*635*/, /*->12603*/
/* 11968*/          OPC_RecordChild1, // #1 = $rhs
/* 11969*/          OPC_Scope, 26|128,2/*282*/, /*->12254*/ // 13 children in Scope
/* 11972*/            OPC_MoveChild1,
/* 11973*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 11976*/            OPC_Scope, 65, /*->12043*/ // 4 children in Scope
/* 11978*/              OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 11980*/              OPC_MoveParent,
/* 11981*/              OPC_CheckType, MVT::i32,
/* 11983*/              OPC_Scope, 28, /*->12013*/ // 2 children in Scope
/* 11985*/                OPC_CheckChild2CondCode, ISD::SETGE,
/* 11987*/                OPC_MoveParent,
/* 11988*/                OPC_RecordChild1, // #2 = $T
/* 11989*/                OPC_RecordChild2, // #3 = $F
/* 11990*/                OPC_CheckType, MVT::f32,
/* 11992*/                OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11994*/                OPC_EmitConvertToTarget, 1,
/* 11996*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 12004*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                              MVT::f32, 3/*#Ops*/, 2, 5, 3, 
                          // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTi64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs), FGR32:{ *:[f32] }:$F)
/* 12013*/              /*Scope*/ 28, /*->12042*/
/* 12014*/                OPC_CheckChild2CondCode, ISD::SETUGE,
/* 12016*/                OPC_MoveParent,
/* 12017*/                OPC_RecordChild1, // #2 = $T
/* 12018*/                OPC_RecordChild2, // #3 = $F
/* 12019*/                OPC_CheckType, MVT::f32,
/* 12021*/                OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12023*/                OPC_EmitConvertToTarget, 1,
/* 12025*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 12033*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                              MVT::f32, 3/*#Ops*/, 2, 5, 3, 
                          // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lh, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rh, SETUGE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTiu64:{ *:[i32] } GPR64:{ *:[i64] }:$lh, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rh), FGR32:{ *:[f32] }:$F)
/* 12042*/              0, /*End of Scope*/
/* 12043*/            /*Scope*/ 71, /*->12115*/
/* 12044*/              OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/* 12046*/              OPC_MoveParent,
/* 12047*/              OPC_CheckType, MVT::i32,
/* 12049*/              OPC_Scope, 31, /*->12082*/ // 2 children in Scope
/* 12051*/                OPC_CheckChild2CondCode, ISD::SETGT,
/* 12053*/                OPC_MoveParent,
/* 12054*/                OPC_RecordChild1, // #2 = $T
/* 12055*/                OPC_RecordChild2, // #3 = $F
/* 12056*/                OPC_CheckType, MVT::f32,
/* 12058*/                OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12060*/                OPC_EmitConvertToTarget, 1,
/* 12062*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 12065*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 12073*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                              MVT::f32, 3/*#Ops*/, 2, 6, 3, 
                          // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTi64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (Plus1:{ *:[i64] } (imm:{ *:[i64] }):$rhs)), FGR32:{ *:[f32] }:$F)
/* 12082*/              /*Scope*/ 31, /*->12114*/
/* 12083*/                OPC_CheckChild2CondCode, ISD::SETUGT,
/* 12085*/                OPC_MoveParent,
/* 12086*/                OPC_RecordChild1, // #2 = $T
/* 12087*/                OPC_RecordChild2, // #3 = $F
/* 12088*/                OPC_CheckType, MVT::f32,
/* 12090*/                OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12092*/                OPC_EmitConvertToTarget, 1,
/* 12094*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 12097*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 12105*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                              MVT::f32, 3/*#Ops*/, 2, 6, 3, 
                          // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTiu64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (Plus1:{ *:[i64] } (imm:{ *:[i64] }):$rhs)), FGR32:{ *:[f32] }:$F)
/* 12114*/              0, /*End of Scope*/
/* 12115*/            /*Scope*/ 65, /*->12181*/
/* 12116*/              OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 12118*/              OPC_MoveParent,
/* 12119*/              OPC_CheckType, MVT::i32,
/* 12121*/              OPC_Scope, 28, /*->12151*/ // 2 children in Scope
/* 12123*/                OPC_CheckChild2CondCode, ISD::SETGE,
/* 12125*/                OPC_MoveParent,
/* 12126*/                OPC_RecordChild1, // #2 = $T
/* 12127*/                OPC_RecordChild2, // #3 = $F
/* 12128*/                OPC_CheckType, MVT::f64,
/* 12130*/                OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12132*/                OPC_EmitConvertToTarget, 1,
/* 12134*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 12142*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                              MVT::f64, 3/*#Ops*/, 2, 5, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLTi64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs), FGR64:{ *:[f64] }:$F)
/* 12151*/              /*Scope*/ 28, /*->12180*/
/* 12152*/                OPC_CheckChild2CondCode, ISD::SETUGE,
/* 12154*/                OPC_MoveParent,
/* 12155*/                OPC_RecordChild1, // #2 = $T
/* 12156*/                OPC_RecordChild2, // #3 = $F
/* 12157*/                OPC_CheckType, MVT::f64,
/* 12159*/                OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12161*/                OPC_EmitConvertToTarget, 1,
/* 12163*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 12171*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                              MVT::f64, 3/*#Ops*/, 2, 5, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lh, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rh, SETUGE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLTiu64:{ *:[i32] } GPR64:{ *:[i64] }:$lh, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rh), FGR64:{ *:[f64] }:$F)
/* 12180*/              0, /*End of Scope*/
/* 12181*/            /*Scope*/ 71, /*->12253*/
/* 12182*/              OPC_CheckPredicate, 17, // Predicate_immSExt16Plus1
/* 12184*/              OPC_MoveParent,
/* 12185*/              OPC_CheckType, MVT::i32,
/* 12187*/              OPC_Scope, 31, /*->12220*/ // 2 children in Scope
/* 12189*/                OPC_CheckChild2CondCode, ISD::SETGT,
/* 12191*/                OPC_MoveParent,
/* 12192*/                OPC_RecordChild1, // #2 = $T
/* 12193*/                OPC_RecordChild2, // #3 = $F
/* 12194*/                OPC_CheckType, MVT::f64,
/* 12196*/                OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12198*/                OPC_EmitConvertToTarget, 1,
/* 12200*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 12203*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 12211*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                              MVT::f64, 3/*#Ops*/, 2, 6, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETGT:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLTi64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (Plus1:{ *:[i64] } (imm:{ *:[i64] }):$rhs)), FGR64:{ *:[f64] }:$F)
/* 12220*/              /*Scope*/ 31, /*->12252*/
/* 12221*/                OPC_CheckChild2CondCode, ISD::SETUGT,
/* 12223*/                OPC_MoveParent,
/* 12224*/                OPC_RecordChild1, // #2 = $T
/* 12225*/                OPC_RecordChild2, // #3 = $F
/* 12226*/                OPC_CheckType, MVT::f64,
/* 12228*/                OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12230*/                OPC_EmitConvertToTarget, 1,
/* 12232*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 12235*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 12243*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                              MVT::f64, 3/*#Ops*/, 2, 6, 3, 
                          // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16Plus1>>:$rhs, SETUGT:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 10
                          // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLTiu64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (Plus1:{ *:[i64] } (imm:{ *:[i64] }):$rhs)), FGR64:{ *:[f64] }:$F)
/* 12252*/              0, /*End of Scope*/
/* 12253*/            0, /*End of Scope*/
/* 12254*/          /*Scope*/ 28, /*->12283*/
/* 12255*/            OPC_CheckChild2CondCode, ISD::SETGE,
/* 12257*/            OPC_CheckType, MVT::i32,
/* 12259*/            OPC_MoveParent,
/* 12260*/            OPC_RecordChild1, // #2 = $T
/* 12261*/            OPC_RecordChild2, // #3 = $F
/* 12262*/            OPC_CheckType, MVT::f32,
/* 12264*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12266*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12274*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETGE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLT64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), FGR32:{ *:[f32] }:$F)
/* 12283*/          /*Scope*/ 28, /*->12312*/
/* 12284*/            OPC_CheckChild2CondCode, ISD::SETUGE,
/* 12286*/            OPC_CheckType, MVT::i32,
/* 12288*/            OPC_MoveParent,
/* 12289*/            OPC_RecordChild1, // #2 = $T
/* 12290*/            OPC_RecordChild2, // #3 = $F
/* 12291*/            OPC_CheckType, MVT::f32,
/* 12293*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12295*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12303*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETUGE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTu64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), FGR32:{ *:[f32] }:$F)
/* 12312*/          /*Scope*/ 28, /*->12341*/
/* 12313*/            OPC_CheckChild2CondCode, ISD::SETLE,
/* 12315*/            OPC_CheckType, MVT::i32,
/* 12317*/            OPC_MoveParent,
/* 12318*/            OPC_RecordChild1, // #2 = $T
/* 12319*/            OPC_RecordChild2, // #3 = $F
/* 12320*/            OPC_CheckType, MVT::f32,
/* 12322*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12324*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 12332*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETLE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLT64:{ *:[i32] } GPR64:{ *:[i64] }:$rhs, GPR64:{ *:[i64] }:$lhs), FGR32:{ *:[f32] }:$F)
/* 12341*/          /*Scope*/ 28, /*->12370*/
/* 12342*/            OPC_CheckChild2CondCode, ISD::SETULE,
/* 12344*/            OPC_CheckType, MVT::i32,
/* 12346*/            OPC_MoveParent,
/* 12347*/            OPC_RecordChild1, // #2 = $T
/* 12348*/            OPC_RecordChild2, // #3 = $F
/* 12349*/            OPC_CheckType, MVT::f32,
/* 12351*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12353*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 12361*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_S), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETULE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (SLTu64:{ *:[i32] } GPR64:{ *:[i64] }:$rhs, GPR64:{ *:[i64] }:$lhs), FGR32:{ *:[f32] }:$F)
/* 12370*/          /*Scope*/ 28, /*->12399*/
/* 12371*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 12373*/            OPC_CheckType, MVT::i32,
/* 12375*/            OPC_MoveParent,
/* 12376*/            OPC_RecordChild1, // #2 = $T
/* 12377*/            OPC_RecordChild2, // #3 = $F
/* 12378*/            OPC_CheckType, MVT::f32,
/* 12380*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12382*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12390*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I64_S), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETEQ:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I64_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (XOR64:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), FGR32:{ *:[f32] }:$F)
/* 12399*/          /*Scope*/ 28, /*->12428*/
/* 12400*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 12402*/            OPC_CheckType, MVT::i32,
/* 12404*/            OPC_MoveParent,
/* 12405*/            OPC_RecordChild1, // #2 = $T
/* 12406*/            OPC_RecordChild2, // #3 = $F
/* 12407*/            OPC_CheckType, MVT::f32,
/* 12409*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12411*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12419*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I64_S), 0,
                          MVT::f32, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f32] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETNE:{ *:[Other] }), FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 6
                      // Dst: (MOVN_I64_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, (XOR64:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), FGR32:{ *:[f32] }:$F)
/* 12428*/          /*Scope*/ 28, /*->12457*/
/* 12429*/            OPC_CheckChild2CondCode, ISD::SETGE,
/* 12431*/            OPC_CheckType, MVT::i32,
/* 12433*/            OPC_MoveParent,
/* 12434*/            OPC_RecordChild1, // #2 = $T
/* 12435*/            OPC_RecordChild2, // #3 = $F
/* 12436*/            OPC_CheckType, MVT::f64,
/* 12438*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12440*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12448*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETGE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLT64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), FGR64:{ *:[f64] }:$F)
/* 12457*/          /*Scope*/ 28, /*->12486*/
/* 12458*/            OPC_CheckChild2CondCode, ISD::SETUGE,
/* 12460*/            OPC_CheckType, MVT::i32,
/* 12462*/            OPC_MoveParent,
/* 12463*/            OPC_RecordChild1, // #2 = $T
/* 12464*/            OPC_RecordChild2, // #3 = $F
/* 12465*/            OPC_CheckType, MVT::f64,
/* 12467*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12469*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12477*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETUGE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLTu64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), FGR64:{ *:[f64] }:$F)
/* 12486*/          /*Scope*/ 28, /*->12515*/
/* 12487*/            OPC_CheckChild2CondCode, ISD::SETLE,
/* 12489*/            OPC_CheckType, MVT::i32,
/* 12491*/            OPC_MoveParent,
/* 12492*/            OPC_RecordChild1, // #2 = $T
/* 12493*/            OPC_RecordChild2, // #3 = $F
/* 12494*/            OPC_CheckType, MVT::f64,
/* 12496*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12498*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 12506*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETLE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLT64:{ *:[i32] } GPR64:{ *:[i64] }:$rhs, GPR64:{ *:[i64] }:$lhs), FGR64:{ *:[f64] }:$F)
/* 12515*/          /*Scope*/ 28, /*->12544*/
/* 12516*/            OPC_CheckChild2CondCode, ISD::SETULE,
/* 12518*/            OPC_CheckType, MVT::i32,
/* 12520*/            OPC_MoveParent,
/* 12521*/            OPC_RecordChild1, // #2 = $T
/* 12522*/            OPC_RecordChild2, // #3 = $F
/* 12523*/            OPC_CheckType, MVT::f64,
/* 12525*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12527*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 12535*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I_D64), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETULE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (SLTu64:{ *:[i32] } GPR64:{ *:[i64] }:$rhs, GPR64:{ *:[i64] }:$lhs), FGR64:{ *:[f64] }:$F)
/* 12544*/          /*Scope*/ 28, /*->12573*/
/* 12545*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 12547*/            OPC_CheckType, MVT::i32,
/* 12549*/            OPC_MoveParent,
/* 12550*/            OPC_RecordChild1, // #2 = $T
/* 12551*/            OPC_RecordChild2, // #3 = $F
/* 12552*/            OPC_CheckType, MVT::f64,
/* 12554*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12556*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12564*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVZ_I64_D64), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETEQ:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVZ_I64_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (XOR64:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), FGR64:{ *:[f64] }:$F)
/* 12573*/          /*Scope*/ 28, /*->12602*/
/* 12574*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 12576*/            OPC_CheckType, MVT::i32,
/* 12578*/            OPC_MoveParent,
/* 12579*/            OPC_RecordChild1, // #2 = $T
/* 12580*/            OPC_RecordChild2, // #3 = $F
/* 12581*/            OPC_CheckType, MVT::f64,
/* 12583*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12585*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12593*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I64_D64), 0,
                          MVT::f64, 3/*#Ops*/, 2, 4, 3, 
                      // Src: (select:{ *:[f64] } (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETNE:{ *:[Other] }), FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 6
                      // Dst: (MOVN_I64_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, (XOR64:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), FGR64:{ *:[f64] }:$F)
/* 12602*/          0, /*End of Scope*/
/* 12603*/        0, /*End of Scope*/
/* 12604*/      0, /*End of Scope*/
/* 12605*/    /*Scope*/ 44|128,1/*172*/, /*->12779*/
/* 12607*/      OPC_RecordChild0, // #0 = $cond
/* 12608*/      OPC_Scope, 6|128,1/*134*/, /*->12745*/ // 2 children in Scope
/* 12611*/        OPC_CheckChild0Type, MVT::i32,
/* 12613*/        OPC_RecordChild1, // #1 = $T
/* 12614*/        OPC_RecordChild2, // #2 = $F
/* 12615*/        OPC_SwitchType /*2 cases */, 62, MVT::f32,// ->12680
/* 12618*/          OPC_Scope, 11, /*->12631*/ // 5 children in Scope
/* 12620*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12622*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_S), 0,
                          MVT::f32, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f32] } GPR32:{ *:[i32] }:$cond, FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 3
                      // Dst: (MOVN_I_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, GPR32:{ *:[i32] }:$cond, FGR32:{ *:[f32] }:$F)
/* 12631*/          /*Scope*/ 11, /*->12643*/
/* 12632*/            OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 12634*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SEL_S), 0,
                          MVT::f32, 3/*#Ops*/, 0, 2, 1, 
                      // Src: (select:{ *:[f32] } FGRCCOpnd:{ *:[i32] }:$fd_in, FGR32Opnd:{ *:[f32] }:$ft, FGR32Opnd:{ *:[f32] }:$fs) - Complexity = 3
                      // Dst: (SEL_S:{ *:[f32] } FGRCCOpnd:{ *:[i32] }:$fd_in, FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 12643*/          /*Scope*/ 11, /*->12655*/
/* 12644*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 12646*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_S_MM), 0,
                          MVT::f32, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f32] } GPR32:{ *:[i32] }:$cond, FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 3
                      // Dst: (MOVN_I_S_MM:{ *:[f32] } FGR32:{ *:[f32] }:$T, GPR32:{ *:[i32] }:$cond, FGR32:{ *:[f32] }:$F)
/* 12655*/          /*Scope*/ 11, /*->12667*/
/* 12656*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 12658*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SEL_S_MMR6), 0,
                          MVT::f32, 3/*#Ops*/, 0, 2, 1, 
                      // Src: (select:{ *:[f32] } FGRCCOpnd:{ *:[i32] }:$fd_in, FGR32Opnd:{ *:[f32] }:$ft, FGR32Opnd:{ *:[f32] }:$fs) - Complexity = 3
                      // Dst: (SEL_S_MMR6:{ *:[f32] } FGRCCOpnd:{ *:[i32] }:$fd_in, FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 12667*/          /*Scope*/ 11, /*->12679*/
/* 12668*/            OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 12670*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSELECT_S), 0,
                          MVT::f32, 3/*#Ops*/, 0, 1, 2, 
                      // Src: (select:{ *:[f32] } GPR32Opnd:{ *:[i32] }:$cond, FGR32Opnd:{ *:[f32] }:$T, FGR32Opnd:{ *:[f32] }:$F) - Complexity = 3
                      // Dst: (PseudoSELECT_S:{ *:[f32] } GPR32Opnd:{ *:[i32] }:$cond, FGR32Opnd:{ *:[f32] }:$T, FGR32Opnd:{ *:[f32] }:$F)
/* 12679*/          0, /*End of Scope*/
/* 12680*/        /*SwitchType*/ 62, MVT::f64,// ->12744
/* 12682*/          OPC_Scope, 11, /*->12695*/ // 5 children in Scope
/* 12684*/            OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12686*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_D32), 0,
                          MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f64] } GPR32:{ *:[i32] }:$cond, AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 3
                      // Dst: (MOVN_I_D32:{ *:[f64] } AFGR64:{ *:[f64] }:$T, GPR32:{ *:[i32] }:$cond, AFGR64:{ *:[f64] }:$F)
/* 12695*/          /*Scope*/ 11, /*->12707*/
/* 12696*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12698*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_D64), 0,
                          MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f64] } GPR32:{ *:[i32] }:$cond, FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 3
                      // Dst: (MOVN_I_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, GPR32:{ *:[i32] }:$cond, FGR64:{ *:[f64] }:$F)
/* 12707*/          /*Scope*/ 11, /*->12719*/
/* 12708*/            OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 12710*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I_D32_MM), 0,
                          MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                      // Src: (select:{ *:[f64] } GPR32:{ *:[i32] }:$cond, AFGR64:{ *:[f64] }:$T, AFGR64:{ *:[f64] }:$F) - Complexity = 3
                      // Dst: (MOVN_I_D32_MM:{ *:[f64] } AFGR64:{ *:[f64] }:$T, GPR32:{ *:[i32] }:$cond, AFGR64:{ *:[f64] }:$F)
/* 12719*/          /*Scope*/ 11, /*->12731*/
/* 12720*/            OPC_CheckPatternPredicate, 41, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 12722*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSELECT_D32), 0,
                          MVT::f64, 3/*#Ops*/, 0, 1, 2, 
                      // Src: (select:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$cond, AFGR64Opnd:{ *:[f64] }:$T, AFGR64Opnd:{ *:[f64] }:$F) - Complexity = 3
                      // Dst: (PseudoSELECT_D32:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$cond, AFGR64Opnd:{ *:[f64] }:$T, AFGR64Opnd:{ *:[f64] }:$F)
/* 12731*/          /*Scope*/ 11, /*->12743*/
/* 12732*/            OPC_CheckPatternPredicate, 42, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 12734*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSELECT_D64), 0,
                          MVT::f64, 3/*#Ops*/, 0, 1, 2, 
                      // Src: (select:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$cond, FGR64Opnd:{ *:[f64] }:$T, FGR64Opnd:{ *:[f64] }:$F) - Complexity = 3
                      // Dst: (PseudoSELECT_D64:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$cond, FGR64Opnd:{ *:[f64] }:$T, FGR64Opnd:{ *:[f64] }:$F)
/* 12743*/          0, /*End of Scope*/
/* 12744*/        0, // EndSwitchType
/* 12745*/      /*Scope*/ 32, /*->12778*/
/* 12746*/        OPC_CheckChild0Type, MVT::i64,
/* 12748*/        OPC_RecordChild1, // #1 = $T
/* 12749*/        OPC_RecordChild2, // #2 = $F
/* 12750*/        OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->12764
/* 12753*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12755*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I64_S), 0,
                        MVT::f32, 3/*#Ops*/, 1, 0, 2, 
                    // Src: (select:{ *:[f32] } GPR64:{ *:[i64] }:$cond, FGR32:{ *:[f32] }:$T, FGR32:{ *:[f32] }:$F) - Complexity = 3
                    // Dst: (MOVN_I64_S:{ *:[f32] } FGR32:{ *:[f32] }:$T, GPR64:{ *:[i64] }:$cond, FGR32:{ *:[f32] }:$F)
/* 12764*/        /*SwitchType*/ 11, MVT::f64,// ->12777
/* 12766*/          OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12768*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVN_I64_D64), 0,
                        MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                    // Src: (select:{ *:[f64] } GPR64:{ *:[i64] }:$cond, FGR64:{ *:[f64] }:$T, FGR64:{ *:[f64] }:$F) - Complexity = 3
                    // Dst: (MOVN_I64_D64:{ *:[f64] } FGR64:{ *:[f64] }:$T, GPR64:{ *:[i64] }:$cond, FGR64:{ *:[f64] }:$F)
/* 12777*/        0, // EndSwitchType
/* 12778*/      0, /*End of Scope*/
/* 12779*/    0, /*End of Scope*/
/* 12780*/  /*SwitchOpcode*/ 55|128,1/*183*/, TARGET_VAL(ISD::ATOMIC_LOAD),// ->12967
/* 12784*/    OPC_RecordMemRef,
/* 12785*/    OPC_RecordNode, // #0 = 'atomic_load' chained node
/* 12786*/    OPC_RecordChild1, // #1 = $a
/* 12787*/    OPC_SwitchType /*2 cases */, 104, MVT::i32,// ->12894
/* 12790*/      OPC_Scope, 16, /*->12808*/ // 6 children in Scope
/* 12792*/        OPC_CheckPredicate, 3, // Predicate_atomic_load_8
/* 12794*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 12796*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 12799*/        OPC_EmitMergeInputChains1_0,
/* 12800*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LB), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (atomic_load:{ *:[i32] } addr:{ *:[iPTR] }:$a)<<P:Predicate_atomic_load_8>> - Complexity = 13
                  // Dst: (LB:{ *:[i32] } addr:{ *:[iPTR] }:$a)
/* 12808*/      /*Scope*/ 16, /*->12825*/
/* 12809*/        OPC_CheckPredicate, 4, // Predicate_atomic_load_16
/* 12811*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 12813*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 12816*/        OPC_EmitMergeInputChains1_0,
/* 12817*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LH), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (atomic_load:{ *:[i32] } addr:{ *:[iPTR] }:$a)<<P:Predicate_atomic_load_16>> - Complexity = 13
                  // Dst: (LH:{ *:[i32] } addr:{ *:[iPTR] }:$a)
/* 12825*/      /*Scope*/ 16, /*->12842*/
/* 12826*/        OPC_CheckPredicate, 5, // Predicate_atomic_load_32
/* 12828*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 12830*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 12833*/        OPC_EmitMergeInputChains1_0,
/* 12834*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LW), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (atomic_load:{ *:[i32] } addr:{ *:[iPTR] }:$a)<<P:Predicate_atomic_load_32>> - Complexity = 13
                  // Dst: (LW:{ *:[i32] } addr:{ *:[iPTR] }:$a)
/* 12842*/      /*Scope*/ 16, /*->12859*/
/* 12843*/        OPC_CheckPredicate, 3, // Predicate_atomic_load_8
/* 12845*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 12847*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 12850*/        OPC_EmitMergeInputChains1_0,
/* 12851*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LB_MM), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (atomic_load:{ *:[i32] } addr:{ *:[iPTR] }:$a)<<P:Predicate_atomic_load_8>> - Complexity = 13
                  // Dst: (LB_MM:{ *:[i32] } addr:{ *:[i32] }:$a)
/* 12859*/      /*Scope*/ 16, /*->12876*/
/* 12860*/        OPC_CheckPredicate, 4, // Predicate_atomic_load_16
/* 12862*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 12864*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 12867*/        OPC_EmitMergeInputChains1_0,
/* 12868*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LH_MM), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (atomic_load:{ *:[i32] } addr:{ *:[iPTR] }:$a)<<P:Predicate_atomic_load_16>> - Complexity = 13
                  // Dst: (LH_MM:{ *:[i32] } addr:{ *:[iPTR] }:$a)
/* 12876*/      /*Scope*/ 16, /*->12893*/
/* 12877*/        OPC_CheckPredicate, 5, // Predicate_atomic_load_32
/* 12879*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 12881*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 12884*/        OPC_EmitMergeInputChains1_0,
/* 12885*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LW_MM), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (atomic_load:{ *:[i32] } addr:{ *:[iPTR] }:$a)<<P:Predicate_atomic_load_32>> - Complexity = 13
                  // Dst: (LW_MM:{ *:[i32] } addr:{ *:[iPTR] }:$a)
/* 12893*/      0, /*End of Scope*/
/* 12894*/    /*SwitchType*/ 70, MVT::i64,// ->12966
/* 12896*/      OPC_Scope, 16, /*->12914*/ // 4 children in Scope
/* 12898*/        OPC_CheckPredicate, 3, // Predicate_atomic_load_8
/* 12900*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 12902*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 12905*/        OPC_EmitMergeInputChains1_0,
/* 12906*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LB64), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i64, 2/*#Ops*/, 2, 3, 
                  // Src: (atomic_load:{ *:[i64] } addr:{ *:[iPTR] }:$a)<<P:Predicate_atomic_load_8>> - Complexity = 13
                  // Dst: (LB64:{ *:[i64] } addr:{ *:[iPTR] }:$a)
/* 12914*/      /*Scope*/ 16, /*->12931*/
/* 12915*/        OPC_CheckPredicate, 4, // Predicate_atomic_load_16
/* 12917*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 12919*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 12922*/        OPC_EmitMergeInputChains1_0,
/* 12923*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LH64), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i64, 2/*#Ops*/, 2, 3, 
                  // Src: (atomic_load:{ *:[i64] } addr:{ *:[iPTR] }:$a)<<P:Predicate_atomic_load_16>> - Complexity = 13
                  // Dst: (LH64:{ *:[i64] } addr:{ *:[iPTR] }:$a)
/* 12931*/      /*Scope*/ 16, /*->12948*/
/* 12932*/        OPC_CheckPredicate, 5, // Predicate_atomic_load_32
/* 12934*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 12936*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 12939*/        OPC_EmitMergeInputChains1_0,
/* 12940*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LW64), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i64, 2/*#Ops*/, 2, 3, 
                  // Src: (atomic_load:{ *:[i64] } addr:{ *:[iPTR] }:$a)<<P:Predicate_atomic_load_32>> - Complexity = 13
                  // Dst: (LW64:{ *:[i64] } addr:{ *:[iPTR] }:$a)
/* 12948*/      /*Scope*/ 16, /*->12965*/
/* 12949*/        OPC_CheckPredicate, 21, // Predicate_atomic_load_64
/* 12951*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 12953*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 12956*/        OPC_EmitMergeInputChains1_0,
/* 12957*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LD), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i64, 2/*#Ops*/, 2, 3, 
                  // Src: (atomic_load:{ *:[i64] } addr:{ *:[iPTR] }:$a)<<P:Predicate_atomic_load_64>> - Complexity = 13
                  // Dst: (LD:{ *:[i64] } addr:{ *:[iPTR] }:$a)
/* 12965*/      0, /*End of Scope*/
/* 12966*/    0, // EndSwitchType
/* 12967*/  /*SwitchOpcode*/ 7|128,1/*135*/, TARGET_VAL(ISD::ATOMIC_STORE),// ->13106
/* 12971*/    OPC_RecordMemRef,
/* 12972*/    OPC_RecordNode, // #0 = 'atomic_store' chained node
/* 12973*/    OPC_RecordChild1, // #1 = $a
/* 12974*/    OPC_RecordChild2, // #2 = $v
/* 12975*/    OPC_Scope, 55, /*->13032*/ // 2 children in Scope
/* 12977*/      OPC_CheckChild2Type, MVT::i32,
/* 12979*/      OPC_Scope, 16, /*->12997*/ // 3 children in Scope
/* 12981*/        OPC_CheckPredicate, 3, // Predicate_atomic_store_8
/* 12983*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 12985*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #3 #4
/* 12988*/        OPC_EmitMergeInputChains1_0,
/* 12989*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SB), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 2, 3, 4, 
                  // Src: (atomic_store addr:{ *:[iPTR] }:$a, GPR32:{ *:[i32] }:$v)<<P:Predicate_atomic_store_8>> - Complexity = 13
                  // Dst: (SB GPR32:{ *:[i32] }:$v, addr:{ *:[iPTR] }:$a)
/* 12997*/      /*Scope*/ 16, /*->13014*/
/* 12998*/        OPC_CheckPredicate, 4, // Predicate_atomic_store_16
/* 13000*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 13002*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #3 #4
/* 13005*/        OPC_EmitMergeInputChains1_0,
/* 13006*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SH), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 2, 3, 4, 
                  // Src: (atomic_store addr:{ *:[iPTR] }:$a, GPR32:{ *:[i32] }:$v)<<P:Predicate_atomic_store_16>> - Complexity = 13
                  // Dst: (SH GPR32:{ *:[i32] }:$v, addr:{ *:[iPTR] }:$a)
/* 13014*/      /*Scope*/ 16, /*->13031*/
/* 13015*/        OPC_CheckPredicate, 5, // Predicate_atomic_store_32
/* 13017*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 13019*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #3 #4
/* 13022*/        OPC_EmitMergeInputChains1_0,
/* 13023*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SW), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 2, 3, 4, 
                  // Src: (atomic_store addr:{ *:[iPTR] }:$a, GPR32:{ *:[i32] }:$v)<<P:Predicate_atomic_store_32>> - Complexity = 13
                  // Dst: (SW GPR32:{ *:[i32] }:$v, addr:{ *:[iPTR] }:$a)
/* 13031*/      0, /*End of Scope*/
/* 13032*/    /*Scope*/ 72, /*->13105*/
/* 13033*/      OPC_CheckChild2Type, MVT::i64,
/* 13035*/      OPC_Scope, 16, /*->13053*/ // 4 children in Scope
/* 13037*/        OPC_CheckPredicate, 3, // Predicate_atomic_store_8
/* 13039*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 13041*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #3 #4
/* 13044*/        OPC_EmitMergeInputChains1_0,
/* 13045*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SB64), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 2, 3, 4, 
                  // Src: (atomic_store addr:{ *:[iPTR] }:$a, GPR64:{ *:[i64] }:$v)<<P:Predicate_atomic_store_8>> - Complexity = 13
                  // Dst: (SB64 GPR64:{ *:[i64] }:$v, addr:{ *:[iPTR] }:$a)
/* 13053*/      /*Scope*/ 16, /*->13070*/
/* 13054*/        OPC_CheckPredicate, 4, // Predicate_atomic_store_16
/* 13056*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 13058*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #3 #4
/* 13061*/        OPC_EmitMergeInputChains1_0,
/* 13062*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SH64), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 2, 3, 4, 
                  // Src: (atomic_store addr:{ *:[iPTR] }:$a, GPR64:{ *:[i64] }:$v)<<P:Predicate_atomic_store_16>> - Complexity = 13
                  // Dst: (SH64 GPR64:{ *:[i64] }:$v, addr:{ *:[iPTR] }:$a)
/* 13070*/      /*Scope*/ 16, /*->13087*/
/* 13071*/        OPC_CheckPredicate, 5, // Predicate_atomic_store_32
/* 13073*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 13075*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #3 #4
/* 13078*/        OPC_EmitMergeInputChains1_0,
/* 13079*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SW64), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 2, 3, 4, 
                  // Src: (atomic_store addr:{ *:[iPTR] }:$a, GPR64:{ *:[i64] }:$v)<<P:Predicate_atomic_store_32>> - Complexity = 13
                  // Dst: (SW64 GPR64:{ *:[i64] }:$v, addr:{ *:[iPTR] }:$a)
/* 13087*/      /*Scope*/ 16, /*->13104*/
/* 13088*/        OPC_CheckPredicate, 21, // Predicate_atomic_store_64
/* 13090*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 13092*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #3 #4
/* 13095*/        OPC_EmitMergeInputChains1_0,
/* 13096*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SD), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 2, 3, 4, 
                  // Src: (atomic_store addr:{ *:[iPTR] }:$a, GPR64:{ *:[i64] }:$v)<<P:Predicate_atomic_store_64>> - Complexity = 13
                  // Dst: (SD GPR64:{ *:[i64] }:$v, addr:{ *:[iPTR] }:$a)
/* 13104*/      0, /*End of Scope*/
/* 13105*/    0, /*End of Scope*/
/* 13106*/  /*SwitchOpcode*/ 75, TARGET_VAL(MipsISD::LWL),// ->13184
/* 13109*/    OPC_RecordMemRef,
/* 13110*/    OPC_RecordNode, // #0 = 'MipsLWL' chained node
/* 13111*/    OPC_RecordChild1, // #1 = $addr
/* 13112*/    OPC_RecordChild2, // #2 = $src
/* 13113*/    OPC_SwitchType /*2 cases */, 50, MVT::i32,// ->13166
/* 13116*/      OPC_Scope, 15, /*->13133*/ // 3 children in Scope
/* 13118*/        OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13120*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #3 #4
/* 13123*/        OPC_EmitMergeInputChains1_0,
/* 13124*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LWL), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 3/*#Ops*/, 3, 4, 2, 
                  // Src: (MipsLWL:{ *:[i32] } addr:{ *:[iPTR] }:$addr, GPR32Opnd:{ *:[i32] }:$src) - Complexity = 12
                  // Dst: (LWL:{ *:[i32] } addr:{ *:[iPTR] }:$addr, GPR32Opnd:{ *:[i32] }:$src)
/* 13133*/      /*Scope*/ 15, /*->13149*/
/* 13134*/        OPC_CheckPatternPredicate, 43, // (Subtarget->hasEVA()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 13136*/        OPC_CheckComplexPat, /*CP*/12, /*#*/1, // selectIntAddr12MM:$addr #3 #4
/* 13139*/        OPC_EmitMergeInputChains1_0,
/* 13140*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LWLE_MM), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 3/*#Ops*/, 3, 4, 2, 
                  // Src: (MipsLWL:{ *:[i32] } addrimm12:{ *:[iPTR] }:$addr, GPR32Opnd:{ *:[i32] }:$src) - Complexity = 12
                  // Dst: (LWLE_MM:{ *:[i32] } addrimm12:{ *:[i32] }:$addr, GPR32Opnd:{ *:[i32] }:$src)
/* 13149*/      /*Scope*/ 15, /*->13165*/
/* 13150*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 13152*/        OPC_CheckComplexPat, /*CP*/12, /*#*/1, // selectIntAddr12MM:$addr #3 #4
/* 13155*/        OPC_EmitMergeInputChains1_0,
/* 13156*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LWL_MM), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 3/*#Ops*/, 3, 4, 2, 
                  // Src: (MipsLWL:{ *:[i32] } addrimm12:{ *:[iPTR] }:$addr, GPR32Opnd:{ *:[i32] }:$src) - Complexity = 12
                  // Dst: (LWL_MM:{ *:[i32] } addrimm12:{ *:[i32] }:$addr, GPR32Opnd:{ *:[i32] }:$src)
/* 13165*/      0, /*End of Scope*/
/* 13166*/    /*SwitchType*/ 15, MVT::i64,// ->13183
/* 13168*/      OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 13170*/      OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #3 #4
/* 13173*/      OPC_EmitMergeInputChains1_0,
/* 13174*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::LWL64), 0|OPFL_Chain|OPFL_MemRefs,
                    MVT::i64, 3/*#Ops*/, 3, 4, 2, 
                // Src: (MipsLWL:{ *:[i64] } addr:{ *:[iPTR] }:$addr, GPR64Opnd:{ *:[i64] }:$src) - Complexity = 12
                // Dst: (LWL64:{ *:[i64] } addr:{ *:[iPTR] }:$addr, GPR64Opnd:{ *:[i64] }:$src)
/* 13183*/    0, // EndSwitchType
/* 13184*/  /*SwitchOpcode*/ 75, TARGET_VAL(MipsISD::LWR),// ->13262
/* 13187*/    OPC_RecordMemRef,
/* 13188*/    OPC_RecordNode, // #0 = 'MipsLWR' chained node
/* 13189*/    OPC_RecordChild1, // #1 = $addr
/* 13190*/    OPC_RecordChild2, // #2 = $src
/* 13191*/    OPC_SwitchType /*2 cases */, 50, MVT::i32,// ->13244
/* 13194*/      OPC_Scope, 15, /*->13211*/ // 3 children in Scope
/* 13196*/        OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13198*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #3 #4
/* 13201*/        OPC_EmitMergeInputChains1_0,
/* 13202*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LWR), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 3/*#Ops*/, 3, 4, 2, 
                  // Src: (MipsLWR:{ *:[i32] } addr:{ *:[iPTR] }:$addr, GPR32Opnd:{ *:[i32] }:$src) - Complexity = 12
                  // Dst: (LWR:{ *:[i32] } addr:{ *:[iPTR] }:$addr, GPR32Opnd:{ *:[i32] }:$src)
/* 13211*/      /*Scope*/ 15, /*->13227*/
/* 13212*/        OPC_CheckPatternPredicate, 43, // (Subtarget->hasEVA()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 13214*/        OPC_CheckComplexPat, /*CP*/12, /*#*/1, // selectIntAddr12MM:$addr #3 #4
/* 13217*/        OPC_EmitMergeInputChains1_0,
/* 13218*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LWRE_MM), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 3/*#Ops*/, 3, 4, 2, 
                  // Src: (MipsLWR:{ *:[i32] } addrimm12:{ *:[iPTR] }:$addr, GPR32Opnd:{ *:[i32] }:$src) - Complexity = 12
                  // Dst: (LWRE_MM:{ *:[i32] } addrimm12:{ *:[i32] }:$addr, GPR32Opnd:{ *:[i32] }:$src)
/* 13227*/      /*Scope*/ 15, /*->13243*/
/* 13228*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 13230*/        OPC_CheckComplexPat, /*CP*/12, /*#*/1, // selectIntAddr12MM:$addr #3 #4
/* 13233*/        OPC_EmitMergeInputChains1_0,
/* 13234*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LWR_MM), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 3/*#Ops*/, 3, 4, 2, 
                  // Src: (MipsLWR:{ *:[i32] } addrimm12:{ *:[iPTR] }:$addr, GPR32Opnd:{ *:[i32] }:$src) - Complexity = 12
                  // Dst: (LWR_MM:{ *:[i32] } addrimm12:{ *:[i32] }:$addr, GPR32Opnd:{ *:[i32] }:$src)
/* 13243*/      0, /*End of Scope*/
/* 13244*/    /*SwitchType*/ 15, MVT::i64,// ->13261
/* 13246*/      OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 13248*/      OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #3 #4
/* 13251*/      OPC_EmitMergeInputChains1_0,
/* 13252*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::LWR64), 0|OPFL_Chain|OPFL_MemRefs,
                    MVT::i64, 3/*#Ops*/, 3, 4, 2, 
                // Src: (MipsLWR:{ *:[i64] } addr:{ *:[iPTR] }:$addr, GPR64Opnd:{ *:[i64] }:$src) - Complexity = 12
                // Dst: (LWR64:{ *:[i64] } addr:{ *:[iPTR] }:$addr, GPR64Opnd:{ *:[i64] }:$src)
/* 13261*/    0, // EndSwitchType
/* 13262*/  /*SwitchOpcode*/ 74, TARGET_VAL(MipsISD::SWL),// ->13339
/* 13265*/    OPC_RecordMemRef,
/* 13266*/    OPC_RecordNode, // #0 = 'MipsSWL' chained node
/* 13267*/    OPC_RecordChild1, // #1 = $rt
/* 13268*/    OPC_Scope, 50, /*->13320*/ // 2 children in Scope
/* 13270*/      OPC_CheckChild1Type, MVT::i32,
/* 13272*/      OPC_RecordChild2, // #2 = $addr
/* 13273*/      OPC_Scope, 14, /*->13289*/ // 3 children in Scope
/* 13275*/        OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13277*/        OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/* 13280*/        OPC_EmitMergeInputChains1_0,
/* 13281*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SWL), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 1, 3, 4, 
                  // Src: (MipsSWL GPR32Opnd:{ *:[i32] }:$rt, addr:{ *:[iPTR] }:$addr) - Complexity = 12
                  // Dst: (SWL GPR32Opnd:{ *:[i32] }:$rt, addr:{ *:[iPTR] }:$addr)
/* 13289*/      /*Scope*/ 14, /*->13304*/
/* 13290*/        OPC_CheckPatternPredicate, 43, // (Subtarget->hasEVA()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 13292*/        OPC_CheckComplexPat, /*CP*/12, /*#*/2, // selectIntAddr12MM:$addr #3 #4
/* 13295*/        OPC_EmitMergeInputChains1_0,
/* 13296*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SWLE_MM), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 1, 3, 4, 
                  // Src: (MipsSWL GPR32Opnd:{ *:[i32] }:$rt, addrimm12:{ *:[iPTR] }:$addr) - Complexity = 12
                  // Dst: (SWLE_MM GPR32Opnd:{ *:[i32] }:$rt, addrimm12:{ *:[i32] }:$addr)
/* 13304*/      /*Scope*/ 14, /*->13319*/
/* 13305*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 13307*/        OPC_CheckComplexPat, /*CP*/12, /*#*/2, // selectIntAddr12MM:$addr #3 #4
/* 13310*/        OPC_EmitMergeInputChains1_0,
/* 13311*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SWL_MM), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 1, 3, 4, 
                  // Src: (MipsSWL GPR32Opnd:{ *:[i32] }:$rt, addrimm12:{ *:[iPTR] }:$addr) - Complexity = 12
                  // Dst: (SWL_MM GPR32Opnd:{ *:[i32] }:$rt, addrimm12:{ *:[i32] }:$addr)
/* 13319*/      0, /*End of Scope*/
/* 13320*/    /*Scope*/ 17, /*->13338*/
/* 13321*/      OPC_CheckChild1Type, MVT::i64,
/* 13323*/      OPC_RecordChild2, // #2 = $addr
/* 13324*/      OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 13326*/      OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/* 13329*/      OPC_EmitMergeInputChains1_0,
/* 13330*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::SWL64), 0|OPFL_Chain|OPFL_MemRefs,
                    3/*#Ops*/, 1, 3, 4, 
                // Src: (MipsSWL GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr) - Complexity = 12
                // Dst: (SWL64 GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr)
/* 13338*/    0, /*End of Scope*/
/* 13339*/  /*SwitchOpcode*/ 74, TARGET_VAL(MipsISD::SWR),// ->13416
/* 13342*/    OPC_RecordMemRef,
/* 13343*/    OPC_RecordNode, // #0 = 'MipsSWR' chained node
/* 13344*/    OPC_RecordChild1, // #1 = $rt
/* 13345*/    OPC_Scope, 50, /*->13397*/ // 2 children in Scope
/* 13347*/      OPC_CheckChild1Type, MVT::i32,
/* 13349*/      OPC_RecordChild2, // #2 = $addr
/* 13350*/      OPC_Scope, 14, /*->13366*/ // 3 children in Scope
/* 13352*/        OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13354*/        OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/* 13357*/        OPC_EmitMergeInputChains1_0,
/* 13358*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SWR), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 1, 3, 4, 
                  // Src: (MipsSWR GPR32Opnd:{ *:[i32] }:$rt, addr:{ *:[iPTR] }:$addr) - Complexity = 12
                  // Dst: (SWR GPR32Opnd:{ *:[i32] }:$rt, addr:{ *:[iPTR] }:$addr)
/* 13366*/      /*Scope*/ 14, /*->13381*/
/* 13367*/        OPC_CheckPatternPredicate, 43, // (Subtarget->hasEVA()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 13369*/        OPC_CheckComplexPat, /*CP*/12, /*#*/2, // selectIntAddr12MM:$addr #3 #4
/* 13372*/        OPC_EmitMergeInputChains1_0,
/* 13373*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SWRE_MM), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 1, 3, 4, 
                  // Src: (MipsSWR GPR32Opnd:{ *:[i32] }:$rt, addrimm12:{ *:[iPTR] }:$addr) - Complexity = 12
                  // Dst: (SWRE_MM GPR32Opnd:{ *:[i32] }:$rt, addrimm12:{ *:[i32] }:$addr)
/* 13381*/      /*Scope*/ 14, /*->13396*/
/* 13382*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 13384*/        OPC_CheckComplexPat, /*CP*/12, /*#*/2, // selectIntAddr12MM:$addr #3 #4
/* 13387*/        OPC_EmitMergeInputChains1_0,
/* 13388*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SWR_MM), 0|OPFL_Chain|OPFL_MemRefs,
                      3/*#Ops*/, 1, 3, 4, 
                  // Src: (MipsSWR GPR32Opnd:{ *:[i32] }:$rt, addrimm12:{ *:[iPTR] }:$addr) - Complexity = 12
                  // Dst: (SWR_MM GPR32Opnd:{ *:[i32] }:$rt, addrimm12:{ *:[i32] }:$addr)
/* 13396*/      0, /*End of Scope*/
/* 13397*/    /*Scope*/ 17, /*->13415*/
/* 13398*/      OPC_CheckChild1Type, MVT::i64,
/* 13400*/      OPC_RecordChild2, // #2 = $addr
/* 13401*/      OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 13403*/      OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/* 13406*/      OPC_EmitMergeInputChains1_0,
/* 13407*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::SWR64), 0|OPFL_Chain|OPFL_MemRefs,
                    3/*#Ops*/, 1, 3, 4, 
                // Src: (MipsSWR GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr) - Complexity = 12
                // Dst: (SWR64 GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr)
/* 13415*/    0, /*End of Scope*/
/* 13416*/  /*SwitchOpcode*/ 21, TARGET_VAL(MipsISD::LDL),// ->13440
/* 13419*/    OPC_RecordMemRef,
/* 13420*/    OPC_RecordNode, // #0 = 'MipsLDL' chained node
/* 13421*/    OPC_RecordChild1, // #1 = $addr
/* 13422*/    OPC_RecordChild2, // #2 = $src
/* 13423*/    OPC_CheckType, MVT::i64,
/* 13425*/    OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13427*/    OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #3 #4
/* 13430*/    OPC_EmitMergeInputChains1_0,
/* 13431*/    OPC_MorphNodeTo1, TARGET_VAL(Mips::LDL), 0|OPFL_Chain|OPFL_MemRefs,
                  MVT::i64, 3/*#Ops*/, 3, 4, 2, 
              // Src: (MipsLDL:{ *:[i64] } addr:{ *:[iPTR] }:$addr, GPR64Opnd:{ *:[i64] }:$src) - Complexity = 12
              // Dst: (LDL:{ *:[i64] } addr:{ *:[iPTR] }:$addr, GPR64Opnd:{ *:[i64] }:$src)
/* 13440*/  /*SwitchOpcode*/ 21, TARGET_VAL(MipsISD::LDR),// ->13464
/* 13443*/    OPC_RecordMemRef,
/* 13444*/    OPC_RecordNode, // #0 = 'MipsLDR' chained node
/* 13445*/    OPC_RecordChild1, // #1 = $addr
/* 13446*/    OPC_RecordChild2, // #2 = $src
/* 13447*/    OPC_CheckType, MVT::i64,
/* 13449*/    OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13451*/    OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #3 #4
/* 13454*/    OPC_EmitMergeInputChains1_0,
/* 13455*/    OPC_MorphNodeTo1, TARGET_VAL(Mips::LDR), 0|OPFL_Chain|OPFL_MemRefs,
                  MVT::i64, 3/*#Ops*/, 3, 4, 2, 
              // Src: (MipsLDR:{ *:[i64] } addr:{ *:[iPTR] }:$addr, GPR64Opnd:{ *:[i64] }:$src) - Complexity = 12
              // Dst: (LDR:{ *:[i64] } addr:{ *:[iPTR] }:$addr, GPR64Opnd:{ *:[i64] }:$src)
/* 13464*/  /*SwitchOpcode*/ 20, TARGET_VAL(MipsISD::SDL),// ->13487
/* 13467*/    OPC_RecordMemRef,
/* 13468*/    OPC_RecordNode, // #0 = 'MipsSDL' chained node
/* 13469*/    OPC_RecordChild1, // #1 = $rt
/* 13470*/    OPC_CheckChild1Type, MVT::i64,
/* 13472*/    OPC_RecordChild2, // #2 = $addr
/* 13473*/    OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13475*/    OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/* 13478*/    OPC_EmitMergeInputChains1_0,
/* 13479*/    OPC_MorphNodeTo0, TARGET_VAL(Mips::SDL), 0|OPFL_Chain|OPFL_MemRefs,
                  3/*#Ops*/, 1, 3, 4, 
              // Src: (MipsSDL GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr) - Complexity = 12
              // Dst: (SDL GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr)
/* 13487*/  /*SwitchOpcode*/ 20, TARGET_VAL(MipsISD::SDR),// ->13510
/* 13490*/    OPC_RecordMemRef,
/* 13491*/    OPC_RecordNode, // #0 = 'MipsSDR' chained node
/* 13492*/    OPC_RecordChild1, // #1 = $rt
/* 13493*/    OPC_CheckChild1Type, MVT::i64,
/* 13495*/    OPC_RecordChild2, // #2 = $addr
/* 13496*/    OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13498*/    OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/* 13501*/    OPC_EmitMergeInputChains1_0,
/* 13502*/    OPC_MorphNodeTo0, TARGET_VAL(Mips::SDR), 0|OPFL_Chain|OPFL_MemRefs,
                  3/*#Ops*/, 1, 3, 4, 
              // Src: (MipsSDR GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr) - Complexity = 12
              // Dst: (SDR GPR64Opnd:{ *:[i64] }:$rt, addr:{ *:[iPTR] }:$addr)
/* 13510*/  /*SwitchOpcode*/ 117|128,10/*1397*/, TARGET_VAL(ISD::INTRINSIC_W_CHAIN),// ->14911
/* 13514*/    OPC_RecordNode, // #0 = 'intrinsic_w_chain' chained node
/* 13515*/    OPC_Scope, 69, /*->13586*/ // 42 children in Scope
/* 13517*/      OPC_CheckChild1Integer, 94|128,32/*4190*/, 
/* 13520*/      OPC_RecordChild2, // #1 = $rt
/* 13521*/      OPC_RecordChild3, // #2 = $rs_sa
/* 13522*/      OPC_Scope, 37, /*->13561*/ // 3 children in Scope
/* 13524*/        OPC_MoveChild3,
/* 13525*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 13528*/        OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 13530*/        OPC_MoveParent,
/* 13531*/        OPC_Scope, 13, /*->13546*/ // 2 children in Scope
/* 13533*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 13535*/          OPC_EmitMergeInputChains1_0,
/* 13536*/          OPC_EmitConvertToTarget, 2,
/* 13538*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLL_S_W), 0|OPFL_Chain,
                        MVT::i32, 2/*#Ops*/, 1, 3, 
                    // Src: (intrinsic_w_chain:{ *:[i32] } 4190:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$rs_sa) - Complexity = 12
                    // Dst: (SHLL_S_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] }):$rs_sa)
/* 13546*/        /*Scope*/ 13, /*->13560*/
/* 13547*/          OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 13549*/          OPC_EmitMergeInputChains1_0,
/* 13550*/          OPC_EmitConvertToTarget, 2,
/* 13552*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLL_S_W_MM), 0|OPFL_Chain,
                        MVT::i32, 2/*#Ops*/, 1, 3, 
                    // Src: (intrinsic_w_chain:{ *:[i32] } 4190:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$sa) - Complexity = 12
                    // Dst: (SHLL_S_W_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$sa)
/* 13560*/        0, /*End of Scope*/
/* 13561*/      /*Scope*/ 11, /*->13573*/
/* 13562*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 13564*/        OPC_EmitMergeInputChains1_0,
/* 13565*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_S_W), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4190:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHLLV_S_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 13573*/      /*Scope*/ 11, /*->13585*/
/* 13574*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 13576*/        OPC_EmitMergeInputChains1_0,
/* 13577*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_S_W_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4190:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHLLV_S_W_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 13585*/      0, /*End of Scope*/
/* 13586*/    /*Scope*/ 38, /*->13625*/
/* 13587*/      OPC_CheckChild1Integer, 76|128,32/*4172*/, 
/* 13590*/      OPC_RecordChild2, // #1 = $mask
/* 13591*/      OPC_MoveChild2,
/* 13592*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 13595*/      OPC_Scope, 13, /*->13610*/ // 2 children in Scope
/* 13597*/        OPC_CheckPredicate, 23, // Predicate_timmZExt10
/* 13599*/        OPC_MoveParent,
/* 13600*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 13602*/        OPC_EmitMergeInputChains1_0,
/* 13603*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::RDDSP), 0|OPFL_Chain,
                      MVT::i32, 1/*#Ops*/, 1, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4172:{ *:[iPTR] }, (timm:{ *:[i32] })<<P:Predicate_timmZExt10>>:$mask) - Complexity = 12
                  // Dst: (RDDSP:{ *:[i32] } (timm:{ *:[i32] }):$mask)
/* 13610*/      /*Scope*/ 13, /*->13624*/
/* 13611*/        OPC_CheckPredicate, 24, // Predicate_timmZExt7
/* 13613*/        OPC_MoveParent,
/* 13614*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 13616*/        OPC_EmitMergeInputChains1_0,
/* 13617*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::RDDSP_MM), 0|OPFL_Chain,
                      MVT::i32, 1/*#Ops*/, 1, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4172:{ *:[iPTR] }, (timm:{ *:[i32] })<<P:Predicate_timmZExt7>>:$mask) - Complexity = 12
                  // Dst: (RDDSP_MM:{ *:[i32] } (timm:{ *:[i32] }):$mask)
/* 13624*/      0, /*End of Scope*/
/* 13625*/    /*Scope*/ 31, /*->13657*/
/* 13626*/      OPC_CheckChild1Integer, 60|128,28/*3644*/, 
/* 13629*/      OPC_RecordChild2, // #1 = $rs
/* 13630*/      OPC_RecordChild3, // #2 = $rt
/* 13631*/      OPC_Scope, 11, /*->13644*/ // 2 children in Scope
/* 13633*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 13635*/        OPC_EmitMergeInputChains1_0,
/* 13636*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQ_S_W), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3644:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (ADDQ_S_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 13644*/      /*Scope*/ 11, /*->13656*/
/* 13645*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 13647*/        OPC_EmitMergeInputChains1_0,
/* 13648*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQ_S_W_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3644:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (ADDQ_S_W_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 13656*/      0, /*End of Scope*/
/* 13657*/    /*Scope*/ 31, /*->13689*/
/* 13658*/      OPC_CheckChild1Integer, 36|128,33/*4260*/, 
/* 13661*/      OPC_RecordChild2, // #1 = $rs
/* 13662*/      OPC_RecordChild3, // #2 = $rt
/* 13663*/      OPC_Scope, 11, /*->13676*/ // 2 children in Scope
/* 13665*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 13667*/        OPC_EmitMergeInputChains1_0,
/* 13668*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQ_S_W), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4260:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (SUBQ_S_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 13676*/      /*Scope*/ 11, /*->13688*/
/* 13677*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 13679*/        OPC_EmitMergeInputChains1_0,
/* 13680*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQ_S_W_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4260:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (SUBQ_S_W_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 13688*/      0, /*End of Scope*/
/* 13689*/    /*Scope*/ 28, /*->13718*/
/* 13690*/      OPC_CheckChild1Integer, 53|128,28/*3637*/, 
/* 13693*/      OPC_RecordChild2, // #1 = $rt
/* 13694*/      OPC_Scope, 10, /*->13706*/ // 2 children in Scope
/* 13696*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 13698*/        OPC_EmitMergeInputChains1_0,
/* 13699*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ABSQ_S_W), 0|OPFL_Chain,
                      MVT::i32, 1/*#Ops*/, 1, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3637:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (ABSQ_S_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt)
/* 13706*/      /*Scope*/ 10, /*->13717*/
/* 13707*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 13709*/        OPC_EmitMergeInputChains1_0,
/* 13710*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ABSQ_S_W_MM), 0|OPFL_Chain,
                      MVT::i32, 1/*#Ops*/, 1, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3637:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (ABSQ_S_W_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs)
/* 13717*/      0, /*End of Scope*/
/* 13718*/    /*Scope*/ 31, /*->13750*/
/* 13719*/      OPC_CheckChild1Integer, 12|128,32/*4108*/, 
/* 13722*/      OPC_RecordChild2, // #1 = $rs
/* 13723*/      OPC_RecordChild3, // #2 = $rt
/* 13724*/      OPC_Scope, 11, /*->13737*/ // 2 children in Scope
/* 13726*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 13728*/        OPC_EmitMergeInputChains1_0,
/* 13729*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEQ_S_W_PHL), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4108:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEQ_S_W_PHL:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 13737*/      /*Scope*/ 11, /*->13749*/
/* 13738*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 13740*/        OPC_EmitMergeInputChains1_0,
/* 13741*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEQ_S_W_PHL_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4108:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEQ_S_W_PHL_MM:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 13749*/      0, /*End of Scope*/
/* 13750*/    /*Scope*/ 31, /*->13782*/
/* 13751*/      OPC_CheckChild1Integer, 13|128,32/*4109*/, 
/* 13754*/      OPC_RecordChild2, // #1 = $rs
/* 13755*/      OPC_RecordChild3, // #2 = $rt
/* 13756*/      OPC_Scope, 11, /*->13769*/ // 2 children in Scope
/* 13758*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 13760*/        OPC_EmitMergeInputChains1_0,
/* 13761*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEQ_S_W_PHR), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4109:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEQ_S_W_PHR:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 13769*/      /*Scope*/ 11, /*->13781*/
/* 13770*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 13772*/        OPC_EmitMergeInputChains1_0,
/* 13773*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEQ_S_W_PHR_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4109:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEQ_S_W_PHR_MM:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 13781*/      0, /*End of Scope*/
/* 13782*/    /*Scope*/ 31, /*->13814*/
/* 13783*/      OPC_CheckChild1Integer, 98|128,29/*3810*/, 
/* 13786*/      OPC_RecordChild2, // #1 = $rs
/* 13787*/      OPC_RecordChild3, // #2 = $rt
/* 13788*/      OPC_Scope, 11, /*->13801*/ // 2 children in Scope
/* 13790*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 13792*/        OPC_EmitMergeInputChains1_0,
/* 13793*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGU_EQ_QB), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3810:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGU_EQ_QB:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 13801*/      /*Scope*/ 11, /*->13813*/
/* 13802*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 13804*/        OPC_EmitMergeInputChains1_0,
/* 13805*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGU_EQ_QB_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3810:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGU_EQ_QB_MM:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 13813*/      0, /*End of Scope*/
/* 13814*/    /*Scope*/ 31, /*->13846*/
/* 13815*/      OPC_CheckChild1Integer, 100|128,29/*3812*/, 
/* 13818*/      OPC_RecordChild2, // #1 = $rs
/* 13819*/      OPC_RecordChild3, // #2 = $rt
/* 13820*/      OPC_Scope, 11, /*->13833*/ // 2 children in Scope
/* 13822*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 13824*/        OPC_EmitMergeInputChains1_0,
/* 13825*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGU_LT_QB), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3812:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGU_LT_QB:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 13833*/      /*Scope*/ 11, /*->13845*/
/* 13834*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 13836*/        OPC_EmitMergeInputChains1_0,
/* 13837*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGU_LT_QB_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3812:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGU_LT_QB_MM:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 13845*/      0, /*End of Scope*/
/* 13846*/    /*Scope*/ 31, /*->13878*/
/* 13847*/      OPC_CheckChild1Integer, 99|128,29/*3811*/, 
/* 13850*/      OPC_RecordChild2, // #1 = $rs
/* 13851*/      OPC_RecordChild3, // #2 = $rt
/* 13852*/      OPC_Scope, 11, /*->13865*/ // 2 children in Scope
/* 13854*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 13856*/        OPC_EmitMergeInputChains1_0,
/* 13857*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGU_LE_QB), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3811:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGU_LE_QB:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 13865*/      /*Scope*/ 11, /*->13877*/
/* 13866*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 13868*/        OPC_EmitMergeInputChains1_0,
/* 13869*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGU_LE_QB_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3811:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGU_LE_QB_MM:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 13877*/      0, /*End of Scope*/
/* 13878*/    /*Scope*/ 31, /*->13910*/
/* 13879*/      OPC_CheckChild1Integer, 60|128,31/*4028*/, 
/* 13882*/      OPC_RecordChild2, // #1 = $base
/* 13883*/      OPC_RecordChild3, // #2 = $index
/* 13884*/      OPC_Scope, 11, /*->13897*/ // 2 children in Scope
/* 13886*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 13888*/        OPC_EmitMergeInputChains1_0,
/* 13889*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LWX), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4028:{ *:[iPTR] }, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index) - Complexity = 8
                  // Dst: (LWX:{ *:[i32] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index)
/* 13897*/      /*Scope*/ 11, /*->13909*/
/* 13898*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 13900*/        OPC_EmitMergeInputChains1_0,
/* 13901*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LWX_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4028:{ *:[iPTR] }, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index) - Complexity = 8
                  // Dst: (LWX_MM:{ *:[i32] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index)
/* 13909*/      0, /*End of Scope*/
/* 13910*/    /*Scope*/ 31, /*->13942*/
/* 13911*/      OPC_CheckChild1Integer, 58|128,31/*4026*/, 
/* 13914*/      OPC_RecordChild2, // #1 = $base
/* 13915*/      OPC_RecordChild3, // #2 = $index
/* 13916*/      OPC_Scope, 11, /*->13929*/ // 2 children in Scope
/* 13918*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 13920*/        OPC_EmitMergeInputChains1_0,
/* 13921*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LHX), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4026:{ *:[iPTR] }, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index) - Complexity = 8
                  // Dst: (LHX:{ *:[i32] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index)
/* 13929*/      /*Scope*/ 11, /*->13941*/
/* 13930*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 13932*/        OPC_EmitMergeInputChains1_0,
/* 13933*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LHX_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4026:{ *:[iPTR] }, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index) - Complexity = 8
                  // Dst: (LHX_MM:{ *:[i32] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index)
/* 13941*/      0, /*End of Scope*/
/* 13942*/    /*Scope*/ 31, /*->13974*/
/* 13943*/      OPC_CheckChild1Integer, 49|128,31/*4017*/, 
/* 13946*/      OPC_RecordChild2, // #1 = $base
/* 13947*/      OPC_RecordChild3, // #2 = $index
/* 13948*/      OPC_Scope, 11, /*->13961*/ // 2 children in Scope
/* 13950*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 13952*/        OPC_EmitMergeInputChains1_0,
/* 13953*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LBUX), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4017:{ *:[iPTR] }, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index) - Complexity = 8
                  // Dst: (LBUX:{ *:[i32] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index)
/* 13961*/      /*Scope*/ 11, /*->13973*/
/* 13962*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 13964*/        OPC_EmitMergeInputChains1_0,
/* 13965*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LBUX_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4017:{ *:[iPTR] }, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index) - Complexity = 8
                  // Dst: (LBUX_MM:{ *:[i32] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index)
/* 13973*/      0, /*End of Scope*/
/* 13974*/    /*Scope*/ 31, /*->14006*/
/* 13975*/      OPC_CheckChild1Integer, 44|128,31/*4012*/, 
/* 13978*/      OPC_RecordChild2, // #1 = $src
/* 13979*/      OPC_RecordChild3, // #2 = $rs
/* 13980*/      OPC_Scope, 11, /*->13993*/ // 2 children in Scope
/* 13982*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 13984*/        OPC_EmitMergeInputChains1_0,
/* 13985*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::INSV), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4012:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (INSV:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs)
/* 13993*/      /*Scope*/ 11, /*->14005*/
/* 13994*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 13996*/        OPC_EmitMergeInputChains1_0,
/* 13997*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::INSV_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4012:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (INSV_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs)
/* 14005*/      0, /*End of Scope*/
/* 14006*/    /*Scope*/ 31, /*->14038*/
/* 14007*/      OPC_CheckChild1Integer, 95|128,29/*3807*/, 
/* 14010*/      OPC_RecordChild2, // #1 = $rs
/* 14011*/      OPC_RecordChild3, // #2 = $rt
/* 14012*/      OPC_Scope, 11, /*->14025*/ // 2 children in Scope
/* 14014*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14016*/        OPC_EmitMergeInputChains1_0,
/* 14017*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGDU_EQ_QB), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3807:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGDU_EQ_QB:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14025*/      /*Scope*/ 11, /*->14037*/
/* 14026*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14028*/        OPC_EmitMergeInputChains1_0,
/* 14029*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGDU_EQ_QB_MMR2), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3807:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGDU_EQ_QB_MMR2:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14037*/      0, /*End of Scope*/
/* 14038*/    /*Scope*/ 31, /*->14070*/
/* 14039*/      OPC_CheckChild1Integer, 97|128,29/*3809*/, 
/* 14042*/      OPC_RecordChild2, // #1 = $rs
/* 14043*/      OPC_RecordChild3, // #2 = $rt
/* 14044*/      OPC_Scope, 11, /*->14057*/ // 2 children in Scope
/* 14046*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14048*/        OPC_EmitMergeInputChains1_0,
/* 14049*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGDU_LT_QB), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3809:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGDU_LT_QB:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14057*/      /*Scope*/ 11, /*->14069*/
/* 14058*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14060*/        OPC_EmitMergeInputChains1_0,
/* 14061*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGDU_LT_QB_MMR2), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3809:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGDU_LT_QB_MMR2:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14069*/      0, /*End of Scope*/
/* 14070*/    /*Scope*/ 31, /*->14102*/
/* 14071*/      OPC_CheckChild1Integer, 96|128,29/*3808*/, 
/* 14074*/      OPC_RecordChild2, // #1 = $rs
/* 14075*/      OPC_RecordChild3, // #2 = $rt
/* 14076*/      OPC_Scope, 11, /*->14089*/ // 2 children in Scope
/* 14078*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14080*/        OPC_EmitMergeInputChains1_0,
/* 14081*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGDU_LE_QB), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3808:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGDU_LE_QB:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14089*/      /*Scope*/ 11, /*->14101*/
/* 14090*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14092*/        OPC_EmitMergeInputChains1_0,
/* 14093*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGDU_LE_QB_MMR2), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3808:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGDU_LE_QB_MMR2:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14101*/      0, /*End of Scope*/
/* 14102*/    /*Scope*/ 31, /*->14134*/
/* 14103*/      OPC_CheckChild1Integer, 19|128,32/*4115*/, 
/* 14106*/      OPC_RecordChild2, // #1 = $rs
/* 14107*/      OPC_RecordChild3, // #2 = $rt
/* 14108*/      OPC_Scope, 11, /*->14121*/ // 2 children in Scope
/* 14110*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14112*/        OPC_EmitMergeInputChains1_0,
/* 14113*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_S_W), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4115:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (MULQ_S_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 14121*/      /*Scope*/ 11, /*->14133*/
/* 14122*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14124*/        OPC_EmitMergeInputChains1_0,
/* 14125*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_S_W_MMR2), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4115:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (MULQ_S_W_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 14133*/      0, /*End of Scope*/
/* 14134*/    /*Scope*/ 31, /*->14166*/
/* 14135*/      OPC_CheckChild1Integer, 17|128,32/*4113*/, 
/* 14138*/      OPC_RecordChild2, // #1 = $rs
/* 14139*/      OPC_RecordChild3, // #2 = $rt
/* 14140*/      OPC_Scope, 11, /*->14153*/ // 2 children in Scope
/* 14142*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14144*/        OPC_EmitMergeInputChains1_0,
/* 14145*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_RS_W), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4113:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (MULQ_RS_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 14153*/      /*Scope*/ 11, /*->14165*/
/* 14154*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14156*/        OPC_EmitMergeInputChains1_0,
/* 14157*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_RS_W_MMR2), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 4113:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (MULQ_RS_W_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 14165*/      0, /*End of Scope*/
/* 14166*/    /*Scope*/ 16, /*->14183*/
/* 14167*/      OPC_CheckChild1Integer, 77|128,28/*3661*/, 
/* 14170*/      OPC_RecordChild2, // #1 = $a
/* 14171*/      OPC_RecordChild3, // #2 = $b
/* 14172*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14174*/      OPC_EmitMergeInputChains1_0,
/* 14175*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDSC), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 1, 2, 
                // Src: (intrinsic_w_chain:{ *:[i32] } 3661:{ *:[iPTR] }, i32:{ *:[i32] }:$a, i32:{ *:[i32] }:$b) - Complexity = 8
                // Dst: (ADDSC:{ *:[i32] } i32:{ *:[i32] }:$a, i32:{ *:[i32] }:$b)
/* 14183*/    /*Scope*/ 16, /*->14200*/
/* 14184*/      OPC_CheckChild1Integer, 92|128,28/*3676*/, 
/* 14187*/      OPC_RecordChild2, // #1 = $a
/* 14188*/      OPC_RecordChild3, // #2 = $b
/* 14189*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14191*/      OPC_EmitMergeInputChains1_0,
/* 14192*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDWC), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 1, 2, 
                // Src: (intrinsic_w_chain:{ *:[i32] } 3676:{ *:[iPTR] }, i32:{ *:[i32] }:$a, i32:{ *:[i32] }:$b) - Complexity = 8
                // Dst: (ADDWC:{ *:[i32] } i32:{ *:[i32] }:$a, i32:{ *:[i32] }:$b)
/* 14200*/    /*Scope*/ 10, /*->14211*/
/* 14201*/      OPC_CheckChild1Integer, 35|128,29/*3747*/, 
/* 14204*/      OPC_EmitMergeInputChains1_0,
/* 14205*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BPOSGE32_PSEUDO), 0|OPFL_Chain,
                    MVT::i32, 0/*#Ops*/, 
                // Src: (intrinsic_w_chain:{ *:[i32] } 3747:{ *:[iPTR] }) - Complexity = 8
                // Dst: (BPOSGE32_PSEUDO:{ *:[i32] })
/* 14211*/    /*Scope*/ 69, /*->14281*/
/* 14212*/      OPC_CheckChild1Integer, 93|128,32/*4189*/, 
/* 14215*/      OPC_RecordChild2, // #1 = $rt
/* 14216*/      OPC_RecordChild3, // #2 = $rs_sa
/* 14217*/      OPC_Scope, 37, /*->14256*/ // 3 children in Scope
/* 14219*/        OPC_MoveChild3,
/* 14220*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 14223*/        OPC_CheckPredicate, 25, // Predicate_immZExt4
/* 14225*/        OPC_MoveParent,
/* 14226*/        OPC_Scope, 13, /*->14241*/ // 2 children in Scope
/* 14228*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14230*/          OPC_EmitMergeInputChains1_0,
/* 14231*/          OPC_EmitConvertToTarget, 2,
/* 14233*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLL_S_PH), 0|OPFL_Chain,
                        MVT::v2i16, 2/*#Ops*/, 1, 3, 
                    // Src: (intrinsic_w_chain:{ *:[v2i16] } 4189:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$rs_sa) - Complexity = 12
                    // Dst: (SHLL_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, (imm:{ *:[i32] }):$rs_sa)
/* 14241*/        /*Scope*/ 13, /*->14255*/
/* 14242*/          OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14244*/          OPC_EmitMergeInputChains1_0,
/* 14245*/          OPC_EmitConvertToTarget, 2,
/* 14247*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLL_S_PH_MM), 0|OPFL_Chain,
                        MVT::v2i16, 2/*#Ops*/, 1, 3, 
                    // Src: (intrinsic_w_chain:{ *:[v2i16] } 4189:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$sa) - Complexity = 12
                    // Dst: (SHLL_S_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, (imm:{ *:[i32] }):$sa)
/* 14255*/        0, /*End of Scope*/
/* 14256*/      /*Scope*/ 11, /*->14268*/
/* 14257*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14259*/        OPC_EmitMergeInputChains1_0,
/* 14260*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_S_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4189:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHLLV_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 14268*/      /*Scope*/ 11, /*->14280*/
/* 14269*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14271*/        OPC_EmitMergeInputChains1_0,
/* 14272*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_S_PH_MM), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4189:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHLLV_S_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 14280*/      0, /*End of Scope*/
/* 14281*/    /*Scope*/ 52, /*->14334*/
/* 14282*/      OPC_CheckChild1Integer, 91|128,32/*4187*/, 
/* 14285*/      OPC_RecordChild2, // #1 = $a
/* 14286*/      OPC_RecordChild3, // #2 = $shamt
/* 14287*/      OPC_Scope, 20, /*->14309*/ // 3 children in Scope
/* 14289*/        OPC_MoveChild3,
/* 14290*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 14293*/        OPC_CheckPredicate, 25, // Predicate_immZExt4
/* 14295*/        OPC_MoveParent,
/* 14296*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14298*/        OPC_EmitMergeInputChains1_0,
/* 14299*/        OPC_EmitConvertToTarget, 2,
/* 14301*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLL_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 3, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4187:{ *:[iPTR] }, v2i16:{ *:[v2i16] }:$a, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$shamt) - Complexity = 12
                  // Dst: (SHLL_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$shamt)
/* 14309*/      /*Scope*/ 11, /*->14321*/
/* 14310*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14312*/        OPC_EmitMergeInputChains1_0,
/* 14313*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4187:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHLLV_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 14321*/      /*Scope*/ 11, /*->14333*/
/* 14322*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14324*/        OPC_EmitMergeInputChains1_0,
/* 14325*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_PH_MM), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4187:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHLLV_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 14333*/      0, /*End of Scope*/
/* 14334*/    /*Scope*/ 52, /*->14387*/
/* 14335*/      OPC_CheckChild1Integer, 92|128,32/*4188*/, 
/* 14338*/      OPC_RecordChild2, // #1 = $a
/* 14339*/      OPC_RecordChild3, // #2 = $shamt
/* 14340*/      OPC_Scope, 20, /*->14362*/ // 3 children in Scope
/* 14342*/        OPC_MoveChild3,
/* 14343*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 14346*/        OPC_CheckPredicate, 26, // Predicate_immZExt3
/* 14348*/        OPC_MoveParent,
/* 14349*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14351*/        OPC_EmitMergeInputChains1_0,
/* 14352*/        OPC_EmitConvertToTarget, 2,
/* 14354*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLL_QB), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 3, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 4188:{ *:[iPTR] }, v4i8:{ *:[v4i8] }:$a, (imm:{ *:[i32] })<<P:Predicate_immZExt3>>:$shamt) - Complexity = 12
                  // Dst: (SHLL_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, (imm:{ *:[i32] })<<P:Predicate_immZExt3>>:$shamt)
/* 14362*/      /*Scope*/ 11, /*->14374*/
/* 14363*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14365*/        OPC_EmitMergeInputChains1_0,
/* 14366*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_QB), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 4188:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHLLV_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 14374*/      /*Scope*/ 11, /*->14386*/
/* 14375*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14377*/        OPC_EmitMergeInputChains1_0,
/* 14378*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_QB_MM), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 4188:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHLLV_QB_MM:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 14386*/      0, /*End of Scope*/
/* 14387*/    /*Scope*/ 28, /*->14416*/
/* 14388*/      OPC_CheckChild1Integer, 51|128,28/*3635*/, 
/* 14391*/      OPC_RecordChild2, // #1 = $rt
/* 14392*/      OPC_Scope, 10, /*->14404*/ // 2 children in Scope
/* 14394*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14396*/        OPC_EmitMergeInputChains1_0,
/* 14397*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ABSQ_S_PH), 0|OPFL_Chain,
                      MVT::v2i16, 1/*#Ops*/, 1, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3635:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ABSQ_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt)
/* 14404*/      /*Scope*/ 10, /*->14415*/
/* 14405*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14407*/        OPC_EmitMergeInputChains1_0,
/* 14408*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ABSQ_S_PH_MM), 0|OPFL_Chain,
                      MVT::v2i16, 1/*#Ops*/, 1, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3635:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs) - Complexity = 8
                  // Dst: (ABSQ_S_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs)
/* 14415*/      0, /*End of Scope*/
/* 14416*/    /*Scope*/ 31, /*->14448*/
/* 14417*/      OPC_CheckChild1Integer, 72|128,32/*4168*/, 
/* 14420*/      OPC_RecordChild2, // #1 = $rs
/* 14421*/      OPC_RecordChild3, // #2 = $rt
/* 14422*/      OPC_Scope, 11, /*->14435*/ // 2 children in Scope
/* 14424*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14426*/        OPC_EmitMergeInputChains1_0,
/* 14427*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQ_RS_PH_W), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4168:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (PRECRQ_RS_PH_W:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 14435*/      /*Scope*/ 11, /*->14447*/
/* 14436*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14438*/        OPC_EmitMergeInputChains1_0,
/* 14439*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQ_RS_PH_W_MM), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4168:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (PRECRQ_RS_PH_W_MM:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 14447*/      0, /*End of Scope*/
/* 14448*/    /*Scope*/ 31, /*->14480*/
/* 14449*/      OPC_CheckChild1Integer, 73|128,32/*4169*/, 
/* 14452*/      OPC_RecordChild2, // #1 = $rs
/* 14453*/      OPC_RecordChild3, // #2 = $rt
/* 14454*/      OPC_Scope, 11, /*->14467*/ // 2 children in Scope
/* 14456*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14458*/        OPC_EmitMergeInputChains1_0,
/* 14459*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQU_S_QB_PH), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 4169:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECRQU_S_QB_PH:{ *:[v4i8] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14467*/      /*Scope*/ 11, /*->14479*/
/* 14468*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14470*/        OPC_EmitMergeInputChains1_0,
/* 14471*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQU_S_QB_PH_MM), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 4169:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECRQU_S_QB_PH_MM:{ *:[v4i8] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14479*/      0, /*End of Scope*/
/* 14480*/    /*Scope*/ 31, /*->14512*/
/* 14481*/      OPC_CheckChild1Integer, 14|128,32/*4110*/, 
/* 14484*/      OPC_RecordChild2, // #1 = $rs
/* 14485*/      OPC_RecordChild3, // #2 = $rt
/* 14486*/      OPC_Scope, 11, /*->14499*/ // 2 children in Scope
/* 14488*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14490*/        OPC_EmitMergeInputChains1_0,
/* 14491*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEU_S_PH_QBL), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4110:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEU_S_PH_QBL:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14499*/      /*Scope*/ 11, /*->14511*/
/* 14500*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14502*/        OPC_EmitMergeInputChains1_0,
/* 14503*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEU_S_PH_QBL_MM), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4110:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEU_S_PH_QBL_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14511*/      0, /*End of Scope*/
/* 14512*/    /*Scope*/ 31, /*->14544*/
/* 14513*/      OPC_CheckChild1Integer, 15|128,32/*4111*/, 
/* 14516*/      OPC_RecordChild2, // #1 = $rs
/* 14517*/      OPC_RecordChild3, // #2 = $rt
/* 14518*/      OPC_Scope, 11, /*->14531*/ // 2 children in Scope
/* 14520*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14522*/        OPC_EmitMergeInputChains1_0,
/* 14523*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEU_S_PH_QBR), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4111:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEU_S_PH_QBR:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14531*/      /*Scope*/ 11, /*->14543*/
/* 14532*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14534*/        OPC_EmitMergeInputChains1_0,
/* 14535*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEU_S_PH_QBR_MM), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4111:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEU_S_PH_QBR_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14543*/      0, /*End of Scope*/
/* 14544*/    /*Scope*/ 31, /*->14576*/
/* 14545*/      OPC_CheckChild1Integer, 16|128,32/*4112*/, 
/* 14548*/      OPC_RecordChild2, // #1 = $rs
/* 14549*/      OPC_RecordChild3, // #2 = $rt
/* 14550*/      OPC_Scope, 11, /*->14563*/ // 2 children in Scope
/* 14552*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14554*/        OPC_EmitMergeInputChains1_0,
/* 14555*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_RS_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4112:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULQ_RS_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14563*/      /*Scope*/ 11, /*->14575*/
/* 14564*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14566*/        OPC_EmitMergeInputChains1_0,
/* 14567*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_RS_PH_MM), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4112:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULQ_RS_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14575*/      0, /*End of Scope*/
/* 14576*/    /*Scope*/ 31, /*->14608*/
/* 14577*/      OPC_CheckChild1Integer, 56|128,32/*4152*/, 
/* 14580*/      OPC_RecordChild2, // #1 = $rs
/* 14581*/      OPC_RecordChild3, // #2 = $rt
/* 14582*/      OPC_Scope, 11, /*->14595*/ // 2 children in Scope
/* 14584*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14586*/        OPC_EmitMergeInputChains1_0,
/* 14587*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PICK_QB), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 4152:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PICK_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14595*/      /*Scope*/ 11, /*->14607*/
/* 14596*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14598*/        OPC_EmitMergeInputChains1_0,
/* 14599*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PICK_QB_MM), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 4152:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PICK_QB_MM:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14607*/      0, /*End of Scope*/
/* 14608*/    /*Scope*/ 31, /*->14640*/
/* 14609*/      OPC_CheckChild1Integer, 55|128,32/*4151*/, 
/* 14612*/      OPC_RecordChild2, // #1 = $rs
/* 14613*/      OPC_RecordChild3, // #2 = $rt
/* 14614*/      OPC_Scope, 11, /*->14627*/ // 2 children in Scope
/* 14616*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14618*/        OPC_EmitMergeInputChains1_0,
/* 14619*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PICK_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4151:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PICK_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14627*/      /*Scope*/ 11, /*->14639*/
/* 14628*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14630*/        OPC_EmitMergeInputChains1_0,
/* 14631*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PICK_PH_MM), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4151:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PICK_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14639*/      0, /*End of Scope*/
/* 14640*/    /*Scope*/ 31, /*->14672*/
/* 14641*/      OPC_CheckChild1Integer, 78|128,28/*3662*/, 
/* 14644*/      OPC_RecordChild2, // #1 = $rs
/* 14645*/      OPC_RecordChild3, // #2 = $rt
/* 14646*/      OPC_Scope, 11, /*->14659*/ // 2 children in Scope
/* 14648*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14650*/        OPC_EmitMergeInputChains1_0,
/* 14651*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3662:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDU_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14659*/      /*Scope*/ 11, /*->14671*/
/* 14660*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14662*/        OPC_EmitMergeInputChains1_0,
/* 14663*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU_PH_MMR2), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3662:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDU_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14671*/      0, /*End of Scope*/
/* 14672*/    /*Scope*/ 31, /*->14704*/
/* 14673*/      OPC_CheckChild1Integer, 80|128,28/*3664*/, 
/* 14676*/      OPC_RecordChild2, // #1 = $rs
/* 14677*/      OPC_RecordChild3, // #2 = $rt
/* 14678*/      OPC_Scope, 11, /*->14691*/ // 2 children in Scope
/* 14680*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14682*/        OPC_EmitMergeInputChains1_0,
/* 14683*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU_S_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3664:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDU_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14691*/      /*Scope*/ 11, /*->14703*/
/* 14692*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14694*/        OPC_EmitMergeInputChains1_0,
/* 14695*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU_S_PH_MMR2), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3664:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDU_S_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14703*/      0, /*End of Scope*/
/* 14704*/    /*Scope*/ 31, /*->14736*/
/* 14705*/      OPC_CheckChild1Integer, 57|128,33/*4281*/, 
/* 14708*/      OPC_RecordChild2, // #1 = $rs
/* 14709*/      OPC_RecordChild3, // #2 = $rt
/* 14710*/      OPC_Scope, 11, /*->14723*/ // 2 children in Scope
/* 14712*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14714*/        OPC_EmitMergeInputChains1_0,
/* 14715*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4281:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBU_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14723*/      /*Scope*/ 11, /*->14735*/
/* 14724*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14726*/        OPC_EmitMergeInputChains1_0,
/* 14727*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_PH_MMR2), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4281:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBU_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14735*/      0, /*End of Scope*/
/* 14736*/    /*Scope*/ 31, /*->14768*/
/* 14737*/      OPC_CheckChild1Integer, 59|128,33/*4283*/, 
/* 14740*/      OPC_RecordChild2, // #1 = $rs
/* 14741*/      OPC_RecordChild3, // #2 = $rt
/* 14742*/      OPC_Scope, 11, /*->14755*/ // 2 children in Scope
/* 14744*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14746*/        OPC_EmitMergeInputChains1_0,
/* 14747*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_S_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4283:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBU_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14755*/      /*Scope*/ 11, /*->14767*/
/* 14756*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14758*/        OPC_EmitMergeInputChains1_0,
/* 14759*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_S_PH_MMR2), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4283:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBU_S_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14767*/      0, /*End of Scope*/
/* 14768*/    /*Scope*/ 28, /*->14797*/
/* 14769*/      OPC_CheckChild1Integer, 52|128,28/*3636*/, 
/* 14772*/      OPC_RecordChild2, // #1 = $rt
/* 14773*/      OPC_Scope, 10, /*->14785*/ // 2 children in Scope
/* 14775*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14777*/        OPC_EmitMergeInputChains1_0,
/* 14778*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ABSQ_S_QB), 0|OPFL_Chain,
                      MVT::v4i8, 1/*#Ops*/, 1, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 3636:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (ABSQ_S_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 14785*/      /*Scope*/ 10, /*->14796*/
/* 14786*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14788*/        OPC_EmitMergeInputChains1_0,
/* 14789*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ABSQ_S_QB_MMR2), 0|OPFL_Chain,
                      MVT::v4i8, 1/*#Ops*/, 1, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 3636:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (ABSQ_S_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 14796*/      0, /*End of Scope*/
/* 14797*/    /*Scope*/ 31, /*->14829*/
/* 14798*/      OPC_CheckChild1Integer, 11|128,32/*4107*/, 
/* 14801*/      OPC_RecordChild2, // #1 = $rs
/* 14802*/      OPC_RecordChild3, // #2 = $rt
/* 14803*/      OPC_Scope, 11, /*->14816*/ // 2 children in Scope
/* 14805*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14807*/        OPC_EmitMergeInputChains1_0,
/* 14808*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MUL_S_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4107:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MUL_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14816*/      /*Scope*/ 11, /*->14828*/
/* 14817*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14819*/        OPC_EmitMergeInputChains1_0,
/* 14820*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MUL_S_PH_MMR2), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4107:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MUL_S_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14828*/      0, /*End of Scope*/
/* 14829*/    /*Scope*/ 31, /*->14861*/
/* 14830*/      OPC_CheckChild1Integer, 18|128,32/*4114*/, 
/* 14833*/      OPC_RecordChild2, // #1 = $rs
/* 14834*/      OPC_RecordChild3, // #2 = $rt
/* 14835*/      OPC_Scope, 11, /*->14848*/ // 2 children in Scope
/* 14837*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14839*/        OPC_EmitMergeInputChains1_0,
/* 14840*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_S_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4114:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULQ_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14848*/      /*Scope*/ 11, /*->14860*/
/* 14849*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14851*/        OPC_EmitMergeInputChains1_0,
/* 14852*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_S_PH_MMR2), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 4114:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULQ_S_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14860*/      0, /*End of Scope*/
/* 14861*/    /*Scope*/ 31, /*->14893*/
/* 14862*/      OPC_CheckChild1Integer, 67|128,32/*4163*/, 
/* 14865*/      OPC_RecordChild2, // #1 = $rs
/* 14866*/      OPC_RecordChild3, // #2 = $rt
/* 14867*/      OPC_Scope, 11, /*->14880*/ // 2 children in Scope
/* 14869*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14871*/        OPC_EmitMergeInputChains1_0,
/* 14872*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECR_QB_PH), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 4163:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECR_QB_PH:{ *:[v4i8] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14880*/      /*Scope*/ 11, /*->14892*/
/* 14881*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14883*/        OPC_EmitMergeInputChains1_0,
/* 14884*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECR_QB_PH_MMR2), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 4163:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECR_QB_PH_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14892*/      0, /*End of Scope*/
/* 14893*/    /*Scope*/ 16, /*->14910*/
/* 14894*/      OPC_CheckChild1Integer, 8|128,32/*4104*/, 
/* 14897*/      OPC_RecordChild2, // #1 = $a
/* 14898*/      OPC_RecordChild3, // #2 = $b
/* 14899*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14901*/      OPC_EmitMergeInputChains1_0,
/* 14902*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MUL_PH), 0|OPFL_Chain,
                    MVT::v2i16, 2/*#Ops*/, 1, 2, 
                // Src: (intrinsic_w_chain:{ *:[v2i16] } 4104:{ *:[iPTR] }, v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b) - Complexity = 8
                // Dst: (MUL_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b)
/* 14910*/    0, /*End of Scope*/
/* 14911*/  /*SwitchOpcode*/ 28|128,40/*5148*/, TARGET_VAL(ISD::INTRINSIC_WO_CHAIN),// ->20063
/* 14915*/    OPC_Scope, 65, /*->14982*/ // 254 children in Scope
/* 14917*/      OPC_CheckChild0Integer, 99|128,32/*4195*/, 
/* 14920*/      OPC_RecordChild1, // #0 = $rt
/* 14921*/      OPC_RecordChild2, // #1 = $rs_sa
/* 14922*/      OPC_Scope, 35, /*->14959*/ // 3 children in Scope
/* 14924*/        OPC_MoveChild2,
/* 14925*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 14928*/        OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 14930*/        OPC_MoveParent,
/* 14931*/        OPC_Scope, 12, /*->14945*/ // 2 children in Scope
/* 14933*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14935*/          OPC_EmitConvertToTarget, 1,
/* 14937*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_R_W), 0,
                        MVT::i32, 2/*#Ops*/, 0, 2, 
                    // Src: (intrinsic_wo_chain:{ *:[i32] } 4195:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$rs_sa) - Complexity = 12
                    // Dst: (SHRA_R_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] }):$rs_sa)
/* 14945*/        /*Scope*/ 12, /*->14958*/
/* 14946*/          OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14948*/          OPC_EmitConvertToTarget, 1,
/* 14950*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_R_W_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 2, 
                    // Src: (intrinsic_wo_chain:{ *:[i32] } 4195:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$sa) - Complexity = 12
                    // Dst: (SHRA_R_W_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$sa)
/* 14958*/        0, /*End of Scope*/
/* 14959*/      /*Scope*/ 10, /*->14970*/
/* 14960*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14962*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_R_W), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4195:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHRAV_R_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 14970*/      /*Scope*/ 10, /*->14981*/
/* 14971*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14973*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_R_W_MM), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4195:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHRAV_R_W_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 14981*/      0, /*End of Scope*/
/* 14982*/    /*Scope*/ 39, /*->15022*/
/* 14983*/      OPC_CheckChild0Integer, 95|128,28/*3679*/, 
/* 14986*/      OPC_RecordChild1, // #0 = $src
/* 14987*/      OPC_RecordChild2, // #1 = $rs
/* 14988*/      OPC_RecordChild3, // #2 = $sa
/* 14989*/      OPC_MoveChild3,
/* 14990*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 14993*/      OPC_CheckPredicate, 22, // Predicate_timmZExt5
/* 14995*/      OPC_MoveParent,
/* 14996*/      OPC_Scope, 11, /*->15009*/ // 2 children in Scope
/* 14998*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15000*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::APPEND), 0,
                      MVT::i32, 3/*#Ops*/, 1, 2, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3679:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] })<<P:Predicate_timmZExt5>>:$sa) - Complexity = 12
                  // Dst: (APPEND:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 15009*/      /*Scope*/ 11, /*->15021*/
/* 15010*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15012*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::APPEND_MMR2), 0,
                      MVT::i32, 3/*#Ops*/, 1, 2, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3679:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] })<<P:Predicate_timmZExt5>>:$sa) - Complexity = 12
                  // Dst: (APPEND_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 15021*/      0, /*End of Scope*/
/* 15022*/    /*Scope*/ 45, /*->15068*/
/* 15023*/      OPC_CheckChild0Integer, 120|128,28/*3704*/, 
/* 15026*/      OPC_RecordChild1, // #0 = $src
/* 15027*/      OPC_RecordChild2, // #1 = $rs
/* 15028*/      OPC_RecordChild3, // #2 = $sa
/* 15029*/      OPC_MoveChild3,
/* 15030*/      OPC_SwitchOpcode /*2 cases */, 14, TARGET_VAL(ISD::TargetConstant),// ->15048
/* 15034*/        OPC_CheckPredicate, 27, // Predicate_timmZExt2
/* 15036*/        OPC_MoveParent,
/* 15037*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15039*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BALIGN), 0,
                      MVT::i32, 3/*#Ops*/, 1, 2, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3704:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] })<<P:Predicate_timmZExt2>>:$sa) - Complexity = 12
                  // Dst: (BALIGN:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 15048*/      /*SwitchOpcode*/ 16, TARGET_VAL(ISD::Constant),// ->15067
/* 15051*/        OPC_CheckPredicate, 27, // Predicate_immZExt2
/* 15053*/        OPC_MoveParent,
/* 15054*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15056*/        OPC_EmitConvertToTarget, 2,
/* 15058*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BALIGN_MMR2), 0,
                      MVT::i32, 3/*#Ops*/, 1, 3, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3704:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt2>>:$bp) - Complexity = 12
                  // Dst: (BALIGN_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$bp, GPR32Opnd:{ *:[i32] }:$src)
/* 15067*/      0, // EndSwitchOpcode
/* 15068*/    /*Scope*/ 39, /*->15108*/
/* 15069*/      OPC_CheckChild0Integer, 74|128,32/*4170*/, 
/* 15072*/      OPC_RecordChild1, // #0 = $src
/* 15073*/      OPC_RecordChild2, // #1 = $rs
/* 15074*/      OPC_RecordChild3, // #2 = $sa
/* 15075*/      OPC_MoveChild3,
/* 15076*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 15079*/      OPC_CheckPredicate, 22, // Predicate_timmZExt5
/* 15081*/      OPC_MoveParent,
/* 15082*/      OPC_Scope, 11, /*->15095*/ // 2 children in Scope
/* 15084*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15086*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PREPEND), 0,
                      MVT::i32, 3/*#Ops*/, 1, 2, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4170:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] })<<P:Predicate_timmZExt5>>:$sa) - Complexity = 12
                  // Dst: (PREPEND:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 15095*/      /*Scope*/ 11, /*->15107*/
/* 15096*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15098*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PREPEND_MMR2), 0,
                      MVT::i32, 3/*#Ops*/, 1, 2, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4170:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] })<<P:Predicate_timmZExt5>>:$sa) - Complexity = 12
                  // Dst: (PREPEND_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 15107*/      0, /*End of Scope*/
/* 15108*/    /*Scope*/ 29, /*->15138*/
/* 15109*/      OPC_CheckChild0Integer, 123|128,31/*4091*/, 
/* 15112*/      OPC_RecordChild1, // #0 = $rs
/* 15113*/      OPC_RecordChild2, // #1 = $rt
/* 15114*/      OPC_Scope, 10, /*->15126*/ // 2 children in Scope
/* 15116*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15118*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MODSUB), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4091:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (MODSUB:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15126*/      /*Scope*/ 10, /*->15137*/
/* 15127*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15129*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MODSUB_MM), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4091:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (MODSUB_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15137*/      0, /*End of Scope*/
/* 15138*/    /*Scope*/ 26, /*->15165*/
/* 15139*/      OPC_CheckChild0Integer, 75|128,32/*4171*/, 
/* 15142*/      OPC_RecordChild1, // #0 = $rs
/* 15143*/      OPC_Scope, 9, /*->15154*/ // 2 children in Scope
/* 15145*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15147*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::RADDU_W_QB), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4171:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (RADDU_W_QB:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 15154*/      /*Scope*/ 9, /*->15164*/
/* 15155*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15157*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::RADDU_W_QB_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4171:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (RADDU_W_QB_MM:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 15164*/      0, /*End of Scope*/
/* 15165*/    /*Scope*/ 26, /*->15192*/
/* 15166*/      OPC_CheckChild0Integer, 57|128,32/*4153*/, 
/* 15169*/      OPC_RecordChild1, // #0 = $rt
/* 15170*/      OPC_Scope, 9, /*->15181*/ // 2 children in Scope
/* 15172*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15174*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQ_W_PHL), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4153:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECEQ_W_PHL:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rt)
/* 15181*/      /*Scope*/ 9, /*->15191*/
/* 15182*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15184*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQ_W_PHL_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4153:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs) - Complexity = 8
                  // Dst: (PRECEQ_W_PHL_MM:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rs)
/* 15191*/      0, /*End of Scope*/
/* 15192*/    /*Scope*/ 26, /*->15219*/
/* 15193*/      OPC_CheckChild0Integer, 58|128,32/*4154*/, 
/* 15196*/      OPC_RecordChild1, // #0 = $rt
/* 15197*/      OPC_Scope, 9, /*->15208*/ // 2 children in Scope
/* 15199*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15201*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQ_W_PHR), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4154:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECEQ_W_PHR:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rt)
/* 15208*/      /*Scope*/ 9, /*->15218*/
/* 15209*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15211*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQ_W_PHR_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4154:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs) - Complexity = 8
                  // Dst: (PRECEQ_W_PHR_MM:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rs)
/* 15218*/      0, /*End of Scope*/
/* 15219*/    /*Scope*/ 26, /*->15246*/
/* 15220*/      OPC_CheckChild0Integer, 17|128,29/*3729*/, 
/* 15223*/      OPC_RecordChild1, // #0 = $rt
/* 15224*/      OPC_Scope, 9, /*->15235*/ // 2 children in Scope
/* 15226*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15228*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BITREV), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3729:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (BITREV:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt)
/* 15235*/      /*Scope*/ 9, /*->15245*/
/* 15236*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15238*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BITREV_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3729:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (BITREV_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs)
/* 15245*/      0, /*End of Scope*/
/* 15246*/    /*Scope*/ 29, /*->15276*/
/* 15247*/      OPC_CheckChild0Integer, 64|128,28/*3648*/, 
/* 15250*/      OPC_RecordChild1, // #0 = $rs
/* 15251*/      OPC_RecordChild2, // #1 = $rt
/* 15252*/      OPC_Scope, 10, /*->15264*/ // 2 children in Scope
/* 15254*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15256*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_W), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3648:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15264*/      /*Scope*/ 10, /*->15275*/
/* 15265*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15267*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_W_MMR2), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3648:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_W_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15275*/      0, /*End of Scope*/
/* 15276*/    /*Scope*/ 29, /*->15306*/
/* 15277*/      OPC_CheckChild0Integer, 63|128,28/*3647*/, 
/* 15280*/      OPC_RecordChild1, // #0 = $rs
/* 15281*/      OPC_RecordChild2, // #1 = $rt
/* 15282*/      OPC_Scope, 10, /*->15294*/ // 2 children in Scope
/* 15284*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15286*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_R_W), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3647:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_R_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15294*/      /*Scope*/ 10, /*->15305*/
/* 15295*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15297*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_R_W_MMR2), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3647:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_R_W_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15305*/      0, /*End of Scope*/
/* 15306*/    /*Scope*/ 29, /*->15336*/
/* 15307*/      OPC_CheckChild0Integer, 40|128,33/*4264*/, 
/* 15310*/      OPC_RecordChild1, // #0 = $rs
/* 15311*/      OPC_RecordChild2, // #1 = $rt
/* 15312*/      OPC_Scope, 10, /*->15324*/ // 2 children in Scope
/* 15314*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15316*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_W), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4264:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15324*/      /*Scope*/ 10, /*->15335*/
/* 15325*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15327*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_W_MMR2), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4264:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_W_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15335*/      0, /*End of Scope*/
/* 15336*/    /*Scope*/ 29, /*->15366*/
/* 15337*/      OPC_CheckChild0Integer, 39|128,33/*4263*/, 
/* 15340*/      OPC_RecordChild1, // #0 = $rs
/* 15341*/      OPC_RecordChild2, // #1 = $rt
/* 15342*/      OPC_Scope, 10, /*->15354*/ // 2 children in Scope
/* 15344*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15346*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_R_W), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4263:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_R_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15354*/      /*Scope*/ 10, /*->15365*/
/* 15355*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15357*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_R_W_MMR2), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 4263:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_R_W_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15365*/      0, /*End of Scope*/
/* 15366*/    /*Scope*/ 65, /*->15432*/
/* 15367*/      OPC_CheckChild0Integer, 97|128,32/*4193*/, 
/* 15370*/      OPC_RecordChild1, // #0 = $rt
/* 15371*/      OPC_RecordChild2, // #1 = $rs_sa
/* 15372*/      OPC_Scope, 35, /*->15409*/ // 3 children in Scope
/* 15374*/        OPC_MoveChild2,
/* 15375*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 15378*/        OPC_CheckPredicate, 25, // Predicate_immZExt4
/* 15380*/        OPC_MoveParent,
/* 15381*/        OPC_Scope, 12, /*->15395*/ // 2 children in Scope
/* 15383*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15385*/          OPC_EmitConvertToTarget, 1,
/* 15387*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_R_PH), 0,
                        MVT::v2i16, 2/*#Ops*/, 0, 2, 
                    // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4193:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$rs_sa) - Complexity = 12
                    // Dst: (SHRA_R_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, (imm:{ *:[i32] }):$rs_sa)
/* 15395*/        /*Scope*/ 12, /*->15408*/
/* 15396*/          OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15398*/          OPC_EmitConvertToTarget, 1,
/* 15400*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_R_PH_MM), 0,
                        MVT::v2i16, 2/*#Ops*/, 0, 2, 
                    // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4193:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$sa) - Complexity = 12
                    // Dst: (SHRA_R_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, (imm:{ *:[i32] }):$sa)
/* 15408*/        0, /*End of Scope*/
/* 15409*/      /*Scope*/ 10, /*->15420*/
/* 15410*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15412*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_R_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4193:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHRAV_R_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 15420*/      /*Scope*/ 10, /*->15431*/
/* 15421*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15423*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_R_PH_MM), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4193:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHRAV_R_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 15431*/      0, /*End of Scope*/
/* 15432*/    /*Scope*/ 60, /*->15493*/
/* 15433*/      OPC_CheckChild0Integer, 78|128,32/*4174*/, 
/* 15436*/      OPC_RecordChild1, // #0 = $imm
/* 15437*/      OPC_Scope, 33, /*->15472*/ // 3 children in Scope
/* 15439*/        OPC_MoveChild1,
/* 15440*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 15443*/        OPC_CheckPredicate, 28, // Predicate_immZExt8
/* 15445*/        OPC_MoveParent,
/* 15446*/        OPC_Scope, 11, /*->15459*/ // 2 children in Scope
/* 15448*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15450*/          OPC_EmitConvertToTarget, 0,
/* 15452*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::REPL_QB), 0,
                        MVT::v4i8, 1/*#Ops*/, 1, 
                    // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4174:{ *:[iPTR] }, (imm:{ *:[i32] })<<P:Predicate_immZExt8>>:$imm) - Complexity = 12
                    // Dst: (REPL_QB:{ *:[v4i8] } (imm:{ *:[i32] }):$imm)
/* 15459*/        /*Scope*/ 11, /*->15471*/
/* 15460*/          OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15462*/          OPC_EmitConvertToTarget, 0,
/* 15464*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::REPL_QB_MM), 0,
                        MVT::v4i8, 1/*#Ops*/, 1, 
                    // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4174:{ *:[iPTR] }, (imm:{ *:[i32] })<<P:Predicate_immZExt8>>:$imm) - Complexity = 12
                    // Dst: (REPL_QB_MM:{ *:[v4i8] } (imm:{ *:[i32] }):$imm)
/* 15471*/        0, /*End of Scope*/
/* 15472*/      /*Scope*/ 9, /*->15482*/
/* 15473*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15475*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::REPLV_QB), 0,
                      MVT::v4i8, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4174:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (REPLV_QB:{ *:[v4i8] } GPR32Opnd:{ *:[i32] }:$rt)
/* 15482*/      /*Scope*/ 9, /*->15492*/
/* 15483*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15485*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::REPLV_QB_MM), 0,
                      MVT::v4i8, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4174:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (REPLV_QB_MM:{ *:[v4i8] } GPR32Opnd:{ *:[i32] }:$rs)
/* 15492*/      0, /*End of Scope*/
/* 15493*/    /*Scope*/ 60, /*->15554*/
/* 15494*/      OPC_CheckChild0Integer, 77|128,32/*4173*/, 
/* 15497*/      OPC_RecordChild1, // #0 = $imm
/* 15498*/      OPC_Scope, 33, /*->15533*/ // 3 children in Scope
/* 15500*/        OPC_MoveChild1,
/* 15501*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 15504*/        OPC_CheckPredicate, 29, // Predicate_immSExt10
/* 15506*/        OPC_MoveParent,
/* 15507*/        OPC_Scope, 11, /*->15520*/ // 2 children in Scope
/* 15509*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15511*/          OPC_EmitConvertToTarget, 0,
/* 15513*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::REPL_PH), 0,
                        MVT::v2i16, 1/*#Ops*/, 1, 
                    // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4173:{ *:[iPTR] }, (imm:{ *:[i32] })<<P:Predicate_immSExt10>>:$imm) - Complexity = 12
                    // Dst: (REPL_PH:{ *:[v2i16] } (imm:{ *:[i32] }):$imm)
/* 15520*/        /*Scope*/ 11, /*->15532*/
/* 15521*/          OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15523*/          OPC_EmitConvertToTarget, 0,
/* 15525*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::REPL_PH_MM), 0,
                        MVT::v2i16, 1/*#Ops*/, 1, 
                    // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4173:{ *:[iPTR] }, (imm:{ *:[i32] })<<P:Predicate_immSExt10>>:$imm) - Complexity = 12
                    // Dst: (REPL_PH_MM:{ *:[v2i16] } (imm:{ *:[i32] }):$imm)
/* 15532*/        0, /*End of Scope*/
/* 15533*/      /*Scope*/ 9, /*->15543*/
/* 15534*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15536*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::REPLV_PH), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4173:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (REPLV_PH:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rt)
/* 15543*/      /*Scope*/ 9, /*->15553*/
/* 15544*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15546*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::REPLV_PH_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4173:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (REPLV_PH_MM:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs)
/* 15553*/      0, /*End of Scope*/
/* 15554*/    /*Scope*/ 39, /*->15594*/
/* 15555*/      OPC_CheckChild0Integer, 68|128,32/*4164*/, 
/* 15558*/      OPC_RecordChild1, // #0 = $src
/* 15559*/      OPC_RecordChild2, // #1 = $rs
/* 15560*/      OPC_RecordChild3, // #2 = $sa
/* 15561*/      OPC_MoveChild3,
/* 15562*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 15565*/      OPC_CheckPredicate, 22, // Predicate_timmZExt5
/* 15567*/      OPC_MoveParent,
/* 15568*/      OPC_Scope, 11, /*->15581*/ // 2 children in Scope
/* 15570*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15572*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECR_SRA_PH_W), 0,
                      MVT::v2i16, 3/*#Ops*/, 1, 2, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4164:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] })<<P:Predicate_timmZExt5>>:$sa) - Complexity = 12
                  // Dst: (PRECR_SRA_PH_W:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 15581*/      /*Scope*/ 11, /*->15593*/
/* 15582*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15584*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECR_SRA_PH_W_MMR2), 0,
                      MVT::v2i16, 3/*#Ops*/, 1, 2, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4164:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] })<<P:Predicate_timmZExt5>>:$sa) - Complexity = 12
                  // Dst: (PRECR_SRA_PH_W_MMR2:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 15593*/      0, /*End of Scope*/
/* 15594*/    /*Scope*/ 39, /*->15634*/
/* 15595*/      OPC_CheckChild0Integer, 69|128,32/*4165*/, 
/* 15598*/      OPC_RecordChild1, // #0 = $src
/* 15599*/      OPC_RecordChild2, // #1 = $rs
/* 15600*/      OPC_RecordChild3, // #2 = $sa
/* 15601*/      OPC_MoveChild3,
/* 15602*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 15605*/      OPC_CheckPredicate, 22, // Predicate_timmZExt5
/* 15607*/      OPC_MoveParent,
/* 15608*/      OPC_Scope, 11, /*->15621*/ // 2 children in Scope
/* 15610*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15612*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECR_SRA_R_PH_W), 0,
                      MVT::v2i16, 3/*#Ops*/, 1, 2, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4165:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] })<<P:Predicate_timmZExt5>>:$sa) - Complexity = 12
                  // Dst: (PRECR_SRA_R_PH_W:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 15621*/      /*Scope*/ 11, /*->15633*/
/* 15622*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15624*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECR_SRA_R_PH_W_MMR2), 0,
                      MVT::v2i16, 3/*#Ops*/, 1, 2, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4165:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] })<<P:Predicate_timmZExt5>>:$sa) - Complexity = 12
                  // Dst: (PRECR_SRA_R_PH_W_MMR2:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 15633*/      0, /*End of Scope*/
/* 15634*/    /*Scope*/ 65, /*->15700*/
/* 15635*/      OPC_CheckChild0Integer, 98|128,32/*4194*/, 
/* 15638*/      OPC_RecordChild1, // #0 = $rt
/* 15639*/      OPC_RecordChild2, // #1 = $rs_sa
/* 15640*/      OPC_Scope, 35, /*->15677*/ // 3 children in Scope
/* 15642*/        OPC_MoveChild2,
/* 15643*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 15646*/        OPC_CheckPredicate, 26, // Predicate_immZExt3
/* 15648*/        OPC_MoveParent,
/* 15649*/        OPC_Scope, 12, /*->15663*/ // 2 children in Scope
/* 15651*/          OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15653*/          OPC_EmitConvertToTarget, 1,
/* 15655*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_R_QB), 0,
                        MVT::v4i8, 2/*#Ops*/, 0, 2, 
                    // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4194:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt3>>:$rs_sa) - Complexity = 12
                    // Dst: (SHRA_R_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, (imm:{ *:[i32] }):$rs_sa)
/* 15663*/        /*Scope*/ 12, /*->15676*/
/* 15664*/          OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15666*/          OPC_EmitConvertToTarget, 1,
/* 15668*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_R_QB_MMR2), 0,
                        MVT::v4i8, 2/*#Ops*/, 0, 2, 
                    // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4194:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt3>>:$sa) - Complexity = 12
                    // Dst: (SHRA_R_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, (imm:{ *:[i32] }):$sa)
/* 15676*/        0, /*End of Scope*/
/* 15677*/      /*Scope*/ 10, /*->15688*/
/* 15678*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15680*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_R_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4194:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHRAV_R_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 15688*/      /*Scope*/ 10, /*->15699*/
/* 15689*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15691*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_R_QB_MMR2), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4194:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHRAV_R_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 15699*/      0, /*End of Scope*/
/* 15700*/    /*Scope*/ 49, /*->15750*/
/* 15701*/      OPC_CheckChild0Integer, 95|128,32/*4191*/, 
/* 15704*/      OPC_RecordChild1, // #0 = $a
/* 15705*/      OPC_RecordChild2, // #1 = $shamt
/* 15706*/      OPC_Scope, 19, /*->15727*/ // 3 children in Scope
/* 15708*/        OPC_MoveChild2,
/* 15709*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 15712*/        OPC_CheckPredicate, 25, // Predicate_immZExt4
/* 15714*/        OPC_MoveParent,
/* 15715*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15717*/        OPC_EmitConvertToTarget, 1,
/* 15719*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 2, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4191:{ *:[iPTR] }, v2i16:{ *:[v2i16] }:$a, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$shamt) - Complexity = 12
                  // Dst: (SHRA_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$shamt)
/* 15727*/      /*Scope*/ 10, /*->15738*/
/* 15728*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15730*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4191:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHRAV_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 15738*/      /*Scope*/ 10, /*->15749*/
/* 15739*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15741*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_PH_MM), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4191:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHRAV_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 15749*/      0, /*End of Scope*/
/* 15750*/    /*Scope*/ 49, /*->15800*/
/* 15751*/      OPC_CheckChild0Integer, 100|128,32/*4196*/, 
/* 15754*/      OPC_RecordChild1, // #0 = $a
/* 15755*/      OPC_RecordChild2, // #1 = $shamt
/* 15756*/      OPC_Scope, 19, /*->15777*/ // 3 children in Scope
/* 15758*/        OPC_MoveChild2,
/* 15759*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 15762*/        OPC_CheckPredicate, 25, // Predicate_immZExt4
/* 15764*/        OPC_MoveParent,
/* 15765*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15767*/        OPC_EmitConvertToTarget, 1,
/* 15769*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRL_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 2, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4196:{ *:[iPTR] }, v2i16:{ *:[v2i16] }:$a, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$shamt) - Complexity = 12
                  // Dst: (SHRL_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$shamt)
/* 15777*/      /*Scope*/ 10, /*->15788*/
/* 15778*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15780*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRLV_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4196:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHRLV_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 15788*/      /*Scope*/ 10, /*->15799*/
/* 15789*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15791*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRLV_PH_MMR2), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4196:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHRLV_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 15799*/      0, /*End of Scope*/
/* 15800*/    /*Scope*/ 49, /*->15850*/
/* 15801*/      OPC_CheckChild0Integer, 96|128,32/*4192*/, 
/* 15804*/      OPC_RecordChild1, // #0 = $a
/* 15805*/      OPC_RecordChild2, // #1 = $shamt
/* 15806*/      OPC_Scope, 19, /*->15827*/ // 3 children in Scope
/* 15808*/        OPC_MoveChild2,
/* 15809*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 15812*/        OPC_CheckPredicate, 26, // Predicate_immZExt3
/* 15814*/        OPC_MoveParent,
/* 15815*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15817*/        OPC_EmitConvertToTarget, 1,
/* 15819*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 2, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4192:{ *:[iPTR] }, v4i8:{ *:[v4i8] }:$a, (imm:{ *:[i32] })<<P:Predicate_immZExt3>>:$shamt) - Complexity = 12
                  // Dst: (SHRA_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, (imm:{ *:[i32] })<<P:Predicate_immZExt3>>:$shamt)
/* 15827*/      /*Scope*/ 10, /*->15838*/
/* 15828*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15830*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4192:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHRAV_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 15838*/      /*Scope*/ 10, /*->15849*/
/* 15839*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15841*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_QB_MMR2), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4192:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHRAV_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 15849*/      0, /*End of Scope*/
/* 15850*/    /*Scope*/ 49, /*->15900*/
/* 15851*/      OPC_CheckChild0Integer, 101|128,32/*4197*/, 
/* 15854*/      OPC_RecordChild1, // #0 = $a
/* 15855*/      OPC_RecordChild2, // #1 = $shamt
/* 15856*/      OPC_Scope, 19, /*->15877*/ // 3 children in Scope
/* 15858*/        OPC_MoveChild2,
/* 15859*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 15862*/        OPC_CheckPredicate, 26, // Predicate_immZExt3
/* 15864*/        OPC_MoveParent,
/* 15865*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15867*/        OPC_EmitConvertToTarget, 1,
/* 15869*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRL_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 2, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4197:{ *:[iPTR] }, v4i8:{ *:[v4i8] }:$a, (imm:{ *:[i32] })<<P:Predicate_immZExt3>>:$shamt) - Complexity = 12
                  // Dst: (SHRL_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, (imm:{ *:[i32] })<<P:Predicate_immZExt3>>:$shamt)
/* 15877*/      /*Scope*/ 10, /*->15888*/
/* 15878*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15880*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRLV_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4197:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHRLV_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 15888*/      /*Scope*/ 10, /*->15899*/
/* 15889*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15891*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRLV_QB_MM), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4197:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHRLV_QB_MM:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 15899*/      0, /*End of Scope*/
/* 15900*/    /*Scope*/ 22, /*->15923*/
/* 15901*/      OPC_CheckChild0Integer, 79|128,32/*4175*/, 
/* 15904*/      OPC_RecordChild1, // #0 = $ws
/* 15905*/      OPC_RecordChild2, // #1 = $m
/* 15906*/      OPC_MoveChild2,
/* 15907*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 15910*/      OPC_CheckPredicate, 26, // Predicate_timmZExt3
/* 15912*/      OPC_MoveParent,
/* 15913*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 15915*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 4175:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt3>>:$m) - Complexity = 12
                // Dst: (SAT_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, (timm:{ *:[i32] }):$m)
/* 15923*/    /*Scope*/ 22, /*->15946*/
/* 15924*/      OPC_CheckChild0Integer, 81|128,32/*4177*/, 
/* 15927*/      OPC_RecordChild1, // #0 = $ws
/* 15928*/      OPC_RecordChild2, // #1 = $m
/* 15929*/      OPC_MoveChild2,
/* 15930*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 15933*/      OPC_CheckPredicate, 25, // Predicate_timmZExt4
/* 15935*/      OPC_MoveParent,
/* 15936*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 15938*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4177:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt4>>:$m) - Complexity = 12
                // Dst: (SAT_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, (timm:{ *:[i32] }):$m)
/* 15946*/    /*Scope*/ 22, /*->15969*/
/* 15947*/      OPC_CheckChild0Integer, 82|128,32/*4178*/, 
/* 15950*/      OPC_RecordChild1, // #0 = $ws
/* 15951*/      OPC_RecordChild2, // #1 = $m
/* 15952*/      OPC_MoveChild2,
/* 15953*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 15956*/      OPC_CheckPredicate, 22, // Predicate_timmZExt5
/* 15958*/      OPC_MoveParent,
/* 15959*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 15961*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4178:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt5>>:$m) - Complexity = 12
                // Dst: (SAT_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (timm:{ *:[i32] }):$m)
/* 15969*/    /*Scope*/ 22, /*->15992*/
/* 15970*/      OPC_CheckChild0Integer, 80|128,32/*4176*/, 
/* 15973*/      OPC_RecordChild1, // #0 = $ws
/* 15974*/      OPC_RecordChild2, // #1 = $m
/* 15975*/      OPC_MoveChild2,
/* 15976*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 15979*/      OPC_CheckPredicate, 30, // Predicate_timmZExt6
/* 15981*/      OPC_MoveParent,
/* 15982*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 15984*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 4176:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt6>>:$m) - Complexity = 12
                // Dst: (SAT_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, (timm:{ *:[i32] }):$m)
/* 15992*/    /*Scope*/ 22, /*->16015*/
/* 15993*/      OPC_CheckChild0Integer, 83|128,32/*4179*/, 
/* 15996*/      OPC_RecordChild1, // #0 = $ws
/* 15997*/      OPC_RecordChild2, // #1 = $m
/* 15998*/      OPC_MoveChild2,
/* 15999*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16002*/      OPC_CheckPredicate, 26, // Predicate_timmZExt3
/* 16004*/      OPC_MoveParent,
/* 16005*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16007*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 4179:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt3>>:$m) - Complexity = 12
                // Dst: (SAT_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, (timm:{ *:[i32] }):$m)
/* 16015*/    /*Scope*/ 22, /*->16038*/
/* 16016*/      OPC_CheckChild0Integer, 85|128,32/*4181*/, 
/* 16019*/      OPC_RecordChild1, // #0 = $ws
/* 16020*/      OPC_RecordChild2, // #1 = $m
/* 16021*/      OPC_MoveChild2,
/* 16022*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16025*/      OPC_CheckPredicate, 25, // Predicate_timmZExt4
/* 16027*/      OPC_MoveParent,
/* 16028*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16030*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4181:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt4>>:$m) - Complexity = 12
                // Dst: (SAT_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, (timm:{ *:[i32] }):$m)
/* 16038*/    /*Scope*/ 22, /*->16061*/
/* 16039*/      OPC_CheckChild0Integer, 86|128,32/*4182*/, 
/* 16042*/      OPC_RecordChild1, // #0 = $ws
/* 16043*/      OPC_RecordChild2, // #1 = $m
/* 16044*/      OPC_MoveChild2,
/* 16045*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16048*/      OPC_CheckPredicate, 22, // Predicate_timmZExt5
/* 16050*/      OPC_MoveParent,
/* 16051*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16053*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4182:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt5>>:$m) - Complexity = 12
                // Dst: (SAT_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (timm:{ *:[i32] }):$m)
/* 16061*/    /*Scope*/ 22, /*->16084*/
/* 16062*/      OPC_CheckChild0Integer, 84|128,32/*4180*/, 
/* 16065*/      OPC_RecordChild1, // #0 = $ws
/* 16066*/      OPC_RecordChild2, // #1 = $m
/* 16067*/      OPC_MoveChild2,
/* 16068*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16071*/      OPC_CheckPredicate, 30, // Predicate_timmZExt6
/* 16073*/      OPC_MoveParent,
/* 16074*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16076*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 4180:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt6>>:$m) - Complexity = 12
                // Dst: (SAT_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, (timm:{ *:[i32] }):$m)
/* 16084*/    /*Scope*/ 24, /*->16109*/
/* 16085*/      OPC_CheckChild0Integer, 106|128,32/*4202*/, 
/* 16088*/      OPC_RecordChild1, // #0 = $wd_in
/* 16089*/      OPC_RecordChild2, // #1 = $ws
/* 16090*/      OPC_RecordChild3, // #2 = $n
/* 16091*/      OPC_MoveChild3,
/* 16092*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16095*/      OPC_CheckPredicate, 25, // Predicate_timmZExt4
/* 16097*/      OPC_MoveParent,
/* 16098*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16100*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLDI_B), 0,
                    MVT::v16i8, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 4202:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt4>>:$n) - Complexity = 12
                // Dst: (SLDI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, (timm:{ *:[i32] }):$n)
/* 16109*/    /*Scope*/ 24, /*->16134*/
/* 16110*/      OPC_CheckChild0Integer, 108|128,32/*4204*/, 
/* 16113*/      OPC_RecordChild1, // #0 = $wd_in
/* 16114*/      OPC_RecordChild2, // #1 = $ws
/* 16115*/      OPC_RecordChild3, // #2 = $n
/* 16116*/      OPC_MoveChild3,
/* 16117*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16120*/      OPC_CheckPredicate, 26, // Predicate_timmZExt3
/* 16122*/      OPC_MoveParent,
/* 16123*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16125*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLDI_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4204:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt3>>:$n) - Complexity = 12
                // Dst: (SLDI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, (timm:{ *:[i32] }):$n)
/* 16134*/    /*Scope*/ 24, /*->16159*/
/* 16135*/      OPC_CheckChild0Integer, 109|128,32/*4205*/, 
/* 16138*/      OPC_RecordChild1, // #0 = $wd_in
/* 16139*/      OPC_RecordChild2, // #1 = $ws
/* 16140*/      OPC_RecordChild3, // #2 = $n
/* 16141*/      OPC_MoveChild3,
/* 16142*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16145*/      OPC_CheckPredicate, 27, // Predicate_timmZExt2
/* 16147*/      OPC_MoveParent,
/* 16148*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16150*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLDI_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4205:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt2>>:$n) - Complexity = 12
                // Dst: (SLDI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, (timm:{ *:[i32] }):$n)
/* 16159*/    /*Scope*/ 24, /*->16184*/
/* 16160*/      OPC_CheckChild0Integer, 107|128,32/*4203*/, 
/* 16163*/      OPC_RecordChild1, // #0 = $wd_in
/* 16164*/      OPC_RecordChild2, // #1 = $ws
/* 16165*/      OPC_RecordChild3, // #2 = $n
/* 16166*/      OPC_MoveChild3,
/* 16167*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16170*/      OPC_CheckPredicate, 31, // Predicate_timmZExt1
/* 16172*/      OPC_MoveParent,
/* 16173*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16175*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLDI_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 4203:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt1>>:$n) - Complexity = 12
                // Dst: (SLDI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, (timm:{ *:[i32] }):$n)
/* 16184*/    /*Scope*/ 22, /*->16207*/
/* 16185*/      OPC_CheckChild0Integer, 10|128,33/*4234*/, 
/* 16188*/      OPC_RecordChild1, // #0 = $ws
/* 16189*/      OPC_RecordChild2, // #1 = $m
/* 16190*/      OPC_MoveChild2,
/* 16191*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16194*/      OPC_CheckPredicate, 26, // Predicate_timmZExt3
/* 16196*/      OPC_MoveParent,
/* 16197*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16199*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRARI_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 4234:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt3>>:$m) - Complexity = 12
                // Dst: (SRARI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, (timm:{ *:[i32] }):$m)
/* 16207*/    /*Scope*/ 22, /*->16230*/
/* 16208*/      OPC_CheckChild0Integer, 12|128,33/*4236*/, 
/* 16211*/      OPC_RecordChild1, // #0 = $ws
/* 16212*/      OPC_RecordChild2, // #1 = $m
/* 16213*/      OPC_MoveChild2,
/* 16214*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16217*/      OPC_CheckPredicate, 25, // Predicate_timmZExt4
/* 16219*/      OPC_MoveParent,
/* 16220*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16222*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRARI_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4236:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt4>>:$m) - Complexity = 12
                // Dst: (SRARI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, (timm:{ *:[i32] }):$m)
/* 16230*/    /*Scope*/ 22, /*->16253*/
/* 16231*/      OPC_CheckChild0Integer, 13|128,33/*4237*/, 
/* 16234*/      OPC_RecordChild1, // #0 = $ws
/* 16235*/      OPC_RecordChild2, // #1 = $m
/* 16236*/      OPC_MoveChild2,
/* 16237*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16240*/      OPC_CheckPredicate, 22, // Predicate_timmZExt5
/* 16242*/      OPC_MoveParent,
/* 16243*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16245*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRARI_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4237:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt5>>:$m) - Complexity = 12
                // Dst: (SRARI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (timm:{ *:[i32] }):$m)
/* 16253*/    /*Scope*/ 22, /*->16276*/
/* 16254*/      OPC_CheckChild0Integer, 11|128,33/*4235*/, 
/* 16257*/      OPC_RecordChild1, // #0 = $ws
/* 16258*/      OPC_RecordChild2, // #1 = $m
/* 16259*/      OPC_MoveChild2,
/* 16260*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16263*/      OPC_CheckPredicate, 30, // Predicate_timmZExt6
/* 16265*/      OPC_MoveParent,
/* 16266*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16268*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRARI_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 4235:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt6>>:$m) - Complexity = 12
                // Dst: (SRARI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, (timm:{ *:[i32] }):$m)
/* 16276*/    /*Scope*/ 22, /*->16299*/
/* 16277*/      OPC_CheckChild0Integer, 26|128,33/*4250*/, 
/* 16280*/      OPC_RecordChild1, // #0 = $ws
/* 16281*/      OPC_RecordChild2, // #1 = $m
/* 16282*/      OPC_MoveChild2,
/* 16283*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16286*/      OPC_CheckPredicate, 26, // Predicate_timmZExt3
/* 16288*/      OPC_MoveParent,
/* 16289*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16291*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLRI_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 4250:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt3>>:$m) - Complexity = 12
                // Dst: (SRLRI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, (timm:{ *:[i32] }):$m)
/* 16299*/    /*Scope*/ 22, /*->16322*/
/* 16300*/      OPC_CheckChild0Integer, 28|128,33/*4252*/, 
/* 16303*/      OPC_RecordChild1, // #0 = $ws
/* 16304*/      OPC_RecordChild2, // #1 = $m
/* 16305*/      OPC_MoveChild2,
/* 16306*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16309*/      OPC_CheckPredicate, 25, // Predicate_timmZExt4
/* 16311*/      OPC_MoveParent,
/* 16312*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16314*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLRI_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4252:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt4>>:$m) - Complexity = 12
                // Dst: (SRLRI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, (timm:{ *:[i32] }):$m)
/* 16322*/    /*Scope*/ 22, /*->16345*/
/* 16323*/      OPC_CheckChild0Integer, 29|128,33/*4253*/, 
/* 16326*/      OPC_RecordChild1, // #0 = $ws
/* 16327*/      OPC_RecordChild2, // #1 = $m
/* 16328*/      OPC_MoveChild2,
/* 16329*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16332*/      OPC_CheckPredicate, 22, // Predicate_timmZExt5
/* 16334*/      OPC_MoveParent,
/* 16335*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16337*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLRI_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4253:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt5>>:$m) - Complexity = 12
                // Dst: (SRLRI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (timm:{ *:[i32] }):$m)
/* 16345*/    /*Scope*/ 22, /*->16368*/
/* 16346*/      OPC_CheckChild0Integer, 27|128,33/*4251*/, 
/* 16349*/      OPC_RecordChild1, // #0 = $ws
/* 16350*/      OPC_RecordChild2, // #1 = $m
/* 16351*/      OPC_MoveChild2,
/* 16352*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 16355*/      OPC_CheckPredicate, 30, // Predicate_timmZExt6
/* 16357*/      OPC_MoveParent,
/* 16358*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16360*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLRI_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 4251:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, (timm:{ *:[i32] })<<P:Predicate_timmZExt6>>:$m) - Complexity = 12
                // Dst: (SRLRI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, (timm:{ *:[i32] }):$m)
/* 16368*/    /*Scope*/ 29, /*->16398*/
/* 16369*/      OPC_CheckChild0Integer, 81|128,28/*3665*/, 
/* 16372*/      OPC_RecordChild1, // #0 = $rs
/* 16373*/      OPC_RecordChild2, // #1 = $rt
/* 16374*/      OPC_Scope, 10, /*->16386*/ // 2 children in Scope
/* 16376*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16378*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU_S_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3665:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (ADDU_S_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 16386*/      /*Scope*/ 10, /*->16397*/
/* 16387*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16389*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU_S_QB_MM), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3665:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (ADDU_S_QB_MM:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 16397*/      0, /*End of Scope*/
/* 16398*/    /*Scope*/ 29, /*->16428*/
/* 16399*/      OPC_CheckChild0Integer, 60|128,33/*4284*/, 
/* 16402*/      OPC_RecordChild1, // #0 = $rs
/* 16403*/      OPC_RecordChild2, // #1 = $rt
/* 16404*/      OPC_Scope, 10, /*->16416*/ // 2 children in Scope
/* 16406*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16408*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_S_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4284:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (SUBU_S_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 16416*/      /*Scope*/ 10, /*->16427*/
/* 16417*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16419*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_S_QB_MM), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4284:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (SUBU_S_QB_MM:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 16427*/      0, /*End of Scope*/
/* 16428*/    /*Scope*/ 29, /*->16458*/
/* 16429*/      OPC_CheckChild0Integer, 59|128,28/*3643*/, 
/* 16432*/      OPC_RecordChild1, // #0 = $rs
/* 16433*/      OPC_RecordChild2, // #1 = $rt
/* 16434*/      OPC_Scope, 10, /*->16446*/ // 2 children in Scope
/* 16436*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16438*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQ_S_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3643:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDQ_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 16446*/      /*Scope*/ 10, /*->16457*/
/* 16447*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16449*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQ_S_PH_MM), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3643:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDQ_S_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 16457*/      0, /*End of Scope*/
/* 16458*/    /*Scope*/ 29, /*->16488*/
/* 16459*/      OPC_CheckChild0Integer, 35|128,33/*4259*/, 
/* 16462*/      OPC_RecordChild1, // #0 = $rs
/* 16463*/      OPC_RecordChild2, // #1 = $rt
/* 16464*/      OPC_Scope, 10, /*->16476*/ // 2 children in Scope
/* 16466*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16468*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQ_S_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4259:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBQ_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 16476*/      /*Scope*/ 10, /*->16487*/
/* 16477*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16479*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQ_S_PH_MM), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4259:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBQ_S_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 16487*/      0, /*End of Scope*/
/* 16488*/    /*Scope*/ 29, /*->16518*/
/* 16489*/      OPC_CheckChild0Integer, 71|128,32/*4167*/, 
/* 16492*/      OPC_RecordChild1, // #0 = $rs
/* 16493*/      OPC_RecordChild2, // #1 = $rt
/* 16494*/      OPC_Scope, 10, /*->16506*/ // 2 children in Scope
/* 16496*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16498*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQ_QB_PH), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4167:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECRQ_QB_PH:{ *:[v4i8] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 16506*/      /*Scope*/ 10, /*->16517*/
/* 16507*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16509*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQ_QB_PH_MM), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4167:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECRQ_QB_PH_MM:{ *:[v4i8] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 16517*/      0, /*End of Scope*/
/* 16518*/    /*Scope*/ 29, /*->16548*/
/* 16519*/      OPC_CheckChild0Integer, 70|128,32/*4166*/, 
/* 16522*/      OPC_RecordChild1, // #0 = $rs
/* 16523*/      OPC_RecordChild2, // #1 = $rt
/* 16524*/      OPC_Scope, 10, /*->16536*/ // 2 children in Scope
/* 16526*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16528*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQ_PH_W), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4166:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (PRECRQ_PH_W:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 16536*/      /*Scope*/ 10, /*->16547*/
/* 16537*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16539*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQ_PH_W_MM), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4166:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (PRECRQ_PH_W_MM:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 16547*/      0, /*End of Scope*/
/* 16548*/    /*Scope*/ 26, /*->16575*/
/* 16549*/      OPC_CheckChild0Integer, 59|128,32/*4155*/, 
/* 16552*/      OPC_RecordChild1, // #0 = $rt
/* 16553*/      OPC_Scope, 9, /*->16564*/ // 2 children in Scope
/* 16555*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16557*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBL), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4155:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBL:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 16564*/      /*Scope*/ 9, /*->16574*/
/* 16565*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16567*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBL_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4155:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBL_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 16574*/      0, /*End of Scope*/
/* 16575*/    /*Scope*/ 26, /*->16602*/
/* 16576*/      OPC_CheckChild0Integer, 61|128,32/*4157*/, 
/* 16579*/      OPC_RecordChild1, // #0 = $rt
/* 16580*/      OPC_Scope, 9, /*->16591*/ // 2 children in Scope
/* 16582*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16584*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBR), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4157:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBR:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 16591*/      /*Scope*/ 9, /*->16601*/
/* 16592*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16594*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBR_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4157:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBR_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 16601*/      0, /*End of Scope*/
/* 16602*/    /*Scope*/ 26, /*->16629*/
/* 16603*/      OPC_CheckChild0Integer, 60|128,32/*4156*/, 
/* 16606*/      OPC_RecordChild1, // #0 = $rt
/* 16607*/      OPC_Scope, 9, /*->16618*/ // 2 children in Scope
/* 16609*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16611*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBLA), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4156:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBLA:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 16618*/      /*Scope*/ 9, /*->16628*/
/* 16619*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16621*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBLA_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4156:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBLA_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 16628*/      0, /*End of Scope*/
/* 16629*/    /*Scope*/ 26, /*->16656*/
/* 16630*/      OPC_CheckChild0Integer, 62|128,32/*4158*/, 
/* 16633*/      OPC_RecordChild1, // #0 = $rt
/* 16634*/      OPC_Scope, 9, /*->16645*/ // 2 children in Scope
/* 16636*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16638*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBRA), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4158:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBRA:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 16645*/      /*Scope*/ 9, /*->16655*/
/* 16646*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16648*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBRA_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4158:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBRA_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 16655*/      0, /*End of Scope*/
/* 16656*/    /*Scope*/ 26, /*->16683*/
/* 16657*/      OPC_CheckChild0Integer, 63|128,32/*4159*/, 
/* 16660*/      OPC_RecordChild1, // #0 = $rt
/* 16661*/      OPC_Scope, 9, /*->16672*/ // 2 children in Scope
/* 16663*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16665*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBL), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4159:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEU_PH_QBL:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 16672*/      /*Scope*/ 9, /*->16682*/
/* 16673*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16675*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBL_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4159:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEU_PH_QBL_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 16682*/      0, /*End of Scope*/
/* 16683*/    /*Scope*/ 26, /*->16710*/
/* 16684*/      OPC_CheckChild0Integer, 65|128,32/*4161*/, 
/* 16687*/      OPC_RecordChild1, // #0 = $rt
/* 16688*/      OPC_Scope, 9, /*->16699*/ // 2 children in Scope
/* 16690*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16692*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBR), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4161:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEU_PH_QBR:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 16699*/      /*Scope*/ 9, /*->16709*/
/* 16700*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16702*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBR_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4161:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEU_PH_QBR_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 16709*/      0, /*End of Scope*/
/* 16710*/    /*Scope*/ 26, /*->16737*/
/* 16711*/      OPC_CheckChild0Integer, 64|128,32/*4160*/, 
/* 16714*/      OPC_RecordChild1, // #0 = $rt
/* 16715*/      OPC_Scope, 9, /*->16726*/ // 2 children in Scope
/* 16717*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16719*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBLA), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4160:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEU_PH_QBLA:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 16726*/      /*Scope*/ 9, /*->16736*/
/* 16727*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16729*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBLA_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4160:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEU_PH_QBLA_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 16736*/      0, /*End of Scope*/
/* 16737*/    /*Scope*/ 26, /*->16764*/
/* 16738*/      OPC_CheckChild0Integer, 66|128,32/*4162*/, 
/* 16741*/      OPC_RecordChild1, // #0 = $rt
/* 16742*/      OPC_Scope, 9, /*->16753*/ // 2 children in Scope
/* 16744*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16746*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBRA), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4162:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEU_PH_QBRA:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 16753*/      /*Scope*/ 9, /*->16763*/
/* 16754*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16756*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBRA_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4162:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEU_PH_QBRA_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 16763*/      0, /*End of Scope*/
/* 16764*/    /*Scope*/ 29, /*->16794*/
/* 16765*/      OPC_CheckChild0Integer, 42|128,32/*4138*/, 
/* 16768*/      OPC_RecordChild1, // #0 = $rs
/* 16769*/      OPC_RecordChild2, // #1 = $rt
/* 16770*/      OPC_Scope, 10, /*->16782*/ // 2 children in Scope
/* 16772*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16774*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PACKRL_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4138:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PACKRL_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 16782*/      /*Scope*/ 10, /*->16793*/
/* 16783*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16785*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PACKRL_PH_MM), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4138:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PACKRL_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 16793*/      0, /*End of Scope*/
/* 16794*/    /*Scope*/ 29, /*->16824*/
/* 16795*/      OPC_CheckChild0Integer, 82|128,28/*3666*/, 
/* 16798*/      OPC_RecordChild1, // #0 = $rs
/* 16799*/      OPC_RecordChild2, // #1 = $rt
/* 16800*/      OPC_Scope, 10, /*->16812*/ // 2 children in Scope
/* 16802*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16804*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDUH_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3666:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (ADDUH_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 16812*/      /*Scope*/ 10, /*->16823*/
/* 16813*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 16815*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDUH_QB_MMR2), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3666:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (ADDUH_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 16823*/      0, /*End of Scope*/
/* 16824*/    /*Scope*/ 29, /*->16854*/
/* 16825*/      OPC_CheckChild0Integer, 83|128,28/*3667*/, 
/* 16828*/      OPC_RecordChild1, // #0 = $rs
/* 16829*/      OPC_RecordChild2, // #1 = $rt
/* 16830*/      OPC_Scope, 10, /*->16842*/ // 2 children in Scope
/* 16832*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16834*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDUH_R_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3667:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (ADDUH_R_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 16842*/      /*Scope*/ 10, /*->16853*/
/* 16843*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 16845*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDUH_R_QB_MMR2), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3667:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (ADDUH_R_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 16853*/      0, /*End of Scope*/
/* 16854*/    /*Scope*/ 29, /*->16884*/
/* 16855*/      OPC_CheckChild0Integer, 61|128,33/*4285*/, 
/* 16858*/      OPC_RecordChild1, // #0 = $rs
/* 16859*/      OPC_RecordChild2, // #1 = $rt
/* 16860*/      OPC_Scope, 10, /*->16872*/ // 2 children in Scope
/* 16862*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16864*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBUH_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4285:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (SUBUH_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 16872*/      /*Scope*/ 10, /*->16883*/
/* 16873*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 16875*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBUH_QB_MMR2), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4285:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (SUBUH_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 16883*/      0, /*End of Scope*/
/* 16884*/    /*Scope*/ 29, /*->16914*/
/* 16885*/      OPC_CheckChild0Integer, 62|128,33/*4286*/, 
/* 16888*/      OPC_RecordChild1, // #0 = $rs
/* 16889*/      OPC_RecordChild2, // #1 = $rt
/* 16890*/      OPC_Scope, 10, /*->16902*/ // 2 children in Scope
/* 16892*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16894*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBUH_R_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4286:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (SUBUH_R_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 16902*/      /*Scope*/ 10, /*->16913*/
/* 16903*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 16905*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBUH_R_QB_MMR2), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4286:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (SUBUH_R_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 16913*/      0, /*End of Scope*/
/* 16914*/    /*Scope*/ 29, /*->16944*/
/* 16915*/      OPC_CheckChild0Integer, 61|128,28/*3645*/, 
/* 16918*/      OPC_RecordChild1, // #0 = $rs
/* 16919*/      OPC_RecordChild2, // #1 = $rt
/* 16920*/      OPC_Scope, 10, /*->16932*/ // 2 children in Scope
/* 16922*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16924*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3645:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 16932*/      /*Scope*/ 10, /*->16943*/
/* 16933*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 16935*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_PH_MMR2), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3645:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 16943*/      0, /*End of Scope*/
/* 16944*/    /*Scope*/ 29, /*->16974*/
/* 16945*/      OPC_CheckChild0Integer, 62|128,28/*3646*/, 
/* 16948*/      OPC_RecordChild1, // #0 = $rs
/* 16949*/      OPC_RecordChild2, // #1 = $rt
/* 16950*/      OPC_Scope, 10, /*->16962*/ // 2 children in Scope
/* 16952*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16954*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_R_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3646:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_R_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 16962*/      /*Scope*/ 10, /*->16973*/
/* 16963*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 16965*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_R_PH_MMR2), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3646:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_R_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 16973*/      0, /*End of Scope*/
/* 16974*/    /*Scope*/ 29, /*->17004*/
/* 16975*/      OPC_CheckChild0Integer, 37|128,33/*4261*/, 
/* 16978*/      OPC_RecordChild1, // #0 = $rs
/* 16979*/      OPC_RecordChild2, // #1 = $rt
/* 16980*/      OPC_Scope, 10, /*->16992*/ // 2 children in Scope
/* 16982*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16984*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4261:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 16992*/      /*Scope*/ 10, /*->17003*/
/* 16993*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 16995*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_PH_MMR2), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4261:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17003*/      0, /*End of Scope*/
/* 17004*/    /*Scope*/ 29, /*->17034*/
/* 17005*/      OPC_CheckChild0Integer, 38|128,33/*4262*/, 
/* 17008*/      OPC_RecordChild1, // #0 = $rs
/* 17009*/      OPC_RecordChild2, // #1 = $rt
/* 17010*/      OPC_Scope, 10, /*->17022*/ // 2 children in Scope
/* 17012*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 17014*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_R_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4262:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_R_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17022*/      /*Scope*/ 10, /*->17033*/
/* 17023*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 17025*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_R_PH_MMR2), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4262:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_R_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17033*/      0, /*End of Scope*/
/* 17034*/    /*Scope*/ 15, /*->17050*/
/* 17035*/      OPC_CheckChild0Integer, 58|128,28/*3642*/, 
/* 17038*/      OPC_RecordChild1, // #0 = $a
/* 17039*/      OPC_RecordChild2, // #1 = $b
/* 17040*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17042*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQ_PH), 0,
                    MVT::v2i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3642:{ *:[iPTR] }, v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b) - Complexity = 8
                // Dst: (ADDQ_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b)
/* 17050*/    /*Scope*/ 15, /*->17066*/
/* 17051*/      OPC_CheckChild0Integer, 34|128,33/*4258*/, 
/* 17054*/      OPC_RecordChild1, // #0 = $a
/* 17055*/      OPC_RecordChild2, // #1 = $b
/* 17056*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17058*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQ_PH), 0,
                    MVT::v2i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i16] } 4258:{ *:[iPTR] }, v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b) - Complexity = 8
                // Dst: (SUBQ_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b)
/* 17066*/    /*Scope*/ 15, /*->17082*/
/* 17067*/      OPC_CheckChild0Integer, 79|128,28/*3663*/, 
/* 17070*/      OPC_RecordChild1, // #0 = $a
/* 17071*/      OPC_RecordChild2, // #1 = $b
/* 17072*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17074*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU_QB), 0,
                    MVT::v4i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3663:{ *:[iPTR] }, v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b) - Complexity = 8
                // Dst: (ADDU_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b)
/* 17082*/    /*Scope*/ 15, /*->17098*/
/* 17083*/      OPC_CheckChild0Integer, 58|128,33/*4282*/, 
/* 17086*/      OPC_RecordChild1, // #0 = $a
/* 17087*/      OPC_RecordChild2, // #1 = $b
/* 17088*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17090*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_QB), 0,
                    MVT::v4i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i8] } 4282:{ *:[iPTR] }, v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b) - Complexity = 8
                // Dst: (SUBU_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b)
/* 17098*/    /*Scope*/ 15, /*->17114*/
/* 17099*/      OPC_CheckChild0Integer, 54|128,28/*3638*/, 
/* 17102*/      OPC_RecordChild1, // #0 = $ws
/* 17103*/      OPC_RecordChild2, // #1 = $wt
/* 17104*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17106*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADD_A_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3638:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (ADD_A_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17114*/    /*Scope*/ 15, /*->17130*/
/* 17115*/      OPC_CheckChild0Integer, 56|128,28/*3640*/, 
/* 17118*/      OPC_RecordChild1, // #0 = $ws
/* 17119*/      OPC_RecordChild2, // #1 = $wt
/* 17120*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17122*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADD_A_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3640:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (ADD_A_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17130*/    /*Scope*/ 15, /*->17146*/
/* 17131*/      OPC_CheckChild0Integer, 57|128,28/*3641*/, 
/* 17134*/      OPC_RecordChild1, // #0 = $ws
/* 17135*/      OPC_RecordChild2, // #1 = $wt
/* 17136*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17138*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADD_A_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3641:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (ADD_A_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17146*/    /*Scope*/ 15, /*->17162*/
/* 17147*/      OPC_CheckChild0Integer, 55|128,28/*3639*/, 
/* 17150*/      OPC_RecordChild1, // #0 = $ws
/* 17151*/      OPC_RecordChild2, // #1 = $wt
/* 17152*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17154*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADD_A_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3639:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (ADD_A_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 17162*/    /*Scope*/ 15, /*->17178*/
/* 17163*/      OPC_CheckChild0Integer, 65|128,28/*3649*/, 
/* 17166*/      OPC_RecordChild1, // #0 = $ws
/* 17167*/      OPC_RecordChild2, // #1 = $wt
/* 17168*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17170*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_A_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3649:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (ADDS_A_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17178*/    /*Scope*/ 15, /*->17194*/
/* 17179*/      OPC_CheckChild0Integer, 67|128,28/*3651*/, 
/* 17182*/      OPC_RecordChild1, // #0 = $ws
/* 17183*/      OPC_RecordChild2, // #1 = $wt
/* 17184*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17186*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_A_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3651:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (ADDS_A_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17194*/    /*Scope*/ 15, /*->17210*/
/* 17195*/      OPC_CheckChild0Integer, 68|128,28/*3652*/, 
/* 17198*/      OPC_RecordChild1, // #0 = $ws
/* 17199*/      OPC_RecordChild2, // #1 = $wt
/* 17200*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17202*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_A_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3652:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (ADDS_A_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17210*/    /*Scope*/ 15, /*->17226*/
/* 17211*/      OPC_CheckChild0Integer, 66|128,28/*3650*/, 
/* 17214*/      OPC_RecordChild1, // #0 = $ws
/* 17215*/      OPC_RecordChild2, // #1 = $wt
/* 17216*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17218*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_A_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3650:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (ADDS_A_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 17226*/    /*Scope*/ 15, /*->17242*/
/* 17227*/      OPC_CheckChild0Integer, 69|128,28/*3653*/, 
/* 17230*/      OPC_RecordChild1, // #0 = $ws
/* 17231*/      OPC_RecordChild2, // #1 = $wt
/* 17232*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17234*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3653:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (ADDS_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17242*/    /*Scope*/ 15, /*->17258*/
/* 17243*/      OPC_CheckChild0Integer, 71|128,28/*3655*/, 
/* 17246*/      OPC_RecordChild1, // #0 = $ws
/* 17247*/      OPC_RecordChild2, // #1 = $wt
/* 17248*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17250*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3655:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (ADDS_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17258*/    /*Scope*/ 15, /*->17274*/
/* 17259*/      OPC_CheckChild0Integer, 72|128,28/*3656*/, 
/* 17262*/      OPC_RecordChild1, // #0 = $ws
/* 17263*/      OPC_RecordChild2, // #1 = $wt
/* 17264*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17266*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3656:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (ADDS_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17274*/    /*Scope*/ 15, /*->17290*/
/* 17275*/      OPC_CheckChild0Integer, 70|128,28/*3654*/, 
/* 17278*/      OPC_RecordChild1, // #0 = $ws
/* 17279*/      OPC_RecordChild2, // #1 = $wt
/* 17280*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17282*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3654:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (ADDS_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 17290*/    /*Scope*/ 15, /*->17306*/
/* 17291*/      OPC_CheckChild0Integer, 73|128,28/*3657*/, 
/* 17294*/      OPC_RecordChild1, // #0 = $ws
/* 17295*/      OPC_RecordChild2, // #1 = $wt
/* 17296*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17298*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3657:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (ADDS_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17306*/    /*Scope*/ 15, /*->17322*/
/* 17307*/      OPC_CheckChild0Integer, 75|128,28/*3659*/, 
/* 17310*/      OPC_RecordChild1, // #0 = $ws
/* 17311*/      OPC_RecordChild2, // #1 = $wt
/* 17312*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17314*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3659:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (ADDS_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17322*/    /*Scope*/ 15, /*->17338*/
/* 17323*/      OPC_CheckChild0Integer, 76|128,28/*3660*/, 
/* 17326*/      OPC_RecordChild1, // #0 = $ws
/* 17327*/      OPC_RecordChild2, // #1 = $wt
/* 17328*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17330*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3660:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (ADDS_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17338*/    /*Scope*/ 15, /*->17354*/
/* 17339*/      OPC_CheckChild0Integer, 74|128,28/*3658*/, 
/* 17342*/      OPC_RecordChild1, // #0 = $ws
/* 17343*/      OPC_RecordChild2, // #1 = $wt
/* 17344*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17346*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3658:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (ADDS_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 17354*/    /*Scope*/ 15, /*->17370*/
/* 17355*/      OPC_CheckChild0Integer, 96|128,28/*3680*/, 
/* 17358*/      OPC_RecordChild1, // #0 = $ws
/* 17359*/      OPC_RecordChild2, // #1 = $wt
/* 17360*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17362*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3680:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (ASUB_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17370*/    /*Scope*/ 15, /*->17386*/
/* 17371*/      OPC_CheckChild0Integer, 98|128,28/*3682*/, 
/* 17374*/      OPC_RecordChild1, // #0 = $ws
/* 17375*/      OPC_RecordChild2, // #1 = $wt
/* 17376*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17378*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3682:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (ASUB_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17386*/    /*Scope*/ 15, /*->17402*/
/* 17387*/      OPC_CheckChild0Integer, 99|128,28/*3683*/, 
/* 17390*/      OPC_RecordChild1, // #0 = $ws
/* 17391*/      OPC_RecordChild2, // #1 = $wt
/* 17392*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17394*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3683:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (ASUB_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17402*/    /*Scope*/ 15, /*->17418*/
/* 17403*/      OPC_CheckChild0Integer, 97|128,28/*3681*/, 
/* 17406*/      OPC_RecordChild1, // #0 = $ws
/* 17407*/      OPC_RecordChild2, // #1 = $wt
/* 17408*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17410*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3681:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (ASUB_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 17418*/    /*Scope*/ 15, /*->17434*/
/* 17419*/      OPC_CheckChild0Integer, 100|128,28/*3684*/, 
/* 17422*/      OPC_RecordChild1, // #0 = $ws
/* 17423*/      OPC_RecordChild2, // #1 = $wt
/* 17424*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17426*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3684:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (ASUB_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17434*/    /*Scope*/ 15, /*->17450*/
/* 17435*/      OPC_CheckChild0Integer, 102|128,28/*3686*/, 
/* 17438*/      OPC_RecordChild1, // #0 = $ws
/* 17439*/      OPC_RecordChild2, // #1 = $wt
/* 17440*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17442*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3686:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (ASUB_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17450*/    /*Scope*/ 15, /*->17466*/
/* 17451*/      OPC_CheckChild0Integer, 103|128,28/*3687*/, 
/* 17454*/      OPC_RecordChild1, // #0 = $ws
/* 17455*/      OPC_RecordChild2, // #1 = $wt
/* 17456*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17458*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3687:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (ASUB_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17466*/    /*Scope*/ 15, /*->17482*/
/* 17467*/      OPC_CheckChild0Integer, 101|128,28/*3685*/, 
/* 17470*/      OPC_RecordChild1, // #0 = $ws
/* 17471*/      OPC_RecordChild2, // #1 = $wt
/* 17472*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17474*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3685:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (ASUB_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 17482*/    /*Scope*/ 15, /*->17498*/
/* 17483*/      OPC_CheckChild0Integer, 104|128,28/*3688*/, 
/* 17486*/      OPC_RecordChild1, // #0 = $ws
/* 17487*/      OPC_RecordChild2, // #1 = $wt
/* 17488*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17490*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3688:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (AVE_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17498*/    /*Scope*/ 15, /*->17514*/
/* 17499*/      OPC_CheckChild0Integer, 106|128,28/*3690*/, 
/* 17502*/      OPC_RecordChild1, // #0 = $ws
/* 17503*/      OPC_RecordChild2, // #1 = $wt
/* 17504*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17506*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3690:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (AVE_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17514*/    /*Scope*/ 15, /*->17530*/
/* 17515*/      OPC_CheckChild0Integer, 107|128,28/*3691*/, 
/* 17518*/      OPC_RecordChild1, // #0 = $ws
/* 17519*/      OPC_RecordChild2, // #1 = $wt
/* 17520*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17522*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3691:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (AVE_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17530*/    /*Scope*/ 15, /*->17546*/
/* 17531*/      OPC_CheckChild0Integer, 105|128,28/*3689*/, 
/* 17534*/      OPC_RecordChild1, // #0 = $ws
/* 17535*/      OPC_RecordChild2, // #1 = $wt
/* 17536*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17538*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3689:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (AVE_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 17546*/    /*Scope*/ 15, /*->17562*/
/* 17547*/      OPC_CheckChild0Integer, 108|128,28/*3692*/, 
/* 17550*/      OPC_RecordChild1, // #0 = $ws
/* 17551*/      OPC_RecordChild2, // #1 = $wt
/* 17552*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17554*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3692:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (AVE_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17562*/    /*Scope*/ 15, /*->17578*/
/* 17563*/      OPC_CheckChild0Integer, 110|128,28/*3694*/, 
/* 17566*/      OPC_RecordChild1, // #0 = $ws
/* 17567*/      OPC_RecordChild2, // #1 = $wt
/* 17568*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17570*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3694:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (AVE_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17578*/    /*Scope*/ 15, /*->17594*/
/* 17579*/      OPC_CheckChild0Integer, 111|128,28/*3695*/, 
/* 17582*/      OPC_RecordChild1, // #0 = $ws
/* 17583*/      OPC_RecordChild2, // #1 = $wt
/* 17584*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17586*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3695:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (AVE_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17594*/    /*Scope*/ 15, /*->17610*/
/* 17595*/      OPC_CheckChild0Integer, 109|128,28/*3693*/, 
/* 17598*/      OPC_RecordChild1, // #0 = $ws
/* 17599*/      OPC_RecordChild2, // #1 = $wt
/* 17600*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17602*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3693:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (AVE_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 17610*/    /*Scope*/ 15, /*->17626*/
/* 17611*/      OPC_CheckChild0Integer, 112|128,28/*3696*/, 
/* 17614*/      OPC_RecordChild1, // #0 = $ws
/* 17615*/      OPC_RecordChild2, // #1 = $wt
/* 17616*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17618*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3696:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (AVER_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17626*/    /*Scope*/ 15, /*->17642*/
/* 17627*/      OPC_CheckChild0Integer, 114|128,28/*3698*/, 
/* 17630*/      OPC_RecordChild1, // #0 = $ws
/* 17631*/      OPC_RecordChild2, // #1 = $wt
/* 17632*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17634*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3698:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (AVER_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17642*/    /*Scope*/ 15, /*->17658*/
/* 17643*/      OPC_CheckChild0Integer, 115|128,28/*3699*/, 
/* 17646*/      OPC_RecordChild1, // #0 = $ws
/* 17647*/      OPC_RecordChild2, // #1 = $wt
/* 17648*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17650*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3699:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (AVER_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17658*/    /*Scope*/ 15, /*->17674*/
/* 17659*/      OPC_CheckChild0Integer, 113|128,28/*3697*/, 
/* 17662*/      OPC_RecordChild1, // #0 = $ws
/* 17663*/      OPC_RecordChild2, // #1 = $wt
/* 17664*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17666*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3697:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (AVER_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 17674*/    /*Scope*/ 15, /*->17690*/
/* 17675*/      OPC_CheckChild0Integer, 116|128,28/*3700*/, 
/* 17678*/      OPC_RecordChild1, // #0 = $ws
/* 17679*/      OPC_RecordChild2, // #1 = $wt
/* 17680*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17682*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3700:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (AVER_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17690*/    /*Scope*/ 15, /*->17706*/
/* 17691*/      OPC_CheckChild0Integer, 118|128,28/*3702*/, 
/* 17694*/      OPC_RecordChild1, // #0 = $ws
/* 17695*/      OPC_RecordChild2, // #1 = $wt
/* 17696*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17698*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3702:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (AVER_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17706*/    /*Scope*/ 15, /*->17722*/
/* 17707*/      OPC_CheckChild0Integer, 119|128,28/*3703*/, 
/* 17710*/      OPC_RecordChild1, // #0 = $ws
/* 17711*/      OPC_RecordChild2, // #1 = $wt
/* 17712*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17714*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3703:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (AVER_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17722*/    /*Scope*/ 15, /*->17738*/
/* 17723*/      OPC_CheckChild0Integer, 117|128,28/*3701*/, 
/* 17726*/      OPC_RecordChild1, // #0 = $ws
/* 17727*/      OPC_RecordChild2, // #1 = $wt
/* 17728*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17730*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3701:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (AVER_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 17738*/    /*Scope*/ 17, /*->17756*/
/* 17739*/      OPC_CheckChild0Integer, 1|128,29/*3713*/, 
/* 17742*/      OPC_RecordChild1, // #0 = $wd_in
/* 17743*/      OPC_RecordChild2, // #1 = $ws
/* 17744*/      OPC_RecordChild3, // #2 = $wt
/* 17745*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17747*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSL_B), 0,
                    MVT::v16i8, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3713:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (BINSL_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17756*/    /*Scope*/ 17, /*->17774*/
/* 17757*/      OPC_CheckChild0Integer, 3|128,29/*3715*/, 
/* 17760*/      OPC_RecordChild1, // #0 = $wd_in
/* 17761*/      OPC_RecordChild2, // #1 = $ws
/* 17762*/      OPC_RecordChild3, // #2 = $wt
/* 17763*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17765*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSL_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3715:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (BINSL_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17774*/    /*Scope*/ 17, /*->17792*/
/* 17775*/      OPC_CheckChild0Integer, 4|128,29/*3716*/, 
/* 17778*/      OPC_RecordChild1, // #0 = $wd_in
/* 17779*/      OPC_RecordChild2, // #1 = $ws
/* 17780*/      OPC_RecordChild3, // #2 = $wt
/* 17781*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17783*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSL_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3716:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (BINSL_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17792*/    /*Scope*/ 17, /*->17810*/
/* 17793*/      OPC_CheckChild0Integer, 2|128,29/*3714*/, 
/* 17796*/      OPC_RecordChild1, // #0 = $wd_in
/* 17797*/      OPC_RecordChild2, // #1 = $ws
/* 17798*/      OPC_RecordChild3, // #2 = $wt
/* 17799*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17801*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSL_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3714:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (BINSL_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 17810*/    /*Scope*/ 17, /*->17828*/
/* 17811*/      OPC_CheckChild0Integer, 9|128,29/*3721*/, 
/* 17814*/      OPC_RecordChild1, // #0 = $wd_in
/* 17815*/      OPC_RecordChild2, // #1 = $ws
/* 17816*/      OPC_RecordChild3, // #2 = $wt
/* 17817*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17819*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSR_B), 0,
                    MVT::v16i8, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3721:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (BINSR_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17828*/    /*Scope*/ 17, /*->17846*/
/* 17829*/      OPC_CheckChild0Integer, 11|128,29/*3723*/, 
/* 17832*/      OPC_RecordChild1, // #0 = $wd_in
/* 17833*/      OPC_RecordChild2, // #1 = $ws
/* 17834*/      OPC_RecordChild3, // #2 = $wt
/* 17835*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17837*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSR_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3723:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (BINSR_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17846*/    /*Scope*/ 17, /*->17864*/
/* 17847*/      OPC_CheckChild0Integer, 12|128,29/*3724*/, 
/* 17850*/      OPC_RecordChild1, // #0 = $wd_in
/* 17851*/      OPC_RecordChild2, // #1 = $ws
/* 17852*/      OPC_RecordChild3, // #2 = $wt
/* 17853*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17855*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSR_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3724:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (BINSR_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17864*/    /*Scope*/ 17, /*->17882*/
/* 17865*/      OPC_CheckChild0Integer, 10|128,29/*3722*/, 
/* 17868*/      OPC_RecordChild1, // #0 = $wd_in
/* 17869*/      OPC_RecordChild2, // #1 = $ws
/* 17870*/      OPC_RecordChild3, // #2 = $wt
/* 17871*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17873*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSR_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3722:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (BINSR_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 17882*/    /*Scope*/ 15, /*->17898*/
/* 17883*/      OPC_CheckChild0Integer, 123|128,29/*3835*/, 
/* 17886*/      OPC_RecordChild1, // #0 = $ws
/* 17887*/      OPC_RecordChild2, // #1 = $wt
/* 17888*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17890*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DOTP_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3835:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (DOTP_S_H:{ *:[v8i16] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17898*/    /*Scope*/ 15, /*->17914*/
/* 17899*/      OPC_CheckChild0Integer, 124|128,29/*3836*/, 
/* 17902*/      OPC_RecordChild1, // #0 = $ws
/* 17903*/      OPC_RecordChild2, // #1 = $wt
/* 17904*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17906*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DOTP_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3836:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (DOTP_S_W:{ *:[v4i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17914*/    /*Scope*/ 15, /*->17930*/
/* 17915*/      OPC_CheckChild0Integer, 122|128,29/*3834*/, 
/* 17918*/      OPC_RecordChild1, // #0 = $ws
/* 17919*/      OPC_RecordChild2, // #1 = $wt
/* 17920*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17922*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DOTP_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3834:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (DOTP_S_D:{ *:[v2i64] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17930*/    /*Scope*/ 15, /*->17946*/
/* 17931*/      OPC_CheckChild0Integer, 126|128,29/*3838*/, 
/* 17934*/      OPC_RecordChild1, // #0 = $ws
/* 17935*/      OPC_RecordChild2, // #1 = $wt
/* 17936*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17938*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DOTP_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3838:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (DOTP_U_H:{ *:[v8i16] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17946*/    /*Scope*/ 15, /*->17962*/
/* 17947*/      OPC_CheckChild0Integer, 127|128,29/*3839*/, 
/* 17950*/      OPC_RecordChild1, // #0 = $ws
/* 17951*/      OPC_RecordChild2, // #1 = $wt
/* 17952*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17954*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DOTP_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3839:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (DOTP_U_W:{ *:[v4i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17962*/    /*Scope*/ 15, /*->17978*/
/* 17963*/      OPC_CheckChild0Integer, 125|128,29/*3837*/, 
/* 17966*/      OPC_RecordChild1, // #0 = $ws
/* 17967*/      OPC_RecordChild2, // #1 = $wt
/* 17968*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17970*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DOTP_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3837:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (DOTP_U_D:{ *:[v2i64] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17978*/    /*Scope*/ 17, /*->17996*/
/* 17979*/      OPC_CheckChild0Integer, 2|128,30/*3842*/, 
/* 17982*/      OPC_RecordChild1, // #0 = $wd_in
/* 17983*/      OPC_RecordChild2, // #1 = $ws
/* 17984*/      OPC_RecordChild3, // #2 = $wt
/* 17985*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17987*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPADD_S_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3842:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (DPADD_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17996*/    /*Scope*/ 17, /*->18014*/
/* 17997*/      OPC_CheckChild0Integer, 3|128,30/*3843*/, 
/* 18000*/      OPC_RecordChild1, // #0 = $wd_in
/* 18001*/      OPC_RecordChild2, // #1 = $ws
/* 18002*/      OPC_RecordChild3, // #2 = $wt
/* 18003*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18005*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPADD_S_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3843:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (DPADD_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18014*/    /*Scope*/ 17, /*->18032*/
/* 18015*/      OPC_CheckChild0Integer, 1|128,30/*3841*/, 
/* 18018*/      OPC_RecordChild1, // #0 = $wd_in
/* 18019*/      OPC_RecordChild2, // #1 = $ws
/* 18020*/      OPC_RecordChild3, // #2 = $wt
/* 18021*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18023*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPADD_S_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3841:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (DPADD_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18032*/    /*Scope*/ 17, /*->18050*/
/* 18033*/      OPC_CheckChild0Integer, 5|128,30/*3845*/, 
/* 18036*/      OPC_RecordChild1, // #0 = $wd_in
/* 18037*/      OPC_RecordChild2, // #1 = $ws
/* 18038*/      OPC_RecordChild3, // #2 = $wt
/* 18039*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18041*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPADD_U_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3845:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (DPADD_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18050*/    /*Scope*/ 17, /*->18068*/
/* 18051*/      OPC_CheckChild0Integer, 6|128,30/*3846*/, 
/* 18054*/      OPC_RecordChild1, // #0 = $wd_in
/* 18055*/      OPC_RecordChild2, // #1 = $ws
/* 18056*/      OPC_RecordChild3, // #2 = $wt
/* 18057*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18059*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPADD_U_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3846:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (DPADD_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18068*/    /*Scope*/ 17, /*->18086*/
/* 18069*/      OPC_CheckChild0Integer, 4|128,30/*3844*/, 
/* 18072*/      OPC_RecordChild1, // #0 = $wd_in
/* 18073*/      OPC_RecordChild2, // #1 = $ws
/* 18074*/      OPC_RecordChild3, // #2 = $wt
/* 18075*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18077*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPADD_U_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3844:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (DPADD_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18086*/    /*Scope*/ 17, /*->18104*/
/* 18087*/      OPC_CheckChild0Integer, 22|128,30/*3862*/, 
/* 18090*/      OPC_RecordChild1, // #0 = $wd_in
/* 18091*/      OPC_RecordChild2, // #1 = $ws
/* 18092*/      OPC_RecordChild3, // #2 = $wt
/* 18093*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18095*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSUB_S_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3862:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (DPSUB_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18104*/    /*Scope*/ 17, /*->18122*/
/* 18105*/      OPC_CheckChild0Integer, 23|128,30/*3863*/, 
/* 18108*/      OPC_RecordChild1, // #0 = $wd_in
/* 18109*/      OPC_RecordChild2, // #1 = $ws
/* 18110*/      OPC_RecordChild3, // #2 = $wt
/* 18111*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18113*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSUB_S_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3863:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (DPSUB_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18122*/    /*Scope*/ 17, /*->18140*/
/* 18123*/      OPC_CheckChild0Integer, 21|128,30/*3861*/, 
/* 18126*/      OPC_RecordChild1, // #0 = $wd_in
/* 18127*/      OPC_RecordChild2, // #1 = $ws
/* 18128*/      OPC_RecordChild3, // #2 = $wt
/* 18129*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18131*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSUB_S_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3861:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (DPSUB_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18140*/    /*Scope*/ 17, /*->18158*/
/* 18141*/      OPC_CheckChild0Integer, 25|128,30/*3865*/, 
/* 18144*/      OPC_RecordChild1, // #0 = $wd_in
/* 18145*/      OPC_RecordChild2, // #1 = $ws
/* 18146*/      OPC_RecordChild3, // #2 = $wt
/* 18147*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18149*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSUB_U_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3865:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (DPSUB_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18158*/    /*Scope*/ 17, /*->18176*/
/* 18159*/      OPC_CheckChild0Integer, 26|128,30/*3866*/, 
/* 18162*/      OPC_RecordChild1, // #0 = $wd_in
/* 18163*/      OPC_RecordChild2, // #1 = $ws
/* 18164*/      OPC_RecordChild3, // #2 = $wt
/* 18165*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18167*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSUB_U_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3866:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (DPSUB_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18176*/    /*Scope*/ 17, /*->18194*/
/* 18177*/      OPC_CheckChild0Integer, 24|128,30/*3864*/, 
/* 18180*/      OPC_RecordChild1, // #0 = $wd_in
/* 18181*/      OPC_RecordChild2, // #1 = $ws
/* 18182*/      OPC_RecordChild3, // #2 = $wt
/* 18183*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18185*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSUB_U_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3864:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (DPSUB_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18194*/    /*Scope*/ 15, /*->18210*/
/* 18195*/      OPC_CheckChild0Integer, 37|128,30/*3877*/, 
/* 18198*/      OPC_RecordChild1, // #0 = $ws
/* 18199*/      OPC_RecordChild2, // #1 = $wt
/* 18200*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18202*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FCAF_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3877:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FCAF_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 18210*/    /*Scope*/ 15, /*->18226*/
/* 18211*/      OPC_CheckChild0Integer, 36|128,30/*3876*/, 
/* 18214*/      OPC_RecordChild1, // #0 = $ws
/* 18215*/      OPC_RecordChild2, // #1 = $wt
/* 18216*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18218*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FCAF_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3876:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FCAF_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 18226*/    /*Scope*/ 13, /*->18240*/
/* 18227*/      OPC_CheckChild0Integer, 41|128,30/*3881*/, 
/* 18230*/      OPC_RecordChild1, // #0 = $ws
/* 18231*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18233*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FCLASS_W), 0,
                    MVT::v4i32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3881:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 8
                // Dst: (FCLASS_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 18240*/    /*Scope*/ 13, /*->18254*/
/* 18241*/      OPC_CheckChild0Integer, 40|128,30/*3880*/, 
/* 18244*/      OPC_RecordChild1, // #0 = $ws
/* 18245*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18247*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FCLASS_D), 0,
                    MVT::v2i64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3880:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 8
                // Dst: (FCLASS_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 18254*/    /*Scope*/ 15, /*->18270*/
/* 18255*/      OPC_CheckChild0Integer, 105|128,30/*3945*/, 
/* 18258*/      OPC_RecordChild1, // #0 = $ws
/* 18259*/      OPC_RecordChild2, // #1 = $wt
/* 18260*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18262*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSAF_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3945:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSAF_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 18270*/    /*Scope*/ 15, /*->18286*/
/* 18271*/      OPC_CheckChild0Integer, 104|128,30/*3944*/, 
/* 18274*/      OPC_RecordChild1, // #0 = $ws
/* 18275*/      OPC_RecordChild2, // #1 = $wt
/* 18276*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18278*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSAF_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3944:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSAF_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 18286*/    /*Scope*/ 15, /*->18302*/
/* 18287*/      OPC_CheckChild0Integer, 107|128,30/*3947*/, 
/* 18290*/      OPC_RecordChild1, // #0 = $ws
/* 18291*/      OPC_RecordChild2, // #1 = $wt
/* 18292*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18294*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSEQ_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3947:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSEQ_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 18302*/    /*Scope*/ 15, /*->18318*/
/* 18303*/      OPC_CheckChild0Integer, 106|128,30/*3946*/, 
/* 18306*/      OPC_RecordChild1, // #0 = $ws
/* 18307*/      OPC_RecordChild2, // #1 = $wt
/* 18308*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18310*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSEQ_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3946:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSEQ_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 18318*/    /*Scope*/ 15, /*->18334*/
/* 18319*/      OPC_CheckChild0Integer, 109|128,30/*3949*/, 
/* 18322*/      OPC_RecordChild1, // #0 = $ws
/* 18323*/      OPC_RecordChild2, // #1 = $wt
/* 18324*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18326*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSLE_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3949:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSLE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 18334*/    /*Scope*/ 15, /*->18350*/
/* 18335*/      OPC_CheckChild0Integer, 108|128,30/*3948*/, 
/* 18338*/      OPC_RecordChild1, // #0 = $ws
/* 18339*/      OPC_RecordChild2, // #1 = $wt
/* 18340*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18342*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSLE_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3948:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSLE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 18350*/    /*Scope*/ 15, /*->18366*/
/* 18351*/      OPC_CheckChild0Integer, 111|128,30/*3951*/, 
/* 18354*/      OPC_RecordChild1, // #0 = $ws
/* 18355*/      OPC_RecordChild2, // #1 = $wt
/* 18356*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18358*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSLT_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3951:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSLT_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 18366*/    /*Scope*/ 15, /*->18382*/
/* 18367*/      OPC_CheckChild0Integer, 110|128,30/*3950*/, 
/* 18370*/      OPC_RecordChild1, // #0 = $ws
/* 18371*/      OPC_RecordChild2, // #1 = $wt
/* 18372*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18374*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSLT_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3950:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSLT_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 18382*/    /*Scope*/ 15, /*->18398*/
/* 18383*/      OPC_CheckChild0Integer, 113|128,30/*3953*/, 
/* 18386*/      OPC_RecordChild1, // #0 = $ws
/* 18387*/      OPC_RecordChild2, // #1 = $wt
/* 18388*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18390*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSNE_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3953:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSNE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 18398*/    /*Scope*/ 15, /*->18414*/
/* 18399*/      OPC_CheckChild0Integer, 112|128,30/*3952*/, 
/* 18402*/      OPC_RecordChild1, // #0 = $ws
/* 18403*/      OPC_RecordChild2, // #1 = $wt
/* 18404*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18406*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSNE_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3952:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSNE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 18414*/    /*Scope*/ 15, /*->18430*/
/* 18415*/      OPC_CheckChild0Integer, 115|128,30/*3955*/, 
/* 18418*/      OPC_RecordChild1, // #0 = $ws
/* 18419*/      OPC_RecordChild2, // #1 = $wt
/* 18420*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18422*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSOR_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3955:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSOR_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 18430*/    /*Scope*/ 15, /*->18446*/
/* 18431*/      OPC_CheckChild0Integer, 114|128,30/*3954*/, 
/* 18434*/      OPC_RecordChild1, // #0 = $ws
/* 18435*/      OPC_RecordChild2, // #1 = $wt
/* 18436*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18438*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSOR_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3954:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSOR_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 18446*/    /*Scope*/ 15, /*->18462*/
/* 18447*/      OPC_CheckChild0Integer, 121|128,30/*3961*/, 
/* 18450*/      OPC_RecordChild1, // #0 = $ws
/* 18451*/      OPC_RecordChild2, // #1 = $wt
/* 18452*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18454*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUEQ_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3961:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSUEQ_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 18462*/    /*Scope*/ 15, /*->18478*/
/* 18463*/      OPC_CheckChild0Integer, 120|128,30/*3960*/, 
/* 18466*/      OPC_RecordChild1, // #0 = $ws
/* 18467*/      OPC_RecordChild2, // #1 = $wt
/* 18468*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18470*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUEQ_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3960:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSUEQ_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 18478*/    /*Scope*/ 15, /*->18494*/
/* 18479*/      OPC_CheckChild0Integer, 123|128,30/*3963*/, 
/* 18482*/      OPC_RecordChild1, // #0 = $ws
/* 18483*/      OPC_RecordChild2, // #1 = $wt
/* 18484*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18486*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSULE_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3963:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSULE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 18494*/    /*Scope*/ 15, /*->18510*/
/* 18495*/      OPC_CheckChild0Integer, 122|128,30/*3962*/, 
/* 18498*/      OPC_RecordChild1, // #0 = $ws
/* 18499*/      OPC_RecordChild2, // #1 = $wt
/* 18500*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18502*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSULE_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3962:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSULE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 18510*/    /*Scope*/ 15, /*->18526*/
/* 18511*/      OPC_CheckChild0Integer, 125|128,30/*3965*/, 
/* 18514*/      OPC_RecordChild1, // #0 = $ws
/* 18515*/      OPC_RecordChild2, // #1 = $wt
/* 18516*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18518*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSULT_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3965:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSULT_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 18526*/    /*Scope*/ 15, /*->18542*/
/* 18527*/      OPC_CheckChild0Integer, 124|128,30/*3964*/, 
/* 18530*/      OPC_RecordChild1, // #0 = $ws
/* 18531*/      OPC_RecordChild2, // #1 = $wt
/* 18532*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18534*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSULT_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3964:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSULT_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 18542*/    /*Scope*/ 15, /*->18558*/
/* 18543*/      OPC_CheckChild0Integer, 127|128,30/*3967*/, 
/* 18546*/      OPC_RecordChild1, // #0 = $ws
/* 18547*/      OPC_RecordChild2, // #1 = $wt
/* 18548*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18550*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUN_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3967:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSUN_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 18558*/    /*Scope*/ 15, /*->18574*/
/* 18559*/      OPC_CheckChild0Integer, 126|128,30/*3966*/, 
/* 18562*/      OPC_RecordChild1, // #0 = $ws
/* 18563*/      OPC_RecordChild2, // #1 = $wt
/* 18564*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18566*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUN_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3966:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSUN_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 18574*/    /*Scope*/ 15, /*->18590*/
/* 18575*/      OPC_CheckChild0Integer, 1|128,31/*3969*/, 
/* 18578*/      OPC_RecordChild1, // #0 = $ws
/* 18579*/      OPC_RecordChild2, // #1 = $wt
/* 18580*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18582*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUNE_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3969:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSUNE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 18590*/    /*Scope*/ 15, /*->18606*/
/* 18591*/      OPC_CheckChild0Integer, 0|128,31/*3968*/, 
/* 18594*/      OPC_RecordChild1, // #0 = $ws
/* 18595*/      OPC_RecordChild2, // #1 = $wt
/* 18596*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18598*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUNE_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3968:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSUNE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 18606*/    /*Scope*/ 13, /*->18620*/
/* 18607*/      OPC_CheckChild0Integer, 3|128,31/*3971*/, 
/* 18610*/      OPC_RecordChild1, // #0 = $ws
/* 18611*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18613*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTINT_S_W), 0,
                    MVT::v4i32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3971:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 8
                // Dst: (FTINT_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 18620*/    /*Scope*/ 13, /*->18634*/
/* 18621*/      OPC_CheckChild0Integer, 2|128,31/*3970*/, 
/* 18624*/      OPC_RecordChild1, // #0 = $ws
/* 18625*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18627*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTINT_S_D), 0,
                    MVT::v2i64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3970:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 8
                // Dst: (FTINT_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 18634*/    /*Scope*/ 13, /*->18648*/
/* 18635*/      OPC_CheckChild0Integer, 5|128,31/*3973*/, 
/* 18638*/      OPC_RecordChild1, // #0 = $ws
/* 18639*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18641*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTINT_U_W), 0,
                    MVT::v4i32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3973:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 8
                // Dst: (FTINT_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 18648*/    /*Scope*/ 13, /*->18662*/
/* 18649*/      OPC_CheckChild0Integer, 4|128,31/*3972*/, 
/* 18652*/      OPC_RecordChild1, // #0 = $ws
/* 18653*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18655*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTINT_U_D), 0,
                    MVT::v2i64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3972:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 8
                // Dst: (FTINT_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 18662*/    /*Scope*/ 15, /*->18678*/
/* 18663*/      OPC_CheckChild0Integer, 6|128,31/*3974*/, 
/* 18666*/      OPC_RecordChild1, // #0 = $ws
/* 18667*/      OPC_RecordChild2, // #1 = $wt
/* 18668*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18670*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTQ_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3974:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FTQ_H:{ *:[v8i16] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 18678*/    /*Scope*/ 15, /*->18694*/
/* 18679*/      OPC_CheckChild0Integer, 7|128,31/*3975*/, 
/* 18682*/      OPC_RecordChild1, // #0 = $ws
/* 18683*/      OPC_RecordChild2, // #1 = $wt
/* 18684*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18686*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTQ_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3975:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FTQ_W:{ *:[v4i32] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 18694*/    /*Scope*/ 15, /*->18710*/
/* 18695*/      OPC_CheckChild0Integer, 13|128,31/*3981*/, 
/* 18698*/      OPC_RecordChild1, // #0 = $ws
/* 18699*/      OPC_RecordChild2, // #1 = $wt
/* 18700*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18702*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HADD_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3981:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (HADD_S_H:{ *:[v8i16] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18710*/    /*Scope*/ 15, /*->18726*/
/* 18711*/      OPC_CheckChild0Integer, 14|128,31/*3982*/, 
/* 18714*/      OPC_RecordChild1, // #0 = $ws
/* 18715*/      OPC_RecordChild2, // #1 = $wt
/* 18716*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18718*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HADD_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3982:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (HADD_S_W:{ *:[v4i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18726*/    /*Scope*/ 15, /*->18742*/
/* 18727*/      OPC_CheckChild0Integer, 12|128,31/*3980*/, 
/* 18730*/      OPC_RecordChild1, // #0 = $ws
/* 18731*/      OPC_RecordChild2, // #1 = $wt
/* 18732*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18734*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HADD_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3980:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (HADD_S_D:{ *:[v2i64] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18742*/    /*Scope*/ 15, /*->18758*/
/* 18743*/      OPC_CheckChild0Integer, 16|128,31/*3984*/, 
/* 18746*/      OPC_RecordChild1, // #0 = $ws
/* 18747*/      OPC_RecordChild2, // #1 = $wt
/* 18748*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18750*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HADD_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3984:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (HADD_U_H:{ *:[v8i16] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18758*/    /*Scope*/ 15, /*->18774*/
/* 18759*/      OPC_CheckChild0Integer, 17|128,31/*3985*/, 
/* 18762*/      OPC_RecordChild1, // #0 = $ws
/* 18763*/      OPC_RecordChild2, // #1 = $wt
/* 18764*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18766*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HADD_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3985:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (HADD_U_W:{ *:[v4i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18774*/    /*Scope*/ 15, /*->18790*/
/* 18775*/      OPC_CheckChild0Integer, 15|128,31/*3983*/, 
/* 18778*/      OPC_RecordChild1, // #0 = $ws
/* 18779*/      OPC_RecordChild2, // #1 = $wt
/* 18780*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18782*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HADD_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3983:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (HADD_U_D:{ *:[v2i64] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18790*/    /*Scope*/ 15, /*->18806*/
/* 18791*/      OPC_CheckChild0Integer, 19|128,31/*3987*/, 
/* 18794*/      OPC_RecordChild1, // #0 = $ws
/* 18795*/      OPC_RecordChild2, // #1 = $wt
/* 18796*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18798*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HSUB_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3987:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (HSUB_S_H:{ *:[v8i16] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18806*/    /*Scope*/ 15, /*->18822*/
/* 18807*/      OPC_CheckChild0Integer, 20|128,31/*3988*/, 
/* 18810*/      OPC_RecordChild1, // #0 = $ws
/* 18811*/      OPC_RecordChild2, // #1 = $wt
/* 18812*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18814*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HSUB_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3988:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (HSUB_S_W:{ *:[v4i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18822*/    /*Scope*/ 15, /*->18838*/
/* 18823*/      OPC_CheckChild0Integer, 18|128,31/*3986*/, 
/* 18826*/      OPC_RecordChild1, // #0 = $ws
/* 18827*/      OPC_RecordChild2, // #1 = $wt
/* 18828*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18830*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HSUB_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3986:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (HSUB_S_D:{ *:[v2i64] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18838*/    /*Scope*/ 15, /*->18854*/
/* 18839*/      OPC_CheckChild0Integer, 22|128,31/*3990*/, 
/* 18842*/      OPC_RecordChild1, // #0 = $ws
/* 18843*/      OPC_RecordChild2, // #1 = $wt
/* 18844*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18846*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HSUB_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3990:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (HSUB_U_H:{ *:[v8i16] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18854*/    /*Scope*/ 15, /*->18870*/
/* 18855*/      OPC_CheckChild0Integer, 23|128,31/*3991*/, 
/* 18858*/      OPC_RecordChild1, // #0 = $ws
/* 18859*/      OPC_RecordChild2, // #1 = $wt
/* 18860*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18862*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HSUB_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3991:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (HSUB_U_W:{ *:[v4i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18870*/    /*Scope*/ 15, /*->18886*/
/* 18871*/      OPC_CheckChild0Integer, 21|128,31/*3989*/, 
/* 18874*/      OPC_RecordChild1, // #0 = $ws
/* 18875*/      OPC_RecordChild2, // #1 = $wt
/* 18876*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18878*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HSUB_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3989:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (HSUB_U_D:{ *:[v2i64] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18886*/    /*Scope*/ 17, /*->18904*/
/* 18887*/      OPC_CheckChild0Integer, 62|128,31/*4030*/, 
/* 18890*/      OPC_RecordChild1, // #0 = $wd_in
/* 18891*/      OPC_RecordChild2, // #1 = $ws
/* 18892*/      OPC_RecordChild3, // #2 = $wt
/* 18893*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18895*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MADD_Q_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4030:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (MADD_Q_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18904*/    /*Scope*/ 17, /*->18922*/
/* 18905*/      OPC_CheckChild0Integer, 63|128,31/*4031*/, 
/* 18908*/      OPC_RecordChild1, // #0 = $wd_in
/* 18909*/      OPC_RecordChild2, // #1 = $ws
/* 18910*/      OPC_RecordChild3, // #2 = $wt
/* 18911*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18913*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MADD_Q_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4031:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (MADD_Q_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18922*/    /*Scope*/ 17, /*->18940*/
/* 18923*/      OPC_CheckChild0Integer, 64|128,31/*4032*/, 
/* 18926*/      OPC_RecordChild1, // #0 = $wd_in
/* 18927*/      OPC_RecordChild2, // #1 = $ws
/* 18928*/      OPC_RecordChild3, // #2 = $wt
/* 18929*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18931*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MADDR_Q_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4032:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (MADDR_Q_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18940*/    /*Scope*/ 17, /*->18958*/
/* 18941*/      OPC_CheckChild0Integer, 65|128,31/*4033*/, 
/* 18944*/      OPC_RecordChild1, // #0 = $wd_in
/* 18945*/      OPC_RecordChild2, // #1 = $ws
/* 18946*/      OPC_RecordChild3, // #2 = $wt
/* 18947*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18949*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MADDR_Q_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4033:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (MADDR_Q_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18958*/    /*Scope*/ 15, /*->18974*/
/* 18959*/      OPC_CheckChild0Integer, 75|128,31/*4043*/, 
/* 18962*/      OPC_RecordChild1, // #0 = $ws
/* 18963*/      OPC_RecordChild2, // #1 = $wt
/* 18964*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18966*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_A_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 4043:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (MAX_A_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18974*/    /*Scope*/ 15, /*->18990*/
/* 18975*/      OPC_CheckChild0Integer, 77|128,31/*4045*/, 
/* 18978*/      OPC_RecordChild1, // #0 = $ws
/* 18979*/      OPC_RecordChild2, // #1 = $wt
/* 18980*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18982*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_A_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4045:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (MAX_A_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18990*/    /*Scope*/ 15, /*->19006*/
/* 18991*/      OPC_CheckChild0Integer, 78|128,31/*4046*/, 
/* 18994*/      OPC_RecordChild1, // #0 = $ws
/* 18995*/      OPC_RecordChild2, // #1 = $wt
/* 18996*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18998*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_A_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4046:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (MAX_A_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19006*/    /*Scope*/ 15, /*->19022*/
/* 19007*/      OPC_CheckChild0Integer, 76|128,31/*4044*/, 
/* 19010*/      OPC_RecordChild1, // #0 = $ws
/* 19011*/      OPC_RecordChild2, // #1 = $wt
/* 19012*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19014*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_A_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 4044:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (MAX_A_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 19022*/    /*Scope*/ 15, /*->19038*/
/* 19023*/      OPC_CheckChild0Integer, 95|128,31/*4063*/, 
/* 19026*/      OPC_RecordChild1, // #0 = $ws
/* 19027*/      OPC_RecordChild2, // #1 = $wt
/* 19028*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19030*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_A_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 4063:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (MIN_A_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 19038*/    /*Scope*/ 15, /*->19054*/
/* 19039*/      OPC_CheckChild0Integer, 97|128,31/*4065*/, 
/* 19042*/      OPC_RecordChild1, // #0 = $ws
/* 19043*/      OPC_RecordChild2, // #1 = $wt
/* 19044*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19046*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_A_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4065:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (MIN_A_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19054*/    /*Scope*/ 15, /*->19070*/
/* 19055*/      OPC_CheckChild0Integer, 98|128,31/*4066*/, 
/* 19058*/      OPC_RecordChild1, // #0 = $ws
/* 19059*/      OPC_RecordChild2, // #1 = $wt
/* 19060*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19062*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_A_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4066:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (MIN_A_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19070*/    /*Scope*/ 15, /*->19086*/
/* 19071*/      OPC_CheckChild0Integer, 96|128,31/*4064*/, 
/* 19074*/      OPC_RecordChild1, // #0 = $ws
/* 19075*/      OPC_RecordChild2, // #1 = $wt
/* 19076*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19078*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_A_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 4064:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (MIN_A_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 19086*/    /*Scope*/ 17, /*->19104*/
/* 19087*/      OPC_CheckChild0Integer, 126|128,31/*4094*/, 
/* 19090*/      OPC_RecordChild1, // #0 = $wd_in
/* 19091*/      OPC_RecordChild2, // #1 = $ws
/* 19092*/      OPC_RecordChild3, // #2 = $wt
/* 19093*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19095*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUB_Q_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4094:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (MSUB_Q_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19104*/    /*Scope*/ 17, /*->19122*/
/* 19105*/      OPC_CheckChild0Integer, 127|128,31/*4095*/, 
/* 19108*/      OPC_RecordChild1, // #0 = $wd_in
/* 19109*/      OPC_RecordChild2, // #1 = $ws
/* 19110*/      OPC_RecordChild3, // #2 = $wt
/* 19111*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19113*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUB_Q_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4095:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (MSUB_Q_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19122*/    /*Scope*/ 17, /*->19140*/
/* 19123*/      OPC_CheckChild0Integer, 0|128,32/*4096*/, 
/* 19126*/      OPC_RecordChild1, // #0 = $wd_in
/* 19127*/      OPC_RecordChild2, // #1 = $ws
/* 19128*/      OPC_RecordChild3, // #2 = $wt
/* 19129*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19131*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUBR_Q_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4096:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (MSUBR_Q_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19140*/    /*Scope*/ 17, /*->19158*/
/* 19141*/      OPC_CheckChild0Integer, 1|128,32/*4097*/, 
/* 19144*/      OPC_RecordChild1, // #0 = $wd_in
/* 19145*/      OPC_RecordChild2, // #1 = $ws
/* 19146*/      OPC_RecordChild3, // #2 = $wt
/* 19147*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19149*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUBR_Q_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4097:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (MSUBR_Q_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19158*/    /*Scope*/ 15, /*->19174*/
/* 19159*/      OPC_CheckChild0Integer, 9|128,32/*4105*/, 
/* 19162*/      OPC_RecordChild1, // #0 = $ws
/* 19163*/      OPC_RecordChild2, // #1 = $wt
/* 19164*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19166*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MUL_Q_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4105:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (MUL_Q_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19174*/    /*Scope*/ 15, /*->19190*/
/* 19175*/      OPC_CheckChild0Integer, 10|128,32/*4106*/, 
/* 19178*/      OPC_RecordChild1, // #0 = $ws
/* 19179*/      OPC_RecordChild2, // #1 = $wt
/* 19180*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19182*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MUL_Q_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4106:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (MUL_Q_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19190*/    /*Scope*/ 15, /*->19206*/
/* 19191*/      OPC_CheckChild0Integer, 20|128,32/*4116*/, 
/* 19194*/      OPC_RecordChild1, // #0 = $ws
/* 19195*/      OPC_RecordChild2, // #1 = $wt
/* 19196*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19198*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MULR_Q_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4116:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (MULR_Q_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19206*/    /*Scope*/ 15, /*->19222*/
/* 19207*/      OPC_CheckChild0Integer, 21|128,32/*4117*/, 
/* 19210*/      OPC_RecordChild1, // #0 = $ws
/* 19211*/      OPC_RecordChild2, // #1 = $wt
/* 19212*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19214*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MULR_Q_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4117:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (MULR_Q_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19222*/    /*Scope*/ 13, /*->19236*/
/* 19223*/      OPC_CheckChild0Integer, 30|128,32/*4126*/, 
/* 19226*/      OPC_RecordChild1, // #0 = $ws
/* 19227*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19229*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::NLOC_B), 0,
                    MVT::v16i8, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 4126:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 8
                // Dst: (NLOC_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws)
/* 19236*/    /*Scope*/ 13, /*->19250*/
/* 19237*/      OPC_CheckChild0Integer, 32|128,32/*4128*/, 
/* 19240*/      OPC_RecordChild1, // #0 = $ws
/* 19241*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19243*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::NLOC_H), 0,
                    MVT::v8i16, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4128:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 8
                // Dst: (NLOC_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws)
/* 19250*/    /*Scope*/ 13, /*->19264*/
/* 19251*/      OPC_CheckChild0Integer, 33|128,32/*4129*/, 
/* 19254*/      OPC_RecordChild1, // #0 = $ws
/* 19255*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19257*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::NLOC_W), 0,
                    MVT::v4i32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4129:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 8
                // Dst: (NLOC_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws)
/* 19264*/    /*Scope*/ 13, /*->19278*/
/* 19265*/      OPC_CheckChild0Integer, 31|128,32/*4127*/, 
/* 19268*/      OPC_RecordChild1, // #0 = $ws
/* 19269*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19271*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::NLOC_D), 0,
                    MVT::v2i64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 4127:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 8
                // Dst: (NLOC_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws)
/* 19278*/    /*Scope*/ 17, /*->19296*/
/* 19279*/      OPC_CheckChild0Integer, 102|128,32/*4198*/, 
/* 19282*/      OPC_RecordChild1, // #0 = $wd_in
/* 19283*/      OPC_RecordChild2, // #1 = $ws
/* 19284*/      OPC_RecordChild3, // #2 = $rt
/* 19285*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19287*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLD_B), 0,
                    MVT::v16i8, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 4198:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                // Dst: (SLD_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, GPR32Opnd:{ *:[i32] }:$rt)
/* 19296*/    /*Scope*/ 17, /*->19314*/
/* 19297*/      OPC_CheckChild0Integer, 104|128,32/*4200*/, 
/* 19300*/      OPC_RecordChild1, // #0 = $wd_in
/* 19301*/      OPC_RecordChild2, // #1 = $ws
/* 19302*/      OPC_RecordChild3, // #2 = $rt
/* 19303*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19305*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLD_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4200:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                // Dst: (SLD_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, GPR32Opnd:{ *:[i32] }:$rt)
/* 19314*/    /*Scope*/ 17, /*->19332*/
/* 19315*/      OPC_CheckChild0Integer, 105|128,32/*4201*/, 
/* 19318*/      OPC_RecordChild1, // #0 = $wd_in
/* 19319*/      OPC_RecordChild2, // #1 = $ws
/* 19320*/      OPC_RecordChild3, // #2 = $rt
/* 19321*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19323*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLD_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4201:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                // Dst: (SLD_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, GPR32Opnd:{ *:[i32] }:$rt)
/* 19332*/    /*Scope*/ 17, /*->19350*/
/* 19333*/      OPC_CheckChild0Integer, 103|128,32/*4199*/, 
/* 19336*/      OPC_RecordChild1, // #0 = $wd_in
/* 19337*/      OPC_RecordChild2, // #1 = $ws
/* 19338*/      OPC_RecordChild3, // #2 = $rt
/* 19339*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19341*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLD_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 4199:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                // Dst: (SLD_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, GPR32Opnd:{ *:[i32] }:$rt)
/* 19350*/    /*Scope*/ 15, /*->19366*/
/* 19351*/      OPC_CheckChild0Integer, 6|128,33/*4230*/, 
/* 19354*/      OPC_RecordChild1, // #0 = $ws
/* 19355*/      OPC_RecordChild2, // #1 = $wt
/* 19356*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19358*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRAR_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 4230:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (SRAR_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 19366*/    /*Scope*/ 15, /*->19382*/
/* 19367*/      OPC_CheckChild0Integer, 8|128,33/*4232*/, 
/* 19370*/      OPC_RecordChild1, // #0 = $ws
/* 19371*/      OPC_RecordChild2, // #1 = $wt
/* 19372*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19374*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRAR_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4232:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (SRAR_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19382*/    /*Scope*/ 15, /*->19398*/
/* 19383*/      OPC_CheckChild0Integer, 9|128,33/*4233*/, 
/* 19386*/      OPC_RecordChild1, // #0 = $ws
/* 19387*/      OPC_RecordChild2, // #1 = $wt
/* 19388*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19390*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRAR_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4233:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (SRAR_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19398*/    /*Scope*/ 15, /*->19414*/
/* 19399*/      OPC_CheckChild0Integer, 7|128,33/*4231*/, 
/* 19402*/      OPC_RecordChild1, // #0 = $ws
/* 19403*/      OPC_RecordChild2, // #1 = $wt
/* 19404*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19406*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRAR_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 4231:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (SRAR_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 19414*/    /*Scope*/ 15, /*->19430*/
/* 19415*/      OPC_CheckChild0Integer, 22|128,33/*4246*/, 
/* 19418*/      OPC_RecordChild1, // #0 = $ws
/* 19419*/      OPC_RecordChild2, // #1 = $wt
/* 19420*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19422*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLR_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 4246:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (SRLR_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 19430*/    /*Scope*/ 15, /*->19446*/
/* 19431*/      OPC_CheckChild0Integer, 24|128,33/*4248*/, 
/* 19434*/      OPC_RecordChild1, // #0 = $ws
/* 19435*/      OPC_RecordChild2, // #1 = $wt
/* 19436*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19438*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLR_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4248:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (SRLR_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19446*/    /*Scope*/ 15, /*->19462*/
/* 19447*/      OPC_CheckChild0Integer, 25|128,33/*4249*/, 
/* 19450*/      OPC_RecordChild1, // #0 = $ws
/* 19451*/      OPC_RecordChild2, // #1 = $wt
/* 19452*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19454*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLR_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4249:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (SRLR_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19462*/    /*Scope*/ 15, /*->19478*/
/* 19463*/      OPC_CheckChild0Integer, 23|128,33/*4247*/, 
/* 19466*/      OPC_RecordChild1, // #0 = $ws
/* 19467*/      OPC_RecordChild2, // #1 = $wt
/* 19468*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19470*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLR_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 4247:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (SRLR_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 19478*/    /*Scope*/ 15, /*->19494*/
/* 19479*/      OPC_CheckChild0Integer, 41|128,33/*4265*/, 
/* 19482*/      OPC_RecordChild1, // #0 = $ws
/* 19483*/      OPC_RecordChild2, // #1 = $wt
/* 19484*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19486*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 4265:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (SUBS_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 19494*/    /*Scope*/ 15, /*->19510*/
/* 19495*/      OPC_CheckChild0Integer, 43|128,33/*4267*/, 
/* 19498*/      OPC_RecordChild1, // #0 = $ws
/* 19499*/      OPC_RecordChild2, // #1 = $wt
/* 19500*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19502*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4267:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (SUBS_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19510*/    /*Scope*/ 15, /*->19526*/
/* 19511*/      OPC_CheckChild0Integer, 44|128,33/*4268*/, 
/* 19514*/      OPC_RecordChild1, // #0 = $ws
/* 19515*/      OPC_RecordChild2, // #1 = $wt
/* 19516*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19518*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4268:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (SUBS_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19526*/    /*Scope*/ 15, /*->19542*/
/* 19527*/      OPC_CheckChild0Integer, 42|128,33/*4266*/, 
/* 19530*/      OPC_RecordChild1, // #0 = $ws
/* 19531*/      OPC_RecordChild2, // #1 = $wt
/* 19532*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19534*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 4266:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (SUBS_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 19542*/    /*Scope*/ 15, /*->19558*/
/* 19543*/      OPC_CheckChild0Integer, 45|128,33/*4269*/, 
/* 19546*/      OPC_RecordChild1, // #0 = $ws
/* 19547*/      OPC_RecordChild2, // #1 = $wt
/* 19548*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19550*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 4269:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (SUBS_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 19558*/    /*Scope*/ 15, /*->19574*/
/* 19559*/      OPC_CheckChild0Integer, 47|128,33/*4271*/, 
/* 19562*/      OPC_RecordChild1, // #0 = $ws
/* 19563*/      OPC_RecordChild2, // #1 = $wt
/* 19564*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19566*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4271:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (SUBS_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19574*/    /*Scope*/ 15, /*->19590*/
/* 19575*/      OPC_CheckChild0Integer, 48|128,33/*4272*/, 
/* 19578*/      OPC_RecordChild1, // #0 = $ws
/* 19579*/      OPC_RecordChild2, // #1 = $wt
/* 19580*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19582*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4272:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (SUBS_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19590*/    /*Scope*/ 15, /*->19606*/
/* 19591*/      OPC_CheckChild0Integer, 46|128,33/*4270*/, 
/* 19594*/      OPC_RecordChild1, // #0 = $ws
/* 19595*/      OPC_RecordChild2, // #1 = $wt
/* 19596*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19598*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 4270:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (SUBS_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 19606*/    /*Scope*/ 15, /*->19622*/
/* 19607*/      OPC_CheckChild0Integer, 49|128,33/*4273*/, 
/* 19610*/      OPC_RecordChild1, // #0 = $ws
/* 19611*/      OPC_RecordChild2, // #1 = $wt
/* 19612*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19614*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUS_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 4273:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (SUBSUS_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 19622*/    /*Scope*/ 15, /*->19638*/
/* 19623*/      OPC_CheckChild0Integer, 51|128,33/*4275*/, 
/* 19626*/      OPC_RecordChild1, // #0 = $ws
/* 19627*/      OPC_RecordChild2, // #1 = $wt
/* 19628*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19630*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUS_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4275:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (SUBSUS_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19638*/    /*Scope*/ 15, /*->19654*/
/* 19639*/      OPC_CheckChild0Integer, 52|128,33/*4276*/, 
/* 19642*/      OPC_RecordChild1, // #0 = $ws
/* 19643*/      OPC_RecordChild2, // #1 = $wt
/* 19644*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19646*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUS_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4276:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (SUBSUS_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19654*/    /*Scope*/ 15, /*->19670*/
/* 19655*/      OPC_CheckChild0Integer, 50|128,33/*4274*/, 
/* 19658*/      OPC_RecordChild1, // #0 = $ws
/* 19659*/      OPC_RecordChild2, // #1 = $wt
/* 19660*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19662*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUS_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 4274:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (SUBSUS_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 19670*/    /*Scope*/ 15, /*->19686*/
/* 19671*/      OPC_CheckChild0Integer, 53|128,33/*4277*/, 
/* 19674*/      OPC_RecordChild1, // #0 = $ws
/* 19675*/      OPC_RecordChild2, // #1 = $wt
/* 19676*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19678*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUU_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 4277:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (SUBSUU_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 19686*/    /*Scope*/ 15, /*->19702*/
/* 19687*/      OPC_CheckChild0Integer, 55|128,33/*4279*/, 
/* 19690*/      OPC_RecordChild1, // #0 = $ws
/* 19691*/      OPC_RecordChild2, // #1 = $wt
/* 19692*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19694*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUU_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 4279:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (SUBSUU_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19702*/    /*Scope*/ 15, /*->19718*/
/* 19703*/      OPC_CheckChild0Integer, 56|128,33/*4280*/, 
/* 19706*/      OPC_RecordChild1, // #0 = $ws
/* 19707*/      OPC_RecordChild2, // #1 = $wt
/* 19708*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19710*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUU_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 4280:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (SUBSUU_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19718*/    /*Scope*/ 15, /*->19734*/
/* 19719*/      OPC_CheckChild0Integer, 54|128,33/*4278*/, 
/* 19722*/      OPC_RecordChild1, // #0 = $ws
/* 19723*/      OPC_RecordChild2, // #1 = $wt
/* 19724*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19726*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUU_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 4278:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (SUBSUU_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 19734*/    /*Scope*/ 15, /*->19750*/
/* 19735*/      OPC_CheckChild0Integer, 62|128,30/*3902*/, 
/* 19738*/      OPC_RecordChild1, // #0 = $ws
/* 19739*/      OPC_RecordChild2, // #1 = $wt
/* 19740*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19742*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXDO_H), 0,
                    MVT::v8f16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8f16] } 3902:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FEXDO_H:{ *:[v8f16] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19750*/    /*Scope*/ 15, /*->19766*/
/* 19751*/      OPC_CheckChild0Integer, 63|128,30/*3903*/, 
/* 19754*/      OPC_RecordChild1, // #0 = $ws
/* 19755*/      OPC_RecordChild2, // #1 = $wt
/* 19756*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19758*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXDO_W), 0,
                    MVT::v4f32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3903:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FEXDO_W:{ *:[v4f32] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19766*/    /*Scope*/ 13, /*->19780*/
/* 19767*/      OPC_CheckChild0Integer, 67|128,30/*3907*/, 
/* 19770*/      OPC_RecordChild1, // #0 = $ws
/* 19771*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19773*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXUPL_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3907:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8f16] }:$ws) - Complexity = 8
                // Dst: (FEXUPL_W:{ *:[v4f32] } MSA128HOpnd:{ *:[v8f16] }:$ws)
/* 19780*/    /*Scope*/ 13, /*->19794*/
/* 19781*/      OPC_CheckChild0Integer, 66|128,30/*3906*/, 
/* 19784*/      OPC_RecordChild1, // #0 = $ws
/* 19785*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19787*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXUPL_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3906:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 8
                // Dst: (FEXUPL_D:{ *:[v2f64] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 19794*/    /*Scope*/ 13, /*->19808*/
/* 19795*/      OPC_CheckChild0Integer, 69|128,30/*3909*/, 
/* 19798*/      OPC_RecordChild1, // #0 = $ws
/* 19799*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19801*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXUPR_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3909:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8f16] }:$ws) - Complexity = 8
                // Dst: (FEXUPR_W:{ *:[v4f32] } MSA128HOpnd:{ *:[v8f16] }:$ws)
/* 19808*/    /*Scope*/ 13, /*->19822*/
/* 19809*/      OPC_CheckChild0Integer, 68|128,30/*3908*/, 
/* 19812*/      OPC_RecordChild1, // #0 = $ws
/* 19813*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19815*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXUPR_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3908:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 8
                // Dst: (FEXUPR_D:{ *:[v2f64] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 19822*/    /*Scope*/ 13, /*->19836*/
/* 19823*/      OPC_CheckChild0Integer, 75|128,30/*3915*/, 
/* 19826*/      OPC_RecordChild1, // #0 = $ws
/* 19827*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19829*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FFQL_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3915:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 8
                // Dst: (FFQL_W:{ *:[v4f32] } MSA128HOpnd:{ *:[v8i16] }:$ws)
/* 19836*/    /*Scope*/ 13, /*->19850*/
/* 19837*/      OPC_CheckChild0Integer, 74|128,30/*3914*/, 
/* 19840*/      OPC_RecordChild1, // #0 = $ws
/* 19841*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19843*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FFQL_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3914:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 8
                // Dst: (FFQL_D:{ *:[v2f64] } MSA128WOpnd:{ *:[v4i32] }:$ws)
/* 19850*/    /*Scope*/ 13, /*->19864*/
/* 19851*/      OPC_CheckChild0Integer, 77|128,30/*3917*/, 
/* 19854*/      OPC_RecordChild1, // #0 = $ws
/* 19855*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19857*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FFQR_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3917:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 8
                // Dst: (FFQR_W:{ *:[v4f32] } MSA128HOpnd:{ *:[v8i16] }:$ws)
/* 19864*/    /*Scope*/ 13, /*->19878*/
/* 19865*/      OPC_CheckChild0Integer, 76|128,30/*3916*/, 
/* 19868*/      OPC_RecordChild1, // #0 = $ws
/* 19869*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19871*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FFQR_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3916:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 8
                // Dst: (FFQR_D:{ *:[v2f64] } MSA128WOpnd:{ *:[v4i32] }:$ws)
/* 19878*/    /*Scope*/ 15, /*->19894*/
/* 19879*/      OPC_CheckChild0Integer, 89|128,30/*3929*/, 
/* 19882*/      OPC_RecordChild1, // #0 = $ws
/* 19883*/      OPC_RecordChild2, // #1 = $wt
/* 19884*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19886*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMAX_W), 0,
                    MVT::v4f32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3929:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FMAX_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19894*/    /*Scope*/ 15, /*->19910*/
/* 19895*/      OPC_CheckChild0Integer, 88|128,30/*3928*/, 
/* 19898*/      OPC_RecordChild1, // #0 = $ws
/* 19899*/      OPC_RecordChild2, // #1 = $wt
/* 19900*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19902*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMAX_D), 0,
                    MVT::v2f64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3928:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FMAX_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19910*/    /*Scope*/ 15, /*->19926*/
/* 19911*/      OPC_CheckChild0Integer, 87|128,30/*3927*/, 
/* 19914*/      OPC_RecordChild1, // #0 = $ws
/* 19915*/      OPC_RecordChild2, // #1 = $wt
/* 19916*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19918*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMAX_A_W), 0,
                    MVT::v4f32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3927:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FMAX_A_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19926*/    /*Scope*/ 15, /*->19942*/
/* 19927*/      OPC_CheckChild0Integer, 86|128,30/*3926*/, 
/* 19930*/      OPC_RecordChild1, // #0 = $ws
/* 19931*/      OPC_RecordChild2, // #1 = $wt
/* 19932*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19934*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMAX_A_D), 0,
                    MVT::v2f64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3926:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FMAX_A_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19942*/    /*Scope*/ 15, /*->19958*/
/* 19943*/      OPC_CheckChild0Integer, 93|128,30/*3933*/, 
/* 19946*/      OPC_RecordChild1, // #0 = $ws
/* 19947*/      OPC_RecordChild2, // #1 = $wt
/* 19948*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19950*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMIN_W), 0,
                    MVT::v4f32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3933:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FMIN_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19958*/    /*Scope*/ 15, /*->19974*/
/* 19959*/      OPC_CheckChild0Integer, 92|128,30/*3932*/, 
/* 19962*/      OPC_RecordChild1, // #0 = $ws
/* 19963*/      OPC_RecordChild2, // #1 = $wt
/* 19964*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19966*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMIN_D), 0,
                    MVT::v2f64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3932:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FMIN_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19974*/    /*Scope*/ 15, /*->19990*/
/* 19975*/      OPC_CheckChild0Integer, 91|128,30/*3931*/, 
/* 19978*/      OPC_RecordChild1, // #0 = $ws
/* 19979*/      OPC_RecordChild2, // #1 = $wt
/* 19980*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19982*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMIN_A_W), 0,
                    MVT::v4f32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3931:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FMIN_A_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19990*/    /*Scope*/ 15, /*->20006*/
/* 19991*/      OPC_CheckChild0Integer, 90|128,30/*3930*/, 
/* 19994*/      OPC_RecordChild1, // #0 = $ws
/* 19995*/      OPC_RecordChild2, // #1 = $wt
/* 19996*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19998*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMIN_A_D), 0,
                    MVT::v2f64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3930:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FMIN_A_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 20006*/    /*Scope*/ 13, /*->20020*/
/* 20007*/      OPC_CheckChild0Integer, 99|128,30/*3939*/, 
/* 20010*/      OPC_RecordChild1, // #0 = $ws
/* 20011*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20013*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FRCP_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3939:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 8
                // Dst: (FRCP_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 20020*/    /*Scope*/ 13, /*->20034*/
/* 20021*/      OPC_CheckChild0Integer, 98|128,30/*3938*/, 
/* 20024*/      OPC_RecordChild1, // #0 = $ws
/* 20025*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20027*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FRCP_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3938:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 8
                // Dst: (FRCP_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 20034*/    /*Scope*/ 13, /*->20048*/
/* 20035*/      OPC_CheckChild0Integer, 103|128,30/*3943*/, 
/* 20038*/      OPC_RecordChild1, // #0 = $ws
/* 20039*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20041*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FRSQRT_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3943:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 8
                // Dst: (FRSQRT_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 20048*/    /*Scope*/ 13, /*->20062*/
/* 20049*/      OPC_CheckChild0Integer, 102|128,30/*3942*/, 
/* 20052*/      OPC_RecordChild1, // #0 = $ws
/* 20053*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20055*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FRSQRT_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3942:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 8
                // Dst: (FRSQRT_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 20062*/    0, /*End of Scope*/
/* 20063*/  /*SwitchOpcode*/ 95|128,1/*223*/, TARGET_VAL(ISD::INTRINSIC_VOID),// ->20290
/* 20067*/    OPC_RecordNode, // #0 = 'intrinsic_void' chained node
/* 20068*/    OPC_Scope, 39, /*->20109*/ // 7 children in Scope
/* 20070*/      OPC_CheckChild1Integer, 75|128,33/*4299*/, 
/* 20073*/      OPC_RecordChild2, // #1 = $rs
/* 20074*/      OPC_RecordChild3, // #2 = $mask
/* 20075*/      OPC_MoveChild3,
/* 20076*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 20079*/      OPC_Scope, 13, /*->20094*/ // 2 children in Scope
/* 20081*/        OPC_CheckPredicate, 23, // Predicate_timmZExt10
/* 20083*/        OPC_MoveParent,
/* 20084*/        OPC_CheckPatternPredicate, 48, // (Subtarget->hasDSP()) && (!Subtarget->inMicroMipsMode())
/* 20086*/        OPC_EmitMergeInputChains1_0,
/* 20087*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::WRDSP), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 4299:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] })<<P:Predicate_timmZExt10>>:$mask) - Complexity = 12
                  // Dst: (WRDSP GPR32Opnd:{ *:[i32] }:$rs, (timm:{ *:[i32] }):$mask)
/* 20094*/      /*Scope*/ 13, /*->20108*/
/* 20095*/        OPC_CheckPredicate, 24, // Predicate_timmZExt7
/* 20097*/        OPC_MoveParent,
/* 20098*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 20100*/        OPC_EmitMergeInputChains1_0,
/* 20101*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::WRDSP_MM), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 4299:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt, (timm:{ *:[i32] })<<P:Predicate_timmZExt7>>:$mask) - Complexity = 12
                  // Dst: (WRDSP_MM GPR32Opnd:{ *:[i32] }:$rt, (timm:{ *:[i32] }):$mask)
/* 20108*/      0, /*End of Scope*/
/* 20109*/    /*Scope*/ 29, /*->20139*/
/* 20110*/      OPC_CheckChild1Integer, 101|128,29/*3813*/, 
/* 20113*/      OPC_RecordChild2, // #1 = $rs
/* 20114*/      OPC_RecordChild3, // #2 = $rt
/* 20115*/      OPC_Scope, 10, /*->20127*/ // 2 children in Scope
/* 20117*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 20119*/        OPC_EmitMergeInputChains1_0,
/* 20120*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMPU_EQ_QB), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3813:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPU_EQ_QB DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 20127*/      /*Scope*/ 10, /*->20138*/
/* 20128*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 20130*/        OPC_EmitMergeInputChains1_0,
/* 20131*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMPU_EQ_QB_MM), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3813:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPU_EQ_QB_MM DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 20138*/      0, /*End of Scope*/
/* 20139*/    /*Scope*/ 29, /*->20169*/
/* 20140*/      OPC_CheckChild1Integer, 103|128,29/*3815*/, 
/* 20143*/      OPC_RecordChild2, // #1 = $rs
/* 20144*/      OPC_RecordChild3, // #2 = $rt
/* 20145*/      OPC_Scope, 10, /*->20157*/ // 2 children in Scope
/* 20147*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 20149*/        OPC_EmitMergeInputChains1_0,
/* 20150*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMPU_LT_QB), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3815:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPU_LT_QB DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 20157*/      /*Scope*/ 10, /*->20168*/
/* 20158*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 20160*/        OPC_EmitMergeInputChains1_0,
/* 20161*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMPU_LT_QB_MM), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3815:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPU_LT_QB_MM DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 20168*/      0, /*End of Scope*/
/* 20169*/    /*Scope*/ 29, /*->20199*/
/* 20170*/      OPC_CheckChild1Integer, 102|128,29/*3814*/, 
/* 20173*/      OPC_RecordChild2, // #1 = $rs
/* 20174*/      OPC_RecordChild3, // #2 = $rt
/* 20175*/      OPC_Scope, 10, /*->20187*/ // 2 children in Scope
/* 20177*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 20179*/        OPC_EmitMergeInputChains1_0,
/* 20180*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMPU_LE_QB), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3814:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPU_LE_QB DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 20187*/      /*Scope*/ 10, /*->20198*/
/* 20188*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 20190*/        OPC_EmitMergeInputChains1_0,
/* 20191*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMPU_LE_QB_MM), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3814:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPU_LE_QB_MM DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 20198*/      0, /*End of Scope*/
/* 20199*/    /*Scope*/ 29, /*->20229*/
/* 20200*/      OPC_CheckChild1Integer, 92|128,29/*3804*/, 
/* 20203*/      OPC_RecordChild2, // #1 = $rs
/* 20204*/      OPC_RecordChild3, // #2 = $rt
/* 20205*/      OPC_Scope, 10, /*->20217*/ // 2 children in Scope
/* 20207*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 20209*/        OPC_EmitMergeInputChains1_0,
/* 20210*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMP_EQ_PH), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3804:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (CMP_EQ_PH DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 20217*/      /*Scope*/ 10, /*->20228*/
/* 20218*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 20220*/        OPC_EmitMergeInputChains1_0,
/* 20221*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMP_EQ_PH_MM), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3804:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (CMP_EQ_PH_MM DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 20228*/      0, /*End of Scope*/
/* 20229*/    /*Scope*/ 29, /*->20259*/
/* 20230*/      OPC_CheckChild1Integer, 94|128,29/*3806*/, 
/* 20233*/      OPC_RecordChild2, // #1 = $rs
/* 20234*/      OPC_RecordChild3, // #2 = $rt
/* 20235*/      OPC_Scope, 10, /*->20247*/ // 2 children in Scope
/* 20237*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 20239*/        OPC_EmitMergeInputChains1_0,
/* 20240*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMP_LT_PH), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3806:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (CMP_LT_PH DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 20247*/      /*Scope*/ 10, /*->20258*/
/* 20248*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 20250*/        OPC_EmitMergeInputChains1_0,
/* 20251*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMP_LT_PH_MM), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3806:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (CMP_LT_PH_MM DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 20258*/      0, /*End of Scope*/
/* 20259*/    /*Scope*/ 29, /*->20289*/
/* 20260*/      OPC_CheckChild1Integer, 93|128,29/*3805*/, 
/* 20263*/      OPC_RecordChild2, // #1 = $rs
/* 20264*/      OPC_RecordChild3, // #2 = $rt
/* 20265*/      OPC_Scope, 10, /*->20277*/ // 2 children in Scope
/* 20267*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 20269*/        OPC_EmitMergeInputChains1_0,
/* 20270*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMP_LE_PH), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3805:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (CMP_LE_PH DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 20277*/      /*Scope*/ 10, /*->20288*/
/* 20278*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 20280*/        OPC_EmitMergeInputChains1_0,
/* 20281*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMP_LE_PH_MM), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3805:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (CMP_LE_PH_MM DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 20288*/      0, /*End of Scope*/
/* 20289*/    0, /*End of Scope*/
/* 20290*/  /*SwitchOpcode*/ 57|128,18/*2361*/, TARGET_VAL(ISD::XOR),// ->22655
/* 20294*/    OPC_Scope, 69, /*->20365*/ // 14 children in Scope
/* 20296*/      OPC_MoveChild0,
/* 20297*/      OPC_CheckOpcode, TARGET_VAL(ISD::OR),
/* 20300*/      OPC_RecordChild0, // #0 = $rs
/* 20301*/      OPC_RecordChild1, // #1 = $rt
/* 20302*/      OPC_MoveParent,
/* 20303*/      OPC_CheckChild1Integer, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 20314*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->20352
/* 20317*/        OPC_Scope, 10, /*->20329*/ // 3 children in Scope
/* 20319*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 20321*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (xor:{ *:[i32] } (or:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt), -1:{ *:[i32] }) - Complexity = 11
                    // Dst: (NOR:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 20329*/        /*Scope*/ 10, /*->20340*/
/* 20330*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 20332*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (xor:{ *:[i32] } (or:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt), -1:{ *:[i32] }) - Complexity = 11
                    // Dst: (NOR_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 20340*/        /*Scope*/ 10, /*->20351*/
/* 20341*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 20343*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_MMR6), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (xor:{ *:[i32] } (or:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt), -1:{ *:[i32] }) - Complexity = 11
                    // Dst: (NOR_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 20351*/        0, /*End of Scope*/
/* 20352*/      /*SwitchType*/ 10, MVT::i64,// ->20364
/* 20354*/        OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 20356*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR64), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1, 
                  // Src: (xor:{ *:[i64] } (or:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt), -1:{ *:[i64] }) - Complexity = 11
                  // Dst: (NOR64:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 20364*/      0, // EndSwitchType
/* 20365*/    /*Scope*/ 7|128,5/*647*/, /*->21014*/
/* 20367*/      OPC_RecordChild0, // #0 = $rs
/* 20368*/      OPC_Scope, 109, /*->20479*/ // 3 children in Scope
/* 20370*/        OPC_CheckChild1Integer, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 20381*/        OPC_CheckType, MVT::i32,
/* 20383*/        OPC_Scope, 9, /*->20394*/ // 6 children in Scope
/* 20385*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 20387*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::NOT16_MMR6), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (xor:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, -1:{ *:[i32] }) - Complexity = 9
                    // Dst: (NOT16_MMR6:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs)
/* 20394*/        /*Scope*/ 13, /*->20408*/
/* 20395*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 20397*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 20400*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (xor:{ *:[i32] } GPR32:{ *:[i32] }:$in, -1:{ *:[i32] }) - Complexity = 8
                    // Dst: (NOR:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$in, ZERO:{ *:[i32] })
/* 20408*/        /*Scope*/ 9, /*->20418*/
/* 20409*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 20411*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::NotRxRy16), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (xor:{ *:[i32] } CPU16Regs:{ *:[i32] }:$r, -1:{ *:[i32] }) - Complexity = 8
                    // Dst: (NotRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$r)
/* 20418*/        /*Scope*/ 9, /*->20428*/
/* 20419*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 20421*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::NOT16_MM), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (xor:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, -1:{ *:[i32] }) - Complexity = 8
                    // Dst: (NOT16_MM:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs)
/* 20428*/        /*Scope*/ 24, /*->20453*/
/* 20429*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 20431*/          OPC_Scope, 7, /*->20440*/ // 2 children in Scope
/* 20433*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::NOT16_MM), 0,
                          MVT::i32, 1/*#Ops*/, 0, 
                      // Src: (xor:{ *:[i32] } GPRMM16:{ *:[i32] }:$in, -1:{ *:[i32] }) - Complexity = 8
                      // Dst: (NOT16_MM:{ *:[i32] } GPRMM16:{ *:[i32] }:$in)
/* 20440*/          /*Scope*/ 11, /*->20452*/
/* 20441*/            OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 20444*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (xor:{ *:[i32] } GPR32:{ *:[i32] }:$in, -1:{ *:[i32] }) - Complexity = 8
                      // Dst: (NOR_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$in, ZERO:{ *:[i32] })
/* 20452*/          0, /*End of Scope*/
/* 20453*/        /*Scope*/ 24, /*->20478*/
/* 20454*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 20456*/          OPC_Scope, 7, /*->20465*/ // 2 children in Scope
/* 20458*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::NOT16_MMR6), 0,
                          MVT::i32, 1/*#Ops*/, 0, 
                      // Src: (xor:{ *:[i32] } GPRMM16:{ *:[i32] }:$in, -1:{ *:[i32] }) - Complexity = 8
                      // Dst: (NOT16_MMR6:{ *:[i32] } GPRMM16:{ *:[i32] }:$in)
/* 20465*/          /*Scope*/ 11, /*->20477*/
/* 20466*/            OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 20469*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (xor:{ *:[i32] } GPR32:{ *:[i32] }:$in, -1:{ *:[i32] }) - Complexity = 8
                      // Dst: (NOR_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$in, ZERO:{ *:[i32] })
/* 20477*/          0, /*End of Scope*/
/* 20478*/        0, /*End of Scope*/
/* 20479*/      /*Scope*/ 33|128,1/*161*/, /*->20642*/
/* 20481*/        OPC_RecordChild1, // #1 = $imm16
/* 20482*/        OPC_Scope, 83, /*->20567*/ // 3 children in Scope
/* 20484*/          OPC_MoveChild1,
/* 20485*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20488*/          OPC_Scope, 17, /*->20507*/ // 2 children in Scope
/* 20490*/            OPC_CheckPredicate, 32, // Predicate_imm32ZExt16
/* 20492*/            OPC_MoveParent,
/* 20493*/            OPC_CheckType, MVT::i32,
/* 20495*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 20497*/            OPC_EmitConvertToTarget, 1,
/* 20499*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (xor:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_imm32ZExt16>>:$imm16) - Complexity = 7
                      // Dst: (XORi:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$imm16)
/* 20507*/          /*Scope*/ 58, /*->20566*/
/* 20508*/            OPC_CheckPredicate, 18, // Predicate_immZExt16
/* 20510*/            OPC_MoveParent,
/* 20511*/            OPC_SwitchType /*2 cases */, 15, MVT::i64,// ->20529
/* 20514*/              OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 20516*/              OPC_EmitConvertToTarget, 1,
/* 20518*/              OPC_EmitNodeXForm, 3, 2, // LO16
/* 20521*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 3, 
                        // Src: (xor:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm16) - Complexity = 7
                        // Dst: (XORi64:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (LO16:{ *:[i64] } (imm:{ *:[i64] }):$imm16))
/* 20529*/            /*SwitchType*/ 34, MVT::i32,// ->20565
/* 20531*/              OPC_Scope, 15, /*->20548*/ // 2 children in Scope
/* 20533*/                OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 20535*/                OPC_EmitConvertToTarget, 1,
/* 20537*/                OPC_EmitNodeXForm, 3, 2, // LO16
/* 20540*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 3, 
                          // Src: (xor:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm16) - Complexity = 7
                          // Dst: (XORi_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (LO16:{ *:[i32] } (imm:{ *:[i32] }):$imm16))
/* 20548*/              /*Scope*/ 15, /*->20564*/
/* 20549*/                OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 20551*/                OPC_EmitConvertToTarget, 1,
/* 20553*/                OPC_EmitNodeXForm, 3, 2, // LO16
/* 20556*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::XORI_MMR6), 0,
                              MVT::i32, 2/*#Ops*/, 0, 3, 
                          // Src: (xor:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm16) - Complexity = 7
                          // Dst: (XORI_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (LO16:{ *:[i32] } (imm:{ *:[i32] }):$imm16))
/* 20564*/              0, /*End of Scope*/
/* 20565*/            0, // EndSwitchType
/* 20566*/          0, /*End of Scope*/
/* 20567*/        /*Scope*/ 60, /*->20628*/
/* 20568*/          OPC_CheckType, MVT::i32,
/* 20570*/          OPC_Scope, 10, /*->20582*/ // 4 children in Scope
/* 20572*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 20574*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (xor:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                      // Dst: (XOR:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 20582*/          /*Scope*/ 10, /*->20593*/
/* 20583*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 20585*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::XorRxRxRy16), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (xor:{ *:[i32] } CPU16Regs:{ *:[i32] }:$l, CPU16Regs:{ *:[i32] }:$r) - Complexity = 3
                      // Dst: (XorRxRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$l, CPU16Regs:{ *:[i32] }:$r)
/* 20593*/          /*Scope*/ 22, /*->20616*/
/* 20594*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 20596*/            OPC_Scope, 8, /*->20606*/ // 2 children in Scope
/* 20598*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::XOR16_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (xor:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, GPRMM16Opnd:{ *:[i32] }:$rt) - Complexity = 3
                        // Dst: (XOR16_MM:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, GPRMM16Opnd:{ *:[i32] }:$rt)
/* 20606*/            /*Scope*/ 8, /*->20615*/
/* 20607*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::XOR_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (xor:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                        // Dst: (XOR_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 20615*/            0, /*End of Scope*/
/* 20616*/          /*Scope*/ 10, /*->20627*/
/* 20617*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 20619*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::XOR_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (xor:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                      // Dst: (XOR_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 20627*/          0, /*End of Scope*/
/* 20628*/        /*Scope*/ 12, /*->20641*/
/* 20629*/          OPC_CheckType, MVT::i64,
/* 20631*/          OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 20633*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XOR64), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (xor:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                    // Dst: (XOR64:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 20641*/        0, /*End of Scope*/
/* 20642*/      /*Scope*/ 113|128,2/*369*/, /*->21013*/
/* 20644*/        OPC_MoveChild1,
/* 20645*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 20648*/        OPC_MoveChild0,
/* 20649*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 20652*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 20654*/        OPC_MoveParent,
/* 20655*/        OPC_MoveChild1,
/* 20656*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 20659*/        OPC_Scope, 46|128,1/*174*/, /*->20836*/ // 2 children in Scope
/* 20662*/          OPC_RecordChild0, // #1 = $wt
/* 20663*/          OPC_MoveChild1,
/* 20664*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 20667*/          OPC_MoveChild0,
/* 20668*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20671*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20673*/          OPC_CheckType, MVT::i32,
/* 20675*/          OPC_MoveParent,
/* 20676*/          OPC_MoveChild1,
/* 20677*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20680*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20682*/          OPC_CheckType, MVT::i32,
/* 20684*/          OPC_MoveParent,
/* 20685*/          OPC_MoveChild2,
/* 20686*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20689*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20691*/          OPC_CheckType, MVT::i32,
/* 20693*/          OPC_MoveParent,
/* 20694*/          OPC_MoveChild3,
/* 20695*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20698*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20700*/          OPC_CheckType, MVT::i32,
/* 20702*/          OPC_MoveParent,
/* 20703*/          OPC_MoveChild4,
/* 20704*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20707*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20709*/          OPC_CheckType, MVT::i32,
/* 20711*/          OPC_MoveParent,
/* 20712*/          OPC_MoveChild5,
/* 20713*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20716*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20718*/          OPC_CheckType, MVT::i32,
/* 20720*/          OPC_MoveParent,
/* 20721*/          OPC_MoveChild6,
/* 20722*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20725*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20727*/          OPC_CheckType, MVT::i32,
/* 20729*/          OPC_MoveParent,
/* 20730*/          OPC_MoveChild7,
/* 20731*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20734*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20736*/          OPC_CheckType, MVT::i32,
/* 20738*/          OPC_MoveParent,
/* 20739*/          OPC_MoveChild, 8,
/* 20741*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20744*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20746*/          OPC_CheckType, MVT::i32,
/* 20748*/          OPC_MoveParent,
/* 20749*/          OPC_MoveChild, 9,
/* 20751*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20754*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20756*/          OPC_CheckType, MVT::i32,
/* 20758*/          OPC_MoveParent,
/* 20759*/          OPC_MoveChild, 10,
/* 20761*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20764*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20766*/          OPC_CheckType, MVT::i32,
/* 20768*/          OPC_MoveParent,
/* 20769*/          OPC_MoveChild, 11,
/* 20771*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20774*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20776*/          OPC_CheckType, MVT::i32,
/* 20778*/          OPC_MoveParent,
/* 20779*/          OPC_MoveChild, 12,
/* 20781*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20784*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20786*/          OPC_CheckType, MVT::i32,
/* 20788*/          OPC_MoveParent,
/* 20789*/          OPC_MoveChild, 13,
/* 20791*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20794*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20796*/          OPC_CheckType, MVT::i32,
/* 20798*/          OPC_MoveParent,
/* 20799*/          OPC_MoveChild, 14,
/* 20801*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20804*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20806*/          OPC_CheckType, MVT::i32,
/* 20808*/          OPC_MoveParent,
/* 20809*/          OPC_MoveChild, 15,
/* 20811*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20814*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20816*/          OPC_CheckType, MVT::i32,
/* 20818*/          OPC_MoveParent,
/* 20819*/          OPC_MoveParent,
/* 20820*/          OPC_CheckType, MVT::v16i8,
/* 20822*/          OPC_MoveParent,
/* 20823*/          OPC_MoveParent,
/* 20824*/          OPC_CheckType, MVT::v16i8,
/* 20826*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 20828*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (xor:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$wt, (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>)))) - Complexity = 80
                    // Dst: (BNEG_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 20836*/        /*Scope*/ 46|128,1/*174*/, /*->21012*/
/* 20838*/          OPC_MoveChild0,
/* 20839*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 20842*/          OPC_MoveChild0,
/* 20843*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20846*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20848*/          OPC_CheckType, MVT::i32,
/* 20850*/          OPC_MoveParent,
/* 20851*/          OPC_MoveChild1,
/* 20852*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20855*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20857*/          OPC_CheckType, MVT::i32,
/* 20859*/          OPC_MoveParent,
/* 20860*/          OPC_MoveChild2,
/* 20861*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20864*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20866*/          OPC_CheckType, MVT::i32,
/* 20868*/          OPC_MoveParent,
/* 20869*/          OPC_MoveChild3,
/* 20870*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20873*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20875*/          OPC_CheckType, MVT::i32,
/* 20877*/          OPC_MoveParent,
/* 20878*/          OPC_MoveChild4,
/* 20879*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20882*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20884*/          OPC_CheckType, MVT::i32,
/* 20886*/          OPC_MoveParent,
/* 20887*/          OPC_MoveChild5,
/* 20888*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20891*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20893*/          OPC_CheckType, MVT::i32,
/* 20895*/          OPC_MoveParent,
/* 20896*/          OPC_MoveChild6,
/* 20897*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20900*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20902*/          OPC_CheckType, MVT::i32,
/* 20904*/          OPC_MoveParent,
/* 20905*/          OPC_MoveChild7,
/* 20906*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20909*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20911*/          OPC_CheckType, MVT::i32,
/* 20913*/          OPC_MoveParent,
/* 20914*/          OPC_MoveChild, 8,
/* 20916*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20919*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20921*/          OPC_CheckType, MVT::i32,
/* 20923*/          OPC_MoveParent,
/* 20924*/          OPC_MoveChild, 9,
/* 20926*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20929*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20931*/          OPC_CheckType, MVT::i32,
/* 20933*/          OPC_MoveParent,
/* 20934*/          OPC_MoveChild, 10,
/* 20936*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20939*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20941*/          OPC_CheckType, MVT::i32,
/* 20943*/          OPC_MoveParent,
/* 20944*/          OPC_MoveChild, 11,
/* 20946*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20949*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20951*/          OPC_CheckType, MVT::i32,
/* 20953*/          OPC_MoveParent,
/* 20954*/          OPC_MoveChild, 12,
/* 20956*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20959*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20961*/          OPC_CheckType, MVT::i32,
/* 20963*/          OPC_MoveParent,
/* 20964*/          OPC_MoveChild, 13,
/* 20966*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20969*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20971*/          OPC_CheckType, MVT::i32,
/* 20973*/          OPC_MoveParent,
/* 20974*/          OPC_MoveChild, 14,
/* 20976*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20979*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20981*/          OPC_CheckType, MVT::i32,
/* 20983*/          OPC_MoveParent,
/* 20984*/          OPC_MoveChild, 15,
/* 20986*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20989*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 20991*/          OPC_CheckType, MVT::i32,
/* 20993*/          OPC_MoveParent,
/* 20994*/          OPC_MoveParent,
/* 20995*/          OPC_RecordChild1, // #1 = $wt
/* 20996*/          OPC_CheckType, MVT::v16i8,
/* 20998*/          OPC_MoveParent,
/* 20999*/          OPC_MoveParent,
/* 21000*/          OPC_CheckType, MVT::v16i8,
/* 21002*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 21004*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (xor:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>), v16i8:{ *:[v16i8] }:$wt))) - Complexity = 80
                    // Dst: (BNEG_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 21012*/        0, /*End of Scope*/
/* 21013*/      0, /*End of Scope*/
/* 21014*/    /*Scope*/ 115|128,2/*371*/, /*->21387*/
/* 21016*/      OPC_MoveChild0,
/* 21017*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 21020*/      OPC_MoveChild0,
/* 21021*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21024*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 21026*/      OPC_MoveParent,
/* 21027*/      OPC_MoveChild1,
/* 21028*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 21031*/      OPC_Scope, 47|128,1/*175*/, /*->21209*/ // 2 children in Scope
/* 21034*/        OPC_RecordChild0, // #0 = $wt
/* 21035*/        OPC_MoveChild1,
/* 21036*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21039*/        OPC_MoveChild0,
/* 21040*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21043*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21045*/        OPC_CheckType, MVT::i32,
/* 21047*/        OPC_MoveParent,
/* 21048*/        OPC_MoveChild1,
/* 21049*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21052*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21054*/        OPC_CheckType, MVT::i32,
/* 21056*/        OPC_MoveParent,
/* 21057*/        OPC_MoveChild2,
/* 21058*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21061*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21063*/        OPC_CheckType, MVT::i32,
/* 21065*/        OPC_MoveParent,
/* 21066*/        OPC_MoveChild3,
/* 21067*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21070*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21072*/        OPC_CheckType, MVT::i32,
/* 21074*/        OPC_MoveParent,
/* 21075*/        OPC_MoveChild4,
/* 21076*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21079*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21081*/        OPC_CheckType, MVT::i32,
/* 21083*/        OPC_MoveParent,
/* 21084*/        OPC_MoveChild5,
/* 21085*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21088*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21090*/        OPC_CheckType, MVT::i32,
/* 21092*/        OPC_MoveParent,
/* 21093*/        OPC_MoveChild6,
/* 21094*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21097*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21099*/        OPC_CheckType, MVT::i32,
/* 21101*/        OPC_MoveParent,
/* 21102*/        OPC_MoveChild7,
/* 21103*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21106*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21108*/        OPC_CheckType, MVT::i32,
/* 21110*/        OPC_MoveParent,
/* 21111*/        OPC_MoveChild, 8,
/* 21113*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21116*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21118*/        OPC_CheckType, MVT::i32,
/* 21120*/        OPC_MoveParent,
/* 21121*/        OPC_MoveChild, 9,
/* 21123*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21126*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21128*/        OPC_CheckType, MVT::i32,
/* 21130*/        OPC_MoveParent,
/* 21131*/        OPC_MoveChild, 10,
/* 21133*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21136*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21138*/        OPC_CheckType, MVT::i32,
/* 21140*/        OPC_MoveParent,
/* 21141*/        OPC_MoveChild, 11,
/* 21143*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21146*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21148*/        OPC_CheckType, MVT::i32,
/* 21150*/        OPC_MoveParent,
/* 21151*/        OPC_MoveChild, 12,
/* 21153*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21156*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21158*/        OPC_CheckType, MVT::i32,
/* 21160*/        OPC_MoveParent,
/* 21161*/        OPC_MoveChild, 13,
/* 21163*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21166*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21168*/        OPC_CheckType, MVT::i32,
/* 21170*/        OPC_MoveParent,
/* 21171*/        OPC_MoveChild, 14,
/* 21173*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21176*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21178*/        OPC_CheckType, MVT::i32,
/* 21180*/        OPC_MoveParent,
/* 21181*/        OPC_MoveChild, 15,
/* 21183*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21186*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21188*/        OPC_CheckType, MVT::i32,
/* 21190*/        OPC_MoveParent,
/* 21191*/        OPC_MoveParent,
/* 21192*/        OPC_CheckType, MVT::v16i8,
/* 21194*/        OPC_MoveParent,
/* 21195*/        OPC_MoveParent,
/* 21196*/        OPC_RecordChild1, // #1 = $ws
/* 21197*/        OPC_CheckType, MVT::v16i8,
/* 21199*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 21201*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 1, 0, 
                  // Src: (xor:{ *:[v16i8] } (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$wt, (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>))), v16i8:{ *:[v16i8] }:$ws) - Complexity = 80
                  // Dst: (BNEG_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 21209*/      /*Scope*/ 47|128,1/*175*/, /*->21386*/
/* 21211*/        OPC_MoveChild0,
/* 21212*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21215*/        OPC_MoveChild0,
/* 21216*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21219*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21221*/        OPC_CheckType, MVT::i32,
/* 21223*/        OPC_MoveParent,
/* 21224*/        OPC_MoveChild1,
/* 21225*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21228*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21230*/        OPC_CheckType, MVT::i32,
/* 21232*/        OPC_MoveParent,
/* 21233*/        OPC_MoveChild2,
/* 21234*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21237*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21239*/        OPC_CheckType, MVT::i32,
/* 21241*/        OPC_MoveParent,
/* 21242*/        OPC_MoveChild3,
/* 21243*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21246*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21248*/        OPC_CheckType, MVT::i32,
/* 21250*/        OPC_MoveParent,
/* 21251*/        OPC_MoveChild4,
/* 21252*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21255*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21257*/        OPC_CheckType, MVT::i32,
/* 21259*/        OPC_MoveParent,
/* 21260*/        OPC_MoveChild5,
/* 21261*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21264*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21266*/        OPC_CheckType, MVT::i32,
/* 21268*/        OPC_MoveParent,
/* 21269*/        OPC_MoveChild6,
/* 21270*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21273*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21275*/        OPC_CheckType, MVT::i32,
/* 21277*/        OPC_MoveParent,
/* 21278*/        OPC_MoveChild7,
/* 21279*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21282*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21284*/        OPC_CheckType, MVT::i32,
/* 21286*/        OPC_MoveParent,
/* 21287*/        OPC_MoveChild, 8,
/* 21289*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21292*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21294*/        OPC_CheckType, MVT::i32,
/* 21296*/        OPC_MoveParent,
/* 21297*/        OPC_MoveChild, 9,
/* 21299*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21302*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21304*/        OPC_CheckType, MVT::i32,
/* 21306*/        OPC_MoveParent,
/* 21307*/        OPC_MoveChild, 10,
/* 21309*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21312*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21314*/        OPC_CheckType, MVT::i32,
/* 21316*/        OPC_MoveParent,
/* 21317*/        OPC_MoveChild, 11,
/* 21319*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21322*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21324*/        OPC_CheckType, MVT::i32,
/* 21326*/        OPC_MoveParent,
/* 21327*/        OPC_MoveChild, 12,
/* 21329*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21332*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21334*/        OPC_CheckType, MVT::i32,
/* 21336*/        OPC_MoveParent,
/* 21337*/        OPC_MoveChild, 13,
/* 21339*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21342*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21344*/        OPC_CheckType, MVT::i32,
/* 21346*/        OPC_MoveParent,
/* 21347*/        OPC_MoveChild, 14,
/* 21349*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21352*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21354*/        OPC_CheckType, MVT::i32,
/* 21356*/        OPC_MoveParent,
/* 21357*/        OPC_MoveChild, 15,
/* 21359*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21362*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 21364*/        OPC_CheckType, MVT::i32,
/* 21366*/        OPC_MoveParent,
/* 21367*/        OPC_MoveParent,
/* 21368*/        OPC_RecordChild1, // #0 = $wt
/* 21369*/        OPC_CheckType, MVT::v16i8,
/* 21371*/        OPC_MoveParent,
/* 21372*/        OPC_MoveParent,
/* 21373*/        OPC_RecordChild1, // #1 = $ws
/* 21374*/        OPC_CheckType, MVT::v16i8,
/* 21376*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 21378*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 1, 0, 
                  // Src: (xor:{ *:[v16i8] } (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>), v16i8:{ *:[v16i8] }:$wt)), v16i8:{ *:[v16i8] }:$ws) - Complexity = 80
                  // Dst: (BNEG_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 21386*/      0, /*End of Scope*/
/* 21387*/    /*Scope*/ 80|128,1/*208*/, /*->21597*/
/* 21389*/      OPC_RecordChild0, // #0 = $ws
/* 21390*/      OPC_MoveChild1,
/* 21391*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 21394*/      OPC_MoveChild0,
/* 21395*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21398*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 21400*/      OPC_MoveParent,
/* 21401*/      OPC_MoveChild1,
/* 21402*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 21405*/      OPC_Scope, 94, /*->21501*/ // 2 children in Scope
/* 21407*/        OPC_RecordChild0, // #1 = $wt
/* 21408*/        OPC_MoveChild1,
/* 21409*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21412*/        OPC_MoveChild0,
/* 21413*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21416*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21418*/        OPC_CheckType, MVT::i32,
/* 21420*/        OPC_MoveParent,
/* 21421*/        OPC_MoveChild1,
/* 21422*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21425*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21427*/        OPC_CheckType, MVT::i32,
/* 21429*/        OPC_MoveParent,
/* 21430*/        OPC_MoveChild2,
/* 21431*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21434*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21436*/        OPC_CheckType, MVT::i32,
/* 21438*/        OPC_MoveParent,
/* 21439*/        OPC_MoveChild3,
/* 21440*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21443*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21445*/        OPC_CheckType, MVT::i32,
/* 21447*/        OPC_MoveParent,
/* 21448*/        OPC_MoveChild4,
/* 21449*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21452*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21454*/        OPC_CheckType, MVT::i32,
/* 21456*/        OPC_MoveParent,
/* 21457*/        OPC_MoveChild5,
/* 21458*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21461*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21463*/        OPC_CheckType, MVT::i32,
/* 21465*/        OPC_MoveParent,
/* 21466*/        OPC_MoveChild6,
/* 21467*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21470*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21472*/        OPC_CheckType, MVT::i32,
/* 21474*/        OPC_MoveParent,
/* 21475*/        OPC_MoveChild7,
/* 21476*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21479*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21481*/        OPC_CheckType, MVT::i32,
/* 21483*/        OPC_MoveParent,
/* 21484*/        OPC_MoveParent,
/* 21485*/        OPC_CheckType, MVT::v8i16,
/* 21487*/        OPC_MoveParent,
/* 21488*/        OPC_MoveParent,
/* 21489*/        OPC_CheckType, MVT::v8i16,
/* 21491*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 21493*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (xor:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$wt, (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>)))) - Complexity = 48
                  // Dst: (BNEG_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 21501*/      /*Scope*/ 94, /*->21596*/
/* 21502*/        OPC_MoveChild0,
/* 21503*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21506*/        OPC_MoveChild0,
/* 21507*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21510*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21512*/        OPC_CheckType, MVT::i32,
/* 21514*/        OPC_MoveParent,
/* 21515*/        OPC_MoveChild1,
/* 21516*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21519*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21521*/        OPC_CheckType, MVT::i32,
/* 21523*/        OPC_MoveParent,
/* 21524*/        OPC_MoveChild2,
/* 21525*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21528*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21530*/        OPC_CheckType, MVT::i32,
/* 21532*/        OPC_MoveParent,
/* 21533*/        OPC_MoveChild3,
/* 21534*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21537*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21539*/        OPC_CheckType, MVT::i32,
/* 21541*/        OPC_MoveParent,
/* 21542*/        OPC_MoveChild4,
/* 21543*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21546*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21548*/        OPC_CheckType, MVT::i32,
/* 21550*/        OPC_MoveParent,
/* 21551*/        OPC_MoveChild5,
/* 21552*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21555*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21557*/        OPC_CheckType, MVT::i32,
/* 21559*/        OPC_MoveParent,
/* 21560*/        OPC_MoveChild6,
/* 21561*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21564*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21566*/        OPC_CheckType, MVT::i32,
/* 21568*/        OPC_MoveParent,
/* 21569*/        OPC_MoveChild7,
/* 21570*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21573*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21575*/        OPC_CheckType, MVT::i32,
/* 21577*/        OPC_MoveParent,
/* 21578*/        OPC_MoveParent,
/* 21579*/        OPC_RecordChild1, // #1 = $wt
/* 21580*/        OPC_CheckType, MVT::v8i16,
/* 21582*/        OPC_MoveParent,
/* 21583*/        OPC_MoveParent,
/* 21584*/        OPC_CheckType, MVT::v8i16,
/* 21586*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 21588*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (xor:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>), v8i16:{ *:[v8i16] }:$wt))) - Complexity = 48
                  // Dst: (BNEG_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 21596*/      0, /*End of Scope*/
/* 21597*/    /*Scope*/ 81|128,1/*209*/, /*->21808*/
/* 21599*/      OPC_MoveChild0,
/* 21600*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 21603*/      OPC_MoveChild0,
/* 21604*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21607*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 21609*/      OPC_MoveParent,
/* 21610*/      OPC_MoveChild1,
/* 21611*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 21614*/      OPC_Scope, 95, /*->21711*/ // 2 children in Scope
/* 21616*/        OPC_RecordChild0, // #0 = $wt
/* 21617*/        OPC_MoveChild1,
/* 21618*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21621*/        OPC_MoveChild0,
/* 21622*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21625*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21627*/        OPC_CheckType, MVT::i32,
/* 21629*/        OPC_MoveParent,
/* 21630*/        OPC_MoveChild1,
/* 21631*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21634*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21636*/        OPC_CheckType, MVT::i32,
/* 21638*/        OPC_MoveParent,
/* 21639*/        OPC_MoveChild2,
/* 21640*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21643*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21645*/        OPC_CheckType, MVT::i32,
/* 21647*/        OPC_MoveParent,
/* 21648*/        OPC_MoveChild3,
/* 21649*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21652*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21654*/        OPC_CheckType, MVT::i32,
/* 21656*/        OPC_MoveParent,
/* 21657*/        OPC_MoveChild4,
/* 21658*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21661*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21663*/        OPC_CheckType, MVT::i32,
/* 21665*/        OPC_MoveParent,
/* 21666*/        OPC_MoveChild5,
/* 21667*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21670*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21672*/        OPC_CheckType, MVT::i32,
/* 21674*/        OPC_MoveParent,
/* 21675*/        OPC_MoveChild6,
/* 21676*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21679*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21681*/        OPC_CheckType, MVT::i32,
/* 21683*/        OPC_MoveParent,
/* 21684*/        OPC_MoveChild7,
/* 21685*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21688*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21690*/        OPC_CheckType, MVT::i32,
/* 21692*/        OPC_MoveParent,
/* 21693*/        OPC_MoveParent,
/* 21694*/        OPC_CheckType, MVT::v8i16,
/* 21696*/        OPC_MoveParent,
/* 21697*/        OPC_MoveParent,
/* 21698*/        OPC_RecordChild1, // #1 = $ws
/* 21699*/        OPC_CheckType, MVT::v8i16,
/* 21701*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 21703*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 1, 0, 
                  // Src: (xor:{ *:[v8i16] } (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$wt, (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>))), v8i16:{ *:[v8i16] }:$ws) - Complexity = 48
                  // Dst: (BNEG_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 21711*/      /*Scope*/ 95, /*->21807*/
/* 21712*/        OPC_MoveChild0,
/* 21713*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21716*/        OPC_MoveChild0,
/* 21717*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21720*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21722*/        OPC_CheckType, MVT::i32,
/* 21724*/        OPC_MoveParent,
/* 21725*/        OPC_MoveChild1,
/* 21726*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21729*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21731*/        OPC_CheckType, MVT::i32,
/* 21733*/        OPC_MoveParent,
/* 21734*/        OPC_MoveChild2,
/* 21735*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21738*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21740*/        OPC_CheckType, MVT::i32,
/* 21742*/        OPC_MoveParent,
/* 21743*/        OPC_MoveChild3,
/* 21744*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21747*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21749*/        OPC_CheckType, MVT::i32,
/* 21751*/        OPC_MoveParent,
/* 21752*/        OPC_MoveChild4,
/* 21753*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21756*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21758*/        OPC_CheckType, MVT::i32,
/* 21760*/        OPC_MoveParent,
/* 21761*/        OPC_MoveChild5,
/* 21762*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21765*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21767*/        OPC_CheckType, MVT::i32,
/* 21769*/        OPC_MoveParent,
/* 21770*/        OPC_MoveChild6,
/* 21771*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21774*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21776*/        OPC_CheckType, MVT::i32,
/* 21778*/        OPC_MoveParent,
/* 21779*/        OPC_MoveChild7,
/* 21780*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21783*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 21785*/        OPC_CheckType, MVT::i32,
/* 21787*/        OPC_MoveParent,
/* 21788*/        OPC_MoveParent,
/* 21789*/        OPC_RecordChild1, // #0 = $wt
/* 21790*/        OPC_CheckType, MVT::v8i16,
/* 21792*/        OPC_MoveParent,
/* 21793*/        OPC_MoveParent,
/* 21794*/        OPC_RecordChild1, // #1 = $ws
/* 21795*/        OPC_CheckType, MVT::v8i16,
/* 21797*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 21799*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 1, 0, 
                  // Src: (xor:{ *:[v8i16] } (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>), v8i16:{ *:[v8i16] }:$wt)), v8i16:{ *:[v8i16] }:$ws) - Complexity = 48
                  // Dst: (BNEG_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 21807*/      0, /*End of Scope*/
/* 21808*/    /*Scope*/ 8|128,1/*136*/, /*->21946*/
/* 21810*/      OPC_RecordChild0, // #0 = $ws
/* 21811*/      OPC_MoveChild1,
/* 21812*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 21815*/      OPC_MoveChild0,
/* 21816*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21819*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 21821*/      OPC_MoveParent,
/* 21822*/      OPC_MoveChild1,
/* 21823*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 21826*/      OPC_Scope, 58, /*->21886*/ // 2 children in Scope
/* 21828*/        OPC_RecordChild0, // #1 = $wt
/* 21829*/        OPC_MoveChild1,
/* 21830*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21833*/        OPC_MoveChild0,
/* 21834*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21837*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 21839*/        OPC_CheckType, MVT::i32,
/* 21841*/        OPC_MoveParent,
/* 21842*/        OPC_MoveChild1,
/* 21843*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21846*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 21848*/        OPC_CheckType, MVT::i32,
/* 21850*/        OPC_MoveParent,
/* 21851*/        OPC_MoveChild2,
/* 21852*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21855*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 21857*/        OPC_CheckType, MVT::i32,
/* 21859*/        OPC_MoveParent,
/* 21860*/        OPC_MoveChild3,
/* 21861*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21864*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 21866*/        OPC_CheckType, MVT::i32,
/* 21868*/        OPC_MoveParent,
/* 21869*/        OPC_MoveParent,
/* 21870*/        OPC_CheckType, MVT::v4i32,
/* 21872*/        OPC_MoveParent,
/* 21873*/        OPC_MoveParent,
/* 21874*/        OPC_CheckType, MVT::v4i32,
/* 21876*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 21878*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (xor:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$wt, (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>)))) - Complexity = 32
                  // Dst: (BNEG_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 21886*/      /*Scope*/ 58, /*->21945*/
/* 21887*/        OPC_MoveChild0,
/* 21888*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21891*/        OPC_MoveChild0,
/* 21892*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21895*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 21897*/        OPC_CheckType, MVT::i32,
/* 21899*/        OPC_MoveParent,
/* 21900*/        OPC_MoveChild1,
/* 21901*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21904*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 21906*/        OPC_CheckType, MVT::i32,
/* 21908*/        OPC_MoveParent,
/* 21909*/        OPC_MoveChild2,
/* 21910*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21913*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 21915*/        OPC_CheckType, MVT::i32,
/* 21917*/        OPC_MoveParent,
/* 21918*/        OPC_MoveChild3,
/* 21919*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21922*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 21924*/        OPC_CheckType, MVT::i32,
/* 21926*/        OPC_MoveParent,
/* 21927*/        OPC_MoveParent,
/* 21928*/        OPC_RecordChild1, // #1 = $wt
/* 21929*/        OPC_CheckType, MVT::v4i32,
/* 21931*/        OPC_MoveParent,
/* 21932*/        OPC_MoveParent,
/* 21933*/        OPC_CheckType, MVT::v4i32,
/* 21935*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 21937*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (xor:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>), v4i32:{ *:[v4i32] }:$wt))) - Complexity = 32
                  // Dst: (BNEG_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 21945*/      0, /*End of Scope*/
/* 21946*/    /*Scope*/ 9|128,1/*137*/, /*->22085*/
/* 21948*/      OPC_MoveChild0,
/* 21949*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 21952*/      OPC_MoveChild0,
/* 21953*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21956*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 21958*/      OPC_MoveParent,
/* 21959*/      OPC_MoveChild1,
/* 21960*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 21963*/      OPC_Scope, 59, /*->22024*/ // 2 children in Scope
/* 21965*/        OPC_RecordChild0, // #0 = $wt
/* 21966*/        OPC_MoveChild1,
/* 21967*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21970*/        OPC_MoveChild0,
/* 21971*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21974*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 21976*/        OPC_CheckType, MVT::i32,
/* 21978*/        OPC_MoveParent,
/* 21979*/        OPC_MoveChild1,
/* 21980*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21983*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 21985*/        OPC_CheckType, MVT::i32,
/* 21987*/        OPC_MoveParent,
/* 21988*/        OPC_MoveChild2,
/* 21989*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21992*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 21994*/        OPC_CheckType, MVT::i32,
/* 21996*/        OPC_MoveParent,
/* 21997*/        OPC_MoveChild3,
/* 21998*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22001*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 22003*/        OPC_CheckType, MVT::i32,
/* 22005*/        OPC_MoveParent,
/* 22006*/        OPC_MoveParent,
/* 22007*/        OPC_CheckType, MVT::v4i32,
/* 22009*/        OPC_MoveParent,
/* 22010*/        OPC_MoveParent,
/* 22011*/        OPC_RecordChild1, // #1 = $ws
/* 22012*/        OPC_CheckType, MVT::v4i32,
/* 22014*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22016*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 1, 0, 
                  // Src: (xor:{ *:[v4i32] } (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$wt, (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>))), v4i32:{ *:[v4i32] }:$ws) - Complexity = 32
                  // Dst: (BNEG_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 22024*/      /*Scope*/ 59, /*->22084*/
/* 22025*/        OPC_MoveChild0,
/* 22026*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22029*/        OPC_MoveChild0,
/* 22030*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22033*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 22035*/        OPC_CheckType, MVT::i32,
/* 22037*/        OPC_MoveParent,
/* 22038*/        OPC_MoveChild1,
/* 22039*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22042*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 22044*/        OPC_CheckType, MVT::i32,
/* 22046*/        OPC_MoveParent,
/* 22047*/        OPC_MoveChild2,
/* 22048*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22051*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 22053*/        OPC_CheckType, MVT::i32,
/* 22055*/        OPC_MoveParent,
/* 22056*/        OPC_MoveChild3,
/* 22057*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22060*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 22062*/        OPC_CheckType, MVT::i32,
/* 22064*/        OPC_MoveParent,
/* 22065*/        OPC_MoveParent,
/* 22066*/        OPC_RecordChild1, // #0 = $wt
/* 22067*/        OPC_CheckType, MVT::v4i32,
/* 22069*/        OPC_MoveParent,
/* 22070*/        OPC_MoveParent,
/* 22071*/        OPC_RecordChild1, // #1 = $ws
/* 22072*/        OPC_CheckType, MVT::v4i32,
/* 22074*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22076*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 1, 0, 
                  // Src: (xor:{ *:[v4i32] } (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>), v4i32:{ *:[v4i32] }:$wt)), v4i32:{ *:[v4i32] }:$ws) - Complexity = 32
                  // Dst: (BNEG_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 22084*/      0, /*End of Scope*/
/* 22085*/    /*Scope*/ 89, /*->22175*/
/* 22086*/      OPC_RecordChild0, // #0 = $ws
/* 22087*/      OPC_MoveChild1,
/* 22088*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 22091*/      OPC_MoveChild0,
/* 22092*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 22095*/      OPC_MoveChild0,
/* 22096*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22099*/      OPC_CheckType, MVT::v4i32,
/* 22101*/      OPC_MoveParent,
/* 22102*/      OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 22104*/      OPC_MoveParent,
/* 22105*/      OPC_MoveChild1,
/* 22106*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 22109*/      OPC_Scope, 31, /*->22142*/ // 2 children in Scope
/* 22111*/        OPC_RecordChild0, // #1 = $wt
/* 22112*/        OPC_MoveChild1,
/* 22113*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 22116*/        OPC_MoveChild0,
/* 22117*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22120*/        OPC_CheckType, MVT::v4i32,
/* 22122*/        OPC_MoveParent,
/* 22123*/        OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 22125*/        OPC_MoveParent,
/* 22126*/        OPC_CheckType, MVT::v2i64,
/* 22128*/        OPC_MoveParent,
/* 22129*/        OPC_MoveParent,
/* 22130*/        OPC_CheckType, MVT::v2i64,
/* 22132*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22134*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (xor:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$wt, (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>))) - Complexity = 23
                  // Dst: (BNEG_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 22142*/      /*Scope*/ 31, /*->22174*/
/* 22143*/        OPC_MoveChild0,
/* 22144*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 22147*/        OPC_MoveChild0,
/* 22148*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22151*/        OPC_CheckType, MVT::v4i32,
/* 22153*/        OPC_MoveParent,
/* 22154*/        OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 22156*/        OPC_MoveParent,
/* 22157*/        OPC_RecordChild1, // #1 = $wt
/* 22158*/        OPC_CheckType, MVT::v2i64,
/* 22160*/        OPC_MoveParent,
/* 22161*/        OPC_MoveParent,
/* 22162*/        OPC_CheckType, MVT::v2i64,
/* 22164*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22166*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (xor:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>, v2i64:{ *:[v2i64] }:$wt))) - Complexity = 23
                  // Dst: (BNEG_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 22174*/      0, /*End of Scope*/
/* 22175*/    /*Scope*/ 90, /*->22266*/
/* 22176*/      OPC_MoveChild0,
/* 22177*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 22180*/      OPC_MoveChild0,
/* 22181*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 22184*/      OPC_MoveChild0,
/* 22185*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22188*/      OPC_CheckType, MVT::v4i32,
/* 22190*/      OPC_MoveParent,
/* 22191*/      OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 22193*/      OPC_MoveParent,
/* 22194*/      OPC_MoveChild1,
/* 22195*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 22198*/      OPC_Scope, 32, /*->22232*/ // 2 children in Scope
/* 22200*/        OPC_RecordChild0, // #0 = $wt
/* 22201*/        OPC_MoveChild1,
/* 22202*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 22205*/        OPC_MoveChild0,
/* 22206*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22209*/        OPC_CheckType, MVT::v4i32,
/* 22211*/        OPC_MoveParent,
/* 22212*/        OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 22214*/        OPC_MoveParent,
/* 22215*/        OPC_CheckType, MVT::v2i64,
/* 22217*/        OPC_MoveParent,
/* 22218*/        OPC_MoveParent,
/* 22219*/        OPC_RecordChild1, // #1 = $ws
/* 22220*/        OPC_CheckType, MVT::v2i64,
/* 22222*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22224*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 1, 0, 
                  // Src: (xor:{ *:[v2i64] } (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$wt, (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>)), v2i64:{ *:[v2i64] }:$ws) - Complexity = 23
                  // Dst: (BNEG_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 22232*/      /*Scope*/ 32, /*->22265*/
/* 22233*/        OPC_MoveChild0,
/* 22234*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 22237*/        OPC_MoveChild0,
/* 22238*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22241*/        OPC_CheckType, MVT::v4i32,
/* 22243*/        OPC_MoveParent,
/* 22244*/        OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 22246*/        OPC_MoveParent,
/* 22247*/        OPC_RecordChild1, // #0 = $wt
/* 22248*/        OPC_CheckType, MVT::v2i64,
/* 22250*/        OPC_MoveParent,
/* 22251*/        OPC_MoveParent,
/* 22252*/        OPC_RecordChild1, // #1 = $ws
/* 22253*/        OPC_CheckType, MVT::v2i64,
/* 22255*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22257*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 1, 0, 
                  // Src: (xor:{ *:[v2i64] } (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>, v2i64:{ *:[v2i64] }:$wt)), v2i64:{ *:[v2i64] }:$ws) - Complexity = 23
                  // Dst: (BNEG_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 22265*/      0, /*End of Scope*/
/* 22266*/    /*Scope*/ 35, /*->22302*/
/* 22267*/      OPC_RecordChild0, // #0 = $ws
/* 22268*/      OPC_MoveChild1,
/* 22269*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 22272*/      OPC_MoveChild0,
/* 22273*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 22276*/      OPC_MoveChild0,
/* 22277*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22280*/      OPC_CheckType, MVT::v4i32,
/* 22282*/      OPC_MoveParent,
/* 22283*/      OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 22285*/      OPC_MoveParent,
/* 22286*/      OPC_RecordChild1, // #1 = $wt
/* 22287*/      OPC_CheckChild1Type, MVT::v2i64,
/* 22289*/      OPC_MoveParent,
/* 22290*/      OPC_CheckType, MVT::v2i64,
/* 22292*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22294*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (xor:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, MSA128DOpnd:{ *:[v2i64] }:$wt)) - Complexity = 13
                // Dst: (BNEG_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 22302*/    /*Scope*/ 35, /*->22338*/
/* 22303*/      OPC_MoveChild0,
/* 22304*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 22307*/      OPC_MoveChild0,
/* 22308*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 22311*/      OPC_MoveChild0,
/* 22312*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22315*/      OPC_CheckType, MVT::v4i32,
/* 22317*/      OPC_MoveParent,
/* 22318*/      OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 22320*/      OPC_MoveParent,
/* 22321*/      OPC_RecordChild1, // #0 = $wt
/* 22322*/      OPC_CheckChild1Type, MVT::v2i64,
/* 22324*/      OPC_MoveParent,
/* 22325*/      OPC_RecordChild1, // #1 = $ws
/* 22326*/      OPC_CheckType, MVT::v2i64,
/* 22328*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22330*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 1, 0, 
                // Src: (xor:{ *:[v2i64] } (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, MSA128DOpnd:{ *:[v2i64] }:$wt), MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 13
                // Dst: (BNEG_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 22338*/    /*Scope*/ 63, /*->22402*/
/* 22339*/      OPC_RecordChild0, // #0 = $ws
/* 22340*/      OPC_MoveChild1,
/* 22341*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 22344*/      OPC_MoveChild0,
/* 22345*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22348*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 22350*/      OPC_MoveParent,
/* 22351*/      OPC_RecordChild1, // #1 = $wt
/* 22352*/      OPC_Scope, 15, /*->22369*/ // 3 children in Scope
/* 22354*/        OPC_CheckChild1Type, MVT::v16i8,
/* 22356*/        OPC_MoveParent,
/* 22357*/        OPC_CheckType, MVT::v16i8,
/* 22359*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22361*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (xor:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128BOpnd:{ *:[v16i8] }:$wt)) - Complexity = 10
                  // Dst: (BNEG_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 22369*/      /*Scope*/ 15, /*->22385*/
/* 22370*/        OPC_CheckChild1Type, MVT::v8i16,
/* 22372*/        OPC_MoveParent,
/* 22373*/        OPC_CheckType, MVT::v8i16,
/* 22375*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22377*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (xor:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128HOpnd:{ *:[v8i16] }:$wt)) - Complexity = 10
                  // Dst: (BNEG_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 22385*/      /*Scope*/ 15, /*->22401*/
/* 22386*/        OPC_CheckChild1Type, MVT::v4i32,
/* 22388*/        OPC_MoveParent,
/* 22389*/        OPC_CheckType, MVT::v4i32,
/* 22391*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22393*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (xor:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128WOpnd:{ *:[v4i32] }:$wt)) - Complexity = 10
                  // Dst: (BNEG_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 22401*/      0, /*End of Scope*/
/* 22402*/    /*Scope*/ 65, /*->22468*/
/* 22403*/      OPC_MoveChild0,
/* 22404*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 22407*/      OPC_MoveChild0,
/* 22408*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22411*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 22413*/      OPC_MoveParent,
/* 22414*/      OPC_RecordChild1, // #0 = $wt
/* 22415*/      OPC_Scope, 16, /*->22433*/ // 3 children in Scope
/* 22417*/        OPC_CheckChild1Type, MVT::v16i8,
/* 22419*/        OPC_MoveParent,
/* 22420*/        OPC_RecordChild1, // #1 = $ws
/* 22421*/        OPC_CheckType, MVT::v16i8,
/* 22423*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22425*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 1, 0, 
                  // Src: (xor:{ *:[v16i8] } (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128BOpnd:{ *:[v16i8] }:$wt), MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 10
                  // Dst: (BNEG_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 22433*/      /*Scope*/ 16, /*->22450*/
/* 22434*/        OPC_CheckChild1Type, MVT::v8i16,
/* 22436*/        OPC_MoveParent,
/* 22437*/        OPC_RecordChild1, // #1 = $ws
/* 22438*/        OPC_CheckType, MVT::v8i16,
/* 22440*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22442*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 1, 0, 
                  // Src: (xor:{ *:[v8i16] } (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128HOpnd:{ *:[v8i16] }:$wt), MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 10
                  // Dst: (BNEG_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 22450*/      /*Scope*/ 16, /*->22467*/
/* 22451*/        OPC_CheckChild1Type, MVT::v4i32,
/* 22453*/        OPC_MoveParent,
/* 22454*/        OPC_RecordChild1, // #1 = $ws
/* 22455*/        OPC_CheckType, MVT::v4i32,
/* 22457*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22459*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEG_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 1, 0, 
                  // Src: (xor:{ *:[v4i32] } (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128WOpnd:{ *:[v4i32] }:$wt), MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 10
                  // Dst: (BNEG_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 22467*/      0, /*End of Scope*/
/* 22468*/    /*Scope*/ 56|128,1/*184*/, /*->22654*/
/* 22470*/      OPC_RecordChild0, // #0 = $ws
/* 22471*/      OPC_RecordChild1, // #1 = $m
/* 22472*/      OPC_SwitchType /*4 cases */, 61, MVT::v16i8,// ->22536
/* 22475*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22477*/        OPC_Scope, 11, /*->22490*/ // 5 children in Scope
/* 22479*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 22482*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEGI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 2, 
                    // Src: (xor:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplat_uimm_pow2:{ *:[v16i8] }:$m) - Complexity = 9
                    // Dst: (BNEGI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplat_uimm_pow2:{ *:[v16i8] }:$m)
/* 22490*/        /*Scope*/ 11, /*->22502*/
/* 22491*/          OPC_CheckComplexPat, /*CP*/14, /*#*/1, // selectVSplatUimm8:$u8 #2
/* 22494*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XORI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 2, 
                    // Src: (xor:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm8:{ *:[v16i8] }:$u8) - Complexity = 9
                    // Dst: (XORI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm8:{ *:[v16i8] }:$u8)
/* 22502*/        /*Scope*/ 11, /*->22514*/
/* 22503*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 22506*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEGI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 1, 2, 
                    // Src: (xor:{ *:[v16i8] } vsplat_uimm_pow2:{ *:[v16i8] }:$m, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 9
                    // Dst: (BNEGI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplat_uimm_pow2:{ *:[v16i8] }:$m)
/* 22514*/        /*Scope*/ 11, /*->22526*/
/* 22515*/          OPC_CheckComplexPat, /*CP*/14, /*#*/0, // selectVSplatUimm8:$u8 #2
/* 22518*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XORI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 1, 2, 
                    // Src: (xor:{ *:[v16i8] } vsplati8_uimm8:{ *:[v16i8] }:$u8, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 9
                    // Dst: (XORI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm8:{ *:[v16i8] }:$u8)
/* 22526*/        /*Scope*/ 8, /*->22535*/
/* 22527*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XOR_V), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (xor:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                    // Dst: (XOR_V:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 22535*/        0, /*End of Scope*/
/* 22536*/      /*SwitchType*/ 37, MVT::v8i16,// ->22575
/* 22538*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22540*/        OPC_Scope, 11, /*->22553*/ // 3 children in Scope
/* 22542*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 22545*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEGI_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 2, 
                    // Src: (xor:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplat_uimm_pow2:{ *:[v8i16] }:$m) - Complexity = 9
                    // Dst: (BNEGI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplat_uimm_pow2:{ *:[v8i16] }:$m)
/* 22553*/        /*Scope*/ 11, /*->22565*/
/* 22554*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 22557*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEGI_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 1, 2, 
                    // Src: (xor:{ *:[v8i16] } vsplat_uimm_pow2:{ *:[v8i16] }:$m, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 9
                    // Dst: (BNEGI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplat_uimm_pow2:{ *:[v8i16] }:$m)
/* 22565*/        /*Scope*/ 8, /*->22574*/
/* 22566*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XOR_V_H_PSEUDO), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (xor:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                    // Dst: (XOR_V_H_PSEUDO:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 22574*/        0, /*End of Scope*/
/* 22575*/      /*SwitchType*/ 37, MVT::v4i32,// ->22614
/* 22577*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22579*/        OPC_Scope, 11, /*->22592*/ // 3 children in Scope
/* 22581*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 22584*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEGI_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 2, 
                    // Src: (xor:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplat_uimm_pow2:{ *:[v4i32] }:$m) - Complexity = 9
                    // Dst: (BNEGI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplat_uimm_pow2:{ *:[v4i32] }:$m)
/* 22592*/        /*Scope*/ 11, /*->22604*/
/* 22593*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 22596*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEGI_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 1, 2, 
                    // Src: (xor:{ *:[v4i32] } vsplat_uimm_pow2:{ *:[v4i32] }:$m, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 9
                    // Dst: (BNEGI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplat_uimm_pow2:{ *:[v4i32] }:$m)
/* 22604*/        /*Scope*/ 8, /*->22613*/
/* 22605*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XOR_V_W_PSEUDO), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (xor:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                    // Dst: (XOR_V_W_PSEUDO:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 22613*/        0, /*End of Scope*/
/* 22614*/      /*SwitchType*/ 37, MVT::v2i64,// ->22653
/* 22616*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22618*/        OPC_Scope, 11, /*->22631*/ // 3 children in Scope
/* 22620*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 22623*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEGI_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 2, 
                    // Src: (xor:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplat_uimm_pow2:{ *:[v2i64] }:$m) - Complexity = 9
                    // Dst: (BNEGI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplat_uimm_pow2:{ *:[v2i64] }:$m)
/* 22631*/        /*Scope*/ 11, /*->22643*/
/* 22632*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 22635*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BNEGI_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 1, 2, 
                    // Src: (xor:{ *:[v2i64] } vsplat_uimm_pow2:{ *:[v2i64] }:$m, MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 9
                    // Dst: (BNEGI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplat_uimm_pow2:{ *:[v2i64] }:$m)
/* 22643*/        /*Scope*/ 8, /*->22652*/
/* 22644*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XOR_V_D_PSEUDO), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (xor:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                    // Dst: (XOR_V_D_PSEUDO:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 22652*/        0, /*End of Scope*/
/* 22653*/      0, // EndSwitchType
/* 22654*/    0, /*End of Scope*/
/* 22655*/  /*SwitchOpcode*/ 75|128,1/*203*/, TARGET_VAL(ISD::CTLZ),// ->22862
/* 22659*/    OPC_Scope, 82, /*->22743*/ // 2 children in Scope
/* 22661*/      OPC_MoveChild0,
/* 22662*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 22665*/      OPC_RecordChild0, // #0 = $rs
/* 22666*/      OPC_CheckChild1Integer, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 22677*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->22715
/* 22680*/        OPC_MoveParent,
/* 22681*/        OPC_CheckType, MVT::i32,
/* 22683*/        OPC_Scope, 9, /*->22694*/ // 3 children in Scope
/* 22685*/          OPC_CheckPatternPredicate, 49, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 22687*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::CLO), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (ctlz:{ *:[i32] } (xor:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, -1:{ *:[i32] })) - Complexity = 11
                    // Dst: (CLO:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs)
/* 22694*/        /*Scope*/ 9, /*->22704*/
/* 22695*/          OPC_CheckPatternPredicate, 50, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding())
/* 22697*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::CLO_R6), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (ctlz:{ *:[i32] } (xor:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, -1:{ *:[i32] })) - Complexity = 11
                    // Dst: (CLO_R6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs)
/* 22704*/        /*Scope*/ 9, /*->22714*/
/* 22705*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 22707*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::CLO_MM), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (ctlz:{ *:[i32] } (xor:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, -1:{ *:[i32] })) - Complexity = 11
                    // Dst: (CLO_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs)
/* 22714*/        0, /*End of Scope*/
/* 22715*/      /*SwitchType*/ 25, MVT::i64,// ->22742
/* 22717*/        OPC_MoveParent,
/* 22718*/        OPC_CheckType, MVT::i64,
/* 22720*/        OPC_Scope, 9, /*->22731*/ // 2 children in Scope
/* 22722*/          OPC_CheckPatternPredicate, 51, // (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips64r6())
/* 22724*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DCLO), 0,
                        MVT::i64, 1/*#Ops*/, 0, 
                    // Src: (ctlz:{ *:[i64] } (xor:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, -1:{ *:[i64] })) - Complexity = 11
                    // Dst: (DCLO:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs)
/* 22731*/        /*Scope*/ 9, /*->22741*/
/* 22732*/          OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 22734*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DCLO_R6), 0,
                        MVT::i64, 1/*#Ops*/, 0, 
                    // Src: (ctlz:{ *:[i64] } (xor:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, -1:{ *:[i64] })) - Complexity = 11
                    // Dst: (DCLO_R6:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs)
/* 22741*/        0, /*End of Scope*/
/* 22742*/      0, // EndSwitchType
/* 22743*/    /*Scope*/ 117, /*->22861*/
/* 22744*/      OPC_RecordChild0, // #0 = $rs
/* 22745*/      OPC_SwitchType /*6 cases */, 34, MVT::i32,// ->22782
/* 22748*/        OPC_CheckChild0Type, MVT::i32,
/* 22750*/        OPC_Scope, 9, /*->22761*/ // 3 children in Scope
/* 22752*/          OPC_CheckPatternPredicate, 49, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 22754*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::CLZ), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (ctlz:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                    // Dst: (CLZ:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs)
/* 22761*/        /*Scope*/ 9, /*->22771*/
/* 22762*/          OPC_CheckPatternPredicate, 50, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding())
/* 22764*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::CLZ_R6), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (ctlz:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                    // Dst: (CLZ_R6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs)
/* 22771*/        /*Scope*/ 9, /*->22781*/
/* 22772*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 22774*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::CLZ_MM), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (ctlz:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                    // Dst: (CLZ_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs)
/* 22781*/        0, /*End of Scope*/
/* 22782*/      /*SwitchType*/ 24, MVT::i64,// ->22808
/* 22784*/        OPC_CheckChild0Type, MVT::i64,
/* 22786*/        OPC_Scope, 9, /*->22797*/ // 2 children in Scope
/* 22788*/          OPC_CheckPatternPredicate, 51, // (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips64r6())
/* 22790*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DCLZ), 0,
                        MVT::i64, 1/*#Ops*/, 0, 
                    // Src: (ctlz:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                    // Dst: (DCLZ:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs)
/* 22797*/        /*Scope*/ 9, /*->22807*/
/* 22798*/          OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 22800*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DCLZ_R6), 0,
                        MVT::i64, 1/*#Ops*/, 0, 
                    // Src: (ctlz:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                    // Dst: (DCLZ_R6:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs)
/* 22807*/        0, /*End of Scope*/
/* 22808*/      /*SwitchType*/ 11, MVT::v16i8,// ->22821
/* 22810*/        OPC_CheckChild0Type, MVT::v16i8,
/* 22812*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22814*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NLZC_B), 0,
                      MVT::v16i8, 1/*#Ops*/, 0, 
                  // Src: (ctlz:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 3
                  // Dst: (NLZC_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws)
/* 22821*/      /*SwitchType*/ 11, MVT::v8i16,// ->22834
/* 22823*/        OPC_CheckChild0Type, MVT::v8i16,
/* 22825*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22827*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NLZC_H), 0,
                      MVT::v8i16, 1/*#Ops*/, 0, 
                  // Src: (ctlz:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 3
                  // Dst: (NLZC_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws)
/* 22834*/      /*SwitchType*/ 11, MVT::v4i32,// ->22847
/* 22836*/        OPC_CheckChild0Type, MVT::v4i32,
/* 22838*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22840*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NLZC_W), 0,
                      MVT::v4i32, 1/*#Ops*/, 0, 
                  // Src: (ctlz:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 3
                  // Dst: (NLZC_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws)
/* 22847*/      /*SwitchType*/ 11, MVT::v2i64,// ->22860
/* 22849*/        OPC_CheckChild0Type, MVT::v2i64,
/* 22851*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 22853*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NLZC_D), 0,
                      MVT::v2i64, 1/*#Ops*/, 0, 
                  // Src: (ctlz:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 3
                  // Dst: (NLZC_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws)
/* 22860*/      0, // EndSwitchType
/* 22861*/    0, /*End of Scope*/
/* 22862*/  /*SwitchOpcode*/ 35|128,1/*163*/, TARGET_VAL(MipsISD::Ext),// ->23029
/* 22866*/    OPC_RecordChild0, // #0 = $rs
/* 22867*/    OPC_RecordChild1, // #1 = $pos
/* 22868*/    OPC_MoveChild1,
/* 22869*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22872*/    OPC_Scope, 71, /*->22945*/ // 4 children in Scope
/* 22874*/      OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 22876*/      OPC_MoveParent,
/* 22877*/      OPC_RecordChild2, // #2 = $size
/* 22878*/      OPC_MoveChild2,
/* 22879*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22882*/      OPC_Scope, 39, /*->22923*/ // 2 children in Scope
/* 22884*/        OPC_CheckPredicate, 39, // Predicate_immZExt5Plus1
/* 22886*/        OPC_MoveParent,
/* 22887*/        OPC_SwitchType /*2 cases */, 15, MVT::i32,// ->22905
/* 22890*/          OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 22892*/          OPC_EmitConvertToTarget, 1,
/* 22894*/          OPC_EmitConvertToTarget, 2,
/* 22896*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::EXT), 0,
                        MVT::i32, 3/*#Ops*/, 0, 3, 4, 
                    // Src: (MipsExt:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$pos, (imm:{ *:[i32] })<<P:Predicate_immZExt5Plus1>>:$size) - Complexity = 11
                    // Dst: (EXT:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$pos, (imm:{ *:[i32] }):$size)
/* 22905*/        /*SwitchType*/ 15, MVT::i64,// ->22922
/* 22907*/          OPC_CheckPatternPredicate, 54, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 22909*/          OPC_EmitConvertToTarget, 1,
/* 22911*/          OPC_EmitConvertToTarget, 2,
/* 22913*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DEXT), 0,
                        MVT::i64, 3/*#Ops*/, 0, 3, 4, 
                    // Src: (MipsExt:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$pos, (imm:{ *:[i32] })<<P:Predicate_immZExt5Plus1>>:$size) - Complexity = 11
                    // Dst: (DEXT:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i32] }):$pos, (imm:{ *:[i32] }):$size)
/* 22922*/        0, // EndSwitchType
/* 22923*/      /*Scope*/ 20, /*->22944*/
/* 22924*/        OPC_CheckPredicate, 40, // Predicate_immZExt5Plus33
/* 22926*/        OPC_MoveParent,
/* 22927*/        OPC_CheckType, MVT::i64,
/* 22929*/        OPC_CheckPatternPredicate, 54, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 22931*/        OPC_EmitConvertToTarget, 1,
/* 22933*/        OPC_EmitConvertToTarget, 2,
/* 22935*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DEXTM), 0,
                      MVT::i64, 3/*#Ops*/, 0, 3, 4, 
                  // Src: (MipsExt:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$pos, (imm:{ *:[i32] })<<P:Predicate_immZExt5Plus33>>:$size) - Complexity = 11
                  // Dst: (DEXTM:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i32] }):$pos, (imm:{ *:[i32] }):$size)
/* 22944*/      0, /*End of Scope*/
/* 22945*/    /*Scope*/ 28, /*->22974*/
/* 22946*/      OPC_CheckPredicate, 41, // Predicate_immZExt5Plus32
/* 22948*/      OPC_MoveParent,
/* 22949*/      OPC_RecordChild2, // #2 = $size
/* 22950*/      OPC_MoveChild2,
/* 22951*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22954*/      OPC_CheckPredicate, 39, // Predicate_immZExt5Plus1
/* 22956*/      OPC_MoveParent,
/* 22957*/      OPC_CheckType, MVT::i64,
/* 22959*/      OPC_CheckPatternPredicate, 54, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 22961*/      OPC_EmitConvertToTarget, 1,
/* 22963*/      OPC_EmitConvertToTarget, 2,
/* 22965*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DEXTU), 0,
                    MVT::i64, 3/*#Ops*/, 0, 3, 4, 
                // Src: (MipsExt:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5Plus32>>:$pos, (imm:{ *:[i32] })<<P:Predicate_immZExt5Plus1>>:$size) - Complexity = 11
                // Dst: (DEXTU:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i32] }):$pos, (imm:{ *:[i32] }):$size)
/* 22974*/    /*Scope*/ 28, /*->23003*/
/* 22975*/      OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 22977*/      OPC_MoveParent,
/* 22978*/      OPC_RecordChild2, // #2 = $size
/* 22979*/      OPC_MoveChild2,
/* 22980*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22983*/      OPC_CheckPredicate, 39, // Predicate_immZExt5Plus1
/* 22985*/      OPC_MoveParent,
/* 22986*/      OPC_CheckType, MVT::i32,
/* 22988*/      OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 22990*/      OPC_EmitConvertToTarget, 1,
/* 22992*/      OPC_EmitConvertToTarget, 2,
/* 22994*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::EXT_MM), 0,
                    MVT::i32, 3/*#Ops*/, 0, 3, 4, 
                // Src: (MipsExt:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$pos, (imm:{ *:[i32] })<<P:Predicate_immZExt5Plus1>>:$size) - Complexity = 11
                // Dst: (EXT_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$pos, (imm:{ *:[i32] }):$size)
/* 23003*/    /*Scope*/ 24, /*->23028*/
/* 23004*/      OPC_MoveParent,
/* 23005*/      OPC_RecordChild2, // #2 = $size
/* 23006*/      OPC_MoveChild2,
/* 23007*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23010*/      OPC_MoveParent,
/* 23011*/      OPC_CheckType, MVT::i32,
/* 23013*/      OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 23015*/      OPC_EmitConvertToTarget, 1,
/* 23017*/      OPC_EmitConvertToTarget, 2,
/* 23019*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::EXT_MMR6), 0,
                    MVT::i32, 3/*#Ops*/, 0, 3, 4, 
                // Src: (MipsExt:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$pos, (imm:{ *:[i32] }):$size) - Complexity = 9
                // Dst: (EXT_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$pos, (imm:{ *:[i32] }):$size)
/* 23028*/    0, /*End of Scope*/
/* 23029*/  /*SwitchOpcode*/ 107|128,34/*4459*/, TARGET_VAL(ISD::AND),// ->27492
/* 23033*/    OPC_Scope, 22, /*->23057*/ // 18 children in Scope
/* 23035*/      OPC_CheckAndImm, 127|128,1/*255*/, 
/* 23038*/      OPC_MoveChild0,
/* 23039*/      OPC_CheckOpcode, TARGET_VAL(ISD::ADD),
/* 23042*/      OPC_RecordChild0, // #0 = $rs
/* 23043*/      OPC_RecordChild1, // #1 = $rt
/* 23044*/      OPC_MoveParent,
/* 23045*/      OPC_CheckType, MVT::i64,
/* 23047*/      OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 23049*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BADDu), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1, 
                // Src: (and:{ *:[i64] } (add:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt), 255:{ *:[i64] }) - Complexity = 11
                // Dst: (BADDu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 23057*/    /*Scope*/ 72|128,7/*968*/, /*->24027*/
/* 23059*/      OPC_RecordChild0, // #0 = $rs
/* 23060*/      OPC_Scope, 73|128,1/*201*/, /*->23264*/ // 2 children in Scope
/* 23063*/        OPC_RecordChild1, // #1 = $imm16
/* 23064*/        OPC_Scope, 123, /*->23189*/ // 3 children in Scope
/* 23066*/          OPC_MoveChild1,
/* 23067*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23070*/          OPC_Scope, 17, /*->23089*/ // 6 children in Scope
/* 23072*/            OPC_CheckPredicate, 32, // Predicate_imm32ZExt16
/* 23074*/            OPC_MoveParent,
/* 23075*/            OPC_CheckType, MVT::i32,
/* 23077*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 23079*/            OPC_EmitConvertToTarget, 1,
/* 23081*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ANDi), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (and:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_imm32ZExt16>>:$imm16) - Complexity = 7
                      // Dst: (ANDi:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$imm16)
/* 23089*/          /*Scope*/ 20, /*->23110*/
/* 23090*/            OPC_CheckPredicate, 18, // Predicate_immZExt16
/* 23092*/            OPC_MoveParent,
/* 23093*/            OPC_CheckType, MVT::i64,
/* 23095*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 23097*/            OPC_EmitConvertToTarget, 1,
/* 23099*/            OPC_EmitNodeXForm, 3, 2, // LO16
/* 23102*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ANDi64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 3, 
                      // Src: (and:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm16) - Complexity = 7
                      // Dst: (ANDi64:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (LO16:{ *:[i64] } (imm:{ *:[i64] }):$imm16))
/* 23110*/          /*Scope*/ 17, /*->23128*/
/* 23111*/            OPC_CheckPredicate, 42, // Predicate_immZExtAndi16
/* 23113*/            OPC_MoveParent,
/* 23114*/            OPC_CheckType, MVT::i32,
/* 23116*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 23118*/            OPC_EmitConvertToTarget, 1,
/* 23120*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ANDI16_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (and:{ *:[i32] } GPRMM16:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExtAndi16>>:$imm) - Complexity = 7
                      // Dst: (ANDI16_MM:{ *:[i32] } GPRMM16:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExtAndi16>>:$imm)
/* 23128*/          /*Scope*/ 20, /*->23149*/
/* 23129*/            OPC_CheckPredicate, 18, // Predicate_immZExt16
/* 23131*/            OPC_MoveParent,
/* 23132*/            OPC_CheckType, MVT::i32,
/* 23134*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 23136*/            OPC_EmitConvertToTarget, 1,
/* 23138*/            OPC_EmitNodeXForm, 3, 2, // LO16
/* 23141*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ANDi_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 3, 
                      // Src: (and:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm) - Complexity = 7
                      // Dst: (ANDi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$src, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$imm))
/* 23149*/          /*Scope*/ 17, /*->23167*/
/* 23150*/            OPC_CheckPredicate, 42, // Predicate_immZExtAndi16
/* 23152*/            OPC_MoveParent,
/* 23153*/            OPC_CheckType, MVT::i32,
/* 23155*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 23157*/            OPC_EmitConvertToTarget, 1,
/* 23159*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ANDI16_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (and:{ *:[i32] } GPRMM16:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExtAndi16>>:$imm) - Complexity = 7
                      // Dst: (ANDI16_MMR6:{ *:[i32] } GPRMM16:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExtAndi16>>:$imm)
/* 23167*/          /*Scope*/ 20, /*->23188*/
/* 23168*/            OPC_CheckPredicate, 18, // Predicate_immZExt16
/* 23170*/            OPC_MoveParent,
/* 23171*/            OPC_CheckType, MVT::i32,
/* 23173*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 23175*/            OPC_EmitConvertToTarget, 1,
/* 23177*/            OPC_EmitNodeXForm, 3, 2, // LO16
/* 23180*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ANDI_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 0, 3, 
                      // Src: (and:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm) - Complexity = 7
                      // Dst: (ANDI_MMR6:{ *:[i32] } GPR32:{ *:[i32] }:$src, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$imm))
/* 23188*/          0, /*End of Scope*/
/* 23189*/        /*Scope*/ 60, /*->23250*/
/* 23190*/          OPC_CheckType, MVT::i32,
/* 23192*/          OPC_Scope, 10, /*->23204*/ // 4 children in Scope
/* 23194*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 23196*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::AND), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (and:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                      // Dst: (AND:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 23204*/          /*Scope*/ 10, /*->23215*/
/* 23205*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 23207*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::AndRxRxRy16), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (and:{ *:[i32] } CPU16Regs:{ *:[i32] }:$l, CPU16Regs:{ *:[i32] }:$r) - Complexity = 3
                      // Dst: (AndRxRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$l, CPU16Regs:{ *:[i32] }:$r)
/* 23215*/          /*Scope*/ 22, /*->23238*/
/* 23216*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 23218*/            OPC_Scope, 8, /*->23228*/ // 2 children in Scope
/* 23220*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::AND16_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (and:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, GPRMM16Opnd:{ *:[i32] }:$rt) - Complexity = 3
                        // Dst: (AND16_MM:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, GPRMM16Opnd:{ *:[i32] }:$rt)
/* 23228*/            /*Scope*/ 8, /*->23237*/
/* 23229*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::AND_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (and:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                        // Dst: (AND_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 23237*/            0, /*End of Scope*/
/* 23238*/          /*Scope*/ 10, /*->23249*/
/* 23239*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 23241*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::AND_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (and:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                      // Dst: (AND_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 23249*/          0, /*End of Scope*/
/* 23250*/        /*Scope*/ 12, /*->23263*/
/* 23251*/          OPC_CheckType, MVT::i64,
/* 23253*/          OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 23255*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::AND64), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                    // Dst: (AND64:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 23263*/        0, /*End of Scope*/
/* 23264*/      /*Scope*/ 120|128,5/*760*/, /*->24026*/
/* 23266*/        OPC_MoveChild1,
/* 23267*/        OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 23270*/        OPC_MoveChild0,
/* 23271*/        OPC_Scope, 120|128,2/*376*/, /*->23650*/ // 2 children in Scope
/* 23274*/          OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 23277*/          OPC_MoveChild0,
/* 23278*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 23281*/          OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 23283*/          OPC_MoveParent,
/* 23284*/          OPC_MoveChild1,
/* 23285*/          OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 23288*/          OPC_Scope, 50|128,1/*178*/, /*->23469*/ // 2 children in Scope
/* 23291*/            OPC_RecordChild0, // #1 = $wt
/* 23292*/            OPC_MoveChild1,
/* 23293*/            OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 23296*/            OPC_MoveChild0,
/* 23297*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23300*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23302*/            OPC_CheckType, MVT::i32,
/* 23304*/            OPC_MoveParent,
/* 23305*/            OPC_MoveChild1,
/* 23306*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23309*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23311*/            OPC_CheckType, MVT::i32,
/* 23313*/            OPC_MoveParent,
/* 23314*/            OPC_MoveChild2,
/* 23315*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23318*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23320*/            OPC_CheckType, MVT::i32,
/* 23322*/            OPC_MoveParent,
/* 23323*/            OPC_MoveChild3,
/* 23324*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23327*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23329*/            OPC_CheckType, MVT::i32,
/* 23331*/            OPC_MoveParent,
/* 23332*/            OPC_MoveChild4,
/* 23333*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23336*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23338*/            OPC_CheckType, MVT::i32,
/* 23340*/            OPC_MoveParent,
/* 23341*/            OPC_MoveChild5,
/* 23342*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23345*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23347*/            OPC_CheckType, MVT::i32,
/* 23349*/            OPC_MoveParent,
/* 23350*/            OPC_MoveChild6,
/* 23351*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23354*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23356*/            OPC_CheckType, MVT::i32,
/* 23358*/            OPC_MoveParent,
/* 23359*/            OPC_MoveChild7,
/* 23360*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23363*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23365*/            OPC_CheckType, MVT::i32,
/* 23367*/            OPC_MoveParent,
/* 23368*/            OPC_MoveChild, 8,
/* 23370*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23373*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23375*/            OPC_CheckType, MVT::i32,
/* 23377*/            OPC_MoveParent,
/* 23378*/            OPC_MoveChild, 9,
/* 23380*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23383*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23385*/            OPC_CheckType, MVT::i32,
/* 23387*/            OPC_MoveParent,
/* 23388*/            OPC_MoveChild, 10,
/* 23390*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23393*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23395*/            OPC_CheckType, MVT::i32,
/* 23397*/            OPC_MoveParent,
/* 23398*/            OPC_MoveChild, 11,
/* 23400*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23403*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23405*/            OPC_CheckType, MVT::i32,
/* 23407*/            OPC_MoveParent,
/* 23408*/            OPC_MoveChild, 12,
/* 23410*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23413*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23415*/            OPC_CheckType, MVT::i32,
/* 23417*/            OPC_MoveParent,
/* 23418*/            OPC_MoveChild, 13,
/* 23420*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23423*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23425*/            OPC_CheckType, MVT::i32,
/* 23427*/            OPC_MoveParent,
/* 23428*/            OPC_MoveChild, 14,
/* 23430*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23433*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23435*/            OPC_CheckType, MVT::i32,
/* 23437*/            OPC_MoveParent,
/* 23438*/            OPC_MoveChild, 15,
/* 23440*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23443*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23445*/            OPC_CheckType, MVT::i32,
/* 23447*/            OPC_MoveParent,
/* 23448*/            OPC_MoveParent,
/* 23449*/            OPC_CheckType, MVT::v16i8,
/* 23451*/            OPC_MoveParent,
/* 23452*/            OPC_MoveParent,
/* 23453*/            OPC_MoveChild1,
/* 23454*/            OPC_CheckImmAllOnesV,
/* 23455*/            OPC_MoveParent,
/* 23456*/            OPC_MoveParent,
/* 23457*/            OPC_CheckType, MVT::v16i8,
/* 23459*/            OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 23461*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                          MVT::v16i8, 2/*#Ops*/, 0, 1, 
                      // Src: (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (xor:{ *:[v16i8] } (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$wt, (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>))), immAllOnesV:{ *:[v16i8] })) - Complexity = 87
                      // Dst: (BCLR_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 23469*/          /*Scope*/ 50|128,1/*178*/, /*->23649*/
/* 23471*/            OPC_MoveChild0,
/* 23472*/            OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 23475*/            OPC_MoveChild0,
/* 23476*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23479*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23481*/            OPC_CheckType, MVT::i32,
/* 23483*/            OPC_MoveParent,
/* 23484*/            OPC_MoveChild1,
/* 23485*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23488*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23490*/            OPC_CheckType, MVT::i32,
/* 23492*/            OPC_MoveParent,
/* 23493*/            OPC_MoveChild2,
/* 23494*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23497*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23499*/            OPC_CheckType, MVT::i32,
/* 23501*/            OPC_MoveParent,
/* 23502*/            OPC_MoveChild3,
/* 23503*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23506*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23508*/            OPC_CheckType, MVT::i32,
/* 23510*/            OPC_MoveParent,
/* 23511*/            OPC_MoveChild4,
/* 23512*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23515*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23517*/            OPC_CheckType, MVT::i32,
/* 23519*/            OPC_MoveParent,
/* 23520*/            OPC_MoveChild5,
/* 23521*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23524*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23526*/            OPC_CheckType, MVT::i32,
/* 23528*/            OPC_MoveParent,
/* 23529*/            OPC_MoveChild6,
/* 23530*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23533*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23535*/            OPC_CheckType, MVT::i32,
/* 23537*/            OPC_MoveParent,
/* 23538*/            OPC_MoveChild7,
/* 23539*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23542*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23544*/            OPC_CheckType, MVT::i32,
/* 23546*/            OPC_MoveParent,
/* 23547*/            OPC_MoveChild, 8,
/* 23549*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23552*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23554*/            OPC_CheckType, MVT::i32,
/* 23556*/            OPC_MoveParent,
/* 23557*/            OPC_MoveChild, 9,
/* 23559*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23562*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23564*/            OPC_CheckType, MVT::i32,
/* 23566*/            OPC_MoveParent,
/* 23567*/            OPC_MoveChild, 10,
/* 23569*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23572*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23574*/            OPC_CheckType, MVT::i32,
/* 23576*/            OPC_MoveParent,
/* 23577*/            OPC_MoveChild, 11,
/* 23579*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23582*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23584*/            OPC_CheckType, MVT::i32,
/* 23586*/            OPC_MoveParent,
/* 23587*/            OPC_MoveChild, 12,
/* 23589*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23592*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23594*/            OPC_CheckType, MVT::i32,
/* 23596*/            OPC_MoveParent,
/* 23597*/            OPC_MoveChild, 13,
/* 23599*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23602*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23604*/            OPC_CheckType, MVT::i32,
/* 23606*/            OPC_MoveParent,
/* 23607*/            OPC_MoveChild, 14,
/* 23609*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23612*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23614*/            OPC_CheckType, MVT::i32,
/* 23616*/            OPC_MoveParent,
/* 23617*/            OPC_MoveChild, 15,
/* 23619*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23622*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23624*/            OPC_CheckType, MVT::i32,
/* 23626*/            OPC_MoveParent,
/* 23627*/            OPC_MoveParent,
/* 23628*/            OPC_RecordChild1, // #1 = $wt
/* 23629*/            OPC_CheckType, MVT::v16i8,
/* 23631*/            OPC_MoveParent,
/* 23632*/            OPC_MoveParent,
/* 23633*/            OPC_MoveChild1,
/* 23634*/            OPC_CheckImmAllOnesV,
/* 23635*/            OPC_MoveParent,
/* 23636*/            OPC_MoveParent,
/* 23637*/            OPC_CheckType, MVT::v16i8,
/* 23639*/            OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 23641*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                          MVT::v16i8, 2/*#Ops*/, 0, 1, 
                      // Src: (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (xor:{ *:[v16i8] } (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>), v16i8:{ *:[v16i8] }:$wt)), immAllOnesV:{ *:[v16i8] })) - Complexity = 87
                      // Dst: (BCLR_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 23649*/          0, /*End of Scope*/
/* 23650*/        /*Scope*/ 117|128,2/*373*/, /*->24025*/
/* 23652*/          OPC_CheckImmAllOnesV,
/* 23653*/          OPC_MoveParent,
/* 23654*/          OPC_MoveChild1,
/* 23655*/          OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 23658*/          OPC_MoveChild0,
/* 23659*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 23662*/          OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 23664*/          OPC_MoveParent,
/* 23665*/          OPC_MoveChild1,
/* 23666*/          OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 23669*/          OPC_Scope, 47|128,1/*175*/, /*->23847*/ // 2 children in Scope
/* 23672*/            OPC_RecordChild0, // #1 = $wt
/* 23673*/            OPC_MoveChild1,
/* 23674*/            OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 23677*/            OPC_MoveChild0,
/* 23678*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23681*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23683*/            OPC_CheckType, MVT::i32,
/* 23685*/            OPC_MoveParent,
/* 23686*/            OPC_MoveChild1,
/* 23687*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23690*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23692*/            OPC_CheckType, MVT::i32,
/* 23694*/            OPC_MoveParent,
/* 23695*/            OPC_MoveChild2,
/* 23696*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23699*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23701*/            OPC_CheckType, MVT::i32,
/* 23703*/            OPC_MoveParent,
/* 23704*/            OPC_MoveChild3,
/* 23705*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23708*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23710*/            OPC_CheckType, MVT::i32,
/* 23712*/            OPC_MoveParent,
/* 23713*/            OPC_MoveChild4,
/* 23714*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23717*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23719*/            OPC_CheckType, MVT::i32,
/* 23721*/            OPC_MoveParent,
/* 23722*/            OPC_MoveChild5,
/* 23723*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23726*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23728*/            OPC_CheckType, MVT::i32,
/* 23730*/            OPC_MoveParent,
/* 23731*/            OPC_MoveChild6,
/* 23732*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23735*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23737*/            OPC_CheckType, MVT::i32,
/* 23739*/            OPC_MoveParent,
/* 23740*/            OPC_MoveChild7,
/* 23741*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23744*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23746*/            OPC_CheckType, MVT::i32,
/* 23748*/            OPC_MoveParent,
/* 23749*/            OPC_MoveChild, 8,
/* 23751*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23754*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23756*/            OPC_CheckType, MVT::i32,
/* 23758*/            OPC_MoveParent,
/* 23759*/            OPC_MoveChild, 9,
/* 23761*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23764*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23766*/            OPC_CheckType, MVT::i32,
/* 23768*/            OPC_MoveParent,
/* 23769*/            OPC_MoveChild, 10,
/* 23771*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23774*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23776*/            OPC_CheckType, MVT::i32,
/* 23778*/            OPC_MoveParent,
/* 23779*/            OPC_MoveChild, 11,
/* 23781*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23784*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23786*/            OPC_CheckType, MVT::i32,
/* 23788*/            OPC_MoveParent,
/* 23789*/            OPC_MoveChild, 12,
/* 23791*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23794*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23796*/            OPC_CheckType, MVT::i32,
/* 23798*/            OPC_MoveParent,
/* 23799*/            OPC_MoveChild, 13,
/* 23801*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23804*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23806*/            OPC_CheckType, MVT::i32,
/* 23808*/            OPC_MoveParent,
/* 23809*/            OPC_MoveChild, 14,
/* 23811*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23814*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23816*/            OPC_CheckType, MVT::i32,
/* 23818*/            OPC_MoveParent,
/* 23819*/            OPC_MoveChild, 15,
/* 23821*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23824*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23826*/            OPC_CheckType, MVT::i32,
/* 23828*/            OPC_MoveParent,
/* 23829*/            OPC_MoveParent,
/* 23830*/            OPC_CheckType, MVT::v16i8,
/* 23832*/            OPC_MoveParent,
/* 23833*/            OPC_MoveParent,
/* 23834*/            OPC_MoveParent,
/* 23835*/            OPC_CheckType, MVT::v16i8,
/* 23837*/            OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 23839*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                          MVT::v16i8, 2/*#Ops*/, 0, 1, 
                      // Src: (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (xor:{ *:[v16i8] } immAllOnesV:{ *:[v16i8] }, (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$wt, (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>))))) - Complexity = 87
                      // Dst: (BCLR_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 23847*/          /*Scope*/ 47|128,1/*175*/, /*->24024*/
/* 23849*/            OPC_MoveChild0,
/* 23850*/            OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 23853*/            OPC_MoveChild0,
/* 23854*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23857*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23859*/            OPC_CheckType, MVT::i32,
/* 23861*/            OPC_MoveParent,
/* 23862*/            OPC_MoveChild1,
/* 23863*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23866*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23868*/            OPC_CheckType, MVT::i32,
/* 23870*/            OPC_MoveParent,
/* 23871*/            OPC_MoveChild2,
/* 23872*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23875*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23877*/            OPC_CheckType, MVT::i32,
/* 23879*/            OPC_MoveParent,
/* 23880*/            OPC_MoveChild3,
/* 23881*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23884*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23886*/            OPC_CheckType, MVT::i32,
/* 23888*/            OPC_MoveParent,
/* 23889*/            OPC_MoveChild4,
/* 23890*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23893*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23895*/            OPC_CheckType, MVT::i32,
/* 23897*/            OPC_MoveParent,
/* 23898*/            OPC_MoveChild5,
/* 23899*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23902*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23904*/            OPC_CheckType, MVT::i32,
/* 23906*/            OPC_MoveParent,
/* 23907*/            OPC_MoveChild6,
/* 23908*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23911*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23913*/            OPC_CheckType, MVT::i32,
/* 23915*/            OPC_MoveParent,
/* 23916*/            OPC_MoveChild7,
/* 23917*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23920*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23922*/            OPC_CheckType, MVT::i32,
/* 23924*/            OPC_MoveParent,
/* 23925*/            OPC_MoveChild, 8,
/* 23927*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23930*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23932*/            OPC_CheckType, MVT::i32,
/* 23934*/            OPC_MoveParent,
/* 23935*/            OPC_MoveChild, 9,
/* 23937*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23940*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23942*/            OPC_CheckType, MVT::i32,
/* 23944*/            OPC_MoveParent,
/* 23945*/            OPC_MoveChild, 10,
/* 23947*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23950*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23952*/            OPC_CheckType, MVT::i32,
/* 23954*/            OPC_MoveParent,
/* 23955*/            OPC_MoveChild, 11,
/* 23957*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23960*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23962*/            OPC_CheckType, MVT::i32,
/* 23964*/            OPC_MoveParent,
/* 23965*/            OPC_MoveChild, 12,
/* 23967*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23970*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23972*/            OPC_CheckType, MVT::i32,
/* 23974*/            OPC_MoveParent,
/* 23975*/            OPC_MoveChild, 13,
/* 23977*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23980*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23982*/            OPC_CheckType, MVT::i32,
/* 23984*/            OPC_MoveParent,
/* 23985*/            OPC_MoveChild, 14,
/* 23987*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23990*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 23992*/            OPC_CheckType, MVT::i32,
/* 23994*/            OPC_MoveParent,
/* 23995*/            OPC_MoveChild, 15,
/* 23997*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24000*/            OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24002*/            OPC_CheckType, MVT::i32,
/* 24004*/            OPC_MoveParent,
/* 24005*/            OPC_MoveParent,
/* 24006*/            OPC_RecordChild1, // #1 = $wt
/* 24007*/            OPC_CheckType, MVT::v16i8,
/* 24009*/            OPC_MoveParent,
/* 24010*/            OPC_MoveParent,
/* 24011*/            OPC_MoveParent,
/* 24012*/            OPC_CheckType, MVT::v16i8,
/* 24014*/            OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 24016*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                          MVT::v16i8, 2/*#Ops*/, 0, 1, 
                      // Src: (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (xor:{ *:[v16i8] } immAllOnesV:{ *:[v16i8] }, (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>), v16i8:{ *:[v16i8] }:$wt)))) - Complexity = 87
                      // Dst: (BCLR_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 24024*/          0, /*End of Scope*/
/* 24025*/        0, /*End of Scope*/
/* 24026*/      0, /*End of Scope*/
/* 24027*/    /*Scope*/ 124|128,5/*764*/, /*->24793*/
/* 24029*/      OPC_MoveChild0,
/* 24030*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 24033*/      OPC_MoveChild0,
/* 24034*/      OPC_Scope, 122|128,2/*378*/, /*->24415*/ // 2 children in Scope
/* 24037*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 24040*/        OPC_MoveChild0,
/* 24041*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24044*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 24046*/        OPC_MoveParent,
/* 24047*/        OPC_MoveChild1,
/* 24048*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 24051*/        OPC_Scope, 51|128,1/*179*/, /*->24233*/ // 2 children in Scope
/* 24054*/          OPC_RecordChild0, // #0 = $wt
/* 24055*/          OPC_MoveChild1,
/* 24056*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24059*/          OPC_MoveChild0,
/* 24060*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24063*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24065*/          OPC_CheckType, MVT::i32,
/* 24067*/          OPC_MoveParent,
/* 24068*/          OPC_MoveChild1,
/* 24069*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24072*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24074*/          OPC_CheckType, MVT::i32,
/* 24076*/          OPC_MoveParent,
/* 24077*/          OPC_MoveChild2,
/* 24078*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24081*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24083*/          OPC_CheckType, MVT::i32,
/* 24085*/          OPC_MoveParent,
/* 24086*/          OPC_MoveChild3,
/* 24087*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24090*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24092*/          OPC_CheckType, MVT::i32,
/* 24094*/          OPC_MoveParent,
/* 24095*/          OPC_MoveChild4,
/* 24096*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24099*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24101*/          OPC_CheckType, MVT::i32,
/* 24103*/          OPC_MoveParent,
/* 24104*/          OPC_MoveChild5,
/* 24105*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24108*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24110*/          OPC_CheckType, MVT::i32,
/* 24112*/          OPC_MoveParent,
/* 24113*/          OPC_MoveChild6,
/* 24114*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24117*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24119*/          OPC_CheckType, MVT::i32,
/* 24121*/          OPC_MoveParent,
/* 24122*/          OPC_MoveChild7,
/* 24123*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24126*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24128*/          OPC_CheckType, MVT::i32,
/* 24130*/          OPC_MoveParent,
/* 24131*/          OPC_MoveChild, 8,
/* 24133*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24136*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24138*/          OPC_CheckType, MVT::i32,
/* 24140*/          OPC_MoveParent,
/* 24141*/          OPC_MoveChild, 9,
/* 24143*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24146*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24148*/          OPC_CheckType, MVT::i32,
/* 24150*/          OPC_MoveParent,
/* 24151*/          OPC_MoveChild, 10,
/* 24153*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24156*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24158*/          OPC_CheckType, MVT::i32,
/* 24160*/          OPC_MoveParent,
/* 24161*/          OPC_MoveChild, 11,
/* 24163*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24166*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24168*/          OPC_CheckType, MVT::i32,
/* 24170*/          OPC_MoveParent,
/* 24171*/          OPC_MoveChild, 12,
/* 24173*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24176*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24178*/          OPC_CheckType, MVT::i32,
/* 24180*/          OPC_MoveParent,
/* 24181*/          OPC_MoveChild, 13,
/* 24183*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24186*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24188*/          OPC_CheckType, MVT::i32,
/* 24190*/          OPC_MoveParent,
/* 24191*/          OPC_MoveChild, 14,
/* 24193*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24196*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24198*/          OPC_CheckType, MVT::i32,
/* 24200*/          OPC_MoveParent,
/* 24201*/          OPC_MoveChild, 15,
/* 24203*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24206*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24208*/          OPC_CheckType, MVT::i32,
/* 24210*/          OPC_MoveParent,
/* 24211*/          OPC_MoveParent,
/* 24212*/          OPC_CheckType, MVT::v16i8,
/* 24214*/          OPC_MoveParent,
/* 24215*/          OPC_MoveParent,
/* 24216*/          OPC_MoveChild1,
/* 24217*/          OPC_CheckImmAllOnesV,
/* 24218*/          OPC_MoveParent,
/* 24219*/          OPC_MoveParent,
/* 24220*/          OPC_RecordChild1, // #1 = $ws
/* 24221*/          OPC_CheckType, MVT::v16i8,
/* 24223*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 24225*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v16i8] } (xor:{ *:[v16i8] } (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$wt, (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>))), immAllOnesV:{ *:[v16i8] }), v16i8:{ *:[v16i8] }:$ws) - Complexity = 87
                    // Dst: (BCLR_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 24233*/        /*Scope*/ 51|128,1/*179*/, /*->24414*/
/* 24235*/          OPC_MoveChild0,
/* 24236*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24239*/          OPC_MoveChild0,
/* 24240*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24243*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24245*/          OPC_CheckType, MVT::i32,
/* 24247*/          OPC_MoveParent,
/* 24248*/          OPC_MoveChild1,
/* 24249*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24252*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24254*/          OPC_CheckType, MVT::i32,
/* 24256*/          OPC_MoveParent,
/* 24257*/          OPC_MoveChild2,
/* 24258*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24261*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24263*/          OPC_CheckType, MVT::i32,
/* 24265*/          OPC_MoveParent,
/* 24266*/          OPC_MoveChild3,
/* 24267*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24270*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24272*/          OPC_CheckType, MVT::i32,
/* 24274*/          OPC_MoveParent,
/* 24275*/          OPC_MoveChild4,
/* 24276*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24279*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24281*/          OPC_CheckType, MVT::i32,
/* 24283*/          OPC_MoveParent,
/* 24284*/          OPC_MoveChild5,
/* 24285*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24288*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24290*/          OPC_CheckType, MVT::i32,
/* 24292*/          OPC_MoveParent,
/* 24293*/          OPC_MoveChild6,
/* 24294*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24297*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24299*/          OPC_CheckType, MVT::i32,
/* 24301*/          OPC_MoveParent,
/* 24302*/          OPC_MoveChild7,
/* 24303*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24306*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24308*/          OPC_CheckType, MVT::i32,
/* 24310*/          OPC_MoveParent,
/* 24311*/          OPC_MoveChild, 8,
/* 24313*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24316*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24318*/          OPC_CheckType, MVT::i32,
/* 24320*/          OPC_MoveParent,
/* 24321*/          OPC_MoveChild, 9,
/* 24323*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24326*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24328*/          OPC_CheckType, MVT::i32,
/* 24330*/          OPC_MoveParent,
/* 24331*/          OPC_MoveChild, 10,
/* 24333*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24336*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24338*/          OPC_CheckType, MVT::i32,
/* 24340*/          OPC_MoveParent,
/* 24341*/          OPC_MoveChild, 11,
/* 24343*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24346*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24348*/          OPC_CheckType, MVT::i32,
/* 24350*/          OPC_MoveParent,
/* 24351*/          OPC_MoveChild, 12,
/* 24353*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24356*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24358*/          OPC_CheckType, MVT::i32,
/* 24360*/          OPC_MoveParent,
/* 24361*/          OPC_MoveChild, 13,
/* 24363*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24366*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24368*/          OPC_CheckType, MVT::i32,
/* 24370*/          OPC_MoveParent,
/* 24371*/          OPC_MoveChild, 14,
/* 24373*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24376*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24378*/          OPC_CheckType, MVT::i32,
/* 24380*/          OPC_MoveParent,
/* 24381*/          OPC_MoveChild, 15,
/* 24383*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24386*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24388*/          OPC_CheckType, MVT::i32,
/* 24390*/          OPC_MoveParent,
/* 24391*/          OPC_MoveParent,
/* 24392*/          OPC_RecordChild1, // #0 = $wt
/* 24393*/          OPC_CheckType, MVT::v16i8,
/* 24395*/          OPC_MoveParent,
/* 24396*/          OPC_MoveParent,
/* 24397*/          OPC_MoveChild1,
/* 24398*/          OPC_CheckImmAllOnesV,
/* 24399*/          OPC_MoveParent,
/* 24400*/          OPC_MoveParent,
/* 24401*/          OPC_RecordChild1, // #1 = $ws
/* 24402*/          OPC_CheckType, MVT::v16i8,
/* 24404*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 24406*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v16i8] } (xor:{ *:[v16i8] } (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>), v16i8:{ *:[v16i8] }:$wt)), immAllOnesV:{ *:[v16i8] }), v16i8:{ *:[v16i8] }:$ws) - Complexity = 87
                    // Dst: (BCLR_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 24414*/        0, /*End of Scope*/
/* 24415*/      /*Scope*/ 119|128,2/*375*/, /*->24792*/
/* 24417*/        OPC_CheckImmAllOnesV,
/* 24418*/        OPC_MoveParent,
/* 24419*/        OPC_MoveChild1,
/* 24420*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 24423*/        OPC_MoveChild0,
/* 24424*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24427*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 24429*/        OPC_MoveParent,
/* 24430*/        OPC_MoveChild1,
/* 24431*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 24434*/        OPC_Scope, 48|128,1/*176*/, /*->24613*/ // 2 children in Scope
/* 24437*/          OPC_RecordChild0, // #0 = $wt
/* 24438*/          OPC_MoveChild1,
/* 24439*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24442*/          OPC_MoveChild0,
/* 24443*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24446*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24448*/          OPC_CheckType, MVT::i32,
/* 24450*/          OPC_MoveParent,
/* 24451*/          OPC_MoveChild1,
/* 24452*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24455*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24457*/          OPC_CheckType, MVT::i32,
/* 24459*/          OPC_MoveParent,
/* 24460*/          OPC_MoveChild2,
/* 24461*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24464*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24466*/          OPC_CheckType, MVT::i32,
/* 24468*/          OPC_MoveParent,
/* 24469*/          OPC_MoveChild3,
/* 24470*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24473*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24475*/          OPC_CheckType, MVT::i32,
/* 24477*/          OPC_MoveParent,
/* 24478*/          OPC_MoveChild4,
/* 24479*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24482*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24484*/          OPC_CheckType, MVT::i32,
/* 24486*/          OPC_MoveParent,
/* 24487*/          OPC_MoveChild5,
/* 24488*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24491*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24493*/          OPC_CheckType, MVT::i32,
/* 24495*/          OPC_MoveParent,
/* 24496*/          OPC_MoveChild6,
/* 24497*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24500*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24502*/          OPC_CheckType, MVT::i32,
/* 24504*/          OPC_MoveParent,
/* 24505*/          OPC_MoveChild7,
/* 24506*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24509*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24511*/          OPC_CheckType, MVT::i32,
/* 24513*/          OPC_MoveParent,
/* 24514*/          OPC_MoveChild, 8,
/* 24516*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24519*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24521*/          OPC_CheckType, MVT::i32,
/* 24523*/          OPC_MoveParent,
/* 24524*/          OPC_MoveChild, 9,
/* 24526*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24529*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24531*/          OPC_CheckType, MVT::i32,
/* 24533*/          OPC_MoveParent,
/* 24534*/          OPC_MoveChild, 10,
/* 24536*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24539*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24541*/          OPC_CheckType, MVT::i32,
/* 24543*/          OPC_MoveParent,
/* 24544*/          OPC_MoveChild, 11,
/* 24546*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24549*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24551*/          OPC_CheckType, MVT::i32,
/* 24553*/          OPC_MoveParent,
/* 24554*/          OPC_MoveChild, 12,
/* 24556*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24559*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24561*/          OPC_CheckType, MVT::i32,
/* 24563*/          OPC_MoveParent,
/* 24564*/          OPC_MoveChild, 13,
/* 24566*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24569*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24571*/          OPC_CheckType, MVT::i32,
/* 24573*/          OPC_MoveParent,
/* 24574*/          OPC_MoveChild, 14,
/* 24576*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24579*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24581*/          OPC_CheckType, MVT::i32,
/* 24583*/          OPC_MoveParent,
/* 24584*/          OPC_MoveChild, 15,
/* 24586*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24589*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24591*/          OPC_CheckType, MVT::i32,
/* 24593*/          OPC_MoveParent,
/* 24594*/          OPC_MoveParent,
/* 24595*/          OPC_CheckType, MVT::v16i8,
/* 24597*/          OPC_MoveParent,
/* 24598*/          OPC_MoveParent,
/* 24599*/          OPC_MoveParent,
/* 24600*/          OPC_RecordChild1, // #1 = $ws
/* 24601*/          OPC_CheckType, MVT::v16i8,
/* 24603*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 24605*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v16i8] } (xor:{ *:[v16i8] } immAllOnesV:{ *:[v16i8] }, (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$wt, (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>)))), v16i8:{ *:[v16i8] }:$ws) - Complexity = 87
                    // Dst: (BCLR_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 24613*/        /*Scope*/ 48|128,1/*176*/, /*->24791*/
/* 24615*/          OPC_MoveChild0,
/* 24616*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24619*/          OPC_MoveChild0,
/* 24620*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24623*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24625*/          OPC_CheckType, MVT::i32,
/* 24627*/          OPC_MoveParent,
/* 24628*/          OPC_MoveChild1,
/* 24629*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24632*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24634*/          OPC_CheckType, MVT::i32,
/* 24636*/          OPC_MoveParent,
/* 24637*/          OPC_MoveChild2,
/* 24638*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24641*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24643*/          OPC_CheckType, MVT::i32,
/* 24645*/          OPC_MoveParent,
/* 24646*/          OPC_MoveChild3,
/* 24647*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24650*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24652*/          OPC_CheckType, MVT::i32,
/* 24654*/          OPC_MoveParent,
/* 24655*/          OPC_MoveChild4,
/* 24656*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24659*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24661*/          OPC_CheckType, MVT::i32,
/* 24663*/          OPC_MoveParent,
/* 24664*/          OPC_MoveChild5,
/* 24665*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24668*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24670*/          OPC_CheckType, MVT::i32,
/* 24672*/          OPC_MoveParent,
/* 24673*/          OPC_MoveChild6,
/* 24674*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24677*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24679*/          OPC_CheckType, MVT::i32,
/* 24681*/          OPC_MoveParent,
/* 24682*/          OPC_MoveChild7,
/* 24683*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24686*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24688*/          OPC_CheckType, MVT::i32,
/* 24690*/          OPC_MoveParent,
/* 24691*/          OPC_MoveChild, 8,
/* 24693*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24696*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24698*/          OPC_CheckType, MVT::i32,
/* 24700*/          OPC_MoveParent,
/* 24701*/          OPC_MoveChild, 9,
/* 24703*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24706*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24708*/          OPC_CheckType, MVT::i32,
/* 24710*/          OPC_MoveParent,
/* 24711*/          OPC_MoveChild, 10,
/* 24713*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24716*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24718*/          OPC_CheckType, MVT::i32,
/* 24720*/          OPC_MoveParent,
/* 24721*/          OPC_MoveChild, 11,
/* 24723*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24726*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24728*/          OPC_CheckType, MVT::i32,
/* 24730*/          OPC_MoveParent,
/* 24731*/          OPC_MoveChild, 12,
/* 24733*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24736*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24738*/          OPC_CheckType, MVT::i32,
/* 24740*/          OPC_MoveParent,
/* 24741*/          OPC_MoveChild, 13,
/* 24743*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24746*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24748*/          OPC_CheckType, MVT::i32,
/* 24750*/          OPC_MoveParent,
/* 24751*/          OPC_MoveChild, 14,
/* 24753*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24756*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24758*/          OPC_CheckType, MVT::i32,
/* 24760*/          OPC_MoveParent,
/* 24761*/          OPC_MoveChild, 15,
/* 24763*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24766*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 24768*/          OPC_CheckType, MVT::i32,
/* 24770*/          OPC_MoveParent,
/* 24771*/          OPC_MoveParent,
/* 24772*/          OPC_RecordChild1, // #0 = $wt
/* 24773*/          OPC_CheckType, MVT::v16i8,
/* 24775*/          OPC_MoveParent,
/* 24776*/          OPC_MoveParent,
/* 24777*/          OPC_MoveParent,
/* 24778*/          OPC_RecordChild1, // #1 = $ws
/* 24779*/          OPC_CheckType, MVT::v16i8,
/* 24781*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 24783*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v16i8] } (xor:{ *:[v16i8] } immAllOnesV:{ *:[v16i8] }, (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>), v16i8:{ *:[v16i8] }:$wt))), v16i8:{ *:[v16i8] }:$ws) - Complexity = 87
                    // Dst: (BCLR_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 24791*/        0, /*End of Scope*/
/* 24792*/      0, /*End of Scope*/
/* 24793*/    /*Scope*/ 53|128,3/*437*/, /*->25232*/
/* 24795*/      OPC_RecordChild0, // #0 = $ws
/* 24796*/      OPC_MoveChild1,
/* 24797*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 24800*/      OPC_MoveChild0,
/* 24801*/      OPC_Scope, 86|128,1/*214*/, /*->25018*/ // 2 children in Scope
/* 24804*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 24807*/        OPC_MoveChild0,
/* 24808*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24811*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 24813*/        OPC_MoveParent,
/* 24814*/        OPC_MoveChild1,
/* 24815*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 24818*/        OPC_Scope, 98, /*->24918*/ // 2 children in Scope
/* 24820*/          OPC_RecordChild0, // #1 = $wt
/* 24821*/          OPC_MoveChild1,
/* 24822*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24825*/          OPC_MoveChild0,
/* 24826*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24829*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24831*/          OPC_CheckType, MVT::i32,
/* 24833*/          OPC_MoveParent,
/* 24834*/          OPC_MoveChild1,
/* 24835*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24838*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24840*/          OPC_CheckType, MVT::i32,
/* 24842*/          OPC_MoveParent,
/* 24843*/          OPC_MoveChild2,
/* 24844*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24847*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24849*/          OPC_CheckType, MVT::i32,
/* 24851*/          OPC_MoveParent,
/* 24852*/          OPC_MoveChild3,
/* 24853*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24856*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24858*/          OPC_CheckType, MVT::i32,
/* 24860*/          OPC_MoveParent,
/* 24861*/          OPC_MoveChild4,
/* 24862*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24865*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24867*/          OPC_CheckType, MVT::i32,
/* 24869*/          OPC_MoveParent,
/* 24870*/          OPC_MoveChild5,
/* 24871*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24874*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24876*/          OPC_CheckType, MVT::i32,
/* 24878*/          OPC_MoveParent,
/* 24879*/          OPC_MoveChild6,
/* 24880*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24883*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24885*/          OPC_CheckType, MVT::i32,
/* 24887*/          OPC_MoveParent,
/* 24888*/          OPC_MoveChild7,
/* 24889*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24892*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24894*/          OPC_CheckType, MVT::i32,
/* 24896*/          OPC_MoveParent,
/* 24897*/          OPC_MoveParent,
/* 24898*/          OPC_CheckType, MVT::v8i16,
/* 24900*/          OPC_MoveParent,
/* 24901*/          OPC_MoveParent,
/* 24902*/          OPC_MoveChild1,
/* 24903*/          OPC_CheckImmAllOnesV,
/* 24904*/          OPC_MoveParent,
/* 24905*/          OPC_MoveParent,
/* 24906*/          OPC_CheckType, MVT::v8i16,
/* 24908*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 24910*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (xor:{ *:[v8i16] } (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$wt, (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>))), immAllOnesV:{ *:[v8i16] })) - Complexity = 55
                    // Dst: (BCLR_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 24918*/        /*Scope*/ 98, /*->25017*/
/* 24919*/          OPC_MoveChild0,
/* 24920*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24923*/          OPC_MoveChild0,
/* 24924*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24927*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24929*/          OPC_CheckType, MVT::i32,
/* 24931*/          OPC_MoveParent,
/* 24932*/          OPC_MoveChild1,
/* 24933*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24936*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24938*/          OPC_CheckType, MVT::i32,
/* 24940*/          OPC_MoveParent,
/* 24941*/          OPC_MoveChild2,
/* 24942*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24945*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24947*/          OPC_CheckType, MVT::i32,
/* 24949*/          OPC_MoveParent,
/* 24950*/          OPC_MoveChild3,
/* 24951*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24954*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24956*/          OPC_CheckType, MVT::i32,
/* 24958*/          OPC_MoveParent,
/* 24959*/          OPC_MoveChild4,
/* 24960*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24963*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24965*/          OPC_CheckType, MVT::i32,
/* 24967*/          OPC_MoveParent,
/* 24968*/          OPC_MoveChild5,
/* 24969*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24972*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24974*/          OPC_CheckType, MVT::i32,
/* 24976*/          OPC_MoveParent,
/* 24977*/          OPC_MoveChild6,
/* 24978*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24981*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24983*/          OPC_CheckType, MVT::i32,
/* 24985*/          OPC_MoveParent,
/* 24986*/          OPC_MoveChild7,
/* 24987*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24990*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 24992*/          OPC_CheckType, MVT::i32,
/* 24994*/          OPC_MoveParent,
/* 24995*/          OPC_MoveParent,
/* 24996*/          OPC_RecordChild1, // #1 = $wt
/* 24997*/          OPC_CheckType, MVT::v8i16,
/* 24999*/          OPC_MoveParent,
/* 25000*/          OPC_MoveParent,
/* 25001*/          OPC_MoveChild1,
/* 25002*/          OPC_CheckImmAllOnesV,
/* 25003*/          OPC_MoveParent,
/* 25004*/          OPC_MoveParent,
/* 25005*/          OPC_CheckType, MVT::v8i16,
/* 25007*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25009*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (xor:{ *:[v8i16] } (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>), v8i16:{ *:[v8i16] }:$wt)), immAllOnesV:{ *:[v8i16] })) - Complexity = 55
                    // Dst: (BCLR_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 25017*/        0, /*End of Scope*/
/* 25018*/      /*Scope*/ 83|128,1/*211*/, /*->25231*/
/* 25020*/        OPC_CheckImmAllOnesV,
/* 25021*/        OPC_MoveParent,
/* 25022*/        OPC_MoveChild1,
/* 25023*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 25026*/        OPC_MoveChild0,
/* 25027*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25030*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 25032*/        OPC_MoveParent,
/* 25033*/        OPC_MoveChild1,
/* 25034*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 25037*/        OPC_Scope, 95, /*->25134*/ // 2 children in Scope
/* 25039*/          OPC_RecordChild0, // #1 = $wt
/* 25040*/          OPC_MoveChild1,
/* 25041*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25044*/          OPC_MoveChild0,
/* 25045*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25048*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25050*/          OPC_CheckType, MVT::i32,
/* 25052*/          OPC_MoveParent,
/* 25053*/          OPC_MoveChild1,
/* 25054*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25057*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25059*/          OPC_CheckType, MVT::i32,
/* 25061*/          OPC_MoveParent,
/* 25062*/          OPC_MoveChild2,
/* 25063*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25066*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25068*/          OPC_CheckType, MVT::i32,
/* 25070*/          OPC_MoveParent,
/* 25071*/          OPC_MoveChild3,
/* 25072*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25075*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25077*/          OPC_CheckType, MVT::i32,
/* 25079*/          OPC_MoveParent,
/* 25080*/          OPC_MoveChild4,
/* 25081*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25084*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25086*/          OPC_CheckType, MVT::i32,
/* 25088*/          OPC_MoveParent,
/* 25089*/          OPC_MoveChild5,
/* 25090*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25093*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25095*/          OPC_CheckType, MVT::i32,
/* 25097*/          OPC_MoveParent,
/* 25098*/          OPC_MoveChild6,
/* 25099*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25102*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25104*/          OPC_CheckType, MVT::i32,
/* 25106*/          OPC_MoveParent,
/* 25107*/          OPC_MoveChild7,
/* 25108*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25111*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25113*/          OPC_CheckType, MVT::i32,
/* 25115*/          OPC_MoveParent,
/* 25116*/          OPC_MoveParent,
/* 25117*/          OPC_CheckType, MVT::v8i16,
/* 25119*/          OPC_MoveParent,
/* 25120*/          OPC_MoveParent,
/* 25121*/          OPC_MoveParent,
/* 25122*/          OPC_CheckType, MVT::v8i16,
/* 25124*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25126*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (xor:{ *:[v8i16] } immAllOnesV:{ *:[v8i16] }, (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$wt, (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>))))) - Complexity = 55
                    // Dst: (BCLR_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 25134*/        /*Scope*/ 95, /*->25230*/
/* 25135*/          OPC_MoveChild0,
/* 25136*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25139*/          OPC_MoveChild0,
/* 25140*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25143*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25145*/          OPC_CheckType, MVT::i32,
/* 25147*/          OPC_MoveParent,
/* 25148*/          OPC_MoveChild1,
/* 25149*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25152*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25154*/          OPC_CheckType, MVT::i32,
/* 25156*/          OPC_MoveParent,
/* 25157*/          OPC_MoveChild2,
/* 25158*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25161*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25163*/          OPC_CheckType, MVT::i32,
/* 25165*/          OPC_MoveParent,
/* 25166*/          OPC_MoveChild3,
/* 25167*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25170*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25172*/          OPC_CheckType, MVT::i32,
/* 25174*/          OPC_MoveParent,
/* 25175*/          OPC_MoveChild4,
/* 25176*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25179*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25181*/          OPC_CheckType, MVT::i32,
/* 25183*/          OPC_MoveParent,
/* 25184*/          OPC_MoveChild5,
/* 25185*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25188*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25190*/          OPC_CheckType, MVT::i32,
/* 25192*/          OPC_MoveParent,
/* 25193*/          OPC_MoveChild6,
/* 25194*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25197*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25199*/          OPC_CheckType, MVT::i32,
/* 25201*/          OPC_MoveParent,
/* 25202*/          OPC_MoveChild7,
/* 25203*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25206*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25208*/          OPC_CheckType, MVT::i32,
/* 25210*/          OPC_MoveParent,
/* 25211*/          OPC_MoveParent,
/* 25212*/          OPC_RecordChild1, // #1 = $wt
/* 25213*/          OPC_CheckType, MVT::v8i16,
/* 25215*/          OPC_MoveParent,
/* 25216*/          OPC_MoveParent,
/* 25217*/          OPC_MoveParent,
/* 25218*/          OPC_CheckType, MVT::v8i16,
/* 25220*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25222*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (xor:{ *:[v8i16] } immAllOnesV:{ *:[v8i16] }, (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>), v8i16:{ *:[v8i16] }:$wt)))) - Complexity = 55
                    // Dst: (BCLR_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 25230*/        0, /*End of Scope*/
/* 25231*/      0, /*End of Scope*/
/* 25232*/    /*Scope*/ 56|128,3/*440*/, /*->25674*/
/* 25234*/      OPC_MoveChild0,
/* 25235*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 25238*/      OPC_MoveChild0,
/* 25239*/      OPC_Scope, 88|128,1/*216*/, /*->25458*/ // 2 children in Scope
/* 25242*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 25245*/        OPC_MoveChild0,
/* 25246*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25249*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 25251*/        OPC_MoveParent,
/* 25252*/        OPC_MoveChild1,
/* 25253*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 25256*/        OPC_Scope, 99, /*->25357*/ // 2 children in Scope
/* 25258*/          OPC_RecordChild0, // #0 = $wt
/* 25259*/          OPC_MoveChild1,
/* 25260*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25263*/          OPC_MoveChild0,
/* 25264*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25267*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25269*/          OPC_CheckType, MVT::i32,
/* 25271*/          OPC_MoveParent,
/* 25272*/          OPC_MoveChild1,
/* 25273*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25276*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25278*/          OPC_CheckType, MVT::i32,
/* 25280*/          OPC_MoveParent,
/* 25281*/          OPC_MoveChild2,
/* 25282*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25285*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25287*/          OPC_CheckType, MVT::i32,
/* 25289*/          OPC_MoveParent,
/* 25290*/          OPC_MoveChild3,
/* 25291*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25294*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25296*/          OPC_CheckType, MVT::i32,
/* 25298*/          OPC_MoveParent,
/* 25299*/          OPC_MoveChild4,
/* 25300*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25303*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25305*/          OPC_CheckType, MVT::i32,
/* 25307*/          OPC_MoveParent,
/* 25308*/          OPC_MoveChild5,
/* 25309*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25312*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25314*/          OPC_CheckType, MVT::i32,
/* 25316*/          OPC_MoveParent,
/* 25317*/          OPC_MoveChild6,
/* 25318*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25321*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25323*/          OPC_CheckType, MVT::i32,
/* 25325*/          OPC_MoveParent,
/* 25326*/          OPC_MoveChild7,
/* 25327*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25330*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25332*/          OPC_CheckType, MVT::i32,
/* 25334*/          OPC_MoveParent,
/* 25335*/          OPC_MoveParent,
/* 25336*/          OPC_CheckType, MVT::v8i16,
/* 25338*/          OPC_MoveParent,
/* 25339*/          OPC_MoveParent,
/* 25340*/          OPC_MoveChild1,
/* 25341*/          OPC_CheckImmAllOnesV,
/* 25342*/          OPC_MoveParent,
/* 25343*/          OPC_MoveParent,
/* 25344*/          OPC_RecordChild1, // #1 = $ws
/* 25345*/          OPC_CheckType, MVT::v8i16,
/* 25347*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25349*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v8i16] } (xor:{ *:[v8i16] } (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$wt, (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>))), immAllOnesV:{ *:[v8i16] }), v8i16:{ *:[v8i16] }:$ws) - Complexity = 55
                    // Dst: (BCLR_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 25357*/        /*Scope*/ 99, /*->25457*/
/* 25358*/          OPC_MoveChild0,
/* 25359*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25362*/          OPC_MoveChild0,
/* 25363*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25366*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25368*/          OPC_CheckType, MVT::i32,
/* 25370*/          OPC_MoveParent,
/* 25371*/          OPC_MoveChild1,
/* 25372*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25375*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25377*/          OPC_CheckType, MVT::i32,
/* 25379*/          OPC_MoveParent,
/* 25380*/          OPC_MoveChild2,
/* 25381*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25384*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25386*/          OPC_CheckType, MVT::i32,
/* 25388*/          OPC_MoveParent,
/* 25389*/          OPC_MoveChild3,
/* 25390*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25393*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25395*/          OPC_CheckType, MVT::i32,
/* 25397*/          OPC_MoveParent,
/* 25398*/          OPC_MoveChild4,
/* 25399*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25402*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25404*/          OPC_CheckType, MVT::i32,
/* 25406*/          OPC_MoveParent,
/* 25407*/          OPC_MoveChild5,
/* 25408*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25411*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25413*/          OPC_CheckType, MVT::i32,
/* 25415*/          OPC_MoveParent,
/* 25416*/          OPC_MoveChild6,
/* 25417*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25420*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25422*/          OPC_CheckType, MVT::i32,
/* 25424*/          OPC_MoveParent,
/* 25425*/          OPC_MoveChild7,
/* 25426*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25429*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25431*/          OPC_CheckType, MVT::i32,
/* 25433*/          OPC_MoveParent,
/* 25434*/          OPC_MoveParent,
/* 25435*/          OPC_RecordChild1, // #0 = $wt
/* 25436*/          OPC_CheckType, MVT::v8i16,
/* 25438*/          OPC_MoveParent,
/* 25439*/          OPC_MoveParent,
/* 25440*/          OPC_MoveChild1,
/* 25441*/          OPC_CheckImmAllOnesV,
/* 25442*/          OPC_MoveParent,
/* 25443*/          OPC_MoveParent,
/* 25444*/          OPC_RecordChild1, // #1 = $ws
/* 25445*/          OPC_CheckType, MVT::v8i16,
/* 25447*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25449*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v8i16] } (xor:{ *:[v8i16] } (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>), v8i16:{ *:[v8i16] }:$wt)), immAllOnesV:{ *:[v8i16] }), v8i16:{ *:[v8i16] }:$ws) - Complexity = 55
                    // Dst: (BCLR_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 25457*/        0, /*End of Scope*/
/* 25458*/      /*Scope*/ 85|128,1/*213*/, /*->25673*/
/* 25460*/        OPC_CheckImmAllOnesV,
/* 25461*/        OPC_MoveParent,
/* 25462*/        OPC_MoveChild1,
/* 25463*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 25466*/        OPC_MoveChild0,
/* 25467*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25470*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 25472*/        OPC_MoveParent,
/* 25473*/        OPC_MoveChild1,
/* 25474*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 25477*/        OPC_Scope, 96, /*->25575*/ // 2 children in Scope
/* 25479*/          OPC_RecordChild0, // #0 = $wt
/* 25480*/          OPC_MoveChild1,
/* 25481*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25484*/          OPC_MoveChild0,
/* 25485*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25488*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25490*/          OPC_CheckType, MVT::i32,
/* 25492*/          OPC_MoveParent,
/* 25493*/          OPC_MoveChild1,
/* 25494*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25497*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25499*/          OPC_CheckType, MVT::i32,
/* 25501*/          OPC_MoveParent,
/* 25502*/          OPC_MoveChild2,
/* 25503*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25506*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25508*/          OPC_CheckType, MVT::i32,
/* 25510*/          OPC_MoveParent,
/* 25511*/          OPC_MoveChild3,
/* 25512*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25515*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25517*/          OPC_CheckType, MVT::i32,
/* 25519*/          OPC_MoveParent,
/* 25520*/          OPC_MoveChild4,
/* 25521*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25524*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25526*/          OPC_CheckType, MVT::i32,
/* 25528*/          OPC_MoveParent,
/* 25529*/          OPC_MoveChild5,
/* 25530*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25533*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25535*/          OPC_CheckType, MVT::i32,
/* 25537*/          OPC_MoveParent,
/* 25538*/          OPC_MoveChild6,
/* 25539*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25542*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25544*/          OPC_CheckType, MVT::i32,
/* 25546*/          OPC_MoveParent,
/* 25547*/          OPC_MoveChild7,
/* 25548*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25551*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25553*/          OPC_CheckType, MVT::i32,
/* 25555*/          OPC_MoveParent,
/* 25556*/          OPC_MoveParent,
/* 25557*/          OPC_CheckType, MVT::v8i16,
/* 25559*/          OPC_MoveParent,
/* 25560*/          OPC_MoveParent,
/* 25561*/          OPC_MoveParent,
/* 25562*/          OPC_RecordChild1, // #1 = $ws
/* 25563*/          OPC_CheckType, MVT::v8i16,
/* 25565*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25567*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v8i16] } (xor:{ *:[v8i16] } immAllOnesV:{ *:[v8i16] }, (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$wt, (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>)))), v8i16:{ *:[v8i16] }:$ws) - Complexity = 55
                    // Dst: (BCLR_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 25575*/        /*Scope*/ 96, /*->25672*/
/* 25576*/          OPC_MoveChild0,
/* 25577*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25580*/          OPC_MoveChild0,
/* 25581*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25584*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25586*/          OPC_CheckType, MVT::i32,
/* 25588*/          OPC_MoveParent,
/* 25589*/          OPC_MoveChild1,
/* 25590*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25593*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25595*/          OPC_CheckType, MVT::i32,
/* 25597*/          OPC_MoveParent,
/* 25598*/          OPC_MoveChild2,
/* 25599*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25602*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25604*/          OPC_CheckType, MVT::i32,
/* 25606*/          OPC_MoveParent,
/* 25607*/          OPC_MoveChild3,
/* 25608*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25611*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25613*/          OPC_CheckType, MVT::i32,
/* 25615*/          OPC_MoveParent,
/* 25616*/          OPC_MoveChild4,
/* 25617*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25620*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25622*/          OPC_CheckType, MVT::i32,
/* 25624*/          OPC_MoveParent,
/* 25625*/          OPC_MoveChild5,
/* 25626*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25629*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25631*/          OPC_CheckType, MVT::i32,
/* 25633*/          OPC_MoveParent,
/* 25634*/          OPC_MoveChild6,
/* 25635*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25638*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25640*/          OPC_CheckType, MVT::i32,
/* 25642*/          OPC_MoveParent,
/* 25643*/          OPC_MoveChild7,
/* 25644*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25647*/          OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 25649*/          OPC_CheckType, MVT::i32,
/* 25651*/          OPC_MoveParent,
/* 25652*/          OPC_MoveParent,
/* 25653*/          OPC_RecordChild1, // #0 = $wt
/* 25654*/          OPC_CheckType, MVT::v8i16,
/* 25656*/          OPC_MoveParent,
/* 25657*/          OPC_MoveParent,
/* 25658*/          OPC_MoveParent,
/* 25659*/          OPC_RecordChild1, // #1 = $ws
/* 25660*/          OPC_CheckType, MVT::v8i16,
/* 25662*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25664*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v8i16] } (xor:{ *:[v8i16] } immAllOnesV:{ *:[v8i16] }, (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>), v8i16:{ *:[v8i16] }:$wt))), v8i16:{ *:[v8i16] }:$ws) - Complexity = 55
                    // Dst: (BCLR_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 25672*/        0, /*End of Scope*/
/* 25673*/      0, /*End of Scope*/
/* 25674*/    /*Scope*/ 37|128,2/*293*/, /*->25969*/
/* 25676*/      OPC_RecordChild0, // #0 = $ws
/* 25677*/      OPC_MoveChild1,
/* 25678*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 25681*/      OPC_MoveChild0,
/* 25682*/      OPC_Scope, 14|128,1/*142*/, /*->25827*/ // 2 children in Scope
/* 25685*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 25688*/        OPC_MoveChild0,
/* 25689*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25692*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 25694*/        OPC_MoveParent,
/* 25695*/        OPC_MoveChild1,
/* 25696*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 25699*/        OPC_Scope, 62, /*->25763*/ // 2 children in Scope
/* 25701*/          OPC_RecordChild0, // #1 = $wt
/* 25702*/          OPC_MoveChild1,
/* 25703*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25706*/          OPC_MoveChild0,
/* 25707*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25710*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25712*/          OPC_CheckType, MVT::i32,
/* 25714*/          OPC_MoveParent,
/* 25715*/          OPC_MoveChild1,
/* 25716*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25719*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25721*/          OPC_CheckType, MVT::i32,
/* 25723*/          OPC_MoveParent,
/* 25724*/          OPC_MoveChild2,
/* 25725*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25728*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25730*/          OPC_CheckType, MVT::i32,
/* 25732*/          OPC_MoveParent,
/* 25733*/          OPC_MoveChild3,
/* 25734*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25737*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25739*/          OPC_CheckType, MVT::i32,
/* 25741*/          OPC_MoveParent,
/* 25742*/          OPC_MoveParent,
/* 25743*/          OPC_CheckType, MVT::v4i32,
/* 25745*/          OPC_MoveParent,
/* 25746*/          OPC_MoveParent,
/* 25747*/          OPC_MoveChild1,
/* 25748*/          OPC_CheckImmAllOnesV,
/* 25749*/          OPC_MoveParent,
/* 25750*/          OPC_MoveParent,
/* 25751*/          OPC_CheckType, MVT::v4i32,
/* 25753*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25755*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (xor:{ *:[v4i32] } (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$wt, (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>))), immAllOnesV:{ *:[v4i32] })) - Complexity = 39
                    // Dst: (BCLR_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 25763*/        /*Scope*/ 62, /*->25826*/
/* 25764*/          OPC_MoveChild0,
/* 25765*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25768*/          OPC_MoveChild0,
/* 25769*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25772*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25774*/          OPC_CheckType, MVT::i32,
/* 25776*/          OPC_MoveParent,
/* 25777*/          OPC_MoveChild1,
/* 25778*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25781*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25783*/          OPC_CheckType, MVT::i32,
/* 25785*/          OPC_MoveParent,
/* 25786*/          OPC_MoveChild2,
/* 25787*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25790*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25792*/          OPC_CheckType, MVT::i32,
/* 25794*/          OPC_MoveParent,
/* 25795*/          OPC_MoveChild3,
/* 25796*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25799*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25801*/          OPC_CheckType, MVT::i32,
/* 25803*/          OPC_MoveParent,
/* 25804*/          OPC_MoveParent,
/* 25805*/          OPC_RecordChild1, // #1 = $wt
/* 25806*/          OPC_CheckType, MVT::v4i32,
/* 25808*/          OPC_MoveParent,
/* 25809*/          OPC_MoveParent,
/* 25810*/          OPC_MoveChild1,
/* 25811*/          OPC_CheckImmAllOnesV,
/* 25812*/          OPC_MoveParent,
/* 25813*/          OPC_MoveParent,
/* 25814*/          OPC_CheckType, MVT::v4i32,
/* 25816*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25818*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (xor:{ *:[v4i32] } (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>), v4i32:{ *:[v4i32] }:$wt)), immAllOnesV:{ *:[v4i32] })) - Complexity = 39
                    // Dst: (BCLR_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 25826*/        0, /*End of Scope*/
/* 25827*/      /*Scope*/ 11|128,1/*139*/, /*->25968*/
/* 25829*/        OPC_CheckImmAllOnesV,
/* 25830*/        OPC_MoveParent,
/* 25831*/        OPC_MoveChild1,
/* 25832*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 25835*/        OPC_MoveChild0,
/* 25836*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25839*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 25841*/        OPC_MoveParent,
/* 25842*/        OPC_MoveChild1,
/* 25843*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 25846*/        OPC_Scope, 59, /*->25907*/ // 2 children in Scope
/* 25848*/          OPC_RecordChild0, // #1 = $wt
/* 25849*/          OPC_MoveChild1,
/* 25850*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25853*/          OPC_MoveChild0,
/* 25854*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25857*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25859*/          OPC_CheckType, MVT::i32,
/* 25861*/          OPC_MoveParent,
/* 25862*/          OPC_MoveChild1,
/* 25863*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25866*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25868*/          OPC_CheckType, MVT::i32,
/* 25870*/          OPC_MoveParent,
/* 25871*/          OPC_MoveChild2,
/* 25872*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25875*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25877*/          OPC_CheckType, MVT::i32,
/* 25879*/          OPC_MoveParent,
/* 25880*/          OPC_MoveChild3,
/* 25881*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25884*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25886*/          OPC_CheckType, MVT::i32,
/* 25888*/          OPC_MoveParent,
/* 25889*/          OPC_MoveParent,
/* 25890*/          OPC_CheckType, MVT::v4i32,
/* 25892*/          OPC_MoveParent,
/* 25893*/          OPC_MoveParent,
/* 25894*/          OPC_MoveParent,
/* 25895*/          OPC_CheckType, MVT::v4i32,
/* 25897*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25899*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (xor:{ *:[v4i32] } immAllOnesV:{ *:[v4i32] }, (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$wt, (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>))))) - Complexity = 39
                    // Dst: (BCLR_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 25907*/        /*Scope*/ 59, /*->25967*/
/* 25908*/          OPC_MoveChild0,
/* 25909*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25912*/          OPC_MoveChild0,
/* 25913*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25916*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25918*/          OPC_CheckType, MVT::i32,
/* 25920*/          OPC_MoveParent,
/* 25921*/          OPC_MoveChild1,
/* 25922*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25925*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25927*/          OPC_CheckType, MVT::i32,
/* 25929*/          OPC_MoveParent,
/* 25930*/          OPC_MoveChild2,
/* 25931*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25934*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25936*/          OPC_CheckType, MVT::i32,
/* 25938*/          OPC_MoveParent,
/* 25939*/          OPC_MoveChild3,
/* 25940*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25943*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 25945*/          OPC_CheckType, MVT::i32,
/* 25947*/          OPC_MoveParent,
/* 25948*/          OPC_MoveParent,
/* 25949*/          OPC_RecordChild1, // #1 = $wt
/* 25950*/          OPC_CheckType, MVT::v4i32,
/* 25952*/          OPC_MoveParent,
/* 25953*/          OPC_MoveParent,
/* 25954*/          OPC_MoveParent,
/* 25955*/          OPC_CheckType, MVT::v4i32,
/* 25957*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25959*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (xor:{ *:[v4i32] } immAllOnesV:{ *:[v4i32] }, (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>), v4i32:{ *:[v4i32] }:$wt)))) - Complexity = 39
                    // Dst: (BCLR_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 25967*/        0, /*End of Scope*/
/* 25968*/      0, /*End of Scope*/
/* 25969*/    /*Scope*/ 40|128,2/*296*/, /*->26267*/
/* 25971*/      OPC_MoveChild0,
/* 25972*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 25975*/      OPC_MoveChild0,
/* 25976*/      OPC_Scope, 16|128,1/*144*/, /*->26123*/ // 2 children in Scope
/* 25979*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 25982*/        OPC_MoveChild0,
/* 25983*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25986*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 25988*/        OPC_MoveParent,
/* 25989*/        OPC_MoveChild1,
/* 25990*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 25993*/        OPC_Scope, 63, /*->26058*/ // 2 children in Scope
/* 25995*/          OPC_RecordChild0, // #0 = $wt
/* 25996*/          OPC_MoveChild1,
/* 25997*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26000*/          OPC_MoveChild0,
/* 26001*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26004*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26006*/          OPC_CheckType, MVT::i32,
/* 26008*/          OPC_MoveParent,
/* 26009*/          OPC_MoveChild1,
/* 26010*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26013*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26015*/          OPC_CheckType, MVT::i32,
/* 26017*/          OPC_MoveParent,
/* 26018*/          OPC_MoveChild2,
/* 26019*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26022*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26024*/          OPC_CheckType, MVT::i32,
/* 26026*/          OPC_MoveParent,
/* 26027*/          OPC_MoveChild3,
/* 26028*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26031*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26033*/          OPC_CheckType, MVT::i32,
/* 26035*/          OPC_MoveParent,
/* 26036*/          OPC_MoveParent,
/* 26037*/          OPC_CheckType, MVT::v4i32,
/* 26039*/          OPC_MoveParent,
/* 26040*/          OPC_MoveParent,
/* 26041*/          OPC_MoveChild1,
/* 26042*/          OPC_CheckImmAllOnesV,
/* 26043*/          OPC_MoveParent,
/* 26044*/          OPC_MoveParent,
/* 26045*/          OPC_RecordChild1, // #1 = $ws
/* 26046*/          OPC_CheckType, MVT::v4i32,
/* 26048*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26050*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v4i32] } (xor:{ *:[v4i32] } (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$wt, (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>))), immAllOnesV:{ *:[v4i32] }), v4i32:{ *:[v4i32] }:$ws) - Complexity = 39
                    // Dst: (BCLR_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 26058*/        /*Scope*/ 63, /*->26122*/
/* 26059*/          OPC_MoveChild0,
/* 26060*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26063*/          OPC_MoveChild0,
/* 26064*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26067*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26069*/          OPC_CheckType, MVT::i32,
/* 26071*/          OPC_MoveParent,
/* 26072*/          OPC_MoveChild1,
/* 26073*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26076*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26078*/          OPC_CheckType, MVT::i32,
/* 26080*/          OPC_MoveParent,
/* 26081*/          OPC_MoveChild2,
/* 26082*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26085*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26087*/          OPC_CheckType, MVT::i32,
/* 26089*/          OPC_MoveParent,
/* 26090*/          OPC_MoveChild3,
/* 26091*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26094*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26096*/          OPC_CheckType, MVT::i32,
/* 26098*/          OPC_MoveParent,
/* 26099*/          OPC_MoveParent,
/* 26100*/          OPC_RecordChild1, // #0 = $wt
/* 26101*/          OPC_CheckType, MVT::v4i32,
/* 26103*/          OPC_MoveParent,
/* 26104*/          OPC_MoveParent,
/* 26105*/          OPC_MoveChild1,
/* 26106*/          OPC_CheckImmAllOnesV,
/* 26107*/          OPC_MoveParent,
/* 26108*/          OPC_MoveParent,
/* 26109*/          OPC_RecordChild1, // #1 = $ws
/* 26110*/          OPC_CheckType, MVT::v4i32,
/* 26112*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26114*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v4i32] } (xor:{ *:[v4i32] } (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>), v4i32:{ *:[v4i32] }:$wt)), immAllOnesV:{ *:[v4i32] }), v4i32:{ *:[v4i32] }:$ws) - Complexity = 39
                    // Dst: (BCLR_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 26122*/        0, /*End of Scope*/
/* 26123*/      /*Scope*/ 13|128,1/*141*/, /*->26266*/
/* 26125*/        OPC_CheckImmAllOnesV,
/* 26126*/        OPC_MoveParent,
/* 26127*/        OPC_MoveChild1,
/* 26128*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 26131*/        OPC_MoveChild0,
/* 26132*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26135*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 26137*/        OPC_MoveParent,
/* 26138*/        OPC_MoveChild1,
/* 26139*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 26142*/        OPC_Scope, 60, /*->26204*/ // 2 children in Scope
/* 26144*/          OPC_RecordChild0, // #0 = $wt
/* 26145*/          OPC_MoveChild1,
/* 26146*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26149*/          OPC_MoveChild0,
/* 26150*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26153*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26155*/          OPC_CheckType, MVT::i32,
/* 26157*/          OPC_MoveParent,
/* 26158*/          OPC_MoveChild1,
/* 26159*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26162*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26164*/          OPC_CheckType, MVT::i32,
/* 26166*/          OPC_MoveParent,
/* 26167*/          OPC_MoveChild2,
/* 26168*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26171*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26173*/          OPC_CheckType, MVT::i32,
/* 26175*/          OPC_MoveParent,
/* 26176*/          OPC_MoveChild3,
/* 26177*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26180*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26182*/          OPC_CheckType, MVT::i32,
/* 26184*/          OPC_MoveParent,
/* 26185*/          OPC_MoveParent,
/* 26186*/          OPC_CheckType, MVT::v4i32,
/* 26188*/          OPC_MoveParent,
/* 26189*/          OPC_MoveParent,
/* 26190*/          OPC_MoveParent,
/* 26191*/          OPC_RecordChild1, // #1 = $ws
/* 26192*/          OPC_CheckType, MVT::v4i32,
/* 26194*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26196*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v4i32] } (xor:{ *:[v4i32] } immAllOnesV:{ *:[v4i32] }, (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$wt, (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>)))), v4i32:{ *:[v4i32] }:$ws) - Complexity = 39
                    // Dst: (BCLR_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 26204*/        /*Scope*/ 60, /*->26265*/
/* 26205*/          OPC_MoveChild0,
/* 26206*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26209*/          OPC_MoveChild0,
/* 26210*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26213*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26215*/          OPC_CheckType, MVT::i32,
/* 26217*/          OPC_MoveParent,
/* 26218*/          OPC_MoveChild1,
/* 26219*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26222*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26224*/          OPC_CheckType, MVT::i32,
/* 26226*/          OPC_MoveParent,
/* 26227*/          OPC_MoveChild2,
/* 26228*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26231*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26233*/          OPC_CheckType, MVT::i32,
/* 26235*/          OPC_MoveParent,
/* 26236*/          OPC_MoveChild3,
/* 26237*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26240*/          OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 26242*/          OPC_CheckType, MVT::i32,
/* 26244*/          OPC_MoveParent,
/* 26245*/          OPC_MoveParent,
/* 26246*/          OPC_RecordChild1, // #0 = $wt
/* 26247*/          OPC_CheckType, MVT::v4i32,
/* 26249*/          OPC_MoveParent,
/* 26250*/          OPC_MoveParent,
/* 26251*/          OPC_MoveParent,
/* 26252*/          OPC_RecordChild1, // #1 = $ws
/* 26253*/          OPC_CheckType, MVT::v4i32,
/* 26255*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26257*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v4i32] } (xor:{ *:[v4i32] } immAllOnesV:{ *:[v4i32] }, (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>), v4i32:{ *:[v4i32] }:$wt))), v4i32:{ *:[v4i32] }:$ws) - Complexity = 39
                    // Dst: (BCLR_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 26265*/        0, /*End of Scope*/
/* 26266*/      0, /*End of Scope*/
/* 26267*/    /*Scope*/ 88|128,1/*216*/, /*->26485*/
/* 26269*/      OPC_RecordChild0, // #0 = $ws
/* 26270*/      OPC_MoveChild1,
/* 26271*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 26274*/      OPC_MoveChild0,
/* 26275*/      OPC_SwitchOpcode /*2 cases */, 106, TARGET_VAL(ISD::SHL),// ->26385
/* 26279*/        OPC_MoveChild0,
/* 26280*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26283*/        OPC_MoveChild0,
/* 26284*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26287*/        OPC_CheckType, MVT::v4i32,
/* 26289*/        OPC_MoveParent,
/* 26290*/        OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 26292*/        OPC_MoveParent,
/* 26293*/        OPC_MoveChild1,
/* 26294*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 26297*/        OPC_Scope, 42, /*->26341*/ // 2 children in Scope
/* 26299*/          OPC_RecordChild0, // #1 = $wt
/* 26300*/          OPC_MoveChild1,
/* 26301*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26304*/          OPC_MoveChild0,
/* 26305*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26308*/          OPC_CheckType, MVT::v4i32,
/* 26310*/          OPC_MoveParent,
/* 26311*/          OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 26313*/          OPC_MoveParent,
/* 26314*/          OPC_CheckType, MVT::v2i64,
/* 26316*/          OPC_MoveParent,
/* 26317*/          OPC_MoveParent,
/* 26318*/          OPC_MoveChild1,
/* 26319*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26322*/          OPC_MoveChild0,
/* 26323*/          OPC_CheckImmAllOnesV,
/* 26324*/          OPC_CheckType, MVT::v4i32,
/* 26326*/          OPC_MoveParent,
/* 26327*/          OPC_MoveParent,
/* 26328*/          OPC_MoveParent,
/* 26329*/          OPC_CheckType, MVT::v2i64,
/* 26331*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26333*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (xor:{ *:[v2i64] } (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$wt, (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>)), (bitconvert:{ *:[v2i64] } immAllOnesV:{ *:[v4i32] }))) - Complexity = 33
                    // Dst: (BCLR_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 26341*/        /*Scope*/ 42, /*->26384*/
/* 26342*/          OPC_MoveChild0,
/* 26343*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26346*/          OPC_MoveChild0,
/* 26347*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26350*/          OPC_CheckType, MVT::v4i32,
/* 26352*/          OPC_MoveParent,
/* 26353*/          OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 26355*/          OPC_MoveParent,
/* 26356*/          OPC_RecordChild1, // #1 = $wt
/* 26357*/          OPC_CheckType, MVT::v2i64,
/* 26359*/          OPC_MoveParent,
/* 26360*/          OPC_MoveParent,
/* 26361*/          OPC_MoveChild1,
/* 26362*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26365*/          OPC_MoveChild0,
/* 26366*/          OPC_CheckImmAllOnesV,
/* 26367*/          OPC_CheckType, MVT::v4i32,
/* 26369*/          OPC_MoveParent,
/* 26370*/          OPC_MoveParent,
/* 26371*/          OPC_MoveParent,
/* 26372*/          OPC_CheckType, MVT::v2i64,
/* 26374*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26376*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (xor:{ *:[v2i64] } (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>, v2i64:{ *:[v2i64] }:$wt)), (bitconvert:{ *:[v2i64] } immAllOnesV:{ *:[v4i32] }))) - Complexity = 33
                    // Dst: (BCLR_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 26384*/        0, /*End of Scope*/
/* 26385*/      /*SwitchOpcode*/ 96, TARGET_VAL(ISD::BITCAST),// ->26484
/* 26388*/        OPC_MoveChild0,
/* 26389*/        OPC_CheckImmAllOnesV,
/* 26390*/        OPC_CheckType, MVT::v4i32,
/* 26392*/        OPC_MoveParent,
/* 26393*/        OPC_MoveParent,
/* 26394*/        OPC_MoveChild1,
/* 26395*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 26398*/        OPC_MoveChild0,
/* 26399*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26402*/        OPC_MoveChild0,
/* 26403*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26406*/        OPC_CheckType, MVT::v4i32,
/* 26408*/        OPC_MoveParent,
/* 26409*/        OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 26411*/        OPC_MoveParent,
/* 26412*/        OPC_MoveChild1,
/* 26413*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 26416*/        OPC_Scope, 32, /*->26450*/ // 2 children in Scope
/* 26418*/          OPC_RecordChild0, // #1 = $wt
/* 26419*/          OPC_MoveChild1,
/* 26420*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26423*/          OPC_MoveChild0,
/* 26424*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26427*/          OPC_CheckType, MVT::v4i32,
/* 26429*/          OPC_MoveParent,
/* 26430*/          OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 26432*/          OPC_MoveParent,
/* 26433*/          OPC_CheckType, MVT::v2i64,
/* 26435*/          OPC_MoveParent,
/* 26436*/          OPC_MoveParent,
/* 26437*/          OPC_MoveParent,
/* 26438*/          OPC_CheckType, MVT::v2i64,
/* 26440*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26442*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (xor:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } immAllOnesV:{ *:[v4i32] }), (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$wt, (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>)))) - Complexity = 33
                    // Dst: (BCLR_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 26450*/        /*Scope*/ 32, /*->26483*/
/* 26451*/          OPC_MoveChild0,
/* 26452*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26455*/          OPC_MoveChild0,
/* 26456*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26459*/          OPC_CheckType, MVT::v4i32,
/* 26461*/          OPC_MoveParent,
/* 26462*/          OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 26464*/          OPC_MoveParent,
/* 26465*/          OPC_RecordChild1, // #1 = $wt
/* 26466*/          OPC_CheckType, MVT::v2i64,
/* 26468*/          OPC_MoveParent,
/* 26469*/          OPC_MoveParent,
/* 26470*/          OPC_MoveParent,
/* 26471*/          OPC_CheckType, MVT::v2i64,
/* 26473*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26475*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (xor:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } immAllOnesV:{ *:[v4i32] }), (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>, v2i64:{ *:[v2i64] }:$wt)))) - Complexity = 33
                    // Dst: (BCLR_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 26483*/        0, /*End of Scope*/
/* 26484*/      0, // EndSwitchOpcode
/* 26485*/    /*Scope*/ 91|128,1/*219*/, /*->26706*/
/* 26487*/      OPC_MoveChild0,
/* 26488*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 26491*/      OPC_MoveChild0,
/* 26492*/      OPC_SwitchOpcode /*2 cases */, 108, TARGET_VAL(ISD::SHL),// ->26604
/* 26496*/        OPC_MoveChild0,
/* 26497*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26500*/        OPC_MoveChild0,
/* 26501*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26504*/        OPC_CheckType, MVT::v4i32,
/* 26506*/        OPC_MoveParent,
/* 26507*/        OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 26509*/        OPC_MoveParent,
/* 26510*/        OPC_MoveChild1,
/* 26511*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 26514*/        OPC_Scope, 43, /*->26559*/ // 2 children in Scope
/* 26516*/          OPC_RecordChild0, // #0 = $wt
/* 26517*/          OPC_MoveChild1,
/* 26518*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26521*/          OPC_MoveChild0,
/* 26522*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26525*/          OPC_CheckType, MVT::v4i32,
/* 26527*/          OPC_MoveParent,
/* 26528*/          OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 26530*/          OPC_MoveParent,
/* 26531*/          OPC_CheckType, MVT::v2i64,
/* 26533*/          OPC_MoveParent,
/* 26534*/          OPC_MoveParent,
/* 26535*/          OPC_MoveChild1,
/* 26536*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26539*/          OPC_MoveChild0,
/* 26540*/          OPC_CheckImmAllOnesV,
/* 26541*/          OPC_CheckType, MVT::v4i32,
/* 26543*/          OPC_MoveParent,
/* 26544*/          OPC_MoveParent,
/* 26545*/          OPC_MoveParent,
/* 26546*/          OPC_RecordChild1, // #1 = $ws
/* 26547*/          OPC_CheckType, MVT::v2i64,
/* 26549*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26551*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v2i64] } (xor:{ *:[v2i64] } (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$wt, (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>)), (bitconvert:{ *:[v2i64] } immAllOnesV:{ *:[v4i32] })), v2i64:{ *:[v2i64] }:$ws) - Complexity = 33
                    // Dst: (BCLR_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 26559*/        /*Scope*/ 43, /*->26603*/
/* 26560*/          OPC_MoveChild0,
/* 26561*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26564*/          OPC_MoveChild0,
/* 26565*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26568*/          OPC_CheckType, MVT::v4i32,
/* 26570*/          OPC_MoveParent,
/* 26571*/          OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 26573*/          OPC_MoveParent,
/* 26574*/          OPC_RecordChild1, // #0 = $wt
/* 26575*/          OPC_CheckType, MVT::v2i64,
/* 26577*/          OPC_MoveParent,
/* 26578*/          OPC_MoveParent,
/* 26579*/          OPC_MoveChild1,
/* 26580*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26583*/          OPC_MoveChild0,
/* 26584*/          OPC_CheckImmAllOnesV,
/* 26585*/          OPC_CheckType, MVT::v4i32,
/* 26587*/          OPC_MoveParent,
/* 26588*/          OPC_MoveParent,
/* 26589*/          OPC_MoveParent,
/* 26590*/          OPC_RecordChild1, // #1 = $ws
/* 26591*/          OPC_CheckType, MVT::v2i64,
/* 26593*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26595*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v2i64] } (xor:{ *:[v2i64] } (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>, v2i64:{ *:[v2i64] }:$wt)), (bitconvert:{ *:[v2i64] } immAllOnesV:{ *:[v4i32] })), v2i64:{ *:[v2i64] }:$ws) - Complexity = 33
                    // Dst: (BCLR_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 26603*/        0, /*End of Scope*/
/* 26604*/      /*SwitchOpcode*/ 98, TARGET_VAL(ISD::BITCAST),// ->26705
/* 26607*/        OPC_MoveChild0,
/* 26608*/        OPC_CheckImmAllOnesV,
/* 26609*/        OPC_CheckType, MVT::v4i32,
/* 26611*/        OPC_MoveParent,
/* 26612*/        OPC_MoveParent,
/* 26613*/        OPC_MoveChild1,
/* 26614*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 26617*/        OPC_MoveChild0,
/* 26618*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26621*/        OPC_MoveChild0,
/* 26622*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26625*/        OPC_CheckType, MVT::v4i32,
/* 26627*/        OPC_MoveParent,
/* 26628*/        OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 26630*/        OPC_MoveParent,
/* 26631*/        OPC_MoveChild1,
/* 26632*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 26635*/        OPC_Scope, 33, /*->26670*/ // 2 children in Scope
/* 26637*/          OPC_RecordChild0, // #0 = $wt
/* 26638*/          OPC_MoveChild1,
/* 26639*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26642*/          OPC_MoveChild0,
/* 26643*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26646*/          OPC_CheckType, MVT::v4i32,
/* 26648*/          OPC_MoveParent,
/* 26649*/          OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 26651*/          OPC_MoveParent,
/* 26652*/          OPC_CheckType, MVT::v2i64,
/* 26654*/          OPC_MoveParent,
/* 26655*/          OPC_MoveParent,
/* 26656*/          OPC_MoveParent,
/* 26657*/          OPC_RecordChild1, // #1 = $ws
/* 26658*/          OPC_CheckType, MVT::v2i64,
/* 26660*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26662*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v2i64] } (xor:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } immAllOnesV:{ *:[v4i32] }), (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$wt, (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>))), v2i64:{ *:[v2i64] }:$ws) - Complexity = 33
                    // Dst: (BCLR_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 26670*/        /*Scope*/ 33, /*->26704*/
/* 26671*/          OPC_MoveChild0,
/* 26672*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26675*/          OPC_MoveChild0,
/* 26676*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26679*/          OPC_CheckType, MVT::v4i32,
/* 26681*/          OPC_MoveParent,
/* 26682*/          OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 26684*/          OPC_MoveParent,
/* 26685*/          OPC_RecordChild1, // #0 = $wt
/* 26686*/          OPC_CheckType, MVT::v2i64,
/* 26688*/          OPC_MoveParent,
/* 26689*/          OPC_MoveParent,
/* 26690*/          OPC_MoveParent,
/* 26691*/          OPC_RecordChild1, // #1 = $ws
/* 26692*/          OPC_CheckType, MVT::v2i64,
/* 26694*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26696*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v2i64] } (xor:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } immAllOnesV:{ *:[v4i32] }), (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>, v2i64:{ *:[v2i64] }:$wt))), v2i64:{ *:[v2i64] }:$ws) - Complexity = 33
                    // Dst: (BCLR_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 26704*/        0, /*End of Scope*/
/* 26705*/      0, // EndSwitchOpcode
/* 26706*/    /*Scope*/ 96, /*->26803*/
/* 26707*/      OPC_RecordChild0, // #0 = $ws
/* 26708*/      OPC_MoveChild1,
/* 26709*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 26712*/      OPC_MoveChild0,
/* 26713*/      OPC_SwitchOpcode /*2 cases */, 41, TARGET_VAL(ISD::SHL),// ->26758
/* 26717*/        OPC_MoveChild0,
/* 26718*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26721*/        OPC_MoveChild0,
/* 26722*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26725*/        OPC_CheckType, MVT::v4i32,
/* 26727*/        OPC_MoveParent,
/* 26728*/        OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 26730*/        OPC_MoveParent,
/* 26731*/        OPC_RecordChild1, // #1 = $wt
/* 26732*/        OPC_CheckChild1Type, MVT::v2i64,
/* 26734*/        OPC_MoveParent,
/* 26735*/        OPC_MoveChild1,
/* 26736*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26739*/        OPC_MoveChild0,
/* 26740*/        OPC_CheckImmAllOnesV,
/* 26741*/        OPC_CheckType, MVT::v4i32,
/* 26743*/        OPC_MoveParent,
/* 26744*/        OPC_MoveParent,
/* 26745*/        OPC_MoveParent,
/* 26746*/        OPC_CheckType, MVT::v2i64,
/* 26748*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 26750*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (and:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, (xor:{ *:[v2i64] } (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, MSA128DOpnd:{ *:[v2i64] }:$wt), (bitconvert:{ *:[v2i64] } immAllOnesV:{ *:[v4i32] }))) - Complexity = 23
                  // Dst: (BCLR_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 26758*/      /*SwitchOpcode*/ 41, TARGET_VAL(ISD::BITCAST),// ->26802
/* 26761*/        OPC_MoveChild0,
/* 26762*/        OPC_CheckImmAllOnesV,
/* 26763*/        OPC_CheckType, MVT::v4i32,
/* 26765*/        OPC_MoveParent,
/* 26766*/        OPC_MoveParent,
/* 26767*/        OPC_MoveChild1,
/* 26768*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 26771*/        OPC_MoveChild0,
/* 26772*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26775*/        OPC_MoveChild0,
/* 26776*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26779*/        OPC_CheckType, MVT::v4i32,
/* 26781*/        OPC_MoveParent,
/* 26782*/        OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 26784*/        OPC_MoveParent,
/* 26785*/        OPC_RecordChild1, // #1 = $wt
/* 26786*/        OPC_CheckChild1Type, MVT::v2i64,
/* 26788*/        OPC_MoveParent,
/* 26789*/        OPC_MoveParent,
/* 26790*/        OPC_CheckType, MVT::v2i64,
/* 26792*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 26794*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (and:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, (xor:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } immAllOnesV:{ *:[v4i32] }), (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, MSA128DOpnd:{ *:[v2i64] }:$wt))) - Complexity = 23
                  // Dst: (BCLR_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 26802*/      0, // EndSwitchOpcode
/* 26803*/    /*Scope*/ 97, /*->26901*/
/* 26804*/      OPC_MoveChild0,
/* 26805*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 26808*/      OPC_MoveChild0,
/* 26809*/      OPC_SwitchOpcode /*2 cases */, 42, TARGET_VAL(ISD::SHL),// ->26855
/* 26813*/        OPC_MoveChild0,
/* 26814*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26817*/        OPC_MoveChild0,
/* 26818*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26821*/        OPC_CheckType, MVT::v4i32,
/* 26823*/        OPC_MoveParent,
/* 26824*/        OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 26826*/        OPC_MoveParent,
/* 26827*/        OPC_RecordChild1, // #0 = $wt
/* 26828*/        OPC_CheckChild1Type, MVT::v2i64,
/* 26830*/        OPC_MoveParent,
/* 26831*/        OPC_MoveChild1,
/* 26832*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26835*/        OPC_MoveChild0,
/* 26836*/        OPC_CheckImmAllOnesV,
/* 26837*/        OPC_CheckType, MVT::v4i32,
/* 26839*/        OPC_MoveParent,
/* 26840*/        OPC_MoveParent,
/* 26841*/        OPC_MoveParent,
/* 26842*/        OPC_RecordChild1, // #1 = $ws
/* 26843*/        OPC_CheckType, MVT::v2i64,
/* 26845*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 26847*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 1, 0, 
                  // Src: (and:{ *:[v2i64] } (xor:{ *:[v2i64] } (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, MSA128DOpnd:{ *:[v2i64] }:$wt), (bitconvert:{ *:[v2i64] } immAllOnesV:{ *:[v4i32] })), MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 23
                  // Dst: (BCLR_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 26855*/      /*SwitchOpcode*/ 42, TARGET_VAL(ISD::BITCAST),// ->26900
/* 26858*/        OPC_MoveChild0,
/* 26859*/        OPC_CheckImmAllOnesV,
/* 26860*/        OPC_CheckType, MVT::v4i32,
/* 26862*/        OPC_MoveParent,
/* 26863*/        OPC_MoveParent,
/* 26864*/        OPC_MoveChild1,
/* 26865*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 26868*/        OPC_MoveChild0,
/* 26869*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 26872*/        OPC_MoveChild0,
/* 26873*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26876*/        OPC_CheckType, MVT::v4i32,
/* 26878*/        OPC_MoveParent,
/* 26879*/        OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 26881*/        OPC_MoveParent,
/* 26882*/        OPC_RecordChild1, // #0 = $wt
/* 26883*/        OPC_CheckChild1Type, MVT::v2i64,
/* 26885*/        OPC_MoveParent,
/* 26886*/        OPC_MoveParent,
/* 26887*/        OPC_RecordChild1, // #1 = $ws
/* 26888*/        OPC_CheckType, MVT::v2i64,
/* 26890*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 26892*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 1, 0, 
                  // Src: (and:{ *:[v2i64] } (xor:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } immAllOnesV:{ *:[v4i32] }), (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, MSA128DOpnd:{ *:[v2i64] }:$wt)), MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 23
                  // Dst: (BCLR_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 26900*/      0, // EndSwitchOpcode
/* 26901*/    /*Scope*/ 113, /*->27015*/
/* 26902*/      OPC_RecordChild0, // #0 = $ws
/* 26903*/      OPC_MoveChild1,
/* 26904*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 26907*/      OPC_MoveChild0,
/* 26908*/      OPC_Scope, 73, /*->26983*/ // 2 children in Scope
/* 26910*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 26913*/        OPC_MoveChild0,
/* 26914*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26917*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 26919*/        OPC_MoveParent,
/* 26920*/        OPC_RecordChild1, // #1 = $wt
/* 26921*/        OPC_Scope, 19, /*->26942*/ // 3 children in Scope
/* 26923*/          OPC_CheckChild1Type, MVT::v16i8,
/* 26925*/          OPC_MoveParent,
/* 26926*/          OPC_MoveChild1,
/* 26927*/          OPC_CheckImmAllOnesV,
/* 26928*/          OPC_MoveParent,
/* 26929*/          OPC_MoveParent,
/* 26930*/          OPC_CheckType, MVT::v16i8,
/* 26932*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 26934*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, (xor:{ *:[v16i8] } (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128BOpnd:{ *:[v16i8] }:$wt), immAllOnesV:{ *:[v16i8] })) - Complexity = 17
                    // Dst: (BCLR_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 26942*/        /*Scope*/ 19, /*->26962*/
/* 26943*/          OPC_CheckChild1Type, MVT::v8i16,
/* 26945*/          OPC_MoveParent,
/* 26946*/          OPC_MoveChild1,
/* 26947*/          OPC_CheckImmAllOnesV,
/* 26948*/          OPC_MoveParent,
/* 26949*/          OPC_MoveParent,
/* 26950*/          OPC_CheckType, MVT::v8i16,
/* 26952*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 26954*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, (xor:{ *:[v8i16] } (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128HOpnd:{ *:[v8i16] }:$wt), immAllOnesV:{ *:[v8i16] })) - Complexity = 17
                    // Dst: (BCLR_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 26962*/        /*Scope*/ 19, /*->26982*/
/* 26963*/          OPC_CheckChild1Type, MVT::v4i32,
/* 26965*/          OPC_MoveParent,
/* 26966*/          OPC_MoveChild1,
/* 26967*/          OPC_CheckImmAllOnesV,
/* 26968*/          OPC_MoveParent,
/* 26969*/          OPC_MoveParent,
/* 26970*/          OPC_CheckType, MVT::v4i32,
/* 26972*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 26974*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (xor:{ *:[v4i32] } (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128WOpnd:{ *:[v4i32] }:$wt), immAllOnesV:{ *:[v4i32] })) - Complexity = 17
                    // Dst: (BCLR_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 26982*/        0, /*End of Scope*/
/* 26983*/      /*Scope*/ 30, /*->27014*/
/* 26984*/        OPC_CheckImmAllOnesV,
/* 26985*/        OPC_MoveParent,
/* 26986*/        OPC_MoveChild1,
/* 26987*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 26990*/        OPC_MoveChild0,
/* 26991*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26994*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 26996*/        OPC_MoveParent,
/* 26997*/        OPC_RecordChild1, // #1 = $wt
/* 26998*/        OPC_CheckChild1Type, MVT::v16i8,
/* 27000*/        OPC_MoveParent,
/* 27001*/        OPC_MoveParent,
/* 27002*/        OPC_CheckType, MVT::v16i8,
/* 27004*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27006*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (and:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, (xor:{ *:[v16i8] } immAllOnesV:{ *:[v16i8] }, (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128BOpnd:{ *:[v16i8] }:$wt))) - Complexity = 17
                  // Dst: (BCLR_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 27014*/      0, /*End of Scope*/
/* 27015*/    /*Scope*/ 71, /*->27087*/
/* 27016*/      OPC_MoveChild0,
/* 27017*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 27020*/      OPC_MoveChild0,
/* 27021*/      OPC_Scope, 31, /*->27054*/ // 2 children in Scope
/* 27023*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27026*/        OPC_MoveChild0,
/* 27027*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27030*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 27032*/        OPC_MoveParent,
/* 27033*/        OPC_RecordChild1, // #0 = $wt
/* 27034*/        OPC_CheckChild1Type, MVT::v16i8,
/* 27036*/        OPC_MoveParent,
/* 27037*/        OPC_MoveChild1,
/* 27038*/        OPC_CheckImmAllOnesV,
/* 27039*/        OPC_MoveParent,
/* 27040*/        OPC_MoveParent,
/* 27041*/        OPC_RecordChild1, // #1 = $ws
/* 27042*/        OPC_CheckType, MVT::v16i8,
/* 27044*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27046*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 1, 0, 
                  // Src: (and:{ *:[v16i8] } (xor:{ *:[v16i8] } (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128BOpnd:{ *:[v16i8] }:$wt), immAllOnesV:{ *:[v16i8] }), MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 17
                  // Dst: (BCLR_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 27054*/      /*Scope*/ 31, /*->27086*/
/* 27055*/        OPC_CheckImmAllOnesV,
/* 27056*/        OPC_MoveParent,
/* 27057*/        OPC_MoveChild1,
/* 27058*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27061*/        OPC_MoveChild0,
/* 27062*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27065*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 27067*/        OPC_MoveParent,
/* 27068*/        OPC_RecordChild1, // #0 = $wt
/* 27069*/        OPC_CheckChild1Type, MVT::v16i8,
/* 27071*/        OPC_MoveParent,
/* 27072*/        OPC_MoveParent,
/* 27073*/        OPC_RecordChild1, // #1 = $ws
/* 27074*/        OPC_CheckType, MVT::v16i8,
/* 27076*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27078*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 1, 0, 
                  // Src: (and:{ *:[v16i8] } (xor:{ *:[v16i8] } immAllOnesV:{ *:[v16i8] }, (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128BOpnd:{ *:[v16i8] }:$wt)), MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 17
                  // Dst: (BCLR_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 27086*/      0, /*End of Scope*/
/* 27087*/    /*Scope*/ 36, /*->27124*/
/* 27088*/      OPC_RecordChild0, // #0 = $ws
/* 27089*/      OPC_MoveChild1,
/* 27090*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 27093*/      OPC_MoveChild0,
/* 27094*/      OPC_CheckImmAllOnesV,
/* 27095*/      OPC_MoveParent,
/* 27096*/      OPC_MoveChild1,
/* 27097*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27100*/      OPC_MoveChild0,
/* 27101*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27104*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 27106*/      OPC_MoveParent,
/* 27107*/      OPC_RecordChild1, // #1 = $wt
/* 27108*/      OPC_CheckChild1Type, MVT::v8i16,
/* 27110*/      OPC_MoveParent,
/* 27111*/      OPC_MoveParent,
/* 27112*/      OPC_CheckType, MVT::v8i16,
/* 27114*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27116*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (and:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, (xor:{ *:[v8i16] } immAllOnesV:{ *:[v8i16] }, (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128HOpnd:{ *:[v8i16] }:$wt))) - Complexity = 17
                // Dst: (BCLR_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 27124*/    /*Scope*/ 71, /*->27196*/
/* 27125*/      OPC_MoveChild0,
/* 27126*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 27129*/      OPC_MoveChild0,
/* 27130*/      OPC_Scope, 31, /*->27163*/ // 2 children in Scope
/* 27132*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27135*/        OPC_MoveChild0,
/* 27136*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27139*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 27141*/        OPC_MoveParent,
/* 27142*/        OPC_RecordChild1, // #0 = $wt
/* 27143*/        OPC_CheckChild1Type, MVT::v8i16,
/* 27145*/        OPC_MoveParent,
/* 27146*/        OPC_MoveChild1,
/* 27147*/        OPC_CheckImmAllOnesV,
/* 27148*/        OPC_MoveParent,
/* 27149*/        OPC_MoveParent,
/* 27150*/        OPC_RecordChild1, // #1 = $ws
/* 27151*/        OPC_CheckType, MVT::v8i16,
/* 27153*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27155*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 1, 0, 
                  // Src: (and:{ *:[v8i16] } (xor:{ *:[v8i16] } (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128HOpnd:{ *:[v8i16] }:$wt), immAllOnesV:{ *:[v8i16] }), MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 17
                  // Dst: (BCLR_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 27163*/      /*Scope*/ 31, /*->27195*/
/* 27164*/        OPC_CheckImmAllOnesV,
/* 27165*/        OPC_MoveParent,
/* 27166*/        OPC_MoveChild1,
/* 27167*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27170*/        OPC_MoveChild0,
/* 27171*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27174*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 27176*/        OPC_MoveParent,
/* 27177*/        OPC_RecordChild1, // #0 = $wt
/* 27178*/        OPC_CheckChild1Type, MVT::v8i16,
/* 27180*/        OPC_MoveParent,
/* 27181*/        OPC_MoveParent,
/* 27182*/        OPC_RecordChild1, // #1 = $ws
/* 27183*/        OPC_CheckType, MVT::v8i16,
/* 27185*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27187*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 1, 0, 
                  // Src: (and:{ *:[v8i16] } (xor:{ *:[v8i16] } immAllOnesV:{ *:[v8i16] }, (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128HOpnd:{ *:[v8i16] }:$wt)), MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 17
                  // Dst: (BCLR_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 27195*/      0, /*End of Scope*/
/* 27196*/    /*Scope*/ 36, /*->27233*/
/* 27197*/      OPC_RecordChild0, // #0 = $ws
/* 27198*/      OPC_MoveChild1,
/* 27199*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 27202*/      OPC_MoveChild0,
/* 27203*/      OPC_CheckImmAllOnesV,
/* 27204*/      OPC_MoveParent,
/* 27205*/      OPC_MoveChild1,
/* 27206*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27209*/      OPC_MoveChild0,
/* 27210*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27213*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 27215*/      OPC_MoveParent,
/* 27216*/      OPC_RecordChild1, // #1 = $wt
/* 27217*/      OPC_CheckChild1Type, MVT::v4i32,
/* 27219*/      OPC_MoveParent,
/* 27220*/      OPC_MoveParent,
/* 27221*/      OPC_CheckType, MVT::v4i32,
/* 27223*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27225*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (and:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (xor:{ *:[v4i32] } immAllOnesV:{ *:[v4i32] }, (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128WOpnd:{ *:[v4i32] }:$wt))) - Complexity = 17
                // Dst: (BCLR_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 27233*/    /*Scope*/ 71, /*->27305*/
/* 27234*/      OPC_MoveChild0,
/* 27235*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 27238*/      OPC_MoveChild0,
/* 27239*/      OPC_Scope, 31, /*->27272*/ // 2 children in Scope
/* 27241*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27244*/        OPC_MoveChild0,
/* 27245*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27248*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 27250*/        OPC_MoveParent,
/* 27251*/        OPC_RecordChild1, // #0 = $wt
/* 27252*/        OPC_CheckChild1Type, MVT::v4i32,
/* 27254*/        OPC_MoveParent,
/* 27255*/        OPC_MoveChild1,
/* 27256*/        OPC_CheckImmAllOnesV,
/* 27257*/        OPC_MoveParent,
/* 27258*/        OPC_MoveParent,
/* 27259*/        OPC_RecordChild1, // #1 = $ws
/* 27260*/        OPC_CheckType, MVT::v4i32,
/* 27262*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27264*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 1, 0, 
                  // Src: (and:{ *:[v4i32] } (xor:{ *:[v4i32] } (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128WOpnd:{ *:[v4i32] }:$wt), immAllOnesV:{ *:[v4i32] }), MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 17
                  // Dst: (BCLR_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 27272*/      /*Scope*/ 31, /*->27304*/
/* 27273*/        OPC_CheckImmAllOnesV,
/* 27274*/        OPC_MoveParent,
/* 27275*/        OPC_MoveChild1,
/* 27276*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27279*/        OPC_MoveChild0,
/* 27280*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27283*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 27285*/        OPC_MoveParent,
/* 27286*/        OPC_RecordChild1, // #0 = $wt
/* 27287*/        OPC_CheckChild1Type, MVT::v4i32,
/* 27289*/        OPC_MoveParent,
/* 27290*/        OPC_MoveParent,
/* 27291*/        OPC_RecordChild1, // #1 = $ws
/* 27292*/        OPC_CheckType, MVT::v4i32,
/* 27294*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27296*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 1, 0, 
                  // Src: (and:{ *:[v4i32] } (xor:{ *:[v4i32] } immAllOnesV:{ *:[v4i32] }, (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128WOpnd:{ *:[v4i32] }:$wt)), MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 17
                  // Dst: (BCLR_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 27304*/      0, /*End of Scope*/
/* 27305*/    /*Scope*/ 56|128,1/*184*/, /*->27491*/
/* 27307*/      OPC_RecordChild0, // #0 = $ws
/* 27308*/      OPC_RecordChild1, // #1 = $u8
/* 27309*/      OPC_SwitchType /*4 cases */, 61, MVT::v16i8,// ->27373
/* 27312*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27314*/        OPC_Scope, 11, /*->27327*/ // 5 children in Scope
/* 27316*/          OPC_CheckComplexPat, /*CP*/14, /*#*/1, // selectVSplatUimm8:$u8 #2
/* 27319*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ANDI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 2, 
                    // Src: (and:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm8:{ *:[v16i8] }:$u8) - Complexity = 9
                    // Dst: (ANDI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm8:{ *:[v16i8] }:$u8)
/* 27327*/        /*Scope*/ 11, /*->27339*/
/* 27328*/          OPC_CheckComplexPat, /*CP*/15, /*#*/1, // selectVSplatUimmInvPow2:$m #2
/* 27331*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLRI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 2, 
                    // Src: (and:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplat_uimm_inv_pow2:{ *:[v16i8] }:$m) - Complexity = 9
                    // Dst: (BCLRI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplat_uimm_inv_pow2:{ *:[v16i8] }:$m)
/* 27339*/        /*Scope*/ 11, /*->27351*/
/* 27340*/          OPC_CheckComplexPat, /*CP*/14, /*#*/0, // selectVSplatUimm8:$u8 #2
/* 27343*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ANDI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 1, 2, 
                    // Src: (and:{ *:[v16i8] } vsplati8_uimm8:{ *:[v16i8] }:$u8, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 9
                    // Dst: (ANDI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm8:{ *:[v16i8] }:$u8)
/* 27351*/        /*Scope*/ 11, /*->27363*/
/* 27352*/          OPC_CheckComplexPat, /*CP*/15, /*#*/0, // selectVSplatUimmInvPow2:$m #2
/* 27355*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLRI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 1, 2, 
                    // Src: (and:{ *:[v16i8] } vsplat_uimm_inv_pow2:{ *:[v16i8] }:$m, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 9
                    // Dst: (BCLRI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplat_uimm_inv_pow2:{ *:[v16i8] }:$m)
/* 27363*/        /*Scope*/ 8, /*->27372*/
/* 27364*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::AND_V), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                    // Dst: (AND_V:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 27372*/        0, /*End of Scope*/
/* 27373*/      /*SwitchType*/ 37, MVT::v8i16,// ->27412
/* 27375*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27377*/        OPC_Scope, 11, /*->27390*/ // 3 children in Scope
/* 27379*/          OPC_CheckComplexPat, /*CP*/15, /*#*/1, // selectVSplatUimmInvPow2:$m #2
/* 27382*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLRI_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 2, 
                    // Src: (and:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplat_uimm_inv_pow2:{ *:[v8i16] }:$m) - Complexity = 9
                    // Dst: (BCLRI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplat_uimm_inv_pow2:{ *:[v8i16] }:$m)
/* 27390*/        /*Scope*/ 11, /*->27402*/
/* 27391*/          OPC_CheckComplexPat, /*CP*/15, /*#*/0, // selectVSplatUimmInvPow2:$m #2
/* 27394*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLRI_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 1, 2, 
                    // Src: (and:{ *:[v8i16] } vsplat_uimm_inv_pow2:{ *:[v8i16] }:$m, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 9
                    // Dst: (BCLRI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplat_uimm_inv_pow2:{ *:[v8i16] }:$m)
/* 27402*/        /*Scope*/ 8, /*->27411*/
/* 27403*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::AND_V_H_PSEUDO), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                    // Dst: (AND_V_H_PSEUDO:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 27411*/        0, /*End of Scope*/
/* 27412*/      /*SwitchType*/ 37, MVT::v4i32,// ->27451
/* 27414*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27416*/        OPC_Scope, 11, /*->27429*/ // 3 children in Scope
/* 27418*/          OPC_CheckComplexPat, /*CP*/15, /*#*/1, // selectVSplatUimmInvPow2:$m #2
/* 27421*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLRI_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 2, 
                    // Src: (and:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplat_uimm_inv_pow2:{ *:[v4i32] }:$m) - Complexity = 9
                    // Dst: (BCLRI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplat_uimm_inv_pow2:{ *:[v4i32] }:$m)
/* 27429*/        /*Scope*/ 11, /*->27441*/
/* 27430*/          OPC_CheckComplexPat, /*CP*/15, /*#*/0, // selectVSplatUimmInvPow2:$m #2
/* 27433*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLRI_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 1, 2, 
                    // Src: (and:{ *:[v4i32] } vsplat_uimm_inv_pow2:{ *:[v4i32] }:$m, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 9
                    // Dst: (BCLRI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplat_uimm_inv_pow2:{ *:[v4i32] }:$m)
/* 27441*/        /*Scope*/ 8, /*->27450*/
/* 27442*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::AND_V_W_PSEUDO), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                    // Dst: (AND_V_W_PSEUDO:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 27450*/        0, /*End of Scope*/
/* 27451*/      /*SwitchType*/ 37, MVT::v2i64,// ->27490
/* 27453*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27455*/        OPC_Scope, 11, /*->27468*/ // 3 children in Scope
/* 27457*/          OPC_CheckComplexPat, /*CP*/15, /*#*/1, // selectVSplatUimmInvPow2:$m #2
/* 27460*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLRI_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 2, 
                    // Src: (and:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplat_uimm_inv_pow2:{ *:[v2i64] }:$m) - Complexity = 9
                    // Dst: (BCLRI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplat_uimm_inv_pow2:{ *:[v2i64] }:$m)
/* 27468*/        /*Scope*/ 11, /*->27480*/
/* 27469*/          OPC_CheckComplexPat, /*CP*/15, /*#*/0, // selectVSplatUimmInvPow2:$m #2
/* 27472*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLRI_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 1, 2, 
                    // Src: (and:{ *:[v2i64] } vsplat_uimm_inv_pow2:{ *:[v2i64] }:$m, MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 9
                    // Dst: (BCLRI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplat_uimm_inv_pow2:{ *:[v2i64] }:$m)
/* 27480*/        /*Scope*/ 8, /*->27489*/
/* 27481*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::AND_V_D_PSEUDO), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                    // Dst: (AND_V_D_PSEUDO:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 27489*/        0, /*End of Scope*/
/* 27490*/      0, // EndSwitchType
/* 27491*/    0, /*End of Scope*/
/* 27492*/  /*SwitchOpcode*/ 89, TARGET_VAL(MipsISD::CIns),// ->27584
/* 27495*/    OPC_RecordChild0, // #0 = $rs
/* 27496*/    OPC_RecordChild1, // #1 = $pos
/* 27497*/    OPC_MoveChild1,
/* 27498*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 27501*/    OPC_Scope, 26, /*->27529*/ // 3 children in Scope
/* 27503*/      OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 27505*/      OPC_MoveParent,
/* 27506*/      OPC_RecordChild2, // #2 = $lenm1
/* 27507*/      OPC_MoveChild2,
/* 27508*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 27511*/      OPC_MoveParent,
/* 27512*/      OPC_CheckType, MVT::i64,
/* 27514*/      OPC_CheckPatternPredicate, 55, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (!Subtarget->inMicroMipsMode())
/* 27516*/      OPC_EmitConvertToTarget, 1,
/* 27518*/      OPC_EmitConvertToTarget, 2,
/* 27520*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::CINS), 0,
                    MVT::i64, 3/*#Ops*/, 0, 3, 4, 
                // Src: (MipsCIns:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$pos, (imm:{ *:[i32] }):$lenm1) - Complexity = 10
                // Dst: (CINS:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i32] }):$pos, (imm:{ *:[i32] }):$lenm1)
/* 27529*/    /*Scope*/ 26, /*->27556*/
/* 27530*/      OPC_CheckPredicate, 41, // Predicate_immZExt5Plus32
/* 27532*/      OPC_MoveParent,
/* 27533*/      OPC_RecordChild2, // #2 = $lenm1
/* 27534*/      OPC_MoveChild2,
/* 27535*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 27538*/      OPC_MoveParent,
/* 27539*/      OPC_CheckType, MVT::i64,
/* 27541*/      OPC_CheckPatternPredicate, 55, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (!Subtarget->inMicroMipsMode())
/* 27543*/      OPC_EmitConvertToTarget, 1,
/* 27545*/      OPC_EmitConvertToTarget, 2,
/* 27547*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::CINS32), 0,
                    MVT::i64, 3/*#Ops*/, 0, 3, 4, 
                // Src: (MipsCIns:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5Plus32>>:$pos, (imm:{ *:[i32] }):$lenm1) - Complexity = 10
                // Dst: (CINS32:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i32] }):$pos, (imm:{ *:[i32] }):$lenm1)
/* 27556*/    /*Scope*/ 26, /*->27583*/
/* 27557*/      OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 27559*/      OPC_MoveParent,
/* 27560*/      OPC_RecordChild2, // #2 = $lenm1
/* 27561*/      OPC_MoveChild2,
/* 27562*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 27565*/      OPC_MoveParent,
/* 27566*/      OPC_CheckType, MVT::i32,
/* 27568*/      OPC_CheckPatternPredicate, 55, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (!Subtarget->inMicroMipsMode())
/* 27570*/      OPC_EmitConvertToTarget, 1,
/* 27572*/      OPC_EmitConvertToTarget, 2,
/* 27574*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::CINS_i32), 0,
                    MVT::i32, 3/*#Ops*/, 0, 3, 4, 
                // Src: (MipsCIns:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$pos, (imm:{ *:[i32] }):$lenm1) - Complexity = 10
                // Dst: (CINS_i32:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$pos, (imm:{ *:[i32] }):$lenm1)
/* 27583*/    0, /*End of Scope*/
/* 27584*/  /*SwitchOpcode*/ 45|128,1/*173*/, TARGET_VAL(ISD::ZERO_EXTEND),// ->27761
/* 27588*/    OPC_Scope, 125, /*->27715*/ // 2 children in Scope
/* 27590*/      OPC_MoveChild0,
/* 27591*/      OPC_SwitchOpcode /*2 cases */, 84, TARGET_VAL(ISD::SETCC),// ->27679
/* 27595*/        OPC_RecordChild0, // #0 = $rs
/* 27596*/        OPC_CheckChild0Type, MVT::i64,
/* 27598*/        OPC_RecordChild1, // #1 = $imm10
/* 27599*/        OPC_Scope, 45, /*->27646*/ // 3 children in Scope
/* 27601*/          OPC_MoveChild1,
/* 27602*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 27605*/          OPC_CheckPredicate, 43, // Predicate_immSExt10_64
/* 27607*/          OPC_MoveParent,
/* 27608*/          OPC_Scope, 17, /*->27627*/ // 2 children in Scope
/* 27610*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 27612*/            OPC_MoveParent,
/* 27613*/            OPC_CheckType, MVT::i64,
/* 27615*/            OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 27617*/            OPC_EmitConvertToTarget, 1,
/* 27619*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SEQi), 0,
                          MVT::i64, 2/*#Ops*/, 0, 2, 
                      // Src: (zext:{ *:[i64] } (setcc:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] })<<P:Predicate_immSExt10_64>>:$imm10, SETEQ:{ *:[Other] })) - Complexity = 10
                      // Dst: (SEQi:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] }):$imm10)
/* 27627*/          /*Scope*/ 17, /*->27645*/
/* 27628*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 27630*/            OPC_MoveParent,
/* 27631*/            OPC_CheckType, MVT::i64,
/* 27633*/            OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 27635*/            OPC_EmitConvertToTarget, 1,
/* 27637*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SNEi), 0,
                          MVT::i64, 2/*#Ops*/, 0, 2, 
                      // Src: (zext:{ *:[i64] } (setcc:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] })<<P:Predicate_immSExt10_64>>:$imm10, SETNE:{ *:[Other] })) - Complexity = 10
                      // Dst: (SNEi:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] }):$imm10)
/* 27645*/          0, /*End of Scope*/
/* 27646*/        /*Scope*/ 15, /*->27662*/
/* 27647*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/* 27649*/          OPC_MoveParent,
/* 27650*/          OPC_CheckType, MVT::i64,
/* 27652*/          OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 27654*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SEQ), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (zext:{ *:[i64] } (setcc:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt, SETEQ:{ *:[Other] })) - Complexity = 6
                    // Dst: (SEQ:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 27662*/        /*Scope*/ 15, /*->27678*/
/* 27663*/          OPC_CheckChild2CondCode, ISD::SETNE,
/* 27665*/          OPC_MoveParent,
/* 27666*/          OPC_CheckType, MVT::i64,
/* 27668*/          OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 27670*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SNE), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (zext:{ *:[i64] } (setcc:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt, SETNE:{ *:[Other] })) - Complexity = 6
                    // Dst: (SNE:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 27678*/        0, /*End of Scope*/
/* 27679*/      /*SwitchOpcode*/ 32, TARGET_VAL(ISD::SHL),// ->27714
/* 27682*/        OPC_RecordChild0, // #0 = $rt
/* 27683*/        OPC_RecordChild1, // #1 = $imm
/* 27684*/        OPC_MoveChild1,
/* 27685*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 27688*/        OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 27690*/        OPC_CheckType, MVT::i32,
/* 27692*/        OPC_MoveParent,
/* 27693*/        OPC_MoveParent,
/* 27694*/        OPC_CheckType, MVT::i64,
/* 27696*/        OPC_CheckPatternPredicate, 56, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 27698*/        OPC_EmitConvertToTarget, 1,
/* 27700*/        OPC_EmitConvertToTarget, 1,
/* 27702*/        OPC_EmitNodeXForm, 4, 3, // immZExt5To31
/* 27705*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CINS64_32), 0,
                      MVT::i64, 3/*#Ops*/, 0, 2, 4, 
                  // Src: (zext:{ *:[i64] } (shl:{ *:[i32] } GPR32:{ *:[i32] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm)) - Complexity = 10
                  // Dst: (CINS64_32:{ *:[i64] } GPR32:{ *:[i32] }:$rt, (imm:{ *:[i32] }):$imm, (immZExt5To31:{ *:[i32] } (imm:{ *:[i32] }):$imm))
/* 27714*/      0, // EndSwitchOpcode
/* 27715*/    /*Scope*/ 44, /*->27760*/
/* 27716*/      OPC_RecordChild0, // #0 = $src
/* 27717*/      OPC_CheckType, MVT::i64,
/* 27719*/      OPC_Scope, 17, /*->27738*/ // 2 children in Scope
/* 27721*/        OPC_CheckPatternPredicate, 57, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 27723*/        OPC_EmitInteger, MVT::i32, 0, 
/* 27726*/        OPC_EmitInteger, MVT::i32, 32, 
/* 27729*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DEXT64_32), 0,
                      MVT::i64, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (zext:{ *:[i64] } GPR32:{ *:[i32] }:$src) - Complexity = 3
                  // Dst: (DEXT64_32:{ *:[i64] } GPR32:{ *:[i32] }:$src, 0:{ *:[i32] }, 32:{ *:[i32] })
/* 27738*/      /*Scope*/ 20, /*->27759*/
/* 27739*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 27741*/        OPC_EmitNode1, TARGET_VAL(Mips::DSLL64_32), 0,
                      MVT::i64, 1/*#Ops*/, 0,  // Results = #1
/* 27748*/        OPC_EmitInteger, MVT::i32, 32, 
/* 27751*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DSRL), 0,
                      MVT::i64, 2/*#Ops*/, 1, 2, 
                  // Src: (zext:{ *:[i64] } GPR32:{ *:[i32] }:$src) - Complexity = 3
                  // Dst: (DSRL:{ *:[i64] } (DSLL64_32:{ *:[i64] } GPR32:{ *:[i32] }:$src), 32:{ *:[i32] })
/* 27759*/      0, /*End of Scope*/
/* 27760*/    0, /*End of Scope*/
/* 27761*/  /*SwitchOpcode*/ 79|128,15/*1999*/, TARGET_VAL(ISD::ADD),// ->29764
/* 27765*/    OPC_Scope, 49, /*->27816*/ // 7 children in Scope
/* 27767*/      OPC_RecordChild0, // #0 = $rt
/* 27768*/      OPC_MoveChild1,
/* 27769*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27772*/      OPC_RecordChild0, // #1 = $rs
/* 27773*/      OPC_RecordChild1, // #2 = $sa
/* 27774*/      OPC_MoveChild1,
/* 27775*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 27778*/      OPC_CheckPredicate, 44, // Predicate_immZExt2Lsa
/* 27780*/      OPC_CheckType, MVT::i32,
/* 27782*/      OPC_MoveParent,
/* 27783*/      OPC_MoveParent,
/* 27784*/      OPC_SwitchType /*2 cases */, 13, MVT::i32,// ->27800
/* 27787*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27789*/        OPC_EmitConvertToTarget, 2,
/* 27791*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LSA), 0,
                      MVT::i32, 3/*#Ops*/, 1, 0, 3, 
                  // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, (shl:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt2Lsa>>:$sa)) - Complexity = 10
                  // Dst: (LSA:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] }):$sa)
/* 27800*/      /*SwitchType*/ 13, MVT::i64,// ->27815
/* 27802*/        OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 27804*/        OPC_EmitConvertToTarget, 2,
/* 27806*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DLSA), 0,
                      MVT::i64, 3/*#Ops*/, 1, 0, 3, 
                  // Src: (add:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, (shl:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt2Lsa>>:$sa)) - Complexity = 10
                  // Dst: (DLSA:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt, (imm:{ *:[i32] }):$sa)
/* 27815*/      0, // EndSwitchType
/* 27816*/    /*Scope*/ 49, /*->27866*/
/* 27817*/      OPC_MoveChild0,
/* 27818*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27821*/      OPC_RecordChild0, // #0 = $rs
/* 27822*/      OPC_RecordChild1, // #1 = $sa
/* 27823*/      OPC_MoveChild1,
/* 27824*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 27827*/      OPC_CheckPredicate, 44, // Predicate_immZExt2Lsa
/* 27829*/      OPC_CheckType, MVT::i32,
/* 27831*/      OPC_MoveParent,
/* 27832*/      OPC_MoveParent,
/* 27833*/      OPC_RecordChild1, // #2 = $rt
/* 27834*/      OPC_SwitchType /*2 cases */, 13, MVT::i32,// ->27850
/* 27837*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27839*/        OPC_EmitConvertToTarget, 1,
/* 27841*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LSA), 0,
                      MVT::i32, 3/*#Ops*/, 0, 2, 3, 
                  // Src: (add:{ *:[i32] } (shl:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt2Lsa>>:$sa), GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 10
                  // Dst: (LSA:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] }):$sa)
/* 27850*/      /*SwitchType*/ 13, MVT::i64,// ->27865
/* 27852*/        OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 27854*/        OPC_EmitConvertToTarget, 1,
/* 27856*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DLSA), 0,
                      MVT::i64, 3/*#Ops*/, 0, 2, 3, 
                  // Src: (add:{ *:[i64] } (shl:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt2Lsa>>:$sa), GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 10
                  // Dst: (DLSA:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt, (imm:{ *:[i32] }):$sa)
/* 27865*/      0, // EndSwitchType
/* 27866*/    /*Scope*/ 18|128,5/*658*/, /*->28526*/
/* 27868*/      OPC_RecordChild0, // #0 = $hi
/* 27869*/      OPC_MoveChild1,
/* 27870*/      OPC_SwitchOpcode /*4 cases */, 113|128,2/*369*/, TARGET_VAL(MipsISD::Lo),// ->28244
/* 27875*/        OPC_RecordChild0, // #1 = $lo
/* 27876*/        OPC_MoveChild0,
/* 27877*/        OPC_SwitchOpcode /*6 cases */, 67, TARGET_VAL(ISD::TargetGlobalAddress),// ->27948
/* 27881*/          OPC_MoveParent,
/* 27882*/          OPC_MoveParent,
/* 27883*/          OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->27921
/* 27886*/            OPC_Scope, 10, /*->27898*/ // 3 children in Scope
/* 27888*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 27890*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (MipsLo:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$lo)) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tglobaladdr:{ *:[i32] }):$lo)
/* 27898*/            /*Scope*/ 10, /*->27909*/
/* 27899*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 27901*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::AddiuRxRxImmX16), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } CPU16Regs:{ *:[i32] }:$hi, (MipsLo:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$lo)) - Complexity = 9
                        // Dst: (AddiuRxRxImmX16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$hi, (tglobaladdr:{ *:[i32] }):$lo)
/* 27909*/            /*Scope*/ 10, /*->27920*/
/* 27910*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 27912*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (MipsLo:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$lo)) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tglobaladdr:{ *:[i32] }):$lo)
/* 27920*/            0, /*End of Scope*/
/* 27921*/          /*SwitchType*/ 24, MVT::i64,// ->27947
/* 27923*/            OPC_Scope, 10, /*->27935*/ // 2 children in Scope
/* 27925*/              OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 27927*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (MipsLo:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$lo)) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (tglobaladdr:{ *:[i64] }):$lo)
/* 27935*/            /*Scope*/ 10, /*->27946*/
/* 27936*/              OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 27938*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsLo:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$lo)) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tglobaladdr:{ *:[i64] }):$lo)
/* 27946*/            0, /*End of Scope*/
/* 27947*/          0, // EndSwitchType
/* 27948*/        /*SwitchOpcode*/ 56, TARGET_VAL(ISD::TargetBlockAddress),// ->28007
/* 27951*/          OPC_MoveParent,
/* 27952*/          OPC_MoveParent,
/* 27953*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->27980
/* 27956*/            OPC_Scope, 10, /*->27968*/ // 2 children in Scope
/* 27958*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 27960*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (MipsLo:{ *:[i32] } (tblockaddress:{ *:[i32] }):$lo)) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tblockaddress:{ *:[i32] }):$lo)
/* 27968*/            /*Scope*/ 10, /*->27979*/
/* 27969*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 27971*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (MipsLo:{ *:[i32] } (tblockaddress:{ *:[i32] }):$lo)) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tblockaddress:{ *:[i32] }):$lo)
/* 27979*/            0, /*End of Scope*/
/* 27980*/          /*SwitchType*/ 24, MVT::i64,// ->28006
/* 27982*/            OPC_Scope, 10, /*->27994*/ // 2 children in Scope
/* 27984*/              OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 27986*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (MipsLo:{ *:[i64] } (tblockaddress:{ *:[i64] }):$lo)) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (tblockaddress:{ *:[i64] }):$lo)
/* 27994*/            /*Scope*/ 10, /*->28005*/
/* 27995*/              OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 27997*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsLo:{ *:[i64] } (tblockaddress:{ *:[i64] }):$lo)) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tblockaddress:{ *:[i64] }):$lo)
/* 28005*/            0, /*End of Scope*/
/* 28006*/          0, // EndSwitchType
/* 28007*/        /*SwitchOpcode*/ 56, TARGET_VAL(ISD::TargetJumpTable),// ->28066
/* 28010*/          OPC_MoveParent,
/* 28011*/          OPC_MoveParent,
/* 28012*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28039
/* 28015*/            OPC_Scope, 10, /*->28027*/ // 2 children in Scope
/* 28017*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28019*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (MipsLo:{ *:[i32] } (tjumptable:{ *:[i32] }):$lo)) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tjumptable:{ *:[i32] }):$lo)
/* 28027*/            /*Scope*/ 10, /*->28038*/
/* 28028*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28030*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (MipsLo:{ *:[i32] } (tjumptable:{ *:[i32] }):$lo)) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tjumptable:{ *:[i32] }):$lo)
/* 28038*/            0, /*End of Scope*/
/* 28039*/          /*SwitchType*/ 24, MVT::i64,// ->28065
/* 28041*/            OPC_Scope, 10, /*->28053*/ // 2 children in Scope
/* 28043*/              OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28045*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (MipsLo:{ *:[i64] } (tjumptable:{ *:[i64] }):$lo)) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (tjumptable:{ *:[i64] }):$lo)
/* 28053*/            /*Scope*/ 10, /*->28064*/
/* 28054*/              OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28056*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsLo:{ *:[i64] } (tjumptable:{ *:[i64] }):$lo)) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tjumptable:{ *:[i64] }):$lo)
/* 28064*/            0, /*End of Scope*/
/* 28065*/          0, // EndSwitchType
/* 28066*/        /*SwitchOpcode*/ 56, TARGET_VAL(ISD::TargetConstantPool),// ->28125
/* 28069*/          OPC_MoveParent,
/* 28070*/          OPC_MoveParent,
/* 28071*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28098
/* 28074*/            OPC_Scope, 10, /*->28086*/ // 2 children in Scope
/* 28076*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28078*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (MipsLo:{ *:[i32] } (tconstpool:{ *:[i32] }):$lo)) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tconstpool:{ *:[i32] }):$lo)
/* 28086*/            /*Scope*/ 10, /*->28097*/
/* 28087*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28089*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (MipsLo:{ *:[i32] } (tconstpool:{ *:[i32] }):$lo)) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tconstpool:{ *:[i32] }):$lo)
/* 28097*/            0, /*End of Scope*/
/* 28098*/          /*SwitchType*/ 24, MVT::i64,// ->28124
/* 28100*/            OPC_Scope, 10, /*->28112*/ // 2 children in Scope
/* 28102*/              OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28104*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (MipsLo:{ *:[i64] } (tconstpool:{ *:[i64] }):$lo)) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (tconstpool:{ *:[i64] }):$lo)
/* 28112*/            /*Scope*/ 10, /*->28123*/
/* 28113*/              OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28115*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsLo:{ *:[i64] } (tconstpool:{ *:[i64] }):$lo)) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tconstpool:{ *:[i64] }):$lo)
/* 28123*/            0, /*End of Scope*/
/* 28124*/          0, // EndSwitchType
/* 28125*/        /*SwitchOpcode*/ 56, TARGET_VAL(ISD::TargetGlobalTLSAddress),// ->28184
/* 28128*/          OPC_MoveParent,
/* 28129*/          OPC_MoveParent,
/* 28130*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28157
/* 28133*/            OPC_Scope, 10, /*->28145*/ // 2 children in Scope
/* 28135*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28137*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (MipsLo:{ *:[i32] } (tglobaltlsaddr:{ *:[i32] }):$lo)) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tglobaltlsaddr:{ *:[i32] }):$lo)
/* 28145*/            /*Scope*/ 10, /*->28156*/
/* 28146*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28148*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (MipsLo:{ *:[i32] } (tglobaltlsaddr:{ *:[i32] }):$lo)) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tglobaltlsaddr:{ *:[i32] }):$lo)
/* 28156*/            0, /*End of Scope*/
/* 28157*/          /*SwitchType*/ 24, MVT::i64,// ->28183
/* 28159*/            OPC_Scope, 10, /*->28171*/ // 2 children in Scope
/* 28161*/              OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28163*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (MipsLo:{ *:[i64] } (tglobaltlsaddr:{ *:[i64] }):$lo)) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (tglobaltlsaddr:{ *:[i64] }):$lo)
/* 28171*/            /*Scope*/ 10, /*->28182*/
/* 28172*/              OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28174*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsLo:{ *:[i64] } (tglobaltlsaddr:{ *:[i64] }):$lo)) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tglobaltlsaddr:{ *:[i64] }):$lo)
/* 28182*/            0, /*End of Scope*/
/* 28183*/          0, // EndSwitchType
/* 28184*/        /*SwitchOpcode*/ 56, TARGET_VAL(ISD::TargetExternalSymbol),// ->28243
/* 28187*/          OPC_MoveParent,
/* 28188*/          OPC_MoveParent,
/* 28189*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28216
/* 28192*/            OPC_Scope, 10, /*->28204*/ // 2 children in Scope
/* 28194*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28196*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (MipsLo:{ *:[i32] } (texternalsym:{ *:[i32] }):$lo)) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (texternalsym:{ *:[i32] }):$lo)
/* 28204*/            /*Scope*/ 10, /*->28215*/
/* 28205*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28207*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (MipsLo:{ *:[i32] } (texternalsym:{ *:[i32] }):$lo)) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (texternalsym:{ *:[i32] }):$lo)
/* 28215*/            0, /*End of Scope*/
/* 28216*/          /*SwitchType*/ 24, MVT::i64,// ->28242
/* 28218*/            OPC_Scope, 10, /*->28230*/ // 2 children in Scope
/* 28220*/              OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28222*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (MipsLo:{ *:[i64] } (texternalsym:{ *:[i64] }):$lo)) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (texternalsym:{ *:[i64] }):$lo)
/* 28230*/            /*Scope*/ 10, /*->28241*/
/* 28231*/              OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28233*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsLo:{ *:[i64] } (texternalsym:{ *:[i64] }):$lo)) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (texternalsym:{ *:[i64] }):$lo)
/* 28241*/            0, /*End of Scope*/
/* 28242*/          0, // EndSwitchType
/* 28243*/        0, // EndSwitchOpcode
/* 28244*/      /*SwitchOpcode*/ 94, TARGET_VAL(MipsISD::GPRel),// ->28341
/* 28247*/        OPC_RecordChild0, // #1 = $in
/* 28248*/        OPC_MoveChild0,
/* 28249*/        OPC_SwitchOpcode /*2 cases */, 42, TARGET_VAL(ISD::TargetGlobalAddress),// ->28295
/* 28253*/          OPC_MoveParent,
/* 28254*/          OPC_MoveParent,
/* 28255*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28282
/* 28258*/            OPC_Scope, 10, /*->28270*/ // 2 children in Scope
/* 28260*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28262*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (MipsGPRel:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in)) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tglobaladdr:{ *:[i32] }):$in)
/* 28270*/            /*Scope*/ 10, /*->28281*/
/* 28271*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28273*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (MipsGPRel:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in)) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tglobaladdr:{ *:[i32] }):$in)
/* 28281*/            0, /*End of Scope*/
/* 28282*/          /*SwitchType*/ 10, MVT::i64,// ->28294
/* 28284*/            OPC_CheckPatternPredicate, 61, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64())
/* 28286*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1, 
                      // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (MipsGPRel:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$in)) - Complexity = 9
                      // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (tglobaladdr:{ *:[i64] }):$in)
/* 28294*/          0, // EndSwitchType
/* 28295*/        /*SwitchOpcode*/ 42, TARGET_VAL(ISD::TargetConstantPool),// ->28340
/* 28298*/          OPC_MoveParent,
/* 28299*/          OPC_MoveParent,
/* 28300*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28327
/* 28303*/            OPC_Scope, 10, /*->28315*/ // 2 children in Scope
/* 28305*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28307*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (MipsGPRel:{ *:[i32] } (tconstpool:{ *:[i32] }):$in)) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tconstpool:{ *:[i32] }):$in)
/* 28315*/            /*Scope*/ 10, /*->28326*/
/* 28316*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28318*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (MipsGPRel:{ *:[i32] } (tconstpool:{ *:[i32] }):$in)) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tconstpool:{ *:[i32] }):$in)
/* 28326*/            0, /*End of Scope*/
/* 28327*/          /*SwitchType*/ 10, MVT::i64,// ->28339
/* 28329*/            OPC_CheckPatternPredicate, 61, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64())
/* 28331*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1, 
                      // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (MipsGPRel:{ *:[i64] } (tconstpool:{ *:[i64] }):$in)) - Complexity = 9
                      // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (tconstpool:{ *:[i64] }):$in)
/* 28339*/          0, // EndSwitchType
/* 28340*/        0, // EndSwitchOpcode
/* 28341*/      /*SwitchOpcode*/ 89, TARGET_VAL(MipsISD::Higher),// ->28433
/* 28344*/        OPC_RecordChild0, // #1 = $lo
/* 28345*/        OPC_MoveChild0,
/* 28346*/        OPC_SwitchOpcode /*5 cases */, 14, TARGET_VAL(ISD::TargetGlobalAddress),// ->28364
/* 28350*/          OPC_MoveParent,
/* 28351*/          OPC_MoveParent,
/* 28352*/          OPC_CheckType, MVT::i64,
/* 28354*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28356*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsHigher:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$lo)) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tglobaladdr:{ *:[i64] }):$lo)
/* 28364*/        /*SwitchOpcode*/ 14, TARGET_VAL(ISD::TargetBlockAddress),// ->28381
/* 28367*/          OPC_MoveParent,
/* 28368*/          OPC_MoveParent,
/* 28369*/          OPC_CheckType, MVT::i64,
/* 28371*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28373*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsHigher:{ *:[i64] } (tblockaddress:{ *:[i64] }):$lo)) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tblockaddress:{ *:[i64] }):$lo)
/* 28381*/        /*SwitchOpcode*/ 14, TARGET_VAL(ISD::TargetJumpTable),// ->28398
/* 28384*/          OPC_MoveParent,
/* 28385*/          OPC_MoveParent,
/* 28386*/          OPC_CheckType, MVT::i64,
/* 28388*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28390*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsHigher:{ *:[i64] } (tjumptable:{ *:[i64] }):$lo)) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tjumptable:{ *:[i64] }):$lo)
/* 28398*/        /*SwitchOpcode*/ 14, TARGET_VAL(ISD::TargetConstantPool),// ->28415
/* 28401*/          OPC_MoveParent,
/* 28402*/          OPC_MoveParent,
/* 28403*/          OPC_CheckType, MVT::i64,
/* 28405*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28407*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsHigher:{ *:[i64] } (tconstpool:{ *:[i64] }):$lo)) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tconstpool:{ *:[i64] }):$lo)
/* 28415*/        /*SwitchOpcode*/ 14, TARGET_VAL(ISD::TargetExternalSymbol),// ->28432
/* 28418*/          OPC_MoveParent,
/* 28419*/          OPC_MoveParent,
/* 28420*/          OPC_CheckType, MVT::i64,
/* 28422*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28424*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsHigher:{ *:[i64] } (texternalsym:{ *:[i64] }):$lo)) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (texternalsym:{ *:[i64] }):$lo)
/* 28432*/        0, // EndSwitchOpcode
/* 28433*/      /*SwitchOpcode*/ 89, TARGET_VAL(MipsISD::Hi),// ->28525
/* 28436*/        OPC_RecordChild0, // #1 = $lo
/* 28437*/        OPC_MoveChild0,
/* 28438*/        OPC_SwitchOpcode /*5 cases */, 14, TARGET_VAL(ISD::TargetGlobalAddress),// ->28456
/* 28442*/          OPC_MoveParent,
/* 28443*/          OPC_MoveParent,
/* 28444*/          OPC_CheckType, MVT::i64,
/* 28446*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28448*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsHi:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$lo)) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tglobaladdr:{ *:[i64] }):$lo)
/* 28456*/        /*SwitchOpcode*/ 14, TARGET_VAL(ISD::TargetBlockAddress),// ->28473
/* 28459*/          OPC_MoveParent,
/* 28460*/          OPC_MoveParent,
/* 28461*/          OPC_CheckType, MVT::i64,
/* 28463*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28465*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsHi:{ *:[i64] } (tblockaddress:{ *:[i64] }):$lo)) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tblockaddress:{ *:[i64] }):$lo)
/* 28473*/        /*SwitchOpcode*/ 14, TARGET_VAL(ISD::TargetJumpTable),// ->28490
/* 28476*/          OPC_MoveParent,
/* 28477*/          OPC_MoveParent,
/* 28478*/          OPC_CheckType, MVT::i64,
/* 28480*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28482*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsHi:{ *:[i64] } (tjumptable:{ *:[i64] }):$lo)) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tjumptable:{ *:[i64] }):$lo)
/* 28490*/        /*SwitchOpcode*/ 14, TARGET_VAL(ISD::TargetConstantPool),// ->28507
/* 28493*/          OPC_MoveParent,
/* 28494*/          OPC_MoveParent,
/* 28495*/          OPC_CheckType, MVT::i64,
/* 28497*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28499*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsHi:{ *:[i64] } (tconstpool:{ *:[i64] }):$lo)) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tconstpool:{ *:[i64] }):$lo)
/* 28507*/        /*SwitchOpcode*/ 14, TARGET_VAL(ISD::TargetExternalSymbol),// ->28524
/* 28510*/          OPC_MoveParent,
/* 28511*/          OPC_MoveParent,
/* 28512*/          OPC_CheckType, MVT::i64,
/* 28514*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28516*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (add:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (MipsHi:{ *:[i64] } (texternalsym:{ *:[i64] }):$lo)) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (texternalsym:{ *:[i64] }):$lo)
/* 28524*/        0, // EndSwitchOpcode
/* 28525*/      0, // EndSwitchOpcode
/* 28526*/    /*Scope*/ 35|128,5/*675*/, /*->29203*/
/* 28528*/      OPC_MoveChild0,
/* 28529*/      OPC_SwitchOpcode /*4 cases */, 119|128,2/*375*/, TARGET_VAL(MipsISD::Lo),// ->28909
/* 28534*/        OPC_RecordChild0, // #0 = $lo
/* 28535*/        OPC_MoveChild0,
/* 28536*/        OPC_SwitchOpcode /*6 cases */, 68, TARGET_VAL(ISD::TargetGlobalAddress),// ->28608
/* 28540*/          OPC_MoveParent,
/* 28541*/          OPC_MoveParent,
/* 28542*/          OPC_RecordChild1, // #1 = $hi
/* 28543*/          OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->28581
/* 28546*/            OPC_Scope, 10, /*->28558*/ // 3 children in Scope
/* 28548*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28550*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsLo:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$lo), GPR32Opnd:{ *:[i32] }:$hi) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tglobaladdr:{ *:[i32] }):$lo)
/* 28558*/            /*Scope*/ 10, /*->28569*/
/* 28559*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 28561*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::AddiuRxRxImmX16), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsLo:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$lo), CPU16Regs:{ *:[i32] }:$hi) - Complexity = 9
                        // Dst: (AddiuRxRxImmX16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$hi, (tglobaladdr:{ *:[i32] }):$lo)
/* 28569*/            /*Scope*/ 10, /*->28580*/
/* 28570*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28572*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsLo:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$lo), GPR32Opnd:{ *:[i32] }:$hi) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tglobaladdr:{ *:[i32] }):$lo)
/* 28580*/            0, /*End of Scope*/
/* 28581*/          /*SwitchType*/ 24, MVT::i64,// ->28607
/* 28583*/            OPC_Scope, 10, /*->28595*/ // 2 children in Scope
/* 28585*/              OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28587*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i64] } (MipsLo:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$lo), GPR64Opnd:{ *:[i64] }:$hi) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (tglobaladdr:{ *:[i64] }):$lo)
/* 28595*/            /*Scope*/ 10, /*->28606*/
/* 28596*/              OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28598*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i64] } (MipsLo:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tglobaladdr:{ *:[i64] }):$lo)
/* 28606*/            0, /*End of Scope*/
/* 28607*/          0, // EndSwitchType
/* 28608*/        /*SwitchOpcode*/ 57, TARGET_VAL(ISD::TargetBlockAddress),// ->28668
/* 28611*/          OPC_MoveParent,
/* 28612*/          OPC_MoveParent,
/* 28613*/          OPC_RecordChild1, // #1 = $hi
/* 28614*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28641
/* 28617*/            OPC_Scope, 10, /*->28629*/ // 2 children in Scope
/* 28619*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28621*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsLo:{ *:[i32] } (tblockaddress:{ *:[i32] }):$lo), GPR32Opnd:{ *:[i32] }:$hi) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tblockaddress:{ *:[i32] }):$lo)
/* 28629*/            /*Scope*/ 10, /*->28640*/
/* 28630*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28632*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsLo:{ *:[i32] } (tblockaddress:{ *:[i32] }):$lo), GPR32Opnd:{ *:[i32] }:$hi) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tblockaddress:{ *:[i32] }):$lo)
/* 28640*/            0, /*End of Scope*/
/* 28641*/          /*SwitchType*/ 24, MVT::i64,// ->28667
/* 28643*/            OPC_Scope, 10, /*->28655*/ // 2 children in Scope
/* 28645*/              OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28647*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i64] } (MipsLo:{ *:[i64] } (tblockaddress:{ *:[i64] }):$lo), GPR64Opnd:{ *:[i64] }:$hi) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (tblockaddress:{ *:[i64] }):$lo)
/* 28655*/            /*Scope*/ 10, /*->28666*/
/* 28656*/              OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28658*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i64] } (MipsLo:{ *:[i64] } (tblockaddress:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tblockaddress:{ *:[i64] }):$lo)
/* 28666*/            0, /*End of Scope*/
/* 28667*/          0, // EndSwitchType
/* 28668*/        /*SwitchOpcode*/ 57, TARGET_VAL(ISD::TargetJumpTable),// ->28728
/* 28671*/          OPC_MoveParent,
/* 28672*/          OPC_MoveParent,
/* 28673*/          OPC_RecordChild1, // #1 = $hi
/* 28674*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28701
/* 28677*/            OPC_Scope, 10, /*->28689*/ // 2 children in Scope
/* 28679*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28681*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsLo:{ *:[i32] } (tjumptable:{ *:[i32] }):$lo), GPR32Opnd:{ *:[i32] }:$hi) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tjumptable:{ *:[i32] }):$lo)
/* 28689*/            /*Scope*/ 10, /*->28700*/
/* 28690*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28692*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsLo:{ *:[i32] } (tjumptable:{ *:[i32] }):$lo), GPR32Opnd:{ *:[i32] }:$hi) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tjumptable:{ *:[i32] }):$lo)
/* 28700*/            0, /*End of Scope*/
/* 28701*/          /*SwitchType*/ 24, MVT::i64,// ->28727
/* 28703*/            OPC_Scope, 10, /*->28715*/ // 2 children in Scope
/* 28705*/              OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28707*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i64] } (MipsLo:{ *:[i64] } (tjumptable:{ *:[i64] }):$lo), GPR64Opnd:{ *:[i64] }:$hi) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (tjumptable:{ *:[i64] }):$lo)
/* 28715*/            /*Scope*/ 10, /*->28726*/
/* 28716*/              OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28718*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i64] } (MipsLo:{ *:[i64] } (tjumptable:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tjumptable:{ *:[i64] }):$lo)
/* 28726*/            0, /*End of Scope*/
/* 28727*/          0, // EndSwitchType
/* 28728*/        /*SwitchOpcode*/ 57, TARGET_VAL(ISD::TargetConstantPool),// ->28788
/* 28731*/          OPC_MoveParent,
/* 28732*/          OPC_MoveParent,
/* 28733*/          OPC_RecordChild1, // #1 = $hi
/* 28734*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28761
/* 28737*/            OPC_Scope, 10, /*->28749*/ // 2 children in Scope
/* 28739*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28741*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsLo:{ *:[i32] } (tconstpool:{ *:[i32] }):$lo), GPR32Opnd:{ *:[i32] }:$hi) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tconstpool:{ *:[i32] }):$lo)
/* 28749*/            /*Scope*/ 10, /*->28760*/
/* 28750*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28752*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsLo:{ *:[i32] } (tconstpool:{ *:[i32] }):$lo), GPR32Opnd:{ *:[i32] }:$hi) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tconstpool:{ *:[i32] }):$lo)
/* 28760*/            0, /*End of Scope*/
/* 28761*/          /*SwitchType*/ 24, MVT::i64,// ->28787
/* 28763*/            OPC_Scope, 10, /*->28775*/ // 2 children in Scope
/* 28765*/              OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28767*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i64] } (MipsLo:{ *:[i64] } (tconstpool:{ *:[i64] }):$lo), GPR64Opnd:{ *:[i64] }:$hi) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (tconstpool:{ *:[i64] }):$lo)
/* 28775*/            /*Scope*/ 10, /*->28786*/
/* 28776*/              OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28778*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i64] } (MipsLo:{ *:[i64] } (tconstpool:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tconstpool:{ *:[i64] }):$lo)
/* 28786*/            0, /*End of Scope*/
/* 28787*/          0, // EndSwitchType
/* 28788*/        /*SwitchOpcode*/ 57, TARGET_VAL(ISD::TargetGlobalTLSAddress),// ->28848
/* 28791*/          OPC_MoveParent,
/* 28792*/          OPC_MoveParent,
/* 28793*/          OPC_RecordChild1, // #1 = $hi
/* 28794*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28821
/* 28797*/            OPC_Scope, 10, /*->28809*/ // 2 children in Scope
/* 28799*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28801*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsLo:{ *:[i32] } (tglobaltlsaddr:{ *:[i32] }):$lo), GPR32Opnd:{ *:[i32] }:$hi) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tglobaltlsaddr:{ *:[i32] }):$lo)
/* 28809*/            /*Scope*/ 10, /*->28820*/
/* 28810*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28812*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsLo:{ *:[i32] } (tglobaltlsaddr:{ *:[i32] }):$lo), GPR32Opnd:{ *:[i32] }:$hi) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (tglobaltlsaddr:{ *:[i32] }):$lo)
/* 28820*/            0, /*End of Scope*/
/* 28821*/          /*SwitchType*/ 24, MVT::i64,// ->28847
/* 28823*/            OPC_Scope, 10, /*->28835*/ // 2 children in Scope
/* 28825*/              OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28827*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i64] } (MipsLo:{ *:[i64] } (tglobaltlsaddr:{ *:[i64] }):$lo), GPR64Opnd:{ *:[i64] }:$hi) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (tglobaltlsaddr:{ *:[i64] }):$lo)
/* 28835*/            /*Scope*/ 10, /*->28846*/
/* 28836*/              OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28838*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i64] } (MipsLo:{ *:[i64] } (tglobaltlsaddr:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tglobaltlsaddr:{ *:[i64] }):$lo)
/* 28846*/            0, /*End of Scope*/
/* 28847*/          0, // EndSwitchType
/* 28848*/        /*SwitchOpcode*/ 57, TARGET_VAL(ISD::TargetExternalSymbol),// ->28908
/* 28851*/          OPC_MoveParent,
/* 28852*/          OPC_MoveParent,
/* 28853*/          OPC_RecordChild1, // #1 = $hi
/* 28854*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28881
/* 28857*/            OPC_Scope, 10, /*->28869*/ // 2 children in Scope
/* 28859*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28861*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsLo:{ *:[i32] } (texternalsym:{ *:[i32] }):$lo), GPR32Opnd:{ *:[i32] }:$hi) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (texternalsym:{ *:[i32] }):$lo)
/* 28869*/            /*Scope*/ 10, /*->28880*/
/* 28870*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28872*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsLo:{ *:[i32] } (texternalsym:{ *:[i32] }):$lo), GPR32Opnd:{ *:[i32] }:$hi) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$hi, (texternalsym:{ *:[i32] }):$lo)
/* 28880*/            0, /*End of Scope*/
/* 28881*/          /*SwitchType*/ 24, MVT::i64,// ->28907
/* 28883*/            OPC_Scope, 10, /*->28895*/ // 2 children in Scope
/* 28885*/              OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28887*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i64] } (MipsLo:{ *:[i64] } (texternalsym:{ *:[i64] }):$lo), GPR64Opnd:{ *:[i64] }:$hi) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$hi, (texternalsym:{ *:[i64] }):$lo)
/* 28895*/            /*Scope*/ 10, /*->28906*/
/* 28896*/              OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 28898*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                            MVT::i64, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i64] } (MipsLo:{ *:[i64] } (texternalsym:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                        // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (texternalsym:{ *:[i64] }):$lo)
/* 28906*/            0, /*End of Scope*/
/* 28907*/          0, // EndSwitchType
/* 28908*/        0, // EndSwitchOpcode
/* 28909*/      /*SwitchOpcode*/ 96, TARGET_VAL(MipsISD::GPRel),// ->29008
/* 28912*/        OPC_RecordChild0, // #0 = $in
/* 28913*/        OPC_MoveChild0,
/* 28914*/        OPC_SwitchOpcode /*2 cases */, 43, TARGET_VAL(ISD::TargetGlobalAddress),// ->28961
/* 28918*/          OPC_MoveParent,
/* 28919*/          OPC_MoveParent,
/* 28920*/          OPC_RecordChild1, // #1 = $gp
/* 28921*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28948
/* 28924*/            OPC_Scope, 10, /*->28936*/ // 2 children in Scope
/* 28926*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28928*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsGPRel:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in), GPR32:{ *:[i32] }:$gp) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tglobaladdr:{ *:[i32] }):$in)
/* 28936*/            /*Scope*/ 10, /*->28947*/
/* 28937*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28939*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsGPRel:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in), GPR32:{ *:[i32] }:$gp) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tglobaladdr:{ *:[i32] }):$in)
/* 28947*/            0, /*End of Scope*/
/* 28948*/          /*SwitchType*/ 10, MVT::i64,// ->28960
/* 28950*/            OPC_CheckPatternPredicate, 61, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64())
/* 28952*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                          MVT::i64, 2/*#Ops*/, 1, 0, 
                      // Src: (add:{ *:[i64] } (MipsGPRel:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$in), GPR64:{ *:[i64] }:$gp) - Complexity = 9
                      // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (tglobaladdr:{ *:[i64] }):$in)
/* 28960*/          0, // EndSwitchType
/* 28961*/        /*SwitchOpcode*/ 43, TARGET_VAL(ISD::TargetConstantPool),// ->29007
/* 28964*/          OPC_MoveParent,
/* 28965*/          OPC_MoveParent,
/* 28966*/          OPC_RecordChild1, // #1 = $gp
/* 28967*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28994
/* 28970*/            OPC_Scope, 10, /*->28982*/ // 2 children in Scope
/* 28972*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28974*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsGPRel:{ *:[i32] } (tconstpool:{ *:[i32] }):$in), GPR32:{ *:[i32] }:$gp) - Complexity = 9
                        // Dst: (ADDiu:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tconstpool:{ *:[i32] }):$in)
/* 28982*/            /*Scope*/ 10, /*->28993*/
/* 28983*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28985*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0, 
                        // Src: (add:{ *:[i32] } (MipsGPRel:{ *:[i32] } (tconstpool:{ *:[i32] }):$in), GPR32:{ *:[i32] }:$gp) - Complexity = 9
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tconstpool:{ *:[i32] }):$in)
/* 28993*/            0, /*End of Scope*/
/* 28994*/          /*SwitchType*/ 10, MVT::i64,// ->29006
/* 28996*/            OPC_CheckPatternPredicate, 61, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64())
/* 28998*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                          MVT::i64, 2/*#Ops*/, 1, 0, 
                      // Src: (add:{ *:[i64] } (MipsGPRel:{ *:[i64] } (tconstpool:{ *:[i64] }):$in), GPR64:{ *:[i64] }:$gp) - Complexity = 9
                      // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (tconstpool:{ *:[i64] }):$in)
/* 29006*/          0, // EndSwitchType
/* 29007*/        0, // EndSwitchOpcode
/* 29008*/      /*SwitchOpcode*/ 94, TARGET_VAL(MipsISD::Higher),// ->29105
/* 29011*/        OPC_RecordChild0, // #0 = $lo
/* 29012*/        OPC_MoveChild0,
/* 29013*/        OPC_SwitchOpcode /*5 cases */, 15, TARGET_VAL(ISD::TargetGlobalAddress),// ->29032
/* 29017*/          OPC_MoveParent,
/* 29018*/          OPC_MoveParent,
/* 29019*/          OPC_RecordChild1, // #1 = $hi
/* 29020*/          OPC_CheckType, MVT::i64,
/* 29022*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 29024*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (add:{ *:[i64] } (MipsHigher:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tglobaladdr:{ *:[i64] }):$lo)
/* 29032*/        /*SwitchOpcode*/ 15, TARGET_VAL(ISD::TargetBlockAddress),// ->29050
/* 29035*/          OPC_MoveParent,
/* 29036*/          OPC_MoveParent,
/* 29037*/          OPC_RecordChild1, // #1 = $hi
/* 29038*/          OPC_CheckType, MVT::i64,
/* 29040*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 29042*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (add:{ *:[i64] } (MipsHigher:{ *:[i64] } (tblockaddress:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tblockaddress:{ *:[i64] }):$lo)
/* 29050*/        /*SwitchOpcode*/ 15, TARGET_VAL(ISD::TargetJumpTable),// ->29068
/* 29053*/          OPC_MoveParent,
/* 29054*/          OPC_MoveParent,
/* 29055*/          OPC_RecordChild1, // #1 = $hi
/* 29056*/          OPC_CheckType, MVT::i64,
/* 29058*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 29060*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (add:{ *:[i64] } (MipsHigher:{ *:[i64] } (tjumptable:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tjumptable:{ *:[i64] }):$lo)
/* 29068*/        /*SwitchOpcode*/ 15, TARGET_VAL(ISD::TargetConstantPool),// ->29086
/* 29071*/          OPC_MoveParent,
/* 29072*/          OPC_MoveParent,
/* 29073*/          OPC_RecordChild1, // #1 = $hi
/* 29074*/          OPC_CheckType, MVT::i64,
/* 29076*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 29078*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (add:{ *:[i64] } (MipsHigher:{ *:[i64] } (tconstpool:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tconstpool:{ *:[i64] }):$lo)
/* 29086*/        /*SwitchOpcode*/ 15, TARGET_VAL(ISD::TargetExternalSymbol),// ->29104
/* 29089*/          OPC_MoveParent,
/* 29090*/          OPC_MoveParent,
/* 29091*/          OPC_RecordChild1, // #1 = $hi
/* 29092*/          OPC_CheckType, MVT::i64,
/* 29094*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 29096*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (add:{ *:[i64] } (MipsHigher:{ *:[i64] } (texternalsym:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (texternalsym:{ *:[i64] }):$lo)
/* 29104*/        0, // EndSwitchOpcode
/* 29105*/      /*SwitchOpcode*/ 94, TARGET_VAL(MipsISD::Hi),// ->29202
/* 29108*/        OPC_RecordChild0, // #0 = $lo
/* 29109*/        OPC_MoveChild0,
/* 29110*/        OPC_SwitchOpcode /*5 cases */, 15, TARGET_VAL(ISD::TargetGlobalAddress),// ->29129
/* 29114*/          OPC_MoveParent,
/* 29115*/          OPC_MoveParent,
/* 29116*/          OPC_RecordChild1, // #1 = $hi
/* 29117*/          OPC_CheckType, MVT::i64,
/* 29119*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 29121*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (add:{ *:[i64] } (MipsHi:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tglobaladdr:{ *:[i64] }):$lo)
/* 29129*/        /*SwitchOpcode*/ 15, TARGET_VAL(ISD::TargetBlockAddress),// ->29147
/* 29132*/          OPC_MoveParent,
/* 29133*/          OPC_MoveParent,
/* 29134*/          OPC_RecordChild1, // #1 = $hi
/* 29135*/          OPC_CheckType, MVT::i64,
/* 29137*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 29139*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (add:{ *:[i64] } (MipsHi:{ *:[i64] } (tblockaddress:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tblockaddress:{ *:[i64] }):$lo)
/* 29147*/        /*SwitchOpcode*/ 15, TARGET_VAL(ISD::TargetJumpTable),// ->29165
/* 29150*/          OPC_MoveParent,
/* 29151*/          OPC_MoveParent,
/* 29152*/          OPC_RecordChild1, // #1 = $hi
/* 29153*/          OPC_CheckType, MVT::i64,
/* 29155*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 29157*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (add:{ *:[i64] } (MipsHi:{ *:[i64] } (tjumptable:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tjumptable:{ *:[i64] }):$lo)
/* 29165*/        /*SwitchOpcode*/ 15, TARGET_VAL(ISD::TargetConstantPool),// ->29183
/* 29168*/          OPC_MoveParent,
/* 29169*/          OPC_MoveParent,
/* 29170*/          OPC_RecordChild1, // #1 = $hi
/* 29171*/          OPC_CheckType, MVT::i64,
/* 29173*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 29175*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (add:{ *:[i64] } (MipsHi:{ *:[i64] } (tconstpool:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (tconstpool:{ *:[i64] }):$lo)
/* 29183*/        /*SwitchOpcode*/ 15, TARGET_VAL(ISD::TargetExternalSymbol),// ->29201
/* 29186*/          OPC_MoveParent,
/* 29187*/          OPC_MoveParent,
/* 29188*/          OPC_RecordChild1, // #1 = $hi
/* 29189*/          OPC_CheckType, MVT::i64,
/* 29191*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 29193*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (add:{ *:[i64] } (MipsHi:{ *:[i64] } (texternalsym:{ *:[i64] }):$lo), GPR64:{ *:[i64] }:$hi) - Complexity = 9
                    // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$hi, (texternalsym:{ *:[i64] }):$lo)
/* 29201*/        0, // EndSwitchOpcode
/* 29202*/      0, // EndSwitchOpcode
/* 29203*/    /*Scope*/ 34|128,3/*418*/, /*->29623*/
/* 29205*/      OPC_RecordChild0, // #0 = $rs
/* 29206*/      OPC_Scope, 95|128,2/*351*/, /*->29560*/ // 2 children in Scope
/* 29209*/        OPC_RecordChild1, // #1 = $imm16
/* 29210*/        OPC_Scope, 20|128,1/*148*/, /*->29361*/ // 7 children in Scope
/* 29213*/          OPC_MoveChild1,
/* 29214*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 29217*/          OPC_Scope, 17, /*->29236*/ // 7 children in Scope
/* 29219*/            OPC_CheckPredicate, 45, // Predicate_imm32SExt16
/* 29221*/            OPC_MoveParent,
/* 29222*/            OPC_CheckType, MVT::i32,
/* 29224*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29226*/            OPC_EmitConvertToTarget, 1,
/* 29228*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_imm32SExt16>>:$imm16) - Complexity = 7
                      // Dst: (ADDiu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$imm16)
/* 29236*/          /*Scope*/ 17, /*->29254*/
/* 29237*/            OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 29239*/            OPC_MoveParent,
/* 29240*/            OPC_CheckType, MVT::i64,
/* 29242*/            OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29244*/            OPC_EmitConvertToTarget, 1,
/* 29246*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                          MVT::i64, 2/*#Ops*/, 0, 2, 
                      // Src: (add:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$imm16) - Complexity = 7
                      // Dst: (DADDiu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] }):$imm16)
/* 29254*/          /*Scope*/ 17, /*->29272*/
/* 29255*/            OPC_CheckPredicate, 46, // Predicate_immSExt8
/* 29257*/            OPC_MoveParent,
/* 29258*/            OPC_CheckType, MVT::i32,
/* 29260*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 29262*/            OPC_EmitConvertToTarget, 1,
/* 29264*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::AddiuRxRxImm16), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (add:{ *:[i32] } CPU16Regs:{ *:[i32] }:$in, (imm:{ *:[i32] })<<P:Predicate_immSExt8>>:$imm) - Complexity = 7
                      // Dst: (AddiuRxRxImm16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$in, (imm:{ *:[i32] })<<P:Predicate_immSExt8>>:$imm)
/* 29272*/          /*Scope*/ 17, /*->29290*/
/* 29273*/            OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 29275*/            OPC_MoveParent,
/* 29276*/            OPC_CheckType, MVT::i32,
/* 29278*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 29280*/            OPC_EmitConvertToTarget, 1,
/* 29282*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::AddiuRxRxImmX16), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (add:{ *:[i32] } CPU16Regs:{ *:[i32] }:$in, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm) - Complexity = 7
                      // Dst: (AddiuRxRxImmX16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$in, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm)
/* 29290*/          /*Scope*/ 17, /*->29308*/
/* 29291*/            OPC_CheckPredicate, 47, // Predicate_immSExtAddiur2
/* 29293*/            OPC_MoveParent,
/* 29294*/            OPC_CheckType, MVT::i32,
/* 29296*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 29298*/            OPC_EmitConvertToTarget, 1,
/* 29300*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDIUR2_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (add:{ *:[i32] } GPRMM16:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immSExtAddiur2>>:$imm) - Complexity = 7
                      // Dst: (ADDIUR2_MM:{ *:[i32] } GPRMM16:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immSExtAddiur2>>:$imm)
/* 29308*/          /*Scope*/ 17, /*->29326*/
/* 29309*/            OPC_CheckPredicate, 48, // Predicate_immSExtAddius5
/* 29311*/            OPC_MoveParent,
/* 29312*/            OPC_CheckType, MVT::i32,
/* 29314*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 29316*/            OPC_EmitConvertToTarget, 1,
/* 29318*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDIUS5_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (add:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immSExtAddius5>>:$imm) - Complexity = 7
                      // Dst: (ADDIUS5_MM:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immSExtAddius5>>:$imm)
/* 29326*/          /*Scope*/ 33, /*->29360*/
/* 29327*/            OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 29329*/            OPC_MoveParent,
/* 29330*/            OPC_CheckType, MVT::i32,
/* 29332*/            OPC_Scope, 12, /*->29346*/ // 2 children in Scope
/* 29334*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 29336*/              OPC_EmitConvertToTarget, 1,
/* 29338*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 2, 
                        // Src: (add:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm) - Complexity = 7
                        // Dst: (ADDiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm)
/* 29346*/            /*Scope*/ 12, /*->29359*/
/* 29347*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 29349*/              OPC_EmitConvertToTarget, 1,
/* 29351*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDIU_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 0, 2, 
                        // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm16) - Complexity = 7
                        // Dst: (ADDIU_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$imm16)
/* 29359*/            0, /*End of Scope*/
/* 29360*/          0, /*End of Scope*/
/* 29361*/        /*Scope*/ 60, /*->29422*/
/* 29362*/          OPC_CheckType, MVT::i32,
/* 29364*/          OPC_Scope, 10, /*->29376*/ // 4 children in Scope
/* 29366*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 29368*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU16_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (add:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, GPRMM16Opnd:{ *:[i32] }:$rt) - Complexity = 4
                      // Dst: (ADDU16_MMR6:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, GPRMM16Opnd:{ *:[i32] }:$rt)
/* 29376*/          /*Scope*/ 10, /*->29387*/
/* 29377*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29379*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDu), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                      // Dst: (ADDu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 29387*/          /*Scope*/ 10, /*->29398*/
/* 29388*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 29390*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::AdduRxRyRz16), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (add:{ *:[i32] } CPU16Regs:{ *:[i32] }:$l, CPU16Regs:{ *:[i32] }:$r) - Complexity = 3
                      // Dst: (AdduRxRyRz16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$l, CPU16Regs:{ *:[i32] }:$r)
/* 29398*/          /*Scope*/ 22, /*->29421*/
/* 29399*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 29401*/            OPC_Scope, 8, /*->29411*/ // 2 children in Scope
/* 29403*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU16_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, GPRMM16Opnd:{ *:[i32] }:$rt) - Complexity = 3
                        // Dst: (ADDU16_MM:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, GPRMM16Opnd:{ *:[i32] }:$rt)
/* 29411*/            /*Scope*/ 8, /*->29420*/
/* 29412*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                        // Dst: (ADDu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 29420*/            0, /*End of Scope*/
/* 29421*/          0, /*End of Scope*/
/* 29422*/        /*Scope*/ 12, /*->29435*/
/* 29423*/          OPC_CheckType, MVT::i64,
/* 29425*/          OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29427*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDu), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (add:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                    // Dst: (DADDu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 29435*/        /*Scope*/ 30, /*->29466*/
/* 29436*/          OPC_CheckType, MVT::v16i8,
/* 29438*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29440*/          OPC_Scope, 11, /*->29453*/ // 2 children in Scope
/* 29442*/            OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 29445*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDVI_B), 0,
                          MVT::v16i8, 2/*#Ops*/, 0, 2, 
                      // Src: (add:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm5:{ *:[v16i8] }:$imm) - Complexity = 9
                      // Dst: (ADDVI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm5:{ *:[v16i8] }:$imm)
/* 29453*/          /*Scope*/ 11, /*->29465*/
/* 29454*/            OPC_CheckComplexPat, /*CP*/16, /*#*/0, // selectVSplatUimm5:$imm #2
/* 29457*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDVI_B), 0,
                          MVT::v16i8, 2/*#Ops*/, 1, 2, 
                      // Src: (add:{ *:[v16i8] } vsplati8_uimm5:{ *:[v16i8] }:$imm, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 9
                      // Dst: (ADDVI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm5:{ *:[v16i8] }:$imm)
/* 29465*/          0, /*End of Scope*/
/* 29466*/        /*Scope*/ 30, /*->29497*/
/* 29467*/          OPC_CheckType, MVT::v8i16,
/* 29469*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29471*/          OPC_Scope, 11, /*->29484*/ // 2 children in Scope
/* 29473*/            OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 29476*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDVI_H), 0,
                          MVT::v8i16, 2/*#Ops*/, 0, 2, 
                      // Src: (add:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm5:{ *:[v8i16] }:$imm) - Complexity = 9
                      // Dst: (ADDVI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm5:{ *:[v8i16] }:$imm)
/* 29484*/          /*Scope*/ 11, /*->29496*/
/* 29485*/            OPC_CheckComplexPat, /*CP*/17, /*#*/0, // selectVSplatUimm5:$imm #2
/* 29488*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDVI_H), 0,
                          MVT::v8i16, 2/*#Ops*/, 1, 2, 
                      // Src: (add:{ *:[v8i16] } vsplati16_uimm5:{ *:[v8i16] }:$imm, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 9
                      // Dst: (ADDVI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm5:{ *:[v8i16] }:$imm)
/* 29496*/          0, /*End of Scope*/
/* 29497*/        /*Scope*/ 30, /*->29528*/
/* 29498*/          OPC_CheckType, MVT::v4i32,
/* 29500*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29502*/          OPC_Scope, 11, /*->29515*/ // 2 children in Scope
/* 29504*/            OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 29507*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDVI_W), 0,
                          MVT::v4i32, 2/*#Ops*/, 0, 2, 
                      // Src: (add:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$imm) - Complexity = 9
                      // Dst: (ADDVI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$imm)
/* 29515*/          /*Scope*/ 11, /*->29527*/
/* 29516*/            OPC_CheckComplexPat, /*CP*/18, /*#*/0, // selectVSplatUimm5:$imm #2
/* 29519*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDVI_W), 0,
                          MVT::v4i32, 2/*#Ops*/, 1, 2, 
                      // Src: (add:{ *:[v4i32] } vsplati32_uimm5:{ *:[v4i32] }:$imm, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 9
                      // Dst: (ADDVI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$imm)
/* 29527*/          0, /*End of Scope*/
/* 29528*/        /*Scope*/ 30, /*->29559*/
/* 29529*/          OPC_CheckType, MVT::v2i64,
/* 29531*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29533*/          OPC_Scope, 11, /*->29546*/ // 2 children in Scope
/* 29535*/            OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 29538*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDVI_D), 0,
                          MVT::v2i64, 2/*#Ops*/, 0, 2, 
                      // Src: (add:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm5:{ *:[v2i64] }:$imm) - Complexity = 9
                      // Dst: (ADDVI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm5:{ *:[v2i64] }:$imm)
/* 29546*/          /*Scope*/ 11, /*->29558*/
/* 29547*/            OPC_CheckComplexPat, /*CP*/19, /*#*/0, // selectVSplatUimm5:$imm #2
/* 29550*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDVI_D), 0,
                          MVT::v2i64, 2/*#Ops*/, 1, 2, 
                      // Src: (add:{ *:[v2i64] } vsplati64_uimm5:{ *:[v2i64] }:$imm, MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 9
                      // Dst: (ADDVI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm5:{ *:[v2i64] }:$imm)
/* 29558*/          0, /*End of Scope*/
/* 29559*/        0, /*End of Scope*/
/* 29560*/      /*Scope*/ 61, /*->29622*/
/* 29561*/        OPC_MoveChild1,
/* 29562*/        OPC_CheckOpcode, TARGET_VAL(ISD::MUL),
/* 29565*/        OPC_RecordChild0, // #1 = $ws
/* 29566*/        OPC_RecordChild1, // #2 = $wt
/* 29567*/        OPC_MoveParent,
/* 29568*/        OPC_SwitchType /*4 cases */, 11, MVT::v16i8,// ->29582
/* 29571*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29573*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MADDV_B), 0,
                        MVT::v16i8, 3/*#Ops*/, 0, 1, 2, 
                    // Src: (add:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, (mul:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)) - Complexity = 6
                    // Dst: (MADDV_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 29582*/        /*SwitchType*/ 11, MVT::v8i16,// ->29595
/* 29584*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29586*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MADDV_H), 0,
                        MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                    // Src: (add:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, (mul:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)) - Complexity = 6
                    // Dst: (MADDV_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 29595*/        /*SwitchType*/ 11, MVT::v4i32,// ->29608
/* 29597*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29599*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MADDV_W), 0,
                        MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                    // Src: (add:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, (mul:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)) - Complexity = 6
                    // Dst: (MADDV_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 29608*/        /*SwitchType*/ 11, MVT::v2i64,// ->29621
/* 29610*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29612*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MADDV_D), 0,
                        MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                    // Src: (add:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, (mul:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)) - Complexity = 6
                    // Dst: (MADDV_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 29621*/        0, // EndSwitchType
/* 29622*/      0, /*End of Scope*/
/* 29623*/    /*Scope*/ 62, /*->29686*/
/* 29624*/      OPC_MoveChild0,
/* 29625*/      OPC_CheckOpcode, TARGET_VAL(ISD::MUL),
/* 29628*/      OPC_RecordChild0, // #0 = $ws
/* 29629*/      OPC_RecordChild1, // #1 = $wt
/* 29630*/      OPC_MoveParent,
/* 29631*/      OPC_RecordChild1, // #2 = $wd_in
/* 29632*/      OPC_SwitchType /*4 cases */, 11, MVT::v16i8,// ->29646
/* 29635*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29637*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MADDV_B), 0,
                      MVT::v16i8, 3/*#Ops*/, 2, 0, 1, 
                  // Src: (add:{ *:[v16i8] } (mul:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt), MSA128BOpnd:{ *:[v16i8] }:$wd_in) - Complexity = 6
                  // Dst: (MADDV_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 29646*/      /*SwitchType*/ 11, MVT::v8i16,// ->29659
/* 29648*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29650*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MADDV_H), 0,
                      MVT::v8i16, 3/*#Ops*/, 2, 0, 1, 
                  // Src: (add:{ *:[v8i16] } (mul:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt), MSA128HOpnd:{ *:[v8i16] }:$wd_in) - Complexity = 6
                  // Dst: (MADDV_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 29659*/      /*SwitchType*/ 11, MVT::v4i32,// ->29672
/* 29661*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29663*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MADDV_W), 0,
                      MVT::v4i32, 3/*#Ops*/, 2, 0, 1, 
                  // Src: (add:{ *:[v4i32] } (mul:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt), MSA128WOpnd:{ *:[v4i32] }:$wd_in) - Complexity = 6
                  // Dst: (MADDV_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 29672*/      /*SwitchType*/ 11, MVT::v2i64,// ->29685
/* 29674*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29676*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MADDV_D), 0,
                      MVT::v2i64, 3/*#Ops*/, 2, 0, 1, 
                  // Src: (add:{ *:[v2i64] } (mul:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt), MSA128DOpnd:{ *:[v2i64] }:$wd_in) - Complexity = 6
                  // Dst: (MADDV_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 29685*/      0, // EndSwitchType
/* 29686*/    /*Scope*/ 76, /*->29763*/
/* 29687*/      OPC_RecordChild0, // #0 = $a
/* 29688*/      OPC_RecordChild1, // #1 = $b
/* 29689*/      OPC_SwitchType /*6 cases */, 10, MVT::v2i16,// ->29702
/* 29692*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 29694*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQ_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (add:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b) - Complexity = 3
                  // Dst: (ADDQ_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b)
/* 29702*/      /*SwitchType*/ 10, MVT::v4i8,// ->29714
/* 29704*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 29706*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (add:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b) - Complexity = 3
                  // Dst: (ADDU_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b)
/* 29714*/      /*SwitchType*/ 10, MVT::v16i8,// ->29726
/* 29716*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29718*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDV_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (add:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                  // Dst: (ADDV_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 29726*/      /*SwitchType*/ 10, MVT::v8i16,// ->29738
/* 29728*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29730*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDV_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (add:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                  // Dst: (ADDV_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 29738*/      /*SwitchType*/ 10, MVT::v4i32,// ->29750
/* 29740*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29742*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDV_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (add:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                  // Dst: (ADDV_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 29750*/      /*SwitchType*/ 10, MVT::v2i64,// ->29762
/* 29752*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29754*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDV_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (add:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                  // Dst: (ADDV_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 29762*/      0, // EndSwitchType
/* 29763*/    0, /*End of Scope*/
/* 29764*/  /*SwitchOpcode*/ 7|128,5/*647*/, TARGET_VAL(ISD::SIGN_EXTEND),// ->30415
/* 29768*/    OPC_Scope, 118|128,4/*630*/, /*->30401*/ // 2 children in Scope
/* 29771*/      OPC_MoveChild0,
/* 29772*/      OPC_SwitchOpcode /*12 cases */, 73, TARGET_VAL(ISD::ADD),// ->29849
/* 29776*/        OPC_RecordChild0, // #0 = $src
/* 29777*/        OPC_RecordChild1, // #1 = $imm16
/* 29778*/        OPC_Scope, 38, /*->29818*/ // 2 children in Scope
/* 29780*/          OPC_MoveChild1,
/* 29781*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 29784*/          OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 29786*/          OPC_MoveParent,
/* 29787*/          OPC_MoveParent,
/* 29788*/          OPC_CheckType, MVT::i64,
/* 29790*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 29796*/          OPC_EmitConvertToTarget, 1,
/* 29798*/          OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 3,  // Results = #4
/* 29806*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 29809*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                        MVT::i64, 3/*#Ops*/, 2, 4, 5, 
                    // Src: (sext:{ *:[i64] } (add:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm16)) - Complexity = 10
                    // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (ADDiu:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm16), sub_32:{ *:[i32] })
/* 29818*/        /*Scope*/ 29, /*->29848*/
/* 29819*/          OPC_MoveParent,
/* 29820*/          OPC_CheckType, MVT::i64,
/* 29822*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 29828*/          OPC_EmitNode1, TARGET_VAL(Mips::ADDu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 29836*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 29839*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                        MVT::i64, 3/*#Ops*/, 2, 3, 4, 
                    // Src: (sext:{ *:[i64] } (add:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2)) - Complexity = 6
                    // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (ADDu:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2), sub_32:{ *:[i32] })
/* 29848*/        0, /*End of Scope*/
/* 29849*/      /*SwitchOpcode*/ 77, TARGET_VAL(ISD::SHL),// ->29929
/* 29852*/        OPC_RecordChild0, // #0 = $src
/* 29853*/        OPC_RecordChild1, // #1 = $imm5
/* 29854*/        OPC_Scope, 40, /*->29896*/ // 2 children in Scope
/* 29856*/          OPC_MoveChild1,
/* 29857*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 29860*/          OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 29862*/          OPC_CheckType, MVT::i32,
/* 29864*/          OPC_MoveParent,
/* 29865*/          OPC_MoveParent,
/* 29866*/          OPC_CheckType, MVT::i64,
/* 29868*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 29874*/          OPC_EmitConvertToTarget, 1,
/* 29876*/          OPC_EmitNode1, TARGET_VAL(Mips::SLL), 0,
                        MVT::i32, 2/*#Ops*/, 0, 3,  // Results = #4
/* 29884*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 29887*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                        MVT::i64, 3/*#Ops*/, 2, 4, 5, 
                    // Src: (sext:{ *:[i64] } (shl:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm5)) - Complexity = 10
                    // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (SLL:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm5), sub_32:{ *:[i32] })
/* 29896*/        /*Scope*/ 31, /*->29928*/
/* 29897*/          OPC_CheckChild1Type, MVT::i32,
/* 29899*/          OPC_MoveParent,
/* 29900*/          OPC_CheckType, MVT::i64,
/* 29902*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 29908*/          OPC_EmitNode1, TARGET_VAL(Mips::SLLV), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 29916*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 29919*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                        MVT::i64, 3/*#Ops*/, 2, 3, 4, 
                    // Src: (sext:{ *:[i64] } (shl:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2)) - Complexity = 6
                    // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (SLLV:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2), sub_32:{ *:[i32] })
/* 29928*/        0, /*End of Scope*/
/* 29929*/      /*SwitchOpcode*/ 77, TARGET_VAL(ISD::SRL),// ->30009
/* 29932*/        OPC_RecordChild0, // #0 = $src
/* 29933*/        OPC_RecordChild1, // #1 = $imm5
/* 29934*/        OPC_Scope, 40, /*->29976*/ // 2 children in Scope
/* 29936*/          OPC_MoveChild1,
/* 29937*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 29940*/          OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 29942*/          OPC_CheckType, MVT::i32,
/* 29944*/          OPC_MoveParent,
/* 29945*/          OPC_MoveParent,
/* 29946*/          OPC_CheckType, MVT::i64,
/* 29948*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 29954*/          OPC_EmitConvertToTarget, 1,
/* 29956*/          OPC_EmitNode1, TARGET_VAL(Mips::SRL), 0,
                        MVT::i32, 2/*#Ops*/, 0, 3,  // Results = #4
/* 29964*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 29967*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                        MVT::i64, 3/*#Ops*/, 2, 4, 5, 
                    // Src: (sext:{ *:[i64] } (srl:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm5)) - Complexity = 10
                    // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (SRL:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm5), sub_32:{ *:[i32] })
/* 29976*/        /*Scope*/ 31, /*->30008*/
/* 29977*/          OPC_CheckChild1Type, MVT::i32,
/* 29979*/          OPC_MoveParent,
/* 29980*/          OPC_CheckType, MVT::i64,
/* 29982*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 29988*/          OPC_EmitNode1, TARGET_VAL(Mips::SRLV), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 29996*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 29999*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                        MVT::i64, 3/*#Ops*/, 2, 3, 4, 
                    // Src: (sext:{ *:[i64] } (srl:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2)) - Complexity = 6
                    // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (SRLV:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2), sub_32:{ *:[i32] })
/* 30008*/        0, /*End of Scope*/
/* 30009*/      /*SwitchOpcode*/ 77, TARGET_VAL(ISD::SRA),// ->30089
/* 30012*/        OPC_RecordChild0, // #0 = $src
/* 30013*/        OPC_RecordChild1, // #1 = $imm5
/* 30014*/        OPC_Scope, 40, /*->30056*/ // 2 children in Scope
/* 30016*/          OPC_MoveChild1,
/* 30017*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 30020*/          OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 30022*/          OPC_CheckType, MVT::i32,
/* 30024*/          OPC_MoveParent,
/* 30025*/          OPC_MoveParent,
/* 30026*/          OPC_CheckType, MVT::i64,
/* 30028*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30034*/          OPC_EmitConvertToTarget, 1,
/* 30036*/          OPC_EmitNode1, TARGET_VAL(Mips::SRA), 0,
                        MVT::i32, 2/*#Ops*/, 0, 3,  // Results = #4
/* 30044*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30047*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                        MVT::i64, 3/*#Ops*/, 2, 4, 5, 
                    // Src: (sext:{ *:[i64] } (sra:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm5)) - Complexity = 10
                    // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (SRA:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm5), sub_32:{ *:[i32] })
/* 30056*/        /*Scope*/ 31, /*->30088*/
/* 30057*/          OPC_CheckChild1Type, MVT::i32,
/* 30059*/          OPC_MoveParent,
/* 30060*/          OPC_CheckType, MVT::i64,
/* 30062*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30068*/          OPC_EmitNode1, TARGET_VAL(Mips::SRAV), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30076*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30079*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                        MVT::i64, 3/*#Ops*/, 2, 3, 4, 
                    // Src: (sext:{ *:[i64] } (sra:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2)) - Complexity = 6
                    // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (SRAV:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2), sub_32:{ *:[i32] })
/* 30088*/        0, /*End of Scope*/
/* 30089*/      /*SwitchOpcode*/ 31, TARGET_VAL(ISD::SUB),// ->30123
/* 30092*/        OPC_RecordChild0, // #0 = $src
/* 30093*/        OPC_RecordChild1, // #1 = $src2
/* 30094*/        OPC_MoveParent,
/* 30095*/        OPC_CheckType, MVT::i64,
/* 30097*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30103*/        OPC_EmitNode1, TARGET_VAL(Mips::SUBu), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30111*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30114*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                      MVT::i64, 3/*#Ops*/, 2, 3, 4, 
                  // Src: (sext:{ *:[i64] } (sub:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2)) - Complexity = 6
                  // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (SUBu:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2), sub_32:{ *:[i32] })
/* 30123*/      /*SwitchOpcode*/ 66, TARGET_VAL(ISD::MUL),// ->30192
/* 30126*/        OPC_RecordChild0, // #0 = $src
/* 30127*/        OPC_RecordChild1, // #1 = $src2
/* 30128*/        OPC_MoveParent,
/* 30129*/        OPC_CheckType, MVT::i64,
/* 30131*/        OPC_Scope, 29, /*->30162*/ // 2 children in Scope
/* 30133*/          OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 30135*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30141*/          OPC_EmitNode2, TARGET_VAL(Mips::MUL), 0,
                        MVT::i32, MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3 #4
/* 30150*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30153*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                        MVT::i64, 3/*#Ops*/, 2, 3, 5, 
                    // Src: (sext:{ *:[i64] } (mul:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2)) - Complexity = 6
                    // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (MUL:{ *:[i32] }:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2), sub_32:{ *:[i32] })
/* 30162*/        /*Scope*/ 28, /*->30191*/
/* 30163*/          OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 30165*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30171*/          OPC_EmitNode1, TARGET_VAL(Mips::MUL_R6), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30179*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30182*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                        MVT::i64, 3/*#Ops*/, 2, 3, 4, 
                    // Src: (sext:{ *:[i64] } (mul:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2)) - Complexity = 6
                    // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (MUL_R6:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2), sub_32:{ *:[i32] })
/* 30191*/        0, /*End of Scope*/
/* 30192*/      /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::MFHI),// ->30224
/* 30195*/        OPC_RecordChild0, // #0 = $src
/* 30196*/        OPC_MoveParent,
/* 30197*/        OPC_CheckType, MVT::i64,
/* 30199*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #1
/* 30205*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoMFHI), 0,
                      MVT::i32, 1/*#Ops*/, 0,  // Results = #2
/* 30212*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30215*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                      MVT::i64, 3/*#Ops*/, 1, 2, 3, 
                  // Src: (sext:{ *:[i64] } (MipsMFHI:{ *:[i32] } ACC64:{ *:[Untyped] }:$src)) - Complexity = 6
                  // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (PseudoMFHI:{ *:[i32] } ACC64:{ *:[Untyped] }:$src), sub_32:{ *:[i32] })
/* 30224*/      /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::MFLO),// ->30256
/* 30227*/        OPC_RecordChild0, // #0 = $src
/* 30228*/        OPC_MoveParent,
/* 30229*/        OPC_CheckType, MVT::i64,
/* 30231*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #1
/* 30237*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoMFLO), 0,
                      MVT::i32, 1/*#Ops*/, 0,  // Results = #2
/* 30244*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30247*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                      MVT::i64, 3/*#Ops*/, 1, 2, 3, 
                  // Src: (sext:{ *:[i64] } (MipsMFLO:{ *:[i32] } ACC64:{ *:[Untyped] }:$src)) - Complexity = 6
                  // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (PseudoMFLO:{ *:[i32] } ACC64:{ *:[Untyped] }:$src), sub_32:{ *:[i32] })
/* 30256*/      /*SwitchOpcode*/ 33, TARGET_VAL(ISD::SDIV),// ->30292
/* 30259*/        OPC_RecordChild0, // #0 = $src
/* 30260*/        OPC_RecordChild1, // #1 = $src2
/* 30261*/        OPC_MoveParent,
/* 30262*/        OPC_CheckType, MVT::i64,
/* 30264*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 30266*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30272*/        OPC_EmitNode1, TARGET_VAL(Mips::DIV), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30280*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30283*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                      MVT::i64, 3/*#Ops*/, 2, 3, 4, 
                  // Src: (sext:{ *:[i64] } (sdiv:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2)) - Complexity = 6
                  // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (DIV:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2), sub_32:{ *:[i32] })
/* 30292*/      /*SwitchOpcode*/ 33, TARGET_VAL(ISD::UDIV),// ->30328
/* 30295*/        OPC_RecordChild0, // #0 = $src
/* 30296*/        OPC_RecordChild1, // #1 = $src2
/* 30297*/        OPC_MoveParent,
/* 30298*/        OPC_CheckType, MVT::i64,
/* 30300*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 30302*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30308*/        OPC_EmitNode1, TARGET_VAL(Mips::DIVU), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30316*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30319*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                      MVT::i64, 3/*#Ops*/, 2, 3, 4, 
                  // Src: (sext:{ *:[i64] } (udiv:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2)) - Complexity = 6
                  // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (DIVU:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2), sub_32:{ *:[i32] })
/* 30328*/      /*SwitchOpcode*/ 33, TARGET_VAL(ISD::SREM),// ->30364
/* 30331*/        OPC_RecordChild0, // #0 = $src
/* 30332*/        OPC_RecordChild1, // #1 = $src2
/* 30333*/        OPC_MoveParent,
/* 30334*/        OPC_CheckType, MVT::i64,
/* 30336*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 30338*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30344*/        OPC_EmitNode1, TARGET_VAL(Mips::MOD), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30352*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30355*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                      MVT::i64, 3/*#Ops*/, 2, 3, 4, 
                  // Src: (sext:{ *:[i64] } (srem:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2)) - Complexity = 6
                  // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (MOD:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2), sub_32:{ *:[i32] })
/* 30364*/      /*SwitchOpcode*/ 33, TARGET_VAL(ISD::UREM),// ->30400
/* 30367*/        OPC_RecordChild0, // #0 = $src
/* 30368*/        OPC_RecordChild1, // #1 = $src2
/* 30369*/        OPC_MoveParent,
/* 30370*/        OPC_CheckType, MVT::i64,
/* 30372*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 30374*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30380*/        OPC_EmitNode1, TARGET_VAL(Mips::MODU), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30388*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30391*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                      MVT::i64, 3/*#Ops*/, 2, 3, 4, 
                  // Src: (sext:{ *:[i64] } (urem:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2)) - Complexity = 6
                  // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (MODU:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2), sub_32:{ *:[i32] })
/* 30400*/      0, // EndSwitchOpcode
/* 30401*/    /*Scope*/ 12, /*->30414*/
/* 30402*/      OPC_RecordChild0, // #0 = $src
/* 30403*/      OPC_CheckType, MVT::i64,
/* 30405*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 30407*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL64_32), 0,
                    MVT::i64, 1/*#Ops*/, 0, 
                // Src: (sext:{ *:[i64] } GPR32:{ *:[i32] }:$src) - Complexity = 3
                // Dst: (SLL64_32:{ *:[i64] } GPR32:{ *:[i32] }:$src)
/* 30414*/    0, /*End of Scope*/
/* 30415*/  /*SwitchOpcode*/ 21, TARGET_VAL(ISD::CALLSEQ_START),// ->30439
/* 30418*/    OPC_RecordNode, // #0 = 'callseq_start' chained node
/* 30419*/    OPC_RecordChild1, // #1 = $amt1
/* 30420*/    OPC_MoveChild1,
/* 30421*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 30424*/    OPC_MoveParent,
/* 30425*/    OPC_RecordChild2, // #2 = $amt2
/* 30426*/    OPC_MoveChild2,
/* 30427*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 30430*/    OPC_MoveParent,
/* 30431*/    OPC_EmitMergeInputChains1_0,
/* 30432*/    OPC_MorphNodeTo0, TARGET_VAL(Mips::ADJCALLSTACKDOWN), 0|OPFL_Chain|OPFL_GlueOutput,
                  2/*#Ops*/, 1, 2, 
              // Src: (callseq_start (timm:{ *:[i32] }):$amt1, (timm:{ *:[i32] }):$amt2) - Complexity = 9
              // Dst: (ADJCALLSTACKDOWN (timm:{ *:[i32] }):$amt1, (timm:{ *:[i32] }):$amt2)
/* 30439*/  /*SwitchOpcode*/ 22, TARGET_VAL(ISD::CALLSEQ_END),// ->30464
/* 30442*/    OPC_RecordNode, // #0 = 'callseq_end' chained node
/* 30443*/    OPC_CaptureGlueInput,
/* 30444*/    OPC_RecordChild1, // #1 = $amt1
/* 30445*/    OPC_MoveChild1,
/* 30446*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 30449*/    OPC_MoveParent,
/* 30450*/    OPC_RecordChild2, // #2 = $amt2
/* 30451*/    OPC_MoveChild2,
/* 30452*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 30455*/    OPC_MoveParent,
/* 30456*/    OPC_EmitMergeInputChains1_0,
/* 30457*/    OPC_MorphNodeTo0, TARGET_VAL(Mips::ADJCALLSTACKUP), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
                  2/*#Ops*/, 1, 2, 
              // Src: (callseq_end (timm:{ *:[i32] }):$amt1, (timm:{ *:[i32] }):$amt2) - Complexity = 9
              // Dst: (ADJCALLSTACKUP (timm:{ *:[i32] }):$amt1, (timm:{ *:[i32] }):$amt2)
/* 30464*/  /*SwitchOpcode*/ 64, TARGET_VAL(ISD::FrameIndex),// ->30531
/* 30467*/    OPC_RecordNode, // #0 = $addr
/* 30468*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->30515
/* 30471*/      OPC_Scope, 13, /*->30486*/ // 3 children in Scope
/* 30473*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 30475*/        OPC_CheckComplexPat, /*CP*/1, /*#*/0, // selectIntAddr:$addr #1 #2
/* 30478*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LEA_ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: addr:{ *:[i32] }:$addr - Complexity = 9
                  // Dst: (LEA_ADDiu:{ *:[i32] } addr:{ *:[i32] }:$addr)
/* 30486*/      /*Scope*/ 13, /*->30500*/
/* 30487*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 30489*/        OPC_CheckComplexPat, /*CP*/4, /*#*/0, // selectAddr16SP:$addr #1 #2
/* 30492*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::AddiuRxRyOffMemX16), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: addr16sp:{ *:[i32] }:$addr - Complexity = 9
                  // Dst: (AddiuRxRyOffMemX16:{ *:[i32] } addr16sp:{ *:[i32] }:$addr)
/* 30500*/      /*Scope*/ 13, /*->30514*/
/* 30501*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 30503*/        OPC_CheckComplexPat, /*CP*/1, /*#*/0, // selectIntAddr:$addr #1 #2
/* 30506*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LEA_ADDiu_MM), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: addr:{ *:[i32] }:$addr - Complexity = 9
                  // Dst: (LEA_ADDiu_MM:{ *:[i32] } addr:{ *:[i32] }:$addr)
/* 30514*/      0, /*End of Scope*/
/* 30515*/    /*SwitchType*/ 13, MVT::i64,// ->30530
/* 30517*/      OPC_CheckPatternPredicate, 63, // (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode())
/* 30519*/      OPC_CheckComplexPat, /*CP*/1, /*#*/0, // selectIntAddr:$addr #1 #2
/* 30522*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::LEA_ADDiu64), 0,
                    MVT::i64, 2/*#Ops*/, 1, 2, 
                // Src: addr:{ *:[i64] }:$addr - Complexity = 9
                // Dst: (LEA_ADDiu64:{ *:[i64] } addr:{ *:[i64] }:$addr)
/* 30530*/    0, // EndSwitchType
/* 30531*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::Ins),// ->30566
/* 30534*/    OPC_RecordChild0, // #0 = $rs
/* 30535*/    OPC_RecordChild1, // #1 = $pos
/* 30536*/    OPC_MoveChild1,
/* 30537*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 30540*/    OPC_MoveParent,
/* 30541*/    OPC_RecordChild2, // #2 = $size
/* 30542*/    OPC_MoveChild2,
/* 30543*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 30546*/    OPC_MoveParent,
/* 30547*/    OPC_RecordChild3, // #3 = $src
/* 30548*/    OPC_CheckType, MVT::i32,
/* 30550*/    OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 30552*/    OPC_EmitConvertToTarget, 1,
/* 30554*/    OPC_EmitConvertToTarget, 2,
/* 30556*/    OPC_MorphNodeTo1, TARGET_VAL(Mips::INS_MMR6), 0,
                  MVT::i32, 4/*#Ops*/, 0, 4, 5, 3, 
              // Src: (MipsIns:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$pos, (imm:{ *:[i32] }):$size, GPR32Opnd:{ *:[i32] }:$src) - Complexity = 9
              // Dst: (INS_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$pos, (imm:{ *:[i32] }):$size, GPR32Opnd:{ *:[i32] }:$src)
/* 30566*/  /*SwitchOpcode*/ 105|128,26/*3433*/, TARGET_VAL(ISD::SETCC),// ->34003
/* 30570*/    OPC_RecordChild0, // #0 = $lhs
/* 30571*/    OPC_Scope, 18|128,8/*1042*/, /*->31616*/ // 10 children in Scope
/* 30574*/      OPC_CheckChild0Type, MVT::i32,
/* 30576*/      OPC_Scope, 86, /*->30664*/ // 3 children in Scope
/* 30578*/        OPC_CheckChild1Integer, 0, 
/* 30580*/        OPC_CheckType, MVT::i32,
/* 30582*/        OPC_Scope, 15, /*->30599*/ // 5 children in Scope
/* 30584*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/* 30586*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 30588*/          OPC_EmitInteger, MVT::i32, 1, 
/* 30591*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTiu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETEQ:{ *:[Other] }) - Complexity = 8
                    // Dst: (SLTiu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 1:{ *:[i32] })
/* 30599*/        /*Scope*/ 15, /*->30615*/
/* 30600*/          OPC_CheckChild2CondCode, ISD::SETNE,
/* 30602*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 30604*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 30607*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTu), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETNE:{ *:[Other] }) - Complexity = 8
                    // Dst: (SLTu:{ *:[i32] } ZERO:{ *:[i32] }, GPR32:{ *:[i32] }:$lhs)
/* 30615*/        /*Scope*/ 15, /*->30631*/
/* 30616*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/* 30618*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 30620*/          OPC_EmitInteger, MVT::i32, 1, 
/* 30623*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTiu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETEQ:{ *:[Other] }) - Complexity = 8
                    // Dst: (SLTiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 1:{ *:[i32] })
/* 30631*/        /*Scope*/ 15, /*->30647*/
/* 30632*/          OPC_CheckChild2CondCode, ISD::SETNE,
/* 30634*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 30636*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 30639*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETNE:{ *:[Other] }) - Complexity = 8
                    // Dst: (SLTu_MM:{ *:[i32] } ZERO:{ *:[i32] }, GPR32:{ *:[i32] }:$lhs)
/* 30647*/        /*Scope*/ 15, /*->30663*/
/* 30648*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/* 30650*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 30652*/          OPC_EmitInteger, MVT::i32, 1, 
/* 30655*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SltiuCCRxImmX16), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, 0:{ *:[i32] }, SETEQ:{ *:[Other] }) - Complexity = 8
                    // Dst: (SltiuCCRxImmX16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, 1:{ *:[i32] })
/* 30663*/        0, /*End of Scope*/
/* 30664*/      /*Scope*/ 55, /*->30720*/
/* 30665*/        OPC_CheckChild1Integer, 127|128,127|128,125|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709518847*/, 
/* 30676*/        OPC_CheckChild2CondCode, ISD::SETGT,
/* 30678*/        OPC_CheckType, MVT::i32,
/* 30680*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 30682*/        OPC_EmitInteger, MVT::i32, 0|128,0|128,126|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709518848*/, 
/* 30694*/        OPC_EmitNode1, TARGET_VAL(Mips::SltiCCRxImmX16), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 30702*/        OPC_EmitInteger, MVT::i32, 1, 
/* 30705*/        OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                      MVT::i32, 1/*#Ops*/, 3,  // Results = #4
/* 30712*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::XorRxRxRy16), 0,
                      MVT::i32, 2/*#Ops*/, 2, 4, 
                  // Src: (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, -32769:{ *:[i32] }, SETGT:{ *:[Other] }) - Complexity = 8
                  // Dst: (XorRxRxRy16:{ *:[i32] } (SltiCCRxImmX16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, -32768:{ *:[i32] }), (LiRxImmX16:{ *:[i32] } 1:{ *:[i32] }))
/* 30720*/      /*Scope*/ 125|128,6/*893*/, /*->31615*/
/* 30722*/        OPC_RecordChild1, // #1 = $imm16
/* 30723*/        OPC_Scope, 77|128,1/*205*/, /*->30931*/ // 31 children in Scope
/* 30726*/          OPC_MoveChild1,
/* 30727*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 30730*/          OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 30732*/          OPC_MoveParent,
/* 30733*/          OPC_CheckType, MVT::i32,
/* 30735*/          OPC_Scope, 14, /*->30751*/ // 10 children in Scope
/* 30737*/            OPC_CheckChild2CondCode, ISD::SETLT,
/* 30739*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 30741*/            OPC_EmitConvertToTarget, 1,
/* 30743*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTi), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm16, SETLT:{ *:[Other] }) - Complexity = 7
                      // Dst: (SLTi:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$imm16)
/* 30751*/          /*Scope*/ 14, /*->30766*/
/* 30752*/            OPC_CheckChild2CondCode, ISD::SETULT,
/* 30754*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 30756*/            OPC_EmitConvertToTarget, 1,
/* 30758*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTiu), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm16, SETULT:{ *:[Other] }) - Complexity = 7
                      // Dst: (SLTiu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$imm16)
/* 30766*/          /*Scope*/ 14, /*->30781*/
/* 30767*/            OPC_CheckChild2CondCode, ISD::SETLT,
/* 30769*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 30771*/            OPC_EmitConvertToTarget, 1,
/* 30773*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTi_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm16, SETLT:{ *:[Other] }) - Complexity = 7
                      // Dst: (SLTi_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$imm16)
/* 30781*/          /*Scope*/ 14, /*->30796*/
/* 30782*/            OPC_CheckChild2CondCode, ISD::SETULT,
/* 30784*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 30786*/            OPC_EmitConvertToTarget, 1,
/* 30788*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTiu_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm16, SETULT:{ *:[Other] }) - Complexity = 7
                      // Dst: (SLTiu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$imm16)
/* 30796*/          /*Scope*/ 25, /*->30822*/
/* 30797*/            OPC_CheckChild2CondCode, ISD::SETGE,
/* 30799*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 30801*/            OPC_EmitConvertToTarget, 1,
/* 30803*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 30811*/            OPC_EmitInteger, MVT::i32, 1, 
/* 30814*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi), 0,
                          MVT::i32, 2/*#Ops*/, 3, 4, 
                      // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }) - Complexity = 7
                      // Dst: (XORi:{ *:[i32] } (SLTi:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), 1:{ *:[i32] })
/* 30822*/          /*Scope*/ 25, /*->30848*/
/* 30823*/            OPC_CheckChild2CondCode, ISD::SETUGE,
/* 30825*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 30827*/            OPC_EmitConvertToTarget, 1,
/* 30829*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 30837*/            OPC_EmitInteger, MVT::i32, 1, 
/* 30840*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi), 0,
                          MVT::i32, 2/*#Ops*/, 3, 4, 
                      // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETUGE:{ *:[Other] }) - Complexity = 7
                      // Dst: (XORi:{ *:[i32] } (SLTiu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), 1:{ *:[i32] })
/* 30848*/          /*Scope*/ 25, /*->30874*/
/* 30849*/            OPC_CheckChild2CondCode, ISD::SETGE,
/* 30851*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 30853*/            OPC_EmitConvertToTarget, 1,
/* 30855*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 30863*/            OPC_EmitInteger, MVT::i32, 1, 
/* 30866*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi_MM), 0,
                          MVT::i32, 2/*#Ops*/, 3, 4, 
                      // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }) - Complexity = 7
                      // Dst: (XORi_MM:{ *:[i32] } (SLTi_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), 1:{ *:[i32] })
/* 30874*/          /*Scope*/ 25, /*->30900*/
/* 30875*/            OPC_CheckChild2CondCode, ISD::SETUGE,
/* 30877*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 30879*/            OPC_EmitConvertToTarget, 1,
/* 30881*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 30889*/            OPC_EmitInteger, MVT::i32, 1, 
/* 30892*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi_MM), 0,
                          MVT::i32, 2/*#Ops*/, 3, 4, 
                      // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs, SETUGE:{ *:[Other] }) - Complexity = 7
                      // Dst: (XORi_MM:{ *:[i32] } (SLTiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$rhs), 1:{ *:[i32] })
/* 30900*/          /*Scope*/ 14, /*->30915*/
/* 30901*/            OPC_CheckChild2CondCode, ISD::SETLT,
/* 30903*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 30905*/            OPC_EmitConvertToTarget, 1,
/* 30907*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SltiCCRxImmX16), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm16, SETLT:{ *:[Other] }) - Complexity = 7
                      // Dst: (SltiCCRxImmX16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm16)
/* 30915*/          /*Scope*/ 14, /*->30930*/
/* 30916*/            OPC_CheckChild2CondCode, ISD::SETULT,
/* 30918*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 30920*/            OPC_EmitConvertToTarget, 1,
/* 30922*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SltiuCCRxImmX16), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm16, SETULT:{ *:[Other] }) - Complexity = 7
                      // Dst: (SltiuCCRxImmX16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm16)
/* 30930*/          0, /*End of Scope*/
/* 30931*/        /*Scope*/ 14, /*->30946*/
/* 30932*/          OPC_CheckChild2CondCode, ISD::SETLT,
/* 30934*/          OPC_CheckType, MVT::i32,
/* 30936*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 30938*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLT), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, SETLT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLT:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 30946*/        /*Scope*/ 14, /*->30961*/
/* 30947*/          OPC_CheckChild2CondCode, ISD::SETULT,
/* 30949*/          OPC_CheckType, MVT::i32,
/* 30951*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 30953*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, SETULT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 30961*/        /*Scope*/ 14, /*->30976*/
/* 30962*/          OPC_CheckChild2CondCode, ISD::SETGT,
/* 30964*/          OPC_CheckType, MVT::i32,
/* 30966*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 30968*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLT), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLT:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs)
/* 30976*/        /*Scope*/ 14, /*->30991*/
/* 30977*/          OPC_CheckChild2CondCode, ISD::SETUGT,
/* 30979*/          OPC_CheckType, MVT::i32,
/* 30981*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 30983*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTu), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTu:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs)
/* 30991*/        /*Scope*/ 14, /*->31006*/
/* 30992*/          OPC_CheckChild2CondCode, ISD::SETLT,
/* 30994*/          OPC_CheckType, MVT::i32,
/* 30996*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 30998*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLT_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, SETLT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLT_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 31006*/        /*Scope*/ 14, /*->31021*/
/* 31007*/          OPC_CheckChild2CondCode, ISD::SETULT,
/* 31009*/          OPC_CheckType, MVT::i32,
/* 31011*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31013*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (setcc:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, SETULT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 31021*/        /*Scope*/ 14, /*->31036*/
/* 31022*/          OPC_CheckChild2CondCode, ISD::SETGT,
/* 31024*/          OPC_CheckType, MVT::i32,
/* 31026*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31028*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLT_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLT_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs)
/* 31036*/        /*Scope*/ 14, /*->31051*/
/* 31037*/          OPC_CheckChild2CondCode, ISD::SETUGT,
/* 31039*/          OPC_CheckType, MVT::i32,
/* 31041*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31043*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs)
/* 31051*/        /*Scope*/ 25, /*->31077*/
/* 31052*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/* 31054*/          OPC_CheckType, MVT::i32,
/* 31056*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31058*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31066*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31069*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTiu), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETEQ:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTiu:{ *:[i32] } (XOR:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), 1:{ *:[i32] })
/* 31077*/        /*Scope*/ 25, /*->31103*/
/* 31078*/          OPC_CheckChild2CondCode, ISD::SETNE,
/* 31080*/          OPC_CheckType, MVT::i32,
/* 31082*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31084*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 31087*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 31095*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTu), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETNE:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTu:{ *:[i32] } ZERO:{ *:[i32] }, (XOR:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs))
/* 31103*/        /*Scope*/ 25, /*->31129*/
/* 31104*/          OPC_CheckChild2CondCode, ISD::SETLE,
/* 31106*/          OPC_CheckType, MVT::i32,
/* 31108*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31110*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31118*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31121*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETLE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORi:{ *:[i32] } (SLT:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), 1:{ *:[i32] })
/* 31129*/        /*Scope*/ 25, /*->31155*/
/* 31130*/          OPC_CheckChild2CondCode, ISD::SETULE,
/* 31132*/          OPC_CheckType, MVT::i32,
/* 31134*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31136*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31144*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31147*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETULE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORi:{ *:[i32] } (SLTu:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), 1:{ *:[i32] })
/* 31155*/        /*Scope*/ 25, /*->31181*/
/* 31156*/          OPC_CheckChild2CondCode, ISD::SETGE,
/* 31158*/          OPC_CheckType, MVT::i32,
/* 31160*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31162*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31170*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31173*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORi:{ *:[i32] } (SLT:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), 1:{ *:[i32] })
/* 31181*/        /*Scope*/ 25, /*->31207*/
/* 31182*/          OPC_CheckChild2CondCode, ISD::SETUGE,
/* 31184*/          OPC_CheckType, MVT::i32,
/* 31186*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31188*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31196*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31199*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORi:{ *:[i32] } (SLTu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), 1:{ *:[i32] })
/* 31207*/        /*Scope*/ 25, /*->31233*/
/* 31208*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/* 31210*/          OPC_CheckType, MVT::i32,
/* 31212*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31214*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31222*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31225*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTiu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETEQ:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTiu_MM:{ *:[i32] } (XOR_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), 1:{ *:[i32] })
/* 31233*/        /*Scope*/ 25, /*->31259*/
/* 31234*/          OPC_CheckChild2CondCode, ISD::SETNE,
/* 31236*/          OPC_CheckType, MVT::i32,
/* 31238*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31240*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 31243*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 31251*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETNE:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTu_MM:{ *:[i32] } ZERO:{ *:[i32] }, (XOR_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs))
/* 31259*/        /*Scope*/ 25, /*->31285*/
/* 31260*/          OPC_CheckChild2CondCode, ISD::SETLE,
/* 31262*/          OPC_CheckType, MVT::i32,
/* 31264*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31266*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31274*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31277*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi_MM), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETLE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORi_MM:{ *:[i32] } (SLT_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), 1:{ *:[i32] })
/* 31285*/        /*Scope*/ 25, /*->31311*/
/* 31286*/          OPC_CheckChild2CondCode, ISD::SETULE,
/* 31288*/          OPC_CheckType, MVT::i32,
/* 31290*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31292*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31300*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31303*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi_MM), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETULE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORi_MM:{ *:[i32] } (SLTu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rhs, GPR32:{ *:[i32] }:$lhs), 1:{ *:[i32] })
/* 31311*/        /*Scope*/ 25, /*->31337*/
/* 31312*/          OPC_CheckChild2CondCode, ISD::SETGE,
/* 31314*/          OPC_CheckType, MVT::i32,
/* 31316*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31318*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31326*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31329*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi_MM), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETGE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORi_MM:{ *:[i32] } (SLT_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), 1:{ *:[i32] })
/* 31337*/        /*Scope*/ 25, /*->31363*/
/* 31338*/          OPC_CheckChild2CondCode, ISD::SETUGE,
/* 31340*/          OPC_CheckType, MVT::i32,
/* 31342*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31344*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31352*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31355*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi_MM), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs, SETUGE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORi_MM:{ *:[i32] } (SLTu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs), 1:{ *:[i32] })
/* 31363*/        /*Scope*/ 14, /*->31378*/
/* 31364*/          OPC_CheckChild2CondCode, ISD::SETGT,
/* 31366*/          OPC_CheckType, MVT::i32,
/* 31368*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31370*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SltCCRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, CPU16Regs:{ *:[i32] }:$rhs, SETGT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SltCCRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rhs, CPU16Regs:{ *:[i32] }:$lhs)
/* 31378*/        /*Scope*/ 14, /*->31393*/
/* 31379*/          OPC_CheckChild2CondCode, ISD::SETLT,
/* 31381*/          OPC_CheckType, MVT::i32,
/* 31383*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31385*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SltCCRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry, SETLT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SltCCRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry)
/* 31393*/        /*Scope*/ 14, /*->31408*/
/* 31394*/          OPC_CheckChild2CondCode, ISD::SETUGT,
/* 31396*/          OPC_CheckType, MVT::i32,
/* 31398*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31400*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SltuCCRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, CPU16Regs:{ *:[i32] }:$rhs, SETUGT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SltuCCRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rhs, CPU16Regs:{ *:[i32] }:$lhs)
/* 31408*/        /*Scope*/ 14, /*->31423*/
/* 31409*/          OPC_CheckChild2CondCode, ISD::SETULT,
/* 31411*/          OPC_CheckType, MVT::i32,
/* 31413*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31415*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SltuCCRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry, SETULT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SltuCCRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry)
/* 31423*/        /*Scope*/ 25, /*->31449*/
/* 31424*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/* 31426*/          OPC_CheckType, MVT::i32,
/* 31428*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31430*/          OPC_EmitNode1, TARGET_VAL(Mips::XorRxRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31438*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31441*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SltiuCCRxImmX16), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, CPU16Regs:{ *:[i32] }:$rhs, SETEQ:{ *:[Other] }) - Complexity = 3
                    // Dst: (SltiuCCRxImmX16:{ *:[i32] } (XorRxRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, CPU16Regs:{ *:[i32] }:$rhs), 1:{ *:[i32] })
/* 31449*/        /*Scope*/ 32, /*->31482*/
/* 31450*/          OPC_CheckChild2CondCode, ISD::SETGE,
/* 31452*/          OPC_CheckType, MVT::i32,
/* 31454*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31456*/          OPC_EmitNode1, TARGET_VAL(Mips::SltCCRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31464*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31467*/          OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                        MVT::i32, 1/*#Ops*/, 3,  // Results = #4
/* 31474*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XorRxRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 2, 4, 
                    // Src: (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, CPU16Regs:{ *:[i32] }:$rhs, SETGE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XorRxRxRy16:{ *:[i32] } (SltCCRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, CPU16Regs:{ *:[i32] }:$rhs), (LiRxImmX16:{ *:[i32] } 1:{ *:[i32] }))
/* 31482*/        /*Scope*/ 32, /*->31515*/
/* 31483*/          OPC_CheckChild2CondCode, ISD::SETLE,
/* 31485*/          OPC_CheckType, MVT::i32,
/* 31487*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31489*/          OPC_EmitNode1, TARGET_VAL(Mips::SltCCRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31497*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31500*/          OPC_EmitNode1, TARGET_VAL(Mips::LiRxImm16), 0,
                        MVT::i32, 1/*#Ops*/, 3,  // Results = #4
/* 31507*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XorRxRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 2, 4, 
                    // Src: (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, CPU16Regs:{ *:[i32] }:$rhs, SETLE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XorRxRxRy16:{ *:[i32] } (SltCCRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rhs, CPU16Regs:{ *:[i32] }:$lhs), (LiRxImm16:{ *:[i32] } 1:{ *:[i32] }))
/* 31515*/        /*Scope*/ 32, /*->31548*/
/* 31516*/          OPC_CheckChild2CondCode, ISD::SETNE,
/* 31518*/          OPC_CheckType, MVT::i32,
/* 31520*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31522*/          OPC_EmitInteger, MVT::i32, 0, 
/* 31525*/          OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                        MVT::i32, 1/*#Ops*/, 2,  // Results = #3
/* 31532*/          OPC_EmitNode1, TARGET_VAL(Mips::XorRxRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 31540*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SltuCCRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 3, 4, 
                    // Src: (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, CPU16Regs:{ *:[i32] }:$rhs, SETNE:{ *:[Other] }) - Complexity = 3
                    // Dst: (SltuCCRxRy16:{ *:[i32] } (LiRxImmX16:{ *:[i32] } 0:{ *:[i32] }), (XorRxRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, CPU16Regs:{ *:[i32] }:$rhs))
/* 31548*/        /*Scope*/ 32, /*->31581*/
/* 31549*/          OPC_CheckChild2CondCode, ISD::SETUGE,
/* 31551*/          OPC_CheckType, MVT::i32,
/* 31553*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31555*/          OPC_EmitNode1, TARGET_VAL(Mips::SltuCCRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31563*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31566*/          OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                        MVT::i32, 1/*#Ops*/, 3,  // Results = #4
/* 31573*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XorRxRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 2, 4, 
                    // Src: (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, CPU16Regs:{ *:[i32] }:$rhs, SETUGE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XorRxRxRy16:{ *:[i32] } (SltuCCRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, CPU16Regs:{ *:[i32] }:$rhs), (LiRxImmX16:{ *:[i32] } 1:{ *:[i32] }))
/* 31581*/        /*Scope*/ 32, /*->31614*/
/* 31582*/          OPC_CheckChild2CondCode, ISD::SETULE,
/* 31584*/          OPC_CheckType, MVT::i32,
/* 31586*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31588*/          OPC_EmitNode1, TARGET_VAL(Mips::SltuCCRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31596*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31599*/          OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                        MVT::i32, 1/*#Ops*/, 3,  // Results = #4
/* 31606*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XorRxRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 2, 4, 
                    // Src: (setcc:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, CPU16Regs:{ *:[i32] }:$rhs, SETULE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XorRxRxRy16:{ *:[i32] } (SltuCCRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rhs, CPU16Regs:{ *:[i32] }:$lhs), (LiRxImmX16:{ *:[i32] } 1:{ *:[i32] }))
/* 31614*/        0, /*End of Scope*/
/* 31615*/      0, /*End of Scope*/
/* 31616*/    /*Scope*/ 104|128,2/*360*/, /*->31978*/
/* 31618*/      OPC_CheckChild0Type, MVT::i64,
/* 31620*/      OPC_Scope, 39, /*->31661*/ // 2 children in Scope
/* 31622*/        OPC_CheckChild1Integer, 0, 
/* 31624*/        OPC_CheckType, MVT::i32,
/* 31626*/        OPC_Scope, 15, /*->31643*/ // 2 children in Scope
/* 31628*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/* 31630*/          OPC_CheckPatternPredicate, 64, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 31632*/          OPC_EmitInteger, MVT::i64, 1, 
/* 31635*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTiu64), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, 0:{ *:[i64] }, SETEQ:{ *:[Other] }) - Complexity = 8
                    // Dst: (SLTiu64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, 1:{ *:[i64] })
/* 31643*/        /*Scope*/ 16, /*->31660*/
/* 31644*/          OPC_CheckChild2CondCode, ISD::SETNE,
/* 31646*/          OPC_CheckPatternPredicate, 64, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 31648*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 31652*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTu64), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, 0:{ *:[i64] }, SETNE:{ *:[Other] }) - Complexity = 8
                    // Dst: (SLTu64:{ *:[i32] } ZERO_64:{ *:[i64] }, GPR64:{ *:[i64] }:$lhs)
/* 31660*/        0, /*End of Scope*/
/* 31661*/      /*Scope*/ 58|128,2/*314*/, /*->31977*/
/* 31663*/        OPC_RecordChild1, // #1 = $imm16
/* 31664*/        OPC_Scope, 93, /*->31759*/ // 11 children in Scope
/* 31666*/          OPC_MoveChild1,
/* 31667*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 31670*/          OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 31672*/          OPC_MoveParent,
/* 31673*/          OPC_CheckType, MVT::i32,
/* 31675*/          OPC_Scope, 14, /*->31691*/ // 4 children in Scope
/* 31677*/            OPC_CheckChild2CondCode, ISD::SETLT,
/* 31679*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 31681*/            OPC_EmitConvertToTarget, 1,
/* 31683*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTi64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (setcc:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$imm16, SETLT:{ *:[Other] }) - Complexity = 7
                      // Dst: (SLTi64:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] }):$imm16)
/* 31691*/          /*Scope*/ 14, /*->31706*/
/* 31692*/            OPC_CheckChild2CondCode, ISD::SETULT,
/* 31694*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 31696*/            OPC_EmitConvertToTarget, 1,
/* 31698*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTiu64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (setcc:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$imm16, SETULT:{ *:[Other] }) - Complexity = 7
                      // Dst: (SLTiu64:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] }):$imm16)
/* 31706*/          /*Scope*/ 25, /*->31732*/
/* 31707*/            OPC_CheckChild2CondCode, ISD::SETGE,
/* 31709*/            OPC_CheckPatternPredicate, 64, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 31711*/            OPC_EmitConvertToTarget, 1,
/* 31713*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 31721*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31724*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi), 0,
                          MVT::i32, 2/*#Ops*/, 3, 4, 
                      // Src: (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs, SETGE:{ *:[Other] }) - Complexity = 7
                      // Dst: (XORi:{ *:[i32] } (SLTi64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs), 1:{ *:[i32] })
/* 31732*/          /*Scope*/ 25, /*->31758*/
/* 31733*/            OPC_CheckChild2CondCode, ISD::SETUGE,
/* 31735*/            OPC_CheckPatternPredicate, 64, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 31737*/            OPC_EmitConvertToTarget, 1,
/* 31739*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 31747*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31750*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi), 0,
                          MVT::i32, 2/*#Ops*/, 3, 4, 
                      // Src: (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs, SETUGE:{ *:[Other] }) - Complexity = 7
                      // Dst: (XORi:{ *:[i32] } (SLTiu64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$rhs), 1:{ *:[i32] })
/* 31758*/          0, /*End of Scope*/
/* 31759*/        /*Scope*/ 14, /*->31774*/
/* 31760*/          OPC_CheckChild2CondCode, ISD::SETLT,
/* 31762*/          OPC_CheckType, MVT::i32,
/* 31764*/          OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 31766*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLT64), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (setcc:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt, SETLT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLT64:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 31774*/        /*Scope*/ 14, /*->31789*/
/* 31775*/          OPC_CheckChild2CondCode, ISD::SETULT,
/* 31777*/          OPC_CheckType, MVT::i32,
/* 31779*/          OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 31781*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTu64), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (setcc:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt, SETULT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTu64:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 31789*/        /*Scope*/ 14, /*->31804*/
/* 31790*/          OPC_CheckChild2CondCode, ISD::SETGT,
/* 31792*/          OPC_CheckType, MVT::i32,
/* 31794*/          OPC_CheckPatternPredicate, 64, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 31796*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLT64), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETGT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLT64:{ *:[i32] } GPR64:{ *:[i64] }:$rhs, GPR64:{ *:[i64] }:$lhs)
/* 31804*/        /*Scope*/ 14, /*->31819*/
/* 31805*/          OPC_CheckChild2CondCode, ISD::SETUGT,
/* 31807*/          OPC_CheckType, MVT::i32,
/* 31809*/          OPC_CheckPatternPredicate, 64, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 31811*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTu64), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETUGT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTu64:{ *:[i32] } GPR64:{ *:[i64] }:$rhs, GPR64:{ *:[i64] }:$lhs)
/* 31819*/        /*Scope*/ 25, /*->31845*/
/* 31820*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/* 31822*/          OPC_CheckType, MVT::i32,
/* 31824*/          OPC_CheckPatternPredicate, 64, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 31826*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31834*/          OPC_EmitInteger, MVT::i64, 1, 
/* 31837*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTiu64), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETEQ:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTiu64:{ *:[i32] } (XOR64:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), 1:{ *:[i64] })
/* 31845*/        /*Scope*/ 26, /*->31872*/
/* 31846*/          OPC_CheckChild2CondCode, ISD::SETNE,
/* 31848*/          OPC_CheckType, MVT::i32,
/* 31850*/          OPC_CheckPatternPredicate, 64, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 31852*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 31856*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #3
/* 31864*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLTu64), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETNE:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTu64:{ *:[i32] } ZERO_64:{ *:[i64] }, (XOR64:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs))
/* 31872*/        /*Scope*/ 25, /*->31898*/
/* 31873*/          OPC_CheckChild2CondCode, ISD::SETLE,
/* 31875*/          OPC_CheckType, MVT::i32,
/* 31877*/          OPC_CheckPatternPredicate, 64, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 31879*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31887*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31890*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETLE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORi:{ *:[i32] } (SLT64:{ *:[i32] } GPR64:{ *:[i64] }:$rhs, GPR64:{ *:[i64] }:$lhs), 1:{ *:[i32] })
/* 31898*/        /*Scope*/ 25, /*->31924*/
/* 31899*/          OPC_CheckChild2CondCode, ISD::SETULE,
/* 31901*/          OPC_CheckType, MVT::i32,
/* 31903*/          OPC_CheckPatternPredicate, 64, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 31905*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31913*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31916*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETULE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORi:{ *:[i32] } (SLTu64:{ *:[i32] } GPR64:{ *:[i64] }:$rhs, GPR64:{ *:[i64] }:$lhs), 1:{ *:[i32] })
/* 31924*/        /*Scope*/ 25, /*->31950*/
/* 31925*/          OPC_CheckChild2CondCode, ISD::SETGE,
/* 31927*/          OPC_CheckType, MVT::i32,
/* 31929*/          OPC_CheckPatternPredicate, 64, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 31931*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31939*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31942*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETGE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORi:{ *:[i32] } (SLT64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), 1:{ *:[i32] })
/* 31950*/        /*Scope*/ 25, /*->31976*/
/* 31951*/          OPC_CheckChild2CondCode, ISD::SETUGE,
/* 31953*/          OPC_CheckType, MVT::i32,
/* 31955*/          OPC_CheckPatternPredicate, 64, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 31957*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31965*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31968*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3, 
                    // Src: (setcc:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs, SETUGE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORi:{ *:[i32] } (SLTu64:{ *:[i32] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs), 1:{ *:[i32] })
/* 31976*/        0, /*End of Scope*/
/* 31977*/      0, /*End of Scope*/
/* 31978*/    /*Scope*/ 127|128,3/*511*/, /*->32491*/
/* 31980*/      OPC_CheckChild0Type, MVT::f32,
/* 31982*/      OPC_RecordChild1, // #1 = $ft
/* 31983*/      OPC_CheckType, MVT::i32,
/* 31985*/      OPC_Scope, 12, /*->31999*/ // 32 children in Scope
/* 31987*/        OPC_CheckChild2CondCode, ISD::SETUO,
/* 31989*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 31991*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_UN_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft, SETUO:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_UN_S:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 31999*/      /*Scope*/ 12, /*->32012*/
/* 32000*/        OPC_CheckChild2CondCode, ISD::SETOEQ,
/* 32002*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32004*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_EQ_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft, SETOEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_EQ_S:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 32012*/      /*Scope*/ 12, /*->32025*/
/* 32013*/        OPC_CheckChild2CondCode, ISD::SETUEQ,
/* 32015*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32017*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_UEQ_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft, SETUEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_UEQ_S:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 32025*/      /*Scope*/ 12, /*->32038*/
/* 32026*/        OPC_CheckChild2CondCode, ISD::SETOLT,
/* 32028*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32030*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LT_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft, SETOLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LT_S:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 32038*/      /*Scope*/ 12, /*->32051*/
/* 32039*/        OPC_CheckChild2CondCode, ISD::SETULT,
/* 32041*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32043*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_ULT_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft, SETULT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_ULT_S:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 32051*/      /*Scope*/ 12, /*->32064*/
/* 32052*/        OPC_CheckChild2CondCode, ISD::SETOLE,
/* 32054*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32056*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LE_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft, SETOLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LE_S:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 32064*/      /*Scope*/ 12, /*->32077*/
/* 32065*/        OPC_CheckChild2CondCode, ISD::SETULE,
/* 32067*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32069*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_ULE_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft, SETULE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_ULE_S:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 32077*/      /*Scope*/ 12, /*->32090*/
/* 32078*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 32080*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32082*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_EQ_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_EQ_S:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs)
/* 32090*/      /*Scope*/ 12, /*->32103*/
/* 32091*/        OPC_CheckChild2CondCode, ISD::SETGT,
/* 32093*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32095*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LE_S), 0,
                      MVT::i32, 2/*#Ops*/, 1, 0, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETGT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LE_S:{ *:[i32] } f32:{ *:[f32] }:$rhs, f32:{ *:[f32] }:$lhs)
/* 32103*/      /*Scope*/ 12, /*->32116*/
/* 32104*/        OPC_CheckChild2CondCode, ISD::SETGE,
/* 32106*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32108*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LT_S), 0,
                      MVT::i32, 2/*#Ops*/, 1, 0, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETGE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LT_S:{ *:[i32] } f32:{ *:[f32] }:$rhs, f32:{ *:[f32] }:$lhs)
/* 32116*/      /*Scope*/ 12, /*->32129*/
/* 32117*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 32119*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32121*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LT_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LT_S:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs)
/* 32129*/      /*Scope*/ 12, /*->32142*/
/* 32130*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 32132*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32134*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LE_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LE_S:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs)
/* 32142*/      /*Scope*/ 12, /*->32155*/
/* 32143*/        OPC_CheckChild2CondCode, ISD::SETUO,
/* 32145*/        OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32147*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_UN_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft, SETUO:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_UN_S_MMR6:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 32155*/      /*Scope*/ 12, /*->32168*/
/* 32156*/        OPC_CheckChild2CondCode, ISD::SETOEQ,
/* 32158*/        OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32160*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_EQ_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft, SETOEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_EQ_S_MMR6:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 32168*/      /*Scope*/ 12, /*->32181*/
/* 32169*/        OPC_CheckChild2CondCode, ISD::SETUEQ,
/* 32171*/        OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32173*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_UEQ_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft, SETUEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_UEQ_S_MMR6:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 32181*/      /*Scope*/ 12, /*->32194*/
/* 32182*/        OPC_CheckChild2CondCode, ISD::SETOLT,
/* 32184*/        OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32186*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LT_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft, SETOLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LT_S_MMR6:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 32194*/      /*Scope*/ 12, /*->32207*/
/* 32195*/        OPC_CheckChild2CondCode, ISD::SETULT,
/* 32197*/        OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32199*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_ULT_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft, SETULT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_ULT_S_MMR6:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 32207*/      /*Scope*/ 12, /*->32220*/
/* 32208*/        OPC_CheckChild2CondCode, ISD::SETOLE,
/* 32210*/        OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32212*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LE_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft, SETOLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LE_S_MMR6:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 32220*/      /*Scope*/ 12, /*->32233*/
/* 32221*/        OPC_CheckChild2CondCode, ISD::SETULE,
/* 32223*/        OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32225*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_ULE_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft, SETULE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_ULE_S_MMR6:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 32233*/      /*Scope*/ 12, /*->32246*/
/* 32234*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 32236*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32238*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_EQ_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_EQ_S_MMR6:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs)
/* 32246*/      /*Scope*/ 12, /*->32259*/
/* 32247*/        OPC_CheckChild2CondCode, ISD::SETGT,
/* 32249*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32251*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LE_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 1, 0, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETGT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LE_S_MMR6:{ *:[i32] } f32:{ *:[f32] }:$rhs, f32:{ *:[f32] }:$lhs)
/* 32259*/      /*Scope*/ 12, /*->32272*/
/* 32260*/        OPC_CheckChild2CondCode, ISD::SETGE,
/* 32262*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32264*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LT_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 1, 0, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETGE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LT_S_MMR6:{ *:[i32] } f32:{ *:[f32] }:$rhs, f32:{ *:[f32] }:$lhs)
/* 32272*/      /*Scope*/ 12, /*->32285*/
/* 32273*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 32275*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32277*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LT_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LT_S_MMR6:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs)
/* 32285*/      /*Scope*/ 12, /*->32298*/
/* 32286*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 32288*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32290*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LE_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LE_S_MMR6:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs)
/* 32298*/      /*Scope*/ 23, /*->32322*/
/* 32299*/        OPC_CheckChild2CondCode, ISD::SETONE,
/* 32301*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32303*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UEQ_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32311*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32314*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETONE:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR:{ *:[i32] } (CMP_UEQ_S:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs), ZERO:{ *:[i32] })
/* 32322*/      /*Scope*/ 23, /*->32346*/
/* 32323*/        OPC_CheckChild2CondCode, ISD::SETO,
/* 32325*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32327*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UN_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32335*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32338*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETO:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR:{ *:[i32] } (CMP_UN_S:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs), ZERO:{ *:[i32] })
/* 32346*/      /*Scope*/ 23, /*->32370*/
/* 32347*/        OPC_CheckChild2CondCode, ISD::SETUNE,
/* 32349*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32351*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32359*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32362*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETUNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR:{ *:[i32] } (CMP_EQ_S:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs), ZERO:{ *:[i32] })
/* 32370*/      /*Scope*/ 23, /*->32394*/
/* 32371*/        OPC_CheckChild2CondCode, ISD::SETNE,
/* 32373*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32375*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32383*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32386*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR:{ *:[i32] } (CMP_EQ_S:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs), ZERO:{ *:[i32] })
/* 32394*/      /*Scope*/ 23, /*->32418*/
/* 32395*/        OPC_CheckChild2CondCode, ISD::SETONE,
/* 32397*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32399*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UEQ_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32407*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32410*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETONE:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR_MMR6:{ *:[i32] } (CMP_UEQ_S_MMR6:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs), ZERO:{ *:[i32] })
/* 32418*/      /*Scope*/ 23, /*->32442*/
/* 32419*/        OPC_CheckChild2CondCode, ISD::SETO,
/* 32421*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32423*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UN_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32431*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32434*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETO:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR_MMR6:{ *:[i32] } (CMP_UN_S_MMR6:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs), ZERO:{ *:[i32] })
/* 32442*/      /*Scope*/ 23, /*->32466*/
/* 32443*/        OPC_CheckChild2CondCode, ISD::SETUNE,
/* 32445*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32447*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32455*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32458*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETUNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR_MMR6:{ *:[i32] } (CMP_EQ_S_MMR6:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs), ZERO:{ *:[i32] })
/* 32466*/      /*Scope*/ 23, /*->32490*/
/* 32467*/        OPC_CheckChild2CondCode, ISD::SETNE,
/* 32469*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32471*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32479*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32482*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs, SETNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR_MMR6:{ *:[i32] } (CMP_EQ_S_MMR6:{ *:[i32] } f32:{ *:[f32] }:$lhs, f32:{ *:[f32] }:$rhs), ZERO:{ *:[i32] })
/* 32490*/      0, /*End of Scope*/
/* 32491*/    /*Scope*/ 127|128,3/*511*/, /*->33004*/
/* 32493*/      OPC_CheckChild0Type, MVT::f64,
/* 32495*/      OPC_RecordChild1, // #1 = $ft
/* 32496*/      OPC_CheckType, MVT::i32,
/* 32498*/      OPC_Scope, 12, /*->32512*/ // 32 children in Scope
/* 32500*/        OPC_CheckChild2CondCode, ISD::SETUO,
/* 32502*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32504*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_UN_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft, SETUO:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_UN_D:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 32512*/      /*Scope*/ 12, /*->32525*/
/* 32513*/        OPC_CheckChild2CondCode, ISD::SETOEQ,
/* 32515*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32517*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_EQ_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft, SETOEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_EQ_D:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 32525*/      /*Scope*/ 12, /*->32538*/
/* 32526*/        OPC_CheckChild2CondCode, ISD::SETUEQ,
/* 32528*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32530*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_UEQ_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft, SETUEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_UEQ_D:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 32538*/      /*Scope*/ 12, /*->32551*/
/* 32539*/        OPC_CheckChild2CondCode, ISD::SETOLT,
/* 32541*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32543*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LT_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft, SETOLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LT_D:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 32551*/      /*Scope*/ 12, /*->32564*/
/* 32552*/        OPC_CheckChild2CondCode, ISD::SETULT,
/* 32554*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32556*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_ULT_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft, SETULT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_ULT_D:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 32564*/      /*Scope*/ 12, /*->32577*/
/* 32565*/        OPC_CheckChild2CondCode, ISD::SETOLE,
/* 32567*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32569*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LE_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft, SETOLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LE_D:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 32577*/      /*Scope*/ 12, /*->32590*/
/* 32578*/        OPC_CheckChild2CondCode, ISD::SETULE,
/* 32580*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32582*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_ULE_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft, SETULE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_ULE_D:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 32590*/      /*Scope*/ 12, /*->32603*/
/* 32591*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 32593*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32595*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_EQ_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_EQ_D:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs)
/* 32603*/      /*Scope*/ 12, /*->32616*/
/* 32604*/        OPC_CheckChild2CondCode, ISD::SETGT,
/* 32606*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32608*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LE_D), 0,
                      MVT::i32, 2/*#Ops*/, 1, 0, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETGT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LE_D:{ *:[i32] } f64:{ *:[f64] }:$rhs, f64:{ *:[f64] }:$lhs)
/* 32616*/      /*Scope*/ 12, /*->32629*/
/* 32617*/        OPC_CheckChild2CondCode, ISD::SETGE,
/* 32619*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32621*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LT_D), 0,
                      MVT::i32, 2/*#Ops*/, 1, 0, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETGE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LT_D:{ *:[i32] } f64:{ *:[f64] }:$rhs, f64:{ *:[f64] }:$lhs)
/* 32629*/      /*Scope*/ 12, /*->32642*/
/* 32630*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 32632*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32634*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LT_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LT_D:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs)
/* 32642*/      /*Scope*/ 12, /*->32655*/
/* 32643*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 32645*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32647*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LE_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LE_D:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs)
/* 32655*/      /*Scope*/ 12, /*->32668*/
/* 32656*/        OPC_CheckChild2CondCode, ISD::SETUO,
/* 32658*/        OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32660*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_UN_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft, SETUO:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_UN_D_MMR6:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 32668*/      /*Scope*/ 12, /*->32681*/
/* 32669*/        OPC_CheckChild2CondCode, ISD::SETOEQ,
/* 32671*/        OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32673*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_EQ_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft, SETOEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_EQ_D_MMR6:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 32681*/      /*Scope*/ 12, /*->32694*/
/* 32682*/        OPC_CheckChild2CondCode, ISD::SETUEQ,
/* 32684*/        OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32686*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_UEQ_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft, SETUEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_UEQ_D_MMR6:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 32694*/      /*Scope*/ 12, /*->32707*/
/* 32695*/        OPC_CheckChild2CondCode, ISD::SETOLT,
/* 32697*/        OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32699*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LT_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft, SETOLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LT_D_MMR6:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 32707*/      /*Scope*/ 12, /*->32720*/
/* 32708*/        OPC_CheckChild2CondCode, ISD::SETULT,
/* 32710*/        OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32712*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_ULT_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft, SETULT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_ULT_D_MMR6:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 32720*/      /*Scope*/ 12, /*->32733*/
/* 32721*/        OPC_CheckChild2CondCode, ISD::SETOLE,
/* 32723*/        OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32725*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LE_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft, SETOLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LE_D_MMR6:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 32733*/      /*Scope*/ 12, /*->32746*/
/* 32734*/        OPC_CheckChild2CondCode, ISD::SETULE,
/* 32736*/        OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32738*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_ULE_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft, SETULE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_ULE_D_MMR6:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 32746*/      /*Scope*/ 12, /*->32759*/
/* 32747*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 32749*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32751*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_EQ_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_EQ_D_MMR6:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs)
/* 32759*/      /*Scope*/ 12, /*->32772*/
/* 32760*/        OPC_CheckChild2CondCode, ISD::SETGT,
/* 32762*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32764*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LE_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 1, 0, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETGT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LE_D_MMR6:{ *:[i32] } f64:{ *:[f64] }:$rhs, f64:{ *:[f64] }:$lhs)
/* 32772*/      /*Scope*/ 12, /*->32785*/
/* 32773*/        OPC_CheckChild2CondCode, ISD::SETGE,
/* 32775*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32777*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LT_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 1, 0, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETGE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LT_D_MMR6:{ *:[i32] } f64:{ *:[f64] }:$rhs, f64:{ *:[f64] }:$lhs)
/* 32785*/      /*Scope*/ 12, /*->32798*/
/* 32786*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 32788*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32790*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LT_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LT_D_MMR6:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs)
/* 32798*/      /*Scope*/ 12, /*->32811*/
/* 32799*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 32801*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32803*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMP_LE_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CMP_LE_D_MMR6:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs)
/* 32811*/      /*Scope*/ 23, /*->32835*/
/* 32812*/        OPC_CheckChild2CondCode, ISD::SETONE,
/* 32814*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32816*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UEQ_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32824*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32827*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETONE:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR:{ *:[i32] } (CMP_UEQ_D:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs), ZERO:{ *:[i32] })
/* 32835*/      /*Scope*/ 23, /*->32859*/
/* 32836*/        OPC_CheckChild2CondCode, ISD::SETO,
/* 32838*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32840*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UN_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32848*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32851*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETO:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR:{ *:[i32] } (CMP_UN_D:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs), ZERO:{ *:[i32] })
/* 32859*/      /*Scope*/ 23, /*->32883*/
/* 32860*/        OPC_CheckChild2CondCode, ISD::SETUNE,
/* 32862*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32864*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32872*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32875*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETUNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR:{ *:[i32] } (CMP_EQ_D:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs), ZERO:{ *:[i32] })
/* 32883*/      /*Scope*/ 23, /*->32907*/
/* 32884*/        OPC_CheckChild2CondCode, ISD::SETNE,
/* 32886*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32888*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32896*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32899*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR:{ *:[i32] } (CMP_EQ_D:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs), ZERO:{ *:[i32] })
/* 32907*/      /*Scope*/ 23, /*->32931*/
/* 32908*/        OPC_CheckChild2CondCode, ISD::SETONE,
/* 32910*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32912*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UEQ_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32920*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32923*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETONE:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR_MMR6:{ *:[i32] } (CMP_UEQ_D_MMR6:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs), ZERO:{ *:[i32] })
/* 32931*/      /*Scope*/ 23, /*->32955*/
/* 32932*/        OPC_CheckChild2CondCode, ISD::SETO,
/* 32934*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32936*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UN_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32944*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32947*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETO:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR_MMR6:{ *:[i32] } (CMP_UN_D_MMR6:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs), ZERO:{ *:[i32] })
/* 32955*/      /*Scope*/ 23, /*->32979*/
/* 32956*/        OPC_CheckChild2CondCode, ISD::SETUNE,
/* 32958*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32960*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32968*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32971*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETUNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR_MMR6:{ *:[i32] } (CMP_EQ_D_MMR6:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs), ZERO:{ *:[i32] })
/* 32979*/      /*Scope*/ 23, /*->33003*/
/* 32980*/        OPC_CheckChild2CondCode, ISD::SETNE,
/* 32982*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32984*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32992*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 32995*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3, 
                  // Src: (setcc:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs, SETNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (NOR_MMR6:{ *:[i32] } (CMP_EQ_D_MMR6:{ *:[i32] } f64:{ *:[f64] }:$lhs, f64:{ *:[f64] }:$rhs), ZERO:{ *:[i32] })
/* 33003*/      0, /*End of Scope*/
/* 33004*/    /*Scope*/ 24|128,1/*152*/, /*->33158*/
/* 33006*/      OPC_CheckChild0Type, MVT::v16i8,
/* 33008*/      OPC_RecordChild1, // #1 = $imm
/* 33009*/      OPC_CheckType, MVT::v16i8,
/* 33011*/      OPC_Scope, 15, /*->33028*/ // 10 children in Scope
/* 33013*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 33015*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33017*/        OPC_CheckComplexPat, /*CP*/20, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33020*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CEQI_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_simm5:{ *:[v16i8] }:$imm, SETEQ:{ *:[Other] }) - Complexity = 9
                  // Dst: (CEQI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_simm5:{ *:[v16i8] }:$imm)
/* 33028*/      /*Scope*/ 15, /*->33044*/
/* 33029*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 33031*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33033*/        OPC_CheckComplexPat, /*CP*/20, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33036*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLEI_S_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_simm5:{ *:[v16i8] }:$imm, SETLE:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLEI_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_simm5:{ *:[v16i8] }:$imm)
/* 33044*/      /*Scope*/ 15, /*->33060*/
/* 33045*/        OPC_CheckChild2CondCode, ISD::SETULE,
/* 33047*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33049*/        OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 33052*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLEI_U_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm5:{ *:[v16i8] }:$imm, SETULE:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLEI_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm5:{ *:[v16i8] }:$imm)
/* 33060*/      /*Scope*/ 15, /*->33076*/
/* 33061*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 33063*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33065*/        OPC_CheckComplexPat, /*CP*/20, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33068*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLTI_S_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_simm5:{ *:[v16i8] }:$imm, SETLT:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLTI_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_simm5:{ *:[v16i8] }:$imm)
/* 33076*/      /*Scope*/ 15, /*->33092*/
/* 33077*/        OPC_CheckChild2CondCode, ISD::SETULT,
/* 33079*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33081*/        OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 33084*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLTI_U_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm5:{ *:[v16i8] }:$imm, SETULT:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLTI_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm5:{ *:[v16i8] }:$imm)
/* 33092*/      /*Scope*/ 12, /*->33105*/
/* 33093*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 33095*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33097*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CEQ_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt, SETEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CEQ_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 33105*/      /*Scope*/ 12, /*->33118*/
/* 33106*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 33108*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33110*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLE_S_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt, SETLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLE_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 33118*/      /*Scope*/ 12, /*->33131*/
/* 33119*/        OPC_CheckChild2CondCode, ISD::SETULE,
/* 33121*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33123*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLE_U_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt, SETULE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLE_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 33131*/      /*Scope*/ 12, /*->33144*/
/* 33132*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 33134*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33136*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLT_S_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt, SETLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLT_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 33144*/      /*Scope*/ 12, /*->33157*/
/* 33145*/        OPC_CheckChild2CondCode, ISD::SETULT,
/* 33147*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33149*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLT_U_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt, SETULT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLT_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 33157*/      0, /*End of Scope*/
/* 33158*/    /*Scope*/ 24|128,1/*152*/, /*->33312*/
/* 33160*/      OPC_CheckChild0Type, MVT::v8i16,
/* 33162*/      OPC_RecordChild1, // #1 = $imm
/* 33163*/      OPC_CheckType, MVT::v8i16,
/* 33165*/      OPC_Scope, 15, /*->33182*/ // 10 children in Scope
/* 33167*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 33169*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33171*/        OPC_CheckComplexPat, /*CP*/21, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33174*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CEQI_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_simm5:{ *:[v8i16] }:$imm, SETEQ:{ *:[Other] }) - Complexity = 9
                  // Dst: (CEQI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_simm5:{ *:[v8i16] }:$imm)
/* 33182*/      /*Scope*/ 15, /*->33198*/
/* 33183*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 33185*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33187*/        OPC_CheckComplexPat, /*CP*/21, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33190*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLEI_S_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_simm5:{ *:[v8i16] }:$imm, SETLE:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLEI_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_simm5:{ *:[v8i16] }:$imm)
/* 33198*/      /*Scope*/ 15, /*->33214*/
/* 33199*/        OPC_CheckChild2CondCode, ISD::SETULE,
/* 33201*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33203*/        OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 33206*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLEI_U_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm5:{ *:[v8i16] }:$imm, SETULE:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLEI_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm5:{ *:[v8i16] }:$imm)
/* 33214*/      /*Scope*/ 15, /*->33230*/
/* 33215*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 33217*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33219*/        OPC_CheckComplexPat, /*CP*/21, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33222*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLTI_S_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_simm5:{ *:[v8i16] }:$imm, SETLT:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLTI_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_simm5:{ *:[v8i16] }:$imm)
/* 33230*/      /*Scope*/ 15, /*->33246*/
/* 33231*/        OPC_CheckChild2CondCode, ISD::SETULT,
/* 33233*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33235*/        OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 33238*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLTI_U_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm5:{ *:[v8i16] }:$imm, SETULT:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLTI_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm5:{ *:[v8i16] }:$imm)
/* 33246*/      /*Scope*/ 12, /*->33259*/
/* 33247*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 33249*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33251*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CEQ_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt, SETEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CEQ_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 33259*/      /*Scope*/ 12, /*->33272*/
/* 33260*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 33262*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33264*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLE_S_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt, SETLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLE_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 33272*/      /*Scope*/ 12, /*->33285*/
/* 33273*/        OPC_CheckChild2CondCode, ISD::SETULE,
/* 33275*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33277*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLE_U_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt, SETULE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLE_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 33285*/      /*Scope*/ 12, /*->33298*/
/* 33286*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 33288*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33290*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLT_S_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt, SETLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLT_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 33298*/      /*Scope*/ 12, /*->33311*/
/* 33299*/        OPC_CheckChild2CondCode, ISD::SETULT,
/* 33301*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33303*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLT_U_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt, SETULT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLT_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 33311*/      0, /*End of Scope*/
/* 33312*/    /*Scope*/ 24|128,1/*152*/, /*->33466*/
/* 33314*/      OPC_CheckChild0Type, MVT::v4i32,
/* 33316*/      OPC_RecordChild1, // #1 = $imm
/* 33317*/      OPC_CheckType, MVT::v4i32,
/* 33319*/      OPC_Scope, 15, /*->33336*/ // 10 children in Scope
/* 33321*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 33323*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33325*/        OPC_CheckComplexPat, /*CP*/22, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33328*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CEQI_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_simm5:{ *:[v4i32] }:$imm, SETEQ:{ *:[Other] }) - Complexity = 9
                  // Dst: (CEQI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_simm5:{ *:[v4i32] }:$imm)
/* 33336*/      /*Scope*/ 15, /*->33352*/
/* 33337*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 33339*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33341*/        OPC_CheckComplexPat, /*CP*/22, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33344*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLEI_S_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_simm5:{ *:[v4i32] }:$imm, SETLE:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLEI_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_simm5:{ *:[v4i32] }:$imm)
/* 33352*/      /*Scope*/ 15, /*->33368*/
/* 33353*/        OPC_CheckChild2CondCode, ISD::SETULE,
/* 33355*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33357*/        OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 33360*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLEI_U_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$imm, SETULE:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLEI_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$imm)
/* 33368*/      /*Scope*/ 15, /*->33384*/
/* 33369*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 33371*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33373*/        OPC_CheckComplexPat, /*CP*/22, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33376*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLTI_S_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_simm5:{ *:[v4i32] }:$imm, SETLT:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLTI_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_simm5:{ *:[v4i32] }:$imm)
/* 33384*/      /*Scope*/ 15, /*->33400*/
/* 33385*/        OPC_CheckChild2CondCode, ISD::SETULT,
/* 33387*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33389*/        OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 33392*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLTI_U_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$imm, SETULT:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLTI_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$imm)
/* 33400*/      /*Scope*/ 12, /*->33413*/
/* 33401*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 33403*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33405*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CEQ_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt, SETEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CEQ_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 33413*/      /*Scope*/ 12, /*->33426*/
/* 33414*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 33416*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33418*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLE_S_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt, SETLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLE_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 33426*/      /*Scope*/ 12, /*->33439*/
/* 33427*/        OPC_CheckChild2CondCode, ISD::SETULE,
/* 33429*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33431*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLE_U_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt, SETULE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLE_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 33439*/      /*Scope*/ 12, /*->33452*/
/* 33440*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 33442*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33444*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLT_S_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt, SETLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLT_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 33452*/      /*Scope*/ 12, /*->33465*/
/* 33453*/        OPC_CheckChild2CondCode, ISD::SETULT,
/* 33455*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33457*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLT_U_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt, SETULT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLT_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 33465*/      0, /*End of Scope*/
/* 33466*/    /*Scope*/ 24|128,1/*152*/, /*->33620*/
/* 33468*/      OPC_CheckChild0Type, MVT::v2i64,
/* 33470*/      OPC_RecordChild1, // #1 = $imm
/* 33471*/      OPC_CheckType, MVT::v2i64,
/* 33473*/      OPC_Scope, 15, /*->33490*/ // 10 children in Scope
/* 33475*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 33477*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33479*/        OPC_CheckComplexPat, /*CP*/23, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33482*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CEQI_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_simm5:{ *:[v2i64] }:$imm, SETEQ:{ *:[Other] }) - Complexity = 9
                  // Dst: (CEQI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_simm5:{ *:[v2i64] }:$imm)
/* 33490*/      /*Scope*/ 15, /*->33506*/
/* 33491*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 33493*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33495*/        OPC_CheckComplexPat, /*CP*/23, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33498*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLEI_S_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_simm5:{ *:[v2i64] }:$imm, SETLE:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLEI_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_simm5:{ *:[v2i64] }:$imm)
/* 33506*/      /*Scope*/ 15, /*->33522*/
/* 33507*/        OPC_CheckChild2CondCode, ISD::SETULE,
/* 33509*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33511*/        OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 33514*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLEI_U_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm5:{ *:[v2i64] }:$imm, SETULE:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLEI_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm5:{ *:[v2i64] }:$imm)
/* 33522*/      /*Scope*/ 15, /*->33538*/
/* 33523*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 33525*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33527*/        OPC_CheckComplexPat, /*CP*/23, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33530*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLTI_S_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_simm5:{ *:[v2i64] }:$imm, SETLT:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLTI_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_simm5:{ *:[v2i64] }:$imm)
/* 33538*/      /*Scope*/ 15, /*->33554*/
/* 33539*/        OPC_CheckChild2CondCode, ISD::SETULT,
/* 33541*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33543*/        OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 33546*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLTI_U_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 2, 
                  // Src: (vsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm5:{ *:[v2i64] }:$imm, SETULT:{ *:[Other] }) - Complexity = 9
                  // Dst: (CLTI_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm5:{ *:[v2i64] }:$imm)
/* 33554*/      /*Scope*/ 12, /*->33567*/
/* 33555*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 33557*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33559*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CEQ_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt, SETEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (CEQ_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 33567*/      /*Scope*/ 12, /*->33580*/
/* 33568*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 33570*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33572*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLE_S_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt, SETLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLE_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 33580*/      /*Scope*/ 12, /*->33593*/
/* 33581*/        OPC_CheckChild2CondCode, ISD::SETULE,
/* 33583*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33585*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLE_U_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt, SETULE:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLE_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 33593*/      /*Scope*/ 12, /*->33606*/
/* 33594*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 33596*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33598*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLT_S_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt, SETLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLT_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 33606*/      /*Scope*/ 12, /*->33619*/
/* 33607*/        OPC_CheckChild2CondCode, ISD::SETULT,
/* 33609*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33611*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CLT_U_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt, SETULT:{ *:[Other] }) - Complexity = 3
                  // Dst: (CLT_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 33619*/      0, /*End of Scope*/
/* 33620*/    /*Scope*/ 61|128,1/*189*/, /*->33811*/
/* 33622*/      OPC_CheckChild0Type, MVT::v4f32,
/* 33624*/      OPC_RecordChild1, // #1 = $wt
/* 33625*/      OPC_CheckType, MVT::v4i32,
/* 33627*/      OPC_Scope, 12, /*->33641*/ // 14 children in Scope
/* 33629*/        OPC_CheckChild2CondCode, ISD::SETOEQ,
/* 33631*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33633*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCEQ_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt, SETOEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCEQ_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 33641*/      /*Scope*/ 12, /*->33654*/
/* 33642*/        OPC_CheckChild2CondCode, ISD::SETOLE,
/* 33644*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33646*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCLE_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt, SETOLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCLE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 33654*/      /*Scope*/ 12, /*->33667*/
/* 33655*/        OPC_CheckChild2CondCode, ISD::SETOLT,
/* 33657*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33659*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCLT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt, SETOLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCLT_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 33667*/      /*Scope*/ 12, /*->33680*/
/* 33668*/        OPC_CheckChild2CondCode, ISD::SETONE,
/* 33670*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33672*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCNE_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt, SETONE:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCNE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 33680*/      /*Scope*/ 12, /*->33693*/
/* 33681*/        OPC_CheckChild2CondCode, ISD::SETO,
/* 33683*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33685*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCOR_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt, SETO:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCOR_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 33693*/      /*Scope*/ 12, /*->33706*/
/* 33694*/        OPC_CheckChild2CondCode, ISD::SETUEQ,
/* 33696*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33698*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCUEQ_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt, SETUEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCUEQ_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 33706*/      /*Scope*/ 12, /*->33719*/
/* 33707*/        OPC_CheckChild2CondCode, ISD::SETULE,
/* 33709*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33711*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCULE_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt, SETULE:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCULE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 33719*/      /*Scope*/ 12, /*->33732*/
/* 33720*/        OPC_CheckChild2CondCode, ISD::SETULT,
/* 33722*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33724*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCULT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt, SETULT:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCULT_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 33732*/      /*Scope*/ 12, /*->33745*/
/* 33733*/        OPC_CheckChild2CondCode, ISD::SETUO,
/* 33735*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33737*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCUN_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt, SETUO:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCUN_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 33745*/      /*Scope*/ 12, /*->33758*/
/* 33746*/        OPC_CheckChild2CondCode, ISD::SETUNE,
/* 33748*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33750*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCUNE_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt, SETUNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCUNE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 33758*/      /*Scope*/ 12, /*->33771*/
/* 33759*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 33761*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 33763*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCEQ_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$a, MSA128WOpnd:{ *:[v4f32] }:$b, SETEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCEQ_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$a, MSA128WOpnd:{ *:[v4f32] }:$b)
/* 33771*/      /*Scope*/ 12, /*->33784*/
/* 33772*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 33774*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 33776*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCLE_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$a, MSA128WOpnd:{ *:[v4f32] }:$b, SETLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCLE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$a, MSA128WOpnd:{ *:[v4f32] }:$b)
/* 33784*/      /*Scope*/ 12, /*->33797*/
/* 33785*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 33787*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 33789*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCLT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$a, MSA128WOpnd:{ *:[v4f32] }:$b, SETLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCLT_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$a, MSA128WOpnd:{ *:[v4f32] }:$b)
/* 33797*/      /*Scope*/ 12, /*->33810*/
/* 33798*/        OPC_CheckChild2CondCode, ISD::SETNE,
/* 33800*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 33802*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCNE_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$a, MSA128WOpnd:{ *:[v4f32] }:$b, SETNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCNE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$a, MSA128WOpnd:{ *:[v4f32] }:$b)
/* 33810*/      0, /*End of Scope*/
/* 33811*/    /*Scope*/ 61|128,1/*189*/, /*->34002*/
/* 33813*/      OPC_CheckChild0Type, MVT::v2f64,
/* 33815*/      OPC_RecordChild1, // #1 = $wt
/* 33816*/      OPC_CheckType, MVT::v2i64,
/* 33818*/      OPC_Scope, 12, /*->33832*/ // 14 children in Scope
/* 33820*/        OPC_CheckChild2CondCode, ISD::SETOEQ,
/* 33822*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33824*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCEQ_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt, SETOEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCEQ_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 33832*/      /*Scope*/ 12, /*->33845*/
/* 33833*/        OPC_CheckChild2CondCode, ISD::SETOLE,
/* 33835*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33837*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCLE_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt, SETOLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCLE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 33845*/      /*Scope*/ 12, /*->33858*/
/* 33846*/        OPC_CheckChild2CondCode, ISD::SETOLT,
/* 33848*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33850*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCLT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt, SETOLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCLT_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 33858*/      /*Scope*/ 12, /*->33871*/
/* 33859*/        OPC_CheckChild2CondCode, ISD::SETONE,
/* 33861*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33863*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCNE_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt, SETONE:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCNE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 33871*/      /*Scope*/ 12, /*->33884*/
/* 33872*/        OPC_CheckChild2CondCode, ISD::SETO,
/* 33874*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33876*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCOR_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt, SETO:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCOR_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 33884*/      /*Scope*/ 12, /*->33897*/
/* 33885*/        OPC_CheckChild2CondCode, ISD::SETUEQ,
/* 33887*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33889*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCUEQ_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt, SETUEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCUEQ_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 33897*/      /*Scope*/ 12, /*->33910*/
/* 33898*/        OPC_CheckChild2CondCode, ISD::SETULE,
/* 33900*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33902*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCULE_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt, SETULE:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCULE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 33910*/      /*Scope*/ 12, /*->33923*/
/* 33911*/        OPC_CheckChild2CondCode, ISD::SETULT,
/* 33913*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33915*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCULT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt, SETULT:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCULT_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 33923*/      /*Scope*/ 12, /*->33936*/
/* 33924*/        OPC_CheckChild2CondCode, ISD::SETUO,
/* 33926*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33928*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCUN_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt, SETUO:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCUN_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 33936*/      /*Scope*/ 12, /*->33949*/
/* 33937*/        OPC_CheckChild2CondCode, ISD::SETUNE,
/* 33939*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33941*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCUNE_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt, SETUNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCUNE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 33949*/      /*Scope*/ 12, /*->33962*/
/* 33950*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 33952*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 33954*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCEQ_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$a, MSA128DOpnd:{ *:[v2f64] }:$b, SETEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCEQ_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$a, MSA128DOpnd:{ *:[v2f64] }:$b)
/* 33962*/      /*Scope*/ 12, /*->33975*/
/* 33963*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 33965*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 33967*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCLE_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$a, MSA128DOpnd:{ *:[v2f64] }:$b, SETLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCLE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$a, MSA128DOpnd:{ *:[v2f64] }:$b)
/* 33975*/      /*Scope*/ 12, /*->33988*/
/* 33976*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 33978*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 33980*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCLT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$a, MSA128DOpnd:{ *:[v2f64] }:$b, SETLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCLT_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$a, MSA128DOpnd:{ *:[v2f64] }:$b)
/* 33988*/      /*Scope*/ 12, /*->34001*/
/* 33989*/        OPC_CheckChild2CondCode, ISD::SETNE,
/* 33991*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 33993*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCNE_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (vfsetcc:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$a, MSA128DOpnd:{ *:[v2f64] }:$b, SETNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (FCNE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$a, MSA128DOpnd:{ *:[v2f64] }:$b)
/* 34001*/      0, /*End of Scope*/
/* 34002*/    0, /*End of Scope*/
/* 34003*/  /*SwitchOpcode*/ 76, TARGET_VAL(MipsISD::FPBrcond),// ->34082
/* 34006*/    OPC_RecordNode, // #0 = 'MipsFPBrcond' chained node
/* 34007*/    OPC_CaptureGlueInput,
/* 34008*/    OPC_Scope, 35, /*->34045*/ // 2 children in Scope
/* 34010*/      OPC_CheckChild1Integer, 0, 
/* 34012*/      OPC_CheckChild1Type, MVT::i32,
/* 34014*/      OPC_RecordChild2, // #1 = $fcc
/* 34015*/      OPC_RecordChild3, // #2 = $offset
/* 34016*/      OPC_MoveChild3,
/* 34017*/      OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 34020*/      OPC_MoveParent,
/* 34021*/      OPC_Scope, 10, /*->34033*/ // 2 children in Scope
/* 34023*/        OPC_CheckPatternPredicate, 66, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 34025*/        OPC_EmitMergeInputChains1_0,
/* 34026*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::BC1F), 0|OPFL_Chain|OPFL_GlueInput,
                      2/*#Ops*/, 1, 2, 
                  // Src: (MipsFPBrcond 0:{ *:[i32] }, FCCRegsOpnd:{ *:[i32] }:$fcc, (bb:{ *:[Other] }):$offset) - Complexity = 8
                  // Dst: (BC1F FCCRegsOpnd:{ *:[i32] }:$fcc, (bb:{ *:[Other] }):$offset)
/* 34033*/      /*Scope*/ 10, /*->34044*/
/* 34034*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 34036*/        OPC_EmitMergeInputChains1_0,
/* 34037*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::BC1F_MM), 0|OPFL_Chain|OPFL_GlueInput,
                      2/*#Ops*/, 1, 2, 
                  // Src: (MipsFPBrcond 0:{ *:[i32] }, FCCRegsOpnd:{ *:[i32] }:$fcc, (bb:{ *:[Other] }):$offset) - Complexity = 8
                  // Dst: (BC1F_MM FCCRegsOpnd:{ *:[i32] }:$fcc, (bb:{ *:[Other] }):$offset)
/* 34044*/      0, /*End of Scope*/
/* 34045*/    /*Scope*/ 35, /*->34081*/
/* 34046*/      OPC_CheckChild1Integer, 1, 
/* 34048*/      OPC_CheckChild1Type, MVT::i32,
/* 34050*/      OPC_RecordChild2, // #1 = $fcc
/* 34051*/      OPC_RecordChild3, // #2 = $offset
/* 34052*/      OPC_MoveChild3,
/* 34053*/      OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 34056*/      OPC_MoveParent,
/* 34057*/      OPC_Scope, 10, /*->34069*/ // 2 children in Scope
/* 34059*/        OPC_CheckPatternPredicate, 66, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 34061*/        OPC_EmitMergeInputChains1_0,
/* 34062*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::BC1T), 0|OPFL_Chain|OPFL_GlueInput,
                      2/*#Ops*/, 1, 2, 
                  // Src: (MipsFPBrcond 1:{ *:[i32] }, FCCRegsOpnd:{ *:[i32] }:$fcc, (bb:{ *:[Other] }):$offset) - Complexity = 8
                  // Dst: (BC1T FCCRegsOpnd:{ *:[i32] }:$fcc, (bb:{ *:[Other] }):$offset)
/* 34069*/      /*Scope*/ 10, /*->34080*/
/* 34070*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 34072*/        OPC_EmitMergeInputChains1_0,
/* 34073*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::BC1T_MM), 0|OPFL_Chain|OPFL_GlueInput,
                      2/*#Ops*/, 1, 2, 
                  // Src: (MipsFPBrcond 1:{ *:[i32] }, FCCRegsOpnd:{ *:[i32] }:$fcc, (bb:{ *:[Other] }):$offset) - Complexity = 8
                  // Dst: (BC1T_MM FCCRegsOpnd:{ *:[i32] }:$fcc, (bb:{ *:[Other] }):$offset)
/* 34080*/      0, /*End of Scope*/
/* 34081*/    0, /*End of Scope*/
/* 34082*/  /*SwitchOpcode*/ 41|128,2/*297*/, TARGET_VAL(ISD::SUB),// ->34383
/* 34086*/    OPC_Scope, 14, /*->34102*/ // 2 children in Scope
/* 34088*/      OPC_CheckChild0Integer, 0, 
/* 34090*/      OPC_RecordChild1, // #0 = $r
/* 34091*/      OPC_CheckType, MVT::i32,
/* 34093*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 34095*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::NegRxRy16), 0,
                    MVT::i32, 1/*#Ops*/, 0, 
                // Src: (sub:{ *:[i32] } 0:{ *:[i32] }, CPU16Regs:{ *:[i32] }:$r) - Complexity = 8
                // Dst: (NegRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$r)
/* 34102*/    /*Scope*/ 22|128,2/*278*/, /*->34382*/
/* 34104*/      OPC_RecordChild0, // #0 = $rs
/* 34105*/      OPC_Scope, 7|128,1/*135*/, /*->34243*/ // 3 children in Scope
/* 34108*/        OPC_RecordChild1, // #1 = $rt
/* 34109*/        OPC_SwitchType /*6 cases */, 58, MVT::i32,// ->34170
/* 34112*/          OPC_Scope, 10, /*->34124*/ // 4 children in Scope
/* 34114*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 34116*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU16_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (sub:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, GPRMM16Opnd:{ *:[i32] }:$rt) - Complexity = 4
                      // Dst: (SUBU16_MMR6:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, GPRMM16Opnd:{ *:[i32] }:$rt)
/* 34124*/          /*Scope*/ 10, /*->34135*/
/* 34125*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 34127*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBu), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (sub:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                      // Dst: (SUBu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 34135*/          /*Scope*/ 10, /*->34146*/
/* 34136*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 34138*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::SubuRxRyRz16), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (sub:{ *:[i32] } CPU16Regs:{ *:[i32] }:$l, CPU16Regs:{ *:[i32] }:$r) - Complexity = 3
                      // Dst: (SubuRxRyRz16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$l, CPU16Regs:{ *:[i32] }:$r)
/* 34146*/          /*Scope*/ 22, /*->34169*/
/* 34147*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 34149*/            OPC_Scope, 8, /*->34159*/ // 2 children in Scope
/* 34151*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU16_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (sub:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, GPRMM16Opnd:{ *:[i32] }:$rt) - Complexity = 3
                        // Dst: (SUBU16_MM:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, GPRMM16Opnd:{ *:[i32] }:$rt)
/* 34159*/            /*Scope*/ 8, /*->34168*/
/* 34160*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (sub:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                        // Dst: (SUBu_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 34168*/            0, /*End of Scope*/
/* 34169*/          0, /*End of Scope*/
/* 34170*/        /*SwitchType*/ 10, MVT::i64,// ->34182
/* 34172*/          OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 34174*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DSUBu), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (sub:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                    // Dst: (DSUBu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 34182*/        /*SwitchType*/ 13, MVT::v16i8,// ->34197
/* 34184*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34186*/          OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34189*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBVI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 2, 
                    // Src: (sub:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm5:{ *:[v16i8] }:$imm) - Complexity = 9
                    // Dst: (SUBVI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm5:{ *:[v16i8] }:$imm)
/* 34197*/        /*SwitchType*/ 13, MVT::v8i16,// ->34212
/* 34199*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34201*/          OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34204*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBVI_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 2, 
                    // Src: (sub:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm5:{ *:[v8i16] }:$imm) - Complexity = 9
                    // Dst: (SUBVI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm5:{ *:[v8i16] }:$imm)
/* 34212*/        /*SwitchType*/ 13, MVT::v4i32,// ->34227
/* 34214*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34216*/          OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34219*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBVI_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 2, 
                    // Src: (sub:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$imm) - Complexity = 9
                    // Dst: (SUBVI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$imm)
/* 34227*/        /*SwitchType*/ 13, MVT::v2i64,// ->34242
/* 34229*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34231*/          OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34234*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBVI_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 2, 
                    // Src: (sub:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm5:{ *:[v2i64] }:$imm) - Complexity = 9
                    // Dst: (SUBVI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm5:{ *:[v2i64] }:$imm)
/* 34242*/        0, // EndSwitchType
/* 34243*/      /*Scope*/ 61, /*->34305*/
/* 34244*/        OPC_MoveChild1,
/* 34245*/        OPC_CheckOpcode, TARGET_VAL(ISD::MUL),
/* 34248*/        OPC_RecordChild0, // #1 = $ws
/* 34249*/        OPC_RecordChild1, // #2 = $wt
/* 34250*/        OPC_MoveParent,
/* 34251*/        OPC_SwitchType /*4 cases */, 11, MVT::v16i8,// ->34265
/* 34254*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34256*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUBV_B), 0,
                        MVT::v16i8, 3/*#Ops*/, 0, 1, 2, 
                    // Src: (sub:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, (mul:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)) - Complexity = 6
                    // Dst: (MSUBV_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 34265*/        /*SwitchType*/ 11, MVT::v8i16,// ->34278
/* 34267*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34269*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUBV_H), 0,
                        MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                    // Src: (sub:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, (mul:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)) - Complexity = 6
                    // Dst: (MSUBV_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 34278*/        /*SwitchType*/ 11, MVT::v4i32,// ->34291
/* 34280*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34282*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUBV_W), 0,
                        MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                    // Src: (sub:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, (mul:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)) - Complexity = 6
                    // Dst: (MSUBV_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 34291*/        /*SwitchType*/ 11, MVT::v2i64,// ->34304
/* 34293*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34295*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUBV_D), 0,
                        MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                    // Src: (sub:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, (mul:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)) - Complexity = 6
                    // Dst: (MSUBV_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 34304*/        0, // EndSwitchType
/* 34305*/      /*Scope*/ 75, /*->34381*/
/* 34306*/        OPC_RecordChild1, // #1 = $b
/* 34307*/        OPC_SwitchType /*6 cases */, 10, MVT::v2i16,// ->34320
/* 34310*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 34312*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQ_PH), 0,
                        MVT::v2i16, 2/*#Ops*/, 0, 1, 
                    // Src: (sub:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b) - Complexity = 3
                    // Dst: (SUBQ_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b)
/* 34320*/        /*SwitchType*/ 10, MVT::v4i8,// ->34332
/* 34322*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 34324*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_QB), 0,
                        MVT::v4i8, 2/*#Ops*/, 0, 1, 
                    // Src: (sub:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b) - Complexity = 3
                    // Dst: (SUBU_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b)
/* 34332*/        /*SwitchType*/ 10, MVT::v16i8,// ->34344
/* 34334*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34336*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBV_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (sub:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                    // Dst: (SUBV_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 34344*/        /*SwitchType*/ 10, MVT::v8i16,// ->34356
/* 34346*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34348*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBV_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (sub:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                    // Dst: (SUBV_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 34356*/        /*SwitchType*/ 10, MVT::v4i32,// ->34368
/* 34358*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34360*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBV_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (sub:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                    // Dst: (SUBV_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 34368*/        /*SwitchType*/ 10, MVT::v2i64,// ->34380
/* 34370*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34372*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBV_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (sub:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                    // Dst: (SUBV_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 34380*/        0, // EndSwitchType
/* 34381*/      0, /*End of Scope*/
/* 34382*/    0, /*End of Scope*/
/* 34383*/  /*SwitchOpcode*/ 7|128,17/*2183*/, TARGET_VAL(ISD::OR),// ->36570
/* 34387*/    OPC_Scope, 27|128,4/*539*/, /*->34929*/ // 13 children in Scope
/* 34390*/      OPC_RecordChild0, // #0 = $rs
/* 34391*/      OPC_Scope, 35|128,1/*163*/, /*->34557*/ // 2 children in Scope
/* 34394*/        OPC_RecordChild1, // #1 = $imm16
/* 34395*/        OPC_Scope, 85, /*->34482*/ // 3 children in Scope
/* 34397*/          OPC_MoveChild1,
/* 34398*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34401*/          OPC_Scope, 20, /*->34423*/ // 3 children in Scope
/* 34403*/            OPC_CheckPredicate, 18, // Predicate_immZExt16
/* 34405*/            OPC_MoveParent,
/* 34406*/            OPC_CheckType, MVT::i32,
/* 34408*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 34410*/            OPC_EmitConvertToTarget, 1,
/* 34412*/            OPC_EmitNodeXForm, 3, 2, // LO16
/* 34415*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ORI_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 0, 3, 
                      // Src: (or:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm16) - Complexity = 8
                      // Dst: (ORI_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (LO16:{ *:[i32] } (imm:{ *:[i32] }):$imm16))
/* 34423*/          /*Scope*/ 17, /*->34441*/
/* 34424*/            OPC_CheckPredicate, 32, // Predicate_imm32ZExt16
/* 34426*/            OPC_MoveParent,
/* 34427*/            OPC_CheckType, MVT::i32,
/* 34429*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 34431*/            OPC_EmitConvertToTarget, 1,
/* 34433*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::ORi), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2, 
                      // Src: (or:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_imm32ZExt16>>:$imm16) - Complexity = 7
                      // Dst: (ORi:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$imm16)
/* 34441*/          /*Scope*/ 39, /*->34481*/
/* 34442*/            OPC_CheckPredicate, 18, // Predicate_immZExt16
/* 34444*/            OPC_MoveParent,
/* 34445*/            OPC_SwitchType /*2 cases */, 15, MVT::i64,// ->34463
/* 34448*/              OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 34450*/              OPC_EmitConvertToTarget, 1,
/* 34452*/              OPC_EmitNodeXForm, 3, 2, // LO16
/* 34455*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ORi64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 3, 
                        // Src: (or:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i64] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm16) - Complexity = 7
                        // Dst: (ORi64:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, (LO16:{ *:[i64] } (imm:{ *:[i64] }):$imm16))
/* 34463*/            /*SwitchType*/ 15, MVT::i32,// ->34480
/* 34465*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 34467*/              OPC_EmitConvertToTarget, 1,
/* 34469*/              OPC_EmitNodeXForm, 3, 2, // LO16
/* 34472*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ORi_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 3, 
                        // Src: (or:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm16) - Complexity = 7
                        // Dst: (ORi_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (LO16:{ *:[i32] } (imm:{ *:[i32] }):$imm16))
/* 34480*/            0, // EndSwitchType
/* 34481*/          0, /*End of Scope*/
/* 34482*/        /*Scope*/ 60, /*->34543*/
/* 34483*/          OPC_CheckType, MVT::i32,
/* 34485*/          OPC_Scope, 10, /*->34497*/ // 4 children in Scope
/* 34487*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 34489*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::OR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (or:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                      // Dst: (OR:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 34497*/          /*Scope*/ 10, /*->34508*/
/* 34498*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 34500*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::OrRxRxRy16), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (or:{ *:[i32] } CPU16Regs:{ *:[i32] }:$l, CPU16Regs:{ *:[i32] }:$r) - Complexity = 3
                      // Dst: (OrRxRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$l, CPU16Regs:{ *:[i32] }:$r)
/* 34508*/          /*Scope*/ 22, /*->34531*/
/* 34509*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 34511*/            OPC_Scope, 8, /*->34521*/ // 2 children in Scope
/* 34513*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR16_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (or:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, GPRMM16Opnd:{ *:[i32] }:$rt) - Complexity = 3
                        // Dst: (OR16_MM:{ *:[i32] } GPRMM16Opnd:{ *:[i32] }:$rs, GPRMM16Opnd:{ *:[i32] }:$rt)
/* 34521*/            /*Scope*/ 8, /*->34530*/
/* 34522*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::OR_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1, 
                        // Src: (or:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                        // Dst: (OR_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 34530*/            0, /*End of Scope*/
/* 34531*/          /*Scope*/ 10, /*->34542*/
/* 34532*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 34534*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::OR_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1, 
                      // Src: (or:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                      // Dst: (OR_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 34542*/          0, /*End of Scope*/
/* 34543*/        /*Scope*/ 12, /*->34556*/
/* 34544*/          OPC_CheckType, MVT::i64,
/* 34546*/          OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 34548*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::OR64), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1, 
                    // Src: (or:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                    // Dst: (OR64:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 34556*/        0, /*End of Scope*/
/* 34557*/      /*Scope*/ 113|128,2/*369*/, /*->34928*/
/* 34559*/        OPC_MoveChild1,
/* 34560*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 34563*/        OPC_MoveChild0,
/* 34564*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 34567*/        OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 34569*/        OPC_MoveParent,
/* 34570*/        OPC_MoveChild1,
/* 34571*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 34574*/        OPC_Scope, 46|128,1/*174*/, /*->34751*/ // 2 children in Scope
/* 34577*/          OPC_RecordChild0, // #1 = $wt
/* 34578*/          OPC_MoveChild1,
/* 34579*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 34582*/          OPC_MoveChild0,
/* 34583*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34586*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34588*/          OPC_CheckType, MVT::i32,
/* 34590*/          OPC_MoveParent,
/* 34591*/          OPC_MoveChild1,
/* 34592*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34595*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34597*/          OPC_CheckType, MVT::i32,
/* 34599*/          OPC_MoveParent,
/* 34600*/          OPC_MoveChild2,
/* 34601*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34604*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34606*/          OPC_CheckType, MVT::i32,
/* 34608*/          OPC_MoveParent,
/* 34609*/          OPC_MoveChild3,
/* 34610*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34613*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34615*/          OPC_CheckType, MVT::i32,
/* 34617*/          OPC_MoveParent,
/* 34618*/          OPC_MoveChild4,
/* 34619*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34622*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34624*/          OPC_CheckType, MVT::i32,
/* 34626*/          OPC_MoveParent,
/* 34627*/          OPC_MoveChild5,
/* 34628*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34631*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34633*/          OPC_CheckType, MVT::i32,
/* 34635*/          OPC_MoveParent,
/* 34636*/          OPC_MoveChild6,
/* 34637*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34640*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34642*/          OPC_CheckType, MVT::i32,
/* 34644*/          OPC_MoveParent,
/* 34645*/          OPC_MoveChild7,
/* 34646*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34649*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34651*/          OPC_CheckType, MVT::i32,
/* 34653*/          OPC_MoveParent,
/* 34654*/          OPC_MoveChild, 8,
/* 34656*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34659*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34661*/          OPC_CheckType, MVT::i32,
/* 34663*/          OPC_MoveParent,
/* 34664*/          OPC_MoveChild, 9,
/* 34666*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34669*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34671*/          OPC_CheckType, MVT::i32,
/* 34673*/          OPC_MoveParent,
/* 34674*/          OPC_MoveChild, 10,
/* 34676*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34679*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34681*/          OPC_CheckType, MVT::i32,
/* 34683*/          OPC_MoveParent,
/* 34684*/          OPC_MoveChild, 11,
/* 34686*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34689*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34691*/          OPC_CheckType, MVT::i32,
/* 34693*/          OPC_MoveParent,
/* 34694*/          OPC_MoveChild, 12,
/* 34696*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34699*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34701*/          OPC_CheckType, MVT::i32,
/* 34703*/          OPC_MoveParent,
/* 34704*/          OPC_MoveChild, 13,
/* 34706*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34709*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34711*/          OPC_CheckType, MVT::i32,
/* 34713*/          OPC_MoveParent,
/* 34714*/          OPC_MoveChild, 14,
/* 34716*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34719*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34721*/          OPC_CheckType, MVT::i32,
/* 34723*/          OPC_MoveParent,
/* 34724*/          OPC_MoveChild, 15,
/* 34726*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34729*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34731*/          OPC_CheckType, MVT::i32,
/* 34733*/          OPC_MoveParent,
/* 34734*/          OPC_MoveParent,
/* 34735*/          OPC_CheckType, MVT::v16i8,
/* 34737*/          OPC_MoveParent,
/* 34738*/          OPC_MoveParent,
/* 34739*/          OPC_CheckType, MVT::v16i8,
/* 34741*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 34743*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (or:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$wt, (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>)))) - Complexity = 80
                    // Dst: (BSET_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 34751*/        /*Scope*/ 46|128,1/*174*/, /*->34927*/
/* 34753*/          OPC_MoveChild0,
/* 34754*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 34757*/          OPC_MoveChild0,
/* 34758*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34761*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34763*/          OPC_CheckType, MVT::i32,
/* 34765*/          OPC_MoveParent,
/* 34766*/          OPC_MoveChild1,
/* 34767*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34770*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34772*/          OPC_CheckType, MVT::i32,
/* 34774*/          OPC_MoveParent,
/* 34775*/          OPC_MoveChild2,
/* 34776*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34779*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34781*/          OPC_CheckType, MVT::i32,
/* 34783*/          OPC_MoveParent,
/* 34784*/          OPC_MoveChild3,
/* 34785*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34788*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34790*/          OPC_CheckType, MVT::i32,
/* 34792*/          OPC_MoveParent,
/* 34793*/          OPC_MoveChild4,
/* 34794*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34797*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34799*/          OPC_CheckType, MVT::i32,
/* 34801*/          OPC_MoveParent,
/* 34802*/          OPC_MoveChild5,
/* 34803*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34806*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34808*/          OPC_CheckType, MVT::i32,
/* 34810*/          OPC_MoveParent,
/* 34811*/          OPC_MoveChild6,
/* 34812*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34815*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34817*/          OPC_CheckType, MVT::i32,
/* 34819*/          OPC_MoveParent,
/* 34820*/          OPC_MoveChild7,
/* 34821*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34824*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34826*/          OPC_CheckType, MVT::i32,
/* 34828*/          OPC_MoveParent,
/* 34829*/          OPC_MoveChild, 8,
/* 34831*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34834*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34836*/          OPC_CheckType, MVT::i32,
/* 34838*/          OPC_MoveParent,
/* 34839*/          OPC_MoveChild, 9,
/* 34841*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34844*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34846*/          OPC_CheckType, MVT::i32,
/* 34848*/          OPC_MoveParent,
/* 34849*/          OPC_MoveChild, 10,
/* 34851*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34854*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34856*/          OPC_CheckType, MVT::i32,
/* 34858*/          OPC_MoveParent,
/* 34859*/          OPC_MoveChild, 11,
/* 34861*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34864*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34866*/          OPC_CheckType, MVT::i32,
/* 34868*/          OPC_MoveParent,
/* 34869*/          OPC_MoveChild, 12,
/* 34871*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34874*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34876*/          OPC_CheckType, MVT::i32,
/* 34878*/          OPC_MoveParent,
/* 34879*/          OPC_MoveChild, 13,
/* 34881*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34884*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34886*/          OPC_CheckType, MVT::i32,
/* 34888*/          OPC_MoveParent,
/* 34889*/          OPC_MoveChild, 14,
/* 34891*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34894*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34896*/          OPC_CheckType, MVT::i32,
/* 34898*/          OPC_MoveParent,
/* 34899*/          OPC_MoveChild, 15,
/* 34901*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34904*/          OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34906*/          OPC_CheckType, MVT::i32,
/* 34908*/          OPC_MoveParent,
/* 34909*/          OPC_MoveParent,
/* 34910*/          OPC_RecordChild1, // #1 = $wt
/* 34911*/          OPC_CheckType, MVT::v16i8,
/* 34913*/          OPC_MoveParent,
/* 34914*/          OPC_MoveParent,
/* 34915*/          OPC_CheckType, MVT::v16i8,
/* 34917*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 34919*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (or:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>), v16i8:{ *:[v16i8] }:$wt))) - Complexity = 80
                    // Dst: (BSET_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 34927*/        0, /*End of Scope*/
/* 34928*/      0, /*End of Scope*/
/* 34929*/    /*Scope*/ 115|128,2/*371*/, /*->35302*/
/* 34931*/      OPC_MoveChild0,
/* 34932*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 34935*/      OPC_MoveChild0,
/* 34936*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 34939*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 34941*/      OPC_MoveParent,
/* 34942*/      OPC_MoveChild1,
/* 34943*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 34946*/      OPC_Scope, 47|128,1/*175*/, /*->35124*/ // 2 children in Scope
/* 34949*/        OPC_RecordChild0, // #0 = $wt
/* 34950*/        OPC_MoveChild1,
/* 34951*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 34954*/        OPC_MoveChild0,
/* 34955*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34958*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34960*/        OPC_CheckType, MVT::i32,
/* 34962*/        OPC_MoveParent,
/* 34963*/        OPC_MoveChild1,
/* 34964*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34967*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34969*/        OPC_CheckType, MVT::i32,
/* 34971*/        OPC_MoveParent,
/* 34972*/        OPC_MoveChild2,
/* 34973*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34976*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34978*/        OPC_CheckType, MVT::i32,
/* 34980*/        OPC_MoveParent,
/* 34981*/        OPC_MoveChild3,
/* 34982*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34985*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34987*/        OPC_CheckType, MVT::i32,
/* 34989*/        OPC_MoveParent,
/* 34990*/        OPC_MoveChild4,
/* 34991*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 34994*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 34996*/        OPC_CheckType, MVT::i32,
/* 34998*/        OPC_MoveParent,
/* 34999*/        OPC_MoveChild5,
/* 35000*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35003*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35005*/        OPC_CheckType, MVT::i32,
/* 35007*/        OPC_MoveParent,
/* 35008*/        OPC_MoveChild6,
/* 35009*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35012*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35014*/        OPC_CheckType, MVT::i32,
/* 35016*/        OPC_MoveParent,
/* 35017*/        OPC_MoveChild7,
/* 35018*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35021*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35023*/        OPC_CheckType, MVT::i32,
/* 35025*/        OPC_MoveParent,
/* 35026*/        OPC_MoveChild, 8,
/* 35028*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35031*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35033*/        OPC_CheckType, MVT::i32,
/* 35035*/        OPC_MoveParent,
/* 35036*/        OPC_MoveChild, 9,
/* 35038*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35041*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35043*/        OPC_CheckType, MVT::i32,
/* 35045*/        OPC_MoveParent,
/* 35046*/        OPC_MoveChild, 10,
/* 35048*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35051*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35053*/        OPC_CheckType, MVT::i32,
/* 35055*/        OPC_MoveParent,
/* 35056*/        OPC_MoveChild, 11,
/* 35058*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35061*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35063*/        OPC_CheckType, MVT::i32,
/* 35065*/        OPC_MoveParent,
/* 35066*/        OPC_MoveChild, 12,
/* 35068*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35071*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35073*/        OPC_CheckType, MVT::i32,
/* 35075*/        OPC_MoveParent,
/* 35076*/        OPC_MoveChild, 13,
/* 35078*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35081*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35083*/        OPC_CheckType, MVT::i32,
/* 35085*/        OPC_MoveParent,
/* 35086*/        OPC_MoveChild, 14,
/* 35088*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35091*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35093*/        OPC_CheckType, MVT::i32,
/* 35095*/        OPC_MoveParent,
/* 35096*/        OPC_MoveChild, 15,
/* 35098*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35101*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35103*/        OPC_CheckType, MVT::i32,
/* 35105*/        OPC_MoveParent,
/* 35106*/        OPC_MoveParent,
/* 35107*/        OPC_CheckType, MVT::v16i8,
/* 35109*/        OPC_MoveParent,
/* 35110*/        OPC_MoveParent,
/* 35111*/        OPC_RecordChild1, // #1 = $ws
/* 35112*/        OPC_CheckType, MVT::v16i8,
/* 35114*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 35116*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 1, 0, 
                  // Src: (or:{ *:[v16i8] } (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$wt, (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>))), v16i8:{ *:[v16i8] }:$ws) - Complexity = 80
                  // Dst: (BSET_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 35124*/      /*Scope*/ 47|128,1/*175*/, /*->35301*/
/* 35126*/        OPC_MoveChild0,
/* 35127*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35130*/        OPC_MoveChild0,
/* 35131*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35134*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35136*/        OPC_CheckType, MVT::i32,
/* 35138*/        OPC_MoveParent,
/* 35139*/        OPC_MoveChild1,
/* 35140*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35143*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35145*/        OPC_CheckType, MVT::i32,
/* 35147*/        OPC_MoveParent,
/* 35148*/        OPC_MoveChild2,
/* 35149*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35152*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35154*/        OPC_CheckType, MVT::i32,
/* 35156*/        OPC_MoveParent,
/* 35157*/        OPC_MoveChild3,
/* 35158*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35161*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35163*/        OPC_CheckType, MVT::i32,
/* 35165*/        OPC_MoveParent,
/* 35166*/        OPC_MoveChild4,
/* 35167*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35170*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35172*/        OPC_CheckType, MVT::i32,
/* 35174*/        OPC_MoveParent,
/* 35175*/        OPC_MoveChild5,
/* 35176*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35179*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35181*/        OPC_CheckType, MVT::i32,
/* 35183*/        OPC_MoveParent,
/* 35184*/        OPC_MoveChild6,
/* 35185*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35188*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35190*/        OPC_CheckType, MVT::i32,
/* 35192*/        OPC_MoveParent,
/* 35193*/        OPC_MoveChild7,
/* 35194*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35197*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35199*/        OPC_CheckType, MVT::i32,
/* 35201*/        OPC_MoveParent,
/* 35202*/        OPC_MoveChild, 8,
/* 35204*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35207*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35209*/        OPC_CheckType, MVT::i32,
/* 35211*/        OPC_MoveParent,
/* 35212*/        OPC_MoveChild, 9,
/* 35214*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35217*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35219*/        OPC_CheckType, MVT::i32,
/* 35221*/        OPC_MoveParent,
/* 35222*/        OPC_MoveChild, 10,
/* 35224*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35227*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35229*/        OPC_CheckType, MVT::i32,
/* 35231*/        OPC_MoveParent,
/* 35232*/        OPC_MoveChild, 11,
/* 35234*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35237*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35239*/        OPC_CheckType, MVT::i32,
/* 35241*/        OPC_MoveParent,
/* 35242*/        OPC_MoveChild, 12,
/* 35244*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35247*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35249*/        OPC_CheckType, MVT::i32,
/* 35251*/        OPC_MoveParent,
/* 35252*/        OPC_MoveChild, 13,
/* 35254*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35257*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35259*/        OPC_CheckType, MVT::i32,
/* 35261*/        OPC_MoveParent,
/* 35262*/        OPC_MoveChild, 14,
/* 35264*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35267*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35269*/        OPC_CheckType, MVT::i32,
/* 35271*/        OPC_MoveParent,
/* 35272*/        OPC_MoveChild, 15,
/* 35274*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35277*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 35279*/        OPC_CheckType, MVT::i32,
/* 35281*/        OPC_MoveParent,
/* 35282*/        OPC_MoveParent,
/* 35283*/        OPC_RecordChild1, // #0 = $wt
/* 35284*/        OPC_CheckType, MVT::v16i8,
/* 35286*/        OPC_MoveParent,
/* 35287*/        OPC_MoveParent,
/* 35288*/        OPC_RecordChild1, // #1 = $ws
/* 35289*/        OPC_CheckType, MVT::v16i8,
/* 35291*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 35293*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 1, 0, 
                  // Src: (or:{ *:[v16i8] } (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v16i8] } (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>), v16i8:{ *:[v16i8] }:$wt)), v16i8:{ *:[v16i8] }:$ws) - Complexity = 80
                  // Dst: (BSET_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 35301*/      0, /*End of Scope*/
/* 35302*/    /*Scope*/ 80|128,1/*208*/, /*->35512*/
/* 35304*/      OPC_RecordChild0, // #0 = $ws
/* 35305*/      OPC_MoveChild1,
/* 35306*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 35309*/      OPC_MoveChild0,
/* 35310*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35313*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 35315*/      OPC_MoveParent,
/* 35316*/      OPC_MoveChild1,
/* 35317*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 35320*/      OPC_Scope, 94, /*->35416*/ // 2 children in Scope
/* 35322*/        OPC_RecordChild0, // #1 = $wt
/* 35323*/        OPC_MoveChild1,
/* 35324*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35327*/        OPC_MoveChild0,
/* 35328*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35331*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35333*/        OPC_CheckType, MVT::i32,
/* 35335*/        OPC_MoveParent,
/* 35336*/        OPC_MoveChild1,
/* 35337*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35340*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35342*/        OPC_CheckType, MVT::i32,
/* 35344*/        OPC_MoveParent,
/* 35345*/        OPC_MoveChild2,
/* 35346*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35349*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35351*/        OPC_CheckType, MVT::i32,
/* 35353*/        OPC_MoveParent,
/* 35354*/        OPC_MoveChild3,
/* 35355*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35358*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35360*/        OPC_CheckType, MVT::i32,
/* 35362*/        OPC_MoveParent,
/* 35363*/        OPC_MoveChild4,
/* 35364*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35367*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35369*/        OPC_CheckType, MVT::i32,
/* 35371*/        OPC_MoveParent,
/* 35372*/        OPC_MoveChild5,
/* 35373*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35376*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35378*/        OPC_CheckType, MVT::i32,
/* 35380*/        OPC_MoveParent,
/* 35381*/        OPC_MoveChild6,
/* 35382*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35385*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35387*/        OPC_CheckType, MVT::i32,
/* 35389*/        OPC_MoveParent,
/* 35390*/        OPC_MoveChild7,
/* 35391*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35394*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35396*/        OPC_CheckType, MVT::i32,
/* 35398*/        OPC_MoveParent,
/* 35399*/        OPC_MoveParent,
/* 35400*/        OPC_CheckType, MVT::v8i16,
/* 35402*/        OPC_MoveParent,
/* 35403*/        OPC_MoveParent,
/* 35404*/        OPC_CheckType, MVT::v8i16,
/* 35406*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 35408*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (or:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$wt, (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>)))) - Complexity = 48
                  // Dst: (BSET_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 35416*/      /*Scope*/ 94, /*->35511*/
/* 35417*/        OPC_MoveChild0,
/* 35418*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35421*/        OPC_MoveChild0,
/* 35422*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35425*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35427*/        OPC_CheckType, MVT::i32,
/* 35429*/        OPC_MoveParent,
/* 35430*/        OPC_MoveChild1,
/* 35431*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35434*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35436*/        OPC_CheckType, MVT::i32,
/* 35438*/        OPC_MoveParent,
/* 35439*/        OPC_MoveChild2,
/* 35440*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35443*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35445*/        OPC_CheckType, MVT::i32,
/* 35447*/        OPC_MoveParent,
/* 35448*/        OPC_MoveChild3,
/* 35449*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35452*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35454*/        OPC_CheckType, MVT::i32,
/* 35456*/        OPC_MoveParent,
/* 35457*/        OPC_MoveChild4,
/* 35458*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35461*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35463*/        OPC_CheckType, MVT::i32,
/* 35465*/        OPC_MoveParent,
/* 35466*/        OPC_MoveChild5,
/* 35467*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35470*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35472*/        OPC_CheckType, MVT::i32,
/* 35474*/        OPC_MoveParent,
/* 35475*/        OPC_MoveChild6,
/* 35476*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35479*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35481*/        OPC_CheckType, MVT::i32,
/* 35483*/        OPC_MoveParent,
/* 35484*/        OPC_MoveChild7,
/* 35485*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35488*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35490*/        OPC_CheckType, MVT::i32,
/* 35492*/        OPC_MoveParent,
/* 35493*/        OPC_MoveParent,
/* 35494*/        OPC_RecordChild1, // #1 = $wt
/* 35495*/        OPC_CheckType, MVT::v8i16,
/* 35497*/        OPC_MoveParent,
/* 35498*/        OPC_MoveParent,
/* 35499*/        OPC_CheckType, MVT::v8i16,
/* 35501*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 35503*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (or:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>), v8i16:{ *:[v8i16] }:$wt))) - Complexity = 48
                  // Dst: (BSET_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 35511*/      0, /*End of Scope*/
/* 35512*/    /*Scope*/ 81|128,1/*209*/, /*->35723*/
/* 35514*/      OPC_MoveChild0,
/* 35515*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 35518*/      OPC_MoveChild0,
/* 35519*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35522*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 35524*/      OPC_MoveParent,
/* 35525*/      OPC_MoveChild1,
/* 35526*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 35529*/      OPC_Scope, 95, /*->35626*/ // 2 children in Scope
/* 35531*/        OPC_RecordChild0, // #0 = $wt
/* 35532*/        OPC_MoveChild1,
/* 35533*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35536*/        OPC_MoveChild0,
/* 35537*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35540*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35542*/        OPC_CheckType, MVT::i32,
/* 35544*/        OPC_MoveParent,
/* 35545*/        OPC_MoveChild1,
/* 35546*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35549*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35551*/        OPC_CheckType, MVT::i32,
/* 35553*/        OPC_MoveParent,
/* 35554*/        OPC_MoveChild2,
/* 35555*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35558*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35560*/        OPC_CheckType, MVT::i32,
/* 35562*/        OPC_MoveParent,
/* 35563*/        OPC_MoveChild3,
/* 35564*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35567*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35569*/        OPC_CheckType, MVT::i32,
/* 35571*/        OPC_MoveParent,
/* 35572*/        OPC_MoveChild4,
/* 35573*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35576*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35578*/        OPC_CheckType, MVT::i32,
/* 35580*/        OPC_MoveParent,
/* 35581*/        OPC_MoveChild5,
/* 35582*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35585*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35587*/        OPC_CheckType, MVT::i32,
/* 35589*/        OPC_MoveParent,
/* 35590*/        OPC_MoveChild6,
/* 35591*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35594*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35596*/        OPC_CheckType, MVT::i32,
/* 35598*/        OPC_MoveParent,
/* 35599*/        OPC_MoveChild7,
/* 35600*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35603*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35605*/        OPC_CheckType, MVT::i32,
/* 35607*/        OPC_MoveParent,
/* 35608*/        OPC_MoveParent,
/* 35609*/        OPC_CheckType, MVT::v8i16,
/* 35611*/        OPC_MoveParent,
/* 35612*/        OPC_MoveParent,
/* 35613*/        OPC_RecordChild1, // #1 = $ws
/* 35614*/        OPC_CheckType, MVT::v8i16,
/* 35616*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 35618*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 1, 0, 
                  // Src: (or:{ *:[v8i16] } (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$wt, (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>))), v8i16:{ *:[v8i16] }:$ws) - Complexity = 48
                  // Dst: (BSET_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 35626*/      /*Scope*/ 95, /*->35722*/
/* 35627*/        OPC_MoveChild0,
/* 35628*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35631*/        OPC_MoveChild0,
/* 35632*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35635*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35637*/        OPC_CheckType, MVT::i32,
/* 35639*/        OPC_MoveParent,
/* 35640*/        OPC_MoveChild1,
/* 35641*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35644*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35646*/        OPC_CheckType, MVT::i32,
/* 35648*/        OPC_MoveParent,
/* 35649*/        OPC_MoveChild2,
/* 35650*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35653*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35655*/        OPC_CheckType, MVT::i32,
/* 35657*/        OPC_MoveParent,
/* 35658*/        OPC_MoveChild3,
/* 35659*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35662*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35664*/        OPC_CheckType, MVT::i32,
/* 35666*/        OPC_MoveParent,
/* 35667*/        OPC_MoveChild4,
/* 35668*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35671*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35673*/        OPC_CheckType, MVT::i32,
/* 35675*/        OPC_MoveParent,
/* 35676*/        OPC_MoveChild5,
/* 35677*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35680*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35682*/        OPC_CheckType, MVT::i32,
/* 35684*/        OPC_MoveParent,
/* 35685*/        OPC_MoveChild6,
/* 35686*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35689*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35691*/        OPC_CheckType, MVT::i32,
/* 35693*/        OPC_MoveParent,
/* 35694*/        OPC_MoveChild7,
/* 35695*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35698*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 35700*/        OPC_CheckType, MVT::i32,
/* 35702*/        OPC_MoveParent,
/* 35703*/        OPC_MoveParent,
/* 35704*/        OPC_RecordChild1, // #0 = $wt
/* 35705*/        OPC_CheckType, MVT::v8i16,
/* 35707*/        OPC_MoveParent,
/* 35708*/        OPC_MoveParent,
/* 35709*/        OPC_RecordChild1, // #1 = $ws
/* 35710*/        OPC_CheckType, MVT::v8i16,
/* 35712*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 35714*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 1, 0, 
                  // Src: (or:{ *:[v8i16] } (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v8i16] } (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>), v8i16:{ *:[v8i16] }:$wt)), v8i16:{ *:[v8i16] }:$ws) - Complexity = 48
                  // Dst: (BSET_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 35722*/      0, /*End of Scope*/
/* 35723*/    /*Scope*/ 8|128,1/*136*/, /*->35861*/
/* 35725*/      OPC_RecordChild0, // #0 = $ws
/* 35726*/      OPC_MoveChild1,
/* 35727*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 35730*/      OPC_MoveChild0,
/* 35731*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35734*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 35736*/      OPC_MoveParent,
/* 35737*/      OPC_MoveChild1,
/* 35738*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 35741*/      OPC_Scope, 58, /*->35801*/ // 2 children in Scope
/* 35743*/        OPC_RecordChild0, // #1 = $wt
/* 35744*/        OPC_MoveChild1,
/* 35745*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35748*/        OPC_MoveChild0,
/* 35749*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35752*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35754*/        OPC_CheckType, MVT::i32,
/* 35756*/        OPC_MoveParent,
/* 35757*/        OPC_MoveChild1,
/* 35758*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35761*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35763*/        OPC_CheckType, MVT::i32,
/* 35765*/        OPC_MoveParent,
/* 35766*/        OPC_MoveChild2,
/* 35767*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35770*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35772*/        OPC_CheckType, MVT::i32,
/* 35774*/        OPC_MoveParent,
/* 35775*/        OPC_MoveChild3,
/* 35776*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35779*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35781*/        OPC_CheckType, MVT::i32,
/* 35783*/        OPC_MoveParent,
/* 35784*/        OPC_MoveParent,
/* 35785*/        OPC_CheckType, MVT::v4i32,
/* 35787*/        OPC_MoveParent,
/* 35788*/        OPC_MoveParent,
/* 35789*/        OPC_CheckType, MVT::v4i32,
/* 35791*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 35793*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (or:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$wt, (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>)))) - Complexity = 32
                  // Dst: (BSET_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 35801*/      /*Scope*/ 58, /*->35860*/
/* 35802*/        OPC_MoveChild0,
/* 35803*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35806*/        OPC_MoveChild0,
/* 35807*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35810*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35812*/        OPC_CheckType, MVT::i32,
/* 35814*/        OPC_MoveParent,
/* 35815*/        OPC_MoveChild1,
/* 35816*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35819*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35821*/        OPC_CheckType, MVT::i32,
/* 35823*/        OPC_MoveParent,
/* 35824*/        OPC_MoveChild2,
/* 35825*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35828*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35830*/        OPC_CheckType, MVT::i32,
/* 35832*/        OPC_MoveParent,
/* 35833*/        OPC_MoveChild3,
/* 35834*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35837*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35839*/        OPC_CheckType, MVT::i32,
/* 35841*/        OPC_MoveParent,
/* 35842*/        OPC_MoveParent,
/* 35843*/        OPC_RecordChild1, // #1 = $wt
/* 35844*/        OPC_CheckType, MVT::v4i32,
/* 35846*/        OPC_MoveParent,
/* 35847*/        OPC_MoveParent,
/* 35848*/        OPC_CheckType, MVT::v4i32,
/* 35850*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 35852*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (or:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>), v4i32:{ *:[v4i32] }:$wt))) - Complexity = 32
                  // Dst: (BSET_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 35860*/      0, /*End of Scope*/
/* 35861*/    /*Scope*/ 9|128,1/*137*/, /*->36000*/
/* 35863*/      OPC_MoveChild0,
/* 35864*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 35867*/      OPC_MoveChild0,
/* 35868*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35871*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 35873*/      OPC_MoveParent,
/* 35874*/      OPC_MoveChild1,
/* 35875*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 35878*/      OPC_Scope, 59, /*->35939*/ // 2 children in Scope
/* 35880*/        OPC_RecordChild0, // #0 = $wt
/* 35881*/        OPC_MoveChild1,
/* 35882*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35885*/        OPC_MoveChild0,
/* 35886*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35889*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35891*/        OPC_CheckType, MVT::i32,
/* 35893*/        OPC_MoveParent,
/* 35894*/        OPC_MoveChild1,
/* 35895*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35898*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35900*/        OPC_CheckType, MVT::i32,
/* 35902*/        OPC_MoveParent,
/* 35903*/        OPC_MoveChild2,
/* 35904*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35907*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35909*/        OPC_CheckType, MVT::i32,
/* 35911*/        OPC_MoveParent,
/* 35912*/        OPC_MoveChild3,
/* 35913*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35916*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35918*/        OPC_CheckType, MVT::i32,
/* 35920*/        OPC_MoveParent,
/* 35921*/        OPC_MoveParent,
/* 35922*/        OPC_CheckType, MVT::v4i32,
/* 35924*/        OPC_MoveParent,
/* 35925*/        OPC_MoveParent,
/* 35926*/        OPC_RecordChild1, // #1 = $ws
/* 35927*/        OPC_CheckType, MVT::v4i32,
/* 35929*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 35931*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 1, 0, 
                  // Src: (or:{ *:[v4i32] } (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$wt, (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>))), v4i32:{ *:[v4i32] }:$ws) - Complexity = 32
                  // Dst: (BSET_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 35939*/      /*Scope*/ 59, /*->35999*/
/* 35940*/        OPC_MoveChild0,
/* 35941*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35944*/        OPC_MoveChild0,
/* 35945*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35948*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35950*/        OPC_CheckType, MVT::i32,
/* 35952*/        OPC_MoveParent,
/* 35953*/        OPC_MoveChild1,
/* 35954*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35957*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35959*/        OPC_CheckType, MVT::i32,
/* 35961*/        OPC_MoveParent,
/* 35962*/        OPC_MoveChild2,
/* 35963*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35966*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35968*/        OPC_CheckType, MVT::i32,
/* 35970*/        OPC_MoveParent,
/* 35971*/        OPC_MoveChild3,
/* 35972*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35975*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 35977*/        OPC_CheckType, MVT::i32,
/* 35979*/        OPC_MoveParent,
/* 35980*/        OPC_MoveParent,
/* 35981*/        OPC_RecordChild1, // #0 = $wt
/* 35982*/        OPC_CheckType, MVT::v4i32,
/* 35984*/        OPC_MoveParent,
/* 35985*/        OPC_MoveParent,
/* 35986*/        OPC_RecordChild1, // #1 = $ws
/* 35987*/        OPC_CheckType, MVT::v4i32,
/* 35989*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 35991*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 1, 0, 
                  // Src: (or:{ *:[v4i32] } (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, (and:{ *:[v4i32] } (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>), v4i32:{ *:[v4i32] }:$wt)), v4i32:{ *:[v4i32] }:$ws) - Complexity = 32
                  // Dst: (BSET_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 35999*/      0, /*End of Scope*/
/* 36000*/    /*Scope*/ 89, /*->36090*/
/* 36001*/      OPC_RecordChild0, // #0 = $ws
/* 36002*/      OPC_MoveChild1,
/* 36003*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36006*/      OPC_MoveChild0,
/* 36007*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36010*/      OPC_MoveChild0,
/* 36011*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36014*/      OPC_CheckType, MVT::v4i32,
/* 36016*/      OPC_MoveParent,
/* 36017*/      OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 36019*/      OPC_MoveParent,
/* 36020*/      OPC_MoveChild1,
/* 36021*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 36024*/      OPC_Scope, 31, /*->36057*/ // 2 children in Scope
/* 36026*/        OPC_RecordChild0, // #1 = $wt
/* 36027*/        OPC_MoveChild1,
/* 36028*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36031*/        OPC_MoveChild0,
/* 36032*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36035*/        OPC_CheckType, MVT::v4i32,
/* 36037*/        OPC_MoveParent,
/* 36038*/        OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 36040*/        OPC_MoveParent,
/* 36041*/        OPC_CheckType, MVT::v2i64,
/* 36043*/        OPC_MoveParent,
/* 36044*/        OPC_MoveParent,
/* 36045*/        OPC_CheckType, MVT::v2i64,
/* 36047*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36049*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (or:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$wt, (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>))) - Complexity = 23
                  // Dst: (BSET_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 36057*/      /*Scope*/ 31, /*->36089*/
/* 36058*/        OPC_MoveChild0,
/* 36059*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36062*/        OPC_MoveChild0,
/* 36063*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36066*/        OPC_CheckType, MVT::v4i32,
/* 36068*/        OPC_MoveParent,
/* 36069*/        OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 36071*/        OPC_MoveParent,
/* 36072*/        OPC_RecordChild1, // #1 = $wt
/* 36073*/        OPC_CheckType, MVT::v2i64,
/* 36075*/        OPC_MoveParent,
/* 36076*/        OPC_MoveParent,
/* 36077*/        OPC_CheckType, MVT::v2i64,
/* 36079*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36081*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (or:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>, v2i64:{ *:[v2i64] }:$wt))) - Complexity = 23
                  // Dst: (BSET_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 36089*/      0, /*End of Scope*/
/* 36090*/    /*Scope*/ 90, /*->36181*/
/* 36091*/      OPC_MoveChild0,
/* 36092*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36095*/      OPC_MoveChild0,
/* 36096*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36099*/      OPC_MoveChild0,
/* 36100*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36103*/      OPC_CheckType, MVT::v4i32,
/* 36105*/      OPC_MoveParent,
/* 36106*/      OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 36108*/      OPC_MoveParent,
/* 36109*/      OPC_MoveChild1,
/* 36110*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 36113*/      OPC_Scope, 32, /*->36147*/ // 2 children in Scope
/* 36115*/        OPC_RecordChild0, // #0 = $wt
/* 36116*/        OPC_MoveChild1,
/* 36117*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36120*/        OPC_MoveChild0,
/* 36121*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36124*/        OPC_CheckType, MVT::v4i32,
/* 36126*/        OPC_MoveParent,
/* 36127*/        OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 36129*/        OPC_MoveParent,
/* 36130*/        OPC_CheckType, MVT::v2i64,
/* 36132*/        OPC_MoveParent,
/* 36133*/        OPC_MoveParent,
/* 36134*/        OPC_RecordChild1, // #1 = $ws
/* 36135*/        OPC_CheckType, MVT::v2i64,
/* 36137*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36139*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 1, 0, 
                  // Src: (or:{ *:[v2i64] } (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$wt, (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>)), v2i64:{ *:[v2i64] }:$ws) - Complexity = 23
                  // Dst: (BSET_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 36147*/      /*Scope*/ 32, /*->36180*/
/* 36148*/        OPC_MoveChild0,
/* 36149*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36152*/        OPC_MoveChild0,
/* 36153*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36156*/        OPC_CheckType, MVT::v4i32,
/* 36158*/        OPC_MoveParent,
/* 36159*/        OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 36161*/        OPC_MoveParent,
/* 36162*/        OPC_RecordChild1, // #0 = $wt
/* 36163*/        OPC_CheckType, MVT::v2i64,
/* 36165*/        OPC_MoveParent,
/* 36166*/        OPC_MoveParent,
/* 36167*/        OPC_RecordChild1, // #1 = $ws
/* 36168*/        OPC_CheckType, MVT::v2i64,
/* 36170*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36172*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 1, 0, 
                  // Src: (or:{ *:[v2i64] } (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, (and:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>, v2i64:{ *:[v2i64] }:$wt)), v2i64:{ *:[v2i64] }:$ws) - Complexity = 23
                  // Dst: (BSET_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 36180*/      0, /*End of Scope*/
/* 36181*/    /*Scope*/ 35, /*->36217*/
/* 36182*/      OPC_RecordChild0, // #0 = $ws
/* 36183*/      OPC_MoveChild1,
/* 36184*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36187*/      OPC_MoveChild0,
/* 36188*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36191*/      OPC_MoveChild0,
/* 36192*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36195*/      OPC_CheckType, MVT::v4i32,
/* 36197*/      OPC_MoveParent,
/* 36198*/      OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 36200*/      OPC_MoveParent,
/* 36201*/      OPC_RecordChild1, // #1 = $wt
/* 36202*/      OPC_CheckChild1Type, MVT::v2i64,
/* 36204*/      OPC_MoveParent,
/* 36205*/      OPC_CheckType, MVT::v2i64,
/* 36207*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 36209*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (or:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, MSA128DOpnd:{ *:[v2i64] }:$wt)) - Complexity = 13
                // Dst: (BSET_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 36217*/    /*Scope*/ 35, /*->36253*/
/* 36218*/      OPC_MoveChild0,
/* 36219*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36222*/      OPC_MoveChild0,
/* 36223*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36226*/      OPC_MoveChild0,
/* 36227*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36230*/      OPC_CheckType, MVT::v4i32,
/* 36232*/      OPC_MoveParent,
/* 36233*/      OPC_CheckPredicate, 37, // Predicate_vsplati64_imm_eq_1
/* 36235*/      OPC_MoveParent,
/* 36236*/      OPC_RecordChild1, // #0 = $wt
/* 36237*/      OPC_CheckChild1Type, MVT::v2i64,
/* 36239*/      OPC_MoveParent,
/* 36240*/      OPC_RecordChild1, // #1 = $ws
/* 36241*/      OPC_CheckType, MVT::v2i64,
/* 36243*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 36245*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 1, 0, 
                // Src: (or:{ *:[v2i64] } (shl:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_1>>, MSA128DOpnd:{ *:[v2i64] }:$wt), MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 13
                // Dst: (BSET_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 36253*/    /*Scope*/ 63, /*->36317*/
/* 36254*/      OPC_RecordChild0, // #0 = $ws
/* 36255*/      OPC_MoveChild1,
/* 36256*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36259*/      OPC_MoveChild0,
/* 36260*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36263*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 36265*/      OPC_MoveParent,
/* 36266*/      OPC_RecordChild1, // #1 = $wt
/* 36267*/      OPC_Scope, 15, /*->36284*/ // 3 children in Scope
/* 36269*/        OPC_CheckChild1Type, MVT::v16i8,
/* 36271*/        OPC_MoveParent,
/* 36272*/        OPC_CheckType, MVT::v16i8,
/* 36274*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 36276*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (or:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128BOpnd:{ *:[v16i8] }:$wt)) - Complexity = 10
                  // Dst: (BSET_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 36284*/      /*Scope*/ 15, /*->36300*/
/* 36285*/        OPC_CheckChild1Type, MVT::v8i16,
/* 36287*/        OPC_MoveParent,
/* 36288*/        OPC_CheckType, MVT::v8i16,
/* 36290*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 36292*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (or:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128HOpnd:{ *:[v8i16] }:$wt)) - Complexity = 10
                  // Dst: (BSET_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 36300*/      /*Scope*/ 15, /*->36316*/
/* 36301*/        OPC_CheckChild1Type, MVT::v4i32,
/* 36303*/        OPC_MoveParent,
/* 36304*/        OPC_CheckType, MVT::v4i32,
/* 36306*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 36308*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (or:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128WOpnd:{ *:[v4i32] }:$wt)) - Complexity = 10
                  // Dst: (BSET_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 36316*/      0, /*End of Scope*/
/* 36317*/    /*Scope*/ 65, /*->36383*/
/* 36318*/      OPC_MoveChild0,
/* 36319*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36322*/      OPC_MoveChild0,
/* 36323*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36326*/      OPC_CheckPredicate, 33, // Predicate_vsplat_imm_eq_1
/* 36328*/      OPC_MoveParent,
/* 36329*/      OPC_RecordChild1, // #0 = $wt
/* 36330*/      OPC_Scope, 16, /*->36348*/ // 3 children in Scope
/* 36332*/        OPC_CheckChild1Type, MVT::v16i8,
/* 36334*/        OPC_MoveParent,
/* 36335*/        OPC_RecordChild1, // #1 = $ws
/* 36336*/        OPC_CheckType, MVT::v16i8,
/* 36338*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 36340*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 1, 0, 
                  // Src: (or:{ *:[v16i8] } (shl:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128BOpnd:{ *:[v16i8] }:$wt), MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 10
                  // Dst: (BSET_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 36348*/      /*Scope*/ 16, /*->36365*/
/* 36349*/        OPC_CheckChild1Type, MVT::v8i16,
/* 36351*/        OPC_MoveParent,
/* 36352*/        OPC_RecordChild1, // #1 = $ws
/* 36353*/        OPC_CheckType, MVT::v8i16,
/* 36355*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 36357*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 1, 0, 
                  // Src: (or:{ *:[v8i16] } (shl:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128HOpnd:{ *:[v8i16] }:$wt), MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 10
                  // Dst: (BSET_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 36365*/      /*Scope*/ 16, /*->36382*/
/* 36366*/        OPC_CheckChild1Type, MVT::v4i32,
/* 36368*/        OPC_MoveParent,
/* 36369*/        OPC_RecordChild1, // #1 = $ws
/* 36370*/        OPC_CheckType, MVT::v4i32,
/* 36372*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 36374*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSET_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 1, 0, 
                  // Src: (or:{ *:[v4i32] } (shl:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_vsplat_imm_eq_1>>, MSA128WOpnd:{ *:[v4i32] }:$wt), MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 10
                  // Dst: (BSET_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 36382*/      0, /*End of Scope*/
/* 36383*/    /*Scope*/ 56|128,1/*184*/, /*->36569*/
/* 36385*/      OPC_RecordChild0, // #0 = $ws
/* 36386*/      OPC_RecordChild1, // #1 = $m
/* 36387*/      OPC_SwitchType /*4 cases */, 61, MVT::v16i8,// ->36451
/* 36390*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 36392*/        OPC_Scope, 11, /*->36405*/ // 5 children in Scope
/* 36394*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 36397*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BSETI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 2, 
                    // Src: (or:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplat_uimm_pow2:{ *:[v16i8] }:$m) - Complexity = 9
                    // Dst: (BSETI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplat_uimm_pow2:{ *:[v16i8] }:$m)
/* 36405*/        /*Scope*/ 11, /*->36417*/
/* 36406*/          OPC_CheckComplexPat, /*CP*/14, /*#*/1, // selectVSplatUimm8:$u8 #2
/* 36409*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ORI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 2, 
                    // Src: (or:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm8:{ *:[v16i8] }:$u8) - Complexity = 9
                    // Dst: (ORI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm8:{ *:[v16i8] }:$u8)
/* 36417*/        /*Scope*/ 11, /*->36429*/
/* 36418*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 36421*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BSETI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 1, 2, 
                    // Src: (or:{ *:[v16i8] } vsplat_uimm_pow2:{ *:[v16i8] }:$m, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 9
                    // Dst: (BSETI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplat_uimm_pow2:{ *:[v16i8] }:$m)
/* 36429*/        /*Scope*/ 11, /*->36441*/
/* 36430*/          OPC_CheckComplexPat, /*CP*/14, /*#*/0, // selectVSplatUimm8:$u8 #2
/* 36433*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ORI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 1, 2, 
                    // Src: (or:{ *:[v16i8] } vsplati8_uimm8:{ *:[v16i8] }:$u8, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 9
                    // Dst: (ORI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm8:{ *:[v16i8] }:$u8)
/* 36441*/        /*Scope*/ 8, /*->36450*/
/* 36442*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::OR_V), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (or:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                    // Dst: (OR_V:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 36450*/        0, /*End of Scope*/
/* 36451*/      /*SwitchType*/ 37, MVT::v8i16,// ->36490
/* 36453*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 36455*/        OPC_Scope, 11, /*->36468*/ // 3 children in Scope
/* 36457*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 36460*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BSETI_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 2, 
                    // Src: (or:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplat_uimm_pow2:{ *:[v8i16] }:$m) - Complexity = 9
                    // Dst: (BSETI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplat_uimm_pow2:{ *:[v8i16] }:$m)
/* 36468*/        /*Scope*/ 11, /*->36480*/
/* 36469*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 36472*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BSETI_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 1, 2, 
                    // Src: (or:{ *:[v8i16] } vsplat_uimm_pow2:{ *:[v8i16] }:$m, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 9
                    // Dst: (BSETI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplat_uimm_pow2:{ *:[v8i16] }:$m)
/* 36480*/        /*Scope*/ 8, /*->36489*/
/* 36481*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::OR_V_H_PSEUDO), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (or:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                    // Dst: (OR_V_H_PSEUDO:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 36489*/        0, /*End of Scope*/
/* 36490*/      /*SwitchType*/ 37, MVT::v4i32,// ->36529
/* 36492*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 36494*/        OPC_Scope, 11, /*->36507*/ // 3 children in Scope
/* 36496*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 36499*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BSETI_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 2, 
                    // Src: (or:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplat_uimm_pow2:{ *:[v4i32] }:$m) - Complexity = 9
                    // Dst: (BSETI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplat_uimm_pow2:{ *:[v4i32] }:$m)
/* 36507*/        /*Scope*/ 11, /*->36519*/
/* 36508*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 36511*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BSETI_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 1, 2, 
                    // Src: (or:{ *:[v4i32] } vsplat_uimm_pow2:{ *:[v4i32] }:$m, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 9
                    // Dst: (BSETI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplat_uimm_pow2:{ *:[v4i32] }:$m)
/* 36519*/        /*Scope*/ 8, /*->36528*/
/* 36520*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::OR_V_W_PSEUDO), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (or:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                    // Dst: (OR_V_W_PSEUDO:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 36528*/        0, /*End of Scope*/
/* 36529*/      /*SwitchType*/ 37, MVT::v2i64,// ->36568
/* 36531*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 36533*/        OPC_Scope, 11, /*->36546*/ // 3 children in Scope
/* 36535*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 36538*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BSETI_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 2, 
                    // Src: (or:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplat_uimm_pow2:{ *:[v2i64] }:$m) - Complexity = 9
                    // Dst: (BSETI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplat_uimm_pow2:{ *:[v2i64] }:$m)
/* 36546*/        /*Scope*/ 11, /*->36558*/
/* 36547*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 36550*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BSETI_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 1, 2, 
                    // Src: (or:{ *:[v2i64] } vsplat_uimm_pow2:{ *:[v2i64] }:$m, MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 9
                    // Dst: (BSETI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplat_uimm_pow2:{ *:[v2i64] }:$m)
/* 36558*/        /*Scope*/ 8, /*->36567*/
/* 36559*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::OR_V_D_PSEUDO), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (or:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                    // Dst: (OR_V_D_PSEUDO:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 36567*/        0, /*End of Scope*/
/* 36568*/      0, // EndSwitchType
/* 36569*/    0, /*End of Scope*/
/* 36570*/  /*SwitchOpcode*/ 10|128,8/*1034*/, TARGET_VAL(ISD::SHL),// ->37608
/* 36574*/    OPC_RecordChild0, // #0 = $rt
/* 36575*/    OPC_Scope, 99, /*->36676*/ // 5 children in Scope
/* 36577*/      OPC_RecordChild1, // #1 = $shamt
/* 36578*/      OPC_MoveChild1,
/* 36579*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36582*/      OPC_CheckType, MVT::i32,
/* 36584*/      OPC_Scope, 17, /*->36603*/ // 5 children in Scope
/* 36586*/        OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 36588*/        OPC_MoveParent,
/* 36589*/        OPC_CheckType, MVT::i32,
/* 36591*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 36593*/        OPC_EmitConvertToTarget, 1,
/* 36595*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (shl:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shamt) - Complexity = 7
                  // Dst: (SLL:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] }):$shamt)
/* 36603*/      /*Scope*/ 17, /*->36621*/
/* 36604*/        OPC_CheckPredicate, 30, // Predicate_immZExt6
/* 36606*/        OPC_MoveParent,
/* 36607*/        OPC_CheckType, MVT::i64,
/* 36609*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 36611*/        OPC_EmitConvertToTarget, 1,
/* 36613*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DSLL), 0,
                      MVT::i64, 2/*#Ops*/, 0, 2, 
                  // Src: (shl:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt6>>:$shamt) - Complexity = 7
                  // Dst: (DSLL:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, (imm:{ *:[i32] }):$shamt)
/* 36621*/      /*Scope*/ 17, /*->36639*/
/* 36622*/        OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 36624*/        OPC_MoveParent,
/* 36625*/        OPC_CheckType, MVT::i32,
/* 36627*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 36629*/        OPC_EmitConvertToTarget, 1,
/* 36631*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SllX16), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (shl:{ *:[i32] } CPU16Regs:{ *:[i32] }:$in, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm) - Complexity = 7
                  // Dst: (SllX16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$in, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm)
/* 36639*/      /*Scope*/ 17, /*->36657*/
/* 36640*/        OPC_CheckPredicate, 49, // Predicate_immZExt2Shift
/* 36642*/        OPC_MoveParent,
/* 36643*/        OPC_CheckType, MVT::i32,
/* 36645*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 36647*/        OPC_EmitConvertToTarget, 1,
/* 36649*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL16_MM), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (shl:{ *:[i32] } GPRMM16:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt2Shift>>:$imm) - Complexity = 7
                  // Dst: (SLL16_MM:{ *:[i32] } GPRMM16:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt2Shift>>:$imm)
/* 36657*/      /*Scope*/ 17, /*->36675*/
/* 36658*/        OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 36660*/        OPC_MoveParent,
/* 36661*/        OPC_CheckType, MVT::i32,
/* 36663*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 36665*/        OPC_EmitConvertToTarget, 1,
/* 36667*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL_MM), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (shl:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm) - Complexity = 7
                  // Dst: (SLL_MM:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm)
/* 36675*/      0, /*End of Scope*/
/* 36676*/    /*Scope*/ 31, /*->36708*/
/* 36677*/      OPC_MoveChild1,
/* 36678*/      OPC_CheckOpcode, TARGET_VAL(ISD::TRUNCATE),
/* 36681*/      OPC_RecordChild0, // #1 = $rs
/* 36682*/      OPC_CheckType, MVT::i32,
/* 36684*/      OPC_MoveParent,
/* 36685*/      OPC_CheckType, MVT::i64,
/* 36687*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 36689*/      OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 36692*/      OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 36700*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DSLLV), 0,
                    MVT::i64, 2/*#Ops*/, 0, 3, 
                // Src: (shl:{ *:[i64] } GPR64:{ *:[i64] }:$rt, (trunc:{ *:[i32] } GPR64:{ *:[i64] }:$rs)) - Complexity = 6
                // Dst: (DSLLV:{ *:[i64] } GPR64:{ *:[i64] }:$rt, (EXTRACT_SUBREG:{ *:[i32] } GPR64:{ *:[i64] }:$rs, sub_32:{ *:[i32] }))
/* 36708*/    /*Scope*/ 54, /*->36763*/
/* 36709*/      OPC_RecordChild1, // #1 = $rs
/* 36710*/      OPC_CheckChild1Type, MVT::i32,
/* 36712*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->36750
/* 36715*/        OPC_Scope, 10, /*->36727*/ // 3 children in Scope
/* 36717*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 36719*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLLV), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (shl:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                    // Dst: (SLLV:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 36727*/        /*Scope*/ 10, /*->36738*/
/* 36728*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 36730*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SllvRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (shl:{ *:[i32] } CPU16Regs:{ *:[i32] }:$r, CPU16Regs:{ *:[i32] }:$ra) - Complexity = 3
                    // Dst: (SllvRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$r, CPU16Regs:{ *:[i32] }:$ra)
/* 36738*/        /*Scope*/ 10, /*->36749*/
/* 36739*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 36741*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLLV_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (shl:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs) - Complexity = 3
                    // Dst: (SLLV_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs)
/* 36749*/        0, /*End of Scope*/
/* 36750*/      /*SwitchType*/ 10, MVT::i64,// ->36762
/* 36752*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 36754*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DSLLV), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1, 
                  // Src: (shl:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (DSLLV:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 36762*/      0, // EndSwitchType
/* 36763*/    /*Scope*/ 82|128,5/*722*/, /*->37487*/
/* 36765*/      OPC_MoveChild1,
/* 36766*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 36769*/      OPC_Scope, 45|128,1/*173*/, /*->36945*/ // 8 children in Scope
/* 36772*/        OPC_RecordChild0, // #1 = $wt
/* 36773*/        OPC_MoveChild1,
/* 36774*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36777*/        OPC_MoveChild0,
/* 36778*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36781*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36783*/        OPC_CheckType, MVT::i32,
/* 36785*/        OPC_MoveParent,
/* 36786*/        OPC_MoveChild1,
/* 36787*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36790*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36792*/        OPC_CheckType, MVT::i32,
/* 36794*/        OPC_MoveParent,
/* 36795*/        OPC_MoveChild2,
/* 36796*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36799*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36801*/        OPC_CheckType, MVT::i32,
/* 36803*/        OPC_MoveParent,
/* 36804*/        OPC_MoveChild3,
/* 36805*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36808*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36810*/        OPC_CheckType, MVT::i32,
/* 36812*/        OPC_MoveParent,
/* 36813*/        OPC_MoveChild4,
/* 36814*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36817*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36819*/        OPC_CheckType, MVT::i32,
/* 36821*/        OPC_MoveParent,
/* 36822*/        OPC_MoveChild5,
/* 36823*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36826*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36828*/        OPC_CheckType, MVT::i32,
/* 36830*/        OPC_MoveParent,
/* 36831*/        OPC_MoveChild6,
/* 36832*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36835*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36837*/        OPC_CheckType, MVT::i32,
/* 36839*/        OPC_MoveParent,
/* 36840*/        OPC_MoveChild7,
/* 36841*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36844*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36846*/        OPC_CheckType, MVT::i32,
/* 36848*/        OPC_MoveParent,
/* 36849*/        OPC_MoveChild, 8,
/* 36851*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36854*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36856*/        OPC_CheckType, MVT::i32,
/* 36858*/        OPC_MoveParent,
/* 36859*/        OPC_MoveChild, 9,
/* 36861*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36864*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36866*/        OPC_CheckType, MVT::i32,
/* 36868*/        OPC_MoveParent,
/* 36869*/        OPC_MoveChild, 10,
/* 36871*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36874*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36876*/        OPC_CheckType, MVT::i32,
/* 36878*/        OPC_MoveParent,
/* 36879*/        OPC_MoveChild, 11,
/* 36881*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36884*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36886*/        OPC_CheckType, MVT::i32,
/* 36888*/        OPC_MoveParent,
/* 36889*/        OPC_MoveChild, 12,
/* 36891*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36894*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36896*/        OPC_CheckType, MVT::i32,
/* 36898*/        OPC_MoveParent,
/* 36899*/        OPC_MoveChild, 13,
/* 36901*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36904*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36906*/        OPC_CheckType, MVT::i32,
/* 36908*/        OPC_MoveParent,
/* 36909*/        OPC_MoveChild, 14,
/* 36911*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36914*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36916*/        OPC_CheckType, MVT::i32,
/* 36918*/        OPC_MoveParent,
/* 36919*/        OPC_MoveChild, 15,
/* 36921*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36924*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36926*/        OPC_CheckType, MVT::i32,
/* 36928*/        OPC_MoveParent,
/* 36929*/        OPC_MoveParent,
/* 36930*/        OPC_CheckType, MVT::v16i8,
/* 36932*/        OPC_MoveParent,
/* 36933*/        OPC_CheckType, MVT::v16i8,
/* 36935*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36937*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (shl:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$wt, (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>))) - Complexity = 73
                  // Dst: (SLL_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 36945*/      /*Scope*/ 45|128,1/*173*/, /*->37120*/
/* 36947*/        OPC_MoveChild0,
/* 36948*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36951*/        OPC_MoveChild0,
/* 36952*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36955*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36957*/        OPC_CheckType, MVT::i32,
/* 36959*/        OPC_MoveParent,
/* 36960*/        OPC_MoveChild1,
/* 36961*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36964*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36966*/        OPC_CheckType, MVT::i32,
/* 36968*/        OPC_MoveParent,
/* 36969*/        OPC_MoveChild2,
/* 36970*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36973*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36975*/        OPC_CheckType, MVT::i32,
/* 36977*/        OPC_MoveParent,
/* 36978*/        OPC_MoveChild3,
/* 36979*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36982*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36984*/        OPC_CheckType, MVT::i32,
/* 36986*/        OPC_MoveParent,
/* 36987*/        OPC_MoveChild4,
/* 36988*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36991*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 36993*/        OPC_CheckType, MVT::i32,
/* 36995*/        OPC_MoveParent,
/* 36996*/        OPC_MoveChild5,
/* 36997*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37000*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37002*/        OPC_CheckType, MVT::i32,
/* 37004*/        OPC_MoveParent,
/* 37005*/        OPC_MoveChild6,
/* 37006*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37009*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37011*/        OPC_CheckType, MVT::i32,
/* 37013*/        OPC_MoveParent,
/* 37014*/        OPC_MoveChild7,
/* 37015*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37018*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37020*/        OPC_CheckType, MVT::i32,
/* 37022*/        OPC_MoveParent,
/* 37023*/        OPC_MoveChild, 8,
/* 37025*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37028*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37030*/        OPC_CheckType, MVT::i32,
/* 37032*/        OPC_MoveParent,
/* 37033*/        OPC_MoveChild, 9,
/* 37035*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37038*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37040*/        OPC_CheckType, MVT::i32,
/* 37042*/        OPC_MoveParent,
/* 37043*/        OPC_MoveChild, 10,
/* 37045*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37048*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37050*/        OPC_CheckType, MVT::i32,
/* 37052*/        OPC_MoveParent,
/* 37053*/        OPC_MoveChild, 11,
/* 37055*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37058*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37060*/        OPC_CheckType, MVT::i32,
/* 37062*/        OPC_MoveParent,
/* 37063*/        OPC_MoveChild, 12,
/* 37065*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37068*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37070*/        OPC_CheckType, MVT::i32,
/* 37072*/        OPC_MoveParent,
/* 37073*/        OPC_MoveChild, 13,
/* 37075*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37078*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37080*/        OPC_CheckType, MVT::i32,
/* 37082*/        OPC_MoveParent,
/* 37083*/        OPC_MoveChild, 14,
/* 37085*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37088*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37090*/        OPC_CheckType, MVT::i32,
/* 37092*/        OPC_MoveParent,
/* 37093*/        OPC_MoveChild, 15,
/* 37095*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37098*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37100*/        OPC_CheckType, MVT::i32,
/* 37102*/        OPC_MoveParent,
/* 37103*/        OPC_MoveParent,
/* 37104*/        OPC_RecordChild1, // #1 = $wt
/* 37105*/        OPC_CheckType, MVT::v16i8,
/* 37107*/        OPC_MoveParent,
/* 37108*/        OPC_CheckType, MVT::v16i8,
/* 37110*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 37112*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (shl:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (and:{ *:[v16i8] } (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>), v16i8:{ *:[v16i8] }:$wt)) - Complexity = 73
                  // Dst: (SLL_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 37120*/      /*Scope*/ 93, /*->37214*/
/* 37121*/        OPC_RecordChild0, // #1 = $wt
/* 37122*/        OPC_MoveChild1,
/* 37123*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37126*/        OPC_MoveChild0,
/* 37127*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37130*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37132*/        OPC_CheckType, MVT::i32,
/* 37134*/        OPC_MoveParent,
/* 37135*/        OPC_MoveChild1,
/* 37136*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37139*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37141*/        OPC_CheckType, MVT::i32,
/* 37143*/        OPC_MoveParent,
/* 37144*/        OPC_MoveChild2,
/* 37145*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37148*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37150*/        OPC_CheckType, MVT::i32,
/* 37152*/        OPC_MoveParent,
/* 37153*/        OPC_MoveChild3,
/* 37154*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37157*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37159*/        OPC_CheckType, MVT::i32,
/* 37161*/        OPC_MoveParent,
/* 37162*/        OPC_MoveChild4,
/* 37163*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37166*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37168*/        OPC_CheckType, MVT::i32,
/* 37170*/        OPC_MoveParent,
/* 37171*/        OPC_MoveChild5,
/* 37172*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37175*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37177*/        OPC_CheckType, MVT::i32,
/* 37179*/        OPC_MoveParent,
/* 37180*/        OPC_MoveChild6,
/* 37181*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37184*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37186*/        OPC_CheckType, MVT::i32,
/* 37188*/        OPC_MoveParent,
/* 37189*/        OPC_MoveChild7,
/* 37190*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37193*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37195*/        OPC_CheckType, MVT::i32,
/* 37197*/        OPC_MoveParent,
/* 37198*/        OPC_MoveParent,
/* 37199*/        OPC_CheckType, MVT::v8i16,
/* 37201*/        OPC_MoveParent,
/* 37202*/        OPC_CheckType, MVT::v8i16,
/* 37204*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 37206*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (shl:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$wt, (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>))) - Complexity = 41
                  // Dst: (SLL_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 37214*/      /*Scope*/ 93, /*->37308*/
/* 37215*/        OPC_MoveChild0,
/* 37216*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37219*/        OPC_MoveChild0,
/* 37220*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37223*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37225*/        OPC_CheckType, MVT::i32,
/* 37227*/        OPC_MoveParent,
/* 37228*/        OPC_MoveChild1,
/* 37229*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37232*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37234*/        OPC_CheckType, MVT::i32,
/* 37236*/        OPC_MoveParent,
/* 37237*/        OPC_MoveChild2,
/* 37238*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37241*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37243*/        OPC_CheckType, MVT::i32,
/* 37245*/        OPC_MoveParent,
/* 37246*/        OPC_MoveChild3,
/* 37247*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37250*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37252*/        OPC_CheckType, MVT::i32,
/* 37254*/        OPC_MoveParent,
/* 37255*/        OPC_MoveChild4,
/* 37256*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37259*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37261*/        OPC_CheckType, MVT::i32,
/* 37263*/        OPC_MoveParent,
/* 37264*/        OPC_MoveChild5,
/* 37265*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37268*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37270*/        OPC_CheckType, MVT::i32,
/* 37272*/        OPC_MoveParent,
/* 37273*/        OPC_MoveChild6,
/* 37274*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37277*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37279*/        OPC_CheckType, MVT::i32,
/* 37281*/        OPC_MoveParent,
/* 37282*/        OPC_MoveChild7,
/* 37283*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37286*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 37288*/        OPC_CheckType, MVT::i32,
/* 37290*/        OPC_MoveParent,
/* 37291*/        OPC_MoveParent,
/* 37292*/        OPC_RecordChild1, // #1 = $wt
/* 37293*/        OPC_CheckType, MVT::v8i16,
/* 37295*/        OPC_MoveParent,
/* 37296*/        OPC_CheckType, MVT::v8i16,
/* 37298*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 37300*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (shl:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (and:{ *:[v8i16] } (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>), v8i16:{ *:[v8i16] }:$wt)) - Complexity = 41
                  // Dst: (SLL_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 37308*/      /*Scope*/ 57, /*->37366*/
/* 37309*/        OPC_RecordChild0, // #1 = $wt
/* 37310*/        OPC_MoveChild1,
/* 37311*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37314*/        OPC_MoveChild0,
/* 37315*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37318*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 37320*/        OPC_CheckType, MVT::i32,
/* 37322*/        OPC_MoveParent,
/* 37323*/        OPC_MoveChild1,
/* 37324*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37327*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 37329*/        OPC_CheckType, MVT::i32,
/* 37331*/        OPC_MoveParent,
/* 37332*/        OPC_MoveChild2,
/* 37333*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37336*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 37338*/        OPC_CheckType, MVT::i32,
/* 37340*/        OPC_MoveParent,
/* 37341*/        OPC_MoveChild3,
/* 37342*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37345*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 37347*/        OPC_CheckType, MVT::i32,
/* 37349*/        OPC_MoveParent,
/* 37350*/        OPC_MoveParent,
/* 37351*/        OPC_CheckType, MVT::v4i32,
/* 37353*/        OPC_MoveParent,
/* 37354*/        OPC_CheckType, MVT::v4i32,
/* 37356*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 37358*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (shl:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$wt, (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>))) - Complexity = 25
                  // Dst: (SLL_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 37366*/      /*Scope*/ 57, /*->37424*/
/* 37367*/        OPC_MoveChild0,
/* 37368*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37371*/        OPC_MoveChild0,
/* 37372*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37375*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 37377*/        OPC_CheckType, MVT::i32,
/* 37379*/        OPC_MoveParent,
/* 37380*/        OPC_MoveChild1,
/* 37381*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37384*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 37386*/        OPC_CheckType, MVT::i32,
/* 37388*/        OPC_MoveParent,
/* 37389*/        OPC_MoveChild2,
/* 37390*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37393*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 37395*/        OPC_CheckType, MVT::i32,
/* 37397*/        OPC_MoveParent,
/* 37398*/        OPC_MoveChild3,
/* 37399*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37402*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 37404*/        OPC_CheckType, MVT::i32,
/* 37406*/        OPC_MoveParent,
/* 37407*/        OPC_MoveParent,
/* 37408*/        OPC_RecordChild1, // #1 = $wt
/* 37409*/        OPC_CheckType, MVT::v4i32,
/* 37411*/        OPC_MoveParent,
/* 37412*/        OPC_CheckType, MVT::v4i32,
/* 37414*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 37416*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (shl:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (and:{ *:[v4i32] } (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>), v4i32:{ *:[v4i32] }:$wt)) - Complexity = 25
                  // Dst: (SLL_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 37424*/      /*Scope*/ 30, /*->37455*/
/* 37425*/        OPC_RecordChild0, // #1 = $wt
/* 37426*/        OPC_MoveChild1,
/* 37427*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 37430*/        OPC_MoveChild0,
/* 37431*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37434*/        OPC_CheckType, MVT::v4i32,
/* 37436*/        OPC_MoveParent,
/* 37437*/        OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 37439*/        OPC_MoveParent,
/* 37440*/        OPC_CheckType, MVT::v2i64,
/* 37442*/        OPC_MoveParent,
/* 37443*/        OPC_CheckType, MVT::v2i64,
/* 37445*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 37447*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (shl:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$wt, (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>)) - Complexity = 13
                  // Dst: (SLL_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 37455*/      /*Scope*/ 30, /*->37486*/
/* 37456*/        OPC_MoveChild0,
/* 37457*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 37460*/        OPC_MoveChild0,
/* 37461*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37464*/        OPC_CheckType, MVT::v4i32,
/* 37466*/        OPC_MoveParent,
/* 37467*/        OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 37469*/        OPC_MoveParent,
/* 37470*/        OPC_RecordChild1, // #1 = $wt
/* 37471*/        OPC_CheckType, MVT::v2i64,
/* 37473*/        OPC_MoveParent,
/* 37474*/        OPC_CheckType, MVT::v2i64,
/* 37476*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 37478*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (shl:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (and:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>, v2i64:{ *:[v2i64] }:$wt)) - Complexity = 13
                  // Dst: (SLL_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 37486*/      0, /*End of Scope*/
/* 37487*/    /*Scope*/ 119, /*->37607*/
/* 37488*/      OPC_RecordChild1, // #1 = $m
/* 37489*/      OPC_SwitchType /*4 cases */, 27, MVT::v16i8,// ->37519
/* 37492*/        OPC_CheckChild1Type, MVT::v16i8,
/* 37494*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37496*/        OPC_Scope, 11, /*->37509*/ // 2 children in Scope
/* 37498*/          OPC_CheckComplexPat, /*CP*/24, /*#*/1, // selectVSplatUimm3:$m #2
/* 37501*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLLI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 2, 
                    // Src: (shl:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm3:{ *:[v16i8] }:$m) - Complexity = 9
                    // Dst: (SLLI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm3:{ *:[v16i8] }:$m)
/* 37509*/        /*Scope*/ 8, /*->37518*/
/* 37510*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (shl:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                    // Dst: (SLL_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 37518*/        0, /*End of Scope*/
/* 37519*/      /*SwitchType*/ 27, MVT::v8i16,// ->37548
/* 37521*/        OPC_CheckChild1Type, MVT::v8i16,
/* 37523*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37525*/        OPC_Scope, 11, /*->37538*/ // 2 children in Scope
/* 37527*/          OPC_CheckComplexPat, /*CP*/25, /*#*/1, // selectVSplatUimm4:$m #2
/* 37530*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLLI_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 2, 
                    // Src: (shl:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm4:{ *:[v8i16] }:$m) - Complexity = 9
                    // Dst: (SLLI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm4:{ *:[v8i16] }:$m)
/* 37538*/        /*Scope*/ 8, /*->37547*/
/* 37539*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (shl:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                    // Dst: (SLL_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 37547*/        0, /*End of Scope*/
/* 37548*/      /*SwitchType*/ 27, MVT::v4i32,// ->37577
/* 37550*/        OPC_CheckChild1Type, MVT::v4i32,
/* 37552*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37554*/        OPC_Scope, 11, /*->37567*/ // 2 children in Scope
/* 37556*/          OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$m #2
/* 37559*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLLI_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 2, 
                    // Src: (shl:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$m) - Complexity = 9
                    // Dst: (SLLI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$m)
/* 37567*/        /*Scope*/ 8, /*->37576*/
/* 37568*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (shl:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                    // Dst: (SLL_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 37576*/        0, /*End of Scope*/
/* 37577*/      /*SwitchType*/ 27, MVT::v2i64,// ->37606
/* 37579*/        OPC_CheckChild1Type, MVT::v2i64,
/* 37581*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37583*/        OPC_Scope, 11, /*->37596*/ // 2 children in Scope
/* 37585*/          OPC_CheckComplexPat, /*CP*/26, /*#*/1, // selectVSplatUimm6:$m #2
/* 37588*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLLI_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 2, 
                    // Src: (shl:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm6:{ *:[v2i64] }:$m) - Complexity = 9
                    // Dst: (SLLI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm6:{ *:[v2i64] }:$m)
/* 37596*/        /*Scope*/ 8, /*->37605*/
/* 37597*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (shl:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                    // Dst: (SLL_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 37605*/        0, /*End of Scope*/
/* 37606*/      0, // EndSwitchType
/* 37607*/    0, /*End of Scope*/
/* 37608*/  /*SwitchOpcode*/ 10|128,8/*1034*/, TARGET_VAL(ISD::SRL),// ->38646
/* 37612*/    OPC_RecordChild0, // #0 = $rt
/* 37613*/    OPC_Scope, 99, /*->37714*/ // 5 children in Scope
/* 37615*/      OPC_RecordChild1, // #1 = $shamt
/* 37616*/      OPC_MoveChild1,
/* 37617*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37620*/      OPC_CheckType, MVT::i32,
/* 37622*/      OPC_Scope, 17, /*->37641*/ // 5 children in Scope
/* 37624*/        OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 37626*/        OPC_MoveParent,
/* 37627*/        OPC_CheckType, MVT::i32,
/* 37629*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 37631*/        OPC_EmitConvertToTarget, 1,
/* 37633*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (srl:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shamt) - Complexity = 7
                  // Dst: (SRL:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] }):$shamt)
/* 37641*/      /*Scope*/ 17, /*->37659*/
/* 37642*/        OPC_CheckPredicate, 30, // Predicate_immZExt6
/* 37644*/        OPC_MoveParent,
/* 37645*/        OPC_CheckType, MVT::i64,
/* 37647*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 37649*/        OPC_EmitConvertToTarget, 1,
/* 37651*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DSRL), 0,
                      MVT::i64, 2/*#Ops*/, 0, 2, 
                  // Src: (srl:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt6>>:$shamt) - Complexity = 7
                  // Dst: (DSRL:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, (imm:{ *:[i32] }):$shamt)
/* 37659*/      /*Scope*/ 17, /*->37677*/
/* 37660*/        OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 37662*/        OPC_MoveParent,
/* 37663*/        OPC_CheckType, MVT::i32,
/* 37665*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 37667*/        OPC_EmitConvertToTarget, 1,
/* 37669*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SrlX16), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (srl:{ *:[i32] } CPU16Regs:{ *:[i32] }:$in, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm) - Complexity = 7
                  // Dst: (SrlX16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$in, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm)
/* 37677*/      /*Scope*/ 17, /*->37695*/
/* 37678*/        OPC_CheckPredicate, 49, // Predicate_immZExt2Shift
/* 37680*/        OPC_MoveParent,
/* 37681*/        OPC_CheckType, MVT::i32,
/* 37683*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 37685*/        OPC_EmitConvertToTarget, 1,
/* 37687*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL16_MM), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (srl:{ *:[i32] } GPRMM16:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt2Shift>>:$imm) - Complexity = 7
                  // Dst: (SRL16_MM:{ *:[i32] } GPRMM16:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt2Shift>>:$imm)
/* 37695*/      /*Scope*/ 17, /*->37713*/
/* 37696*/        OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 37698*/        OPC_MoveParent,
/* 37699*/        OPC_CheckType, MVT::i32,
/* 37701*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 37703*/        OPC_EmitConvertToTarget, 1,
/* 37705*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL_MM), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (srl:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm) - Complexity = 7
                  // Dst: (SRL_MM:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm)
/* 37713*/      0, /*End of Scope*/
/* 37714*/    /*Scope*/ 31, /*->37746*/
/* 37715*/      OPC_MoveChild1,
/* 37716*/      OPC_CheckOpcode, TARGET_VAL(ISD::TRUNCATE),
/* 37719*/      OPC_RecordChild0, // #1 = $rs
/* 37720*/      OPC_CheckType, MVT::i32,
/* 37722*/      OPC_MoveParent,
/* 37723*/      OPC_CheckType, MVT::i64,
/* 37725*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 37727*/      OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 37730*/      OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 37738*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DSRLV), 0,
                    MVT::i64, 2/*#Ops*/, 0, 3, 
                // Src: (srl:{ *:[i64] } GPR64:{ *:[i64] }:$rt, (trunc:{ *:[i32] } GPR64:{ *:[i64] }:$rs)) - Complexity = 6
                // Dst: (DSRLV:{ *:[i64] } GPR64:{ *:[i64] }:$rt, (EXTRACT_SUBREG:{ *:[i32] } GPR64:{ *:[i64] }:$rs, sub_32:{ *:[i32] }))
/* 37746*/    /*Scope*/ 54, /*->37801*/
/* 37747*/      OPC_RecordChild1, // #1 = $rs
/* 37748*/      OPC_CheckChild1Type, MVT::i32,
/* 37750*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->37788
/* 37753*/        OPC_Scope, 10, /*->37765*/ // 3 children in Scope
/* 37755*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 37757*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLV), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (srl:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                    // Dst: (SRLV:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 37765*/        /*Scope*/ 10, /*->37776*/
/* 37766*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 37768*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SrlvRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (srl:{ *:[i32] } CPU16Regs:{ *:[i32] }:$r, CPU16Regs:{ *:[i32] }:$ra) - Complexity = 3
                    // Dst: (SrlvRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$r, CPU16Regs:{ *:[i32] }:$ra)
/* 37776*/        /*Scope*/ 10, /*->37787*/
/* 37777*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 37779*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLV_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (srl:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs) - Complexity = 3
                    // Dst: (SRLV_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs)
/* 37787*/        0, /*End of Scope*/
/* 37788*/      /*SwitchType*/ 10, MVT::i64,// ->37800
/* 37790*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 37792*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DSRLV), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1, 
                  // Src: (srl:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (DSRLV:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 37800*/      0, // EndSwitchType
/* 37801*/    /*Scope*/ 82|128,5/*722*/, /*->38525*/
/* 37803*/      OPC_MoveChild1,
/* 37804*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 37807*/      OPC_Scope, 45|128,1/*173*/, /*->37983*/ // 8 children in Scope
/* 37810*/        OPC_RecordChild0, // #1 = $wt
/* 37811*/        OPC_MoveChild1,
/* 37812*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37815*/        OPC_MoveChild0,
/* 37816*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37819*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37821*/        OPC_CheckType, MVT::i32,
/* 37823*/        OPC_MoveParent,
/* 37824*/        OPC_MoveChild1,
/* 37825*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37828*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37830*/        OPC_CheckType, MVT::i32,
/* 37832*/        OPC_MoveParent,
/* 37833*/        OPC_MoveChild2,
/* 37834*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37837*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37839*/        OPC_CheckType, MVT::i32,
/* 37841*/        OPC_MoveParent,
/* 37842*/        OPC_MoveChild3,
/* 37843*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37846*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37848*/        OPC_CheckType, MVT::i32,
/* 37850*/        OPC_MoveParent,
/* 37851*/        OPC_MoveChild4,
/* 37852*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37855*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37857*/        OPC_CheckType, MVT::i32,
/* 37859*/        OPC_MoveParent,
/* 37860*/        OPC_MoveChild5,
/* 37861*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37864*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37866*/        OPC_CheckType, MVT::i32,
/* 37868*/        OPC_MoveParent,
/* 37869*/        OPC_MoveChild6,
/* 37870*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37873*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37875*/        OPC_CheckType, MVT::i32,
/* 37877*/        OPC_MoveParent,
/* 37878*/        OPC_MoveChild7,
/* 37879*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37882*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37884*/        OPC_CheckType, MVT::i32,
/* 37886*/        OPC_MoveParent,
/* 37887*/        OPC_MoveChild, 8,
/* 37889*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37892*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37894*/        OPC_CheckType, MVT::i32,
/* 37896*/        OPC_MoveParent,
/* 37897*/        OPC_MoveChild, 9,
/* 37899*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37902*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37904*/        OPC_CheckType, MVT::i32,
/* 37906*/        OPC_MoveParent,
/* 37907*/        OPC_MoveChild, 10,
/* 37909*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37912*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37914*/        OPC_CheckType, MVT::i32,
/* 37916*/        OPC_MoveParent,
/* 37917*/        OPC_MoveChild, 11,
/* 37919*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37922*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37924*/        OPC_CheckType, MVT::i32,
/* 37926*/        OPC_MoveParent,
/* 37927*/        OPC_MoveChild, 12,
/* 37929*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37932*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37934*/        OPC_CheckType, MVT::i32,
/* 37936*/        OPC_MoveParent,
/* 37937*/        OPC_MoveChild, 13,
/* 37939*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37942*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37944*/        OPC_CheckType, MVT::i32,
/* 37946*/        OPC_MoveParent,
/* 37947*/        OPC_MoveChild, 14,
/* 37949*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37952*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37954*/        OPC_CheckType, MVT::i32,
/* 37956*/        OPC_MoveParent,
/* 37957*/        OPC_MoveChild, 15,
/* 37959*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37962*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37964*/        OPC_CheckType, MVT::i32,
/* 37966*/        OPC_MoveParent,
/* 37967*/        OPC_MoveParent,
/* 37968*/        OPC_CheckType, MVT::v16i8,
/* 37970*/        OPC_MoveParent,
/* 37971*/        OPC_CheckType, MVT::v16i8,
/* 37973*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 37975*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (srl:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$wt, (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>))) - Complexity = 73
                  // Dst: (SRL_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 37983*/      /*Scope*/ 45|128,1/*173*/, /*->38158*/
/* 37985*/        OPC_MoveChild0,
/* 37986*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37989*/        OPC_MoveChild0,
/* 37990*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37993*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 37995*/        OPC_CheckType, MVT::i32,
/* 37997*/        OPC_MoveParent,
/* 37998*/        OPC_MoveChild1,
/* 37999*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38002*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38004*/        OPC_CheckType, MVT::i32,
/* 38006*/        OPC_MoveParent,
/* 38007*/        OPC_MoveChild2,
/* 38008*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38011*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38013*/        OPC_CheckType, MVT::i32,
/* 38015*/        OPC_MoveParent,
/* 38016*/        OPC_MoveChild3,
/* 38017*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38020*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38022*/        OPC_CheckType, MVT::i32,
/* 38024*/        OPC_MoveParent,
/* 38025*/        OPC_MoveChild4,
/* 38026*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38029*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38031*/        OPC_CheckType, MVT::i32,
/* 38033*/        OPC_MoveParent,
/* 38034*/        OPC_MoveChild5,
/* 38035*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38038*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38040*/        OPC_CheckType, MVT::i32,
/* 38042*/        OPC_MoveParent,
/* 38043*/        OPC_MoveChild6,
/* 38044*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38047*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38049*/        OPC_CheckType, MVT::i32,
/* 38051*/        OPC_MoveParent,
/* 38052*/        OPC_MoveChild7,
/* 38053*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38056*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38058*/        OPC_CheckType, MVT::i32,
/* 38060*/        OPC_MoveParent,
/* 38061*/        OPC_MoveChild, 8,
/* 38063*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38066*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38068*/        OPC_CheckType, MVT::i32,
/* 38070*/        OPC_MoveParent,
/* 38071*/        OPC_MoveChild, 9,
/* 38073*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38076*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38078*/        OPC_CheckType, MVT::i32,
/* 38080*/        OPC_MoveParent,
/* 38081*/        OPC_MoveChild, 10,
/* 38083*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38086*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38088*/        OPC_CheckType, MVT::i32,
/* 38090*/        OPC_MoveParent,
/* 38091*/        OPC_MoveChild, 11,
/* 38093*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38096*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38098*/        OPC_CheckType, MVT::i32,
/* 38100*/        OPC_MoveParent,
/* 38101*/        OPC_MoveChild, 12,
/* 38103*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38106*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38108*/        OPC_CheckType, MVT::i32,
/* 38110*/        OPC_MoveParent,
/* 38111*/        OPC_MoveChild, 13,
/* 38113*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38116*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38118*/        OPC_CheckType, MVT::i32,
/* 38120*/        OPC_MoveParent,
/* 38121*/        OPC_MoveChild, 14,
/* 38123*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38126*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38128*/        OPC_CheckType, MVT::i32,
/* 38130*/        OPC_MoveParent,
/* 38131*/        OPC_MoveChild, 15,
/* 38133*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38136*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38138*/        OPC_CheckType, MVT::i32,
/* 38140*/        OPC_MoveParent,
/* 38141*/        OPC_MoveParent,
/* 38142*/        OPC_RecordChild1, // #1 = $wt
/* 38143*/        OPC_CheckType, MVT::v16i8,
/* 38145*/        OPC_MoveParent,
/* 38146*/        OPC_CheckType, MVT::v16i8,
/* 38148*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38150*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (srl:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (and:{ *:[v16i8] } (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>), v16i8:{ *:[v16i8] }:$wt)) - Complexity = 73
                  // Dst: (SRL_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 38158*/      /*Scope*/ 93, /*->38252*/
/* 38159*/        OPC_RecordChild0, // #1 = $wt
/* 38160*/        OPC_MoveChild1,
/* 38161*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38164*/        OPC_MoveChild0,
/* 38165*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38168*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38170*/        OPC_CheckType, MVT::i32,
/* 38172*/        OPC_MoveParent,
/* 38173*/        OPC_MoveChild1,
/* 38174*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38177*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38179*/        OPC_CheckType, MVT::i32,
/* 38181*/        OPC_MoveParent,
/* 38182*/        OPC_MoveChild2,
/* 38183*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38186*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38188*/        OPC_CheckType, MVT::i32,
/* 38190*/        OPC_MoveParent,
/* 38191*/        OPC_MoveChild3,
/* 38192*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38195*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38197*/        OPC_CheckType, MVT::i32,
/* 38199*/        OPC_MoveParent,
/* 38200*/        OPC_MoveChild4,
/* 38201*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38204*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38206*/        OPC_CheckType, MVT::i32,
/* 38208*/        OPC_MoveParent,
/* 38209*/        OPC_MoveChild5,
/* 38210*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38213*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38215*/        OPC_CheckType, MVT::i32,
/* 38217*/        OPC_MoveParent,
/* 38218*/        OPC_MoveChild6,
/* 38219*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38222*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38224*/        OPC_CheckType, MVT::i32,
/* 38226*/        OPC_MoveParent,
/* 38227*/        OPC_MoveChild7,
/* 38228*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38231*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38233*/        OPC_CheckType, MVT::i32,
/* 38235*/        OPC_MoveParent,
/* 38236*/        OPC_MoveParent,
/* 38237*/        OPC_CheckType, MVT::v8i16,
/* 38239*/        OPC_MoveParent,
/* 38240*/        OPC_CheckType, MVT::v8i16,
/* 38242*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38244*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (srl:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$wt, (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>))) - Complexity = 41
                  // Dst: (SRL_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 38252*/      /*Scope*/ 93, /*->38346*/
/* 38253*/        OPC_MoveChild0,
/* 38254*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38257*/        OPC_MoveChild0,
/* 38258*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38261*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38263*/        OPC_CheckType, MVT::i32,
/* 38265*/        OPC_MoveParent,
/* 38266*/        OPC_MoveChild1,
/* 38267*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38270*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38272*/        OPC_CheckType, MVT::i32,
/* 38274*/        OPC_MoveParent,
/* 38275*/        OPC_MoveChild2,
/* 38276*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38279*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38281*/        OPC_CheckType, MVT::i32,
/* 38283*/        OPC_MoveParent,
/* 38284*/        OPC_MoveChild3,
/* 38285*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38288*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38290*/        OPC_CheckType, MVT::i32,
/* 38292*/        OPC_MoveParent,
/* 38293*/        OPC_MoveChild4,
/* 38294*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38297*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38299*/        OPC_CheckType, MVT::i32,
/* 38301*/        OPC_MoveParent,
/* 38302*/        OPC_MoveChild5,
/* 38303*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38306*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38308*/        OPC_CheckType, MVT::i32,
/* 38310*/        OPC_MoveParent,
/* 38311*/        OPC_MoveChild6,
/* 38312*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38315*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38317*/        OPC_CheckType, MVT::i32,
/* 38319*/        OPC_MoveParent,
/* 38320*/        OPC_MoveChild7,
/* 38321*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38324*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 38326*/        OPC_CheckType, MVT::i32,
/* 38328*/        OPC_MoveParent,
/* 38329*/        OPC_MoveParent,
/* 38330*/        OPC_RecordChild1, // #1 = $wt
/* 38331*/        OPC_CheckType, MVT::v8i16,
/* 38333*/        OPC_MoveParent,
/* 38334*/        OPC_CheckType, MVT::v8i16,
/* 38336*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38338*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (srl:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (and:{ *:[v8i16] } (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>), v8i16:{ *:[v8i16] }:$wt)) - Complexity = 41
                  // Dst: (SRL_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 38346*/      /*Scope*/ 57, /*->38404*/
/* 38347*/        OPC_RecordChild0, // #1 = $wt
/* 38348*/        OPC_MoveChild1,
/* 38349*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38352*/        OPC_MoveChild0,
/* 38353*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38356*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 38358*/        OPC_CheckType, MVT::i32,
/* 38360*/        OPC_MoveParent,
/* 38361*/        OPC_MoveChild1,
/* 38362*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38365*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 38367*/        OPC_CheckType, MVT::i32,
/* 38369*/        OPC_MoveParent,
/* 38370*/        OPC_MoveChild2,
/* 38371*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38374*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 38376*/        OPC_CheckType, MVT::i32,
/* 38378*/        OPC_MoveParent,
/* 38379*/        OPC_MoveChild3,
/* 38380*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38383*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 38385*/        OPC_CheckType, MVT::i32,
/* 38387*/        OPC_MoveParent,
/* 38388*/        OPC_MoveParent,
/* 38389*/        OPC_CheckType, MVT::v4i32,
/* 38391*/        OPC_MoveParent,
/* 38392*/        OPC_CheckType, MVT::v4i32,
/* 38394*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38396*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (srl:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$wt, (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>))) - Complexity = 25
                  // Dst: (SRL_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 38404*/      /*Scope*/ 57, /*->38462*/
/* 38405*/        OPC_MoveChild0,
/* 38406*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38409*/        OPC_MoveChild0,
/* 38410*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38413*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 38415*/        OPC_CheckType, MVT::i32,
/* 38417*/        OPC_MoveParent,
/* 38418*/        OPC_MoveChild1,
/* 38419*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38422*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 38424*/        OPC_CheckType, MVT::i32,
/* 38426*/        OPC_MoveParent,
/* 38427*/        OPC_MoveChild2,
/* 38428*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38431*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 38433*/        OPC_CheckType, MVT::i32,
/* 38435*/        OPC_MoveParent,
/* 38436*/        OPC_MoveChild3,
/* 38437*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38440*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 38442*/        OPC_CheckType, MVT::i32,
/* 38444*/        OPC_MoveParent,
/* 38445*/        OPC_MoveParent,
/* 38446*/        OPC_RecordChild1, // #1 = $wt
/* 38447*/        OPC_CheckType, MVT::v4i32,
/* 38449*/        OPC_MoveParent,
/* 38450*/        OPC_CheckType, MVT::v4i32,
/* 38452*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38454*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (srl:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (and:{ *:[v4i32] } (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>), v4i32:{ *:[v4i32] }:$wt)) - Complexity = 25
                  // Dst: (SRL_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 38462*/      /*Scope*/ 30, /*->38493*/
/* 38463*/        OPC_RecordChild0, // #1 = $wt
/* 38464*/        OPC_MoveChild1,
/* 38465*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 38468*/        OPC_MoveChild0,
/* 38469*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38472*/        OPC_CheckType, MVT::v4i32,
/* 38474*/        OPC_MoveParent,
/* 38475*/        OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 38477*/        OPC_MoveParent,
/* 38478*/        OPC_CheckType, MVT::v2i64,
/* 38480*/        OPC_MoveParent,
/* 38481*/        OPC_CheckType, MVT::v2i64,
/* 38483*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38485*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (srl:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$wt, (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>)) - Complexity = 13
                  // Dst: (SRL_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 38493*/      /*Scope*/ 30, /*->38524*/
/* 38494*/        OPC_MoveChild0,
/* 38495*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 38498*/        OPC_MoveChild0,
/* 38499*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38502*/        OPC_CheckType, MVT::v4i32,
/* 38504*/        OPC_MoveParent,
/* 38505*/        OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 38507*/        OPC_MoveParent,
/* 38508*/        OPC_RecordChild1, // #1 = $wt
/* 38509*/        OPC_CheckType, MVT::v2i64,
/* 38511*/        OPC_MoveParent,
/* 38512*/        OPC_CheckType, MVT::v2i64,
/* 38514*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38516*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (srl:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (and:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>, v2i64:{ *:[v2i64] }:$wt)) - Complexity = 13
                  // Dst: (SRL_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 38524*/      0, /*End of Scope*/
/* 38525*/    /*Scope*/ 119, /*->38645*/
/* 38526*/      OPC_RecordChild1, // #1 = $m
/* 38527*/      OPC_SwitchType /*4 cases */, 27, MVT::v16i8,// ->38557
/* 38530*/        OPC_CheckChild1Type, MVT::v16i8,
/* 38532*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 38534*/        OPC_Scope, 11, /*->38547*/ // 2 children in Scope
/* 38536*/          OPC_CheckComplexPat, /*CP*/24, /*#*/1, // selectVSplatUimm3:$m #2
/* 38539*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 2, 
                    // Src: (srl:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm3:{ *:[v16i8] }:$m) - Complexity = 9
                    // Dst: (SRLI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm3:{ *:[v16i8] }:$m)
/* 38547*/        /*Scope*/ 8, /*->38556*/
/* 38548*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (srl:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                    // Dst: (SRL_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 38556*/        0, /*End of Scope*/
/* 38557*/      /*SwitchType*/ 27, MVT::v8i16,// ->38586
/* 38559*/        OPC_CheckChild1Type, MVT::v8i16,
/* 38561*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 38563*/        OPC_Scope, 11, /*->38576*/ // 2 children in Scope
/* 38565*/          OPC_CheckComplexPat, /*CP*/25, /*#*/1, // selectVSplatUimm4:$m #2
/* 38568*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLI_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 2, 
                    // Src: (srl:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm4:{ *:[v8i16] }:$m) - Complexity = 9
                    // Dst: (SRLI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm4:{ *:[v8i16] }:$m)
/* 38576*/        /*Scope*/ 8, /*->38585*/
/* 38577*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (srl:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                    // Dst: (SRL_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 38585*/        0, /*End of Scope*/
/* 38586*/      /*SwitchType*/ 27, MVT::v4i32,// ->38615
/* 38588*/        OPC_CheckChild1Type, MVT::v4i32,
/* 38590*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 38592*/        OPC_Scope, 11, /*->38605*/ // 2 children in Scope
/* 38594*/          OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$m #2
/* 38597*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLI_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 2, 
                    // Src: (srl:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$m) - Complexity = 9
                    // Dst: (SRLI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$m)
/* 38605*/        /*Scope*/ 8, /*->38614*/
/* 38606*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (srl:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                    // Dst: (SRL_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 38614*/        0, /*End of Scope*/
/* 38615*/      /*SwitchType*/ 27, MVT::v2i64,// ->38644
/* 38617*/        OPC_CheckChild1Type, MVT::v2i64,
/* 38619*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 38621*/        OPC_Scope, 11, /*->38634*/ // 2 children in Scope
/* 38623*/          OPC_CheckComplexPat, /*CP*/26, /*#*/1, // selectVSplatUimm6:$m #2
/* 38626*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLI_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 2, 
                    // Src: (srl:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm6:{ *:[v2i64] }:$m) - Complexity = 9
                    // Dst: (SRLI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm6:{ *:[v2i64] }:$m)
/* 38634*/        /*Scope*/ 8, /*->38643*/
/* 38635*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (srl:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                    // Dst: (SRL_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 38643*/        0, /*End of Scope*/
/* 38644*/      0, // EndSwitchType
/* 38645*/    0, /*End of Scope*/
/* 38646*/  /*SwitchOpcode*/ 118|128,7/*1014*/, TARGET_VAL(ISD::SRA),// ->39664
/* 38650*/    OPC_RecordChild0, // #0 = $rt
/* 38651*/    OPC_Scope, 79, /*->38732*/ // 5 children in Scope
/* 38653*/      OPC_RecordChild1, // #1 = $shamt
/* 38654*/      OPC_MoveChild1,
/* 38655*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38658*/      OPC_CheckType, MVT::i32,
/* 38660*/      OPC_Scope, 17, /*->38679*/ // 3 children in Scope
/* 38662*/        OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 38664*/        OPC_MoveParent,
/* 38665*/        OPC_CheckType, MVT::i32,
/* 38667*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 38669*/        OPC_EmitConvertToTarget, 1,
/* 38671*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (sra:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shamt) - Complexity = 7
                  // Dst: (SRA:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] }):$shamt)
/* 38679*/      /*Scope*/ 17, /*->38697*/
/* 38680*/        OPC_CheckPredicate, 30, // Predicate_immZExt6
/* 38682*/        OPC_MoveParent,
/* 38683*/        OPC_CheckType, MVT::i64,
/* 38685*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 38687*/        OPC_EmitConvertToTarget, 1,
/* 38689*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DSRA), 0,
                      MVT::i64, 2/*#Ops*/, 0, 2, 
                  // Src: (sra:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt6>>:$shamt) - Complexity = 7
                  // Dst: (DSRA:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, (imm:{ *:[i32] }):$shamt)
/* 38697*/      /*Scope*/ 33, /*->38731*/
/* 38698*/        OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 38700*/        OPC_MoveParent,
/* 38701*/        OPC_CheckType, MVT::i32,
/* 38703*/        OPC_Scope, 12, /*->38717*/ // 2 children in Scope
/* 38705*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 38707*/          OPC_EmitConvertToTarget, 1,
/* 38709*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SraX16), 0,
                        MVT::i32, 2/*#Ops*/, 0, 2, 
                    // Src: (sra:{ *:[i32] } CPU16Regs:{ *:[i32] }:$in, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm) - Complexity = 7
                    // Dst: (SraX16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$in, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm)
/* 38717*/        /*Scope*/ 12, /*->38730*/
/* 38718*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 38720*/          OPC_EmitConvertToTarget, 1,
/* 38722*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 2, 
                    // Src: (sra:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm) - Complexity = 7
                    // Dst: (SRA_MM:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$imm)
/* 38730*/        0, /*End of Scope*/
/* 38731*/      0, /*End of Scope*/
/* 38732*/    /*Scope*/ 31, /*->38764*/
/* 38733*/      OPC_MoveChild1,
/* 38734*/      OPC_CheckOpcode, TARGET_VAL(ISD::TRUNCATE),
/* 38737*/      OPC_RecordChild0, // #1 = $rs
/* 38738*/      OPC_CheckType, MVT::i32,
/* 38740*/      OPC_MoveParent,
/* 38741*/      OPC_CheckType, MVT::i64,
/* 38743*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 38745*/      OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 38748*/      OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 38756*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DSRAV), 0,
                    MVT::i64, 2/*#Ops*/, 0, 3, 
                // Src: (sra:{ *:[i64] } GPR64:{ *:[i64] }:$rt, (trunc:{ *:[i32] } GPR64:{ *:[i64] }:$rs)) - Complexity = 6
                // Dst: (DSRAV:{ *:[i64] } GPR64:{ *:[i64] }:$rt, (EXTRACT_SUBREG:{ *:[i32] } GPR64:{ *:[i64] }:$rs, sub_32:{ *:[i32] }))
/* 38764*/    /*Scope*/ 54, /*->38819*/
/* 38765*/      OPC_RecordChild1, // #1 = $rs
/* 38766*/      OPC_CheckChild1Type, MVT::i32,
/* 38768*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->38806
/* 38771*/        OPC_Scope, 10, /*->38783*/ // 3 children in Scope
/* 38773*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 38775*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRAV), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (sra:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                    // Dst: (SRAV:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 38783*/        /*Scope*/ 10, /*->38794*/
/* 38784*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 38786*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SravRxRy16), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (sra:{ *:[i32] } CPU16Regs:{ *:[i32] }:$r, CPU16Regs:{ *:[i32] }:$ra) - Complexity = 3
                    // Dst: (SravRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$r, CPU16Regs:{ *:[i32] }:$ra)
/* 38794*/        /*Scope*/ 10, /*->38805*/
/* 38795*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 38797*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRAV_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (sra:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs) - Complexity = 3
                    // Dst: (SRAV_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs)
/* 38805*/        0, /*End of Scope*/
/* 38806*/      /*SwitchType*/ 10, MVT::i64,// ->38818
/* 38808*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 38810*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DSRAV), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1, 
                  // Src: (sra:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (DSRAV:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 38818*/      0, // EndSwitchType
/* 38819*/    /*Scope*/ 82|128,5/*722*/, /*->39543*/
/* 38821*/      OPC_MoveChild1,
/* 38822*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 38825*/      OPC_Scope, 45|128,1/*173*/, /*->39001*/ // 8 children in Scope
/* 38828*/        OPC_RecordChild0, // #1 = $wt
/* 38829*/        OPC_MoveChild1,
/* 38830*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38833*/        OPC_MoveChild0,
/* 38834*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38837*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38839*/        OPC_CheckType, MVT::i32,
/* 38841*/        OPC_MoveParent,
/* 38842*/        OPC_MoveChild1,
/* 38843*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38846*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38848*/        OPC_CheckType, MVT::i32,
/* 38850*/        OPC_MoveParent,
/* 38851*/        OPC_MoveChild2,
/* 38852*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38855*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38857*/        OPC_CheckType, MVT::i32,
/* 38859*/        OPC_MoveParent,
/* 38860*/        OPC_MoveChild3,
/* 38861*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38864*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38866*/        OPC_CheckType, MVT::i32,
/* 38868*/        OPC_MoveParent,
/* 38869*/        OPC_MoveChild4,
/* 38870*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38873*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38875*/        OPC_CheckType, MVT::i32,
/* 38877*/        OPC_MoveParent,
/* 38878*/        OPC_MoveChild5,
/* 38879*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38882*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38884*/        OPC_CheckType, MVT::i32,
/* 38886*/        OPC_MoveParent,
/* 38887*/        OPC_MoveChild6,
/* 38888*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38891*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38893*/        OPC_CheckType, MVT::i32,
/* 38895*/        OPC_MoveParent,
/* 38896*/        OPC_MoveChild7,
/* 38897*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38900*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38902*/        OPC_CheckType, MVT::i32,
/* 38904*/        OPC_MoveParent,
/* 38905*/        OPC_MoveChild, 8,
/* 38907*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38910*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38912*/        OPC_CheckType, MVT::i32,
/* 38914*/        OPC_MoveParent,
/* 38915*/        OPC_MoveChild, 9,
/* 38917*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38920*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38922*/        OPC_CheckType, MVT::i32,
/* 38924*/        OPC_MoveParent,
/* 38925*/        OPC_MoveChild, 10,
/* 38927*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38930*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38932*/        OPC_CheckType, MVT::i32,
/* 38934*/        OPC_MoveParent,
/* 38935*/        OPC_MoveChild, 11,
/* 38937*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38940*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38942*/        OPC_CheckType, MVT::i32,
/* 38944*/        OPC_MoveParent,
/* 38945*/        OPC_MoveChild, 12,
/* 38947*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38950*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38952*/        OPC_CheckType, MVT::i32,
/* 38954*/        OPC_MoveParent,
/* 38955*/        OPC_MoveChild, 13,
/* 38957*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38960*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38962*/        OPC_CheckType, MVT::i32,
/* 38964*/        OPC_MoveParent,
/* 38965*/        OPC_MoveChild, 14,
/* 38967*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38970*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38972*/        OPC_CheckType, MVT::i32,
/* 38974*/        OPC_MoveParent,
/* 38975*/        OPC_MoveChild, 15,
/* 38977*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38980*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 38982*/        OPC_CheckType, MVT::i32,
/* 38984*/        OPC_MoveParent,
/* 38985*/        OPC_MoveParent,
/* 38986*/        OPC_CheckType, MVT::v16i8,
/* 38988*/        OPC_MoveParent,
/* 38989*/        OPC_CheckType, MVT::v16i8,
/* 38991*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38993*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (sra:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$wt, (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>))) - Complexity = 73
                  // Dst: (SRA_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 39001*/      /*Scope*/ 45|128,1/*173*/, /*->39176*/
/* 39003*/        OPC_MoveChild0,
/* 39004*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39007*/        OPC_MoveChild0,
/* 39008*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39011*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39013*/        OPC_CheckType, MVT::i32,
/* 39015*/        OPC_MoveParent,
/* 39016*/        OPC_MoveChild1,
/* 39017*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39020*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39022*/        OPC_CheckType, MVT::i32,
/* 39024*/        OPC_MoveParent,
/* 39025*/        OPC_MoveChild2,
/* 39026*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39029*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39031*/        OPC_CheckType, MVT::i32,
/* 39033*/        OPC_MoveParent,
/* 39034*/        OPC_MoveChild3,
/* 39035*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39038*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39040*/        OPC_CheckType, MVT::i32,
/* 39042*/        OPC_MoveParent,
/* 39043*/        OPC_MoveChild4,
/* 39044*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39047*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39049*/        OPC_CheckType, MVT::i32,
/* 39051*/        OPC_MoveParent,
/* 39052*/        OPC_MoveChild5,
/* 39053*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39056*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39058*/        OPC_CheckType, MVT::i32,
/* 39060*/        OPC_MoveParent,
/* 39061*/        OPC_MoveChild6,
/* 39062*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39065*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39067*/        OPC_CheckType, MVT::i32,
/* 39069*/        OPC_MoveParent,
/* 39070*/        OPC_MoveChild7,
/* 39071*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39074*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39076*/        OPC_CheckType, MVT::i32,
/* 39078*/        OPC_MoveParent,
/* 39079*/        OPC_MoveChild, 8,
/* 39081*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39084*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39086*/        OPC_CheckType, MVT::i32,
/* 39088*/        OPC_MoveParent,
/* 39089*/        OPC_MoveChild, 9,
/* 39091*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39094*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39096*/        OPC_CheckType, MVT::i32,
/* 39098*/        OPC_MoveParent,
/* 39099*/        OPC_MoveChild, 10,
/* 39101*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39104*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39106*/        OPC_CheckType, MVT::i32,
/* 39108*/        OPC_MoveParent,
/* 39109*/        OPC_MoveChild, 11,
/* 39111*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39114*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39116*/        OPC_CheckType, MVT::i32,
/* 39118*/        OPC_MoveParent,
/* 39119*/        OPC_MoveChild, 12,
/* 39121*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39124*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39126*/        OPC_CheckType, MVT::i32,
/* 39128*/        OPC_MoveParent,
/* 39129*/        OPC_MoveChild, 13,
/* 39131*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39134*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39136*/        OPC_CheckType, MVT::i32,
/* 39138*/        OPC_MoveParent,
/* 39139*/        OPC_MoveChild, 14,
/* 39141*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39144*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39146*/        OPC_CheckType, MVT::i32,
/* 39148*/        OPC_MoveParent,
/* 39149*/        OPC_MoveChild, 15,
/* 39151*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39154*/        OPC_CheckPredicate, 34, // Predicate_immi32Cst7
/* 39156*/        OPC_CheckType, MVT::i32,
/* 39158*/        OPC_MoveParent,
/* 39159*/        OPC_MoveParent,
/* 39160*/        OPC_RecordChild1, // #1 = $wt
/* 39161*/        OPC_CheckType, MVT::v16i8,
/* 39163*/        OPC_MoveParent,
/* 39164*/        OPC_CheckType, MVT::v16i8,
/* 39166*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39168*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (sra:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (and:{ *:[v16i8] } (build_vector:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst7>>), v16i8:{ *:[v16i8] }:$wt)) - Complexity = 73
                  // Dst: (SRA_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 39176*/      /*Scope*/ 93, /*->39270*/
/* 39177*/        OPC_RecordChild0, // #1 = $wt
/* 39178*/        OPC_MoveChild1,
/* 39179*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39182*/        OPC_MoveChild0,
/* 39183*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39186*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39188*/        OPC_CheckType, MVT::i32,
/* 39190*/        OPC_MoveParent,
/* 39191*/        OPC_MoveChild1,
/* 39192*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39195*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39197*/        OPC_CheckType, MVT::i32,
/* 39199*/        OPC_MoveParent,
/* 39200*/        OPC_MoveChild2,
/* 39201*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39204*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39206*/        OPC_CheckType, MVT::i32,
/* 39208*/        OPC_MoveParent,
/* 39209*/        OPC_MoveChild3,
/* 39210*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39213*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39215*/        OPC_CheckType, MVT::i32,
/* 39217*/        OPC_MoveParent,
/* 39218*/        OPC_MoveChild4,
/* 39219*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39222*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39224*/        OPC_CheckType, MVT::i32,
/* 39226*/        OPC_MoveParent,
/* 39227*/        OPC_MoveChild5,
/* 39228*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39231*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39233*/        OPC_CheckType, MVT::i32,
/* 39235*/        OPC_MoveParent,
/* 39236*/        OPC_MoveChild6,
/* 39237*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39240*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39242*/        OPC_CheckType, MVT::i32,
/* 39244*/        OPC_MoveParent,
/* 39245*/        OPC_MoveChild7,
/* 39246*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39249*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39251*/        OPC_CheckType, MVT::i32,
/* 39253*/        OPC_MoveParent,
/* 39254*/        OPC_MoveParent,
/* 39255*/        OPC_CheckType, MVT::v8i16,
/* 39257*/        OPC_MoveParent,
/* 39258*/        OPC_CheckType, MVT::v8i16,
/* 39260*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39262*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (sra:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$wt, (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>))) - Complexity = 41
                  // Dst: (SRA_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 39270*/      /*Scope*/ 93, /*->39364*/
/* 39271*/        OPC_MoveChild0,
/* 39272*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39275*/        OPC_MoveChild0,
/* 39276*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39279*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39281*/        OPC_CheckType, MVT::i32,
/* 39283*/        OPC_MoveParent,
/* 39284*/        OPC_MoveChild1,
/* 39285*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39288*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39290*/        OPC_CheckType, MVT::i32,
/* 39292*/        OPC_MoveParent,
/* 39293*/        OPC_MoveChild2,
/* 39294*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39297*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39299*/        OPC_CheckType, MVT::i32,
/* 39301*/        OPC_MoveParent,
/* 39302*/        OPC_MoveChild3,
/* 39303*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39306*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39308*/        OPC_CheckType, MVT::i32,
/* 39310*/        OPC_MoveParent,
/* 39311*/        OPC_MoveChild4,
/* 39312*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39315*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39317*/        OPC_CheckType, MVT::i32,
/* 39319*/        OPC_MoveParent,
/* 39320*/        OPC_MoveChild5,
/* 39321*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39324*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39326*/        OPC_CheckType, MVT::i32,
/* 39328*/        OPC_MoveParent,
/* 39329*/        OPC_MoveChild6,
/* 39330*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39333*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39335*/        OPC_CheckType, MVT::i32,
/* 39337*/        OPC_MoveParent,
/* 39338*/        OPC_MoveChild7,
/* 39339*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39342*/        OPC_CheckPredicate, 35, // Predicate_immi32Cst15
/* 39344*/        OPC_CheckType, MVT::i32,
/* 39346*/        OPC_MoveParent,
/* 39347*/        OPC_MoveParent,
/* 39348*/        OPC_RecordChild1, // #1 = $wt
/* 39349*/        OPC_CheckType, MVT::v8i16,
/* 39351*/        OPC_MoveParent,
/* 39352*/        OPC_CheckType, MVT::v8i16,
/* 39354*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39356*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (sra:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (and:{ *:[v8i16] } (build_vector:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst15>>), v8i16:{ *:[v8i16] }:$wt)) - Complexity = 41
                  // Dst: (SRA_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 39364*/      /*Scope*/ 57, /*->39422*/
/* 39365*/        OPC_RecordChild0, // #1 = $wt
/* 39366*/        OPC_MoveChild1,
/* 39367*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39370*/        OPC_MoveChild0,
/* 39371*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39374*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 39376*/        OPC_CheckType, MVT::i32,
/* 39378*/        OPC_MoveParent,
/* 39379*/        OPC_MoveChild1,
/* 39380*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39383*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 39385*/        OPC_CheckType, MVT::i32,
/* 39387*/        OPC_MoveParent,
/* 39388*/        OPC_MoveChild2,
/* 39389*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39392*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 39394*/        OPC_CheckType, MVT::i32,
/* 39396*/        OPC_MoveParent,
/* 39397*/        OPC_MoveChild3,
/* 39398*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39401*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 39403*/        OPC_CheckType, MVT::i32,
/* 39405*/        OPC_MoveParent,
/* 39406*/        OPC_MoveParent,
/* 39407*/        OPC_CheckType, MVT::v4i32,
/* 39409*/        OPC_MoveParent,
/* 39410*/        OPC_CheckType, MVT::v4i32,
/* 39412*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39414*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (sra:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$wt, (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>))) - Complexity = 25
                  // Dst: (SRA_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 39422*/      /*Scope*/ 57, /*->39480*/
/* 39423*/        OPC_MoveChild0,
/* 39424*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39427*/        OPC_MoveChild0,
/* 39428*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39431*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 39433*/        OPC_CheckType, MVT::i32,
/* 39435*/        OPC_MoveParent,
/* 39436*/        OPC_MoveChild1,
/* 39437*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39440*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 39442*/        OPC_CheckType, MVT::i32,
/* 39444*/        OPC_MoveParent,
/* 39445*/        OPC_MoveChild2,
/* 39446*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39449*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 39451*/        OPC_CheckType, MVT::i32,
/* 39453*/        OPC_MoveParent,
/* 39454*/        OPC_MoveChild3,
/* 39455*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39458*/        OPC_CheckPredicate, 36, // Predicate_immi32Cst31
/* 39460*/        OPC_CheckType, MVT::i32,
/* 39462*/        OPC_MoveParent,
/* 39463*/        OPC_MoveParent,
/* 39464*/        OPC_RecordChild1, // #1 = $wt
/* 39465*/        OPC_CheckType, MVT::v4i32,
/* 39467*/        OPC_MoveParent,
/* 39468*/        OPC_CheckType, MVT::v4i32,
/* 39470*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39472*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (sra:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (and:{ *:[v4i32] } (build_vector:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>, (imm:{ *:[i32] })<<P:Predicate_immi32Cst31>>), v4i32:{ *:[v4i32] }:$wt)) - Complexity = 25
                  // Dst: (SRA_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 39480*/      /*Scope*/ 30, /*->39511*/
/* 39481*/        OPC_RecordChild0, // #1 = $wt
/* 39482*/        OPC_MoveChild1,
/* 39483*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 39486*/        OPC_MoveChild0,
/* 39487*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39490*/        OPC_CheckType, MVT::v4i32,
/* 39492*/        OPC_MoveParent,
/* 39493*/        OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 39495*/        OPC_MoveParent,
/* 39496*/        OPC_CheckType, MVT::v2i64,
/* 39498*/        OPC_MoveParent,
/* 39499*/        OPC_CheckType, MVT::v2i64,
/* 39501*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39503*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (sra:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$wt, (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>)) - Complexity = 13
                  // Dst: (SRA_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 39511*/      /*Scope*/ 30, /*->39542*/
/* 39512*/        OPC_MoveChild0,
/* 39513*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 39516*/        OPC_MoveChild0,
/* 39517*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39520*/        OPC_CheckType, MVT::v4i32,
/* 39522*/        OPC_MoveParent,
/* 39523*/        OPC_CheckPredicate, 38, // Predicate_vsplati64_imm_eq_63
/* 39525*/        OPC_MoveParent,
/* 39526*/        OPC_RecordChild1, // #1 = $wt
/* 39527*/        OPC_CheckType, MVT::v2i64,
/* 39529*/        OPC_MoveParent,
/* 39530*/        OPC_CheckType, MVT::v2i64,
/* 39532*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39534*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (sra:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (and:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] }))<<P:Predicate_vsplati64_imm_eq_63>>, v2i64:{ *:[v2i64] }:$wt)) - Complexity = 13
                  // Dst: (SRA_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 39542*/      0, /*End of Scope*/
/* 39543*/    /*Scope*/ 119, /*->39663*/
/* 39544*/      OPC_RecordChild1, // #1 = $m
/* 39545*/      OPC_SwitchType /*4 cases */, 27, MVT::v16i8,// ->39575
/* 39548*/        OPC_CheckChild1Type, MVT::v16i8,
/* 39550*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 39552*/        OPC_Scope, 11, /*->39565*/ // 2 children in Scope
/* 39554*/          OPC_CheckComplexPat, /*CP*/24, /*#*/1, // selectVSplatUimm3:$m #2
/* 39557*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRAI_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 2, 
                    // Src: (sra:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm3:{ *:[v16i8] }:$m) - Complexity = 9
                    // Dst: (SRAI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm3:{ *:[v16i8] }:$m)
/* 39565*/        /*Scope*/ 8, /*->39574*/
/* 39566*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (sra:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                    // Dst: (SRA_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 39574*/        0, /*End of Scope*/
/* 39575*/      /*SwitchType*/ 27, MVT::v8i16,// ->39604
/* 39577*/        OPC_CheckChild1Type, MVT::v8i16,
/* 39579*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 39581*/        OPC_Scope, 11, /*->39594*/ // 2 children in Scope
/* 39583*/          OPC_CheckComplexPat, /*CP*/25, /*#*/1, // selectVSplatUimm4:$m #2
/* 39586*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRAI_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 2, 
                    // Src: (sra:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm4:{ *:[v8i16] }:$m) - Complexity = 9
                    // Dst: (SRAI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm4:{ *:[v8i16] }:$m)
/* 39594*/        /*Scope*/ 8, /*->39603*/
/* 39595*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (sra:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                    // Dst: (SRA_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 39603*/        0, /*End of Scope*/
/* 39604*/      /*SwitchType*/ 27, MVT::v4i32,// ->39633
/* 39606*/        OPC_CheckChild1Type, MVT::v4i32,
/* 39608*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 39610*/        OPC_Scope, 11, /*->39623*/ // 2 children in Scope
/* 39612*/          OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$m #2
/* 39615*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRAI_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 2, 
                    // Src: (sra:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$m) - Complexity = 9
                    // Dst: (SRAI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$m)
/* 39623*/        /*Scope*/ 8, /*->39632*/
/* 39624*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (sra:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                    // Dst: (SRA_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 39632*/        0, /*End of Scope*/
/* 39633*/      /*SwitchType*/ 27, MVT::v2i64,// ->39662
/* 39635*/        OPC_CheckChild1Type, MVT::v2i64,
/* 39637*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 39639*/        OPC_Scope, 11, /*->39652*/ // 2 children in Scope
/* 39641*/          OPC_CheckComplexPat, /*CP*/26, /*#*/1, // selectVSplatUimm6:$m #2
/* 39644*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRAI_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 2, 
                    // Src: (sra:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm6:{ *:[v2i64] }:$m) - Complexity = 9
                    // Dst: (SRAI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm6:{ *:[v2i64] }:$m)
/* 39652*/        /*Scope*/ 8, /*->39661*/
/* 39653*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (sra:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                    // Dst: (SRA_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 39661*/        0, /*End of Scope*/
/* 39662*/      0, // EndSwitchType
/* 39663*/    0, /*End of Scope*/
/* 39664*/  /*SwitchOpcode*/ 15|128,1/*143*/, TARGET_VAL(ISD::ROTR),// ->39811
/* 39668*/    OPC_RecordChild0, // #0 = $rt
/* 39669*/    OPC_Scope, 63, /*->39734*/ // 3 children in Scope
/* 39671*/      OPC_RecordChild1, // #1 = $shamt
/* 39672*/      OPC_MoveChild1,
/* 39673*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39676*/      OPC_CheckType, MVT::i32,
/* 39678*/      OPC_Scope, 17, /*->39697*/ // 3 children in Scope
/* 39680*/        OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 39682*/        OPC_MoveParent,
/* 39683*/        OPC_CheckType, MVT::i32,
/* 39685*/        OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 39687*/        OPC_EmitConvertToTarget, 1,
/* 39689*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ROTR), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (rotr:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shamt) - Complexity = 7
                  // Dst: (ROTR:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] }):$shamt)
/* 39697*/      /*Scope*/ 17, /*->39715*/
/* 39698*/        OPC_CheckPredicate, 30, // Predicate_immZExt6
/* 39700*/        OPC_MoveParent,
/* 39701*/        OPC_CheckType, MVT::i64,
/* 39703*/        OPC_CheckPatternPredicate, 54, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 39705*/        OPC_EmitConvertToTarget, 1,
/* 39707*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DROTR), 0,
                      MVT::i64, 2/*#Ops*/, 0, 2, 
                  // Src: (rotr:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt6>>:$shamt) - Complexity = 7
                  // Dst: (DROTR:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, (imm:{ *:[i32] }):$shamt)
/* 39715*/      /*Scope*/ 17, /*->39733*/
/* 39716*/        OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 39718*/        OPC_MoveParent,
/* 39719*/        OPC_CheckType, MVT::i32,
/* 39721*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 39723*/        OPC_EmitConvertToTarget, 1,
/* 39725*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ROTR_MM), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (rotr:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shamt) - Complexity = 7
                  // Dst: (ROTR_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] }):$shamt)
/* 39733*/      0, /*End of Scope*/
/* 39734*/    /*Scope*/ 31, /*->39766*/
/* 39735*/      OPC_MoveChild1,
/* 39736*/      OPC_CheckOpcode, TARGET_VAL(ISD::TRUNCATE),
/* 39739*/      OPC_RecordChild0, // #1 = $rs
/* 39740*/      OPC_CheckType, MVT::i32,
/* 39742*/      OPC_MoveParent,
/* 39743*/      OPC_CheckType, MVT::i64,
/* 39745*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 39747*/      OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 39750*/      OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 39758*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DROTRV), 0,
                    MVT::i64, 2/*#Ops*/, 0, 3, 
                // Src: (rotr:{ *:[i64] } GPR64:{ *:[i64] }:$rt, (trunc:{ *:[i32] } GPR64:{ *:[i64] }:$rs)) - Complexity = 6
                // Dst: (DROTRV:{ *:[i64] } GPR64:{ *:[i64] }:$rt, (EXTRACT_SUBREG:{ *:[i32] } GPR64:{ *:[i64] }:$rs, sub_32:{ *:[i32] }))
/* 39766*/    /*Scope*/ 43, /*->39810*/
/* 39767*/      OPC_RecordChild1, // #1 = $rs
/* 39768*/      OPC_CheckChild1Type, MVT::i32,
/* 39770*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->39797
/* 39773*/        OPC_Scope, 10, /*->39785*/ // 2 children in Scope
/* 39775*/          OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 39777*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ROTRV), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (rotr:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                    // Dst: (ROTRV:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 39785*/        /*Scope*/ 10, /*->39796*/
/* 39786*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 39788*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ROTRV_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (rotr:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                    // Dst: (ROTRV_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 39796*/        0, /*End of Scope*/
/* 39797*/      /*SwitchType*/ 10, MVT::i64,// ->39809
/* 39799*/        OPC_CheckPatternPredicate, 54, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 39801*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DROTRV), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1, 
                  // Src: (rotr:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (DROTRV:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 39809*/      0, // EndSwitchType
/* 39810*/    0, /*End of Scope*/
/* 39811*/  /*SwitchOpcode*/ 78, TARGET_VAL(MipsISD::Sync),// ->39892
/* 39814*/    OPC_RecordNode, // #0 = 'MipsSync' chained node
/* 39815*/    OPC_Scope, 19, /*->39836*/ // 3 children in Scope
/* 39817*/      OPC_RecordChild1, // #1 = $stype
/* 39818*/      OPC_MoveChild1,
/* 39819*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39822*/      OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 39824*/      OPC_MoveParent,
/* 39825*/      OPC_CheckPatternPredicate, 67, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 39827*/      OPC_EmitMergeInputChains1_0,
/* 39828*/      OPC_EmitConvertToTarget, 1,
/* 39830*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::SYNC), 0|OPFL_Chain,
                    1/*#Ops*/, 2, 
                // Src: (MipsSync (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$stype) - Complexity = 7
                // Dst: (SYNC (imm:{ *:[i32] }):$stype)
/* 39836*/    /*Scope*/ 19, /*->39856*/
/* 39837*/      OPC_MoveChild1,
/* 39838*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39841*/      OPC_CheckPredicate, 19, // Predicate_immz
/* 39843*/      OPC_MoveParent,
/* 39844*/      OPC_CheckPatternPredicate, 68, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding())
/* 39846*/      OPC_EmitMergeInputChains1_0,
/* 39847*/      OPC_EmitInteger, MVT::i32, 0, 
/* 39850*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::SYNC), 0|OPFL_Chain,
                    1/*#Ops*/, 1, 
                // Src: (MipsSync (imm:{ *:[i32] })<<P:Predicate_immz>>) - Complexity = 7
                // Dst: (SYNC 0:{ *:[i32] })
/* 39856*/    /*Scope*/ 34, /*->39891*/
/* 39857*/      OPC_RecordChild1, // #1 = $stype
/* 39858*/      OPC_MoveChild1,
/* 39859*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39862*/      OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 39864*/      OPC_MoveParent,
/* 39865*/      OPC_Scope, 11, /*->39878*/ // 2 children in Scope
/* 39867*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 39869*/        OPC_EmitMergeInputChains1_0,
/* 39870*/        OPC_EmitConvertToTarget, 1,
/* 39872*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SYNC_MM), 0|OPFL_Chain,
                      1/*#Ops*/, 2, 
                  // Src: (MipsSync (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$stype) - Complexity = 7
                  // Dst: (SYNC_MM (imm:{ *:[i32] }):$stype)
/* 39878*/      /*Scope*/ 11, /*->39890*/
/* 39879*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 39881*/        OPC_EmitMergeInputChains1_0,
/* 39882*/        OPC_EmitConvertToTarget, 1,
/* 39884*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::SYNC_MMR6), 0|OPFL_Chain,
                      1/*#Ops*/, 2, 
                  // Src: (MipsSync (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$stype) - Complexity = 7
                  // Dst: (SYNC_MMR6 (imm:{ *:[i32] }):$stype)
/* 39890*/      0, /*End of Scope*/
/* 39891*/    0, /*End of Scope*/
/* 39892*/  /*SwitchOpcode*/ 82, TARGET_VAL(ISD::ADDC),// ->39977
/* 39895*/    OPC_RecordChild0, // #0 = $src
/* 39896*/    OPC_RecordChild1, // #1 = $imm
/* 39897*/    OPC_Scope, 37, /*->39936*/ // 3 children in Scope
/* 39899*/      OPC_MoveChild1,
/* 39900*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39903*/      OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 39905*/      OPC_MoveParent,
/* 39906*/      OPC_SwitchType /*2 cases */, 12, MVT::i32,// ->39921
/* 39909*/        OPC_CheckPatternPredicate, 69, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP())
/* 39911*/        OPC_EmitConvertToTarget, 1,
/* 39913*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0|OPFL_GlueOutput,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (addc:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm) - Complexity = 7
                  // Dst: (ADDiu:{ *:[i32] } GPR32:{ *:[i32] }:$src, (imm:{ *:[i32] }):$imm)
/* 39921*/      /*SwitchType*/ 12, MVT::i64,// ->39935
/* 39923*/        OPC_CheckPatternPredicate, 70, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasDSP()) && (!Subtarget->inMicroMipsMode())
/* 39925*/        OPC_EmitConvertToTarget, 1,
/* 39927*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0|OPFL_GlueOutput,
                      MVT::i64, 2/*#Ops*/, 0, 2, 
                  // Src: (addc:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$imm) - Complexity = 7
                  // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, (imm:{ *:[i64] }):$imm)
/* 39935*/      0, // EndSwitchType
/* 39936*/    /*Scope*/ 26, /*->39963*/
/* 39937*/      OPC_CheckType, MVT::i32,
/* 39939*/      OPC_Scope, 10, /*->39951*/ // 2 children in Scope
/* 39941*/        OPC_CheckPatternPredicate, 69, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP())
/* 39943*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDu), 0|OPFL_GlueOutput,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (addc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs) - Complexity = 3
                  // Dst: (ADDu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs)
/* 39951*/      /*Scope*/ 10, /*->39962*/
/* 39952*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 39954*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDSC), 0|OPFL_GlueOutput,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (addc:{ *:[i32] } i32:{ *:[i32] }:$a, i32:{ *:[i32] }:$b) - Complexity = 3
                  // Dst: (ADDSC:{ *:[i32] } i32:{ *:[i32] }:$a, i32:{ *:[i32] }:$b)
/* 39962*/      0, /*End of Scope*/
/* 39963*/    /*Scope*/ 12, /*->39976*/
/* 39964*/      OPC_CheckType, MVT::i64,
/* 39966*/      OPC_CheckPatternPredicate, 70, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasDSP()) && (!Subtarget->inMicroMipsMode())
/* 39968*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDu), 0|OPFL_GlueOutput,
                    MVT::i64, 2/*#Ops*/, 0, 1, 
                // Src: (addc:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs) - Complexity = 3
                // Dst: (DADDu:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs)
/* 39976*/    0, /*End of Scope*/
/* 39977*/  /*SwitchOpcode*/ 76, TARGET_VAL(ISD::TRUNCATE),// ->40056
/* 39980*/    OPC_Scope, 45, /*->40027*/ // 2 children in Scope
/* 39982*/      OPC_MoveChild0,
/* 39983*/      OPC_SwitchOpcode /*2 cases */, 19, TARGET_VAL(ISD::AssertZext),// ->40006
/* 39987*/        OPC_RecordChild0, // #0 = $src
/* 39988*/        OPC_CheckPredicate, 50, // Predicate_assertzext_lt_i32
/* 39990*/        OPC_MoveParent,
/* 39991*/        OPC_CheckType, MVT::i32,
/* 39993*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 39995*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 39998*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (trunc:{ *:[i32] } (assertzext:{ *:[i64] } GPR64:{ *:[i64] }:$src)<<P:Predicate_assertzext_lt_i32>>) - Complexity = 7
                  // Dst: (EXTRACT_SUBREG:{ *:[i32] } GPR64:{ *:[i64] }:$src, sub_32:{ *:[i32] })
/* 40006*/      /*SwitchOpcode*/ 17, TARGET_VAL(ISD::AssertSext),// ->40026
/* 40009*/        OPC_RecordChild0, // #0 = $src
/* 40010*/        OPC_MoveParent,
/* 40011*/        OPC_CheckType, MVT::i32,
/* 40013*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 40015*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 40018*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (trunc:{ *:[i32] } (assertsext:{ *:[i64] } GPR64:{ *:[i64] }:$src)) - Complexity = 6
                  // Dst: (EXTRACT_SUBREG:{ *:[i32] } GPR64:{ *:[i64] }:$src, sub_32:{ *:[i32] })
/* 40026*/      0, // EndSwitchOpcode
/* 40027*/    /*Scope*/ 27, /*->40055*/
/* 40028*/      OPC_RecordChild0, // #0 = $src
/* 40029*/      OPC_CheckType, MVT::i32,
/* 40031*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 40033*/      OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 40036*/      OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                    MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 40044*/      OPC_EmitInteger, MVT::i32, 0, 
/* 40047*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL), 0,
                    MVT::i32, 2/*#Ops*/, 2, 3, 
                // Src: (trunc:{ *:[i32] } GPR64:{ *:[i64] }:$src) - Complexity = 3
                // Dst: (SLL:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } GPR64:{ *:[i64] }:$src, sub_32:{ *:[i32] }), 0:{ *:[i32] })
/* 40055*/    0, /*End of Scope*/
/* 40056*/  /*SwitchOpcode*/ 66, TARGET_VAL(MipsISD::SHILO),// ->40125
/* 40059*/    OPC_RecordChild0, // #0 = $shift
/* 40060*/    OPC_Scope, 36, /*->40098*/ // 2 children in Scope
/* 40062*/      OPC_MoveChild0,
/* 40063*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40066*/      OPC_CheckPredicate, 51, // Predicate_immSExt6
/* 40068*/      OPC_MoveParent,
/* 40069*/      OPC_RecordChild1, // #1 = $acin
/* 40070*/      OPC_Scope, 12, /*->40084*/ // 2 children in Scope
/* 40072*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40074*/        OPC_EmitConvertToTarget, 0,
/* 40076*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHILO), 0,
                      MVT::Untyped, 2/*#Ops*/, 2, 1, 
                  // Src: (MipsSHILO:{ *:[Untyped] } (imm:{ *:[i32] })<<P:Predicate_immSExt6>>:$shift, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 7
                  // Dst: (SHILO:{ *:[Untyped] } (imm:{ *:[i32] }):$shift, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 40084*/      /*Scope*/ 12, /*->40097*/
/* 40085*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 40087*/        OPC_EmitConvertToTarget, 0,
/* 40089*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHILO_MM), 0,
                      MVT::Untyped, 2/*#Ops*/, 2, 1, 
                  // Src: (MipsSHILO:{ *:[Untyped] } (imm:{ *:[i32] })<<P:Predicate_immSExt6>>:$shift, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 7
                  // Dst: (SHILO_MM:{ *:[Untyped] } (imm:{ *:[i32] }):$shift, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 40097*/      0, /*End of Scope*/
/* 40098*/    /*Scope*/ 25, /*->40124*/
/* 40099*/      OPC_RecordChild1, // #1 = $acin
/* 40100*/      OPC_Scope, 10, /*->40112*/ // 2 children in Scope
/* 40102*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40104*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHILOV), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsSHILO:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                  // Dst: (SHILOV:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 40112*/      /*Scope*/ 10, /*->40123*/
/* 40113*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 40115*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHILOV_MM), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsSHILO:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                  // Dst: (SHILOV_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 40123*/      0, /*End of Scope*/
/* 40124*/    0, /*End of Scope*/
/* 40125*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTP),// ->40167
/* 40128*/    OPC_RecordNode, // #0 = 'MipsEXTP' chained node
/* 40129*/    OPC_RecordChild1, // #1 = $shift
/* 40130*/    OPC_Scope, 21, /*->40153*/ // 2 children in Scope
/* 40132*/      OPC_MoveChild1,
/* 40133*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40136*/      OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 40138*/      OPC_MoveParent,
/* 40139*/      OPC_RecordChild2, // #2 = $ac
/* 40140*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40142*/      OPC_EmitMergeInputChains1_0,
/* 40143*/      OPC_EmitConvertToTarget, 1,
/* 40145*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::EXTP), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 2, 3, 
                // Src: (MipsEXTP:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shift, ACC64DSP:{ *:[Untyped] }:$ac) - Complexity = 7
                // Dst: (EXTP:{ *:[i32] } ACC64DSP:{ *:[Untyped] }:$ac, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shift)
/* 40153*/    /*Scope*/ 12, /*->40166*/
/* 40154*/      OPC_RecordChild2, // #2 = $ac
/* 40155*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40157*/      OPC_EmitMergeInputChains1_0,
/* 40158*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::EXTPV), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 2, 1, 
                // Src: (MipsEXTP:{ *:[i32] } GPR32:{ *:[i32] }:$rs, ACC64DSP:{ *:[Untyped] }:$ac) - Complexity = 3
                // Dst: (EXTPV:{ *:[i32] } ACC64DSP:{ *:[Untyped] }:$ac, GPR32:{ *:[i32] }:$rs)
/* 40166*/    0, /*End of Scope*/
/* 40167*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTPDP),// ->40209
/* 40170*/    OPC_RecordNode, // #0 = 'MipsEXTPDP' chained node
/* 40171*/    OPC_RecordChild1, // #1 = $shift
/* 40172*/    OPC_Scope, 21, /*->40195*/ // 2 children in Scope
/* 40174*/      OPC_MoveChild1,
/* 40175*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40178*/      OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 40180*/      OPC_MoveParent,
/* 40181*/      OPC_RecordChild2, // #2 = $ac
/* 40182*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40184*/      OPC_EmitMergeInputChains1_0,
/* 40185*/      OPC_EmitConvertToTarget, 1,
/* 40187*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::EXTPDP), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 2, 3, 
                // Src: (MipsEXTPDP:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shift, ACC64DSP:{ *:[Untyped] }:$ac) - Complexity = 7
                // Dst: (EXTPDP:{ *:[i32] } ACC64DSP:{ *:[Untyped] }:$ac, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shift)
/* 40195*/    /*Scope*/ 12, /*->40208*/
/* 40196*/      OPC_RecordChild2, // #2 = $ac
/* 40197*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40199*/      OPC_EmitMergeInputChains1_0,
/* 40200*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::EXTPDPV), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 2, 1, 
                // Src: (MipsEXTPDP:{ *:[i32] } GPR32:{ *:[i32] }:$rs, ACC64DSP:{ *:[Untyped] }:$ac) - Complexity = 3
                // Dst: (EXTPDPV:{ *:[i32] } ACC64DSP:{ *:[Untyped] }:$ac, GPR32:{ *:[i32] }:$rs)
/* 40208*/    0, /*End of Scope*/
/* 40209*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTR_W),// ->40251
/* 40212*/    OPC_RecordNode, // #0 = 'MipsEXTR_W' chained node
/* 40213*/    OPC_RecordChild1, // #1 = $shift
/* 40214*/    OPC_Scope, 21, /*->40237*/ // 2 children in Scope
/* 40216*/      OPC_MoveChild1,
/* 40217*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40220*/      OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 40222*/      OPC_MoveParent,
/* 40223*/      OPC_RecordChild2, // #2 = $ac
/* 40224*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40226*/      OPC_EmitMergeInputChains1_0,
/* 40227*/      OPC_EmitConvertToTarget, 1,
/* 40229*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::EXTR_W), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 2, 3, 
                // Src: (MipsEXTR_W:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shift, ACC64DSP:{ *:[Untyped] }:$ac) - Complexity = 7
                // Dst: (EXTR_W:{ *:[i32] } ACC64DSP:{ *:[Untyped] }:$ac, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shift)
/* 40237*/    /*Scope*/ 12, /*->40250*/
/* 40238*/      OPC_RecordChild2, // #2 = $ac
/* 40239*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40241*/      OPC_EmitMergeInputChains1_0,
/* 40242*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::EXTRV_W), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 2, 1, 
                // Src: (MipsEXTR_W:{ *:[i32] } GPR32:{ *:[i32] }:$rs, ACC64DSP:{ *:[Untyped] }:$ac) - Complexity = 3
                // Dst: (EXTRV_W:{ *:[i32] } ACC64DSP:{ *:[Untyped] }:$ac, GPR32:{ *:[i32] }:$rs)
/* 40250*/    0, /*End of Scope*/
/* 40251*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTR_R_W),// ->40293
/* 40254*/    OPC_RecordNode, // #0 = 'MipsEXTR_R_W' chained node
/* 40255*/    OPC_RecordChild1, // #1 = $shift
/* 40256*/    OPC_Scope, 21, /*->40279*/ // 2 children in Scope
/* 40258*/      OPC_MoveChild1,
/* 40259*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40262*/      OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 40264*/      OPC_MoveParent,
/* 40265*/      OPC_RecordChild2, // #2 = $ac
/* 40266*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40268*/      OPC_EmitMergeInputChains1_0,
/* 40269*/      OPC_EmitConvertToTarget, 1,
/* 40271*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::EXTR_R_W), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 2, 3, 
                // Src: (MipsEXTR_R_W:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shift, ACC64DSP:{ *:[Untyped] }:$ac) - Complexity = 7
                // Dst: (EXTR_R_W:{ *:[i32] } ACC64DSP:{ *:[Untyped] }:$ac, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shift)
/* 40279*/    /*Scope*/ 12, /*->40292*/
/* 40280*/      OPC_RecordChild2, // #2 = $ac
/* 40281*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40283*/      OPC_EmitMergeInputChains1_0,
/* 40284*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::EXTRV_R_W), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 2, 1, 
                // Src: (MipsEXTR_R_W:{ *:[i32] } GPR32:{ *:[i32] }:$rs, ACC64DSP:{ *:[Untyped] }:$ac) - Complexity = 3
                // Dst: (EXTRV_R_W:{ *:[i32] } ACC64DSP:{ *:[Untyped] }:$ac, GPR32:{ *:[i32] }:$rs)
/* 40292*/    0, /*End of Scope*/
/* 40293*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTR_RS_W),// ->40335
/* 40296*/    OPC_RecordNode, // #0 = 'MipsEXTR_RS_W' chained node
/* 40297*/    OPC_RecordChild1, // #1 = $shift
/* 40298*/    OPC_Scope, 21, /*->40321*/ // 2 children in Scope
/* 40300*/      OPC_MoveChild1,
/* 40301*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40304*/      OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 40306*/      OPC_MoveParent,
/* 40307*/      OPC_RecordChild2, // #2 = $ac
/* 40308*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40310*/      OPC_EmitMergeInputChains1_0,
/* 40311*/      OPC_EmitConvertToTarget, 1,
/* 40313*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::EXTR_RS_W), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 2, 3, 
                // Src: (MipsEXTR_RS_W:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shift, ACC64DSP:{ *:[Untyped] }:$ac) - Complexity = 7
                // Dst: (EXTR_RS_W:{ *:[i32] } ACC64DSP:{ *:[Untyped] }:$ac, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shift)
/* 40321*/    /*Scope*/ 12, /*->40334*/
/* 40322*/      OPC_RecordChild2, // #2 = $ac
/* 40323*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40325*/      OPC_EmitMergeInputChains1_0,
/* 40326*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::EXTRV_RS_W), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 2, 1, 
                // Src: (MipsEXTR_RS_W:{ *:[i32] } GPR32:{ *:[i32] }:$rs, ACC64DSP:{ *:[Untyped] }:$ac) - Complexity = 3
                // Dst: (EXTRV_RS_W:{ *:[i32] } ACC64DSP:{ *:[Untyped] }:$ac, GPR32:{ *:[i32] }:$rs)
/* 40334*/    0, /*End of Scope*/
/* 40335*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTR_S_H),// ->40377
/* 40338*/    OPC_RecordNode, // #0 = 'MipsEXTR_S_H' chained node
/* 40339*/    OPC_RecordChild1, // #1 = $shift
/* 40340*/    OPC_Scope, 21, /*->40363*/ // 2 children in Scope
/* 40342*/      OPC_MoveChild1,
/* 40343*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40346*/      OPC_CheckPredicate, 22, // Predicate_immZExt5
/* 40348*/      OPC_MoveParent,
/* 40349*/      OPC_RecordChild2, // #2 = $ac
/* 40350*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40352*/      OPC_EmitMergeInputChains1_0,
/* 40353*/      OPC_EmitConvertToTarget, 1,
/* 40355*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::EXTR_S_H), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 2, 3, 
                // Src: (MipsEXTR_S_H:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shift, ACC64DSP:{ *:[Untyped] }:$ac) - Complexity = 7
                // Dst: (EXTR_S_H:{ *:[i32] } ACC64DSP:{ *:[Untyped] }:$ac, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$shift)
/* 40363*/    /*Scope*/ 12, /*->40376*/
/* 40364*/      OPC_RecordChild2, // #2 = $ac
/* 40365*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40367*/      OPC_EmitMergeInputChains1_0,
/* 40368*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::EXTRV_S_H), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 2, 1, 
                // Src: (MipsEXTR_S_H:{ *:[i32] } GPR32:{ *:[i32] }:$rs, ACC64DSP:{ *:[Untyped] }:$ac) - Complexity = 3
                // Dst: (EXTRV_S_H:{ *:[i32] } ACC64DSP:{ *:[Untyped] }:$ac, GPR32:{ *:[i32] }:$rs)
/* 40376*/    0, /*End of Scope*/
/* 40377*/  /*SwitchOpcode*/ 83|128,4/*595*/, TARGET_VAL(MipsISD::VEXTRACT_SEXT_ELT),// ->40976
/* 40381*/    OPC_RecordChild0, // #0 = $ws
/* 40382*/    OPC_Scope, 29|128,1/*157*/, /*->40542*/ // 4 children in Scope
/* 40385*/      OPC_CheckChild0Type, MVT::v16i8,
/* 40387*/      OPC_RecordChild1, // #1 = $n
/* 40388*/      OPC_Scope, 25, /*->40415*/ // 3 children in Scope
/* 40390*/        OPC_MoveChild1,
/* 40391*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40394*/        OPC_CheckPredicate, 25, // Predicate_immZExt4Ptr
/* 40396*/        OPC_MoveParent,
/* 40397*/        OPC_MoveChild2,
/* 40398*/        OPC_CheckValueType, MVT::i8,
/* 40400*/        OPC_MoveParent,
/* 40401*/        OPC_CheckType, MVT::i32,
/* 40403*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 40405*/        OPC_EmitConvertToTarget, 1,
/* 40407*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::COPY_S_B), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (MipsVExtractSExt:{ *:[i32] } MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[iPTR] })<<P:Predicate_immZExt4Ptr>>:$n, i8:{ *:[Other] }) - Complexity = 7
                  // Dst: (COPY_S_B:{ *:[i32] } MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[iPTR] }):$n)
/* 40415*/      /*Scope*/ 51, /*->40467*/
/* 40416*/        OPC_CheckChild1Type, MVT::i32,
/* 40418*/        OPC_MoveChild2,
/* 40419*/        OPC_CheckValueType, MVT::i8,
/* 40421*/        OPC_MoveParent,
/* 40422*/        OPC_CheckType, MVT::i32,
/* 40424*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40426*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 40434*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 40437*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 40445*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 40448*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 40456*/        OPC_EmitInteger, MVT::i32, 24, 
/* 40459*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7, 
                  // Src: (MipsVExtractSExt:{ *:[i32] } v16i8:{ *:[v16i8] }:$ws, i32:{ *:[i32] }:$idx, i8:{ *:[Other] }) - Complexity = 3
                  // Dst: (SRA:{ *:[i32] } (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } (SPLAT_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, i32:{ *:[i32] }:$idx), sub_lo:{ *:[i32] }), GPR32:{ *:[i32] }), 24:{ *:[i32] })
/* 40467*/      /*Scope*/ 73, /*->40541*/
/* 40468*/        OPC_CheckChild1Type, MVT::i64,
/* 40470*/        OPC_MoveChild2,
/* 40471*/        OPC_CheckValueType, MVT::i8,
/* 40473*/        OPC_MoveParent,
/* 40474*/        OPC_CheckType, MVT::i32,
/* 40476*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40478*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 40481*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 40489*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 40492*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 40500*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 5,  // Results = #6
/* 40508*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 40511*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 40519*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 40522*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 8, 9,  // Results = #10
/* 40530*/        OPC_EmitInteger, MVT::i32, 24, 
/* 40533*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA), 0,
                      MVT::i32, 2/*#Ops*/, 10, 11, 
                  // Src: (MipsVExtractSExt:{ *:[i32] } v16i8:{ *:[v16i8] }:$ws, i64:{ *:[i64] }:$idx, i8:{ *:[Other] }) - Complexity = 3
                  // Dst: (SRA:{ *:[i32] } (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } (SPLAT_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } i64:{ *:[i64] }:$idx, sub_32:{ *:[i32] }), GPR32:{ *:[i32] })), sub_lo:{ *:[i32] }), GPR32:{ *:[i32] }), 24:{ *:[i32] })
/* 40541*/      0, /*End of Scope*/
/* 40542*/    /*Scope*/ 29|128,1/*157*/, /*->40701*/
/* 40544*/      OPC_CheckChild0Type, MVT::v8i16,
/* 40546*/      OPC_RecordChild1, // #1 = $n
/* 40547*/      OPC_Scope, 25, /*->40574*/ // 3 children in Scope
/* 40549*/        OPC_MoveChild1,
/* 40550*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40553*/        OPC_CheckPredicate, 26, // Predicate_immZExt3Ptr
/* 40555*/        OPC_MoveParent,
/* 40556*/        OPC_MoveChild2,
/* 40557*/        OPC_CheckValueType, MVT::i16,
/* 40559*/        OPC_MoveParent,
/* 40560*/        OPC_CheckType, MVT::i32,
/* 40562*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 40564*/        OPC_EmitConvertToTarget, 1,
/* 40566*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::COPY_S_H), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (MipsVExtractSExt:{ *:[i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[iPTR] })<<P:Predicate_immZExt3Ptr>>:$n, i16:{ *:[Other] }) - Complexity = 7
                  // Dst: (COPY_S_H:{ *:[i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[iPTR] }):$n)
/* 40574*/      /*Scope*/ 51, /*->40626*/
/* 40575*/        OPC_CheckChild1Type, MVT::i32,
/* 40577*/        OPC_MoveChild2,
/* 40578*/        OPC_CheckValueType, MVT::i16,
/* 40580*/        OPC_MoveParent,
/* 40581*/        OPC_CheckType, MVT::i32,
/* 40583*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40585*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 40593*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 40596*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 40604*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 40607*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 40615*/        OPC_EmitInteger, MVT::i32, 16, 
/* 40618*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7, 
                  // Src: (MipsVExtractSExt:{ *:[i32] } v8i16:{ *:[v8i16] }:$ws, i32:{ *:[i32] }:$idx, i16:{ *:[Other] }) - Complexity = 3
                  // Dst: (SRA:{ *:[i32] } (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } (SPLAT_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, i32:{ *:[i32] }:$idx), sub_lo:{ *:[i32] }), GPR32:{ *:[i32] }), 16:{ *:[i32] })
/* 40626*/      /*Scope*/ 73, /*->40700*/
/* 40627*/        OPC_CheckChild1Type, MVT::i64,
/* 40629*/        OPC_MoveChild2,
/* 40630*/        OPC_CheckValueType, MVT::i16,
/* 40632*/        OPC_MoveParent,
/* 40633*/        OPC_CheckType, MVT::i32,
/* 40635*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40637*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 40640*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 40648*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 40651*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 40659*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 5,  // Results = #6
/* 40667*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 40670*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 40678*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 40681*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 8, 9,  // Results = #10
/* 40689*/        OPC_EmitInteger, MVT::i32, 16, 
/* 40692*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRA), 0,
                      MVT::i32, 2/*#Ops*/, 10, 11, 
                  // Src: (MipsVExtractSExt:{ *:[i32] } v8i16:{ *:[v8i16] }:$ws, i64:{ *:[i64] }:$idx, i16:{ *:[Other] }) - Complexity = 3
                  // Dst: (SRA:{ *:[i32] } (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } (SPLAT_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } i64:{ *:[i64] }:$idx, sub_32:{ *:[i32] }), GPR32:{ *:[i32] })), sub_lo:{ *:[i32] }), GPR32:{ *:[i32] }), 16:{ *:[i32] })
/* 40700*/      0, /*End of Scope*/
/* 40701*/    /*Scope*/ 7|128,1/*135*/, /*->40838*/
/* 40703*/      OPC_CheckChild0Type, MVT::v4i32,
/* 40705*/      OPC_RecordChild1, // #1 = $n
/* 40706*/      OPC_Scope, 25, /*->40733*/ // 3 children in Scope
/* 40708*/        OPC_MoveChild1,
/* 40709*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40712*/        OPC_CheckPredicate, 27, // Predicate_immZExt2Ptr
/* 40714*/        OPC_MoveParent,
/* 40715*/        OPC_MoveChild2,
/* 40716*/        OPC_CheckValueType, MVT::i32,
/* 40718*/        OPC_MoveParent,
/* 40719*/        OPC_CheckType, MVT::i32,
/* 40721*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 40723*/        OPC_EmitConvertToTarget, 1,
/* 40725*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::COPY_S_W), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (MipsVExtractSExt:{ *:[i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[iPTR] })<<P:Predicate_immZExt2Ptr>>:$n, i32:{ *:[Other] }) - Complexity = 7
                  // Dst: (COPY_S_W:{ *:[i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[iPTR] }):$n)
/* 40733*/      /*Scope*/ 40, /*->40774*/
/* 40734*/        OPC_CheckChild1Type, MVT::i32,
/* 40736*/        OPC_MoveChild2,
/* 40737*/        OPC_CheckValueType, MVT::i32,
/* 40739*/        OPC_MoveParent,
/* 40740*/        OPC_CheckType, MVT::i32,
/* 40742*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40744*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 40752*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 40755*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 40763*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 40766*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5, 
                  // Src: (MipsVExtractSExt:{ *:[i32] } v4i32:{ *:[v4i32] }:$ws, i32:{ *:[i32] }:$idx, i32:{ *:[Other] }) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } (SPLAT_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, i32:{ *:[i32] }:$idx), sub_lo:{ *:[i32] }), GPR32:{ *:[i32] })
/* 40774*/      /*Scope*/ 62, /*->40837*/
/* 40775*/        OPC_CheckChild1Type, MVT::i64,
/* 40777*/        OPC_MoveChild2,
/* 40778*/        OPC_CheckValueType, MVT::i32,
/* 40780*/        OPC_MoveParent,
/* 40781*/        OPC_CheckType, MVT::i32,
/* 40783*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40785*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 40788*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 40796*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 40799*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 40807*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 40815*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 40818*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 40826*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 40829*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 8, 9, 
                  // Src: (MipsVExtractSExt:{ *:[i32] } v4i32:{ *:[v4i32] }:$ws, i64:{ *:[i64] }:$idx, i32:{ *:[Other] }) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } (SPLAT_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } i64:{ *:[i64] }:$idx, sub_32:{ *:[i32] }), GPR32:{ *:[i32] })), sub_lo:{ *:[i32] }), GPR32:{ *:[i32] })
/* 40837*/      0, /*End of Scope*/
/* 40838*/    /*Scope*/ 7|128,1/*135*/, /*->40975*/
/* 40840*/      OPC_CheckChild0Type, MVT::v2i64,
/* 40842*/      OPC_RecordChild1, // #1 = $n
/* 40843*/      OPC_Scope, 25, /*->40870*/ // 3 children in Scope
/* 40845*/        OPC_MoveChild1,
/* 40846*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40849*/        OPC_CheckPredicate, 31, // Predicate_immZExt1Ptr
/* 40851*/        OPC_MoveParent,
/* 40852*/        OPC_MoveChild2,
/* 40853*/        OPC_CheckValueType, MVT::i64,
/* 40855*/        OPC_MoveParent,
/* 40856*/        OPC_CheckType, MVT::i64,
/* 40858*/        OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 40860*/        OPC_EmitConvertToTarget, 1,
/* 40862*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::COPY_S_D), 0,
                      MVT::i64, 2/*#Ops*/, 0, 2, 
                  // Src: (MipsVExtractSExt:{ *:[i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[iPTR] })<<P:Predicate_immZExt1Ptr>>:$n, i64:{ *:[Other] }) - Complexity = 7
                  // Dst: (COPY_S_D:{ *:[i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[iPTR] }):$n)
/* 40870*/      /*Scope*/ 40, /*->40911*/
/* 40871*/        OPC_CheckChild1Type, MVT::i32,
/* 40873*/        OPC_MoveChild2,
/* 40874*/        OPC_CheckValueType, MVT::i64,
/* 40876*/        OPC_MoveParent,
/* 40877*/        OPC_CheckType, MVT::i64,
/* 40879*/        OPC_CheckPatternPredicate, 71, // (Subtarget->hasMSA()) && (Subtarget->isGP64bit())
/* 40881*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1,  // Results = #2
/* 40889*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 40892*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i64, 2/*#Ops*/, 2, 3,  // Results = #4
/* 40900*/        OPC_EmitInteger, MVT::i32, Mips::GPR64RegClassID,
/* 40903*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i64, 2/*#Ops*/, 4, 5, 
                  // Src: (MipsVExtractSExt:{ *:[i64] } v2i64:{ *:[v2i64] }:$ws, i32:{ *:[i32] }:$idx, i64:{ *:[Other] }) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[i64] } (EXTRACT_SUBREG:{ *:[i64] } (SPLAT_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, i32:{ *:[i32] }:$idx), sub_64:{ *:[i32] }), GPR64:{ *:[i32] })
/* 40911*/      /*Scope*/ 62, /*->40974*/
/* 40912*/        OPC_CheckChild1Type, MVT::i64,
/* 40914*/        OPC_MoveChild2,
/* 40915*/        OPC_CheckValueType, MVT::i64,
/* 40917*/        OPC_MoveParent,
/* 40918*/        OPC_CheckType, MVT::i64,
/* 40920*/        OPC_CheckPatternPredicate, 71, // (Subtarget->hasMSA()) && (Subtarget->isGP64bit())
/* 40922*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 40925*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 40933*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 40936*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 40944*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 5,  // Results = #6
/* 40952*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 40955*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i64, 2/*#Ops*/, 6, 7,  // Results = #8
/* 40963*/        OPC_EmitInteger, MVT::i32, Mips::GPR64RegClassID,
/* 40966*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i64, 2/*#Ops*/, 8, 9, 
                  // Src: (MipsVExtractSExt:{ *:[i64] } v2i64:{ *:[v2i64] }:$ws, i64:{ *:[i64] }:$idx, i64:{ *:[Other] }) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[i64] } (EXTRACT_SUBREG:{ *:[i64] } (SPLAT_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } i64:{ *:[i64] }:$idx, sub_32:{ *:[i32] }), GPR32:{ *:[i32] })), sub_64:{ *:[i32] }), GPR64:{ *:[i32] })
/* 40974*/      0, /*End of Scope*/
/* 40975*/    0, /*End of Scope*/
/* 40976*/  /*SwitchOpcode*/ 29|128,5/*669*/, TARGET_VAL(MipsISD::VEXTRACT_ZEXT_ELT),// ->41649
/* 40980*/    OPC_RecordChild0, // #0 = $ws
/* 40981*/    OPC_Scope, 29|128,1/*157*/, /*->41141*/ // 6 children in Scope
/* 40984*/      OPC_CheckChild0Type, MVT::v16i8,
/* 40986*/      OPC_RecordChild1, // #1 = $n
/* 40987*/      OPC_Scope, 25, /*->41014*/ // 3 children in Scope
/* 40989*/        OPC_MoveChild1,
/* 40990*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40993*/        OPC_CheckPredicate, 25, // Predicate_immZExt4Ptr
/* 40995*/        OPC_MoveParent,
/* 40996*/        OPC_MoveChild2,
/* 40997*/        OPC_CheckValueType, MVT::i8,
/* 40999*/        OPC_MoveParent,
/* 41000*/        OPC_CheckType, MVT::i32,
/* 41002*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 41004*/        OPC_EmitConvertToTarget, 1,
/* 41006*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::COPY_U_B), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (MipsVExtractZExt:{ *:[i32] } MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[iPTR] })<<P:Predicate_immZExt4Ptr>>:$n, i8:{ *:[Other] }) - Complexity = 7
                  // Dst: (COPY_U_B:{ *:[i32] } MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[iPTR] }):$n)
/* 41014*/      /*Scope*/ 51, /*->41066*/
/* 41015*/        OPC_CheckChild1Type, MVT::i32,
/* 41017*/        OPC_MoveChild2,
/* 41018*/        OPC_CheckValueType, MVT::i8,
/* 41020*/        OPC_MoveParent,
/* 41021*/        OPC_CheckType, MVT::i32,
/* 41023*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41025*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41033*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41036*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 41044*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41047*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 41055*/        OPC_EmitInteger, MVT::i32, 24, 
/* 41058*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7, 
                  // Src: (MipsVExtractZExt:{ *:[i32] } v16i8:{ *:[v16i8] }:$ws, i32:{ *:[i32] }:$idx, i8:{ *:[Other] }) - Complexity = 3
                  // Dst: (SRL:{ *:[i32] } (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } (SPLAT_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, i32:{ *:[i32] }:$idx), sub_lo:{ *:[i32] }), GPR32:{ *:[i32] }), 24:{ *:[i32] })
/* 41066*/      /*Scope*/ 73, /*->41140*/
/* 41067*/        OPC_CheckChild1Type, MVT::i64,
/* 41069*/        OPC_MoveChild2,
/* 41070*/        OPC_CheckValueType, MVT::i8,
/* 41072*/        OPC_MoveParent,
/* 41073*/        OPC_CheckType, MVT::i32,
/* 41075*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41077*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41080*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41088*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41091*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 41099*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 5,  // Results = #6
/* 41107*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41110*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 41118*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41121*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 8, 9,  // Results = #10
/* 41129*/        OPC_EmitInteger, MVT::i32, 24, 
/* 41132*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL), 0,
                      MVT::i32, 2/*#Ops*/, 10, 11, 
                  // Src: (MipsVExtractZExt:{ *:[i32] } v16i8:{ *:[v16i8] }:$ws, i64:{ *:[i64] }:$idx, i8:{ *:[Other] }) - Complexity = 3
                  // Dst: (SRL:{ *:[i32] } (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } (SPLAT_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } i64:{ *:[i64] }:$idx, sub_32:{ *:[i32] }), GPR32:{ *:[i32] })), sub_lo:{ *:[i32] }), GPR32:{ *:[i32] }), 24:{ *:[i32] })
/* 41140*/      0, /*End of Scope*/
/* 41141*/    /*Scope*/ 29|128,1/*157*/, /*->41300*/
/* 41143*/      OPC_CheckChild0Type, MVT::v8i16,
/* 41145*/      OPC_RecordChild1, // #1 = $n
/* 41146*/      OPC_Scope, 25, /*->41173*/ // 3 children in Scope
/* 41148*/        OPC_MoveChild1,
/* 41149*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41152*/        OPC_CheckPredicate, 26, // Predicate_immZExt3Ptr
/* 41154*/        OPC_MoveParent,
/* 41155*/        OPC_MoveChild2,
/* 41156*/        OPC_CheckValueType, MVT::i16,
/* 41158*/        OPC_MoveParent,
/* 41159*/        OPC_CheckType, MVT::i32,
/* 41161*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 41163*/        OPC_EmitConvertToTarget, 1,
/* 41165*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::COPY_U_H), 0,
                      MVT::i32, 2/*#Ops*/, 0, 2, 
                  // Src: (MipsVExtractZExt:{ *:[i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[iPTR] })<<P:Predicate_immZExt3Ptr>>:$n, i16:{ *:[Other] }) - Complexity = 7
                  // Dst: (COPY_U_H:{ *:[i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[iPTR] }):$n)
/* 41173*/      /*Scope*/ 51, /*->41225*/
/* 41174*/        OPC_CheckChild1Type, MVT::i32,
/* 41176*/        OPC_MoveChild2,
/* 41177*/        OPC_CheckValueType, MVT::i16,
/* 41179*/        OPC_MoveParent,
/* 41180*/        OPC_CheckType, MVT::i32,
/* 41182*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41184*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41192*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41195*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 41203*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41206*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 41214*/        OPC_EmitInteger, MVT::i32, 16, 
/* 41217*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7, 
                  // Src: (MipsVExtractZExt:{ *:[i32] } v8i16:{ *:[v8i16] }:$ws, i32:{ *:[i32] }:$idx, i16:{ *:[Other] }) - Complexity = 3
                  // Dst: (SRL:{ *:[i32] } (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } (SPLAT_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, i32:{ *:[i32] }:$idx), sub_lo:{ *:[i32] }), GPR32:{ *:[i32] }), 16:{ *:[i32] })
/* 41225*/      /*Scope*/ 73, /*->41299*/
/* 41226*/        OPC_CheckChild1Type, MVT::i64,
/* 41228*/        OPC_MoveChild2,
/* 41229*/        OPC_CheckValueType, MVT::i16,
/* 41231*/        OPC_MoveParent,
/* 41232*/        OPC_CheckType, MVT::i32,
/* 41234*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41236*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41239*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41247*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41250*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 41258*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 5,  // Results = #6
/* 41266*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41269*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 41277*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41280*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 8, 9,  // Results = #10
/* 41288*/        OPC_EmitInteger, MVT::i32, 16, 
/* 41291*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SRL), 0,
                      MVT::i32, 2/*#Ops*/, 10, 11, 
                  // Src: (MipsVExtractZExt:{ *:[i32] } v8i16:{ *:[v8i16] }:$ws, i64:{ *:[i64] }:$idx, i16:{ *:[Other] }) - Complexity = 3
                  // Dst: (SRL:{ *:[i32] } (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } (SPLAT_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } i64:{ *:[i64] }:$idx, sub_32:{ *:[i32] }), GPR32:{ *:[i32] })), sub_lo:{ *:[i32] }), GPR32:{ *:[i32] }), 16:{ *:[i32] })
/* 41299*/      0, /*End of Scope*/
/* 41300*/    /*Scope*/ 23|128,1/*151*/, /*->41453*/
/* 41302*/      OPC_CheckChild0Type, MVT::v4i32,
/* 41304*/      OPC_RecordChild1, // #1 = $n
/* 41305*/      OPC_Scope, 41, /*->41348*/ // 3 children in Scope
/* 41307*/        OPC_MoveChild1,
/* 41308*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41311*/        OPC_CheckPredicate, 27, // Predicate_immZExt2Ptr
/* 41313*/        OPC_MoveParent,
/* 41314*/        OPC_MoveChild2,
/* 41315*/        OPC_CheckValueType, MVT::i32,
/* 41317*/        OPC_MoveParent,
/* 41318*/        OPC_CheckType, MVT::i32,
/* 41320*/        OPC_Scope, 12, /*->41334*/ // 2 children in Scope
/* 41322*/          OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 41324*/          OPC_EmitConvertToTarget, 1,
/* 41326*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::COPY_U_W), 0,
                        MVT::i32, 2/*#Ops*/, 0, 2, 
                    // Src: (MipsVExtractZExt:{ *:[i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[iPTR] })<<P:Predicate_immZExt2Ptr>>:$n, i32:{ *:[Other] }) - Complexity = 7
                    // Dst: (COPY_U_W:{ *:[i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[iPTR] }):$n)
/* 41334*/        /*Scope*/ 12, /*->41347*/
/* 41335*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41337*/          OPC_EmitConvertToTarget, 1,
/* 41339*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::COPY_S_W), 0,
                        MVT::i32, 2/*#Ops*/, 0, 2, 
                    // Src: (MipsVExtractZExt:{ *:[i32] } MSA128W:{ *:[v4i32] }:$ws, (imm:{ *:[iPTR] })<<P:Predicate_immZExt2Ptr>>:$idx, i32:{ *:[Other] }) - Complexity = 7
                    // Dst: (COPY_S_W:{ *:[i32] } MSA128W:{ *:[v4i32] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt2>>:$idx)
/* 41347*/        0, /*End of Scope*/
/* 41348*/      /*Scope*/ 40, /*->41389*/
/* 41349*/        OPC_CheckChild1Type, MVT::i32,
/* 41351*/        OPC_MoveChild2,
/* 41352*/        OPC_CheckValueType, MVT::i32,
/* 41354*/        OPC_MoveParent,
/* 41355*/        OPC_CheckType, MVT::i32,
/* 41357*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41359*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41367*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41370*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 41378*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41381*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5, 
                  // Src: (MipsVExtractZExt:{ *:[i32] } v4i32:{ *:[v4i32] }:$ws, i32:{ *:[i32] }:$idx, i32:{ *:[Other] }) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } (SPLAT_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, i32:{ *:[i32] }:$idx), sub_lo:{ *:[i32] }), GPR32:{ *:[i32] })
/* 41389*/      /*Scope*/ 62, /*->41452*/
/* 41390*/        OPC_CheckChild1Type, MVT::i64,
/* 41392*/        OPC_MoveChild2,
/* 41393*/        OPC_CheckValueType, MVT::i32,
/* 41395*/        OPC_MoveParent,
/* 41396*/        OPC_CheckType, MVT::i32,
/* 41398*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41400*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41403*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41411*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41414*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 41422*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 41430*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41433*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 41441*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41444*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 8, 9, 
                  // Src: (MipsVExtractZExt:{ *:[i32] } v4i32:{ *:[v4i32] }:$ws, i64:{ *:[i64] }:$idx, i32:{ *:[Other] }) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } (SPLAT_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } i64:{ *:[i64] }:$idx, sub_32:{ *:[i32] }), GPR32:{ *:[i32] })), sub_lo:{ *:[i32] }), GPR32:{ *:[i32] })
/* 41452*/      0, /*End of Scope*/
/* 41453*/    /*Scope*/ 28, /*->41482*/
/* 41454*/      OPC_CheckChild0Type, MVT::v4f32,
/* 41456*/      OPC_RecordChild1, // #1 = $idx
/* 41457*/      OPC_MoveChild1,
/* 41458*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41461*/      OPC_CheckPredicate, 27, // Predicate_immZExt2Ptr
/* 41463*/      OPC_MoveParent,
/* 41464*/      OPC_MoveChild2,
/* 41465*/      OPC_CheckValueType, MVT::i32,
/* 41467*/      OPC_MoveParent,
/* 41468*/      OPC_CheckType, MVT::i32,
/* 41470*/      OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41472*/      OPC_EmitConvertToTarget, 1,
/* 41474*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::COPY_S_W), 0,
                    MVT::i32, 2/*#Ops*/, 0, 2, 
                // Src: (MipsVExtractZExt:{ *:[i32] } MSA128W:{ *:[v4f32] }:$ws, (imm:{ *:[iPTR] })<<P:Predicate_immZExt2Ptr>>:$idx, i32:{ *:[Other] }) - Complexity = 7
                // Dst: (COPY_S_W:{ *:[i32] } MSA128W:{ *:[v4f32] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt2>>:$idx)
/* 41482*/    /*Scope*/ 7|128,1/*135*/, /*->41619*/
/* 41484*/      OPC_CheckChild0Type, MVT::v2i64,
/* 41486*/      OPC_RecordChild1, // #1 = $idx
/* 41487*/      OPC_Scope, 25, /*->41514*/ // 3 children in Scope
/* 41489*/        OPC_MoveChild1,
/* 41490*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41493*/        OPC_CheckPredicate, 31, // Predicate_immZExt1Ptr
/* 41495*/        OPC_MoveParent,
/* 41496*/        OPC_MoveChild2,
/* 41497*/        OPC_CheckValueType, MVT::i64,
/* 41499*/        OPC_MoveParent,
/* 41500*/        OPC_CheckType, MVT::i64,
/* 41502*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41504*/        OPC_EmitConvertToTarget, 1,
/* 41506*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::COPY_S_D), 0,
                      MVT::i64, 2/*#Ops*/, 0, 2, 
                  // Src: (MipsVExtractZExt:{ *:[i64] } MSA128D:{ *:[v2i64] }:$ws, (imm:{ *:[iPTR] })<<P:Predicate_immZExt1Ptr>>:$idx, i64:{ *:[Other] }) - Complexity = 7
                  // Dst: (COPY_S_D:{ *:[i64] } MSA128D:{ *:[v2i64] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt1>>:$idx)
/* 41514*/      /*Scope*/ 40, /*->41555*/
/* 41515*/        OPC_CheckChild1Type, MVT::i32,
/* 41517*/        OPC_MoveChild2,
/* 41518*/        OPC_CheckValueType, MVT::i64,
/* 41520*/        OPC_MoveParent,
/* 41521*/        OPC_CheckType, MVT::i64,
/* 41523*/        OPC_CheckPatternPredicate, 71, // (Subtarget->hasMSA()) && (Subtarget->isGP64bit())
/* 41525*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41533*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 41536*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i64, 2/*#Ops*/, 2, 3,  // Results = #4
/* 41544*/        OPC_EmitInteger, MVT::i32, Mips::GPR64RegClassID,
/* 41547*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i64, 2/*#Ops*/, 4, 5, 
                  // Src: (MipsVExtractZExt:{ *:[i64] } v2i64:{ *:[v2i64] }:$ws, i32:{ *:[i32] }:$idx, i64:{ *:[Other] }) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[i64] } (EXTRACT_SUBREG:{ *:[i64] } (SPLAT_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, i32:{ *:[i32] }:$idx), sub_64:{ *:[i32] }), GPR64:{ *:[i32] })
/* 41555*/      /*Scope*/ 62, /*->41618*/
/* 41556*/        OPC_CheckChild1Type, MVT::i64,
/* 41558*/        OPC_MoveChild2,
/* 41559*/        OPC_CheckValueType, MVT::i64,
/* 41561*/        OPC_MoveParent,
/* 41562*/        OPC_CheckType, MVT::i64,
/* 41564*/        OPC_CheckPatternPredicate, 71, // (Subtarget->hasMSA()) && (Subtarget->isGP64bit())
/* 41566*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41569*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41577*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41580*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 41588*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 5,  // Results = #6
/* 41596*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 41599*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i64, 2/*#Ops*/, 6, 7,  // Results = #8
/* 41607*/        OPC_EmitInteger, MVT::i32, Mips::GPR64RegClassID,
/* 41610*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i64, 2/*#Ops*/, 8, 9, 
                  // Src: (MipsVExtractZExt:{ *:[i64] } v2i64:{ *:[v2i64] }:$ws, i64:{ *:[i64] }:$idx, i64:{ *:[Other] }) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[i64] } (EXTRACT_SUBREG:{ *:[i64] } (SPLAT_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } i64:{ *:[i64] }:$idx, sub_32:{ *:[i32] }), GPR32:{ *:[i32] })), sub_64:{ *:[i32] }), GPR64:{ *:[i32] })
/* 41618*/      0, /*End of Scope*/
/* 41619*/    /*Scope*/ 28, /*->41648*/
/* 41620*/      OPC_CheckChild0Type, MVT::v2f64,
/* 41622*/      OPC_RecordChild1, // #1 = $idx
/* 41623*/      OPC_MoveChild1,
/* 41624*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41627*/      OPC_CheckPredicate, 31, // Predicate_immZExt1Ptr
/* 41629*/      OPC_MoveParent,
/* 41630*/      OPC_MoveChild2,
/* 41631*/      OPC_CheckValueType, MVT::i64,
/* 41633*/      OPC_MoveParent,
/* 41634*/      OPC_CheckType, MVT::i64,
/* 41636*/      OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41638*/      OPC_EmitConvertToTarget, 1,
/* 41640*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::COPY_S_D), 0,
                    MVT::i64, 2/*#Ops*/, 0, 2, 
                // Src: (MipsVExtractZExt:{ *:[i64] } MSA128D:{ *:[v2f64] }:$ws, (imm:{ *:[iPTR] })<<P:Predicate_immZExt1Ptr>>:$idx, i64:{ *:[Other] }) - Complexity = 7
                // Dst: (COPY_S_D:{ *:[i64] } MSA128D:{ *:[v2f64] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt1>>:$idx)
/* 41648*/    0, /*End of Scope*/
/* 41649*/  /*SwitchOpcode*/ 104|128,1/*232*/, TARGET_VAL(ISD::EXTRACT_VECTOR_ELT),// ->41885
/* 41653*/    OPC_RecordChild0, // #0 = $ws
/* 41654*/    OPC_Scope, 24, /*->41680*/ // 3 children in Scope
/* 41656*/      OPC_RecordChild1, // #1 = $idx
/* 41657*/      OPC_MoveChild1,
/* 41658*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41661*/      OPC_CheckPredicate, 25, // Predicate_immZExt4
/* 41663*/      OPC_CheckType, MVT::i32,
/* 41665*/      OPC_MoveParent,
/* 41666*/      OPC_CheckType, MVT::i32,
/* 41668*/      OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41670*/      OPC_EmitConvertToTarget, 1,
/* 41672*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::COPY_S_W), 0,
                    MVT::i32, 2/*#Ops*/, 0, 2, 
                // Src: (extractelt:{ *:[i32] } MSA128W:{ *:[v4i32] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$idx) - Complexity = 7
                // Dst: (COPY_S_W:{ *:[i32] } MSA128W:{ *:[v4i32] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$idx)
/* 41680*/    /*Scope*/ 101, /*->41782*/
/* 41681*/      OPC_CheckChild0Type, MVT::v4f32,
/* 41683*/      OPC_RecordChild1, // #1 = $n
/* 41684*/      OPC_Scope, 21, /*->41707*/ // 3 children in Scope
/* 41686*/        OPC_MoveChild1,
/* 41687*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41690*/        OPC_CheckPredicate, 27, // Predicate_immZExt2Ptr
/* 41692*/        OPC_MoveParent,
/* 41693*/        OPC_CheckType, MVT::f32,
/* 41695*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 41697*/        OPC_EmitConvertToTarget, 1,
/* 41699*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::COPY_FW_PSEUDO), 0,
                      MVT::f32, 2/*#Ops*/, 0, 2, 
                  // Src: (vector_extract:{ *:[f32] } MSA128W:{ *:[v4f32] }:$ws, (imm:{ *:[iPTR] })<<P:Predicate_immZExt2Ptr>>:$n) - Complexity = 7
                  // Dst: (COPY_FW_PSEUDO:{ *:[f32] } MSA128W:{ *:[v4f32] }:$ws, (imm:{ *:[iPTR] }):$n)
/* 41707*/      /*Scope*/ 25, /*->41733*/
/* 41708*/        OPC_CheckChild1Type, MVT::i32,
/* 41710*/        OPC_CheckType, MVT::f32,
/* 41712*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41714*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41722*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41725*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::f32, 2/*#Ops*/, 2, 3, 
                  // Src: (vector_extract:{ *:[f32] } v4f32:{ *:[v4f32] }:$ws, i32:{ *:[i32] }:$idx) - Complexity = 3
                  // Dst: (EXTRACT_SUBREG:{ *:[f32] } (SPLAT_W:{ *:[v4i32] } v4f32:{ *:[v4f32] }:$ws, i32:{ *:[i32] }:$idx), sub_lo:{ *:[i32] })
/* 41733*/      /*Scope*/ 47, /*->41781*/
/* 41734*/        OPC_CheckChild1Type, MVT::i64,
/* 41736*/        OPC_CheckType, MVT::f32,
/* 41738*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41740*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41743*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41751*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41754*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 41762*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 41770*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41773*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::f32, 2/*#Ops*/, 6, 7, 
                  // Src: (vector_extract:{ *:[f32] } v4f32:{ *:[v4f32] }:$ws, i64:{ *:[i64] }:$idx) - Complexity = 3
                  // Dst: (EXTRACT_SUBREG:{ *:[f32] } (SPLAT_W:{ *:[v4i32] } v4f32:{ *:[v4f32] }:$ws, (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } i64:{ *:[i64] }:$idx, sub_32:{ *:[i32] }), GPR32:{ *:[i32] })), sub_lo:{ *:[i32] })
/* 41781*/      0, /*End of Scope*/
/* 41782*/    /*Scope*/ 101, /*->41884*/
/* 41783*/      OPC_CheckChild0Type, MVT::v2f64,
/* 41785*/      OPC_RecordChild1, // #1 = $n
/* 41786*/      OPC_Scope, 21, /*->41809*/ // 3 children in Scope
/* 41788*/        OPC_MoveChild1,
/* 41789*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41792*/        OPC_CheckPredicate, 31, // Predicate_immZExt1Ptr
/* 41794*/        OPC_MoveParent,
/* 41795*/        OPC_CheckType, MVT::f64,
/* 41797*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 41799*/        OPC_EmitConvertToTarget, 1,
/* 41801*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::COPY_FD_PSEUDO), 0,
                      MVT::f64, 2/*#Ops*/, 0, 2, 
                  // Src: (vector_extract:{ *:[f64] } MSA128D:{ *:[v2f64] }:$ws, (imm:{ *:[iPTR] })<<P:Predicate_immZExt1Ptr>>:$n) - Complexity = 7
                  // Dst: (COPY_FD_PSEUDO:{ *:[f64] } MSA128D:{ *:[v2f64] }:$ws, (imm:{ *:[iPTR] }):$n)
/* 41809*/      /*Scope*/ 25, /*->41835*/
/* 41810*/        OPC_CheckChild1Type, MVT::i32,
/* 41812*/        OPC_CheckType, MVT::f64,
/* 41814*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41816*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41824*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 41827*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::f64, 2/*#Ops*/, 2, 3, 
                  // Src: (vector_extract:{ *:[f64] } v2f64:{ *:[v2f64] }:$ws, i32:{ *:[i32] }:$idx) - Complexity = 3
                  // Dst: (EXTRACT_SUBREG:{ *:[f64] } (SPLAT_D:{ *:[v2i64] } v2f64:{ *:[v2f64] }:$ws, i32:{ *:[i32] }:$idx), sub_64:{ *:[i32] })
/* 41835*/      /*Scope*/ 47, /*->41883*/
/* 41836*/        OPC_CheckChild1Type, MVT::i64,
/* 41838*/        OPC_CheckType, MVT::f64,
/* 41840*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41842*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41845*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41853*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41856*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 41864*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 5,  // Results = #6
/* 41872*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 41875*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::f64, 2/*#Ops*/, 6, 7, 
                  // Src: (vector_extract:{ *:[f64] } v2f64:{ *:[v2f64] }:$ws, i64:{ *:[i64] }:$idx) - Complexity = 3
                  // Dst: (EXTRACT_SUBREG:{ *:[f64] } (SPLAT_D:{ *:[v2i64] } v2f64:{ *:[v2f64] }:$ws, (COPY_TO_REGCLASS:{ *:[i32] } (EXTRACT_SUBREG:{ *:[i32] } i64:{ *:[i64] }:$idx, sub_32:{ *:[i32] }), GPR32:{ *:[i32] })), sub_64:{ *:[i32] })
/* 41883*/      0, /*End of Scope*/
/* 41884*/    0, /*End of Scope*/
/* 41885*/  /*SwitchOpcode*/ 100|128,1/*228*/, TARGET_VAL(MipsISD::JmpLink),// ->42117
/* 41889*/    OPC_RecordNode, // #0 = 'MipsJmpLink' chained node
/* 41890*/    OPC_CaptureGlueInput,
/* 41891*/    OPC_RecordChild1, // #1 = $target
/* 41892*/    OPC_Scope, 13|128,1/*141*/, /*->42036*/ // 3 children in Scope
/* 41895*/      OPC_MoveChild1,
/* 41896*/      OPC_SwitchOpcode /*2 cases */, 73, TARGET_VAL(ISD::TargetGlobalAddress),// ->41973
/* 41900*/        OPC_Scope, 23, /*->41925*/ // 3 children in Scope
/* 41902*/          OPC_MoveParent,
/* 41903*/          OPC_Scope, 9, /*->41914*/ // 2 children in Scope
/* 41905*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 41907*/            OPC_EmitMergeInputChains1_0,
/* 41908*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::JAL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                          1/*#Ops*/, 1, 
                      // Src: (MipsJmpLink (tglobaladdr:{ *:[iPTR] }):$target) - Complexity = 6
                      // Dst: (JAL (tglobaladdr:{ *:[iPTR] }):$target)
/* 41914*/          /*Scope*/ 9, /*->41924*/
/* 41915*/            OPC_CheckPatternPredicate, 49, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 41917*/            OPC_EmitMergeInputChains1_0,
/* 41918*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::JALX), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                          1/*#Ops*/, 1, 
                      // Src: (MipsJmpLink (tglobaladdr:{ *:[iPTR] }):$target) - Complexity = 6
                      // Dst: (JALX (tglobaladdr:{ *:[iPTR] }):$target)
/* 41924*/          0, /*End of Scope*/
/* 41925*/        /*Scope*/ 12, /*->41938*/
/* 41926*/          OPC_CheckType, MVT::i32,
/* 41928*/          OPC_MoveParent,
/* 41929*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 41931*/          OPC_EmitMergeInputChains1_0,
/* 41932*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::Jal16), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                        1/*#Ops*/, 1, 
                    // Src: (MipsJmpLink (tglobaladdr:{ *:[i32] }):$dst) - Complexity = 6
                    // Dst: (Jal16 (tglobaladdr:{ *:[i32] }):$dst)
/* 41938*/        /*Scope*/ 33, /*->41972*/
/* 41939*/          OPC_MoveParent,
/* 41940*/          OPC_Scope, 19, /*->41961*/ // 2 children in Scope
/* 41942*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 41944*/            OPC_EmitMergeInputChains1_0,
/* 41945*/            OPC_Scope, 6, /*->41953*/ // 2 children in Scope
/* 41947*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::JAL_MM), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                            1/*#Ops*/, 1, 
                        // Src: (MipsJmpLink (tglobaladdr:{ *:[iPTR] }):$target) - Complexity = 6
                        // Dst: (JAL_MM (tglobaladdr:{ *:[iPTR] }):$target)
/* 41953*/            /*Scope*/ 6, /*->41960*/
/* 41954*/              OPC_MorphNodeTo0, TARGET_VAL(Mips::JALX_MM), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                            1/*#Ops*/, 1, 
                        // Src: (MipsJmpLink (tglobaladdr:{ *:[iPTR] }):$target) - Complexity = 6
                        // Dst: (JALX_MM (tglobaladdr:{ *:[iPTR] }):$target)
/* 41960*/            0, /*End of Scope*/
/* 41961*/          /*Scope*/ 9, /*->41971*/
/* 41962*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 41964*/            OPC_EmitMergeInputChains1_0,
/* 41965*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::JAL_MMR6), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                          1/*#Ops*/, 1, 
                      // Src: (MipsJmpLink (tglobaladdr:{ *:[iPTR] }):$dst) - Complexity = 6
                      // Dst: (JAL_MMR6 (tglobaladdr:{ *:[iPTR] }):$dst)
/* 41971*/          0, /*End of Scope*/
/* 41972*/        0, /*End of Scope*/
/* 41973*/      /*SwitchOpcode*/ 59, TARGET_VAL(ISD::TargetExternalSymbol),// ->42035
/* 41976*/        OPC_SwitchType /*2 cases */, 43, MVT::i32,// ->42022
/* 41979*/          OPC_MoveParent,
/* 41980*/          OPC_Scope, 9, /*->41991*/ // 4 children in Scope
/* 41982*/            OPC_CheckPatternPredicate, 72, // (Subtarget->hasStandardEncoding())
/* 41984*/            OPC_EmitMergeInputChains1_0,
/* 41985*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::JAL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                          1/*#Ops*/, 1, 
                      // Src: (MipsJmpLink (texternalsym:{ *:[i32] }):$dst) - Complexity = 6
                      // Dst: (JAL (texternalsym:{ *:[i32] }):$dst)
/* 41991*/          /*Scope*/ 9, /*->42001*/
/* 41992*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 41994*/            OPC_EmitMergeInputChains1_0,
/* 41995*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::Jal16), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                          1/*#Ops*/, 1, 
                      // Src: (MipsJmpLink (texternalsym:{ *:[i32] }):$dst) - Complexity = 6
                      // Dst: (Jal16 (texternalsym:{ *:[i32] }):$dst)
/* 42001*/          /*Scope*/ 9, /*->42011*/
/* 42002*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 42004*/            OPC_EmitMergeInputChains1_0,
/* 42005*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::JAL_MM), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                          1/*#Ops*/, 1, 
                      // Src: (MipsJmpLink (texternalsym:{ *:[i32] }):$dst) - Complexity = 6
                      // Dst: (JAL_MM (texternalsym:{ *:[i32] }):$dst)
/* 42011*/          /*Scope*/ 9, /*->42021*/
/* 42012*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 42014*/            OPC_EmitMergeInputChains1_0,
/* 42015*/            OPC_MorphNodeTo0, TARGET_VAL(Mips::JAL_MMR6), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                          1/*#Ops*/, 1, 
                      // Src: (MipsJmpLink (texternalsym:{ *:[i32] }):$dst) - Complexity = 6
                      // Dst: (JAL_MMR6 (texternalsym:{ *:[i32] }):$dst)
/* 42021*/          0, /*End of Scope*/
/* 42022*/        /*SwitchType*/ 10, MVT::i64,// ->42034
/* 42024*/          OPC_MoveParent,
/* 42025*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42027*/          OPC_EmitMergeInputChains1_0,
/* 42028*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::JAL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                        1/*#Ops*/, 1, 
                    // Src: (MipsJmpLink (texternalsym:{ *:[i64] }):$dst) - Complexity = 6
                    // Dst: (JAL (texternalsym:{ *:[i64] }):$dst)
/* 42034*/        0, // EndSwitchType
/* 42035*/      0, // EndSwitchOpcode
/* 42036*/    /*Scope*/ 54, /*->42091*/
/* 42037*/      OPC_CheckChild1Type, MVT::i32,
/* 42039*/      OPC_Scope, 9, /*->42050*/ // 5 children in Scope
/* 42041*/        OPC_CheckPatternPredicate, 73, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode())
/* 42043*/        OPC_EmitMergeInputChains1_0,
/* 42044*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::JALRPseudo), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsJmpLink GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (JALRPseudo GPR32Opnd:{ *:[i32] }:$rs)
/* 42050*/      /*Scope*/ 9, /*->42060*/
/* 42051*/        OPC_CheckPatternPredicate, 74, // (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 42053*/        OPC_EmitMergeInputChains1_0,
/* 42054*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::JALRHBPseudo), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsJmpLink GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (JALRHBPseudo GPR32Opnd:{ *:[i32] }:$rs)
/* 42060*/      /*Scope*/ 9, /*->42070*/
/* 42061*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 42063*/        OPC_EmitMergeInputChains1_0,
/* 42064*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::JumpLinkReg16), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsJmpLink CPU16Regs:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (JumpLinkReg16 CPU16Regs:{ *:[i32] }:$rs)
/* 42070*/      /*Scope*/ 9, /*->42080*/
/* 42071*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 42073*/        OPC_EmitMergeInputChains1_0,
/* 42074*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::JALR16_MM), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsJmpLink GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (JALR16_MM GPR32Opnd:{ *:[i32] }:$rs)
/* 42080*/      /*Scope*/ 9, /*->42090*/
/* 42081*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 42083*/        OPC_EmitMergeInputChains1_0,
/* 42084*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::JALRC16_MMR6), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsJmpLink GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (JALRC16_MMR6 GPR32Opnd:{ *:[i32] }:$rs)
/* 42090*/      0, /*End of Scope*/
/* 42091*/    /*Scope*/ 24, /*->42116*/
/* 42092*/      OPC_CheckChild1Type, MVT::i64,
/* 42094*/      OPC_Scope, 9, /*->42105*/ // 2 children in Scope
/* 42096*/        OPC_CheckPatternPredicate, 75, // (Subtarget->isABI_N64()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMips16Mode())
/* 42098*/        OPC_EmitMergeInputChains1_0,
/* 42099*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::JALR64Pseudo), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsJmpLink GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (JALR64Pseudo GPR64Opnd:{ *:[i64] }:$rs)
/* 42105*/      /*Scope*/ 9, /*->42115*/
/* 42106*/        OPC_CheckPatternPredicate, 76, // (Subtarget->isABI_N64()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 42108*/        OPC_EmitMergeInputChains1_0,
/* 42109*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::JALRHB64Pseudo), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsJmpLink GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (JALRHB64Pseudo GPR64Opnd:{ *:[i64] }:$rs)
/* 42115*/      0, /*End of Scope*/
/* 42116*/    0, /*End of Scope*/
/* 42117*/  /*SwitchOpcode*/ 63|128,1/*191*/, TARGET_VAL(MipsISD::TailCall),// ->42312
/* 42121*/    OPC_RecordNode, // #0 = 'MipsTailCall' chained node
/* 42122*/    OPC_CaptureGlueInput,
/* 42123*/    OPC_RecordChild1, // #1 = $dst
/* 42124*/    OPC_Scope, 75, /*->42201*/ // 3 children in Scope
/* 42126*/      OPC_MoveChild1,
/* 42127*/      OPC_SwitchOpcode /*2 cases */, 33, TARGET_VAL(ISD::TargetGlobalAddress),// ->42164
/* 42131*/        OPC_MoveParent,
/* 42132*/        OPC_Scope, 9, /*->42143*/ // 3 children in Scope
/* 42134*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 42136*/          OPC_EmitMergeInputChains1_0,
/* 42137*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                        1/*#Ops*/, 1, 
                    // Src: (MipsTailCall (tglobaladdr:{ *:[iPTR] }):$dst) - Complexity = 6
                    // Dst: (TAILCALL (tglobaladdr:{ *:[iPTR] }):$dst)
/* 42143*/        /*Scope*/ 9, /*->42153*/
/* 42144*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 42146*/          OPC_EmitMergeInputChains1_0,
/* 42147*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALL_MM), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                        1/*#Ops*/, 1, 
                    // Src: (MipsTailCall (tglobaladdr:{ *:[iPTR] }):$dst) - Complexity = 6
                    // Dst: (TAILCALL_MM (tglobaladdr:{ *:[iPTR] }):$dst)
/* 42153*/        /*Scope*/ 9, /*->42163*/
/* 42154*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 42156*/          OPC_EmitMergeInputChains1_0,
/* 42157*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALL_MMR6), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                        1/*#Ops*/, 1, 
                    // Src: (MipsTailCall (tglobaladdr:{ *:[iPTR] }):$dst) - Complexity = 6
                    // Dst: (TAILCALL_MMR6 (tglobaladdr:{ *:[iPTR] }):$dst)
/* 42163*/        0, /*End of Scope*/
/* 42164*/      /*SwitchOpcode*/ 33, TARGET_VAL(ISD::TargetExternalSymbol),// ->42200
/* 42167*/        OPC_MoveParent,
/* 42168*/        OPC_Scope, 9, /*->42179*/ // 3 children in Scope
/* 42170*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 42172*/          OPC_EmitMergeInputChains1_0,
/* 42173*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                        1/*#Ops*/, 1, 
                    // Src: (MipsTailCall (texternalsym:{ *:[iPTR] }):$dst) - Complexity = 6
                    // Dst: (TAILCALL (texternalsym:{ *:[iPTR] }):$dst)
/* 42179*/        /*Scope*/ 9, /*->42189*/
/* 42180*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 42182*/          OPC_EmitMergeInputChains1_0,
/* 42183*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALL_MM), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                        1/*#Ops*/, 1, 
                    // Src: (MipsTailCall (texternalsym:{ *:[iPTR] }):$dst) - Complexity = 6
                    // Dst: (TAILCALL_MM (texternalsym:{ *:[iPTR] }):$dst)
/* 42189*/        /*Scope*/ 9, /*->42199*/
/* 42190*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 42192*/          OPC_EmitMergeInputChains1_0,
/* 42193*/          OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALL_MMR6), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                        1/*#Ops*/, 1, 
                    // Src: (MipsTailCall (texternalsym:{ *:[iPTR] }):$dst) - Complexity = 6
                    // Dst: (TAILCALL_MMR6 (texternalsym:{ *:[iPTR] }):$dst)
/* 42199*/        0, /*End of Scope*/
/* 42200*/      0, // EndSwitchOpcode
/* 42201*/    /*Scope*/ 64, /*->42266*/
/* 42202*/      OPC_CheckChild1Type, MVT::i32,
/* 42204*/      OPC_Scope, 9, /*->42215*/ // 6 children in Scope
/* 42206*/        OPC_CheckPatternPredicate, 77, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 42208*/        OPC_EmitMergeInputChains1_0,
/* 42209*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALLREG), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsTailCall GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (TAILCALLREG GPR32Opnd:{ *:[i32] }:$rs)
/* 42215*/      /*Scope*/ 9, /*->42225*/
/* 42216*/        OPC_CheckPatternPredicate, 78, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard())
/* 42218*/        OPC_EmitMergeInputChains1_0,
/* 42219*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALLREGHB), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsTailCall GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (TAILCALLREGHB GPR32Opnd:{ *:[i32] }:$rs)
/* 42225*/      /*Scope*/ 9, /*->42235*/
/* 42226*/        OPC_CheckPatternPredicate, 79, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode())
/* 42228*/        OPC_EmitMergeInputChains1_0,
/* 42229*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALLR6REG), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsTailCall GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (TAILCALLR6REG GPR32Opnd:{ *:[i32] }:$rs)
/* 42235*/      /*Scope*/ 9, /*->42245*/
/* 42236*/        OPC_CheckPatternPredicate, 80, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 42238*/        OPC_EmitMergeInputChains1_0,
/* 42239*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALLHBR6REG), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsTailCall GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (TAILCALLHBR6REG GPR32Opnd:{ *:[i32] }:$rs)
/* 42245*/      /*Scope*/ 9, /*->42255*/
/* 42246*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 42248*/        OPC_EmitMergeInputChains1_0,
/* 42249*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALLREG_MM), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsTailCall GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (TAILCALLREG_MM GPR32Opnd:{ *:[i32] }:$rs)
/* 42255*/      /*Scope*/ 9, /*->42265*/
/* 42256*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 42258*/        OPC_EmitMergeInputChains1_0,
/* 42259*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALLREG_MMR6), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsTailCall GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (TAILCALLREG_MMR6 GPR32Opnd:{ *:[i32] }:$rs)
/* 42265*/      0, /*End of Scope*/
/* 42266*/    /*Scope*/ 44, /*->42311*/
/* 42267*/      OPC_CheckChild1Type, MVT::i64,
/* 42269*/      OPC_Scope, 9, /*->42280*/ // 4 children in Scope
/* 42271*/        OPC_CheckPatternPredicate, 81, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 42273*/        OPC_EmitMergeInputChains1_0,
/* 42274*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALLREG64), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsTailCall GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (TAILCALLREG64 GPR64Opnd:{ *:[i64] }:$rs)
/* 42280*/      /*Scope*/ 9, /*->42290*/
/* 42281*/        OPC_CheckPatternPredicate, 82, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard())
/* 42283*/        OPC_EmitMergeInputChains1_0,
/* 42284*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALLREGHB64), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsTailCall GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (TAILCALLREGHB64 GPR64Opnd:{ *:[i64] }:$rs)
/* 42290*/      /*Scope*/ 9, /*->42300*/
/* 42291*/        OPC_CheckPatternPredicate, 83, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode())
/* 42293*/        OPC_EmitMergeInputChains1_0,
/* 42294*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALL64R6REG), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsTailCall GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (TAILCALL64R6REG GPR64Opnd:{ *:[i64] }:$rs)
/* 42300*/      /*Scope*/ 9, /*->42310*/
/* 42301*/        OPC_CheckPatternPredicate, 84, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 42303*/        OPC_EmitMergeInputChains1_0,
/* 42304*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::TAILCALLHB64R6REG), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
                      1/*#Ops*/, 1, 
                  // Src: (MipsTailCall GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (TAILCALLHB64R6REG GPR64Opnd:{ *:[i64] }:$rs)
/* 42310*/      0, /*End of Scope*/
/* 42311*/    0, /*End of Scope*/
/* 42312*/  /*SwitchOpcode*/ 106|128,2/*362*/, TARGET_VAL(MipsISD::Hi),// ->42678
/* 42316*/    OPC_RecordChild0, // #0 = $in
/* 42317*/    OPC_MoveChild0,
/* 42318*/    OPC_SwitchOpcode /*5 cases */, 77, TARGET_VAL(ISD::TargetGlobalAddress),// ->42399
/* 42322*/      OPC_MoveParent,
/* 42323*/      OPC_SwitchType /*2 cases */, 43, MVT::i32,// ->42369
/* 42326*/        OPC_Scope, 9, /*->42337*/ // 3 children in Scope
/* 42328*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 42330*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (MipsHi:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (LUi:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in)
/* 42337*/        /*Scope*/ 9, /*->42347*/
/* 42338*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 42340*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi_MM), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (MipsHi:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (LUi_MM:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in)
/* 42347*/        /*Scope*/ 20, /*->42368*/
/* 42348*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 42350*/          OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                        MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 42357*/          OPC_EmitInteger, MVT::i32, 16, 
/* 42360*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SllX16), 0,
                        MVT::i32, 2/*#Ops*/, 1, 2, 
                    // Src: (MipsHi:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (SllX16:{ *:[i32] } (LiRxImmX16:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in), 16:{ *:[i32] })
/* 42368*/        0, /*End of Scope*/
/* 42369*/      /*SwitchType*/ 27, MVT::i64,// ->42398
/* 42371*/        OPC_Scope, 9, /*->42382*/ // 2 children in Scope
/* 42373*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42375*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi64), 0,
                        MVT::i64, 1/*#Ops*/, 0, 
                    // Src: (MipsHi:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (LUi64:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$in)
/* 42382*/        /*Scope*/ 14, /*->42397*/
/* 42383*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42385*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 42389*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsHi:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tglobaladdr:{ *:[i64] }):$in)
/* 42397*/        0, /*End of Scope*/
/* 42398*/      0, // EndSwitchType
/* 42399*/    /*SwitchOpcode*/ 77, TARGET_VAL(ISD::TargetBlockAddress),// ->42479
/* 42402*/      OPC_MoveParent,
/* 42403*/      OPC_SwitchType /*2 cases */, 43, MVT::i32,// ->42449
/* 42406*/        OPC_Scope, 9, /*->42417*/ // 3 children in Scope
/* 42408*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 42410*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (MipsHi:{ *:[i32] } (tblockaddress:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (LUi:{ *:[i32] } (tblockaddress:{ *:[i32] }):$in)
/* 42417*/        /*Scope*/ 9, /*->42427*/
/* 42418*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 42420*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi_MM), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (MipsHi:{ *:[i32] } (tblockaddress:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (LUi_MM:{ *:[i32] } (tblockaddress:{ *:[i32] }):$in)
/* 42427*/        /*Scope*/ 20, /*->42448*/
/* 42428*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 42430*/          OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                        MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 42437*/          OPC_EmitInteger, MVT::i32, 16, 
/* 42440*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SllX16), 0,
                        MVT::i32, 2/*#Ops*/, 1, 2, 
                    // Src: (MipsHi:{ *:[i32] } (tblockaddress:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (SllX16:{ *:[i32] } (LiRxImmX16:{ *:[i32] } (tblockaddress:{ *:[i32] }):$in), 16:{ *:[i32] })
/* 42448*/        0, /*End of Scope*/
/* 42449*/      /*SwitchType*/ 27, MVT::i64,// ->42478
/* 42451*/        OPC_Scope, 9, /*->42462*/ // 2 children in Scope
/* 42453*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42455*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi64), 0,
                        MVT::i64, 1/*#Ops*/, 0, 
                    // Src: (MipsHi:{ *:[i64] } (tblockaddress:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (LUi64:{ *:[i64] } (tblockaddress:{ *:[i64] }):$in)
/* 42462*/        /*Scope*/ 14, /*->42477*/
/* 42463*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42465*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 42469*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsHi:{ *:[i64] } (tblockaddress:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tblockaddress:{ *:[i64] }):$in)
/* 42477*/        0, /*End of Scope*/
/* 42478*/      0, // EndSwitchType
/* 42479*/    /*SwitchOpcode*/ 77, TARGET_VAL(ISD::TargetJumpTable),// ->42559
/* 42482*/      OPC_MoveParent,
/* 42483*/      OPC_SwitchType /*2 cases */, 43, MVT::i32,// ->42529
/* 42486*/        OPC_Scope, 9, /*->42497*/ // 3 children in Scope
/* 42488*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 42490*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (MipsHi:{ *:[i32] } (tjumptable:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (LUi:{ *:[i32] } (tjumptable:{ *:[i32] }):$in)
/* 42497*/        /*Scope*/ 9, /*->42507*/
/* 42498*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 42500*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi_MM), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (MipsHi:{ *:[i32] } (tjumptable:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (LUi_MM:{ *:[i32] } (tjumptable:{ *:[i32] }):$in)
/* 42507*/        /*Scope*/ 20, /*->42528*/
/* 42508*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 42510*/          OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                        MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 42517*/          OPC_EmitInteger, MVT::i32, 16, 
/* 42520*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SllX16), 0,
                        MVT::i32, 2/*#Ops*/, 1, 2, 
                    // Src: (MipsHi:{ *:[i32] } (tjumptable:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (SllX16:{ *:[i32] } (LiRxImmX16:{ *:[i32] } (tjumptable:{ *:[i32] }):$in), 16:{ *:[i32] })
/* 42528*/        0, /*End of Scope*/
/* 42529*/      /*SwitchType*/ 27, MVT::i64,// ->42558
/* 42531*/        OPC_Scope, 9, /*->42542*/ // 2 children in Scope
/* 42533*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42535*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi64), 0,
                        MVT::i64, 1/*#Ops*/, 0, 
                    // Src: (MipsHi:{ *:[i64] } (tjumptable:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (LUi64:{ *:[i64] } (tjumptable:{ *:[i64] }):$in)
/* 42542*/        /*Scope*/ 14, /*->42557*/
/* 42543*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42545*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 42549*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsHi:{ *:[i64] } (tjumptable:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tjumptable:{ *:[i64] }):$in)
/* 42557*/        0, /*End of Scope*/
/* 42558*/      0, // EndSwitchType
/* 42559*/    /*SwitchOpcode*/ 56, TARGET_VAL(ISD::TargetConstantPool),// ->42618
/* 42562*/      OPC_MoveParent,
/* 42563*/      OPC_SwitchType /*2 cases */, 22, MVT::i32,// ->42588
/* 42566*/        OPC_Scope, 9, /*->42577*/ // 2 children in Scope
/* 42568*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 42570*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (MipsHi:{ *:[i32] } (tconstpool:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (LUi:{ *:[i32] } (tconstpool:{ *:[i32] }):$in)
/* 42577*/        /*Scope*/ 9, /*->42587*/
/* 42578*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 42580*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi_MM), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (MipsHi:{ *:[i32] } (tconstpool:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (LUi_MM:{ *:[i32] } (tconstpool:{ *:[i32] }):$in)
/* 42587*/        0, /*End of Scope*/
/* 42588*/      /*SwitchType*/ 27, MVT::i64,// ->42617
/* 42590*/        OPC_Scope, 9, /*->42601*/ // 2 children in Scope
/* 42592*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42594*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi64), 0,
                        MVT::i64, 1/*#Ops*/, 0, 
                    // Src: (MipsHi:{ *:[i64] } (tconstpool:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (LUi64:{ *:[i64] } (tconstpool:{ *:[i64] }):$in)
/* 42601*/        /*Scope*/ 14, /*->42616*/
/* 42602*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42604*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 42608*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsHi:{ *:[i64] } (tconstpool:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tconstpool:{ *:[i64] }):$in)
/* 42616*/        0, /*End of Scope*/
/* 42617*/      0, // EndSwitchType
/* 42618*/    /*SwitchOpcode*/ 56, TARGET_VAL(ISD::TargetExternalSymbol),// ->42677
/* 42621*/      OPC_MoveParent,
/* 42622*/      OPC_SwitchType /*2 cases */, 22, MVT::i32,// ->42647
/* 42625*/        OPC_Scope, 9, /*->42636*/ // 2 children in Scope
/* 42627*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 42629*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (MipsHi:{ *:[i32] } (texternalsym:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (LUi:{ *:[i32] } (texternalsym:{ *:[i32] }):$in)
/* 42636*/        /*Scope*/ 9, /*->42646*/
/* 42637*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 42639*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi_MM), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (MipsHi:{ *:[i32] } (texternalsym:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (LUi_MM:{ *:[i32] } (texternalsym:{ *:[i32] }):$in)
/* 42646*/        0, /*End of Scope*/
/* 42647*/      /*SwitchType*/ 27, MVT::i64,// ->42676
/* 42649*/        OPC_Scope, 9, /*->42660*/ // 2 children in Scope
/* 42651*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42653*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi64), 0,
                        MVT::i64, 1/*#Ops*/, 0, 
                    // Src: (MipsHi:{ *:[i64] } (texternalsym:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (LUi64:{ *:[i64] } (texternalsym:{ *:[i64] }):$in)
/* 42660*/        /*Scope*/ 14, /*->42675*/
/* 42661*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42663*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 42667*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsHi:{ *:[i64] } (texternalsym:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (texternalsym:{ *:[i64] }):$in)
/* 42675*/        0, /*End of Scope*/
/* 42676*/      0, // EndSwitchType
/* 42677*/    0, // EndSwitchOpcode
/* 42678*/  /*SwitchOpcode*/ 62|128,3/*446*/, TARGET_VAL(MipsISD::Lo),// ->43128
/* 42682*/    OPC_RecordChild0, // #0 = $in
/* 42683*/    OPC_MoveChild0,
/* 42684*/    OPC_SwitchOpcode /*6 cases */, 69, TARGET_VAL(ISD::TargetGlobalAddress),// ->42757
/* 42688*/      OPC_MoveParent,
/* 42689*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->42722
/* 42692*/        OPC_Scope, 13, /*->42707*/ // 2 children in Scope
/* 42694*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 42696*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 42699*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, (tglobaladdr:{ *:[i32] }):$in)
/* 42707*/        /*Scope*/ 13, /*->42721*/
/* 42708*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 42710*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 42713*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu_MM:{ *:[i32] } ZERO:{ *:[i32] }, (tglobaladdr:{ *:[i32] }):$in)
/* 42721*/        0, /*End of Scope*/
/* 42722*/      /*SwitchType*/ 32, MVT::i64,// ->42756
/* 42724*/        OPC_Scope, 14, /*->42740*/ // 2 children in Scope
/* 42726*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42728*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 42732*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tglobaladdr:{ *:[i64] }):$in)
/* 42740*/        /*Scope*/ 14, /*->42755*/
/* 42741*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42743*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 42747*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tglobaladdr:{ *:[i64] }):$in)
/* 42755*/        0, /*End of Scope*/
/* 42756*/      0, // EndSwitchType
/* 42757*/    /*SwitchOpcode*/ 79, TARGET_VAL(ISD::TargetBlockAddress),// ->42839
/* 42760*/      OPC_MoveParent,
/* 42761*/      OPC_SwitchType /*2 cases */, 40, MVT::i32,// ->42804
/* 42764*/        OPC_Scope, 13, /*->42779*/ // 3 children in Scope
/* 42766*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 42768*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 42771*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i32] } (tblockaddress:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, (tblockaddress:{ *:[i32] }):$in)
/* 42779*/        /*Scope*/ 9, /*->42789*/
/* 42780*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 42782*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LiRxImmX16), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (MipsLo:{ *:[i32] } (tblockaddress:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (LiRxImmX16:{ *:[i32] } (tblockaddress:{ *:[i32] }):$in)
/* 42789*/        /*Scope*/ 13, /*->42803*/
/* 42790*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 42792*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 42795*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i32] } (tblockaddress:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu_MM:{ *:[i32] } ZERO:{ *:[i32] }, (tblockaddress:{ *:[i32] }):$in)
/* 42803*/        0, /*End of Scope*/
/* 42804*/      /*SwitchType*/ 32, MVT::i64,// ->42838
/* 42806*/        OPC_Scope, 14, /*->42822*/ // 2 children in Scope
/* 42808*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42810*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 42814*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i64] } (tblockaddress:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tblockaddress:{ *:[i64] }):$in)
/* 42822*/        /*Scope*/ 14, /*->42837*/
/* 42823*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42825*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 42829*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i64] } (tblockaddress:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tblockaddress:{ *:[i64] }):$in)
/* 42837*/        0, /*End of Scope*/
/* 42838*/      0, // EndSwitchType
/* 42839*/    /*SwitchOpcode*/ 69, TARGET_VAL(ISD::TargetJumpTable),// ->42911
/* 42842*/      OPC_MoveParent,
/* 42843*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->42876
/* 42846*/        OPC_Scope, 13, /*->42861*/ // 2 children in Scope
/* 42848*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 42850*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 42853*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i32] } (tjumptable:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, (tjumptable:{ *:[i32] }):$in)
/* 42861*/        /*Scope*/ 13, /*->42875*/
/* 42862*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 42864*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 42867*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i32] } (tjumptable:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu_MM:{ *:[i32] } ZERO:{ *:[i32] }, (tjumptable:{ *:[i32] }):$in)
/* 42875*/        0, /*End of Scope*/
/* 42876*/      /*SwitchType*/ 32, MVT::i64,// ->42910
/* 42878*/        OPC_Scope, 14, /*->42894*/ // 2 children in Scope
/* 42880*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42882*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 42886*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i64] } (tjumptable:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tjumptable:{ *:[i64] }):$in)
/* 42894*/        /*Scope*/ 14, /*->42909*/
/* 42895*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42897*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 42901*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i64] } (tjumptable:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tjumptable:{ *:[i64] }):$in)
/* 42909*/        0, /*End of Scope*/
/* 42910*/      0, // EndSwitchType
/* 42911*/    /*SwitchOpcode*/ 69, TARGET_VAL(ISD::TargetConstantPool),// ->42983
/* 42914*/      OPC_MoveParent,
/* 42915*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->42948
/* 42918*/        OPC_Scope, 13, /*->42933*/ // 2 children in Scope
/* 42920*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 42922*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 42925*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i32] } (tconstpool:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, (tconstpool:{ *:[i32] }):$in)
/* 42933*/        /*Scope*/ 13, /*->42947*/
/* 42934*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 42936*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 42939*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i32] } (tconstpool:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu_MM:{ *:[i32] } ZERO:{ *:[i32] }, (tconstpool:{ *:[i32] }):$in)
/* 42947*/        0, /*End of Scope*/
/* 42948*/      /*SwitchType*/ 32, MVT::i64,// ->42982
/* 42950*/        OPC_Scope, 14, /*->42966*/ // 2 children in Scope
/* 42952*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42954*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 42958*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i64] } (tconstpool:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tconstpool:{ *:[i64] }):$in)
/* 42966*/        /*Scope*/ 14, /*->42981*/
/* 42967*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 42969*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 42973*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i64] } (tconstpool:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tconstpool:{ *:[i64] }):$in)
/* 42981*/        0, /*End of Scope*/
/* 42982*/      0, // EndSwitchType
/* 42983*/    /*SwitchOpcode*/ 69, TARGET_VAL(ISD::TargetGlobalTLSAddress),// ->43055
/* 42986*/      OPC_MoveParent,
/* 42987*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->43020
/* 42990*/        OPC_Scope, 13, /*->43005*/ // 2 children in Scope
/* 42992*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 42994*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 42997*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i32] } (tglobaltlsaddr:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, (tglobaltlsaddr:{ *:[i32] }):$in)
/* 43005*/        /*Scope*/ 13, /*->43019*/
/* 43006*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43008*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43011*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i32] } (tglobaltlsaddr:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu_MM:{ *:[i32] } ZERO:{ *:[i32] }, (tglobaltlsaddr:{ *:[i32] }):$in)
/* 43019*/        0, /*End of Scope*/
/* 43020*/      /*SwitchType*/ 32, MVT::i64,// ->43054
/* 43022*/        OPC_Scope, 14, /*->43038*/ // 2 children in Scope
/* 43024*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 43026*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43030*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i64] } (tglobaltlsaddr:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tglobaltlsaddr:{ *:[i64] }):$in)
/* 43038*/        /*Scope*/ 14, /*->43053*/
/* 43039*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 43041*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43045*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i64] } (tglobaltlsaddr:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tglobaltlsaddr:{ *:[i64] }):$in)
/* 43053*/        0, /*End of Scope*/
/* 43054*/      0, // EndSwitchType
/* 43055*/    /*SwitchOpcode*/ 69, TARGET_VAL(ISD::TargetExternalSymbol),// ->43127
/* 43058*/      OPC_MoveParent,
/* 43059*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->43092
/* 43062*/        OPC_Scope, 13, /*->43077*/ // 2 children in Scope
/* 43064*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43066*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43069*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i32] } (texternalsym:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, (texternalsym:{ *:[i32] }):$in)
/* 43077*/        /*Scope*/ 13, /*->43091*/
/* 43078*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43080*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43083*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i32] } (texternalsym:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu_MM:{ *:[i32] } ZERO:{ *:[i32] }, (texternalsym:{ *:[i32] }):$in)
/* 43091*/        0, /*End of Scope*/
/* 43092*/      /*SwitchType*/ 32, MVT::i64,// ->43126
/* 43094*/        OPC_Scope, 14, /*->43110*/ // 2 children in Scope
/* 43096*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 43098*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43102*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i64] } (texternalsym:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (texternalsym:{ *:[i64] }):$in)
/* 43110*/        /*Scope*/ 14, /*->43125*/
/* 43111*/          OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 43113*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43117*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsLo:{ *:[i64] } (texternalsym:{ *:[i64] }):$in) - Complexity = 6
                    // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (texternalsym:{ *:[i64] }):$in)
/* 43125*/        0, /*End of Scope*/
/* 43126*/      0, // EndSwitchType
/* 43127*/    0, // EndSwitchOpcode
/* 43128*/  /*SwitchOpcode*/ 86, TARGET_VAL(MipsISD::GotHi),// ->43217
/* 43131*/    OPC_RecordChild0, // #0 = $in
/* 43132*/    OPC_MoveChild0,
/* 43133*/    OPC_SwitchOpcode /*2 cases */, 38, TARGET_VAL(ISD::TargetGlobalAddress),// ->43175
/* 43137*/      OPC_MoveParent,
/* 43138*/      OPC_SwitchType /*2 cases */, 22, MVT::i32,// ->43163
/* 43141*/        OPC_Scope, 9, /*->43152*/ // 2 children in Scope
/* 43143*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43145*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (MipsGotHi:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (LUi:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in)
/* 43152*/        /*Scope*/ 9, /*->43162*/
/* 43153*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43155*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi_MM), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (MipsGotHi:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (LUi_MM:{ *:[i32] } (tglobaladdr:{ *:[i32] }):$in)
/* 43162*/        0, /*End of Scope*/
/* 43163*/      /*SwitchType*/ 9, MVT::i64,// ->43174
/* 43165*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43167*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi64), 0,
                      MVT::i64, 1/*#Ops*/, 0, 
                  // Src: (MipsGotHi:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$in) - Complexity = 6
                  // Dst: (LUi64:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$in)
/* 43174*/      0, // EndSwitchType
/* 43175*/    /*SwitchOpcode*/ 38, TARGET_VAL(ISD::TargetExternalSymbol),// ->43216
/* 43178*/      OPC_MoveParent,
/* 43179*/      OPC_SwitchType /*2 cases */, 22, MVT::i32,// ->43204
/* 43182*/        OPC_Scope, 9, /*->43193*/ // 2 children in Scope
/* 43184*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43186*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (MipsGotHi:{ *:[i32] } (texternalsym:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (LUi:{ *:[i32] } (texternalsym:{ *:[i32] }):$in)
/* 43193*/        /*Scope*/ 9, /*->43203*/
/* 43194*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43196*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi_MM), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (MipsGotHi:{ *:[i32] } (texternalsym:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (LUi_MM:{ *:[i32] } (texternalsym:{ *:[i32] }):$in)
/* 43203*/        0, /*End of Scope*/
/* 43204*/      /*SwitchType*/ 9, MVT::i64,// ->43215
/* 43206*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43208*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi64), 0,
                      MVT::i64, 1/*#Ops*/, 0, 
                  // Src: (MipsGotHi:{ *:[i64] } (texternalsym:{ *:[i64] }):$in) - Complexity = 6
                  // Dst: (LUi64:{ *:[i64] } (texternalsym:{ *:[i64] }):$in)
/* 43215*/      0, // EndSwitchType
/* 43216*/    0, // EndSwitchOpcode
/* 43217*/  /*SwitchOpcode*/ 64, TARGET_VAL(MipsISD::TlsHi),// ->43284
/* 43220*/    OPC_RecordChild0, // #0 = $in
/* 43221*/    OPC_MoveChild0,
/* 43222*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetGlobalTLSAddress),
/* 43225*/    OPC_MoveParent,
/* 43226*/    OPC_SwitchType /*2 cases */, 43, MVT::i32,// ->43272
/* 43229*/      OPC_Scope, 9, /*->43240*/ // 3 children in Scope
/* 43231*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43233*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (MipsTlsHi:{ *:[i32] } (tglobaltlsaddr:{ *:[i32] }):$in) - Complexity = 6
                  // Dst: (LUi:{ *:[i32] } (tglobaltlsaddr:{ *:[i32] }):$in)
/* 43240*/      /*Scope*/ 9, /*->43250*/
/* 43241*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43243*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (MipsTlsHi:{ *:[i32] } (tglobaltlsaddr:{ *:[i32] }):$in) - Complexity = 6
                  // Dst: (LUi_MM:{ *:[i32] } (tglobaltlsaddr:{ *:[i32] }):$in)
/* 43250*/      /*Scope*/ 20, /*->43271*/
/* 43251*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 43253*/        OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                      MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 43260*/        OPC_EmitInteger, MVT::i32, 16, 
/* 43263*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SllX16), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (MipsTlsHi:{ *:[i32] } (tglobaltlsaddr:{ *:[i32] }):$in) - Complexity = 6
                  // Dst: (SllX16:{ *:[i32] } (LiRxImmX16:{ *:[i32] } (tglobaltlsaddr:{ *:[i32] }):$in), 16:{ *:[i32] })
/* 43271*/      0, /*End of Scope*/
/* 43272*/    /*SwitchType*/ 9, MVT::i64,// ->43283
/* 43274*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43276*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi64), 0,
                    MVT::i64, 1/*#Ops*/, 0, 
                // Src: (MipsTlsHi:{ *:[i64] } (tglobaltlsaddr:{ *:[i64] }):$in) - Complexity = 6
                // Dst: (LUi64:{ *:[i64] } (tglobaltlsaddr:{ *:[i64] }):$in)
/* 43283*/    0, // EndSwitchType
/* 43284*/  /*SwitchOpcode*/ 35|128,2/*291*/, TARGET_VAL(MipsISD::Wrapper),// ->43579
/* 43288*/    OPC_RecordChild0, // #0 = $gp
/* 43289*/    OPC_RecordChild1, // #1 = $in
/* 43290*/    OPC_MoveChild1,
/* 43291*/    OPC_SwitchOpcode /*6 cases */, 52, TARGET_VAL(ISD::TargetGlobalAddress),// ->43347
/* 43295*/      OPC_MoveParent,
/* 43296*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->43334
/* 43299*/        OPC_Scope, 10, /*->43311*/ // 3 children in Scope
/* 43301*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43303*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (MipsWrapper:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tglobaladdr:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tglobaladdr:{ *:[i32] }):$in)
/* 43311*/        /*Scope*/ 10, /*->43322*/
/* 43312*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 43314*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::AddiuRxRxImmX16), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (MipsWrapper:{ *:[i32] } CPU16Regs:{ *:[i32] }:$gp, (tglobaladdr:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (AddiuRxRxImmX16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$gp, (tglobaladdr:{ *:[i32] }):$in)
/* 43322*/        /*Scope*/ 10, /*->43333*/
/* 43323*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43325*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (MipsWrapper:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tglobaladdr:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tglobaladdr:{ *:[i32] }):$in)
/* 43333*/        0, /*End of Scope*/
/* 43334*/      /*SwitchType*/ 10, MVT::i64,// ->43346
/* 43336*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43338*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsWrapper:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (tglobaladdr:{ *:[i64] }):$in) - Complexity = 6
                  // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (tglobaladdr:{ *:[i64] }):$in)
/* 43346*/      0, // EndSwitchType
/* 43347*/    /*SwitchOpcode*/ 41, TARGET_VAL(ISD::TargetConstantPool),// ->43391
/* 43350*/      OPC_MoveParent,
/* 43351*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->43378
/* 43354*/        OPC_Scope, 10, /*->43366*/ // 2 children in Scope
/* 43356*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43358*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (MipsWrapper:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tconstpool:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tconstpool:{ *:[i32] }):$in)
/* 43366*/        /*Scope*/ 10, /*->43377*/
/* 43367*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43369*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (MipsWrapper:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tconstpool:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tconstpool:{ *:[i32] }):$in)
/* 43377*/        0, /*End of Scope*/
/* 43378*/      /*SwitchType*/ 10, MVT::i64,// ->43390
/* 43380*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43382*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsWrapper:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (tconstpool:{ *:[i64] }):$in) - Complexity = 6
                  // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (tconstpool:{ *:[i64] }):$in)
/* 43390*/      0, // EndSwitchType
/* 43391*/    /*SwitchOpcode*/ 41, TARGET_VAL(ISD::TargetExternalSymbol),// ->43435
/* 43394*/      OPC_MoveParent,
/* 43395*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->43422
/* 43398*/        OPC_Scope, 10, /*->43410*/ // 2 children in Scope
/* 43400*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43402*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (MipsWrapper:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (texternalsym:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (texternalsym:{ *:[i32] }):$in)
/* 43410*/        /*Scope*/ 10, /*->43421*/
/* 43411*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43413*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (MipsWrapper:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (texternalsym:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (texternalsym:{ *:[i32] }):$in)
/* 43421*/        0, /*End of Scope*/
/* 43422*/      /*SwitchType*/ 10, MVT::i64,// ->43434
/* 43424*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43426*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsWrapper:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (texternalsym:{ *:[i64] }):$in) - Complexity = 6
                  // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (texternalsym:{ *:[i64] }):$in)
/* 43434*/      0, // EndSwitchType
/* 43435*/    /*SwitchOpcode*/ 41, TARGET_VAL(ISD::TargetBlockAddress),// ->43479
/* 43438*/      OPC_MoveParent,
/* 43439*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->43466
/* 43442*/        OPC_Scope, 10, /*->43454*/ // 2 children in Scope
/* 43444*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43446*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (MipsWrapper:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tblockaddress:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tblockaddress:{ *:[i32] }):$in)
/* 43454*/        /*Scope*/ 10, /*->43465*/
/* 43455*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43457*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (MipsWrapper:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tblockaddress:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tblockaddress:{ *:[i32] }):$in)
/* 43465*/        0, /*End of Scope*/
/* 43466*/      /*SwitchType*/ 10, MVT::i64,// ->43478
/* 43468*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43470*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsWrapper:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (tblockaddress:{ *:[i64] }):$in) - Complexity = 6
                  // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (tblockaddress:{ *:[i64] }):$in)
/* 43478*/      0, // EndSwitchType
/* 43479*/    /*SwitchOpcode*/ 41, TARGET_VAL(ISD::TargetJumpTable),// ->43523
/* 43482*/      OPC_MoveParent,
/* 43483*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->43510
/* 43486*/        OPC_Scope, 10, /*->43498*/ // 2 children in Scope
/* 43488*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43490*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (MipsWrapper:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tjumptable:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tjumptable:{ *:[i32] }):$in)
/* 43498*/        /*Scope*/ 10, /*->43509*/
/* 43499*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43501*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (MipsWrapper:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tjumptable:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tjumptable:{ *:[i32] }):$in)
/* 43509*/        0, /*End of Scope*/
/* 43510*/      /*SwitchType*/ 10, MVT::i64,// ->43522
/* 43512*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43514*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsWrapper:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (tjumptable:{ *:[i64] }):$in) - Complexity = 6
                  // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (tjumptable:{ *:[i64] }):$in)
/* 43522*/      0, // EndSwitchType
/* 43523*/    /*SwitchOpcode*/ 52, TARGET_VAL(ISD::TargetGlobalTLSAddress),// ->43578
/* 43526*/      OPC_MoveParent,
/* 43527*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->43565
/* 43530*/        OPC_Scope, 10, /*->43542*/ // 3 children in Scope
/* 43532*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43534*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (MipsWrapper:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tglobaltlsaddr:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tglobaltlsaddr:{ *:[i32] }):$in)
/* 43542*/        /*Scope*/ 10, /*->43553*/
/* 43543*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 43545*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::AddiuRxRxImmX16), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (MipsWrapper:{ *:[i32] } CPU16Regs:{ *:[i32] }:$gp, (tglobaltlsaddr:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (AddiuRxRxImmX16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$gp, (tglobaltlsaddr:{ *:[i32] }):$in)
/* 43553*/        /*Scope*/ 10, /*->43564*/
/* 43554*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43556*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1, 
                    // Src: (MipsWrapper:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tglobaltlsaddr:{ *:[i32] }):$in) - Complexity = 6
                    // Dst: (ADDiu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$gp, (tglobaltlsaddr:{ *:[i32] }):$in)
/* 43564*/        0, /*End of Scope*/
/* 43565*/      /*SwitchType*/ 10, MVT::i64,// ->43577
/* 43567*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43569*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsWrapper:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (tglobaltlsaddr:{ *:[i64] }):$in) - Complexity = 6
                  // Dst: (DADDiu:{ *:[i64] } GPR64:{ *:[i64] }:$gp, (tglobaltlsaddr:{ *:[i64] }):$in)
/* 43577*/      0, // EndSwitchType
/* 43578*/    0, // EndSwitchOpcode
/* 43579*/  /*SwitchOpcode*/ 6|128,1/*134*/, TARGET_VAL(MipsISD::FPCmp),// ->43717
/* 43583*/    OPC_RecordChild0, // #0 = $fs
/* 43584*/    OPC_Scope, 39, /*->43625*/ // 3 children in Scope
/* 43586*/      OPC_CheckChild0Type, MVT::f32,
/* 43588*/      OPC_RecordChild1, // #1 = $ft
/* 43589*/      OPC_RecordChild2, // #2 = $cond
/* 43590*/      OPC_MoveChild2,
/* 43591*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 43594*/      OPC_MoveParent,
/* 43595*/      OPC_Scope, 13, /*->43610*/ // 2 children in Scope
/* 43597*/        OPC_CheckPatternPredicate, 66, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 43599*/        OPC_EmitConvertToTarget, 2,
/* 43601*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCMP_S32), 0|OPFL_GlueOutput,
                      MVT::i32, 3/*#Ops*/, 0, 1, 3, 
                  // Src: (MipsFPCmp FGR32:{ *:[f32] }:$fs, FGR32:{ *:[f32] }:$ft, (imm:{ *:[i32] }):$cond) - Complexity = 6
                  // Dst: (FCMP_S32:{ *:[i32] } FGR32:{ *:[f32] }:$fs, FGR32:{ *:[f32] }:$ft, (imm:{ *:[i32] }):$cond)
/* 43610*/      /*Scope*/ 13, /*->43624*/
/* 43611*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 43613*/        OPC_EmitConvertToTarget, 2,
/* 43615*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCMP_S32_MM), 0|OPFL_GlueOutput,
                      MVT::i32, 3/*#Ops*/, 0, 1, 3, 
                  // Src: (MipsFPCmp FGR32:{ *:[f32] }:$fs, FGR32:{ *:[f32] }:$ft, (imm:{ *:[i32] }):$cond) - Complexity = 6
                  // Dst: (FCMP_S32_MM:{ *:[i32] } FGR32:{ *:[f32] }:$fs, FGR32:{ *:[f32] }:$ft, (imm:{ *:[i32] }):$cond)
/* 43624*/      0, /*End of Scope*/
/* 43625*/    /*Scope*/ 53, /*->43679*/
/* 43626*/      OPC_CheckChild0Type, MVT::f64,
/* 43628*/      OPC_RecordChild1, // #1 = $ft
/* 43629*/      OPC_RecordChild2, // #2 = $cond
/* 43630*/      OPC_MoveChild2,
/* 43631*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 43634*/      OPC_MoveParent,
/* 43635*/      OPC_Scope, 13, /*->43650*/ // 3 children in Scope
/* 43637*/        OPC_CheckPatternPredicate, 85, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 43639*/        OPC_EmitConvertToTarget, 2,
/* 43641*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCMP_D32), 0|OPFL_GlueOutput,
                      MVT::i32, 3/*#Ops*/, 0, 1, 3, 
                  // Src: (MipsFPCmp AFGR64:{ *:[f64] }:$fs, AFGR64:{ *:[f64] }:$ft, (imm:{ *:[i32] }):$cond) - Complexity = 6
                  // Dst: (FCMP_D32:{ *:[i32] } AFGR64:{ *:[f64] }:$fs, AFGR64:{ *:[f64] }:$ft, (imm:{ *:[i32] }):$cond)
/* 43650*/      /*Scope*/ 13, /*->43664*/
/* 43651*/        OPC_CheckPatternPredicate, 86, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 43653*/        OPC_EmitConvertToTarget, 2,
/* 43655*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCMP_D64), 0|OPFL_GlueOutput,
                      MVT::i32, 3/*#Ops*/, 0, 1, 3, 
                  // Src: (MipsFPCmp FGR64:{ *:[f64] }:$fs, FGR64:{ *:[f64] }:$ft, (imm:{ *:[i32] }):$cond) - Complexity = 6
                  // Dst: (FCMP_D64:{ *:[i32] } FGR64:{ *:[f64] }:$fs, FGR64:{ *:[f64] }:$ft, (imm:{ *:[i32] }):$cond)
/* 43664*/      /*Scope*/ 13, /*->43678*/
/* 43665*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 43667*/        OPC_EmitConvertToTarget, 2,
/* 43669*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FCMP_D32_MM), 0|OPFL_GlueOutput,
                      MVT::i32, 3/*#Ops*/, 0, 1, 3, 
                  // Src: (MipsFPCmp AFGR64:{ *:[f64] }:$fs, AFGR64:{ *:[f64] }:$ft, (imm:{ *:[i32] }):$cond) - Complexity = 6
                  // Dst: (FCMP_D32_MM:{ *:[i32] } AFGR64:{ *:[f64] }:$fs, AFGR64:{ *:[f64] }:$ft, (imm:{ *:[i32] }):$cond)
/* 43678*/      0, /*End of Scope*/
/* 43679*/    /*Scope*/ 36, /*->43716*/
/* 43680*/      OPC_CheckChild0Type, MVT::f16,
/* 43682*/      OPC_RecordChild1, // #1 = $wt
/* 43683*/      OPC_RecordChild2, // #2 = $cond
/* 43684*/      OPC_MoveChild2,
/* 43685*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 43688*/      OPC_MoveParent,
/* 43689*/      OPC_CheckPatternPredicate, 87, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 43691*/      OPC_EmitNode1, TARGET_VAL(Mips::MSA_FP_EXTEND_W_PSEUDO), 0,
                    MVT::f32, 1/*#Ops*/, 0,  // Results = #3
/* 43698*/      OPC_EmitNode1, TARGET_VAL(Mips::MSA_FP_EXTEND_W_PSEUDO), 0,
                    MVT::f32, 1/*#Ops*/, 1,  // Results = #4
/* 43705*/      OPC_EmitConvertToTarget, 2,
/* 43707*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FCMP_S32), 0|OPFL_GlueOutput,
                    MVT::i32, 3/*#Ops*/, 3, 4, 5, 
                // Src: (MipsFPCmp MSA128F16:{ *:[f16] }:$ws, MSA128F16:{ *:[f16] }:$wt, (imm:{ *:[i32] }):$cond) - Complexity = 6
                // Dst: (FCMP_S32:{ *:[i32] } (MSA_FP_EXTEND_W_PSEUDO:{ *:[f32] } MSA128F16:{ *:[f16] }:$ws), (MSA_FP_EXTEND_W_PSEUDO:{ *:[f32] } MSA128F16:{ *:[f16] }:$wt), (imm:{ *:[i32] }):$cond)
/* 43716*/    0, /*End of Scope*/
/* 43717*/  /*SwitchOpcode*/ 35, TARGET_VAL(MipsISD::ExtractElementF64),// ->43755
/* 43720*/    OPC_RecordChild0, // #0 = $src
/* 43721*/    OPC_RecordChild1, // #1 = $n
/* 43722*/    OPC_MoveChild1,
/* 43723*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 43726*/    OPC_MoveParent,
/* 43727*/    OPC_Scope, 12, /*->43741*/ // 2 children in Scope
/* 43729*/      OPC_CheckPatternPredicate, 88, // (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMips16Mode())
/* 43731*/      OPC_EmitConvertToTarget, 1,
/* 43733*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ExtractElementF64), 0,
                    MVT::i32, 2/*#Ops*/, 0, 2, 
                // Src: (MipsExtractElementF64:{ *:[i32] } AFGR64Opnd:{ *:[f64] }:$src, (imm:{ *:[i32] }):$n) - Complexity = 6
                // Dst: (ExtractElementF64:{ *:[i32] } AFGR64Opnd:{ *:[f64] }:$src, (imm:{ *:[i32] }):$n)
/* 43741*/    /*Scope*/ 12, /*->43754*/
/* 43742*/      OPC_CheckPatternPredicate, 89, // (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMips16Mode())
/* 43744*/      OPC_EmitConvertToTarget, 1,
/* 43746*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ExtractElementF64_64), 0,
                    MVT::i32, 2/*#Ops*/, 0, 2, 
                // Src: (MipsExtractElementF64:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$src, (imm:{ *:[i32] }):$n) - Complexity = 6
                // Dst: (ExtractElementF64_64:{ *:[i32] } FGR64Opnd:{ *:[f64] }:$src, (imm:{ *:[i32] }):$n)
/* 43754*/    0, /*End of Scope*/
/* 43755*/  /*SwitchOpcode*/ 79, TARGET_VAL(MipsISD::Highest),// ->43837
/* 43758*/    OPC_RecordChild0, // #0 = $in
/* 43759*/    OPC_MoveChild0,
/* 43760*/    OPC_SwitchOpcode /*5 cases */, 12, TARGET_VAL(ISD::TargetGlobalAddress),// ->43776
/* 43764*/      OPC_MoveParent,
/* 43765*/      OPC_CheckType, MVT::i64,
/* 43767*/      OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 43769*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi64), 0,
                    MVT::i64, 1/*#Ops*/, 0, 
                // Src: (MipsHighest:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$in) - Complexity = 6
                // Dst: (LUi64:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$in)
/* 43776*/    /*SwitchOpcode*/ 12, TARGET_VAL(ISD::TargetBlockAddress),// ->43791
/* 43779*/      OPC_MoveParent,
/* 43780*/      OPC_CheckType, MVT::i64,
/* 43782*/      OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 43784*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi64), 0,
                    MVT::i64, 1/*#Ops*/, 0, 
                // Src: (MipsHighest:{ *:[i64] } (tblockaddress:{ *:[i64] }):$in) - Complexity = 6
                // Dst: (LUi64:{ *:[i64] } (tblockaddress:{ *:[i64] }):$in)
/* 43791*/    /*SwitchOpcode*/ 12, TARGET_VAL(ISD::TargetJumpTable),// ->43806
/* 43794*/      OPC_MoveParent,
/* 43795*/      OPC_CheckType, MVT::i64,
/* 43797*/      OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 43799*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi64), 0,
                    MVT::i64, 1/*#Ops*/, 0, 
                // Src: (MipsHighest:{ *:[i64] } (tjumptable:{ *:[i64] }):$in) - Complexity = 6
                // Dst: (LUi64:{ *:[i64] } (tjumptable:{ *:[i64] }):$in)
/* 43806*/    /*SwitchOpcode*/ 12, TARGET_VAL(ISD::TargetConstantPool),// ->43821
/* 43809*/      OPC_MoveParent,
/* 43810*/      OPC_CheckType, MVT::i64,
/* 43812*/      OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 43814*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi64), 0,
                    MVT::i64, 1/*#Ops*/, 0, 
                // Src: (MipsHighest:{ *:[i64] } (tconstpool:{ *:[i64] }):$in) - Complexity = 6
                // Dst: (LUi64:{ *:[i64] } (tconstpool:{ *:[i64] }):$in)
/* 43821*/    /*SwitchOpcode*/ 12, TARGET_VAL(ISD::TargetExternalSymbol),// ->43836
/* 43824*/      OPC_MoveParent,
/* 43825*/      OPC_CheckType, MVT::i64,
/* 43827*/      OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 43829*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi64), 0,
                    MVT::i64, 1/*#Ops*/, 0, 
                // Src: (MipsHighest:{ *:[i64] } (texternalsym:{ *:[i64] }):$in) - Complexity = 6
                // Dst: (LUi64:{ *:[i64] } (texternalsym:{ *:[i64] }):$in)
/* 43836*/    0, // EndSwitchOpcode
/* 43837*/  /*SwitchOpcode*/ 104, TARGET_VAL(MipsISD::Higher),// ->43944
/* 43840*/    OPC_RecordChild0, // #0 = $in
/* 43841*/    OPC_MoveChild0,
/* 43842*/    OPC_SwitchOpcode /*5 cases */, 17, TARGET_VAL(ISD::TargetGlobalAddress),// ->43863
/* 43846*/      OPC_MoveParent,
/* 43847*/      OPC_CheckType, MVT::i64,
/* 43849*/      OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 43851*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43855*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                    MVT::i64, 2/*#Ops*/, 1, 0, 
                // Src: (MipsHigher:{ *:[i64] } (tglobaladdr:{ *:[i64] }):$in) - Complexity = 6
                // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tglobaladdr:{ *:[i64] }):$in)
/* 43863*/    /*SwitchOpcode*/ 17, TARGET_VAL(ISD::TargetBlockAddress),// ->43883
/* 43866*/      OPC_MoveParent,
/* 43867*/      OPC_CheckType, MVT::i64,
/* 43869*/      OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 43871*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43875*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                    MVT::i64, 2/*#Ops*/, 1, 0, 
                // Src: (MipsHigher:{ *:[i64] } (tblockaddress:{ *:[i64] }):$in) - Complexity = 6
                // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tblockaddress:{ *:[i64] }):$in)
/* 43883*/    /*SwitchOpcode*/ 17, TARGET_VAL(ISD::TargetJumpTable),// ->43903
/* 43886*/      OPC_MoveParent,
/* 43887*/      OPC_CheckType, MVT::i64,
/* 43889*/      OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 43891*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43895*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                    MVT::i64, 2/*#Ops*/, 1, 0, 
                // Src: (MipsHigher:{ *:[i64] } (tjumptable:{ *:[i64] }):$in) - Complexity = 6
                // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tjumptable:{ *:[i64] }):$in)
/* 43903*/    /*SwitchOpcode*/ 17, TARGET_VAL(ISD::TargetConstantPool),// ->43923
/* 43906*/      OPC_MoveParent,
/* 43907*/      OPC_CheckType, MVT::i64,
/* 43909*/      OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 43911*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43915*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                    MVT::i64, 2/*#Ops*/, 1, 0, 
                // Src: (MipsHigher:{ *:[i64] } (tconstpool:{ *:[i64] }):$in) - Complexity = 6
                // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (tconstpool:{ *:[i64] }):$in)
/* 43923*/    /*SwitchOpcode*/ 17, TARGET_VAL(ISD::TargetExternalSymbol),// ->43943
/* 43926*/      OPC_MoveParent,
/* 43927*/      OPC_CheckType, MVT::i64,
/* 43929*/      OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode())
/* 43931*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43935*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                    MVT::i64, 2/*#Ops*/, 1, 0, 
                // Src: (MipsHigher:{ *:[i64] } (texternalsym:{ *:[i64] }):$in) - Complexity = 6
                // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (texternalsym:{ *:[i64] }):$in)
/* 43943*/    0, // EndSwitchOpcode
/* 43944*/  /*SwitchOpcode*/ 88|128,3/*472*/, TARGET_VAL(ISD::Constant),// ->44420
/* 43948*/    OPC_RecordNode, // #0 = $imm
/* 43949*/    OPC_Scope, 18, /*->43969*/ // 18 children in Scope
/* 43951*/      OPC_CheckPredicate, 52, // Predicate_LUiPred
/* 43953*/      OPC_CheckType, MVT::i32,
/* 43955*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43957*/      OPC_EmitConvertToTarget, 0,
/* 43959*/      OPC_EmitNodeXForm, 5, 1, // HI16
/* 43962*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi), 0,
                    MVT::i32, 1/*#Ops*/, 2, 
                // Src: (imm:{ *:[i32] })<<P:Predicate_LUiPred>>:$imm - Complexity = 4
                // Dst: (LUi:{ *:[i32] } (HI16:{ *:[i32] } (imm:{ *:[i32] }):$imm))
/* 43969*/    /*Scope*/ 19, /*->43989*/
/* 43970*/      OPC_CheckPredicate, 53, // Predicate_ORiPred
/* 43972*/      OPC_CheckType, MVT::i32,
/* 43974*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43976*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43979*/      OPC_EmitConvertToTarget, 0,
/* 43981*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ORi), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2, 
                // Src: (imm:{ *:[i32] })<<P:Predicate_ORiPred>><<X:LO16>>:$imm - Complexity = 4
                // Dst: (ORi:{ *:[i32] } ZERO:{ *:[i32] }, (imm:{ *:[i32] }):$imm)
/* 43989*/    /*Scope*/ 19, /*->44009*/
/* 43990*/      OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 43992*/      OPC_CheckType, MVT::i32,
/* 43994*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43996*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43999*/      OPC_EmitConvertToTarget, 0,
/* 44001*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2, 
                // Src: (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm - Complexity = 4
                // Dst: (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, (imm:{ *:[i32] }):$imm)
/* 44009*/    /*Scope*/ 18, /*->44028*/
/* 44010*/      OPC_CheckPredicate, 52, // Predicate_LUiPred
/* 44012*/      OPC_CheckType, MVT::i64,
/* 44014*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44016*/      OPC_EmitConvertToTarget, 0,
/* 44018*/      OPC_EmitNodeXForm, 5, 1, // HI16
/* 44021*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi64), 0,
                    MVT::i64, 1/*#Ops*/, 2, 
                // Src: (imm:{ *:[i64] })<<P:Predicate_LUiPred>>:$imm - Complexity = 4
                // Dst: (LUi64:{ *:[i64] } (HI16:{ *:[i64] } (imm:{ *:[i64] }):$imm))
/* 44028*/    /*Scope*/ 20, /*->44049*/
/* 44029*/      OPC_CheckPredicate, 53, // Predicate_ORiPred
/* 44031*/      OPC_CheckType, MVT::i64,
/* 44033*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44035*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44039*/      OPC_EmitConvertToTarget, 0,
/* 44041*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ORi64), 0,
                    MVT::i64, 2/*#Ops*/, 1, 2, 
                // Src: (imm:{ *:[i64] })<<P:Predicate_ORiPred>><<X:LO16>>:$imm - Complexity = 4
                // Dst: (ORi64:{ *:[i64] } ZERO_64:{ *:[i64] }, (imm:{ *:[i64] }):$imm)
/* 44049*/    /*Scope*/ 20, /*->44070*/
/* 44050*/      OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 44052*/      OPC_CheckType, MVT::i64,
/* 44054*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44056*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44060*/      OPC_EmitConvertToTarget, 0,
/* 44062*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DADDiu), 0,
                    MVT::i64, 2/*#Ops*/, 1, 2, 
                // Src: (imm:{ *:[i64] })<<P:Predicate_immSExt16>>:$imm - Complexity = 4
                // Dst: (DADDiu:{ *:[i64] } ZERO_64:{ *:[i64] }, (imm:{ *:[i64] }):$imm)
/* 44070*/    /*Scope*/ 18, /*->44089*/
/* 44071*/      OPC_CheckPredicate, 18, // Predicate_immZExt16
/* 44073*/      OPC_CheckType, MVT::i32,
/* 44075*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 44077*/      OPC_EmitConvertToTarget, 0,
/* 44079*/      OPC_EmitNodeXForm, 3, 1, // LO16
/* 44082*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::LiRxImmX16), 0,
                    MVT::i32, 1/*#Ops*/, 2, 
                // Src: (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$in - Complexity = 4
                // Dst: (LiRxImmX16:{ *:[i32] } (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$in))
/* 44089*/    /*Scope*/ 15, /*->44105*/
/* 44090*/      OPC_CheckPredicate, 54, // Predicate_immLi16
/* 44092*/      OPC_CheckType, MVT::i32,
/* 44094*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44096*/      OPC_EmitConvertToTarget, 0,
/* 44098*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::LI16_MM), 0,
                    MVT::i32, 1/*#Ops*/, 1, 
                // Src: (imm:{ *:[i32] })<<P:Predicate_immLi16>>:$imm - Complexity = 4
                // Dst: (LI16_MM:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immLi16>>:$imm)
/* 44105*/    /*Scope*/ 18, /*->44124*/
/* 44106*/      OPC_CheckPredicate, 52, // Predicate_LUiPred
/* 44108*/      OPC_CheckType, MVT::i32,
/* 44110*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44112*/      OPC_EmitConvertToTarget, 0,
/* 44114*/      OPC_EmitNodeXForm, 5, 1, // HI16
/* 44117*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::LUi_MM), 0,
                    MVT::i32, 1/*#Ops*/, 2, 
                // Src: (imm:{ *:[i32] })<<P:Predicate_LUiPred>>:$imm - Complexity = 4
                // Dst: (LUi_MM:{ *:[i32] } (HI16:{ *:[i32] } (imm:{ *:[i32] }):$imm))
/* 44124*/    /*Scope*/ 19, /*->44144*/
/* 44125*/      OPC_CheckPredicate, 53, // Predicate_ORiPred
/* 44127*/      OPC_CheckType, MVT::i32,
/* 44129*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44131*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44134*/      OPC_EmitConvertToTarget, 0,
/* 44136*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ORi_MM), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2, 
                // Src: (imm:{ *:[i32] })<<P:Predicate_ORiPred>><<X:LO16>>:$imm - Complexity = 4
                // Dst: (ORi_MM:{ *:[i32] } ZERO:{ *:[i32] }, (imm:{ *:[i32] }):$imm)
/* 44144*/    /*Scope*/ 19, /*->44164*/
/* 44145*/      OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 44147*/      OPC_CheckType, MVT::i32,
/* 44149*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44151*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44154*/      OPC_EmitConvertToTarget, 0,
/* 44156*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu_MM), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2, 
                // Src: (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm - Complexity = 4
                // Dst: (ADDiu_MM:{ *:[i32] } ZERO:{ *:[i32] }, (imm:{ *:[i32] }):$imm)
/* 44164*/    /*Scope*/ 22, /*->44187*/
/* 44165*/      OPC_CheckPredicate, 18, // Predicate_immZExt16
/* 44167*/      OPC_CheckType, MVT::i32,
/* 44169*/      OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 44171*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44174*/      OPC_EmitConvertToTarget, 0,
/* 44176*/      OPC_EmitNodeXForm, 3, 2, // LO16
/* 44179*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::XORI_MMR6), 0,
                    MVT::i32, 2/*#Ops*/, 1, 3, 
                // Src: (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm - Complexity = 4
                // Dst: (XORI_MMR6:{ *:[i32] } ZERO:{ *:[i32] }, (LO16:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt16>>:$imm))
/* 44187*/    /*Scope*/ 62, /*->44250*/
/* 44188*/      OPC_CheckPredicate, 55, // Predicate_LUiORiPred
/* 44190*/      OPC_SwitchType /*2 cases */, 27, MVT::i32,// ->44220
/* 44193*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44195*/        OPC_EmitConvertToTarget, 0,
/* 44197*/        OPC_EmitNodeXForm, 5, 1, // HI16
/* 44200*/        OPC_EmitNode1, TARGET_VAL(Mips::LUi), 0,
                      MVT::i32, 1/*#Ops*/, 2,  // Results = #3
/* 44207*/        OPC_EmitConvertToTarget, 0,
/* 44209*/        OPC_EmitNodeXForm, 3, 4, // LO16
/* 44212*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ORi), 0,
                      MVT::i32, 2/*#Ops*/, 3, 5, 
                  // Src: (imm:{ *:[i32] })<<P:Predicate_LUiORiPred>>:$imm - Complexity = 4
                  // Dst: (ORi:{ *:[i32] } (LUi:{ *:[i32] } (HI16:{ *:[i32] } (imm:{ *:[i32] }):$imm)), (LO16:{ *:[i32] } (imm:{ *:[i32] }):$imm))
/* 44220*/      /*SwitchType*/ 27, MVT::i64,// ->44249
/* 44222*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44224*/        OPC_EmitConvertToTarget, 0,
/* 44226*/        OPC_EmitNodeXForm, 5, 1, // HI16
/* 44229*/        OPC_EmitNode1, TARGET_VAL(Mips::LUi64), 0,
                      MVT::i64, 1/*#Ops*/, 2,  // Results = #3
/* 44236*/        OPC_EmitConvertToTarget, 0,
/* 44238*/        OPC_EmitNodeXForm, 3, 4, // LO16
/* 44241*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ORi64), 0,
                      MVT::i64, 2/*#Ops*/, 3, 5, 
                  // Src: (imm:{ *:[i64] })<<P:Predicate_LUiORiPred>>:$imm - Complexity = 4
                  // Dst: (ORi64:{ *:[i64] } (LUi64:{ *:[i64] } (HI16:{ *:[i64] } (imm:{ *:[i64] }):$imm)), (LO16:{ *:[i64] } (imm:{ *:[i64] }):$imm))
/* 44249*/      0, // EndSwitchType
/* 44250*/    /*Scope*/ 34, /*->44285*/
/* 44251*/      OPC_CheckPredicate, 56, // Predicate_immZExt32Low16Zero
/* 44253*/      OPC_CheckType, MVT::i64,
/* 44255*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44257*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44261*/      OPC_EmitConvertToTarget, 0,
/* 44263*/      OPC_EmitNodeXForm, 5, 2, // HI16
/* 44266*/      OPC_EmitNode1, TARGET_VAL(Mips::ORi64), 0,
                    MVT::i64, 2/*#Ops*/, 1, 3,  // Results = #4
/* 44274*/      OPC_EmitInteger, MVT::i32, 16, 
/* 44277*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DSLL), 0,
                    MVT::i64, 2/*#Ops*/, 4, 5, 
                // Src: (imm:{ *:[i64] })<<P:Predicate_immZExt32Low16Zero>>:$imm - Complexity = 4
                // Dst: (DSLL:{ *:[i64] } (ORi64:{ *:[i64] } ZERO_64:{ *:[i64] }, (HI16:{ *:[i64] } (imm:{ *:[i64] }):$imm)), 16:{ *:[i32] })
/* 44285*/    /*Scope*/ 26, /*->44312*/
/* 44286*/      OPC_CheckPredicate, 16, // Predicate_immSExt16
/* 44288*/      OPC_CheckType, MVT::i32,
/* 44290*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 44292*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44295*/      OPC_EmitNode1, TARGET_VAL(Mips::MoveR3216), 0,
                    MVT::i32, 1/*#Ops*/, 1,  // Results = #2
/* 44302*/      OPC_EmitConvertToTarget, 0,
/* 44304*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AddiuRxRxImmX16), 0,
                    MVT::i32, 2/*#Ops*/, 2, 3, 
                // Src: (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$in - Complexity = 4
                // Dst: (AddiuRxRxImmX16:{ *:[i32] } (MoveR3216:{ *:[i32] } ZERO:{ *:[i32] }), (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$in)
/* 44312*/    /*Scope*/ 31, /*->44344*/
/* 44313*/      OPC_CheckPredicate, 55, // Predicate_LUiORiPred
/* 44315*/      OPC_CheckType, MVT::i32,
/* 44317*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44319*/      OPC_EmitConvertToTarget, 0,
/* 44321*/      OPC_EmitNodeXForm, 5, 1, // HI16
/* 44324*/      OPC_EmitNode1, TARGET_VAL(Mips::LUi_MM), 0,
                    MVT::i32, 1/*#Ops*/, 2,  // Results = #3
/* 44331*/      OPC_EmitConvertToTarget, 0,
/* 44333*/      OPC_EmitNodeXForm, 3, 4, // LO16
/* 44336*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ORi_MM), 0,
                    MVT::i32, 2/*#Ops*/, 3, 5, 
                // Src: (imm:{ *:[i32] })<<P:Predicate_LUiORiPred>>:$imm - Complexity = 4
                // Dst: (ORi_MM:{ *:[i32] } (LUi_MM:{ *:[i32] } (HI16:{ *:[i32] } (imm:{ *:[i32] }):$imm)), (LO16:{ *:[i32] } (imm:{ *:[i32] }):$imm))
/* 44344*/    /*Scope*/ 47, /*->44392*/
/* 44345*/      OPC_CheckPredicate, 57, // Predicate_immZExt32
/* 44347*/      OPC_CheckType, MVT::i64,
/* 44349*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44351*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44355*/      OPC_EmitConvertToTarget, 0,
/* 44357*/      OPC_EmitNodeXForm, 5, 2, // HI16
/* 44360*/      OPC_EmitNode1, TARGET_VAL(Mips::ORi64), 0,
                    MVT::i64, 2/*#Ops*/, 1, 3,  // Results = #4
/* 44368*/      OPC_EmitInteger, MVT::i32, 16, 
/* 44371*/      OPC_EmitNode1, TARGET_VAL(Mips::DSLL), 0,
                    MVT::i64, 2/*#Ops*/, 4, 5,  // Results = #6
/* 44379*/      OPC_EmitConvertToTarget, 0,
/* 44381*/      OPC_EmitNodeXForm, 3, 7, // LO16
/* 44384*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ORi64), 0,
                    MVT::i64, 2/*#Ops*/, 6, 8, 
                // Src: (imm:{ *:[i64] })<<P:Predicate_immZExt32>>:$imm - Complexity = 4
                // Dst: (ORi64:{ *:[i64] } (DSLL:{ *:[i64] } (ORi64:{ *:[i64] } ZERO_64:{ *:[i64] }, (HI16:{ *:[i64] } (imm:{ *:[i64] }):$imm)), 16:{ *:[i32] }), (LO16:{ *:[i64] } (imm:{ *:[i64] }):$imm))
/* 44392*/    /*Scope*/ 26, /*->44419*/
/* 44393*/      OPC_CheckType, MVT::i32,
/* 44395*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 44397*/      OPC_EmitConvertToTarget, 0,
/* 44399*/      OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 44411*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::LwConstant32), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2, 
                // Src: (imm:{ *:[i32] }):$imm - Complexity = 3
                // Dst: (LwConstant32:{ *:[i32] } (imm:{ *:[i32] }):$imm, -1:{ *:[i32] })
/* 44419*/    0, /*End of Scope*/
/* 44420*/  /*SwitchOpcode*/ 124, TARGET_VAL(ISD::BRIND),// ->44547
/* 44423*/    OPC_RecordNode, // #0 = 'brind' chained node
/* 44424*/    OPC_RecordChild1, // #1 = $rs
/* 44425*/    OPC_Scope, 74, /*->44501*/ // 2 children in Scope
/* 44427*/      OPC_CheckChild1Type, MVT::i32,
/* 44429*/      OPC_Scope, 9, /*->44440*/ // 7 children in Scope
/* 44431*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 44433*/        OPC_EmitMergeInputChains1_0,
/* 44434*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::JrcRx16), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind CPU16Regs:{ *:[i32] }:$rs) - Complexity = 4
                  // Dst: (JrcRx16 CPU16Regs:{ *:[i32] }:$rs)
/* 44440*/      /*Scope*/ 9, /*->44450*/
/* 44441*/        OPC_CheckPatternPredicate, 77, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 44443*/        OPC_EmitMergeInputChains1_0,
/* 44444*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectBranch), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectBranch GPR32Opnd:{ *:[i32] }:$rs)
/* 44450*/      /*Scope*/ 9, /*->44460*/
/* 44451*/        OPC_CheckPatternPredicate, 90, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard())
/* 44453*/        OPC_EmitMergeInputChains1_0,
/* 44454*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectHazardBranch), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectHazardBranch GPR32Opnd:{ *:[i32] }:$rs)
/* 44460*/      /*Scope*/ 9, /*->44470*/
/* 44461*/        OPC_CheckPatternPredicate, 79, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode())
/* 44463*/        OPC_EmitMergeInputChains1_0,
/* 44464*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectBranchR6), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectBranchR6 GPR32Opnd:{ *:[i32] }:$rs)
/* 44470*/      /*Scope*/ 9, /*->44480*/
/* 44471*/        OPC_CheckPatternPredicate, 80, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 44473*/        OPC_EmitMergeInputChains1_0,
/* 44474*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndrectHazardBranchR6), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndrectHazardBranchR6 GPR32Opnd:{ *:[i32] }:$rs)
/* 44480*/      /*Scope*/ 9, /*->44490*/
/* 44481*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 44483*/        OPC_EmitMergeInputChains1_0,
/* 44484*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectBranch_MM), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectBranch_MM GPR32Opnd:{ *:[i32] }:$rs)
/* 44490*/      /*Scope*/ 9, /*->44500*/
/* 44491*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 44493*/        OPC_EmitMergeInputChains1_0,
/* 44494*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectBranch_MMR6), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectBranch_MMR6 GPR32Opnd:{ *:[i32] }:$rs)
/* 44500*/      0, /*End of Scope*/
/* 44501*/    /*Scope*/ 44, /*->44546*/
/* 44502*/      OPC_CheckChild1Type, MVT::i64,
/* 44504*/      OPC_Scope, 9, /*->44515*/ // 4 children in Scope
/* 44506*/        OPC_CheckPatternPredicate, 91, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 44508*/        OPC_EmitMergeInputChains1_0,
/* 44509*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectBranch64), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectBranch64 GPR64Opnd:{ *:[i64] }:$rs)
/* 44515*/      /*Scope*/ 9, /*->44525*/
/* 44516*/        OPC_CheckPatternPredicate, 82, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard())
/* 44518*/        OPC_EmitMergeInputChains1_0,
/* 44519*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectHazardBranch64), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectHazardBranch64 GPR64Opnd:{ *:[i64] }:$rs)
/* 44525*/      /*Scope*/ 9, /*->44535*/
/* 44526*/        OPC_CheckPatternPredicate, 83, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode())
/* 44528*/        OPC_EmitMergeInputChains1_0,
/* 44529*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectBranch64R6), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectBranch64R6 GPR64Opnd:{ *:[i64] }:$rs)
/* 44535*/      /*Scope*/ 9, /*->44545*/
/* 44536*/        OPC_CheckPatternPredicate, 84, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 44538*/        OPC_EmitMergeInputChains1_0,
/* 44539*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndrectHazardBranch64R6), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndrectHazardBranch64R6 GPR64Opnd:{ *:[i64] }:$rs)
/* 44545*/      0, /*End of Scope*/
/* 44546*/    0, /*End of Scope*/
/* 44547*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_ADD),// ->44617
/* 44550*/    OPC_RecordMemRef,
/* 44551*/    OPC_RecordNode, // #0 = 'atomic_load_add' chained node
/* 44552*/    OPC_RecordChild1, // #1 = $ptr
/* 44553*/    OPC_RecordChild2, // #2 = $incr
/* 44554*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->44601
/* 44557*/      OPC_Scope, 13, /*->44572*/ // 3 children in Scope
/* 44559*/        OPC_CheckPredicate, 3, // Predicate_atomic_load_add_8
/* 44561*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44563*/        OPC_EmitMergeInputChains1_0,
/* 44564*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_ADD_I8), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_add:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_add_8>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_ADD_I8:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44572*/      /*Scope*/ 13, /*->44586*/
/* 44573*/        OPC_CheckPredicate, 4, // Predicate_atomic_load_add_16
/* 44575*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44577*/        OPC_EmitMergeInputChains1_0,
/* 44578*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_ADD_I16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_add:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_add_16>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_ADD_I16:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44586*/      /*Scope*/ 13, /*->44600*/
/* 44587*/        OPC_CheckPredicate, 5, // Predicate_atomic_load_add_32
/* 44589*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44591*/        OPC_EmitMergeInputChains1_0,
/* 44592*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_ADD_I32), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_add:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_add_32>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_ADD_I32:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44600*/      0, /*End of Scope*/
/* 44601*/    /*SwitchType*/ 13, MVT::i64,// ->44616
/* 44603*/      OPC_CheckPredicate, 21, // Predicate_atomic_load_add_64
/* 44605*/      OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44607*/      OPC_EmitMergeInputChains1_0,
/* 44608*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_ADD_I64), 0|OPFL_Chain|OPFL_MemRefs,
                    MVT::i64, 2/*#Ops*/, 1, 2, 
                // Src: (atomic_load_add:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_add_64>> - Complexity = 4
                // Dst: (ATOMIC_LOAD_ADD_I64:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)
/* 44616*/    0, // EndSwitchType
/* 44617*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_SUB),// ->44687
/* 44620*/    OPC_RecordMemRef,
/* 44621*/    OPC_RecordNode, // #0 = 'atomic_load_sub' chained node
/* 44622*/    OPC_RecordChild1, // #1 = $ptr
/* 44623*/    OPC_RecordChild2, // #2 = $incr
/* 44624*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->44671
/* 44627*/      OPC_Scope, 13, /*->44642*/ // 3 children in Scope
/* 44629*/        OPC_CheckPredicate, 3, // Predicate_atomic_load_sub_8
/* 44631*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44633*/        OPC_EmitMergeInputChains1_0,
/* 44634*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_SUB_I8), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_sub:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_8>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_SUB_I8:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44642*/      /*Scope*/ 13, /*->44656*/
/* 44643*/        OPC_CheckPredicate, 4, // Predicate_atomic_load_sub_16
/* 44645*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44647*/        OPC_EmitMergeInputChains1_0,
/* 44648*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_SUB_I16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_sub:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_16>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_SUB_I16:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44656*/      /*Scope*/ 13, /*->44670*/
/* 44657*/        OPC_CheckPredicate, 5, // Predicate_atomic_load_sub_32
/* 44659*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44661*/        OPC_EmitMergeInputChains1_0,
/* 44662*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_SUB_I32), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_sub:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_32>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_SUB_I32:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44670*/      0, /*End of Scope*/
/* 44671*/    /*SwitchType*/ 13, MVT::i64,// ->44686
/* 44673*/      OPC_CheckPredicate, 21, // Predicate_atomic_load_sub_64
/* 44675*/      OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44677*/      OPC_EmitMergeInputChains1_0,
/* 44678*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_SUB_I64), 0|OPFL_Chain|OPFL_MemRefs,
                    MVT::i64, 2/*#Ops*/, 1, 2, 
                // Src: (atomic_load_sub:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_sub_64>> - Complexity = 4
                // Dst: (ATOMIC_LOAD_SUB_I64:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)
/* 44686*/    0, // EndSwitchType
/* 44687*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_AND),// ->44757
/* 44690*/    OPC_RecordMemRef,
/* 44691*/    OPC_RecordNode, // #0 = 'atomic_load_and' chained node
/* 44692*/    OPC_RecordChild1, // #1 = $ptr
/* 44693*/    OPC_RecordChild2, // #2 = $incr
/* 44694*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->44741
/* 44697*/      OPC_Scope, 13, /*->44712*/ // 3 children in Scope
/* 44699*/        OPC_CheckPredicate, 3, // Predicate_atomic_load_and_8
/* 44701*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44703*/        OPC_EmitMergeInputChains1_0,
/* 44704*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_AND_I8), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_and:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_and_8>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_AND_I8:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44712*/      /*Scope*/ 13, /*->44726*/
/* 44713*/        OPC_CheckPredicate, 4, // Predicate_atomic_load_and_16
/* 44715*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44717*/        OPC_EmitMergeInputChains1_0,
/* 44718*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_AND_I16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_and:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_and_16>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_AND_I16:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44726*/      /*Scope*/ 13, /*->44740*/
/* 44727*/        OPC_CheckPredicate, 5, // Predicate_atomic_load_and_32
/* 44729*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44731*/        OPC_EmitMergeInputChains1_0,
/* 44732*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_AND_I32), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_and:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_and_32>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_AND_I32:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44740*/      0, /*End of Scope*/
/* 44741*/    /*SwitchType*/ 13, MVT::i64,// ->44756
/* 44743*/      OPC_CheckPredicate, 21, // Predicate_atomic_load_and_64
/* 44745*/      OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44747*/      OPC_EmitMergeInputChains1_0,
/* 44748*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_AND_I64), 0|OPFL_Chain|OPFL_MemRefs,
                    MVT::i64, 2/*#Ops*/, 1, 2, 
                // Src: (atomic_load_and:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_and_64>> - Complexity = 4
                // Dst: (ATOMIC_LOAD_AND_I64:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)
/* 44756*/    0, // EndSwitchType
/* 44757*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_OR),// ->44827
/* 44760*/    OPC_RecordMemRef,
/* 44761*/    OPC_RecordNode, // #0 = 'atomic_load_or' chained node
/* 44762*/    OPC_RecordChild1, // #1 = $ptr
/* 44763*/    OPC_RecordChild2, // #2 = $incr
/* 44764*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->44811
/* 44767*/      OPC_Scope, 13, /*->44782*/ // 3 children in Scope
/* 44769*/        OPC_CheckPredicate, 3, // Predicate_atomic_load_or_8
/* 44771*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44773*/        OPC_EmitMergeInputChains1_0,
/* 44774*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_OR_I8), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_or:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_or_8>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_OR_I8:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44782*/      /*Scope*/ 13, /*->44796*/
/* 44783*/        OPC_CheckPredicate, 4, // Predicate_atomic_load_or_16
/* 44785*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44787*/        OPC_EmitMergeInputChains1_0,
/* 44788*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_OR_I16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_or:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_or_16>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_OR_I16:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44796*/      /*Scope*/ 13, /*->44810*/
/* 44797*/        OPC_CheckPredicate, 5, // Predicate_atomic_load_or_32
/* 44799*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44801*/        OPC_EmitMergeInputChains1_0,
/* 44802*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_OR_I32), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_or:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_or_32>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_OR_I32:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44810*/      0, /*End of Scope*/
/* 44811*/    /*SwitchType*/ 13, MVT::i64,// ->44826
/* 44813*/      OPC_CheckPredicate, 21, // Predicate_atomic_load_or_64
/* 44815*/      OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44817*/      OPC_EmitMergeInputChains1_0,
/* 44818*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_OR_I64), 0|OPFL_Chain|OPFL_MemRefs,
                    MVT::i64, 2/*#Ops*/, 1, 2, 
                // Src: (atomic_load_or:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_or_64>> - Complexity = 4
                // Dst: (ATOMIC_LOAD_OR_I64:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)
/* 44826*/    0, // EndSwitchType
/* 44827*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_XOR),// ->44897
/* 44830*/    OPC_RecordMemRef,
/* 44831*/    OPC_RecordNode, // #0 = 'atomic_load_xor' chained node
/* 44832*/    OPC_RecordChild1, // #1 = $ptr
/* 44833*/    OPC_RecordChild2, // #2 = $incr
/* 44834*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->44881
/* 44837*/      OPC_Scope, 13, /*->44852*/ // 3 children in Scope
/* 44839*/        OPC_CheckPredicate, 3, // Predicate_atomic_load_xor_8
/* 44841*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44843*/        OPC_EmitMergeInputChains1_0,
/* 44844*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_XOR_I8), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_xor:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_xor_8>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_XOR_I8:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44852*/      /*Scope*/ 13, /*->44866*/
/* 44853*/        OPC_CheckPredicate, 4, // Predicate_atomic_load_xor_16
/* 44855*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44857*/        OPC_EmitMergeInputChains1_0,
/* 44858*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_XOR_I16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_xor:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_xor_16>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_XOR_I16:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44866*/      /*Scope*/ 13, /*->44880*/
/* 44867*/        OPC_CheckPredicate, 5, // Predicate_atomic_load_xor_32
/* 44869*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44871*/        OPC_EmitMergeInputChains1_0,
/* 44872*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_XOR_I32), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_xor:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_xor_32>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_XOR_I32:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44880*/      0, /*End of Scope*/
/* 44881*/    /*SwitchType*/ 13, MVT::i64,// ->44896
/* 44883*/      OPC_CheckPredicate, 21, // Predicate_atomic_load_xor_64
/* 44885*/      OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44887*/      OPC_EmitMergeInputChains1_0,
/* 44888*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_XOR_I64), 0|OPFL_Chain|OPFL_MemRefs,
                    MVT::i64, 2/*#Ops*/, 1, 2, 
                // Src: (atomic_load_xor:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_xor_64>> - Complexity = 4
                // Dst: (ATOMIC_LOAD_XOR_I64:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)
/* 44896*/    0, // EndSwitchType
/* 44897*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_NAND),// ->44967
/* 44900*/    OPC_RecordMemRef,
/* 44901*/    OPC_RecordNode, // #0 = 'atomic_load_nand' chained node
/* 44902*/    OPC_RecordChild1, // #1 = $ptr
/* 44903*/    OPC_RecordChild2, // #2 = $incr
/* 44904*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->44951
/* 44907*/      OPC_Scope, 13, /*->44922*/ // 3 children in Scope
/* 44909*/        OPC_CheckPredicate, 3, // Predicate_atomic_load_nand_8
/* 44911*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44913*/        OPC_EmitMergeInputChains1_0,
/* 44914*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_NAND_I8), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_nand:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_8>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_NAND_I8:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44922*/      /*Scope*/ 13, /*->44936*/
/* 44923*/        OPC_CheckPredicate, 4, // Predicate_atomic_load_nand_16
/* 44925*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44927*/        OPC_EmitMergeInputChains1_0,
/* 44928*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_NAND_I16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_nand:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_16>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_NAND_I16:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44936*/      /*Scope*/ 13, /*->44950*/
/* 44937*/        OPC_CheckPredicate, 5, // Predicate_atomic_load_nand_32
/* 44939*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44941*/        OPC_EmitMergeInputChains1_0,
/* 44942*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_NAND_I32), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_nand:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_32>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_NAND_I32:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44950*/      0, /*End of Scope*/
/* 44951*/    /*SwitchType*/ 13, MVT::i64,// ->44966
/* 44953*/      OPC_CheckPredicate, 21, // Predicate_atomic_load_nand_64
/* 44955*/      OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44957*/      OPC_EmitMergeInputChains1_0,
/* 44958*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_NAND_I64), 0|OPFL_Chain|OPFL_MemRefs,
                    MVT::i64, 2/*#Ops*/, 1, 2, 
                // Src: (atomic_load_nand:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_nand_64>> - Complexity = 4
                // Dst: (ATOMIC_LOAD_NAND_I64:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)
/* 44966*/    0, // EndSwitchType
/* 44967*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_SWAP),// ->45037
/* 44970*/    OPC_RecordMemRef,
/* 44971*/    OPC_RecordNode, // #0 = 'atomic_swap' chained node
/* 44972*/    OPC_RecordChild1, // #1 = $ptr
/* 44973*/    OPC_RecordChild2, // #2 = $incr
/* 44974*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45021
/* 44977*/      OPC_Scope, 13, /*->44992*/ // 3 children in Scope
/* 44979*/        OPC_CheckPredicate, 3, // Predicate_atomic_swap_8
/* 44981*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44983*/        OPC_EmitMergeInputChains1_0,
/* 44984*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_SWAP_I8), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_swap:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_swap_8>> - Complexity = 4
                  // Dst: (ATOMIC_SWAP_I8:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 44992*/      /*Scope*/ 13, /*->45006*/
/* 44993*/        OPC_CheckPredicate, 4, // Predicate_atomic_swap_16
/* 44995*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 44997*/        OPC_EmitMergeInputChains1_0,
/* 44998*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_SWAP_I16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_swap:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_swap_16>> - Complexity = 4
                  // Dst: (ATOMIC_SWAP_I16:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 45006*/      /*Scope*/ 13, /*->45020*/
/* 45007*/        OPC_CheckPredicate, 5, // Predicate_atomic_swap_32
/* 45009*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45011*/        OPC_EmitMergeInputChains1_0,
/* 45012*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_SWAP_I32), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_swap:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_swap_32>> - Complexity = 4
                  // Dst: (ATOMIC_SWAP_I32:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 45020*/      0, /*End of Scope*/
/* 45021*/    /*SwitchType*/ 13, MVT::i64,// ->45036
/* 45023*/      OPC_CheckPredicate, 21, // Predicate_atomic_swap_64
/* 45025*/      OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45027*/      OPC_EmitMergeInputChains1_0,
/* 45028*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_SWAP_I64), 0|OPFL_Chain|OPFL_MemRefs,
                    MVT::i64, 2/*#Ops*/, 1, 2, 
                // Src: (atomic_swap:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)<<P:Predicate_atomic_swap_64>> - Complexity = 4
                // Dst: (ATOMIC_SWAP_I64:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)
/* 45036*/    0, // EndSwitchType
/* 45037*/  /*SwitchOpcode*/ 72, TARGET_VAL(ISD::ATOMIC_CMP_SWAP),// ->45112
/* 45040*/    OPC_RecordMemRef,
/* 45041*/    OPC_RecordNode, // #0 = 'atomic_cmp_swap' chained node
/* 45042*/    OPC_RecordChild1, // #1 = $ptr
/* 45043*/    OPC_RecordChild2, // #2 = $cmp
/* 45044*/    OPC_RecordChild3, // #3 = $swap
/* 45045*/    OPC_SwitchType /*2 cases */, 47, MVT::i32,// ->45095
/* 45048*/      OPC_Scope, 14, /*->45064*/ // 3 children in Scope
/* 45050*/        OPC_CheckPredicate, 3, // Predicate_atomic_cmp_swap_8
/* 45052*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45054*/        OPC_EmitMergeInputChains1_0,
/* 45055*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_CMP_SWAP_I8), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 3/*#Ops*/, 1, 2, 3, 
                  // Src: (atomic_cmp_swap:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$cmp, GPR32:{ *:[i32] }:$swap)<<P:Predicate_atomic_cmp_swap_8>> - Complexity = 4
                  // Dst: (ATOMIC_CMP_SWAP_I8:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$cmp, GPR32:{ *:[i32] }:$swap)
/* 45064*/      /*Scope*/ 14, /*->45079*/
/* 45065*/        OPC_CheckPredicate, 4, // Predicate_atomic_cmp_swap_16
/* 45067*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45069*/        OPC_EmitMergeInputChains1_0,
/* 45070*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_CMP_SWAP_I16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 3/*#Ops*/, 1, 2, 3, 
                  // Src: (atomic_cmp_swap:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$cmp, GPR32:{ *:[i32] }:$swap)<<P:Predicate_atomic_cmp_swap_16>> - Complexity = 4
                  // Dst: (ATOMIC_CMP_SWAP_I16:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$cmp, GPR32:{ *:[i32] }:$swap)
/* 45079*/      /*Scope*/ 14, /*->45094*/
/* 45080*/        OPC_CheckPredicate, 5, // Predicate_atomic_cmp_swap_32
/* 45082*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45084*/        OPC_EmitMergeInputChains1_0,
/* 45085*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_CMP_SWAP_I32), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 3/*#Ops*/, 1, 2, 3, 
                  // Src: (atomic_cmp_swap:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$cmp, GPR32:{ *:[i32] }:$swap)<<P:Predicate_atomic_cmp_swap_32>> - Complexity = 4
                  // Dst: (ATOMIC_CMP_SWAP_I32:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$cmp, GPR32:{ *:[i32] }:$swap)
/* 45094*/      0, /*End of Scope*/
/* 45095*/    /*SwitchType*/ 14, MVT::i64,// ->45111
/* 45097*/      OPC_CheckPredicate, 21, // Predicate_atomic_cmp_swap_64
/* 45099*/      OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45101*/      OPC_EmitMergeInputChains1_0,
/* 45102*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_CMP_SWAP_I64), 0|OPFL_Chain|OPFL_MemRefs,
                    MVT::i64, 3/*#Ops*/, 1, 2, 3, 
                // Src: (atomic_cmp_swap:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$cmp, GPR64:{ *:[i64] }:$swap)<<P:Predicate_atomic_cmp_swap_64>> - Complexity = 4
                // Dst: (ATOMIC_CMP_SWAP_I64:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$cmp, GPR64:{ *:[i64] }:$swap)
/* 45111*/    0, // EndSwitchType
/* 45112*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_MIN),// ->45182
/* 45115*/    OPC_RecordMemRef,
/* 45116*/    OPC_RecordNode, // #0 = 'atomic_load_min' chained node
/* 45117*/    OPC_RecordChild1, // #1 = $ptr
/* 45118*/    OPC_RecordChild2, // #2 = $incr
/* 45119*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45166
/* 45122*/      OPC_Scope, 13, /*->45137*/ // 3 children in Scope
/* 45124*/        OPC_CheckPredicate, 3, // Predicate_atomic_load_min_8
/* 45126*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45128*/        OPC_EmitMergeInputChains1_0,
/* 45129*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_MIN_I8), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_min:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_min_8>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_MIN_I8:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 45137*/      /*Scope*/ 13, /*->45151*/
/* 45138*/        OPC_CheckPredicate, 4, // Predicate_atomic_load_min_16
/* 45140*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45142*/        OPC_EmitMergeInputChains1_0,
/* 45143*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_MIN_I16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_min:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_min_16>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_MIN_I16:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 45151*/      /*Scope*/ 13, /*->45165*/
/* 45152*/        OPC_CheckPredicate, 5, // Predicate_atomic_load_min_32
/* 45154*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45156*/        OPC_EmitMergeInputChains1_0,
/* 45157*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_MIN_I32), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_min:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_min_32>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_MIN_I32:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 45165*/      0, /*End of Scope*/
/* 45166*/    /*SwitchType*/ 13, MVT::i64,// ->45181
/* 45168*/      OPC_CheckPredicate, 21, // Predicate_atomic_load_min_64
/* 45170*/      OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45172*/      OPC_EmitMergeInputChains1_0,
/* 45173*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_MIN_I64), 0|OPFL_Chain|OPFL_MemRefs,
                    MVT::i64, 2/*#Ops*/, 1, 2, 
                // Src: (atomic_load_min:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_min_64>> - Complexity = 4
                // Dst: (ATOMIC_LOAD_MIN_I64:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)
/* 45181*/    0, // EndSwitchType
/* 45182*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_MAX),// ->45252
/* 45185*/    OPC_RecordMemRef,
/* 45186*/    OPC_RecordNode, // #0 = 'atomic_load_max' chained node
/* 45187*/    OPC_RecordChild1, // #1 = $ptr
/* 45188*/    OPC_RecordChild2, // #2 = $incr
/* 45189*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45236
/* 45192*/      OPC_Scope, 13, /*->45207*/ // 3 children in Scope
/* 45194*/        OPC_CheckPredicate, 3, // Predicate_atomic_load_max_8
/* 45196*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45198*/        OPC_EmitMergeInputChains1_0,
/* 45199*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_MAX_I8), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_max:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_max_8>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_MAX_I8:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 45207*/      /*Scope*/ 13, /*->45221*/
/* 45208*/        OPC_CheckPredicate, 4, // Predicate_atomic_load_max_16
/* 45210*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45212*/        OPC_EmitMergeInputChains1_0,
/* 45213*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_MAX_I16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_max:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_max_16>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_MAX_I16:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 45221*/      /*Scope*/ 13, /*->45235*/
/* 45222*/        OPC_CheckPredicate, 5, // Predicate_atomic_load_max_32
/* 45224*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45226*/        OPC_EmitMergeInputChains1_0,
/* 45227*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_MAX_I32), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_max:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_max_32>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_MAX_I32:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 45235*/      0, /*End of Scope*/
/* 45236*/    /*SwitchType*/ 13, MVT::i64,// ->45251
/* 45238*/      OPC_CheckPredicate, 21, // Predicate_atomic_load_max_64
/* 45240*/      OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45242*/      OPC_EmitMergeInputChains1_0,
/* 45243*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_MAX_I64), 0|OPFL_Chain|OPFL_MemRefs,
                    MVT::i64, 2/*#Ops*/, 1, 2, 
                // Src: (atomic_load_max:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_max_64>> - Complexity = 4
                // Dst: (ATOMIC_LOAD_MAX_I64:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)
/* 45251*/    0, // EndSwitchType
/* 45252*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_UMIN),// ->45322
/* 45255*/    OPC_RecordMemRef,
/* 45256*/    OPC_RecordNode, // #0 = 'atomic_load_umin' chained node
/* 45257*/    OPC_RecordChild1, // #1 = $ptr
/* 45258*/    OPC_RecordChild2, // #2 = $incr
/* 45259*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45306
/* 45262*/      OPC_Scope, 13, /*->45277*/ // 3 children in Scope
/* 45264*/        OPC_CheckPredicate, 3, // Predicate_atomic_load_umin_8
/* 45266*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45268*/        OPC_EmitMergeInputChains1_0,
/* 45269*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_UMIN_I8), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_umin:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_umin_8>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_UMIN_I8:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 45277*/      /*Scope*/ 13, /*->45291*/
/* 45278*/        OPC_CheckPredicate, 4, // Predicate_atomic_load_umin_16
/* 45280*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45282*/        OPC_EmitMergeInputChains1_0,
/* 45283*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_UMIN_I16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_umin:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_umin_16>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_UMIN_I16:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 45291*/      /*Scope*/ 13, /*->45305*/
/* 45292*/        OPC_CheckPredicate, 5, // Predicate_atomic_load_umin_32
/* 45294*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45296*/        OPC_EmitMergeInputChains1_0,
/* 45297*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_UMIN_I32), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_umin:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_umin_32>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_UMIN_I32:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 45305*/      0, /*End of Scope*/
/* 45306*/    /*SwitchType*/ 13, MVT::i64,// ->45321
/* 45308*/      OPC_CheckPredicate, 21, // Predicate_atomic_load_umin_64
/* 45310*/      OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45312*/      OPC_EmitMergeInputChains1_0,
/* 45313*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_UMIN_I64), 0|OPFL_Chain|OPFL_MemRefs,
                    MVT::i64, 2/*#Ops*/, 1, 2, 
                // Src: (atomic_load_umin:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_umin_64>> - Complexity = 4
                // Dst: (ATOMIC_LOAD_UMIN_I64:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)
/* 45321*/    0, // EndSwitchType
/* 45322*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_UMAX),// ->45392
/* 45325*/    OPC_RecordMemRef,
/* 45326*/    OPC_RecordNode, // #0 = 'atomic_load_umax' chained node
/* 45327*/    OPC_RecordChild1, // #1 = $ptr
/* 45328*/    OPC_RecordChild2, // #2 = $incr
/* 45329*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45376
/* 45332*/      OPC_Scope, 13, /*->45347*/ // 3 children in Scope
/* 45334*/        OPC_CheckPredicate, 3, // Predicate_atomic_load_umax_8
/* 45336*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45338*/        OPC_EmitMergeInputChains1_0,
/* 45339*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_UMAX_I8), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_umax:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_umax_8>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_UMAX_I8:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 45347*/      /*Scope*/ 13, /*->45361*/
/* 45348*/        OPC_CheckPredicate, 4, // Predicate_atomic_load_umax_16
/* 45350*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45352*/        OPC_EmitMergeInputChains1_0,
/* 45353*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_UMAX_I16), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_umax:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_umax_16>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_UMAX_I16:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 45361*/      /*Scope*/ 13, /*->45375*/
/* 45362*/        OPC_CheckPredicate, 5, // Predicate_atomic_load_umax_32
/* 45364*/        OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45366*/        OPC_EmitMergeInputChains1_0,
/* 45367*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_UMAX_I32), 0|OPFL_Chain|OPFL_MemRefs,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (atomic_load_umax:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_umax_32>> - Complexity = 4
                  // Dst: (ATOMIC_LOAD_UMAX_I32:{ *:[i32] } iPTR:{ *:[iPTR] }:$ptr, GPR32:{ *:[i32] }:$incr)
/* 45375*/      0, /*End of Scope*/
/* 45376*/    /*SwitchType*/ 13, MVT::i64,// ->45391
/* 45378*/      OPC_CheckPredicate, 21, // Predicate_atomic_load_umax_64
/* 45380*/      OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45382*/      OPC_EmitMergeInputChains1_0,
/* 45383*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ATOMIC_LOAD_UMAX_I64), 0|OPFL_Chain|OPFL_MemRefs,
                    MVT::i64, 2/*#Ops*/, 1, 2, 
                // Src: (atomic_load_umax:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_umax_64>> - Complexity = 4
                // Dst: (ATOMIC_LOAD_UMAX_I64:{ *:[i64] } iPTR:{ *:[iPTR] }:$ptr, GPR64:{ *:[i64] }:$incr)
/* 45391*/    0, // EndSwitchType
/* 45392*/  /*SwitchOpcode*/ 22, TARGET_VAL(MipsISD::Ret),// ->45417
/* 45395*/    OPC_RecordNode, // #0 = 'MipsRet' chained node
/* 45396*/    OPC_CaptureGlueInput,
/* 45397*/    OPC_Scope, 8, /*->45407*/ // 2 children in Scope
/* 45399*/      OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45401*/      OPC_EmitMergeInputChains1_0,
/* 45402*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::RetRA), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic0,
                    0/*#Ops*/, 
                // Src: (MipsRet) - Complexity = 3
                // Dst: (RetRA)
/* 45407*/    /*Scope*/ 8, /*->45416*/
/* 45408*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 45410*/      OPC_EmitMergeInputChains1_0,
/* 45411*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::RetRA16), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic0,
                    0/*#Ops*/, 
                // Src: (MipsRet) - Complexity = 3
                // Dst: (RetRA16)
/* 45416*/    0, /*End of Scope*/
/* 45417*/  /*SwitchOpcode*/ 10, TARGET_VAL(MipsISD::ERet),// ->45430
/* 45420*/    OPC_RecordNode, // #0 = 'MipsERet' chained node
/* 45421*/    OPC_CaptureGlueInput,
/* 45422*/    OPC_CheckPatternPredicate, 92, // (!Subtarget->inMips16Mode())
/* 45424*/    OPC_EmitMergeInputChains1_0,
/* 45425*/    OPC_MorphNodeTo0, TARGET_VAL(Mips::ERet), 0|OPFL_Chain|OPFL_GlueInput,
                  0/*#Ops*/, 
              // Src: (MipsERet) - Complexity = 3
              // Dst: (ERet)
/* 45430*/  /*SwitchOpcode*/ 43|128,1/*171*/, TARGET_VAL(ISD::MUL),// ->45605
/* 45434*/    OPC_RecordChild0, // #0 = $rs
/* 45435*/    OPC_RecordChild1, // #1 = $rt
/* 45436*/    OPC_SwitchType /*7 cases */, 78, MVT::i32,// ->45517
/* 45439*/      OPC_Scope, 11, /*->45452*/ // 6 children in Scope
/* 45441*/        OPC_CheckPatternPredicate, 49, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 45443*/        OPC_MorphNodeTo2, TARGET_VAL(Mips::MUL), 0,
                      MVT::i32, MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (mul:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MUL:{ *:[i32] }:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 45452*/      /*Scope*/ 10, /*->45463*/
/* 45453*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 45455*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MUL_R6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (mul:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MUL_R6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 45463*/      /*Scope*/ 11, /*->45475*/
/* 45464*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 45466*/        OPC_MorphNodeTo2, TARGET_VAL(Mips::MultRxRyRz16), 0,
                      MVT::i32, MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (mul:{ *:[i32] } CPU16Regs:{ *:[i32] }:$l, CPU16Regs:{ *:[i32] }:$r) - Complexity = 3
                  // Dst: (MultRxRyRz16:{ *:[i32] }:{ *:[i32] } CPU16Regs:{ *:[i32] }:$l, CPU16Regs:{ *:[i32] }:$r)
/* 45475*/      /*Scope*/ 11, /*->45487*/
/* 45476*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 45478*/        OPC_MorphNodeTo2, TARGET_VAL(Mips::MUL_MM), 0,
                      MVT::i32, MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (mul:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MUL_MM:{ *:[i32] }:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 45487*/      /*Scope*/ 10, /*->45498*/
/* 45488*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 45490*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MUL_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (mul:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MUL_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 45498*/      /*Scope*/ 17, /*->45516*/
/* 45499*/        OPC_CheckPatternPredicate, 93, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 45501*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoMULT), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1,  // Results = #2
/* 45509*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMFLO), 0,
                      MVT::i32, 1/*#Ops*/, 2, 
                  // Src: (mul:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs) - Complexity = 3
                  // Dst: (PseudoMFLO:{ *:[i32] } (PseudoMULT:{ *:[Untyped] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs))
/* 45516*/      0, /*End of Scope*/
/* 45517*/    /*SwitchType*/ 25, MVT::i64,// ->45544
/* 45519*/      OPC_Scope, 11, /*->45532*/ // 2 children in Scope
/* 45521*/        OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 45523*/        OPC_MorphNodeTo2, TARGET_VAL(Mips::DMUL), 0,
                      MVT::i64, MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (mul:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                  // Dst: (DMUL:{ *:[i64] }:{ *:[i32] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 45532*/      /*Scope*/ 10, /*->45543*/
/* 45533*/        OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 45535*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DMUL_R6), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1, 
                  // Src: (mul:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                  // Dst: (DMUL_R6:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 45543*/      0, /*End of Scope*/
/* 45544*/    /*SwitchType*/ 10, MVT::v2i16,// ->45556
/* 45546*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 45548*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MUL_PH), 0,
                    MVT::v2i16, 2/*#Ops*/, 0, 1, 
                // Src: (mul:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b) - Complexity = 3
                // Dst: (MUL_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b)
/* 45556*/    /*SwitchType*/ 10, MVT::v16i8,// ->45568
/* 45558*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 45560*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MULV_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (mul:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                // Dst: (MULV_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 45568*/    /*SwitchType*/ 10, MVT::v8i16,// ->45580
/* 45570*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 45572*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MULV_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (mul:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                // Dst: (MULV_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 45580*/    /*SwitchType*/ 10, MVT::v4i32,// ->45592
/* 45582*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 45584*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MULV_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (mul:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                // Dst: (MULV_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 45592*/    /*SwitchType*/ 10, MVT::v2i64,// ->45604
/* 45594*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 45596*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MULV_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (mul:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                // Dst: (MULV_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 45604*/    0, // EndSwitchType
/* 45605*/  /*SwitchOpcode*/ 30, TARGET_VAL(ISD::TRAP),// ->45638
/* 45608*/    OPC_RecordNode, // #0 = 'trap' chained node
/* 45609*/    OPC_Scope, 8, /*->45619*/ // 3 children in Scope
/* 45611*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 45613*/      OPC_EmitMergeInputChains1_0,
/* 45614*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::TRAP), 0|OPFL_Chain,
                    0/*#Ops*/, 
                // Src: (trap) - Complexity = 3
                // Dst: (TRAP)
/* 45619*/    /*Scope*/ 8, /*->45628*/
/* 45620*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 45622*/      OPC_EmitMergeInputChains1_0,
/* 45623*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::Break16), 0|OPFL_Chain,
                    0/*#Ops*/, 
                // Src: (trap) - Complexity = 3
                // Dst: (Break16)
/* 45628*/    /*Scope*/ 8, /*->45637*/
/* 45629*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 45631*/      OPC_EmitMergeInputChains1_0,
/* 45632*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::TRAP_MM), 0|OPFL_Chain,
                    0/*#Ops*/, 
                // Src: (trap) - Complexity = 3
                // Dst: (TRAP_MM)
/* 45637*/    0, /*End of Scope*/
/* 45638*/  /*SwitchOpcode*/ 69, TARGET_VAL(ISD::BR),// ->45710
/* 45641*/    OPC_RecordNode, // #0 = 'br' chained node
/* 45642*/    OPC_RecordChild1, // #1 = $target
/* 45643*/    OPC_MoveChild1,
/* 45644*/    OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 45647*/    OPC_MoveParent,
/* 45648*/    OPC_Scope, 9, /*->45659*/ // 6 children in Scope
/* 45650*/      OPC_CheckPatternPredicate, 94, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!TM.isPositionIndependent())
/* 45652*/      OPC_EmitMergeInputChains1_0,
/* 45653*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::J), 0|OPFL_Chain,
                    1/*#Ops*/, 1, 
                // Src: (br (bb:{ *:[Other] }):$target) - Complexity = 3
                // Dst: (J (bb:{ *:[Other] }):$target)
/* 45659*/    /*Scope*/ 9, /*->45669*/
/* 45660*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 45662*/      OPC_EmitMergeInputChains1_0,
/* 45663*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::B), 0|OPFL_Chain,
                    1/*#Ops*/, 1, 
                // Src: (br (bb:{ *:[Other] }):$offset) - Complexity = 3
                // Dst: (B (bb:{ *:[Other] }):$offset)
/* 45669*/    /*Scope*/ 9, /*->45679*/
/* 45670*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 45672*/      OPC_EmitMergeInputChains1_0,
/* 45673*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::Bimm16), 0|OPFL_Chain,
                    1/*#Ops*/, 1, 
                // Src: (br (bb:{ *:[Other] }):$imm16) - Complexity = 3
                // Dst: (Bimm16 (bb:{ *:[Other] }):$imm16)
/* 45679*/    /*Scope*/ 9, /*->45689*/
/* 45680*/      OPC_CheckPatternPredicate, 95, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!TM.isPositionIndependent())
/* 45682*/      OPC_EmitMergeInputChains1_0,
/* 45683*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::J_MM), 0|OPFL_Chain,
                    1/*#Ops*/, 1, 
                // Src: (br (bb:{ *:[Other] }):$target) - Complexity = 3
                // Dst: (J_MM (bb:{ *:[Other] }):$target)
/* 45689*/    /*Scope*/ 9, /*->45699*/
/* 45690*/      OPC_CheckPatternPredicate, 96, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (TM.isPositionIndependent())
/* 45692*/      OPC_EmitMergeInputChains1_0,
/* 45693*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::B_MM), 0|OPFL_Chain,
                    1/*#Ops*/, 1, 
                // Src: (br (bb:{ *:[Other] }):$offset) - Complexity = 3
                // Dst: (B_MM (bb:{ *:[Other] }):$offset)
/* 45699*/    /*Scope*/ 9, /*->45709*/
/* 45700*/      OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 45702*/      OPC_EmitMergeInputChains1_0,
/* 45703*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::BC_MMR6), 0|OPFL_Chain,
                    1/*#Ops*/, 1, 
                // Src: (br (bb:{ *:[Other] }):$offset) - Complexity = 3
                // Dst: (BC_MMR6 (bb:{ *:[Other] }):$offset)
/* 45709*/    0, /*End of Scope*/
/* 45710*/  /*SwitchOpcode*/ 33, TARGET_VAL(MipsISD::EH_RETURN),// ->45746
/* 45713*/    OPC_RecordNode, // #0 = 'MIPSehret' chained node
/* 45714*/    OPC_CaptureGlueInput,
/* 45715*/    OPC_RecordChild1, // #1 = $spoff
/* 45716*/    OPC_Scope, 13, /*->45731*/ // 2 children in Scope
/* 45718*/      OPC_CheckChild1Type, MVT::i32,
/* 45720*/      OPC_RecordChild2, // #2 = $dst
/* 45721*/      OPC_CheckChild2Type, MVT::i32,
/* 45723*/      OPC_EmitMergeInputChains1_0,
/* 45724*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::MIPSeh_return32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic2,
                    2/*#Ops*/, 1, 2, 
                // Src: (MIPSehret GPR32:{ *:[i32] }:$spoff, GPR32:{ *:[i32] }:$dst) - Complexity = 3
                // Dst: (MIPSeh_return32 GPR32:{ *:[i32] }:$spoff, GPR32:{ *:[i32] }:$dst)
/* 45731*/    /*Scope*/ 13, /*->45745*/
/* 45732*/      OPC_CheckChild1Type, MVT::i64,
/* 45734*/      OPC_RecordChild2, // #2 = $dst
/* 45735*/      OPC_CheckChild2Type, MVT::i64,
/* 45737*/      OPC_EmitMergeInputChains1_0,
/* 45738*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::MIPSeh_return64), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic2,
                    2/*#Ops*/, 1, 2, 
                // Src: (MIPSehret GPR64:{ *:[i64] }:$spoff, GPR64:{ *:[i64] }:$dst) - Complexity = 3
                // Dst: (MIPSeh_return64 GPR64:{ *:[i64] }:$spoff, GPR64:{ *:[i64] }:$dst)
/* 45745*/    0, /*End of Scope*/
/* 45746*/  /*SwitchOpcode*/ 119, TARGET_VAL(ISD::SIGN_EXTEND_INREG),// ->45868
/* 45749*/    OPC_RecordChild0, // #0 = $rt
/* 45750*/    OPC_MoveChild1,
/* 45751*/    OPC_Scope, 50, /*->45803*/ // 3 children in Scope
/* 45753*/      OPC_CheckValueType, MVT::i8,
/* 45755*/      OPC_MoveParent,
/* 45756*/      OPC_SwitchType /*2 cases */, 32, MVT::i32,// ->45791
/* 45759*/        OPC_Scope, 9, /*->45770*/ // 3 children in Scope
/* 45761*/          OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 45763*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SEB), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (sext_inreg:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, i8:{ *:[Other] }) - Complexity = 3
                    // Dst: (SEB:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt)
/* 45770*/        /*Scope*/ 9, /*->45780*/
/* 45771*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 45773*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SebRx16), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (sext_inreg:{ *:[i32] } CPU16Regs:{ *:[i32] }:$val, i8:{ *:[Other] }) - Complexity = 3
                    // Dst: (SebRx16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$val)
/* 45780*/        /*Scope*/ 9, /*->45790*/
/* 45781*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 45783*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SEB_MM), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (sext_inreg:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, i8:{ *:[Other] }) - Complexity = 3
                    // Dst: (SEB_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt)
/* 45790*/        0, /*End of Scope*/
/* 45791*/      /*SwitchType*/ 9, MVT::i64,// ->45802
/* 45793*/        OPC_CheckPatternPredicate, 97, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 45795*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SEB64), 0,
                      MVT::i64, 1/*#Ops*/, 0, 
                  // Src: (sext_inreg:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, i8:{ *:[Other] }) - Complexity = 3
                  // Dst: (SEB64:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt)
/* 45802*/      0, // EndSwitchType
/* 45803*/    /*Scope*/ 50, /*->45854*/
/* 45804*/      OPC_CheckValueType, MVT::i16,
/* 45806*/      OPC_MoveParent,
/* 45807*/      OPC_SwitchType /*2 cases */, 32, MVT::i32,// ->45842
/* 45810*/        OPC_Scope, 9, /*->45821*/ // 3 children in Scope
/* 45812*/          OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 45814*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SEH), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (sext_inreg:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, i16:{ *:[Other] }) - Complexity = 3
                    // Dst: (SEH:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt)
/* 45821*/        /*Scope*/ 9, /*->45831*/
/* 45822*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 45824*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SehRx16), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (sext_inreg:{ *:[i32] } CPU16Regs:{ *:[i32] }:$val, i16:{ *:[Other] }) - Complexity = 3
                    // Dst: (SehRx16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$val)
/* 45831*/        /*Scope*/ 9, /*->45841*/
/* 45832*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 45834*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SEH_MM), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (sext_inreg:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, i16:{ *:[Other] }) - Complexity = 3
                    // Dst: (SEH_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt)
/* 45841*/        0, /*End of Scope*/
/* 45842*/      /*SwitchType*/ 9, MVT::i64,// ->45853
/* 45844*/        OPC_CheckPatternPredicate, 97, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 45846*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SEH64), 0,
                      MVT::i64, 1/*#Ops*/, 0, 
                  // Src: (sext_inreg:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt, i16:{ *:[Other] }) - Complexity = 3
                  // Dst: (SEH64:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rt)
/* 45853*/      0, // EndSwitchType
/* 45854*/    /*Scope*/ 12, /*->45867*/
/* 45855*/      OPC_CheckValueType, MVT::i32,
/* 45857*/      OPC_MoveParent,
/* 45858*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 45860*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLL64_64), 0,
                    MVT::i64, 1/*#Ops*/, 0, 
                // Src: (sext_inreg:{ *:[i64] } GPR64:{ *:[i64] }:$src, i32:{ *:[Other] }) - Complexity = 3
                // Dst: (SLL64_64:{ *:[i64] } GPR64:{ *:[i64] }:$src)
/* 45867*/    0, /*End of Scope*/
/* 45868*/  /*SwitchOpcode*/ 67, TARGET_VAL(MipsISD::Mult),// ->45938
/* 45871*/    OPC_RecordChild0, // #0 = $rs
/* 45872*/    OPC_Scope, 49, /*->45923*/ // 2 children in Scope
/* 45874*/      OPC_CheckChild0Type, MVT::i32,
/* 45876*/      OPC_RecordChild1, // #1 = $rt
/* 45877*/      OPC_Scope, 10, /*->45889*/ // 4 children in Scope
/* 45879*/        OPC_CheckPatternPredicate, 98, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 45881*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMULT), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsMult:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (PseudoMULT:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 45889*/      /*Scope*/ 10, /*->45900*/
/* 45890*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 45892*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULT_DSP), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsMult:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MULT_DSP:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 45900*/      /*Scope*/ 10, /*->45911*/
/* 45901*/        OPC_CheckPatternPredicate, 99, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6())
/* 45903*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMULT_MM), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsMult:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (PseudoMULT_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 45911*/      /*Scope*/ 10, /*->45922*/
/* 45912*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 45914*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULT_DSP_MM), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsMult:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MULT_DSP_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 45922*/      0, /*End of Scope*/
/* 45923*/    /*Scope*/ 13, /*->45937*/
/* 45924*/      OPC_CheckChild0Type, MVT::i64,
/* 45926*/      OPC_RecordChild1, // #1 = $rt
/* 45927*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 45929*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoDMULT), 0,
                    MVT::Untyped, 2/*#Ops*/, 0, 1, 
                // Src: (MipsMult:{ *:[Untyped] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                // Dst: (PseudoDMULT:{ *:[Untyped] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 45937*/    0, /*End of Scope*/
/* 45938*/  /*SwitchOpcode*/ 67, TARGET_VAL(MipsISD::Multu),// ->46008
/* 45941*/    OPC_RecordChild0, // #0 = $rs
/* 45942*/    OPC_Scope, 49, /*->45993*/ // 2 children in Scope
/* 45944*/      OPC_CheckChild0Type, MVT::i32,
/* 45946*/      OPC_RecordChild1, // #1 = $rt
/* 45947*/      OPC_Scope, 10, /*->45959*/ // 4 children in Scope
/* 45949*/        OPC_CheckPatternPredicate, 98, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 45951*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMULTu), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsMultu:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (PseudoMULTu:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 45959*/      /*Scope*/ 10, /*->45970*/
/* 45960*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 45962*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULTU_DSP), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsMultu:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MULTU_DSP:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 45970*/      /*Scope*/ 10, /*->45981*/
/* 45971*/        OPC_CheckPatternPredicate, 99, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6())
/* 45973*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMULTu_MM), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsMultu:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (PseudoMULTu_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 45981*/      /*Scope*/ 10, /*->45992*/
/* 45982*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 45984*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULTU_DSP_MM), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsMultu:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MULTU_DSP_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 45992*/      0, /*End of Scope*/
/* 45993*/    /*Scope*/ 13, /*->46007*/
/* 45994*/      OPC_CheckChild0Type, MVT::i64,
/* 45996*/      OPC_RecordChild1, // #1 = $rt
/* 45997*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 45999*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoDMULTu), 0,
                    MVT::Untyped, 2/*#Ops*/, 0, 1, 
                // Src: (MipsMultu:{ *:[Untyped] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                // Dst: (PseudoDMULTu:{ *:[Untyped] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 46007*/    0, /*End of Scope*/
/* 46008*/  /*SwitchOpcode*/ 58, TARGET_VAL(MipsISD::MFHI),// ->46069
/* 46011*/    OPC_RecordChild0, // #0 = $hilo
/* 46012*/    OPC_SwitchType /*2 cases */, 42, MVT::i32,// ->46057
/* 46015*/      OPC_Scope, 9, /*->46026*/ // 4 children in Scope
/* 46017*/        OPC_CheckPatternPredicate, 98, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46019*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMFHI), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (MipsMFHI:{ *:[i32] } ACC64:{ *:[Untyped] }:$hilo) - Complexity = 3
                  // Dst: (PseudoMFHI:{ *:[i32] } ACC64:{ *:[Untyped] }:$hilo)
/* 46026*/      /*Scope*/ 9, /*->46036*/
/* 46027*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46029*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MFHI_DSP), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (MipsMFHI:{ *:[i32] } ACC64DSPOpnd:{ *:[Untyped] }:$ac) - Complexity = 3
                  // Dst: (MFHI_DSP:{ *:[i32] } ACC64DSPOpnd:{ *:[Untyped] }:$ac)
/* 46036*/      /*Scope*/ 9, /*->46046*/
/* 46037*/        OPC_CheckPatternPredicate, 99, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6())
/* 46039*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMFHI_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (MipsMFHI:{ *:[i32] } ACC64:{ *:[Untyped] }:$hilo) - Complexity = 3
                  // Dst: (PseudoMFHI_MM:{ *:[i32] } ACC64:{ *:[Untyped] }:$hilo)
/* 46046*/      /*Scope*/ 9, /*->46056*/
/* 46047*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46049*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MFHI_DSP_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (MipsMFHI:{ *:[i32] } ACC64DSPOpnd:{ *:[Untyped] }:$ac) - Complexity = 3
                  // Dst: (MFHI_DSP_MM:{ *:[i32] } ACC64DSPOpnd:{ *:[Untyped] }:$ac)
/* 46056*/      0, /*End of Scope*/
/* 46057*/    /*SwitchType*/ 9, MVT::i64,// ->46068
/* 46059*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46061*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMFHI64), 0,
                    MVT::i64, 1/*#Ops*/, 0, 
                // Src: (MipsMFHI:{ *:[i64] } ACC128:{ *:[Untyped] }:$hilo) - Complexity = 3
                // Dst: (PseudoMFHI64:{ *:[i64] } ACC128:{ *:[Untyped] }:$hilo)
/* 46068*/    0, // EndSwitchType
/* 46069*/  /*SwitchOpcode*/ 58, TARGET_VAL(MipsISD::MFLO),// ->46130
/* 46072*/    OPC_RecordChild0, // #0 = $hilo
/* 46073*/    OPC_SwitchType /*2 cases */, 42, MVT::i32,// ->46118
/* 46076*/      OPC_Scope, 9, /*->46087*/ // 4 children in Scope
/* 46078*/        OPC_CheckPatternPredicate, 98, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46080*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMFLO), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (MipsMFLO:{ *:[i32] } ACC64:{ *:[Untyped] }:$hilo) - Complexity = 3
                  // Dst: (PseudoMFLO:{ *:[i32] } ACC64:{ *:[Untyped] }:$hilo)
/* 46087*/      /*Scope*/ 9, /*->46097*/
/* 46088*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46090*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MFLO_DSP), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (MipsMFLO:{ *:[i32] } ACC64DSPOpnd:{ *:[Untyped] }:$ac) - Complexity = 3
                  // Dst: (MFLO_DSP:{ *:[i32] } ACC64DSPOpnd:{ *:[Untyped] }:$ac)
/* 46097*/      /*Scope*/ 9, /*->46107*/
/* 46098*/        OPC_CheckPatternPredicate, 99, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6())
/* 46100*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMFLO_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (MipsMFLO:{ *:[i32] } ACC64:{ *:[Untyped] }:$hilo) - Complexity = 3
                  // Dst: (PseudoMFLO_MM:{ *:[i32] } ACC64:{ *:[Untyped] }:$hilo)
/* 46107*/      /*Scope*/ 9, /*->46117*/
/* 46108*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46110*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MFLO_DSP_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (MipsMFLO:{ *:[i32] } ACC64DSPOpnd:{ *:[Untyped] }:$ac) - Complexity = 3
                  // Dst: (MFLO_DSP_MM:{ *:[i32] } ACC64DSPOpnd:{ *:[Untyped] }:$ac)
/* 46117*/      0, /*End of Scope*/
/* 46118*/    /*SwitchType*/ 9, MVT::i64,// ->46129
/* 46120*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46122*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMFLO64), 0,
                    MVT::i64, 1/*#Ops*/, 0, 
                // Src: (MipsMFLO:{ *:[i64] } ACC128:{ *:[Untyped] }:$hilo) - Complexity = 3
                // Dst: (PseudoMFLO64:{ *:[i64] } ACC128:{ *:[Untyped] }:$hilo)
/* 46129*/    0, // EndSwitchType
/* 46130*/  /*SwitchOpcode*/ 56, TARGET_VAL(MipsISD::MTLOHI),// ->46189
/* 46133*/    OPC_RecordChild0, // #0 = $lo
/* 46134*/    OPC_Scope, 38, /*->46174*/ // 2 children in Scope
/* 46136*/      OPC_CheckChild0Type, MVT::i32,
/* 46138*/      OPC_RecordChild1, // #1 = $hi
/* 46139*/      OPC_Scope, 10, /*->46151*/ // 3 children in Scope
/* 46141*/        OPC_CheckPatternPredicate, 98, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46143*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMTLOHI), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsMTLOHI:{ *:[Untyped] } GPR32:{ *:[i32] }:$lo, GPR32:{ *:[i32] }:$hi) - Complexity = 3
                  // Dst: (PseudoMTLOHI:{ *:[Untyped] } GPR32:{ *:[i32] }:$lo, GPR32:{ *:[i32] }:$hi)
/* 46151*/      /*Scope*/ 10, /*->46162*/
/* 46152*/        OPC_CheckPatternPredicate, 100, // (Subtarget->hasDSP()) && (!Subtarget->inMips16Mode())
/* 46154*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMTLOHI_DSP), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsMTLOHI:{ *:[Untyped] } GPR32:{ *:[i32] }:$lo, GPR32:{ *:[i32] }:$hi) - Complexity = 3
                  // Dst: (PseudoMTLOHI_DSP:{ *:[Untyped] } GPR32:{ *:[i32] }:$lo, GPR32:{ *:[i32] }:$hi)
/* 46162*/      /*Scope*/ 10, /*->46173*/
/* 46163*/        OPC_CheckPatternPredicate, 99, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6())
/* 46165*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMTLOHI_MM), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsMTLOHI:{ *:[Untyped] } GPR32:{ *:[i32] }:$lo, GPR32:{ *:[i32] }:$hi) - Complexity = 3
                  // Dst: (PseudoMTLOHI_MM:{ *:[Untyped] } GPR32:{ *:[i32] }:$lo, GPR32:{ *:[i32] }:$hi)
/* 46173*/      0, /*End of Scope*/
/* 46174*/    /*Scope*/ 13, /*->46188*/
/* 46175*/      OPC_CheckChild0Type, MVT::i64,
/* 46177*/      OPC_RecordChild1, // #1 = $hi
/* 46178*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46180*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMTLOHI64), 0,
                    MVT::Untyped, 2/*#Ops*/, 0, 1, 
                // Src: (MipsMTLOHI:{ *:[Untyped] } GPR64:{ *:[i64] }:$lo, GPR64:{ *:[i64] }:$hi) - Complexity = 3
                // Dst: (PseudoMTLOHI64:{ *:[Untyped] } GPR64:{ *:[i64] }:$lo, GPR64:{ *:[i64] }:$hi)
/* 46188*/    0, /*End of Scope*/
/* 46189*/  /*SwitchOpcode*/ 53, TARGET_VAL(MipsISD::MAdd),// ->46245
/* 46192*/    OPC_RecordChild0, // #0 = $rs
/* 46193*/    OPC_RecordChild1, // #1 = $rt
/* 46194*/    OPC_RecordChild2, // #2 = $acin
/* 46195*/    OPC_Scope, 11, /*->46208*/ // 4 children in Scope
/* 46197*/      OPC_CheckPatternPredicate, 101, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46199*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMADD), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMAdd:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (PseudoMADD:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin)
/* 46208*/    /*Scope*/ 11, /*->46220*/
/* 46209*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46211*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MADD_DSP), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMAdd:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MADD_DSP:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 46220*/    /*Scope*/ 11, /*->46232*/
/* 46221*/      OPC_CheckPatternPredicate, 99, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6())
/* 46223*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMADD_MM), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMAdd:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (PseudoMADD_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin)
/* 46232*/    /*Scope*/ 11, /*->46244*/
/* 46233*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46235*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MADD_DSP_MM), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMAdd:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MADD_DSP_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 46244*/    0, /*End of Scope*/
/* 46245*/  /*SwitchOpcode*/ 53, TARGET_VAL(MipsISD::MAddu),// ->46301
/* 46248*/    OPC_RecordChild0, // #0 = $rs
/* 46249*/    OPC_RecordChild1, // #1 = $rt
/* 46250*/    OPC_RecordChild2, // #2 = $acin
/* 46251*/    OPC_Scope, 11, /*->46264*/ // 4 children in Scope
/* 46253*/      OPC_CheckPatternPredicate, 101, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46255*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMADDU), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMAddu:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (PseudoMADDU:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin)
/* 46264*/    /*Scope*/ 11, /*->46276*/
/* 46265*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46267*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MADDU_DSP), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMAddu:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MADDU_DSP:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 46276*/    /*Scope*/ 11, /*->46288*/
/* 46277*/      OPC_CheckPatternPredicate, 99, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6())
/* 46279*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMADDU_MM), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMAddu:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (PseudoMADDU_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin)
/* 46288*/    /*Scope*/ 11, /*->46300*/
/* 46289*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46291*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MADDU_DSP_MM), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMAddu:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MADDU_DSP_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 46300*/    0, /*End of Scope*/
/* 46301*/  /*SwitchOpcode*/ 53, TARGET_VAL(MipsISD::MSub),// ->46357
/* 46304*/    OPC_RecordChild0, // #0 = $rs
/* 46305*/    OPC_RecordChild1, // #1 = $rt
/* 46306*/    OPC_RecordChild2, // #2 = $acin
/* 46307*/    OPC_Scope, 11, /*->46320*/ // 4 children in Scope
/* 46309*/      OPC_CheckPatternPredicate, 101, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46311*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMSUB), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMSub:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (PseudoMSUB:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin)
/* 46320*/    /*Scope*/ 11, /*->46332*/
/* 46321*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46323*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUB_DSP), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMSub:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MSUB_DSP:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 46332*/    /*Scope*/ 11, /*->46344*/
/* 46333*/      OPC_CheckPatternPredicate, 99, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6())
/* 46335*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMSUB_MM), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMSub:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (PseudoMSUB_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin)
/* 46344*/    /*Scope*/ 11, /*->46356*/
/* 46345*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46347*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUB_DSP_MM), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMSub:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MSUB_DSP_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 46356*/    0, /*End of Scope*/
/* 46357*/  /*SwitchOpcode*/ 53, TARGET_VAL(MipsISD::MSubu),// ->46413
/* 46360*/    OPC_RecordChild0, // #0 = $rs
/* 46361*/    OPC_RecordChild1, // #1 = $rt
/* 46362*/    OPC_RecordChild2, // #2 = $acin
/* 46363*/    OPC_Scope, 11, /*->46376*/ // 4 children in Scope
/* 46365*/      OPC_CheckPatternPredicate, 101, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46367*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMSUBU), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMSubu:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (PseudoMSUBU:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin)
/* 46376*/    /*Scope*/ 11, /*->46388*/
/* 46377*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46379*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUBU_DSP), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMSubu:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MSUBU_DSP:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 46388*/    /*Scope*/ 11, /*->46400*/
/* 46389*/      OPC_CheckPatternPredicate, 99, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6())
/* 46391*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoMSUBU_MM), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMSubu:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (PseudoMSUBU_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64:{ *:[Untyped] }:$acin)
/* 46400*/    /*Scope*/ 11, /*->46412*/
/* 46401*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46403*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUBU_DSP_MM), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMSubu:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MSUBU_DSP_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 46412*/    0, /*End of Scope*/
/* 46413*/  /*SwitchOpcode*/ 53, TARGET_VAL(ISD::SUBC),// ->46469
/* 46416*/    OPC_RecordChild0, // #0 = $lhs
/* 46417*/    OPC_RecordChild1, // #1 = $rhs
/* 46418*/    OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->46456
/* 46421*/      OPC_Scope, 10, /*->46433*/ // 3 children in Scope
/* 46423*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 46425*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBu), 0|OPFL_GlueOutput,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (subc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs) - Complexity = 3
                  // Dst: (SUBu:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs)
/* 46433*/      /*Scope*/ 10, /*->46444*/
/* 46434*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 46436*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBu_MM), 0|OPFL_GlueOutput,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (subc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs) - Complexity = 3
                  // Dst: (SUBu_MM:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs)
/* 46444*/      /*Scope*/ 10, /*->46455*/
/* 46445*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 46447*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_MMR6), 0|OPFL_GlueOutput,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (subc:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs) - Complexity = 3
                  // Dst: (SUBU_MMR6:{ *:[i32] } GPR32:{ *:[i32] }:$lhs, GPR32:{ *:[i32] }:$rhs)
/* 46455*/      0, /*End of Scope*/
/* 46456*/    /*SwitchType*/ 10, MVT::i64,// ->46468
/* 46458*/      OPC_CheckPatternPredicate, 64, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 46460*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DSUBu), 0|OPFL_GlueOutput,
                    MVT::i64, 2/*#Ops*/, 0, 1, 
                // Src: (subc:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs) - Complexity = 3
                // Dst: (DSUBu:{ *:[i64] } GPR64:{ *:[i64] }:$lhs, GPR64:{ *:[i64] }:$rhs)
/* 46468*/    0, // EndSwitchType
/* 46469*/  /*SwitchOpcode*/ 38|128,18/*2342*/, TARGET_VAL(ISD::BITCAST),// ->48815
/* 46473*/    OPC_RecordChild0, // #0 = $fs
/* 46474*/    OPC_Scope, 68, /*->46544*/ // 13 children in Scope
/* 46476*/      OPC_CheckChild0Type, MVT::f32,
/* 46478*/      OPC_SwitchType /*3 cases */, 32, MVT::i32,// ->46513
/* 46481*/        OPC_Scope, 9, /*->46492*/ // 3 children in Scope
/* 46483*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 46485*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MFC1), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (bitconvert:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs) - Complexity = 3
                    // Dst: (MFC1:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs)
/* 46492*/        /*Scope*/ 9, /*->46502*/
/* 46493*/          OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 46495*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MFC1_MM), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (bitconvert:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs) - Complexity = 3
                    // Dst: (MFC1_MM:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs)
/* 46502*/        /*Scope*/ 9, /*->46512*/
/* 46503*/          OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 46505*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MFC1_MMR6), 0,
                        MVT::i32, 1/*#Ops*/, 0, 
                    // Src: (bitconvert:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs) - Complexity = 3
                    // Dst: (MFC1_MMR6:{ *:[i32] } FGR32Opnd:{ *:[f32] }:$fs)
/* 46512*/        0, /*End of Scope*/
/* 46513*/      /*SwitchType*/ 13, MVT::v2i16,// ->46528
/* 46515*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46517*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 46520*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (bitconvert:{ *:[v2i16] } FGR32:{ *:[f32] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[v2i16] } FGR32:{ *:[f32] }:$src, DSPR:{ *:[i32] })
/* 46528*/      /*SwitchType*/ 13, MVT::v4i8,// ->46543
/* 46530*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46532*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 46535*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (bitconvert:{ *:[v4i8] } FGR32:{ *:[f32] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[v4i8] } FGR32:{ *:[f32] }:$src, DSPR:{ *:[i32] })
/* 46543*/      0, // EndSwitchType
/* 46544*/    /*Scope*/ 13, /*->46558*/
/* 46545*/      OPC_CheckChild0Type, MVT::f64,
/* 46547*/      OPC_CheckType, MVT::i64,
/* 46549*/      OPC_CheckPatternPredicate, 102, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 46551*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DMFC1), 0,
                    MVT::i64, 1/*#Ops*/, 0, 
                // Src: (bitconvert:{ *:[i64] } FGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                // Dst: (DMFC1:{ *:[i64] } FGR64Opnd:{ *:[f64] }:$fs)
/* 46558*/    /*Scope*/ 34, /*->46593*/
/* 46559*/      OPC_CheckChild0Type, MVT::v2i16,
/* 46561*/      OPC_SwitchType /*2 cases */, 13, MVT::i32,// ->46577
/* 46564*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46566*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 46569*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (bitconvert:{ *:[i32] } DSPR:{ *:[v2i16] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[i32] } DSPR:{ *:[v2i16] }:$src, GPR32:{ *:[i32] })
/* 46577*/      /*SwitchType*/ 13, MVT::f32,// ->46592
/* 46579*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46581*/        OPC_EmitInteger, MVT::i32, Mips::FGR32RegClassID,
/* 46584*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::f32, 2/*#Ops*/, 0, 1, 
                  // Src: (bitconvert:{ *:[f32] } DSPR:{ *:[v2i16] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[f32] } DSPR:{ *:[v2i16] }:$src, FGR32:{ *:[i32] })
/* 46592*/      0, // EndSwitchType
/* 46593*/    /*Scope*/ 34, /*->46628*/
/* 46594*/      OPC_CheckChild0Type, MVT::v4i8,
/* 46596*/      OPC_SwitchType /*2 cases */, 13, MVT::i32,// ->46612
/* 46599*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46601*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 46604*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (bitconvert:{ *:[i32] } DSPR:{ *:[v4i8] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[i32] } DSPR:{ *:[v4i8] }:$src, GPR32:{ *:[i32] })
/* 46612*/      /*SwitchType*/ 13, MVT::f32,// ->46627
/* 46614*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46616*/        OPC_EmitInteger, MVT::i32, Mips::FGR32RegClassID,
/* 46619*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::f32, 2/*#Ops*/, 0, 1, 
                  // Src: (bitconvert:{ *:[f32] } DSPR:{ *:[v4i8] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[f32] } DSPR:{ *:[v4i8] }:$src, FGR32:{ *:[i32] })
/* 46627*/      0, // EndSwitchType
/* 46628*/    /*Scope*/ 68, /*->46697*/
/* 46629*/      OPC_CheckChild0Type, MVT::i32,
/* 46631*/      OPC_SwitchType /*3 cases */, 32, MVT::f32,// ->46666
/* 46634*/        OPC_Scope, 9, /*->46645*/ // 3 children in Scope
/* 46636*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 46638*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MTC1), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (bitconvert:{ *:[f32] } GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                    // Dst: (MTC1:{ *:[f32] } GPR32Opnd:{ *:[i32] }:$rt)
/* 46645*/        /*Scope*/ 9, /*->46655*/
/* 46646*/          OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 46648*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MTC1_MM), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (bitconvert:{ *:[f32] } GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                    // Dst: (MTC1_MM:{ *:[f32] } GPR32Opnd:{ *:[i32] }:$rt)
/* 46655*/        /*Scope*/ 9, /*->46665*/
/* 46656*/          OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 46658*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MTC1_MMR6), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (bitconvert:{ *:[f32] } GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                    // Dst: (MTC1_MMR6:{ *:[f32] } GPR32Opnd:{ *:[i32] }:$rt)
/* 46665*/        0, /*End of Scope*/
/* 46666*/      /*SwitchType*/ 13, MVT::v2i16,// ->46681
/* 46668*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46670*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 46673*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (bitconvert:{ *:[v2i16] } GPR32:{ *:[i32] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[v2i16] } GPR32:{ *:[i32] }:$src, DSPR:{ *:[i32] })
/* 46681*/      /*SwitchType*/ 13, MVT::v4i8,// ->46696
/* 46683*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46685*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 46688*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (bitconvert:{ *:[v4i8] } GPR32:{ *:[i32] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[v4i8] } GPR32:{ *:[i32] }:$src, DSPR:{ *:[i32] })
/* 46696*/      0, // EndSwitchType
/* 46697*/    /*Scope*/ 13, /*->46711*/
/* 46698*/      OPC_CheckChild0Type, MVT::i64,
/* 46700*/      OPC_CheckType, MVT::f64,
/* 46702*/      OPC_CheckPatternPredicate, 102, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 46704*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DMTC1), 0,
                    MVT::f64, 1/*#Ops*/, 0, 
                // Src: (bitconvert:{ *:[f64] } GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                // Dst: (DMTC1:{ *:[f64] } GPR64Opnd:{ *:[i64] }:$rt)
/* 46711*/    /*Scope*/ 36|128,2/*292*/, /*->47005*/
/* 46713*/      OPC_CheckChild0Type, MVT::v8f16,
/* 46715*/      OPC_SwitchType /*6 cases */, 13, MVT::v8i16,// ->46731
/* 46718*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 46720*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 46723*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (bitconvert:{ *:[v8i16] } v8f16:{ *:[v8f16] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[v8i16] } v8f16:{ *:[v8f16] }:$src, MSA128H:{ *:[i32] })
/* 46731*/      /*SwitchType*/ 53, MVT::v16i8,// ->46786
/* 46733*/        OPC_Scope, 13, /*->46748*/ // 2 children in Scope
/* 46735*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 46737*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 46740*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v16i8] } v8f16:{ *:[v8f16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v16i8] } v8f16:{ *:[v8f16] }:$src, MSA128B:{ *:[i32] })
/* 46748*/        /*Scope*/ 36, /*->46785*/
/* 46749*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 46751*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 46754*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 46762*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 46766*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 46774*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 46777*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v16i8] } v8f16:{ *:[v8f16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v16i8] } (SHF_B:{ *:[v16i8] } (COPY_TO_REGCLASS:{ *:[v16i8] } v8f16:{ *:[v8f16] }:$src, MSA128B:{ *:[i32] }), 177:{ *:[i32] }), MSA128B:{ *:[i32] })
/* 46785*/        0, /*End of Scope*/
/* 46786*/      /*SwitchType*/ 53, MVT::v4i32,// ->46841
/* 46788*/        OPC_Scope, 13, /*->46803*/ // 2 children in Scope
/* 46790*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 46792*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 46795*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v4i32] } v8f16:{ *:[v8f16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4i32] } v8f16:{ *:[v8f16] }:$src, MSA128W:{ *:[i32] })
/* 46803*/        /*Scope*/ 36, /*->46840*/
/* 46804*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 46806*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 46809*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 46817*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 46821*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 46829*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 46832*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v4i32] } v8f16:{ *:[v8f16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4i32] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v8f16:{ *:[v8f16] }:$src, MSA128H:{ *:[i32] }), 177:{ *:[i32] }), MSA128W:{ *:[i32] })
/* 46840*/        0, /*End of Scope*/
/* 46841*/      /*SwitchType*/ 52, MVT::v2i64,// ->46895
/* 46843*/        OPC_Scope, 13, /*->46858*/ // 2 children in Scope
/* 46845*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 46847*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 46850*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v2i64] } v8f16:{ *:[v8f16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2i64] } v8f16:{ *:[v8f16] }:$src, MSA128D:{ *:[i32] })
/* 46858*/        /*Scope*/ 35, /*->46894*/
/* 46859*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 46861*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 46864*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 46872*/          OPC_EmitInteger, MVT::i32, 27, 
/* 46875*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 46883*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 46886*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2i64, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v2i64] } v8f16:{ *:[v8f16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2i64] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v8f16:{ *:[v8f16] }:$src, MSA128H:{ *:[i32] }), 27:{ *:[i32] }), MSA128D:{ *:[i32] })
/* 46894*/        0, /*End of Scope*/
/* 46895*/      /*SwitchType*/ 53, MVT::v4f32,// ->46950
/* 46897*/        OPC_Scope, 13, /*->46912*/ // 2 children in Scope
/* 46899*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 46901*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 46904*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4f32, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v4f32] } v8f16:{ *:[v8f16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4f32] } v8f16:{ *:[v8f16] }:$src, MSA128W:{ *:[i32] })
/* 46912*/        /*Scope*/ 36, /*->46949*/
/* 46913*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 46915*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 46918*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 46926*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 46930*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 46938*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 46941*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4f32, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v4f32] } v8f16:{ *:[v8f16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4f32] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v8f16:{ *:[v8f16] }:$src, MSA128H:{ *:[i32] }), 177:{ *:[i32] }), MSA128W:{ *:[i32] })
/* 46949*/        0, /*End of Scope*/
/* 46950*/      /*SwitchType*/ 52, MVT::v2f64,// ->47004
/* 46952*/        OPC_Scope, 13, /*->46967*/ // 2 children in Scope
/* 46954*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 46956*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 46959*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2f64, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v2f64] } v8f16:{ *:[v8f16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2f64] } v8f16:{ *:[v8f16] }:$src, MSA128D:{ *:[i32] })
/* 46967*/        /*Scope*/ 35, /*->47003*/
/* 46968*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 46970*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 46973*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 46981*/          OPC_EmitInteger, MVT::i32, 27, 
/* 46984*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 46992*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 46995*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2f64, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v2f64] } v8f16:{ *:[v8f16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2f64] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v8f16:{ *:[v8f16] }:$src, MSA128H:{ *:[i32] }), 27:{ *:[i32] }), MSA128D:{ *:[i32] })
/* 47003*/        0, /*End of Scope*/
/* 47004*/      0, // EndSwitchType
/* 47005*/    /*Scope*/ 20|128,2/*276*/, /*->47283*/
/* 47007*/      OPC_CheckChild0Type, MVT::v4f32,
/* 47009*/      OPC_SwitchType /*6 cases */, 13, MVT::v4i32,// ->47025
/* 47012*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 47014*/        OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47017*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (bitconvert:{ *:[v4i32] } v4f32:{ *:[v4f32] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[v4i32] } v4f32:{ *:[v4f32] }:$src, MSA128W:{ *:[i32] })
/* 47025*/      /*SwitchType*/ 52, MVT::v16i8,// ->47079
/* 47027*/        OPC_Scope, 13, /*->47042*/ // 2 children in Scope
/* 47029*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47031*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47034*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v16i8] } v4f32:{ *:[v4f32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v16i8] } v4f32:{ *:[v4f32] }:$src, MSA128B:{ *:[i32] })
/* 47042*/        /*Scope*/ 35, /*->47078*/
/* 47043*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47045*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47048*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47056*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47059*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47067*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47070*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v16i8] } v4f32:{ *:[v4f32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v16i8] } (SHF_B:{ *:[v16i8] } (COPY_TO_REGCLASS:{ *:[v16i8] } v4f32:{ *:[v4f32] }:$src, MSA128B:{ *:[i32] }), 27:{ *:[i32] }), MSA128B:{ *:[i32] })
/* 47078*/        0, /*End of Scope*/
/* 47079*/      /*SwitchType*/ 53, MVT::v8i16,// ->47134
/* 47081*/        OPC_Scope, 13, /*->47096*/ // 2 children in Scope
/* 47083*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47085*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47088*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v8i16] } v4f32:{ *:[v4f32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v8i16] } v4f32:{ *:[v4f32] }:$src, MSA128H:{ *:[i32] })
/* 47096*/        /*Scope*/ 36, /*->47133*/
/* 47097*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47099*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47102*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47110*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47114*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47122*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47125*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v8i16] } v4f32:{ *:[v4f32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v8i16] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v4f32:{ *:[v4f32] }:$src, MSA128H:{ *:[i32] }), 177:{ *:[i32] }), MSA128H:{ *:[i32] })
/* 47133*/        0, /*End of Scope*/
/* 47134*/      /*SwitchType*/ 53, MVT::v2i64,// ->47189
/* 47136*/        OPC_Scope, 13, /*->47151*/ // 2 children in Scope
/* 47138*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47140*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47143*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v2i64] } v4f32:{ *:[v4f32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2i64] } v4f32:{ *:[v4f32] }:$src, MSA128D:{ *:[i32] })
/* 47151*/        /*Scope*/ 36, /*->47188*/
/* 47152*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47154*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47157*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47165*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47169*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47177*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47180*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2i64, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v2i64] } v4f32:{ *:[v4f32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2i64] } (SHF_W:{ *:[v4i32] } (COPY_TO_REGCLASS:{ *:[v4i32] } v4f32:{ *:[v4f32] }:$src, MSA128W:{ *:[i32] }), 177:{ *:[i32] }), MSA128D:{ *:[i32] })
/* 47188*/        0, /*End of Scope*/
/* 47189*/      /*SwitchType*/ 53, MVT::v2f64,// ->47244
/* 47191*/        OPC_Scope, 13, /*->47206*/ // 2 children in Scope
/* 47193*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47195*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47198*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2f64, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v2f64] } v4f32:{ *:[v4f32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2f64] } v4f32:{ *:[v4f32] }:$src, MSA128D:{ *:[i32] })
/* 47206*/        /*Scope*/ 36, /*->47243*/
/* 47207*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47209*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47212*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47220*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47224*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47232*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47235*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2f64, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v2f64] } v4f32:{ *:[v4f32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2f64] } (SHF_W:{ *:[v4i32] } (COPY_TO_REGCLASS:{ *:[v4i32] } v4f32:{ *:[v4f32] }:$src, MSA128W:{ *:[i32] }), 177:{ *:[i32] }), MSA128D:{ *:[i32] })
/* 47243*/        0, /*End of Scope*/
/* 47244*/      /*SwitchType*/ 36, MVT::v8f16,// ->47282
/* 47246*/        OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47248*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47251*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47259*/        OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47263*/        OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47271*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47274*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8f16, 2/*#Ops*/, 4, 5, 
                  // Src: (bitconvert:{ *:[v8f16] } v4f32:{ *:[v4f32] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[v8f16] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v4f32:{ *:[v4f32] }:$src, MSA128H:{ *:[i32] }), 177:{ *:[i32] }), MSA128H:{ *:[i32] })
/* 47282*/      0, // EndSwitchType
/* 47283*/    /*Scope*/ 41|128,2/*297*/, /*->47582*/
/* 47285*/      OPC_CheckChild0Type, MVT::v2f64,
/* 47287*/      OPC_SwitchType /*6 cases */, 13, MVT::v2i64,// ->47303
/* 47290*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 47292*/        OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47295*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (bitconvert:{ *:[v2i64] } v2f64:{ *:[v2f64] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[v2i64] } v2f64:{ *:[v2f64] }:$src, MSA128D:{ *:[i32] })
/* 47303*/      /*SwitchType*/ 75, MVT::v16i8,// ->47380
/* 47305*/        OPC_Scope, 13, /*->47320*/ // 2 children in Scope
/* 47307*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47309*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47312*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v16i8] } v2f64:{ *:[v2f64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v16i8] } v2f64:{ *:[v2f64] }:$src, MSA128B:{ *:[i32] })
/* 47320*/        /*Scope*/ 58, /*->47379*/
/* 47321*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47323*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47326*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47334*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47337*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47345*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47348*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 47356*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47360*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 47368*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47371*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 8, 9, 
                    // Src: (bitconvert:{ *:[v16i8] } v2f64:{ *:[v2f64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v16i8] } (SHF_W:{ *:[v4i32] } (COPY_TO_REGCLASS:{ *:[v4i32] } (SHF_B:{ *:[v16i8] } (COPY_TO_REGCLASS:{ *:[v16i8] } v2f64:{ *:[v2f64] }:$src, MSA128B:{ *:[i32] }), 27:{ *:[i32] }), MSA128W:{ *:[i32] }), 177:{ *:[i32] }), MSA128B:{ *:[i32] })
/* 47379*/        0, /*End of Scope*/
/* 47380*/      /*SwitchType*/ 52, MVT::v8i16,// ->47434
/* 47382*/        OPC_Scope, 13, /*->47397*/ // 2 children in Scope
/* 47384*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47386*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47389*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v8i16] } v2f64:{ *:[v2f64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v8i16] } v2f64:{ *:[v2f64] }:$src, MSA128H:{ *:[i32] })
/* 47397*/        /*Scope*/ 35, /*->47433*/
/* 47398*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47400*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47403*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47411*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47414*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47422*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47425*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v8i16] } v2f64:{ *:[v2f64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v8i16] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v2f64:{ *:[v2f64] }:$src, MSA128H:{ *:[i32] }), 27:{ *:[i32] }), MSA128H:{ *:[i32] })
/* 47433*/        0, /*End of Scope*/
/* 47434*/      /*SwitchType*/ 53, MVT::v4i32,// ->47489
/* 47436*/        OPC_Scope, 13, /*->47451*/ // 2 children in Scope
/* 47438*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47440*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47443*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v4i32] } v2f64:{ *:[v2f64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4i32] } v2f64:{ *:[v2f64] }:$src, MSA128W:{ *:[i32] })
/* 47451*/        /*Scope*/ 36, /*->47488*/
/* 47452*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47454*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47457*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47465*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47469*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47477*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47480*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v4i32] } v2f64:{ *:[v2f64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4i32] } (SHF_W:{ *:[v4i32] } (COPY_TO_REGCLASS:{ *:[v4i32] } v2f64:{ *:[v2f64] }:$src, MSA128W:{ *:[i32] }), 177:{ *:[i32] }), MSA128W:{ *:[i32] })
/* 47488*/        0, /*End of Scope*/
/* 47489*/      /*SwitchType*/ 53, MVT::v4f32,// ->47544
/* 47491*/        OPC_Scope, 13, /*->47506*/ // 2 children in Scope
/* 47493*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47495*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47498*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4f32, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v4f32] } v2f64:{ *:[v2f64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4f32] } v2f64:{ *:[v2f64] }:$src, MSA128W:{ *:[i32] })
/* 47506*/        /*Scope*/ 36, /*->47543*/
/* 47507*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47509*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47512*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47520*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47524*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47532*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47535*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4f32, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v4f32] } v2f64:{ *:[v2f64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4f32] } (SHF_W:{ *:[v4i32] } (COPY_TO_REGCLASS:{ *:[v4i32] } v2f64:{ *:[v2f64] }:$src, MSA128W:{ *:[i32] }), 177:{ *:[i32] }), MSA128W:{ *:[i32] })
/* 47543*/        0, /*End of Scope*/
/* 47544*/      /*SwitchType*/ 35, MVT::v8f16,// ->47581
/* 47546*/        OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47548*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47551*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47559*/        OPC_EmitInteger, MVT::i32, 27, 
/* 47562*/        OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47570*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47573*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8f16, 2/*#Ops*/, 4, 5, 
                  // Src: (bitconvert:{ *:[v8f16] } v2f64:{ *:[v2f64] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[v8f16] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v2f64:{ *:[v2f64] }:$src, MSA128H:{ *:[i32] }), 27:{ *:[i32] }), MSA128H:{ *:[i32] })
/* 47581*/      0, // EndSwitchType
/* 47582*/    /*Scope*/ 36|128,2/*292*/, /*->47876*/
/* 47584*/      OPC_CheckChild0Type, MVT::v8i16,
/* 47586*/      OPC_SwitchType /*6 cases */, 53, MVT::v16i8,// ->47642
/* 47589*/        OPC_Scope, 13, /*->47604*/ // 2 children in Scope
/* 47591*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47593*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47596*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v16i8] } v8i16:{ *:[v8i16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v16i8] } v8i16:{ *:[v8i16] }:$src, MSA128B:{ *:[i32] })
/* 47604*/        /*Scope*/ 36, /*->47641*/
/* 47605*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47607*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47610*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47618*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47622*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47630*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47633*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v16i8] } v8i16:{ *:[v8i16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v16i8] } (SHF_B:{ *:[v16i8] } (COPY_TO_REGCLASS:{ *:[v16i8] } v8i16:{ *:[v8i16] }:$src, MSA128B:{ *:[i32] }), 177:{ *:[i32] }), MSA128B:{ *:[i32] })
/* 47641*/        0, /*End of Scope*/
/* 47642*/      /*SwitchType*/ 53, MVT::v4i32,// ->47697
/* 47644*/        OPC_Scope, 13, /*->47659*/ // 2 children in Scope
/* 47646*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47648*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47651*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v4i32] } v8i16:{ *:[v8i16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4i32] } v8i16:{ *:[v8i16] }:$src, MSA128W:{ *:[i32] })
/* 47659*/        /*Scope*/ 36, /*->47696*/
/* 47660*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47662*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47665*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47673*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47677*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47685*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47688*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v4i32] } v8i16:{ *:[v8i16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4i32] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$src, MSA128H:{ *:[i32] }), 177:{ *:[i32] }), MSA128W:{ *:[i32] })
/* 47696*/        0, /*End of Scope*/
/* 47697*/      /*SwitchType*/ 52, MVT::v2i64,// ->47751
/* 47699*/        OPC_Scope, 13, /*->47714*/ // 2 children in Scope
/* 47701*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47703*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47706*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v2i64] } v8i16:{ *:[v8i16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2i64] } v8i16:{ *:[v8i16] }:$src, MSA128D:{ *:[i32] })
/* 47714*/        /*Scope*/ 35, /*->47750*/
/* 47715*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47717*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47720*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47728*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47731*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47739*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47742*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2i64, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v2i64] } v8i16:{ *:[v8i16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2i64] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$src, MSA128H:{ *:[i32] }), 27:{ *:[i32] }), MSA128D:{ *:[i32] })
/* 47750*/        0, /*End of Scope*/
/* 47751*/      /*SwitchType*/ 13, MVT::v8f16,// ->47766
/* 47753*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 47755*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47758*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8f16, 2/*#Ops*/, 0, 1, 
                  // Src: (bitconvert:{ *:[v8f16] } v8i16:{ *:[v8i16] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[v8f16] } v8i16:{ *:[v8i16] }:$src, MSA128H:{ *:[i32] })
/* 47766*/      /*SwitchType*/ 53, MVT::v4f32,// ->47821
/* 47768*/        OPC_Scope, 13, /*->47783*/ // 2 children in Scope
/* 47770*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47772*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47775*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4f32, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v4f32] } v8i16:{ *:[v8i16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4f32] } v8i16:{ *:[v8i16] }:$src, MSA128W:{ *:[i32] })
/* 47783*/        /*Scope*/ 36, /*->47820*/
/* 47784*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47786*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47789*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47797*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47801*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47809*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47812*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4f32, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v4f32] } v8i16:{ *:[v8i16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4f32] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$src, MSA128H:{ *:[i32] }), 177:{ *:[i32] }), MSA128W:{ *:[i32] })
/* 47820*/        0, /*End of Scope*/
/* 47821*/      /*SwitchType*/ 52, MVT::v2f64,// ->47875
/* 47823*/        OPC_Scope, 13, /*->47838*/ // 2 children in Scope
/* 47825*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47827*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47830*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2f64, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v2f64] } v8i16:{ *:[v8i16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2f64] } v8i16:{ *:[v8i16] }:$src, MSA128D:{ *:[i32] })
/* 47838*/        /*Scope*/ 35, /*->47874*/
/* 47839*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47841*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47844*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47852*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47855*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47863*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47866*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2f64, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v2f64] } v8i16:{ *:[v8i16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2f64] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$src, MSA128H:{ *:[i32] }), 27:{ *:[i32] }), MSA128D:{ *:[i32] })
/* 47874*/        0, /*End of Scope*/
/* 47875*/      0, // EndSwitchType
/* 47876*/    /*Scope*/ 20|128,2/*276*/, /*->48154*/
/* 47878*/      OPC_CheckChild0Type, MVT::v4i32,
/* 47880*/      OPC_SwitchType /*6 cases */, 52, MVT::v16i8,// ->47935
/* 47883*/        OPC_Scope, 13, /*->47898*/ // 2 children in Scope
/* 47885*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47887*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47890*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v16i8] } v4i32:{ *:[v4i32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v16i8] } v4i32:{ *:[v4i32] }:$src, MSA128B:{ *:[i32] })
/* 47898*/        /*Scope*/ 35, /*->47934*/
/* 47899*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47901*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47904*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47912*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47915*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47923*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47926*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v16i8] } v4i32:{ *:[v4i32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v16i8] } (SHF_B:{ *:[v16i8] } (COPY_TO_REGCLASS:{ *:[v16i8] } v4i32:{ *:[v4i32] }:$src, MSA128B:{ *:[i32] }), 27:{ *:[i32] }), MSA128B:{ *:[i32] })
/* 47934*/        0, /*End of Scope*/
/* 47935*/      /*SwitchType*/ 53, MVT::v8i16,// ->47990
/* 47937*/        OPC_Scope, 13, /*->47952*/ // 2 children in Scope
/* 47939*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47941*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47944*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v8i16] } v4i32:{ *:[v4i32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v8i16] } v4i32:{ *:[v4i32] }:$src, MSA128H:{ *:[i32] })
/* 47952*/        /*Scope*/ 36, /*->47989*/
/* 47953*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47955*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47958*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47966*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47970*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47978*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47981*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v8i16] } v4i32:{ *:[v4i32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v8i16] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v4i32:{ *:[v4i32] }:$src, MSA128H:{ *:[i32] }), 177:{ *:[i32] }), MSA128H:{ *:[i32] })
/* 47989*/        0, /*End of Scope*/
/* 47990*/      /*SwitchType*/ 53, MVT::v2i64,// ->48045
/* 47992*/        OPC_Scope, 13, /*->48007*/ // 2 children in Scope
/* 47994*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47996*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47999*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v2i64] } v4i32:{ *:[v4i32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2i64] } v4i32:{ *:[v4i32] }:$src, MSA128D:{ *:[i32] })
/* 48007*/        /*Scope*/ 36, /*->48044*/
/* 48008*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48010*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48013*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48021*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48025*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48033*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48036*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2i64, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v2i64] } v4i32:{ *:[v4i32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2i64] } (SHF_W:{ *:[v4i32] } (COPY_TO_REGCLASS:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$src, MSA128W:{ *:[i32] }), 177:{ *:[i32] }), MSA128D:{ *:[i32] })
/* 48044*/        0, /*End of Scope*/
/* 48045*/      /*SwitchType*/ 13, MVT::v4f32,// ->48060
/* 48047*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 48049*/        OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48052*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4f32, 2/*#Ops*/, 0, 1, 
                  // Src: (bitconvert:{ *:[v4f32] } v4i32:{ *:[v4i32] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[v4f32] } v4i32:{ *:[v4i32] }:$src, MSA128W:{ *:[i32] })
/* 48060*/      /*SwitchType*/ 53, MVT::v2f64,// ->48115
/* 48062*/        OPC_Scope, 13, /*->48077*/ // 2 children in Scope
/* 48064*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48066*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48069*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2f64, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v2f64] } v4i32:{ *:[v4i32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2f64] } v4i32:{ *:[v4i32] }:$src, MSA128D:{ *:[i32] })
/* 48077*/        /*Scope*/ 36, /*->48114*/
/* 48078*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48080*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48083*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48091*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48095*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48103*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48106*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2f64, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v2f64] } v4i32:{ *:[v4i32] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2f64] } (SHF_W:{ *:[v4i32] } (COPY_TO_REGCLASS:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$src, MSA128W:{ *:[i32] }), 177:{ *:[i32] }), MSA128D:{ *:[i32] })
/* 48114*/        0, /*End of Scope*/
/* 48115*/      /*SwitchType*/ 36, MVT::v8f16,// ->48153
/* 48117*/        OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48119*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48122*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48130*/        OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48134*/        OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48142*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48145*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8f16, 2/*#Ops*/, 4, 5, 
                  // Src: (bitconvert:{ *:[v8f16] } v4i32:{ *:[v4i32] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[v8f16] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v4i32:{ *:[v4i32] }:$src, MSA128H:{ *:[i32] }), 177:{ *:[i32] }), MSA128H:{ *:[i32] })
/* 48153*/      0, // EndSwitchType
/* 48154*/    /*Scope*/ 41|128,2/*297*/, /*->48453*/
/* 48156*/      OPC_CheckChild0Type, MVT::v2i64,
/* 48158*/      OPC_SwitchType /*6 cases */, 75, MVT::v16i8,// ->48236
/* 48161*/        OPC_Scope, 13, /*->48176*/ // 2 children in Scope
/* 48163*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48165*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48168*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v16i8] } v2i64:{ *:[v2i64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v16i8] } v2i64:{ *:[v2i64] }:$src, MSA128B:{ *:[i32] })
/* 48176*/        /*Scope*/ 58, /*->48235*/
/* 48177*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48179*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48182*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48190*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48193*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48201*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48204*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 48212*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48216*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 48224*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48227*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 8, 9, 
                    // Src: (bitconvert:{ *:[v16i8] } v2i64:{ *:[v2i64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v16i8] } (SHF_W:{ *:[v4i32] } (COPY_TO_REGCLASS:{ *:[v4i32] } (SHF_B:{ *:[v16i8] } (COPY_TO_REGCLASS:{ *:[v16i8] } v2i64:{ *:[v2i64] }:$src, MSA128B:{ *:[i32] }), 27:{ *:[i32] }), MSA128W:{ *:[i32] }), 177:{ *:[i32] }), MSA128B:{ *:[i32] })
/* 48235*/        0, /*End of Scope*/
/* 48236*/      /*SwitchType*/ 52, MVT::v8i16,// ->48290
/* 48238*/        OPC_Scope, 13, /*->48253*/ // 2 children in Scope
/* 48240*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48242*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48245*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v8i16] } v2i64:{ *:[v2i64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v8i16] } v2i64:{ *:[v2i64] }:$src, MSA128H:{ *:[i32] })
/* 48253*/        /*Scope*/ 35, /*->48289*/
/* 48254*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48256*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48259*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48267*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48270*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48278*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48281*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v8i16] } v2i64:{ *:[v2i64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v8i16] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v2i64:{ *:[v2i64] }:$src, MSA128H:{ *:[i32] }), 27:{ *:[i32] }), MSA128H:{ *:[i32] })
/* 48289*/        0, /*End of Scope*/
/* 48290*/      /*SwitchType*/ 53, MVT::v4i32,// ->48345
/* 48292*/        OPC_Scope, 13, /*->48307*/ // 2 children in Scope
/* 48294*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48296*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48299*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v4i32] } v2i64:{ *:[v2i64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4i32] } v2i64:{ *:[v2i64] }:$src, MSA128W:{ *:[i32] })
/* 48307*/        /*Scope*/ 36, /*->48344*/
/* 48308*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48310*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48313*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48321*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48325*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48333*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48336*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v4i32] } v2i64:{ *:[v2i64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4i32] } (SHF_W:{ *:[v4i32] } (COPY_TO_REGCLASS:{ *:[v4i32] } v2i64:{ *:[v2i64] }:$src, MSA128W:{ *:[i32] }), 177:{ *:[i32] }), MSA128W:{ *:[i32] })
/* 48344*/        0, /*End of Scope*/
/* 48345*/      /*SwitchType*/ 13, MVT::v2f64,// ->48360
/* 48347*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 48349*/        OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48352*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2f64, 2/*#Ops*/, 0, 1, 
                  // Src: (bitconvert:{ *:[v2f64] } v2i64:{ *:[v2i64] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[v2f64] } v2i64:{ *:[v2i64] }:$src, MSA128D:{ *:[i32] })
/* 48360*/      /*SwitchType*/ 53, MVT::v4f32,// ->48415
/* 48362*/        OPC_Scope, 13, /*->48377*/ // 2 children in Scope
/* 48364*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48366*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48369*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4f32, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v4f32] } v2i64:{ *:[v2i64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4f32] } v2i64:{ *:[v2i64] }:$src, MSA128W:{ *:[i32] })
/* 48377*/        /*Scope*/ 36, /*->48414*/
/* 48378*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48380*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48383*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48391*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48395*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48403*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48406*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4f32, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v4f32] } v2i64:{ *:[v2i64] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4f32] } (SHF_W:{ *:[v4i32] } (COPY_TO_REGCLASS:{ *:[v4i32] } v2i64:{ *:[v2i64] }:$src, MSA128W:{ *:[i32] }), 177:{ *:[i32] }), MSA128W:{ *:[i32] })
/* 48414*/        0, /*End of Scope*/
/* 48415*/      /*SwitchType*/ 35, MVT::v8f16,// ->48452
/* 48417*/        OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48419*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48422*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48430*/        OPC_EmitInteger, MVT::i32, 27, 
/* 48433*/        OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48441*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48444*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8f16, 2/*#Ops*/, 4, 5, 
                  // Src: (bitconvert:{ *:[v8f16] } v2i64:{ *:[v2i64] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[v8f16] } (SHF_H:{ *:[v8i16] } (COPY_TO_REGCLASS:{ *:[v8i16] } v2i64:{ *:[v2i64] }:$src, MSA128H:{ *:[i32] }), 27:{ *:[i32] }), MSA128H:{ *:[i32] })
/* 48452*/      0, // EndSwitchType
/* 48453*/    /*Scope*/ 103|128,2/*359*/, /*->48814*/
/* 48455*/      OPC_CheckChild0Type, MVT::v16i8,
/* 48457*/      OPC_SwitchType /*6 cases */, 53, MVT::v8i16,// ->48513
/* 48460*/        OPC_Scope, 13, /*->48475*/ // 2 children in Scope
/* 48462*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48464*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48467*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v8i16] } v16i8:{ *:[v16i8] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v8i16] } v16i8:{ *:[v16i8] }:$src, MSA128H:{ *:[i32] })
/* 48475*/        /*Scope*/ 36, /*->48512*/
/* 48476*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48478*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48481*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48489*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48493*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48501*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48504*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v8i16] } v16i8:{ *:[v16i8] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v8i16] } (SHF_B:{ *:[v16i8] } (COPY_TO_REGCLASS:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$src, MSA128B:{ *:[i32] }), 177:{ *:[i32] }), MSA128H:{ *:[i32] })
/* 48512*/        0, /*End of Scope*/
/* 48513*/      /*SwitchType*/ 52, MVT::v4i32,// ->48567
/* 48515*/        OPC_Scope, 13, /*->48530*/ // 2 children in Scope
/* 48517*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48519*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48522*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v4i32] } v16i8:{ *:[v16i8] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4i32] } v16i8:{ *:[v16i8] }:$src, MSA128W:{ *:[i32] })
/* 48530*/        /*Scope*/ 35, /*->48566*/
/* 48531*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48533*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48536*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48544*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48547*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48555*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48558*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v4i32] } v16i8:{ *:[v16i8] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4i32] } (SHF_B:{ *:[v16i8] } (COPY_TO_REGCLASS:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$src, MSA128B:{ *:[i32] }), 27:{ *:[i32] }), MSA128W:{ *:[i32] })
/* 48566*/        0, /*End of Scope*/
/* 48567*/      /*SwitchType*/ 75, MVT::v2i64,// ->48644
/* 48569*/        OPC_Scope, 13, /*->48584*/ // 2 children in Scope
/* 48571*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48573*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48576*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v2i64] } v16i8:{ *:[v16i8] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2i64] } v16i8:{ *:[v16i8] }:$src, MSA128D:{ *:[i32] })
/* 48584*/        /*Scope*/ 58, /*->48643*/
/* 48585*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48587*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48590*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48598*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48601*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48609*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48612*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 48620*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48624*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 48632*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48635*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2i64, 2/*#Ops*/, 8, 9, 
                    // Src: (bitconvert:{ *:[v2i64] } v16i8:{ *:[v16i8] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2i64] } (SHF_W:{ *:[v4i32] } (COPY_TO_REGCLASS:{ *:[v4i32] } (SHF_B:{ *:[v16i8] } (COPY_TO_REGCLASS:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$src, MSA128B:{ *:[i32] }), 27:{ *:[i32] }), MSA128W:{ *:[i32] }), 177:{ *:[i32] }), MSA128D:{ *:[i32] })
/* 48643*/        0, /*End of Scope*/
/* 48644*/      /*SwitchType*/ 52, MVT::v4f32,// ->48698
/* 48646*/        OPC_Scope, 13, /*->48661*/ // 2 children in Scope
/* 48648*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48650*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48653*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4f32, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v4f32] } v16i8:{ *:[v16i8] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4f32] } v16i8:{ *:[v16i8] }:$src, MSA128W:{ *:[i32] })
/* 48661*/        /*Scope*/ 35, /*->48697*/
/* 48662*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48664*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48667*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48675*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48678*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48686*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48689*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4f32, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v4f32] } v16i8:{ *:[v16i8] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v4f32] } (SHF_B:{ *:[v16i8] } (COPY_TO_REGCLASS:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$src, MSA128B:{ *:[i32] }), 27:{ *:[i32] }), MSA128W:{ *:[i32] })
/* 48697*/        0, /*End of Scope*/
/* 48698*/      /*SwitchType*/ 75, MVT::v2f64,// ->48775
/* 48700*/        OPC_Scope, 13, /*->48715*/ // 2 children in Scope
/* 48702*/          OPC_CheckPatternPredicate, 103, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48704*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48707*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2f64, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v2f64] } v16i8:{ *:[v16i8] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2f64] } v16i8:{ *:[v16i8] }:$src, MSA128D:{ *:[i32] })
/* 48715*/        /*Scope*/ 58, /*->48774*/
/* 48716*/          OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48718*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48721*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48729*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48732*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48740*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48743*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 48751*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48755*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 48763*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48766*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2f64, 2/*#Ops*/, 8, 9, 
                    // Src: (bitconvert:{ *:[v2f64] } v16i8:{ *:[v16i8] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2f64] } (SHF_W:{ *:[v4i32] } (COPY_TO_REGCLASS:{ *:[v4i32] } (SHF_B:{ *:[v16i8] } (COPY_TO_REGCLASS:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$src, MSA128B:{ *:[i32] }), 27:{ *:[i32] }), MSA128W:{ *:[i32] }), 177:{ *:[i32] }), MSA128D:{ *:[i32] })
/* 48774*/        0, /*End of Scope*/
/* 48775*/      /*SwitchType*/ 36, MVT::v8f16,// ->48813
/* 48777*/        OPC_CheckPatternPredicate, 104, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48779*/        OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48782*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48790*/        OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48794*/        OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48802*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48805*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8f16, 2/*#Ops*/, 4, 5, 
                  // Src: (bitconvert:{ *:[v8f16] } v16i8:{ *:[v16i8] }:$src) - Complexity = 3
                  // Dst: (COPY_TO_REGCLASS:{ *:[v8f16] } (SHF_B:{ *:[v16i8] } (COPY_TO_REGCLASS:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$src, MSA128B:{ *:[i32] }), 177:{ *:[i32] }), MSA128H:{ *:[i32] })
/* 48813*/      0, // EndSwitchType
/* 48814*/    0, /*End of Scope*/
/* 48815*/  /*SwitchOpcode*/ 81, TARGET_VAL(ISD::CTPOP),// ->48899
/* 48818*/    OPC_RecordChild0, // #0 = $rs
/* 48819*/    OPC_SwitchType /*6 cases */, 11, MVT::i32,// ->48833
/* 48822*/      OPC_CheckChild0Type, MVT::i32,
/* 48824*/      OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 48826*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::POP), 0,
                    MVT::i32, 1/*#Ops*/, 0, 
                // Src: (ctpop:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                // Dst: (POP:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs)
/* 48833*/    /*SwitchType*/ 11, MVT::i64,// ->48846
/* 48835*/      OPC_CheckChild0Type, MVT::i64,
/* 48837*/      OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 48839*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPOP), 0,
                    MVT::i64, 1/*#Ops*/, 0, 
                // Src: (ctpop:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                // Dst: (DPOP:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs)
/* 48846*/    /*SwitchType*/ 11, MVT::v16i8,// ->48859
/* 48848*/      OPC_CheckChild0Type, MVT::v16i8,
/* 48850*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 48852*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PCNT_B), 0,
                    MVT::v16i8, 1/*#Ops*/, 0, 
                // Src: (ctpop:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 3
                // Dst: (PCNT_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws)
/* 48859*/    /*SwitchType*/ 11, MVT::v8i16,// ->48872
/* 48861*/      OPC_CheckChild0Type, MVT::v8i16,
/* 48863*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 48865*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PCNT_H), 0,
                    MVT::v8i16, 1/*#Ops*/, 0, 
                // Src: (ctpop:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 3
                // Dst: (PCNT_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws)
/* 48872*/    /*SwitchType*/ 11, MVT::v4i32,// ->48885
/* 48874*/      OPC_CheckChild0Type, MVT::v4i32,
/* 48876*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 48878*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PCNT_W), 0,
                    MVT::v4i32, 1/*#Ops*/, 0, 
                // Src: (ctpop:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 3
                // Dst: (PCNT_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws)
/* 48885*/    /*SwitchType*/ 11, MVT::v2i64,// ->48898
/* 48887*/      OPC_CheckChild0Type, MVT::v2i64,
/* 48889*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 48891*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PCNT_D), 0,
                    MVT::v2i64, 1/*#Ops*/, 0, 
                // Src: (ctpop:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 3
                // Dst: (PCNT_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws)
/* 48898*/    0, // EndSwitchType
/* 48899*/  /*SwitchOpcode*/ 50|128,1/*178*/, TARGET_VAL(MipsISD::CMovFP_T),// ->49081
/* 48903*/    OPC_CaptureGlueInput,
/* 48904*/    OPC_RecordChild0, // #0 = $rs
/* 48905*/    OPC_RecordChild1, // #1 = $fcc
/* 48906*/    OPC_RecordChild2, // #2 = $F
/* 48907*/    OPC_SwitchType /*4 cases */, 38, MVT::i32,// ->48948
/* 48910*/      OPC_Scope, 11, /*->48923*/ // 3 children in Scope
/* 48912*/        OPC_CheckPatternPredicate, 105, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 48914*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVT_I), 0|OPFL_GlueInput,
                      MVT::i32, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_T:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, FCCRegsOpnd:{ *:[i32] }:$fcc, GPR32Opnd:{ *:[i32] }:$F) - Complexity = 3
                  // Dst: (MOVT_I:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, FCCRegsOpnd:{ *:[i32] }:$fcc, GPR32Opnd:{ *:[i32] }:$F)
/* 48923*/      /*Scope*/ 11, /*->48935*/
/* 48924*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 48926*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVT_I_MM), 0|OPFL_GlueInput,
                      MVT::i32, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_T:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, FCCRegsOpnd:{ *:[i32] }:$fcc, GPR32Opnd:{ *:[i32] }:$F) - Complexity = 3
                  // Dst: (MOVT_I_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, FCCRegsOpnd:{ *:[i32] }:$fcc, GPR32Opnd:{ *:[i32] }:$F)
/* 48935*/      /*Scope*/ 11, /*->48947*/
/* 48936*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 48938*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSELECTFP_T_I), 0|OPFL_GlueInput,
                      MVT::i32, 3/*#Ops*/, 1, 0, 2, 
                  // Src: (MipsCMovFP_T:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$T, FCCRegsOpnd:{ *:[i32] }:$cond, GPR32Opnd:{ *:[i32] }:$F) - Complexity = 3
                  // Dst: (PseudoSELECTFP_T_I:{ *:[i32] } FCCRegsOpnd:{ *:[i32] }:$cond, GPR32Opnd:{ *:[i32] }:$T, GPR32Opnd:{ *:[i32] }:$F)
/* 48947*/      0, /*End of Scope*/
/* 48948*/    /*SwitchType*/ 26, MVT::i64,// ->48976
/* 48950*/      OPC_Scope, 11, /*->48963*/ // 2 children in Scope
/* 48952*/        OPC_CheckPatternPredicate, 106, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 48954*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVT_I64), 0|OPFL_GlueInput,
                      MVT::i64, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_T:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, FCCRegsOpnd:{ *:[i32] }:$fcc, GPR64Opnd:{ *:[i64] }:$F) - Complexity = 3
                  // Dst: (MOVT_I64:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, FCCRegsOpnd:{ *:[i32] }:$fcc, GPR64Opnd:{ *:[i64] }:$F)
/* 48963*/      /*Scope*/ 11, /*->48975*/
/* 48964*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 48966*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSELECTFP_T_I64), 0|OPFL_GlueInput,
                      MVT::i64, 3/*#Ops*/, 1, 0, 2, 
                  // Src: (MipsCMovFP_T:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$T, FCCRegsOpnd:{ *:[i32] }:$cond, GPR64Opnd:{ *:[i64] }:$F) - Complexity = 3
                  // Dst: (PseudoSELECTFP_T_I64:{ *:[i64] } FCCRegsOpnd:{ *:[i32] }:$cond, GPR64Opnd:{ *:[i64] }:$T, GPR64Opnd:{ *:[i64] }:$F)
/* 48975*/      0, /*End of Scope*/
/* 48976*/    /*SwitchType*/ 38, MVT::f32,// ->49016
/* 48978*/      OPC_Scope, 11, /*->48991*/ // 3 children in Scope
/* 48980*/        OPC_CheckPatternPredicate, 105, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 48982*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVT_S), 0|OPFL_GlueInput,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_T:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, FGR32Opnd:{ *:[f32] }:$F) - Complexity = 3
                  // Dst: (MOVT_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, FGR32Opnd:{ *:[f32] }:$F)
/* 48991*/      /*Scope*/ 11, /*->49003*/
/* 48992*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 48994*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVT_S_MM), 0|OPFL_GlueInput,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_T:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, FGR32Opnd:{ *:[f32] }:$F) - Complexity = 3
                  // Dst: (MOVT_S_MM:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, FGR32Opnd:{ *:[f32] }:$F)
/* 49003*/      /*Scope*/ 11, /*->49015*/
/* 49004*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49006*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSELECTFP_T_S), 0|OPFL_GlueInput,
                      MVT::f32, 3/*#Ops*/, 1, 0, 2, 
                  // Src: (MipsCMovFP_T:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$T, FCCRegsOpnd:{ *:[i32] }:$cond, FGR32Opnd:{ *:[f32] }:$F) - Complexity = 3
                  // Dst: (PseudoSELECTFP_T_S:{ *:[f32] } FCCRegsOpnd:{ *:[i32] }:$cond, FGR32Opnd:{ *:[f32] }:$T, FGR32Opnd:{ *:[f32] }:$F)
/* 49015*/      0, /*End of Scope*/
/* 49016*/    /*SwitchType*/ 62, MVT::f64,// ->49080
/* 49018*/      OPC_Scope, 11, /*->49031*/ // 5 children in Scope
/* 49020*/        OPC_CheckPatternPredicate, 107, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49022*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVT_D32), 0|OPFL_GlueInput,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_T:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, AFGR64Opnd:{ *:[f64] }:$F) - Complexity = 3
                  // Dst: (MOVT_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, AFGR64Opnd:{ *:[f64] }:$F)
/* 49031*/      /*Scope*/ 11, /*->49043*/
/* 49032*/        OPC_CheckPatternPredicate, 108, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49034*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVT_D64), 0|OPFL_GlueInput,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_T:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, FGR64Opnd:{ *:[f64] }:$F) - Complexity = 3
                  // Dst: (MOVT_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, FGR64Opnd:{ *:[f64] }:$F)
/* 49043*/      /*Scope*/ 11, /*->49055*/
/* 49044*/        OPC_CheckPatternPredicate, 109, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 49046*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVT_D32_MM), 0|OPFL_GlueInput,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_T:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, AFGR64Opnd:{ *:[f64] }:$F) - Complexity = 3
                  // Dst: (MOVT_D32_MM:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, AFGR64Opnd:{ *:[f64] }:$F)
/* 49055*/      /*Scope*/ 11, /*->49067*/
/* 49056*/        OPC_CheckPatternPredicate, 41, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 49058*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSELECTFP_T_D32), 0|OPFL_GlueInput,
                      MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                  // Src: (MipsCMovFP_T:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$T, FCCRegsOpnd:{ *:[i32] }:$cond, AFGR64Opnd:{ *:[f64] }:$F) - Complexity = 3
                  // Dst: (PseudoSELECTFP_T_D32:{ *:[f64] } FCCRegsOpnd:{ *:[i32] }:$cond, AFGR64Opnd:{ *:[f64] }:$T, AFGR64Opnd:{ *:[f64] }:$F)
/* 49067*/      /*Scope*/ 11, /*->49079*/
/* 49068*/        OPC_CheckPatternPredicate, 42, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 49070*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSELECTFP_T_D64), 0|OPFL_GlueInput,
                      MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                  // Src: (MipsCMovFP_T:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$T, FCCRegsOpnd:{ *:[i32] }:$cond, FGR64Opnd:{ *:[f64] }:$F) - Complexity = 3
                  // Dst: (PseudoSELECTFP_T_D64:{ *:[f64] } FCCRegsOpnd:{ *:[i32] }:$cond, FGR64Opnd:{ *:[f64] }:$T, FGR64Opnd:{ *:[f64] }:$F)
/* 49079*/      0, /*End of Scope*/
/* 49080*/    0, // EndSwitchType
/* 49081*/  /*SwitchOpcode*/ 50|128,1/*178*/, TARGET_VAL(MipsISD::CMovFP_F),// ->49263
/* 49085*/    OPC_CaptureGlueInput,
/* 49086*/    OPC_RecordChild0, // #0 = $rs
/* 49087*/    OPC_RecordChild1, // #1 = $fcc
/* 49088*/    OPC_RecordChild2, // #2 = $F
/* 49089*/    OPC_SwitchType /*4 cases */, 38, MVT::i32,// ->49130
/* 49092*/      OPC_Scope, 11, /*->49105*/ // 3 children in Scope
/* 49094*/        OPC_CheckPatternPredicate, 105, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49096*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVF_I), 0|OPFL_GlueInput,
                      MVT::i32, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_F:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, FCCRegsOpnd:{ *:[i32] }:$fcc, GPR32Opnd:{ *:[i32] }:$F) - Complexity = 3
                  // Dst: (MOVF_I:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, FCCRegsOpnd:{ *:[i32] }:$fcc, GPR32Opnd:{ *:[i32] }:$F)
/* 49105*/      /*Scope*/ 11, /*->49117*/
/* 49106*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 49108*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVF_I_MM), 0|OPFL_GlueInput,
                      MVT::i32, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_F:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, FCCRegsOpnd:{ *:[i32] }:$fcc, GPR32Opnd:{ *:[i32] }:$F) - Complexity = 3
                  // Dst: (MOVF_I_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, FCCRegsOpnd:{ *:[i32] }:$fcc, GPR32Opnd:{ *:[i32] }:$F)
/* 49117*/      /*Scope*/ 11, /*->49129*/
/* 49118*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49120*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSELECTFP_F_I), 0|OPFL_GlueInput,
                      MVT::i32, 3/*#Ops*/, 1, 0, 2, 
                  // Src: (MipsCMovFP_F:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$T, FCCRegsOpnd:{ *:[i32] }:$cond, GPR32Opnd:{ *:[i32] }:$F) - Complexity = 3
                  // Dst: (PseudoSELECTFP_F_I:{ *:[i32] } FCCRegsOpnd:{ *:[i32] }:$cond, GPR32Opnd:{ *:[i32] }:$T, GPR32Opnd:{ *:[i32] }:$F)
/* 49129*/      0, /*End of Scope*/
/* 49130*/    /*SwitchType*/ 26, MVT::i64,// ->49158
/* 49132*/      OPC_Scope, 11, /*->49145*/ // 2 children in Scope
/* 49134*/        OPC_CheckPatternPredicate, 106, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49136*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVF_I64), 0|OPFL_GlueInput,
                      MVT::i64, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_F:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, FCCRegsOpnd:{ *:[i32] }:$fcc, GPR64Opnd:{ *:[i64] }:$F) - Complexity = 3
                  // Dst: (MOVF_I64:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, FCCRegsOpnd:{ *:[i32] }:$fcc, GPR64Opnd:{ *:[i64] }:$F)
/* 49145*/      /*Scope*/ 11, /*->49157*/
/* 49146*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49148*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSELECTFP_F_I64), 0|OPFL_GlueInput,
                      MVT::i64, 3/*#Ops*/, 1, 0, 2, 
                  // Src: (MipsCMovFP_F:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$T, FCCRegsOpnd:{ *:[i32] }:$cond, GPR64Opnd:{ *:[i64] }:$F) - Complexity = 3
                  // Dst: (PseudoSELECTFP_F_I64:{ *:[i64] } FCCRegsOpnd:{ *:[i32] }:$cond, GPR64Opnd:{ *:[i64] }:$T, GPR64Opnd:{ *:[i64] }:$F)
/* 49157*/      0, /*End of Scope*/
/* 49158*/    /*SwitchType*/ 38, MVT::f32,// ->49198
/* 49160*/      OPC_Scope, 11, /*->49173*/ // 3 children in Scope
/* 49162*/        OPC_CheckPatternPredicate, 105, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49164*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVF_S), 0|OPFL_GlueInput,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_F:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, FGR32Opnd:{ *:[f32] }:$F) - Complexity = 3
                  // Dst: (MOVF_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, FGR32Opnd:{ *:[f32] }:$F)
/* 49173*/      /*Scope*/ 11, /*->49185*/
/* 49174*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 49176*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVF_S_MM), 0|OPFL_GlueInput,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_F:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, FGR32Opnd:{ *:[f32] }:$F) - Complexity = 3
                  // Dst: (MOVF_S_MM:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, FGR32Opnd:{ *:[f32] }:$F)
/* 49185*/      /*Scope*/ 11, /*->49197*/
/* 49186*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49188*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSELECTFP_F_S), 0|OPFL_GlueInput,
                      MVT::f32, 3/*#Ops*/, 1, 0, 2, 
                  // Src: (MipsCMovFP_F:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$T, FCCRegsOpnd:{ *:[i32] }:$cond, FGR32Opnd:{ *:[f32] }:$F) - Complexity = 3
                  // Dst: (PseudoSELECTFP_F_S:{ *:[f32] } FCCRegsOpnd:{ *:[i32] }:$cond, FGR32Opnd:{ *:[f32] }:$T, FGR32Opnd:{ *:[f32] }:$F)
/* 49197*/      0, /*End of Scope*/
/* 49198*/    /*SwitchType*/ 62, MVT::f64,// ->49262
/* 49200*/      OPC_Scope, 11, /*->49213*/ // 5 children in Scope
/* 49202*/        OPC_CheckPatternPredicate, 107, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49204*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVF_D32), 0|OPFL_GlueInput,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_F:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, AFGR64Opnd:{ *:[f64] }:$F) - Complexity = 3
                  // Dst: (MOVF_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, AFGR64Opnd:{ *:[f64] }:$F)
/* 49213*/      /*Scope*/ 11, /*->49225*/
/* 49214*/        OPC_CheckPatternPredicate, 108, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49216*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVF_D64), 0|OPFL_GlueInput,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_F:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, FGR64Opnd:{ *:[f64] }:$F) - Complexity = 3
                  // Dst: (MOVF_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, FGR64Opnd:{ *:[f64] }:$F)
/* 49225*/      /*Scope*/ 11, /*->49237*/
/* 49226*/        OPC_CheckPatternPredicate, 109, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 49228*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOVF_D32_MM), 0|OPFL_GlueInput,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsCMovFP_F:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, AFGR64Opnd:{ *:[f64] }:$F) - Complexity = 3
                  // Dst: (MOVF_D32_MM:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, FCCRegsOpnd:{ *:[i32] }:$fcc, AFGR64Opnd:{ *:[f64] }:$F)
/* 49237*/      /*Scope*/ 11, /*->49249*/
/* 49238*/        OPC_CheckPatternPredicate, 41, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 49240*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSELECTFP_F_D32), 0|OPFL_GlueInput,
                      MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                  // Src: (MipsCMovFP_F:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$T, FCCRegsOpnd:{ *:[i32] }:$cond, AFGR64Opnd:{ *:[f64] }:$F) - Complexity = 3
                  // Dst: (PseudoSELECTFP_F_D32:{ *:[f64] } FCCRegsOpnd:{ *:[i32] }:$cond, AFGR64Opnd:{ *:[f64] }:$T, AFGR64Opnd:{ *:[f64] }:$F)
/* 49249*/      /*Scope*/ 11, /*->49261*/
/* 49250*/        OPC_CheckPatternPredicate, 42, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 49252*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSELECTFP_F_D64), 0|OPFL_GlueInput,
                      MVT::f64, 3/*#Ops*/, 1, 0, 2, 
                  // Src: (MipsCMovFP_F:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$T, FCCRegsOpnd:{ *:[i32] }:$cond, FGR64Opnd:{ *:[f64] }:$F) - Complexity = 3
                  // Dst: (PseudoSELECTFP_F_D64:{ *:[f64] } FCCRegsOpnd:{ *:[i32] }:$cond, FGR64Opnd:{ *:[f64] }:$T, FGR64Opnd:{ *:[f64] }:$F)
/* 49261*/      0, /*End of Scope*/
/* 49262*/    0, // EndSwitchType
/* 49263*/  /*SwitchOpcode*/ 42, TARGET_VAL(ISD::MULHS),// ->49308
/* 49266*/    OPC_RecordChild0, // #0 = $rs
/* 49267*/    OPC_RecordChild1, // #1 = $rt
/* 49268*/    OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->49295
/* 49271*/      OPC_Scope, 10, /*->49283*/ // 2 children in Scope
/* 49273*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 49275*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MUH), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (mulhs:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MUH:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 49283*/      /*Scope*/ 10, /*->49294*/
/* 49284*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 49286*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MUH_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (mulhs:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MUH_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 49294*/      0, /*End of Scope*/
/* 49295*/    /*SwitchType*/ 10, MVT::i64,// ->49307
/* 49297*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 49299*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DMUH), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1, 
                // Src: (mulhs:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                // Dst: (DMUH:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 49307*/    0, // EndSwitchType
/* 49308*/  /*SwitchOpcode*/ 42, TARGET_VAL(ISD::MULHU),// ->49353
/* 49311*/    OPC_RecordChild0, // #0 = $rs
/* 49312*/    OPC_RecordChild1, // #1 = $rt
/* 49313*/    OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->49340
/* 49316*/      OPC_Scope, 10, /*->49328*/ // 2 children in Scope
/* 49318*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 49320*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MUHU), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (mulhu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MUHU:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 49328*/      /*Scope*/ 10, /*->49339*/
/* 49329*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 49331*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MUHU_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (mulhu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MUHU_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 49339*/      0, /*End of Scope*/
/* 49340*/    /*SwitchType*/ 10, MVT::i64,// ->49352
/* 49342*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 49344*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DMUHU), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1, 
                // Src: (mulhu:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                // Dst: (DMUHU:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 49352*/    0, // EndSwitchType
/* 49353*/  /*SwitchOpcode*/ 14, TARGET_VAL(MipsISD::DivRem16),// ->49370
/* 49356*/    OPC_RecordChild0, // #0 = $rx
/* 49357*/    OPC_CheckChild0Type, MVT::i32,
/* 49359*/    OPC_RecordChild1, // #1 = $ry
/* 49360*/    OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 49362*/    OPC_MorphNodeTo1, TARGET_VAL(Mips::DivRxRy16), 0|OPFL_GlueOutput,
                  MVT::i32, 2/*#Ops*/, 0, 1, 
              // Src: (MipsDivRem16 CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry) - Complexity = 3
              // Dst: (DivRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry)
/* 49370*/  /*SwitchOpcode*/ 14, TARGET_VAL(MipsISD::DivRemU16),// ->49387
/* 49373*/    OPC_RecordChild0, // #0 = $rx
/* 49374*/    OPC_CheckChild0Type, MVT::i32,
/* 49376*/    OPC_RecordChild1, // #1 = $ry
/* 49377*/    OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 49379*/    OPC_MorphNodeTo1, TARGET_VAL(Mips::DivuRxRy16), 0|OPFL_GlueOutput,
                  MVT::i32, 2/*#Ops*/, 0, 1, 
              // Src: (MipsDivRemU16 CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry) - Complexity = 3
              // Dst: (DivuRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$rx, CPU16Regs:{ *:[i32] }:$ry)
/* 49387*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::MULSAQ_S_W_PH),// ->49422
/* 49390*/    OPC_RecordNode, // #0 = 'MipsMULSAQ_S_W_PH' chained node
/* 49391*/    OPC_RecordChild1, // #1 = $rs
/* 49392*/    OPC_RecordChild2, // #2 = $rt
/* 49393*/    OPC_RecordChild3, // #3 = $acin
/* 49394*/    OPC_Scope, 12, /*->49408*/ // 2 children in Scope
/* 49396*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49398*/      OPC_EmitMergeInputChains1_0,
/* 49399*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MULSAQ_S_W_PH), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsMULSAQ_S_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MULSAQ_S_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49408*/    /*Scope*/ 12, /*->49421*/
/* 49409*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49411*/      OPC_EmitMergeInputChains1_0,
/* 49412*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MULSAQ_S_W_PH_MM), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsMULSAQ_S_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MULSAQ_S_W_PH_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49421*/    0, /*End of Scope*/
/* 49422*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::MAQ_S_W_PHL),// ->49457
/* 49425*/    OPC_RecordNode, // #0 = 'MipsMAQ_S_W_PHL' chained node
/* 49426*/    OPC_RecordChild1, // #1 = $rs
/* 49427*/    OPC_RecordChild2, // #2 = $rt
/* 49428*/    OPC_RecordChild3, // #3 = $acin
/* 49429*/    OPC_Scope, 12, /*->49443*/ // 2 children in Scope
/* 49431*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49433*/      OPC_EmitMergeInputChains1_0,
/* 49434*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAQ_S_W_PHL), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsMAQ_S_W_PHL:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MAQ_S_W_PHL:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49443*/    /*Scope*/ 12, /*->49456*/
/* 49444*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49446*/      OPC_EmitMergeInputChains1_0,
/* 49447*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAQ_S_W_PHL_MM), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsMAQ_S_W_PHL:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MAQ_S_W_PHL_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49456*/    0, /*End of Scope*/
/* 49457*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::MAQ_S_W_PHR),// ->49492
/* 49460*/    OPC_RecordNode, // #0 = 'MipsMAQ_S_W_PHR' chained node
/* 49461*/    OPC_RecordChild1, // #1 = $rs
/* 49462*/    OPC_RecordChild2, // #2 = $rt
/* 49463*/    OPC_RecordChild3, // #3 = $acin
/* 49464*/    OPC_Scope, 12, /*->49478*/ // 2 children in Scope
/* 49466*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49468*/      OPC_EmitMergeInputChains1_0,
/* 49469*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAQ_S_W_PHR), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsMAQ_S_W_PHR:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MAQ_S_W_PHR:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49478*/    /*Scope*/ 12, /*->49491*/
/* 49479*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49481*/      OPC_EmitMergeInputChains1_0,
/* 49482*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAQ_S_W_PHR_MM), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsMAQ_S_W_PHR:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MAQ_S_W_PHR_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49491*/    0, /*End of Scope*/
/* 49492*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::MAQ_SA_W_PHL),// ->49527
/* 49495*/    OPC_RecordNode, // #0 = 'MipsMAQ_SA_W_PHL' chained node
/* 49496*/    OPC_RecordChild1, // #1 = $rs
/* 49497*/    OPC_RecordChild2, // #2 = $rt
/* 49498*/    OPC_RecordChild3, // #3 = $acin
/* 49499*/    OPC_Scope, 12, /*->49513*/ // 2 children in Scope
/* 49501*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49503*/      OPC_EmitMergeInputChains1_0,
/* 49504*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAQ_SA_W_PHL), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsMAQ_SA_W_PHL:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MAQ_SA_W_PHL:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49513*/    /*Scope*/ 12, /*->49526*/
/* 49514*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49516*/      OPC_EmitMergeInputChains1_0,
/* 49517*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAQ_SA_W_PHL_MM), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsMAQ_SA_W_PHL:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MAQ_SA_W_PHL_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49526*/    0, /*End of Scope*/
/* 49527*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::MAQ_SA_W_PHR),// ->49562
/* 49530*/    OPC_RecordNode, // #0 = 'MipsMAQ_SA_W_PHR' chained node
/* 49531*/    OPC_RecordChild1, // #1 = $rs
/* 49532*/    OPC_RecordChild2, // #2 = $rt
/* 49533*/    OPC_RecordChild3, // #3 = $acin
/* 49534*/    OPC_Scope, 12, /*->49548*/ // 2 children in Scope
/* 49536*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49538*/      OPC_EmitMergeInputChains1_0,
/* 49539*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAQ_SA_W_PHR), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsMAQ_SA_W_PHR:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MAQ_SA_W_PHR:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49548*/    /*Scope*/ 12, /*->49561*/
/* 49549*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49551*/      OPC_EmitMergeInputChains1_0,
/* 49552*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAQ_SA_W_PHR_MM), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsMAQ_SA_W_PHR:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MAQ_SA_W_PHR_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49561*/    0, /*End of Scope*/
/* 49562*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPAU_H_QBL),// ->49594
/* 49565*/    OPC_RecordChild0, // #0 = $rs
/* 49566*/    OPC_RecordChild1, // #1 = $rt
/* 49567*/    OPC_RecordChild2, // #2 = $acin
/* 49568*/    OPC_Scope, 11, /*->49581*/ // 2 children in Scope
/* 49570*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49572*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPAU_H_QBL), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPAU_H_QBL:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPAU_H_QBL:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49581*/    /*Scope*/ 11, /*->49593*/
/* 49582*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49584*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPAU_H_QBL_MM), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPAU_H_QBL:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPAU_H_QBL_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49593*/    0, /*End of Scope*/
/* 49594*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPAU_H_QBR),// ->49626
/* 49597*/    OPC_RecordChild0, // #0 = $rs
/* 49598*/    OPC_RecordChild1, // #1 = $rt
/* 49599*/    OPC_RecordChild2, // #2 = $acin
/* 49600*/    OPC_Scope, 11, /*->49613*/ // 2 children in Scope
/* 49602*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49604*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPAU_H_QBR), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPAU_H_QBR:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPAU_H_QBR:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49613*/    /*Scope*/ 11, /*->49625*/
/* 49614*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49616*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPAU_H_QBR_MM), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPAU_H_QBR:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPAU_H_QBR_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49625*/    0, /*End of Scope*/
/* 49626*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPSU_H_QBL),// ->49658
/* 49629*/    OPC_RecordChild0, // #0 = $rs
/* 49630*/    OPC_RecordChild1, // #1 = $rt
/* 49631*/    OPC_RecordChild2, // #2 = $acin
/* 49632*/    OPC_Scope, 11, /*->49645*/ // 2 children in Scope
/* 49634*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49636*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSU_H_QBL), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPSU_H_QBL:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPSU_H_QBL:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49645*/    /*Scope*/ 11, /*->49657*/
/* 49646*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49648*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSU_H_QBL_MM), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPSU_H_QBL:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPSU_H_QBL_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49657*/    0, /*End of Scope*/
/* 49658*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPSU_H_QBR),// ->49690
/* 49661*/    OPC_RecordChild0, // #0 = $rs
/* 49662*/    OPC_RecordChild1, // #1 = $rt
/* 49663*/    OPC_RecordChild2, // #2 = $acin
/* 49664*/    OPC_Scope, 11, /*->49677*/ // 2 children in Scope
/* 49666*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49668*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSU_H_QBR), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPSU_H_QBR:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPSU_H_QBR:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49677*/    /*Scope*/ 11, /*->49689*/
/* 49678*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49680*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSU_H_QBR_MM), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPSU_H_QBR:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPSU_H_QBR_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49689*/    0, /*End of Scope*/
/* 49690*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPAQ_S_W_PH),// ->49725
/* 49693*/    OPC_RecordNode, // #0 = 'MipsDPAQ_S_W_PH' chained node
/* 49694*/    OPC_RecordChild1, // #1 = $rs
/* 49695*/    OPC_RecordChild2, // #2 = $rt
/* 49696*/    OPC_RecordChild3, // #3 = $acin
/* 49697*/    OPC_Scope, 12, /*->49711*/ // 2 children in Scope
/* 49699*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49701*/      OPC_EmitMergeInputChains1_0,
/* 49702*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPAQ_S_W_PH), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPAQ_S_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPAQ_S_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49711*/    /*Scope*/ 12, /*->49724*/
/* 49712*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49714*/      OPC_EmitMergeInputChains1_0,
/* 49715*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPAQ_S_W_PH_MM), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPAQ_S_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPAQ_S_W_PH_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49724*/    0, /*End of Scope*/
/* 49725*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPSQ_S_W_PH),// ->49760
/* 49728*/    OPC_RecordNode, // #0 = 'MipsDPSQ_S_W_PH' chained node
/* 49729*/    OPC_RecordChild1, // #1 = $rs
/* 49730*/    OPC_RecordChild2, // #2 = $rt
/* 49731*/    OPC_RecordChild3, // #3 = $acin
/* 49732*/    OPC_Scope, 12, /*->49746*/ // 2 children in Scope
/* 49734*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49736*/      OPC_EmitMergeInputChains1_0,
/* 49737*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSQ_S_W_PH), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPSQ_S_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPSQ_S_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49746*/    /*Scope*/ 12, /*->49759*/
/* 49747*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49749*/      OPC_EmitMergeInputChains1_0,
/* 49750*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSQ_S_W_PH_MM), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPSQ_S_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPSQ_S_W_PH_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49759*/    0, /*End of Scope*/
/* 49760*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPAQ_SA_L_W),// ->49795
/* 49763*/    OPC_RecordNode, // #0 = 'MipsDPAQ_SA_L_W' chained node
/* 49764*/    OPC_RecordChild1, // #1 = $rs
/* 49765*/    OPC_RecordChild2, // #2 = $rt
/* 49766*/    OPC_RecordChild3, // #3 = $acin
/* 49767*/    OPC_Scope, 12, /*->49781*/ // 2 children in Scope
/* 49769*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49771*/      OPC_EmitMergeInputChains1_0,
/* 49772*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPAQ_SA_L_W), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPAQ_SA_L_W:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPAQ_SA_L_W:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49781*/    /*Scope*/ 12, /*->49794*/
/* 49782*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49784*/      OPC_EmitMergeInputChains1_0,
/* 49785*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPAQ_SA_L_W_MM), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPAQ_SA_L_W:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPAQ_SA_L_W_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49794*/    0, /*End of Scope*/
/* 49795*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPSQ_SA_L_W),// ->49830
/* 49798*/    OPC_RecordNode, // #0 = 'MipsDPSQ_SA_L_W' chained node
/* 49799*/    OPC_RecordChild1, // #1 = $rs
/* 49800*/    OPC_RecordChild2, // #2 = $rt
/* 49801*/    OPC_RecordChild3, // #3 = $acin
/* 49802*/    OPC_Scope, 12, /*->49816*/ // 2 children in Scope
/* 49804*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49806*/      OPC_EmitMergeInputChains1_0,
/* 49807*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSQ_SA_L_W), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPSQ_SA_L_W:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPSQ_SA_L_W:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49816*/    /*Scope*/ 12, /*->49829*/
/* 49817*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49819*/      OPC_EmitMergeInputChains1_0,
/* 49820*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSQ_SA_L_W_MM), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPSQ_SA_L_W:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPSQ_SA_L_W_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49829*/    0, /*End of Scope*/
/* 49830*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::MTHLIP),// ->49862
/* 49833*/    OPC_RecordNode, // #0 = 'MipsMTHLIP' chained node
/* 49834*/    OPC_RecordChild1, // #1 = $rs
/* 49835*/    OPC_RecordChild2, // #2 = $acin
/* 49836*/    OPC_Scope, 11, /*->49849*/ // 2 children in Scope
/* 49838*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49840*/      OPC_EmitMergeInputChains1_0,
/* 49841*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MTHLIP), 0|OPFL_Chain,
                    MVT::Untyped, 2/*#Ops*/, 1, 2, 
                // Src: (MipsMTHLIP:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MTHLIP:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49849*/    /*Scope*/ 11, /*->49861*/
/* 49850*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49852*/      OPC_EmitMergeInputChains1_0,
/* 49853*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MTHLIP_MM), 0|OPFL_Chain,
                    MVT::Untyped, 2/*#Ops*/, 1, 2, 
                // Src: (MipsMTHLIP:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MTHLIP_MM:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49861*/    0, /*End of Scope*/
/* 49862*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPA_W_PH),// ->49894
/* 49865*/    OPC_RecordChild0, // #0 = $rs
/* 49866*/    OPC_RecordChild1, // #1 = $rt
/* 49867*/    OPC_RecordChild2, // #2 = $acin
/* 49868*/    OPC_Scope, 11, /*->49881*/ // 2 children in Scope
/* 49870*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 49872*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPA_W_PH), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPA_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPA_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49881*/    /*Scope*/ 11, /*->49893*/
/* 49882*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 49884*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPA_W_PH_MMR2), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPA_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPA_W_PH_MMR2:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49893*/    0, /*End of Scope*/
/* 49894*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPS_W_PH),// ->49926
/* 49897*/    OPC_RecordChild0, // #0 = $rs
/* 49898*/    OPC_RecordChild1, // #1 = $rt
/* 49899*/    OPC_RecordChild2, // #2 = $acin
/* 49900*/    OPC_Scope, 11, /*->49913*/ // 2 children in Scope
/* 49902*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 49904*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPS_W_PH), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPS_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPS_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49913*/    /*Scope*/ 11, /*->49925*/
/* 49914*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 49916*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPS_W_PH_MMR2), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPS_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPS_W_PH_MMR2:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49925*/    0, /*End of Scope*/
/* 49926*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPAQX_S_W_PH),// ->49961
/* 49929*/    OPC_RecordNode, // #0 = 'MipsDPAQX_S_W_PH' chained node
/* 49930*/    OPC_RecordChild1, // #1 = $rs
/* 49931*/    OPC_RecordChild2, // #2 = $rt
/* 49932*/    OPC_RecordChild3, // #3 = $acin
/* 49933*/    OPC_Scope, 12, /*->49947*/ // 2 children in Scope
/* 49935*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 49937*/      OPC_EmitMergeInputChains1_0,
/* 49938*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPAQX_S_W_PH), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPAQX_S_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPAQX_S_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49947*/    /*Scope*/ 12, /*->49960*/
/* 49948*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 49950*/      OPC_EmitMergeInputChains1_0,
/* 49951*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPAQX_S_W_PH_MMR2), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPAQX_S_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPAQX_S_W_PH_MMR2:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49960*/    0, /*End of Scope*/
/* 49961*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPAQX_SA_W_PH),// ->49996
/* 49964*/    OPC_RecordNode, // #0 = 'MipsDPAQX_SA_W_PH' chained node
/* 49965*/    OPC_RecordChild1, // #1 = $rs
/* 49966*/    OPC_RecordChild2, // #2 = $rt
/* 49967*/    OPC_RecordChild3, // #3 = $acin
/* 49968*/    OPC_Scope, 12, /*->49982*/ // 2 children in Scope
/* 49970*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 49972*/      OPC_EmitMergeInputChains1_0,
/* 49973*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPAQX_SA_W_PH), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPAQX_SA_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPAQX_SA_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49982*/    /*Scope*/ 12, /*->49995*/
/* 49983*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 49985*/      OPC_EmitMergeInputChains1_0,
/* 49986*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPAQX_SA_W_PH_MMR2), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPAQX_SA_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPAQX_SA_W_PH_MMR2:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 49995*/    0, /*End of Scope*/
/* 49996*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPAX_W_PH),// ->50028
/* 49999*/    OPC_RecordChild0, // #0 = $rs
/* 50000*/    OPC_RecordChild1, // #1 = $rt
/* 50001*/    OPC_RecordChild2, // #2 = $acin
/* 50002*/    OPC_Scope, 11, /*->50015*/ // 2 children in Scope
/* 50004*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50006*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPAX_W_PH), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPAX_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPAX_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 50015*/    /*Scope*/ 11, /*->50027*/
/* 50016*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50018*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPAX_W_PH_MMR2), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPAX_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPAX_W_PH_MMR2:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 50027*/    0, /*End of Scope*/
/* 50028*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPSX_W_PH),// ->50060
/* 50031*/    OPC_RecordChild0, // #0 = $rs
/* 50032*/    OPC_RecordChild1, // #1 = $rt
/* 50033*/    OPC_RecordChild2, // #2 = $acin
/* 50034*/    OPC_Scope, 11, /*->50047*/ // 2 children in Scope
/* 50036*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50038*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSX_W_PH), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPSX_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPSX_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 50047*/    /*Scope*/ 11, /*->50059*/
/* 50048*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50050*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSX_W_PH_MMR2), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsDPSX_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPSX_W_PH_MMR2:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 50059*/    0, /*End of Scope*/
/* 50060*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPSQX_S_W_PH),// ->50095
/* 50063*/    OPC_RecordNode, // #0 = 'MipsDPSQX_S_W_PH' chained node
/* 50064*/    OPC_RecordChild1, // #1 = $rs
/* 50065*/    OPC_RecordChild2, // #2 = $rt
/* 50066*/    OPC_RecordChild3, // #3 = $acin
/* 50067*/    OPC_Scope, 12, /*->50081*/ // 2 children in Scope
/* 50069*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50071*/      OPC_EmitMergeInputChains1_0,
/* 50072*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSQX_S_W_PH), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPSQX_S_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPSQX_S_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 50081*/    /*Scope*/ 12, /*->50094*/
/* 50082*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50084*/      OPC_EmitMergeInputChains1_0,
/* 50085*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSQX_S_W_PH_MMR2), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPSQX_S_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPSQX_S_W_PH_MMR2:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 50094*/    0, /*End of Scope*/
/* 50095*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPSQX_SA_W_PH),// ->50130
/* 50098*/    OPC_RecordNode, // #0 = 'MipsDPSQX_SA_W_PH' chained node
/* 50099*/    OPC_RecordChild1, // #1 = $rs
/* 50100*/    OPC_RecordChild2, // #2 = $rt
/* 50101*/    OPC_RecordChild3, // #3 = $acin
/* 50102*/    OPC_Scope, 12, /*->50116*/ // 2 children in Scope
/* 50104*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50106*/      OPC_EmitMergeInputChains1_0,
/* 50107*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSQX_SA_W_PH), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPSQX_SA_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPSQX_SA_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 50116*/    /*Scope*/ 12, /*->50129*/
/* 50117*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50119*/      OPC_EmitMergeInputChains1_0,
/* 50120*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSQX_SA_W_PH_MMR2), 0|OPFL_Chain,
                    MVT::Untyped, 3/*#Ops*/, 1, 2, 3, 
                // Src: (MipsDPSQX_SA_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (DPSQX_SA_W_PH_MMR2:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 50129*/    0, /*End of Scope*/
/* 50130*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::MULSA_W_PH),// ->50162
/* 50133*/    OPC_RecordChild0, // #0 = $rs
/* 50134*/    OPC_RecordChild1, // #1 = $rt
/* 50135*/    OPC_RecordChild2, // #2 = $acin
/* 50136*/    OPC_Scope, 11, /*->50149*/ // 2 children in Scope
/* 50138*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50140*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MULSA_W_PH), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMULSA_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MULSA_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 50149*/    /*Scope*/ 11, /*->50161*/
/* 50150*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50152*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MULSA_W_PH_MMR2), 0,
                    MVT::Untyped, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsMULSA_W_PH:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin) - Complexity = 3
                // Dst: (MULSA_W_PH_MMR2:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt, ACC64DSPOpnd:{ *:[Untyped] }:$acin)
/* 50161*/    0, /*End of Scope*/
/* 50162*/  /*SwitchOpcode*/ 15, TARGET_VAL(ISD::ADDE),// ->50180
/* 50165*/    OPC_CaptureGlueInput,
/* 50166*/    OPC_RecordChild0, // #0 = $a
/* 50167*/    OPC_RecordChild1, // #1 = $b
/* 50168*/    OPC_CheckType, MVT::i32,
/* 50170*/    OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 50172*/    OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDWC), 0|OPFL_GlueInput|OPFL_GlueOutput,
                  MVT::i32, 2/*#Ops*/, 0, 1, 
              // Src: (adde:{ *:[i32] } i32:{ *:[i32] }:$a, i32:{ *:[i32] }:$b) - Complexity = 3
              // Dst: (ADDWC:{ *:[i32] } i32:{ *:[i32] }:$a, i32:{ *:[i32] }:$b)
/* 50180*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::BSWAP),// ->50250
/* 50183*/    OPC_RecordChild0, // #0 = $rt
/* 50184*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->50231
/* 50187*/      OPC_Scope, 20, /*->50209*/ // 2 children in Scope
/* 50189*/        OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50191*/        OPC_EmitNode1, TARGET_VAL(Mips::WSBH), 0,
                      MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 50198*/        OPC_EmitInteger, MVT::i32, 16, 
/* 50201*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ROTR), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (bswap:{ *:[i32] } GPR32:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (ROTR:{ *:[i32] } (WSBH:{ *:[i32] } GPR32:{ *:[i32] }:$rt), 16:{ *:[i32] })
/* 50209*/      /*Scope*/ 20, /*->50230*/
/* 50210*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 50212*/        OPC_EmitNode1, TARGET_VAL(Mips::WSBH_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 50219*/        OPC_EmitInteger, MVT::i32, 16, 
/* 50222*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ROTR_MM), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (bswap:{ *:[i32] } GPR32:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (ROTR_MM:{ *:[i32] } (WSBH_MM:{ *:[i32] } GPR32:{ *:[i32] }:$rt), 16:{ *:[i32] })
/* 50230*/      0, /*End of Scope*/
/* 50231*/    /*SwitchType*/ 16, MVT::i64,// ->50249
/* 50233*/      OPC_CheckPatternPredicate, 110, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding())
/* 50235*/      OPC_EmitNode1, TARGET_VAL(Mips::DSBH), 0,
                    MVT::i64, 1/*#Ops*/, 0,  // Results = #1
/* 50242*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DSHD), 0,
                    MVT::i64, 1/*#Ops*/, 1, 
                // Src: (bswap:{ *:[i64] } GPR64:{ *:[i64] }:$rt) - Complexity = 3
                // Dst: (DSHD:{ *:[i64] } (DSBH:{ *:[i64] } GPR64:{ *:[i64] }:$rt))
/* 50249*/    0, // EndSwitchType
/* 50250*/  /*SwitchOpcode*/ 23, TARGET_VAL(ISD::ANY_EXTEND),// ->50276
/* 50253*/    OPC_RecordChild0, // #0 = $src
/* 50254*/    OPC_CheckType, MVT::i64,
/* 50256*/    OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 50258*/    OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                  MVT::i64, 0/*#Ops*/,  // Results = #1
/* 50264*/    OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 50267*/    OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                  MVT::i64, 3/*#Ops*/, 1, 0, 2, 
              // Src: (anyext:{ *:[i64] } GPR32:{ *:[i32] }:$src) - Complexity = 3
              // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), GPR32:{ *:[i32] }:$src, sub_32:{ *:[i32] })
/* 50276*/  /*SwitchOpcode*/ 45, TARGET_VAL(MipsISD::DivRem),// ->50324
/* 50279*/    OPC_RecordChild0, // #0 = $rs
/* 50280*/    OPC_Scope, 27, /*->50309*/ // 2 children in Scope
/* 50282*/      OPC_CheckChild0Type, MVT::i32,
/* 50284*/      OPC_RecordChild1, // #1 = $rt
/* 50285*/      OPC_Scope, 10, /*->50297*/ // 2 children in Scope
/* 50287*/        OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50289*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoSDIV), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsDivRem:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (PseudoSDIV:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 50297*/      /*Scope*/ 10, /*->50308*/
/* 50298*/        OPC_CheckPatternPredicate, 111, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50300*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SDIV_MM_Pseudo), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsDivRem:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (SDIV_MM_Pseudo:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 50308*/      0, /*End of Scope*/
/* 50309*/    /*Scope*/ 13, /*->50323*/
/* 50310*/      OPC_CheckChild0Type, MVT::i64,
/* 50312*/      OPC_RecordChild1, // #1 = $rt
/* 50313*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50315*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoDSDIV), 0,
                    MVT::Untyped, 2/*#Ops*/, 0, 1, 
                // Src: (MipsDivRem:{ *:[Untyped] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                // Dst: (PseudoDSDIV:{ *:[Untyped] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 50323*/    0, /*End of Scope*/
/* 50324*/  /*SwitchOpcode*/ 45, TARGET_VAL(MipsISD::DivRemU),// ->50372
/* 50327*/    OPC_RecordChild0, // #0 = $rs
/* 50328*/    OPC_Scope, 27, /*->50357*/ // 2 children in Scope
/* 50330*/      OPC_CheckChild0Type, MVT::i32,
/* 50332*/      OPC_RecordChild1, // #1 = $rt
/* 50333*/      OPC_Scope, 10, /*->50345*/ // 2 children in Scope
/* 50335*/        OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50337*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoUDIV), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsDivRemU:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (PseudoUDIV:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 50345*/      /*Scope*/ 10, /*->50356*/
/* 50346*/        OPC_CheckPatternPredicate, 111, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50348*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::UDIV_MM_Pseudo), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsDivRemU:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (UDIV_MM_Pseudo:{ *:[Untyped] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 50356*/      0, /*End of Scope*/
/* 50357*/    /*Scope*/ 13, /*->50371*/
/* 50358*/      OPC_CheckChild0Type, MVT::i64,
/* 50360*/      OPC_RecordChild1, // #1 = $rt
/* 50361*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50363*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoDUDIV), 0,
                    MVT::Untyped, 2/*#Ops*/, 0, 1, 
                // Src: (MipsDivRemU:{ *:[Untyped] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                // Dst: (PseudoDUDIV:{ *:[Untyped] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 50371*/    0, /*End of Scope*/
/* 50372*/  /*SwitchOpcode*/ 90, TARGET_VAL(ISD::SDIV),// ->50465
/* 50375*/    OPC_RecordChild0, // #0 = $rs
/* 50376*/    OPC_RecordChild1, // #1 = $rt
/* 50377*/    OPC_SwitchType /*6 cases */, 24, MVT::i32,// ->50404
/* 50380*/      OPC_Scope, 10, /*->50392*/ // 2 children in Scope
/* 50382*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50384*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DIV), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (sdiv:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (DIV:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 50392*/      /*Scope*/ 10, /*->50403*/
/* 50393*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 50395*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DIV_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (sdiv:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (DIV_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 50403*/      0, /*End of Scope*/
/* 50404*/    /*SwitchType*/ 10, MVT::i64,// ->50416
/* 50406*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50408*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DDIV), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1, 
                // Src: (sdiv:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                // Dst: (DDIV:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 50416*/    /*SwitchType*/ 10, MVT::v16i8,// ->50428
/* 50418*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50420*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DIV_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (sdiv:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                // Dst: (DIV_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 50428*/    /*SwitchType*/ 10, MVT::v8i16,// ->50440
/* 50430*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50432*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DIV_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (sdiv:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                // Dst: (DIV_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 50440*/    /*SwitchType*/ 10, MVT::v4i32,// ->50452
/* 50442*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50444*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DIV_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (sdiv:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                // Dst: (DIV_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 50452*/    /*SwitchType*/ 10, MVT::v2i64,// ->50464
/* 50454*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50456*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DIV_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (sdiv:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                // Dst: (DIV_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 50464*/    0, // EndSwitchType
/* 50465*/  /*SwitchOpcode*/ 90, TARGET_VAL(ISD::UDIV),// ->50558
/* 50468*/    OPC_RecordChild0, // #0 = $rs
/* 50469*/    OPC_RecordChild1, // #1 = $rt
/* 50470*/    OPC_SwitchType /*6 cases */, 24, MVT::i32,// ->50497
/* 50473*/      OPC_Scope, 10, /*->50485*/ // 2 children in Scope
/* 50475*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50477*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DIVU), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (udiv:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (DIVU:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 50485*/      /*Scope*/ 10, /*->50496*/
/* 50486*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 50488*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DIVU_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (udiv:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (DIVU_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 50496*/      0, /*End of Scope*/
/* 50497*/    /*SwitchType*/ 10, MVT::i64,// ->50509
/* 50499*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50501*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DDIVU), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1, 
                // Src: (udiv:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                // Dst: (DDIVU:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 50509*/    /*SwitchType*/ 10, MVT::v16i8,// ->50521
/* 50511*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50513*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DIV_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (udiv:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                // Dst: (DIV_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 50521*/    /*SwitchType*/ 10, MVT::v8i16,// ->50533
/* 50523*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50525*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DIV_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (udiv:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                // Dst: (DIV_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 50533*/    /*SwitchType*/ 10, MVT::v4i32,// ->50545
/* 50535*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50537*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DIV_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (udiv:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                // Dst: (DIV_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 50545*/    /*SwitchType*/ 10, MVT::v2i64,// ->50557
/* 50547*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50549*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DIV_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (udiv:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                // Dst: (DIV_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 50557*/    0, // EndSwitchType
/* 50558*/  /*SwitchOpcode*/ 90, TARGET_VAL(ISD::SREM),// ->50651
/* 50561*/    OPC_RecordChild0, // #0 = $rs
/* 50562*/    OPC_RecordChild1, // #1 = $rt
/* 50563*/    OPC_SwitchType /*6 cases */, 24, MVT::i32,// ->50590
/* 50566*/      OPC_Scope, 10, /*->50578*/ // 2 children in Scope
/* 50568*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50570*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOD), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (srem:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MOD:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 50578*/      /*Scope*/ 10, /*->50589*/
/* 50579*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 50581*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MOD_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (srem:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MOD_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 50589*/      0, /*End of Scope*/
/* 50590*/    /*SwitchType*/ 10, MVT::i64,// ->50602
/* 50592*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50594*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DMOD), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1, 
                // Src: (srem:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                // Dst: (DMOD:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 50602*/    /*SwitchType*/ 10, MVT::v16i8,// ->50614
/* 50604*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50606*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MOD_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (srem:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                // Dst: (MOD_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 50614*/    /*SwitchType*/ 10, MVT::v8i16,// ->50626
/* 50616*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50618*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MOD_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (srem:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                // Dst: (MOD_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 50626*/    /*SwitchType*/ 10, MVT::v4i32,// ->50638
/* 50628*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50630*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MOD_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (srem:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                // Dst: (MOD_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 50638*/    /*SwitchType*/ 10, MVT::v2i64,// ->50650
/* 50640*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50642*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MOD_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (srem:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                // Dst: (MOD_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 50650*/    0, // EndSwitchType
/* 50651*/  /*SwitchOpcode*/ 90, TARGET_VAL(ISD::UREM),// ->50744
/* 50654*/    OPC_RecordChild0, // #0 = $rs
/* 50655*/    OPC_RecordChild1, // #1 = $rt
/* 50656*/    OPC_SwitchType /*6 cases */, 24, MVT::i32,// ->50683
/* 50659*/      OPC_Scope, 10, /*->50671*/ // 2 children in Scope
/* 50661*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50663*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MODU), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (urem:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MODU:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 50671*/      /*Scope*/ 10, /*->50682*/
/* 50672*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 50674*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MODU_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (urem:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 3
                  // Dst: (MODU_MMR6:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 50682*/      0, /*End of Scope*/
/* 50683*/    /*SwitchType*/ 10, MVT::i64,// ->50695
/* 50685*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50687*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DMODU), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1, 
                // Src: (urem:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt) - Complexity = 3
                // Dst: (DMODU:{ *:[i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rt)
/* 50695*/    /*SwitchType*/ 10, MVT::v16i8,// ->50707
/* 50697*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50699*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MOD_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (urem:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                // Dst: (MOD_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 50707*/    /*SwitchType*/ 10, MVT::v8i16,// ->50719
/* 50709*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50711*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MOD_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (urem:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                // Dst: (MOD_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 50719*/    /*SwitchType*/ 10, MVT::v4i32,// ->50731
/* 50721*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50723*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MOD_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (urem:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                // Dst: (MOD_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 50731*/    /*SwitchType*/ 10, MVT::v2i64,// ->50743
/* 50733*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50735*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MOD_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (urem:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                // Dst: (MOD_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 50743*/    0, // EndSwitchType
/* 50744*/  /*SwitchOpcode*/ 45, TARGET_VAL(MipsISD::VALL_NONZERO),// ->50792
/* 50747*/    OPC_RecordChild0, // #0 = $ws
/* 50748*/    OPC_CheckType, MVT::i32,
/* 50750*/    OPC_Scope, 9, /*->50761*/ // 4 children in Scope
/* 50752*/      OPC_CheckChild0Type, MVT::v16i8,
/* 50754*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SNZ_B_PSEUDO), 0,
                    MVT::i32, 1/*#Ops*/, 0, 
                // Src: (MipsVAllNonZero:{ *:[i32] } MSA128B:{ *:[v16i8] }:$ws) - Complexity = 3
                // Dst: (SNZ_B_PSEUDO:{ *:[i32] } MSA128B:{ *:[v16i8] }:$ws)
/* 50761*/    /*Scope*/ 9, /*->50771*/
/* 50762*/      OPC_CheckChild0Type, MVT::v8i16,
/* 50764*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SNZ_H_PSEUDO), 0,
                    MVT::i32, 1/*#Ops*/, 0, 
                // Src: (MipsVAllNonZero:{ *:[i32] } MSA128H:{ *:[v8i16] }:$ws) - Complexity = 3
                // Dst: (SNZ_H_PSEUDO:{ *:[i32] } MSA128H:{ *:[v8i16] }:$ws)
/* 50771*/    /*Scope*/ 9, /*->50781*/
/* 50772*/      OPC_CheckChild0Type, MVT::v4i32,
/* 50774*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SNZ_W_PSEUDO), 0,
                    MVT::i32, 1/*#Ops*/, 0, 
                // Src: (MipsVAllNonZero:{ *:[i32] } MSA128W:{ *:[v4i32] }:$ws) - Complexity = 3
                // Dst: (SNZ_W_PSEUDO:{ *:[i32] } MSA128W:{ *:[v4i32] }:$ws)
/* 50781*/    /*Scope*/ 9, /*->50791*/
/* 50782*/      OPC_CheckChild0Type, MVT::v2i64,
/* 50784*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SNZ_D_PSEUDO), 0,
                    MVT::i32, 1/*#Ops*/, 0, 
                // Src: (MipsVAllNonZero:{ *:[i32] } MSA128D:{ *:[v2i64] }:$ws) - Complexity = 3
                // Dst: (SNZ_D_PSEUDO:{ *:[i32] } MSA128D:{ *:[v2i64] }:$ws)
/* 50791*/    0, /*End of Scope*/
/* 50792*/  /*SwitchOpcode*/ 12, TARGET_VAL(MipsISD::VANY_NONZERO),// ->50807
/* 50795*/    OPC_RecordChild0, // #0 = $ws
/* 50796*/    OPC_CheckChild0Type, MVT::v16i8,
/* 50798*/    OPC_CheckType, MVT::i32,
/* 50800*/    OPC_MorphNodeTo1, TARGET_VAL(Mips::SNZ_V_PSEUDO), 0,
                  MVT::i32, 1/*#Ops*/, 0, 
              // Src: (MipsVAnyNonZero:{ *:[i32] } MSA128B:{ *:[v16i8] }:$ws) - Complexity = 3
              // Dst: (SNZ_V_PSEUDO:{ *:[i32] } MSA128B:{ *:[v16i8] }:$ws)
/* 50807*/  /*SwitchOpcode*/ 45, TARGET_VAL(MipsISD::VALL_ZERO),// ->50855
/* 50810*/    OPC_RecordChild0, // #0 = $ws
/* 50811*/    OPC_CheckType, MVT::i32,
/* 50813*/    OPC_Scope, 9, /*->50824*/ // 4 children in Scope
/* 50815*/      OPC_CheckChild0Type, MVT::v16i8,
/* 50817*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SZ_B_PSEUDO), 0,
                    MVT::i32, 1/*#Ops*/, 0, 
                // Src: (MipsVAllZero:{ *:[i32] } MSA128B:{ *:[v16i8] }:$ws) - Complexity = 3
                // Dst: (SZ_B_PSEUDO:{ *:[i32] } MSA128B:{ *:[v16i8] }:$ws)
/* 50824*/    /*Scope*/ 9, /*->50834*/
/* 50825*/      OPC_CheckChild0Type, MVT::v8i16,
/* 50827*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SZ_H_PSEUDO), 0,
                    MVT::i32, 1/*#Ops*/, 0, 
                // Src: (MipsVAllZero:{ *:[i32] } MSA128H:{ *:[v8i16] }:$ws) - Complexity = 3
                // Dst: (SZ_H_PSEUDO:{ *:[i32] } MSA128H:{ *:[v8i16] }:$ws)
/* 50834*/    /*Scope*/ 9, /*->50844*/
/* 50835*/      OPC_CheckChild0Type, MVT::v4i32,
/* 50837*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SZ_W_PSEUDO), 0,
                    MVT::i32, 1/*#Ops*/, 0, 
                // Src: (MipsVAllZero:{ *:[i32] } MSA128W:{ *:[v4i32] }:$ws) - Complexity = 3
                // Dst: (SZ_W_PSEUDO:{ *:[i32] } MSA128W:{ *:[v4i32] }:$ws)
/* 50844*/    /*Scope*/ 9, /*->50854*/
/* 50845*/      OPC_CheckChild0Type, MVT::v2i64,
/* 50847*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SZ_D_PSEUDO), 0,
                    MVT::i32, 1/*#Ops*/, 0, 
                // Src: (MipsVAllZero:{ *:[i32] } MSA128D:{ *:[v2i64] }:$ws) - Complexity = 3
                // Dst: (SZ_D_PSEUDO:{ *:[i32] } MSA128D:{ *:[v2i64] }:$ws)
/* 50854*/    0, /*End of Scope*/
/* 50855*/  /*SwitchOpcode*/ 12, TARGET_VAL(MipsISD::VANY_ZERO),// ->50870
/* 50858*/    OPC_RecordChild0, // #0 = $ws
/* 50859*/    OPC_CheckChild0Type, MVT::v16i8,
/* 50861*/    OPC_CheckType, MVT::i32,
/* 50863*/    OPC_MorphNodeTo1, TARGET_VAL(Mips::SZ_V_PSEUDO), 0,
                  MVT::i32, 1/*#Ops*/, 0, 
              // Src: (MipsVAnyZero:{ *:[i32] } MSA128B:{ *:[v16i8] }:$ws) - Complexity = 3
              // Dst: (SZ_V_PSEUDO:{ *:[i32] } MSA128B:{ *:[v16i8] }:$ws)
/* 50870*/  /*SwitchOpcode*/ 7|128,3/*391*/, TARGET_VAL(ISD::FSUB),// ->51265
/* 50874*/    OPC_Scope, 101|128,1/*229*/, /*->51106*/ // 2 children in Scope
/* 50877*/      OPC_MoveChild0,
/* 50878*/      OPC_SwitchOpcode /*2 cases */, 44|128,1/*172*/, TARGET_VAL(ISD::ConstantFP),// ->51055
/* 50883*/        OPC_CheckPredicate, 58, // Predicate_fpimm0
/* 50885*/        OPC_MoveParent,
/* 50886*/        OPC_MoveChild1,
/* 50887*/        OPC_SwitchOpcode /*2 cases */, 108, TARGET_VAL(ISD::FADD),// ->50999
/* 50891*/          OPC_Scope, 52, /*->50945*/ // 2 children in Scope
/* 50893*/            OPC_MoveChild0,
/* 50894*/            OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 50897*/            OPC_RecordChild0, // #0 = $fs
/* 50898*/            OPC_RecordChild1, // #1 = $ft
/* 50899*/            OPC_MoveParent,
/* 50900*/            OPC_RecordChild1, // #2 = $fr
/* 50901*/            OPC_MoveParent,
/* 50902*/            OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->50916
/* 50905*/              OPC_CheckPatternPredicate, 112, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50907*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_S), 0,
                            MVT::f32, 3/*#Ops*/, 2, 0, 1, 
                        // Src: (fsub:{ *:[f32] } (fpimm:{ *:[f32] })<<P:Predicate_fpimm0>>, (fadd:{ *:[f32] } (fmul:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft), FGR32Opnd:{ *:[f32] }:$fr)) - Complexity = 13
                        // Dst: (NMADD_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 50916*/            /*SwitchType*/ 26, MVT::f64,// ->50944
/* 50918*/              OPC_Scope, 11, /*->50931*/ // 2 children in Scope
/* 50920*/                OPC_CheckPatternPredicate, 113, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50922*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_D32), 0,
                              MVT::f64, 3/*#Ops*/, 2, 0, 1, 
                          // Src: (fsub:{ *:[f64] } (fpimm:{ *:[f64] })<<P:Predicate_fpimm0>>, (fadd:{ *:[f64] } (fmul:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft), AFGR64Opnd:{ *:[f64] }:$fr)) - Complexity = 13
                          // Dst: (NMADD_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 50931*/              /*Scope*/ 11, /*->50943*/
/* 50932*/                OPC_CheckPatternPredicate, 114, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50934*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_D64), 0,
                              MVT::f64, 3/*#Ops*/, 2, 0, 1, 
                          // Src: (fsub:{ *:[f64] } (fpimm:{ *:[f64] })<<P:Predicate_fpimm0>>, (fadd:{ *:[f64] } (fmul:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft), FGR64Opnd:{ *:[f64] }:$fr)) - Complexity = 13
                          // Dst: (NMADD_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fr, FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 50943*/              0, /*End of Scope*/
/* 50944*/            0, // EndSwitchType
/* 50945*/          /*Scope*/ 52, /*->50998*/
/* 50946*/            OPC_RecordChild0, // #0 = $fr
/* 50947*/            OPC_MoveChild1,
/* 50948*/            OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 50951*/            OPC_RecordChild0, // #1 = $fs
/* 50952*/            OPC_RecordChild1, // #2 = $ft
/* 50953*/            OPC_MoveParent,
/* 50954*/            OPC_MoveParent,
/* 50955*/            OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->50969
/* 50958*/              OPC_CheckPatternPredicate, 112, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50960*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_S), 0,
                            MVT::f32, 3/*#Ops*/, 0, 1, 2, 
                        // Src: (fsub:{ *:[f32] } (fpimm:{ *:[f32] })<<P:Predicate_fpimm0>>, (fadd:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, (fmul:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft))) - Complexity = 13
                        // Dst: (NMADD_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 50969*/            /*SwitchType*/ 26, MVT::f64,// ->50997
/* 50971*/              OPC_Scope, 11, /*->50984*/ // 2 children in Scope
/* 50973*/                OPC_CheckPatternPredicate, 113, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50975*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_D32), 0,
                              MVT::f64, 3/*#Ops*/, 0, 1, 2, 
                          // Src: (fsub:{ *:[f64] } (fpimm:{ *:[f64] })<<P:Predicate_fpimm0>>, (fadd:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, (fmul:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft))) - Complexity = 13
                          // Dst: (NMADD_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 50984*/              /*Scope*/ 11, /*->50996*/
/* 50985*/                OPC_CheckPatternPredicate, 114, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50987*/                OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_D64), 0,
                              MVT::f64, 3/*#Ops*/, 0, 1, 2, 
                          // Src: (fsub:{ *:[f64] } (fpimm:{ *:[f64] })<<P:Predicate_fpimm0>>, (fadd:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fr, (fmul:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft))) - Complexity = 13
                          // Dst: (NMADD_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fr, FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 50996*/              0, /*End of Scope*/
/* 50997*/            0, // EndSwitchType
/* 50998*/          0, /*End of Scope*/
/* 50999*/        /*SwitchOpcode*/ 52, TARGET_VAL(ISD::FSUB),// ->51054
/* 51002*/          OPC_MoveChild0,
/* 51003*/          OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51006*/          OPC_RecordChild0, // #0 = $fs
/* 51007*/          OPC_RecordChild1, // #1 = $ft
/* 51008*/          OPC_MoveParent,
/* 51009*/          OPC_RecordChild1, // #2 = $fr
/* 51010*/          OPC_MoveParent,
/* 51011*/          OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51025
/* 51014*/            OPC_CheckPatternPredicate, 112, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51016*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::NMSUB_S), 0,
                          MVT::f32, 3/*#Ops*/, 2, 0, 1, 
                      // Src: (fsub:{ *:[f32] } (fpimm:{ *:[f32] })<<P:Predicate_fpimm0>>, (fsub:{ *:[f32] } (fmul:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft), FGR32Opnd:{ *:[f32] }:$fr)) - Complexity = 13
                      // Dst: (NMSUB_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 51025*/          /*SwitchType*/ 26, MVT::f64,// ->51053
/* 51027*/            OPC_Scope, 11, /*->51040*/ // 2 children in Scope
/* 51029*/              OPC_CheckPatternPredicate, 113, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51031*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::NMSUB_D32), 0,
                            MVT::f64, 3/*#Ops*/, 2, 0, 1, 
                        // Src: (fsub:{ *:[f64] } (fpimm:{ *:[f64] })<<P:Predicate_fpimm0>>, (fsub:{ *:[f64] } (fmul:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft), AFGR64Opnd:{ *:[f64] }:$fr)) - Complexity = 13
                        // Dst: (NMSUB_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 51040*/            /*Scope*/ 11, /*->51052*/
/* 51041*/              OPC_CheckPatternPredicate, 114, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51043*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::NMSUB_D64), 0,
                            MVT::f64, 3/*#Ops*/, 2, 0, 1, 
                        // Src: (fsub:{ *:[f64] } (fpimm:{ *:[f64] })<<P:Predicate_fpimm0>>, (fsub:{ *:[f64] } (fmul:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft), FGR64Opnd:{ *:[f64] }:$fr)) - Complexity = 13
                        // Dst: (NMSUB_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fr, FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 51052*/            0, /*End of Scope*/
/* 51053*/          0, // EndSwitchType
/* 51054*/        0, // EndSwitchOpcode
/* 51055*/      /*SwitchOpcode*/ 47, TARGET_VAL(ISD::FMUL),// ->51105
/* 51058*/        OPC_RecordChild0, // #0 = $fs
/* 51059*/        OPC_RecordChild1, // #1 = $ft
/* 51060*/        OPC_MoveParent,
/* 51061*/        OPC_RecordChild1, // #2 = $fr
/* 51062*/        OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51076
/* 51065*/          OPC_CheckPatternPredicate, 115, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51067*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUB_S), 0,
                        MVT::f32, 3/*#Ops*/, 2, 0, 1, 
                    // Src: (fsub:{ *:[f32] } (fmul:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft), FGR32Opnd:{ *:[f32] }:$fr) - Complexity = 6
                    // Dst: (MSUB_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 51076*/        /*SwitchType*/ 26, MVT::f64,// ->51104
/* 51078*/          OPC_Scope, 11, /*->51091*/ // 2 children in Scope
/* 51080*/            OPC_CheckPatternPredicate, 116, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51082*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUB_D32), 0,
                          MVT::f64, 3/*#Ops*/, 2, 0, 1, 
                      // Src: (fsub:{ *:[f64] } (fmul:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft), AFGR64Opnd:{ *:[f64] }:$fr) - Complexity = 6
                      // Dst: (MSUB_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 51091*/          /*Scope*/ 11, /*->51103*/
/* 51092*/            OPC_CheckPatternPredicate, 117, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51094*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUB_D64), 0,
                          MVT::f64, 3/*#Ops*/, 2, 0, 1, 
                      // Src: (fsub:{ *:[f64] } (fmul:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft), FGR64Opnd:{ *:[f64] }:$fr) - Complexity = 6
                      // Dst: (MSUB_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fr, FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 51103*/          0, /*End of Scope*/
/* 51104*/        0, // EndSwitchType
/* 51105*/      0, // EndSwitchOpcode
/* 51106*/    /*Scope*/ 28|128,1/*156*/, /*->51264*/
/* 51108*/      OPC_RecordChild0, // #0 = $fs
/* 51109*/      OPC_Scope, 88, /*->51199*/ // 3 children in Scope
/* 51111*/        OPC_RecordChild1, // #1 = $ft
/* 51112*/        OPC_SwitchType /*2 cases */, 35, MVT::f32,// ->51150
/* 51115*/          OPC_Scope, 10, /*->51127*/ // 3 children in Scope
/* 51117*/            OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 51119*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUB_S), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1, 
                      // Src: (fsub:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft) - Complexity = 3
                      // Dst: (FSUB_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 51127*/          /*Scope*/ 10, /*->51138*/
/* 51128*/            OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51130*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUB_S_MM), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1, 
                      // Src: (fsub:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft) - Complexity = 3
                      // Dst: (FSUB_S_MM:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 51138*/          /*Scope*/ 10, /*->51149*/
/* 51139*/            OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51141*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUB_S_MMR6), 0,
                          MVT::f32, 2/*#Ops*/, 1, 0, 
                      // Src: (fsub:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft) - Complexity = 3
                      // Dst: (FSUB_S_MMR6:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$ft, FGR32Opnd:{ *:[f32] }:$fs)
/* 51149*/          0, /*End of Scope*/
/* 51150*/        /*SwitchType*/ 46, MVT::f64,// ->51198
/* 51152*/          OPC_Scope, 10, /*->51164*/ // 4 children in Scope
/* 51154*/            OPC_CheckPatternPredicate, 118, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 51156*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUB_D32), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1, 
                      // Src: (fsub:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                      // Dst: (FSUB_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 51164*/          /*Scope*/ 10, /*->51175*/
/* 51165*/            OPC_CheckPatternPredicate, 119, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 51167*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUB_D64), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1, 
                      // Src: (fsub:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                      // Dst: (FSUB_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 51175*/          /*Scope*/ 10, /*->51186*/
/* 51176*/            OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 51178*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUB_D32_MM), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1, 
                      // Src: (fsub:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                      // Dst: (FSUB_D32_MM:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 51186*/          /*Scope*/ 10, /*->51197*/
/* 51187*/            OPC_CheckPatternPredicate, 120, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 51189*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUB_D64_MM), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1, 
                      // Src: (fsub:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                      // Dst: (FSUB_D64_MM:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 51197*/          0, /*End of Scope*/
/* 51198*/        0, // EndSwitchType
/* 51199*/      /*Scope*/ 35, /*->51235*/
/* 51200*/        OPC_MoveChild1,
/* 51201*/        OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51204*/        OPC_RecordChild0, // #1 = $ws
/* 51205*/        OPC_RecordChild1, // #2 = $wt
/* 51206*/        OPC_MoveParent,
/* 51207*/        OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->51221
/* 51210*/          OPC_CheckPatternPredicate, 121, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51212*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FMSUB_W), 0,
                        MVT::v4f32, 3/*#Ops*/, 0, 1, 2, 
                    // Src: (fsub:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wd, (fmul:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)) - Complexity = 6
                    // Dst: (FMSUB_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wd, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 51221*/        /*SwitchType*/ 11, MVT::v2f64,// ->51234
/* 51223*/          OPC_CheckPatternPredicate, 121, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51225*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FMSUB_D), 0,
                        MVT::v2f64, 3/*#Ops*/, 0, 1, 2, 
                    // Src: (fsub:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wd, (fmul:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)) - Complexity = 6
                    // Dst: (FMSUB_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wd, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 51234*/        0, // EndSwitchType
/* 51235*/      /*Scope*/ 27, /*->51263*/
/* 51236*/        OPC_RecordChild1, // #1 = $wt
/* 51237*/        OPC_SwitchType /*2 cases */, 10, MVT::v4f32,// ->51250
/* 51240*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51242*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUB_W), 0,
                        MVT::v4f32, 2/*#Ops*/, 0, 1, 
                    // Src: (fsub:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 3
                    // Dst: (FSUB_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 51250*/        /*SwitchType*/ 10, MVT::v2f64,// ->51262
/* 51252*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51254*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUB_D), 0,
                        MVT::v2f64, 2/*#Ops*/, 0, 1, 
                    // Src: (fsub:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 3
                    // Dst: (FSUB_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 51262*/        0, // EndSwitchType
/* 51263*/      0, /*End of Scope*/
/* 51264*/    0, /*End of Scope*/
/* 51265*/  /*SwitchOpcode*/ 81|128,2/*337*/, TARGET_VAL(ISD::FNEG),// ->51606
/* 51269*/    OPC_Scope, 123|128,1/*251*/, /*->51523*/ // 2 children in Scope
/* 51272*/      OPC_MoveChild0,
/* 51273*/      OPC_SwitchOpcode /*2 cases */, 34|128,1/*162*/, TARGET_VAL(ISD::FADD),// ->51440
/* 51278*/        OPC_Scope, 79, /*->51359*/ // 2 children in Scope
/* 51280*/          OPC_MoveChild0,
/* 51281*/          OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51284*/          OPC_RecordChild0, // #0 = $fs
/* 51285*/          OPC_RecordChild1, // #1 = $ft
/* 51286*/          OPC_MoveParent,
/* 51287*/          OPC_RecordChild1, // #2 = $fr
/* 51288*/          OPC_MoveParent,
/* 51289*/          OPC_SwitchType /*2 cases */, 26, MVT::f32,// ->51318
/* 51292*/            OPC_Scope, 11, /*->51305*/ // 2 children in Scope
/* 51294*/              OPC_CheckPatternPredicate, 122, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51296*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_S), 0,
                            MVT::f32, 3/*#Ops*/, 2, 0, 1, 
                        // Src: (fneg:{ *:[f32] } (fadd:{ *:[f32] } (fmul:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft), FGR32Opnd:{ *:[f32] }:$fr)) - Complexity = 9
                        // Dst: (NMADD_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 51305*/            /*Scope*/ 11, /*->51317*/
/* 51306*/              OPC_CheckPatternPredicate, 123, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51308*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_S_MM), 0,
                            MVT::f32, 3/*#Ops*/, 2, 0, 1, 
                        // Src: (fneg:{ *:[f32] } (fadd:{ *:[f32] } (fmul:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft), FGR32Opnd:{ *:[f32] }:$fr)) - Complexity = 9
                        // Dst: (NMADD_S_MM:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 51317*/            0, /*End of Scope*/
/* 51318*/          /*SwitchType*/ 38, MVT::f64,// ->51358
/* 51320*/            OPC_Scope, 11, /*->51333*/ // 3 children in Scope
/* 51322*/              OPC_CheckPatternPredicate, 124, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51324*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_D32), 0,
                            MVT::f64, 3/*#Ops*/, 2, 0, 1, 
                        // Src: (fneg:{ *:[f64] } (fadd:{ *:[f64] } (fmul:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft), AFGR64Opnd:{ *:[f64] }:$fr)) - Complexity = 9
                        // Dst: (NMADD_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 51333*/            /*Scope*/ 11, /*->51345*/
/* 51334*/              OPC_CheckPatternPredicate, 125, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51336*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_D64), 0,
                            MVT::f64, 3/*#Ops*/, 2, 0, 1, 
                        // Src: (fneg:{ *:[f64] } (fadd:{ *:[f64] } (fmul:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft), FGR64Opnd:{ *:[f64] }:$fr)) - Complexity = 9
                        // Dst: (NMADD_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fr, FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 51345*/            /*Scope*/ 11, /*->51357*/
/* 51346*/              OPC_CheckPatternPredicate, 126, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51348*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_D32_MM), 0,
                            MVT::f64, 3/*#Ops*/, 2, 0, 1, 
                        // Src: (fneg:{ *:[f64] } (fadd:{ *:[f64] } (fmul:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft), AFGR64Opnd:{ *:[f64] }:$fr)) - Complexity = 9
                        // Dst: (NMADD_D32_MM:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 51357*/            0, /*End of Scope*/
/* 51358*/          0, // EndSwitchType
/* 51359*/        /*Scope*/ 79, /*->51439*/
/* 51360*/          OPC_RecordChild0, // #0 = $fr
/* 51361*/          OPC_MoveChild1,
/* 51362*/          OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51365*/          OPC_RecordChild0, // #1 = $fs
/* 51366*/          OPC_RecordChild1, // #2 = $ft
/* 51367*/          OPC_MoveParent,
/* 51368*/          OPC_MoveParent,
/* 51369*/          OPC_SwitchType /*2 cases */, 26, MVT::f32,// ->51398
/* 51372*/            OPC_Scope, 11, /*->51385*/ // 2 children in Scope
/* 51374*/              OPC_CheckPatternPredicate, 122, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51376*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_S), 0,
                            MVT::f32, 3/*#Ops*/, 0, 1, 2, 
                        // Src: (fneg:{ *:[f32] } (fadd:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, (fmul:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft))) - Complexity = 9
                        // Dst: (NMADD_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 51385*/            /*Scope*/ 11, /*->51397*/
/* 51386*/              OPC_CheckPatternPredicate, 123, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51388*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_S_MM), 0,
                            MVT::f32, 3/*#Ops*/, 0, 1, 2, 
                        // Src: (fneg:{ *:[f32] } (fadd:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, (fmul:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft))) - Complexity = 9
                        // Dst: (NMADD_S_MM:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 51397*/            0, /*End of Scope*/
/* 51398*/          /*SwitchType*/ 38, MVT::f64,// ->51438
/* 51400*/            OPC_Scope, 11, /*->51413*/ // 3 children in Scope
/* 51402*/              OPC_CheckPatternPredicate, 124, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51404*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_D32), 0,
                            MVT::f64, 3/*#Ops*/, 0, 1, 2, 
                        // Src: (fneg:{ *:[f64] } (fadd:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, (fmul:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft))) - Complexity = 9
                        // Dst: (NMADD_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 51413*/            /*Scope*/ 11, /*->51425*/
/* 51414*/              OPC_CheckPatternPredicate, 125, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51416*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_D64), 0,
                            MVT::f64, 3/*#Ops*/, 0, 1, 2, 
                        // Src: (fneg:{ *:[f64] } (fadd:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fr, (fmul:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft))) - Complexity = 9
                        // Dst: (NMADD_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fr, FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 51425*/            /*Scope*/ 11, /*->51437*/
/* 51426*/              OPC_CheckPatternPredicate, 126, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51428*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::NMADD_D32_MM), 0,
                            MVT::f64, 3/*#Ops*/, 0, 1, 2, 
                        // Src: (fneg:{ *:[f64] } (fadd:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, (fmul:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft))) - Complexity = 9
                        // Dst: (NMADD_D32_MM:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 51437*/            0, /*End of Scope*/
/* 51438*/          0, // EndSwitchType
/* 51439*/        0, /*End of Scope*/
/* 51440*/      /*SwitchOpcode*/ 79, TARGET_VAL(ISD::FSUB),// ->51522
/* 51443*/        OPC_MoveChild0,
/* 51444*/        OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51447*/        OPC_RecordChild0, // #0 = $fs
/* 51448*/        OPC_RecordChild1, // #1 = $ft
/* 51449*/        OPC_MoveParent,
/* 51450*/        OPC_RecordChild1, // #2 = $fr
/* 51451*/        OPC_MoveParent,
/* 51452*/        OPC_SwitchType /*2 cases */, 26, MVT::f32,// ->51481
/* 51455*/          OPC_Scope, 11, /*->51468*/ // 2 children in Scope
/* 51457*/            OPC_CheckPatternPredicate, 122, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51459*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::NMSUB_S), 0,
                          MVT::f32, 3/*#Ops*/, 2, 0, 1, 
                      // Src: (fneg:{ *:[f32] } (fsub:{ *:[f32] } (fmul:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft), FGR32Opnd:{ *:[f32] }:$fr)) - Complexity = 9
                      // Dst: (NMSUB_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 51468*/          /*Scope*/ 11, /*->51480*/
/* 51469*/            OPC_CheckPatternPredicate, 123, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51471*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::NMSUB_S_MM), 0,
                          MVT::f32, 3/*#Ops*/, 2, 0, 1, 
                      // Src: (fneg:{ *:[f32] } (fsub:{ *:[f32] } (fmul:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft), FGR32Opnd:{ *:[f32] }:$fr)) - Complexity = 9
                      // Dst: (NMSUB_S_MM:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 51480*/          0, /*End of Scope*/
/* 51481*/        /*SwitchType*/ 38, MVT::f64,// ->51521
/* 51483*/          OPC_Scope, 11, /*->51496*/ // 3 children in Scope
/* 51485*/            OPC_CheckPatternPredicate, 124, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51487*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::NMSUB_D32), 0,
                          MVT::f64, 3/*#Ops*/, 2, 0, 1, 
                      // Src: (fneg:{ *:[f64] } (fsub:{ *:[f64] } (fmul:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft), AFGR64Opnd:{ *:[f64] }:$fr)) - Complexity = 9
                      // Dst: (NMSUB_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 51496*/          /*Scope*/ 11, /*->51508*/
/* 51497*/            OPC_CheckPatternPredicate, 125, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51499*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::NMSUB_D64), 0,
                          MVT::f64, 3/*#Ops*/, 2, 0, 1, 
                      // Src: (fneg:{ *:[f64] } (fsub:{ *:[f64] } (fmul:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft), FGR64Opnd:{ *:[f64] }:$fr)) - Complexity = 9
                      // Dst: (NMSUB_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fr, FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 51508*/          /*Scope*/ 11, /*->51520*/
/* 51509*/            OPC_CheckPatternPredicate, 126, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51511*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::NMSUB_D32_MM), 0,
                          MVT::f64, 3/*#Ops*/, 2, 0, 1, 
                      // Src: (fneg:{ *:[f64] } (fsub:{ *:[f64] } (fmul:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft), AFGR64Opnd:{ *:[f64] }:$fr)) - Complexity = 9
                      // Dst: (NMSUB_D32_MM:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 51520*/          0, /*End of Scope*/
/* 51521*/        0, // EndSwitchType
/* 51522*/      0, // EndSwitchOpcode
/* 51523*/    /*Scope*/ 81, /*->51605*/
/* 51524*/      OPC_RecordChild0, // #0 = $fs
/* 51525*/      OPC_SwitchType /*2 cases */, 32, MVT::f32,// ->51560
/* 51528*/        OPC_Scope, 9, /*->51539*/ // 3 children in Scope
/* 51530*/          OPC_CheckPatternPredicate, 127, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat())
/* 51532*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FNEG_S), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (fneg:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs) - Complexity = 3
                    // Dst: (FNEG_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs)
/* 51539*/        /*Scope*/ 9, /*->51549*/
/* 51540*/          OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51542*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FNEG_S_MM), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (fneg:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs) - Complexity = 3
                    // Dst: (FNEG_S_MM:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs)
/* 51549*/        /*Scope*/ 9, /*->51559*/
/* 51550*/          OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51552*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FNEG_S_MMR6), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (fneg:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs) - Complexity = 3
                    // Dst: (FNEG_S_MMR6:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs)
/* 51559*/        0, /*End of Scope*/
/* 51560*/      /*SwitchType*/ 42, MVT::f64,// ->51604
/* 51562*/        OPC_Scope, 9, /*->51573*/ // 4 children in Scope
/* 51564*/          OPC_CheckPatternPredicate, 118, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 51566*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FNEG_D32), 0,
                        MVT::f64, 1/*#Ops*/, 0, 
                    // Src: (fneg:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                    // Dst: (FNEG_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs)
/* 51573*/        /*Scope*/ 9, /*->51583*/
/* 51574*/          OPC_CheckPatternPredicate, 119, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 51576*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FNEG_D64), 0,
                        MVT::f64, 1/*#Ops*/, 0, 
                    // Src: (fneg:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                    // Dst: (FNEG_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs)
/* 51583*/        /*Scope*/ 9, /*->51593*/
/* 51584*/          OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 51586*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FNEG_D32_MM), 0,
                        MVT::f64, 1/*#Ops*/, 0, 
                    // Src: (fneg:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                    // Dst: (FNEG_D32_MM:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs)
/* 51593*/        /*Scope*/ 9, /*->51603*/
/* 51594*/          OPC_CheckPatternPredicate, 120, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 51596*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FNEG_D64_MM), 0,
                        MVT::f64, 1/*#Ops*/, 0, 
                    // Src: (fneg:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                    // Dst: (FNEG_D64_MM:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs)
/* 51603*/        0, /*End of Scope*/
/* 51604*/      0, // EndSwitchType
/* 51605*/    0, /*End of Scope*/
/* 51606*/  /*SwitchOpcode*/ 45|128,2/*301*/, TARGET_VAL(ISD::FADD),// ->51911
/* 51610*/    OPC_Scope, 51, /*->51663*/ // 4 children in Scope
/* 51612*/      OPC_MoveChild0,
/* 51613*/      OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51616*/      OPC_RecordChild0, // #0 = $fs
/* 51617*/      OPC_RecordChild1, // #1 = $ft
/* 51618*/      OPC_MoveParent,
/* 51619*/      OPC_RecordChild1, // #2 = $fr
/* 51620*/      OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51634
/* 51623*/        OPC_CheckPatternPredicate, 115, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51625*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MADD_S), 0,
                      MVT::f32, 3/*#Ops*/, 2, 0, 1, 
                  // Src: (fadd:{ *:[f32] } (fmul:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft), FGR32Opnd:{ *:[f32] }:$fr) - Complexity = 6
                  // Dst: (MADD_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 51634*/      /*SwitchType*/ 26, MVT::f64,// ->51662
/* 51636*/        OPC_Scope, 11, /*->51649*/ // 2 children in Scope
/* 51638*/          OPC_CheckPatternPredicate, 116, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51640*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MADD_D32), 0,
                        MVT::f64, 3/*#Ops*/, 2, 0, 1, 
                    // Src: (fadd:{ *:[f64] } (fmul:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft), AFGR64Opnd:{ *:[f64] }:$fr) - Complexity = 6
                    // Dst: (MADD_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 51649*/        /*Scope*/ 11, /*->51661*/
/* 51650*/          OPC_CheckPatternPredicate, 117, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51652*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MADD_D64), 0,
                        MVT::f64, 3/*#Ops*/, 2, 0, 1, 
                    // Src: (fadd:{ *:[f64] } (fmul:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft), FGR64Opnd:{ *:[f64] }:$fr) - Complexity = 6
                    // Dst: (MADD_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fr, FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 51661*/        0, /*End of Scope*/
/* 51662*/      0, // EndSwitchType
/* 51663*/    /*Scope*/ 51|128,1/*179*/, /*->51844*/
/* 51665*/      OPC_RecordChild0, // #0 = $fr
/* 51666*/      OPC_Scope, 50, /*->51718*/ // 3 children in Scope
/* 51668*/        OPC_MoveChild1,
/* 51669*/        OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51672*/        OPC_RecordChild0, // #1 = $fs
/* 51673*/        OPC_RecordChild1, // #2 = $ft
/* 51674*/        OPC_MoveParent,
/* 51675*/        OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51689
/* 51678*/          OPC_CheckPatternPredicate, 115, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51680*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MADD_S), 0,
                        MVT::f32, 3/*#Ops*/, 0, 1, 2, 
                    // Src: (fadd:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, (fmul:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)) - Complexity = 6
                    // Dst: (MADD_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fr, FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 51689*/        /*SwitchType*/ 26, MVT::f64,// ->51717
/* 51691*/          OPC_Scope, 11, /*->51704*/ // 2 children in Scope
/* 51693*/            OPC_CheckPatternPredicate, 116, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51695*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MADD_D32), 0,
                          MVT::f64, 3/*#Ops*/, 0, 1, 2, 
                      // Src: (fadd:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, (fmul:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)) - Complexity = 6
                      // Dst: (MADD_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fr, AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 51704*/          /*Scope*/ 11, /*->51716*/
/* 51705*/            OPC_CheckPatternPredicate, 117, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51707*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::MADD_D64), 0,
                          MVT::f64, 3/*#Ops*/, 0, 1, 2, 
                      // Src: (fadd:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fr, (fmul:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)) - Complexity = 6
                      // Dst: (MADD_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fr, FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 51716*/          0, /*End of Scope*/
/* 51717*/        0, // EndSwitchType
/* 51718*/      /*Scope*/ 88, /*->51807*/
/* 51719*/        OPC_RecordChild1, // #1 = $ft
/* 51720*/        OPC_SwitchType /*2 cases */, 35, MVT::f32,// ->51758
/* 51723*/          OPC_Scope, 10, /*->51735*/ // 3 children in Scope
/* 51725*/            OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 51727*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FADD_S), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1, 
                      // Src: (fadd:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft) - Complexity = 3
                      // Dst: (FADD_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 51735*/          /*Scope*/ 10, /*->51746*/
/* 51736*/            OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51738*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FADD_S_MM), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1, 
                      // Src: (fadd:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft) - Complexity = 3
                      // Dst: (FADD_S_MM:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 51746*/          /*Scope*/ 10, /*->51757*/
/* 51747*/            OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51749*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FADD_S_MMR6), 0,
                          MVT::f32, 2/*#Ops*/, 1, 0, 
                      // Src: (fadd:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft) - Complexity = 3
                      // Dst: (FADD_S_MMR6:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$ft, FGR32Opnd:{ *:[f32] }:$fs)
/* 51757*/          0, /*End of Scope*/
/* 51758*/        /*SwitchType*/ 46, MVT::f64,// ->51806
/* 51760*/          OPC_Scope, 10, /*->51772*/ // 4 children in Scope
/* 51762*/            OPC_CheckPatternPredicate, 118, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 51764*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FADD_D32), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1, 
                      // Src: (fadd:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                      // Dst: (FADD_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 51772*/          /*Scope*/ 10, /*->51783*/
/* 51773*/            OPC_CheckPatternPredicate, 119, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 51775*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FADD_D64), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1, 
                      // Src: (fadd:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                      // Dst: (FADD_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 51783*/          /*Scope*/ 10, /*->51794*/
/* 51784*/            OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 51786*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FADD_D32_MM), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1, 
                      // Src: (fadd:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                      // Dst: (FADD_D32_MM:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 51794*/          /*Scope*/ 10, /*->51805*/
/* 51795*/            OPC_CheckPatternPredicate, 120, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 51797*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FADD_D64_MM), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1, 
                      // Src: (fadd:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                      // Dst: (FADD_D64_MM:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 51805*/          0, /*End of Scope*/
/* 51806*/        0, // EndSwitchType
/* 51807*/      /*Scope*/ 35, /*->51843*/
/* 51808*/        OPC_MoveChild1,
/* 51809*/        OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51812*/        OPC_RecordChild0, // #1 = $ws
/* 51813*/        OPC_RecordChild1, // #2 = $wt
/* 51814*/        OPC_MoveParent,
/* 51815*/        OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->51829
/* 51818*/          OPC_CheckPatternPredicate, 121, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51820*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FMADD_W), 0,
                        MVT::v4f32, 3/*#Ops*/, 0, 1, 2, 
                    // Src: (fadd:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wd, (fmul:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)) - Complexity = 6
                    // Dst: (FMADD_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wd, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 51829*/        /*SwitchType*/ 11, MVT::v2f64,// ->51842
/* 51831*/          OPC_CheckPatternPredicate, 121, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51833*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FMADD_D), 0,
                        MVT::v2f64, 3/*#Ops*/, 0, 1, 2, 
                    // Src: (fadd:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wd, (fmul:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)) - Complexity = 6
                    // Dst: (FMADD_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wd, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 51842*/        0, // EndSwitchType
/* 51843*/      0, /*End of Scope*/
/* 51844*/    /*Scope*/ 36, /*->51881*/
/* 51845*/      OPC_MoveChild0,
/* 51846*/      OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51849*/      OPC_RecordChild0, // #0 = $ws
/* 51850*/      OPC_RecordChild1, // #1 = $wt
/* 51851*/      OPC_MoveParent,
/* 51852*/      OPC_RecordChild1, // #2 = $wd
/* 51853*/      OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->51867
/* 51856*/        OPC_CheckPatternPredicate, 121, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51858*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FMADD_W), 0,
                      MVT::v4f32, 3/*#Ops*/, 2, 0, 1, 
                  // Src: (fadd:{ *:[v4f32] } (fmul:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt), MSA128WOpnd:{ *:[v4f32] }:$wd) - Complexity = 6
                  // Dst: (FMADD_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wd, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 51867*/      /*SwitchType*/ 11, MVT::v2f64,// ->51880
/* 51869*/        OPC_CheckPatternPredicate, 121, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51871*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FMADD_D), 0,
                      MVT::v2f64, 3/*#Ops*/, 2, 0, 1, 
                  // Src: (fadd:{ *:[v2f64] } (fmul:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt), MSA128DOpnd:{ *:[v2f64] }:$wd) - Complexity = 6
                  // Dst: (FMADD_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wd, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 51880*/      0, // EndSwitchType
/* 51881*/    /*Scope*/ 28, /*->51910*/
/* 51882*/      OPC_RecordChild0, // #0 = $ws
/* 51883*/      OPC_RecordChild1, // #1 = $wt
/* 51884*/      OPC_SwitchType /*2 cases */, 10, MVT::v4f32,// ->51897
/* 51887*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51889*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FADD_W), 0,
                      MVT::v4f32, 2/*#Ops*/, 0, 1, 
                  // Src: (fadd:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 3
                  // Dst: (FADD_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 51897*/      /*SwitchType*/ 10, MVT::v2f64,// ->51909
/* 51899*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51901*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FADD_D), 0,
                      MVT::v2f64, 2/*#Ops*/, 0, 1, 
                  // Src: (fadd:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 3
                  // Dst: (FADD_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 51909*/      0, // EndSwitchType
/* 51910*/    0, /*End of Scope*/
/* 51911*/  /*SwitchOpcode*/ 28|128,1/*156*/, TARGET_VAL(ISD::ConstantFP),// ->52071
/* 51915*/    OPC_Scope, 62, /*->51979*/ // 2 children in Scope
/* 51917*/      OPC_CheckPredicate, 58, // Predicate_fpimm0
/* 51919*/      OPC_SwitchType /*2 cases */, 41, MVT::f32,// ->51963
/* 51922*/        OPC_Scope, 12, /*->51936*/ // 3 children in Scope
/* 51924*/          OPC_CheckPatternPredicate, 72, // (Subtarget->hasStandardEncoding())
/* 51926*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 51929*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MTC1), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (fpimm:{ *:[f32] })<<P:Predicate_fpimm0>> - Complexity = 4
                    // Dst: (MTC1:{ *:[f32] } ZERO:{ *:[i32] })
/* 51936*/        /*Scope*/ 12, /*->51949*/
/* 51937*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 51939*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 51942*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MTC1_MM), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (fpimm:{ *:[f32] })<<P:Predicate_fpimm0>> - Complexity = 4
                    // Dst: (MTC1_MM:{ *:[f32] } ZERO:{ *:[i32] })
/* 51949*/        /*Scope*/ 12, /*->51962*/
/* 51950*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 51952*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 51955*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::MTC1_MMR6), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (fpimm:{ *:[f32] })<<P:Predicate_fpimm0>> - Complexity = 4
                    // Dst: (MTC1_MMR6:{ *:[f32] } ZERO:{ *:[i32] })
/* 51962*/        0, /*End of Scope*/
/* 51963*/      /*SwitchType*/ 13, MVT::f64,// ->51978
/* 51965*/        OPC_CheckPatternPredicate, 128, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (Subtarget->isGP64bit())
/* 51967*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 51971*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::DMTC1), 0,
                      MVT::f64, 1/*#Ops*/, 0, 
                  // Src: (fpimm:{ *:[f64] })<<P:Predicate_fpimm0>> - Complexity = 4
                  // Dst: (DMTC1:{ *:[f64] } ZERO_64:{ *:[i64] })
/* 51978*/      0, // EndSwitchType
/* 51979*/    /*Scope*/ 90, /*->52070*/
/* 51980*/      OPC_CheckPredicate, 59, // Predicate_fpimm0neg
/* 51982*/      OPC_SwitchType /*2 cases */, 62, MVT::f32,// ->52047
/* 51985*/        OPC_Scope, 19, /*->52006*/ // 3 children in Scope
/* 51987*/          OPC_CheckPatternPredicate, 72, // (Subtarget->hasStandardEncoding())
/* 51989*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 51992*/          OPC_EmitNode1, TARGET_VAL(Mips::MTC1), 0,
                        MVT::f32, 1/*#Ops*/, 0,  // Results = #1
/* 51999*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FNEG_S), 0,
                        MVT::f32, 1/*#Ops*/, 1, 
                    // Src: (fpimm:{ *:[f32] })<<P:Predicate_fpimm0neg>> - Complexity = 4
                    // Dst: (FNEG_S:{ *:[f32] } (MTC1:{ *:[f32] } ZERO:{ *:[i32] }))
/* 52006*/        /*Scope*/ 19, /*->52026*/
/* 52007*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 52009*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 52012*/          OPC_EmitNode1, TARGET_VAL(Mips::MTC1_MM), 0,
                        MVT::f32, 1/*#Ops*/, 0,  // Results = #1
/* 52019*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FNEG_S_MM), 0,
                        MVT::f32, 1/*#Ops*/, 1, 
                    // Src: (fpimm:{ *:[f32] })<<P:Predicate_fpimm0neg>> - Complexity = 4
                    // Dst: (FNEG_S_MM:{ *:[f32] } (MTC1_MM:{ *:[f32] } ZERO:{ *:[i32] }))
/* 52026*/        /*Scope*/ 19, /*->52046*/
/* 52027*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 52029*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 52032*/          OPC_EmitNode1, TARGET_VAL(Mips::MTC1_MMR6), 0,
                        MVT::f32, 1/*#Ops*/, 0,  // Results = #1
/* 52039*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FNEG_S_MMR6), 0,
                        MVT::f32, 1/*#Ops*/, 1, 
                    // Src: (fpimm:{ *:[f32] })<<P:Predicate_fpimm0neg>> - Complexity = 4
                    // Dst: (FNEG_S_MMR6:{ *:[f32] } (MTC1_MMR6:{ *:[f32] } ZERO:{ *:[i32] }))
/* 52046*/        0, /*End of Scope*/
/* 52047*/      /*SwitchType*/ 20, MVT::f64,// ->52069
/* 52049*/        OPC_CheckPatternPredicate, 128, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (Subtarget->isGP64bit())
/* 52051*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 52055*/        OPC_EmitNode1, TARGET_VAL(Mips::DMTC1), 0,
                      MVT::f64, 1/*#Ops*/, 0,  // Results = #1
/* 52062*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FNEG_D64), 0,
                      MVT::f64, 1/*#Ops*/, 1, 
                  // Src: (fpimm:{ *:[f64] })<<P:Predicate_fpimm0neg>> - Complexity = 4
                  // Dst: (FNEG_D64:{ *:[f64] } (DMTC1:{ *:[f64] } ZERO_64:{ *:[i64] }))
/* 52069*/      0, // EndSwitchType
/* 52070*/    0, /*End of Scope*/
/* 52071*/  /*SwitchOpcode*/ 93, TARGET_VAL(ISD::FABS),// ->52167
/* 52074*/    OPC_RecordChild0, // #0 = $fs
/* 52075*/    OPC_SwitchType /*4 cases */, 22, MVT::f32,// ->52100
/* 52078*/      OPC_Scope, 9, /*->52089*/ // 2 children in Scope
/* 52080*/        OPC_CheckPatternPredicate, 129, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (Subtarget->inAbs2008Mode() ||TM.Options.NoNaNsFPMath)
/* 52082*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FABS_S), 0,
                      MVT::f32, 1/*#Ops*/, 0, 
                  // Src: (fabs:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs) - Complexity = 3
                  // Dst: (FABS_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs)
/* 52089*/      /*Scope*/ 9, /*->52099*/
/* 52090*/        OPC_CheckPatternPredicate, 130, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (Subtarget->inAbs2008Mode() ||TM.Options.NoNaNsFPMath)
/* 52092*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FABS_S_MM), 0,
                      MVT::f32, 1/*#Ops*/, 0, 
                  // Src: (fabs:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs) - Complexity = 3
                  // Dst: (FABS_S_MM:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs)
/* 52099*/      0, /*End of Scope*/
/* 52100*/    /*SwitchType*/ 42, MVT::f64,// ->52144
/* 52102*/      OPC_Scope, 9, /*->52113*/ // 4 children in Scope
/* 52104*/        OPC_CheckPatternPredicate, 131, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (Subtarget->inAbs2008Mode() ||TM.Options.NoNaNsFPMath)
/* 52106*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FABS_D32), 0,
                      MVT::f64, 1/*#Ops*/, 0, 
                  // Src: (fabs:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                  // Dst: (FABS_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs)
/* 52113*/      /*Scope*/ 9, /*->52123*/
/* 52114*/        OPC_CheckPatternPredicate, 132, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (Subtarget->inAbs2008Mode() ||TM.Options.NoNaNsFPMath)
/* 52116*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FABS_D64), 0,
                      MVT::f64, 1/*#Ops*/, 0, 
                  // Src: (fabs:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                  // Dst: (FABS_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs)
/* 52123*/      /*Scope*/ 9, /*->52133*/
/* 52124*/        OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 52126*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FABS_D32_MM), 0,
                      MVT::f64, 1/*#Ops*/, 0, 
                  // Src: (fabs:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                  // Dst: (FABS_D32_MM:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs)
/* 52133*/      /*Scope*/ 9, /*->52143*/
/* 52134*/        OPC_CheckPatternPredicate, 120, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 52136*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FABS_D64_MM), 0,
                      MVT::f64, 1/*#Ops*/, 0, 
                  // Src: (fabs:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                  // Dst: (FABS_D64_MM:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs)
/* 52143*/      0, /*End of Scope*/
/* 52144*/    /*SwitchType*/ 9, MVT::v4f32,// ->52155
/* 52146*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52148*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FABS_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (fabs:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 3
                // Dst: (FABS_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 52155*/    /*SwitchType*/ 9, MVT::v2f64,// ->52166
/* 52157*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52159*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FABS_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (fabs:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 3
                // Dst: (FABS_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 52166*/    0, // EndSwitchType
/* 52167*/  /*SwitchOpcode*/ 93, TARGET_VAL(ISD::FSQRT),// ->52263
/* 52170*/    OPC_RecordChild0, // #0 = $fs
/* 52171*/    OPC_SwitchType /*4 cases */, 22, MVT::f32,// ->52196
/* 52174*/      OPC_Scope, 9, /*->52185*/ // 2 children in Scope
/* 52176*/        OPC_CheckPatternPredicate, 133, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52178*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FSQRT_S), 0,
                      MVT::f32, 1/*#Ops*/, 0, 
                  // Src: (fsqrt:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs) - Complexity = 3
                  // Dst: (FSQRT_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs)
/* 52185*/      /*Scope*/ 9, /*->52195*/
/* 52186*/        OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52188*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FSQRT_S_MM), 0,
                      MVT::f32, 1/*#Ops*/, 0, 
                  // Src: (fsqrt:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs) - Complexity = 3
                  // Dst: (FSQRT_S_MM:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs)
/* 52195*/      0, /*End of Scope*/
/* 52196*/    /*SwitchType*/ 42, MVT::f64,// ->52240
/* 52198*/      OPC_Scope, 9, /*->52209*/ // 4 children in Scope
/* 52200*/        OPC_CheckPatternPredicate, 19, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52202*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FSQRT_D32), 0,
                      MVT::f64, 1/*#Ops*/, 0, 
                  // Src: (fsqrt:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                  // Dst: (FSQRT_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs)
/* 52209*/      /*Scope*/ 9, /*->52219*/
/* 52210*/        OPC_CheckPatternPredicate, 18, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52212*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FSQRT_D64), 0,
                      MVT::f64, 1/*#Ops*/, 0, 
                  // Src: (fsqrt:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                  // Dst: (FSQRT_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs)
/* 52219*/      /*Scope*/ 9, /*->52229*/
/* 52220*/        OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 52222*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FSQRT_D32_MM), 0,
                      MVT::f64, 1/*#Ops*/, 0, 
                  // Src: (fsqrt:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                  // Dst: (FSQRT_D32_MM:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs)
/* 52229*/      /*Scope*/ 9, /*->52239*/
/* 52230*/        OPC_CheckPatternPredicate, 120, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 52232*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FSQRT_D64_MM), 0,
                      MVT::f64, 1/*#Ops*/, 0, 
                  // Src: (fsqrt:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                  // Dst: (FSQRT_D64_MM:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs)
/* 52239*/      0, /*End of Scope*/
/* 52240*/    /*SwitchType*/ 9, MVT::v4f32,// ->52251
/* 52242*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52244*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSQRT_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (fsqrt:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 3
                // Dst: (FSQRT_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 52251*/    /*SwitchType*/ 9, MVT::v2f64,// ->52262
/* 52253*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52255*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSQRT_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (fsqrt:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 3
                // Dst: (FSQRT_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 52262*/    0, // EndSwitchType
/* 52263*/  /*SwitchOpcode*/ 113, TARGET_VAL(ISD::FDIV),// ->52379
/* 52266*/    OPC_RecordChild0, // #0 = $fs
/* 52267*/    OPC_RecordChild1, // #1 = $ft
/* 52268*/    OPC_SwitchType /*4 cases */, 35, MVT::f32,// ->52306
/* 52271*/      OPC_Scope, 10, /*->52283*/ // 3 children in Scope
/* 52273*/        OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52275*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FDIV_S), 0,
                      MVT::f32, 2/*#Ops*/, 0, 1, 
                  // Src: (fdiv:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft) - Complexity = 3
                  // Dst: (FDIV_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 52283*/      /*Scope*/ 10, /*->52294*/
/* 52284*/        OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52286*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FDIV_S_MM), 0,
                      MVT::f32, 2/*#Ops*/, 0, 1, 
                  // Src: (fdiv:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft) - Complexity = 3
                  // Dst: (FDIV_S_MM:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 52294*/      /*Scope*/ 10, /*->52305*/
/* 52295*/        OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52297*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FDIV_S_MMR6), 0,
                      MVT::f32, 2/*#Ops*/, 1, 0, 
                  // Src: (fdiv:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft) - Complexity = 3
                  // Dst: (FDIV_S_MMR6:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$ft, FGR32Opnd:{ *:[f32] }:$fs)
/* 52305*/      0, /*End of Scope*/
/* 52306*/    /*SwitchType*/ 46, MVT::f64,// ->52354
/* 52308*/      OPC_Scope, 10, /*->52320*/ // 4 children in Scope
/* 52310*/        OPC_CheckPatternPredicate, 118, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52312*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FDIV_D32), 0,
                      MVT::f64, 2/*#Ops*/, 0, 1, 
                  // Src: (fdiv:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                  // Dst: (FDIV_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 52320*/      /*Scope*/ 10, /*->52331*/
/* 52321*/        OPC_CheckPatternPredicate, 119, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52323*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FDIV_D64), 0,
                      MVT::f64, 2/*#Ops*/, 0, 1, 
                  // Src: (fdiv:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                  // Dst: (FDIV_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 52331*/      /*Scope*/ 10, /*->52342*/
/* 52332*/        OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 52334*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FDIV_D32_MM), 0,
                      MVT::f64, 2/*#Ops*/, 0, 1, 
                  // Src: (fdiv:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                  // Dst: (FDIV_D32_MM:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 52342*/      /*Scope*/ 10, /*->52353*/
/* 52343*/        OPC_CheckPatternPredicate, 120, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 52345*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FDIV_D64_MM), 0,
                      MVT::f64, 2/*#Ops*/, 0, 1, 
                  // Src: (fdiv:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                  // Dst: (FDIV_D64_MM:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 52353*/      0, /*End of Scope*/
/* 52354*/    /*SwitchType*/ 10, MVT::v4f32,// ->52366
/* 52356*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52358*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FDIV_W), 0,
                    MVT::v4f32, 2/*#Ops*/, 0, 1, 
                // Src: (fdiv:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 3
                // Dst: (FDIV_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 52366*/    /*SwitchType*/ 10, MVT::v2f64,// ->52378
/* 52368*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52370*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FDIV_D), 0,
                    MVT::v2f64, 2/*#Ops*/, 0, 1, 
                // Src: (fdiv:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 3
                // Dst: (FDIV_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 52378*/    0, // EndSwitchType
/* 52379*/  /*SwitchOpcode*/ 63|128,1/*191*/, TARGET_VAL(ISD::FMUL),// ->52574
/* 52383*/    OPC_Scope, 125, /*->52510*/ // 3 children in Scope
/* 52385*/      OPC_RecordChild0, // #0 = $fs
/* 52386*/      OPC_Scope, 88, /*->52476*/ // 2 children in Scope
/* 52388*/        OPC_RecordChild1, // #1 = $ft
/* 52389*/        OPC_SwitchType /*2 cases */, 35, MVT::f32,// ->52427
/* 52392*/          OPC_Scope, 10, /*->52404*/ // 3 children in Scope
/* 52394*/            OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52396*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FMUL_S), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1, 
                      // Src: (fmul:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft) - Complexity = 3
                      // Dst: (FMUL_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 52404*/          /*Scope*/ 10, /*->52415*/
/* 52405*/            OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52407*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FMUL_S_MM), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1, 
                      // Src: (fmul:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft) - Complexity = 3
                      // Dst: (FMUL_S_MM:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft)
/* 52415*/          /*Scope*/ 10, /*->52426*/
/* 52416*/            OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52418*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FMUL_S_MMR6), 0,
                          MVT::f32, 2/*#Ops*/, 1, 0, 
                      // Src: (fmul:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$fs, FGR32Opnd:{ *:[f32] }:$ft) - Complexity = 3
                      // Dst: (FMUL_S_MMR6:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$ft, FGR32Opnd:{ *:[f32] }:$fs)
/* 52426*/          0, /*End of Scope*/
/* 52427*/        /*SwitchType*/ 46, MVT::f64,// ->52475
/* 52429*/          OPC_Scope, 10, /*->52441*/ // 4 children in Scope
/* 52431*/            OPC_CheckPatternPredicate, 118, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52433*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FMUL_D32), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1, 
                      // Src: (fmul:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                      // Dst: (FMUL_D32:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 52441*/          /*Scope*/ 10, /*->52452*/
/* 52442*/            OPC_CheckPatternPredicate, 119, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52444*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FMUL_D64), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1, 
                      // Src: (fmul:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                      // Dst: (FMUL_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 52452*/          /*Scope*/ 10, /*->52463*/
/* 52453*/            OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 52455*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FMUL_D32_MM), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1, 
                      // Src: (fmul:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                      // Dst: (FMUL_D32_MM:{ *:[f64] } AFGR64Opnd:{ *:[f64] }:$fs, AFGR64Opnd:{ *:[f64] }:$ft)
/* 52463*/          /*Scope*/ 10, /*->52474*/
/* 52464*/            OPC_CheckPatternPredicate, 120, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 52466*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::FMUL_D64_MM), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1, 
                      // Src: (fmul:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft) - Complexity = 3
                      // Dst: (FMUL_D64_MM:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 52474*/          0, /*End of Scope*/
/* 52475*/        0, // EndSwitchType
/* 52476*/      /*Scope*/ 32, /*->52509*/
/* 52477*/        OPC_MoveChild1,
/* 52478*/        OPC_CheckOpcode, TARGET_VAL(ISD::FEXP2),
/* 52481*/        OPC_RecordChild0, // #1 = $wt
/* 52482*/        OPC_MoveParent,
/* 52483*/        OPC_SwitchType /*2 cases */, 10, MVT::v4f32,// ->52496
/* 52486*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52488*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXP2_W), 0,
                        MVT::v4f32, 2/*#Ops*/, 0, 1, 
                    // Src: (fmul:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, (fexp2:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wt)) - Complexity = 6
                    // Dst: (FEXP2_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 52496*/        /*SwitchType*/ 10, MVT::v2f64,// ->52508
/* 52498*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52500*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXP2_D), 0,
                        MVT::v2f64, 2/*#Ops*/, 0, 1, 
                    // Src: (fmul:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, (fexp2:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wt)) - Complexity = 6
                    // Dst: (FEXP2_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 52508*/        0, // EndSwitchType
/* 52509*/      0, /*End of Scope*/
/* 52510*/    /*Scope*/ 33, /*->52544*/
/* 52511*/      OPC_MoveChild0,
/* 52512*/      OPC_CheckOpcode, TARGET_VAL(ISD::FEXP2),
/* 52515*/      OPC_RecordChild0, // #0 = $wt
/* 52516*/      OPC_MoveParent,
/* 52517*/      OPC_RecordChild1, // #1 = $ws
/* 52518*/      OPC_SwitchType /*2 cases */, 10, MVT::v4f32,// ->52531
/* 52521*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52523*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXP2_W), 0,
                      MVT::v4f32, 2/*#Ops*/, 1, 0, 
                  // Src: (fmul:{ *:[v4f32] } (fexp2:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wt), MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 6
                  // Dst: (FEXP2_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 52531*/      /*SwitchType*/ 10, MVT::v2f64,// ->52543
/* 52533*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52535*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXP2_D), 0,
                      MVT::v2f64, 2/*#Ops*/, 1, 0, 
                  // Src: (fmul:{ *:[v2f64] } (fexp2:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wt), MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 6
                  // Dst: (FEXP2_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 52543*/      0, // EndSwitchType
/* 52544*/    /*Scope*/ 28, /*->52573*/
/* 52545*/      OPC_RecordChild0, // #0 = $ws
/* 52546*/      OPC_RecordChild1, // #1 = $wt
/* 52547*/      OPC_SwitchType /*2 cases */, 10, MVT::v4f32,// ->52560
/* 52550*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52552*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FMUL_W), 0,
                      MVT::v4f32, 2/*#Ops*/, 0, 1, 
                  // Src: (fmul:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 3
                  // Dst: (FMUL_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 52560*/      /*SwitchType*/ 10, MVT::v2f64,// ->52572
/* 52562*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52564*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FMUL_D), 0,
                      MVT::v2f64, 2/*#Ops*/, 0, 1, 
                  // Src: (fmul:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 3
                  // Dst: (FMUL_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 52572*/      0, // EndSwitchType
/* 52573*/    0, /*End of Scope*/
/* 52574*/  /*SwitchOpcode*/ 26, TARGET_VAL(MipsISD::BuildPairF64),// ->52603
/* 52577*/    OPC_RecordChild0, // #0 = $lo
/* 52578*/    OPC_RecordChild1, // #1 = $hi
/* 52579*/    OPC_Scope, 10, /*->52591*/ // 2 children in Scope
/* 52581*/      OPC_CheckPatternPredicate, 88, // (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMips16Mode())
/* 52583*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BuildPairF64), 0,
                    MVT::f64, 2/*#Ops*/, 0, 1, 
                // Src: (MipsBuildPairF64:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$lo, GPR32Opnd:{ *:[i32] }:$hi) - Complexity = 3
                // Dst: (BuildPairF64:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$lo, GPR32Opnd:{ *:[i32] }:$hi)
/* 52591*/    /*Scope*/ 10, /*->52602*/
/* 52592*/      OPC_CheckPatternPredicate, 89, // (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMips16Mode())
/* 52594*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BuildPairF64_64), 0,
                    MVT::f64, 2/*#Ops*/, 0, 1, 
                // Src: (MipsBuildPairF64:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$lo, GPR32Opnd:{ *:[i32] }:$hi) - Complexity = 3
                // Dst: (BuildPairF64_64:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$lo, GPR32Opnd:{ *:[i32] }:$hi)
/* 52602*/    0, /*End of Scope*/
/* 52603*/  /*SwitchOpcode*/ 107, TARGET_VAL(ISD::SINT_TO_FP),// ->52713
/* 52606*/    OPC_RecordChild0, // #0 = $src
/* 52607*/    OPC_Scope, 37, /*->52646*/ // 4 children in Scope
/* 52609*/      OPC_CheckChild0Type, MVT::i32,
/* 52611*/      OPC_SwitchType /*2 cases */, 7, MVT::f32,// ->52621
/* 52614*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoCVT_S_W), 0,
                      MVT::f32, 1/*#Ops*/, 0, 
                  // Src: (sint_to_fp:{ *:[f32] } GPR32Opnd:{ *:[i32] }:$src) - Complexity = 3
                  // Dst: (PseudoCVT_S_W:{ *:[f32] } GPR32Opnd:{ *:[i32] }:$src)
/* 52621*/      /*SwitchType*/ 22, MVT::f64,// ->52645
/* 52623*/        OPC_Scope, 9, /*->52634*/ // 2 children in Scope
/* 52625*/          OPC_CheckPatternPredicate, 134, // (!Subtarget->isFP64bit())
/* 52627*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoCVT_D32_W), 0,
                        MVT::f64, 1/*#Ops*/, 0, 
                    // Src: (sint_to_fp:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$src) - Complexity = 3
                    // Dst: (PseudoCVT_D32_W:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$src)
/* 52634*/        /*Scope*/ 9, /*->52644*/
/* 52635*/          OPC_CheckPatternPredicate, 135, // (Subtarget->isFP64bit())
/* 52637*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoCVT_D64_W), 0,
                        MVT::f64, 1/*#Ops*/, 0, 
                    // Src: (sint_to_fp:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$src) - Complexity = 3
                    // Dst: (PseudoCVT_D64_W:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$src)
/* 52644*/        0, /*End of Scope*/
/* 52645*/      0, // EndSwitchType
/* 52646*/    /*Scope*/ 37, /*->52684*/
/* 52647*/      OPC_CheckChild0Type, MVT::i64,
/* 52649*/      OPC_SwitchType /*2 cases */, 9, MVT::f64,// ->52661
/* 52652*/        OPC_CheckPatternPredicate, 135, // (Subtarget->isFP64bit())
/* 52654*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoCVT_D64_L), 0,
                      MVT::f64, 1/*#Ops*/, 0, 
                  // Src: (sint_to_fp:{ *:[f64] } GPR64Opnd:{ *:[i64] }:$src) - Complexity = 3
                  // Dst: (PseudoCVT_D64_L:{ *:[f64] } GPR64Opnd:{ *:[i64] }:$src)
/* 52661*/      /*SwitchType*/ 20, MVT::f32,// ->52683
/* 52663*/        OPC_CheckPatternPredicate, 135, // (Subtarget->isFP64bit())
/* 52665*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCVT_S_L), 0,
                      MVT::f64, 1/*#Ops*/, 0,  // Results = #1
/* 52672*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 52675*/        OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::f32, 2/*#Ops*/, 1, 2, 
                  // Src: (sint_to_fp:{ *:[f32] } GPR64Opnd:{ *:[i64] }:$src) - Complexity = 3
                  // Dst: (EXTRACT_SUBREG:{ *:[f32] } (PseudoCVT_S_L:{ *:[f64] } GPR64Opnd:{ *:[i64] }:$src), sub_lo:{ *:[i32] })
/* 52683*/      0, // EndSwitchType
/* 52684*/    /*Scope*/ 13, /*->52698*/
/* 52685*/      OPC_CheckChild0Type, MVT::v4i32,
/* 52687*/      OPC_CheckType, MVT::v4f32,
/* 52689*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52691*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FFINT_S_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (sint_to_fp:{ *:[v4f32] } MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 3
                // Dst: (FFINT_S_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4i32] }:$ws)
/* 52698*/    /*Scope*/ 13, /*->52712*/
/* 52699*/      OPC_CheckChild0Type, MVT::v2i64,
/* 52701*/      OPC_CheckType, MVT::v2f64,
/* 52703*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52705*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FFINT_S_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (sint_to_fp:{ *:[v2f64] } MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 3
                // Dst: (FFINT_S_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2i64] }:$ws)
/* 52712*/    0, /*End of Scope*/
/* 52713*/  /*SwitchOpcode*/ 16|128,1/*144*/, TARGET_VAL(MipsISD::TruncIntFP),// ->52861
/* 52717*/    OPC_RecordChild0, // #0 = $src
/* 52718*/    OPC_Scope, 49, /*->52769*/ // 3 children in Scope
/* 52720*/      OPC_CheckChild0Type, MVT::f32,
/* 52722*/      OPC_SwitchType /*2 cases */, 32, MVT::f32,// ->52757
/* 52725*/        OPC_Scope, 9, /*->52736*/ // 3 children in Scope
/* 52727*/          OPC_CheckPatternPredicate, 72, // (Subtarget->hasStandardEncoding())
/* 52729*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::TRUNC_W_S), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (MipsTruncIntFP:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$src) - Complexity = 3
                    // Dst: (TRUNC_W_S:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$src)
/* 52736*/        /*Scope*/ 9, /*->52746*/
/* 52737*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 52739*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::TRUNC_W_S_MM), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (MipsTruncIntFP:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$src) - Complexity = 3
                    // Dst: (TRUNC_W_S_MM:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$src)
/* 52746*/        /*Scope*/ 9, /*->52756*/
/* 52747*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 52749*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::TRUNC_W_S_MMR6), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (MipsTruncIntFP:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$src) - Complexity = 3
                    // Dst: (TRUNC_W_S_MMR6:{ *:[f32] } FGR32Opnd:{ *:[f32] }:$src)
/* 52756*/        0, /*End of Scope*/
/* 52757*/      /*SwitchType*/ 9, MVT::f64,// ->52768
/* 52759*/        OPC_CheckPatternPredicate, 136, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit())
/* 52761*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::TRUNC_L_S), 0,
                      MVT::f64, 1/*#Ops*/, 0, 
                  // Src: (MipsTruncIntFP:{ *:[f64] } FGR32Opnd:{ *:[f32] }:$src) - Complexity = 3
                  // Dst: (TRUNC_L_S:{ *:[f64] } FGR32Opnd:{ *:[f32] }:$src)
/* 52768*/      0, // EndSwitchType
/* 52769*/    /*Scope*/ 69, /*->52839*/
/* 52770*/      OPC_CheckChild0Type, MVT::f64,
/* 52772*/      OPC_SwitchType /*2 cases */, 52, MVT::f32,// ->52827
/* 52775*/        OPC_Scope, 9, /*->52786*/ // 5 children in Scope
/* 52777*/          OPC_CheckPatternPredicate, 137, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52779*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::TRUNC_W_D32), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (MipsTruncIntFP:{ *:[f32] } AFGR64Opnd:{ *:[f64] }:$src) - Complexity = 3
                    // Dst: (TRUNC_W_D32:{ *:[f32] } AFGR64Opnd:{ *:[f64] }:$src)
/* 52786*/        /*Scope*/ 9, /*->52796*/
/* 52787*/          OPC_CheckPatternPredicate, 136, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit())
/* 52789*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::TRUNC_W_D64), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (MipsTruncIntFP:{ *:[f32] } FGR64Opnd:{ *:[f64] }:$src) - Complexity = 3
                    // Dst: (TRUNC_W_D64:{ *:[f32] } FGR64Opnd:{ *:[f64] }:$src)
/* 52796*/        /*Scope*/ 9, /*->52806*/
/* 52797*/          OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 52799*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::TRUNC_W_MM), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (MipsTruncIntFP:{ *:[f32] } AFGR64Opnd:{ *:[f64] }:$src) - Complexity = 3
                    // Dst: (TRUNC_W_MM:{ *:[f32] } AFGR64Opnd:{ *:[f64] }:$src)
/* 52806*/        /*Scope*/ 9, /*->52816*/
/* 52807*/          OPC_CheckPatternPredicate, 138, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 52809*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::CVT_W_D64_MM), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (MipsTruncIntFP:{ *:[f32] } FGR64Opnd:{ *:[f64] }:$src) - Complexity = 3
                    // Dst: (CVT_W_D64_MM:{ *:[f32] } FGR64Opnd:{ *:[f64] }:$src)
/* 52816*/        /*Scope*/ 9, /*->52826*/
/* 52817*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 52819*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::TRUNC_W_D_MMR6), 0,
                        MVT::f32, 1/*#Ops*/, 0, 
                    // Src: (MipsTruncIntFP:{ *:[f32] } FGR64Opnd:{ *:[f64] }:$src) - Complexity = 3
                    // Dst: (TRUNC_W_D_MMR6:{ *:[f32] } FGR64Opnd:{ *:[f64] }:$src)
/* 52826*/        0, /*End of Scope*/
/* 52827*/      /*SwitchType*/ 9, MVT::f64,// ->52838
/* 52829*/        OPC_CheckPatternPredicate, 136, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit())
/* 52831*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::TRUNC_L_D64), 0,
                      MVT::f64, 1/*#Ops*/, 0, 
                  // Src: (MipsTruncIntFP:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$src) - Complexity = 3
                  // Dst: (TRUNC_L_D64:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$src)
/* 52838*/      0, // EndSwitchType
/* 52839*/    /*Scope*/ 20, /*->52860*/
/* 52840*/      OPC_CheckChild0Type, MVT::f16,
/* 52842*/      OPC_CheckType, MVT::f32,
/* 52844*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52846*/      OPC_EmitNode1, TARGET_VAL(Mips::MSA_FP_EXTEND_D_PSEUDO), 0,
                    MVT::f64, 1/*#Ops*/, 0,  // Results = #1
/* 52853*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::TRUNC_W_D64), 0,
                    MVT::f32, 1/*#Ops*/, 1, 
                // Src: (MipsTruncIntFP:{ *:[f32] } MSA128F16:{ *:[f16] }:$ws) - Complexity = 3
                // Dst: (TRUNC_W_D64:{ *:[f32] } (MSA_FP_EXTEND_D_PSEUDO:{ *:[f64] } MSA128F16:{ *:[f16] }:$ws))
/* 52860*/    0, /*End of Scope*/
/* 52861*/  /*SwitchOpcode*/ 23, TARGET_VAL(MipsISD::MTC1_D64),// ->52887
/* 52864*/    OPC_RecordChild0, // #0 = $src
/* 52865*/    OPC_Scope, 9, /*->52876*/ // 2 children in Scope
/* 52867*/      OPC_CheckPatternPredicate, 139, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit())
/* 52869*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MTC1_D64), 0,
                    MVT::f64, 1/*#Ops*/, 0, 
                // Src: (MipsMTC1_D64:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$src) - Complexity = 3
                // Dst: (MTC1_D64:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$src)
/* 52876*/    /*Scope*/ 9, /*->52886*/
/* 52877*/      OPC_CheckPatternPredicate, 140, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit())
/* 52879*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MTC1_D64_MM), 0,
                    MVT::f64, 1/*#Ops*/, 0, 
                // Src: (MipsMTC1_D64:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$src) - Complexity = 3
                // Dst: (MTC1_D64_MM:{ *:[f64] } GPR32Opnd:{ *:[i32] }:$src)
/* 52886*/    0, /*End of Scope*/
/* 52887*/  /*SwitchOpcode*/ 75, TARGET_VAL(ISD::FP_ROUND),// ->52965
/* 52890*/    OPC_RecordChild0, // #0 = $src
/* 52891*/    OPC_SwitchType /*2 cases */, 42, MVT::f32,// ->52936
/* 52894*/      OPC_Scope, 9, /*->52905*/ // 4 children in Scope
/* 52896*/        OPC_CheckPatternPredicate, 2, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52898*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CVT_S_D32), 0,
                      MVT::f32, 1/*#Ops*/, 0, 
                  // Src: (fpround:{ *:[f32] } AFGR64Opnd:{ *:[f64] }:$src) - Complexity = 3
                  // Dst: (CVT_S_D32:{ *:[f32] } AFGR64Opnd:{ *:[f64] }:$src)
/* 52905*/      /*Scope*/ 9, /*->52915*/
/* 52906*/        OPC_CheckPatternPredicate, 1, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52908*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CVT_S_D64), 0,
                      MVT::f32, 1/*#Ops*/, 0, 
                  // Src: (fpround:{ *:[f32] } FGR64Opnd:{ *:[f64] }:$src) - Complexity = 3
                  // Dst: (CVT_S_D64:{ *:[f32] } FGR64Opnd:{ *:[f64] }:$src)
/* 52915*/      /*Scope*/ 9, /*->52925*/
/* 52916*/        OPC_CheckPatternPredicate, 140, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit())
/* 52918*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CVT_S_D64_MM), 0,
                      MVT::f32, 1/*#Ops*/, 0, 
                  // Src: (fpround:{ *:[f32] } FGR64Opnd:{ *:[f64] }:$src) - Complexity = 3
                  // Dst: (CVT_S_D64_MM:{ *:[f32] } FGR64Opnd:{ *:[f64] }:$src)
/* 52925*/      /*Scope*/ 9, /*->52935*/
/* 52926*/        OPC_CheckPatternPredicate, 3, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit())
/* 52928*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CVT_S_D32_MM), 0,
                      MVT::f32, 1/*#Ops*/, 0, 
                  // Src: (fpround:{ *:[f32] } AFGR64Opnd:{ *:[f64] }:$src) - Complexity = 3
                  // Dst: (CVT_S_D32_MM:{ *:[f32] } AFGR64Opnd:{ *:[f64] }:$src)
/* 52935*/      0, /*End of Scope*/
/* 52936*/    /*SwitchType*/ 26, MVT::f16,// ->52964
/* 52938*/      OPC_Scope, 11, /*->52951*/ // 2 children in Scope
/* 52940*/        OPC_CheckChild0Type, MVT::f32,
/* 52942*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 52944*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MSA_FP_ROUND_W_PSEUDO), 0,
                      MVT::f16, 1/*#Ops*/, 0, 
                  // Src: (fpround:{ *:[f16] } FGR32Opnd:{ *:[f32] }:$fs) - Complexity = 3
                  // Dst: (MSA_FP_ROUND_W_PSEUDO:{ *:[f16] } FGR32Opnd:{ *:[f32] }:$fs)
/* 52951*/      /*Scope*/ 11, /*->52963*/
/* 52952*/        OPC_CheckChild0Type, MVT::f64,
/* 52954*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 52956*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MSA_FP_ROUND_D_PSEUDO), 0,
                      MVT::f16, 1/*#Ops*/, 0, 
                  // Src: (fpround:{ *:[f16] } FGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                  // Dst: (MSA_FP_ROUND_D_PSEUDO:{ *:[f16] } FGR64Opnd:{ *:[f64] }:$fs)
/* 52963*/      0, /*End of Scope*/
/* 52964*/    0, // EndSwitchType
/* 52965*/  /*SwitchOpcode*/ 75, TARGET_VAL(ISD::FP_EXTEND),// ->53043
/* 52968*/    OPC_RecordChild0, // #0 = $src
/* 52969*/    OPC_SwitchType /*2 cases */, 59, MVT::f64,// ->53031
/* 52972*/      OPC_Scope, 44, /*->53018*/ // 2 children in Scope
/* 52974*/        OPC_CheckChild0Type, MVT::f32,
/* 52976*/        OPC_Scope, 9, /*->52987*/ // 4 children in Scope
/* 52978*/          OPC_CheckPatternPredicate, 2, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52980*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::CVT_D32_S), 0,
                        MVT::f64, 1/*#Ops*/, 0, 
                    // Src: (fpextend:{ *:[f64] } FGR32Opnd:{ *:[f32] }:$src) - Complexity = 3
                    // Dst: (CVT_D32_S:{ *:[f64] } FGR32Opnd:{ *:[f32] }:$src)
/* 52987*/        /*Scope*/ 9, /*->52997*/
/* 52988*/          OPC_CheckPatternPredicate, 1, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52990*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::CVT_D64_S), 0,
                        MVT::f64, 1/*#Ops*/, 0, 
                    // Src: (fpextend:{ *:[f64] } FGR32Opnd:{ *:[f32] }:$src) - Complexity = 3
                    // Dst: (CVT_D64_S:{ *:[f64] } FGR32Opnd:{ *:[f32] }:$src)
/* 52997*/        /*Scope*/ 9, /*->53007*/
/* 52998*/          OPC_CheckPatternPredicate, 140, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit())
/* 53000*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::CVT_D64_S_MM), 0,
                        MVT::f64, 1/*#Ops*/, 0, 
                    // Src: (fpextend:{ *:[f64] } FGR32Opnd:{ *:[f32] }:$src) - Complexity = 3
                    // Dst: (CVT_D64_S_MM:{ *:[f64] } FGR32Opnd:{ *:[f32] }:$src)
/* 53007*/        /*Scope*/ 9, /*->53017*/
/* 53008*/          OPC_CheckPatternPredicate, 3, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit())
/* 53010*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::CVT_D32_S_MM), 0,
                        MVT::f64, 1/*#Ops*/, 0, 
                    // Src: (fpextend:{ *:[f64] } FGR32Opnd:{ *:[f32] }:$src) - Complexity = 3
                    // Dst: (CVT_D32_S_MM:{ *:[f64] } FGR32Opnd:{ *:[f32] }:$src)
/* 53017*/        0, /*End of Scope*/
/* 53018*/      /*Scope*/ 11, /*->53030*/
/* 53019*/        OPC_CheckChild0Type, MVT::f16,
/* 53021*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 53023*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MSA_FP_EXTEND_D_PSEUDO), 0,
                      MVT::f64, 1/*#Ops*/, 0, 
                  // Src: (fpextend:{ *:[f64] } MSA128F16:{ *:[f16] }:$ws) - Complexity = 3
                  // Dst: (MSA_FP_EXTEND_D_PSEUDO:{ *:[f64] } MSA128F16:{ *:[f16] }:$ws)
/* 53030*/      0, /*End of Scope*/
/* 53031*/    /*SwitchType*/ 9, MVT::f32,// ->53042
/* 53033*/      OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 53035*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MSA_FP_EXTEND_W_PSEUDO), 0,
                    MVT::f32, 1/*#Ops*/, 0, 
                // Src: (fpextend:{ *:[f32] } MSA128F16:{ *:[f16] }:$ws) - Complexity = 3
                // Dst: (MSA_FP_EXTEND_W_PSEUDO:{ *:[f32] } MSA128F16:{ *:[f16] }:$ws)
/* 53042*/    0, // EndSwitchType
/* 53043*/  /*SwitchOpcode*/ 33, TARGET_VAL(MipsISD::FSELECT),// ->53079
/* 53046*/    OPC_RecordChild0, // #0 = $fd_in
/* 53047*/    OPC_CheckChild0Type, MVT::f64,
/* 53049*/    OPC_RecordChild1, // #1 = $ft
/* 53050*/    OPC_RecordChild2, // #2 = $fs
/* 53051*/    OPC_CheckType, MVT::f64,
/* 53053*/    OPC_Scope, 11, /*->53066*/ // 2 children in Scope
/* 53055*/      OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 53057*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SEL_D), 0,
                    MVT::f64, 3/*#Ops*/, 0, 2, 1, 
                // Src: (MipsFSelect:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fd_in, FGR64Opnd:{ *:[f64] }:$ft, FGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                // Dst: (SEL_D:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fd_in, FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 53066*/    /*Scope*/ 11, /*->53078*/
/* 53067*/      OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 53069*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SEL_D_MMR6), 0,
                    MVT::f64, 3/*#Ops*/, 0, 2, 1, 
                // Src: (MipsFSelect:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fd_in, FGR64Opnd:{ *:[f64] }:$ft, FGR64Opnd:{ *:[f64] }:$fs) - Complexity = 3
                // Dst: (SEL_D_MMR6:{ *:[f64] } FGR64Opnd:{ *:[f64] }:$fd_in, FGR64Opnd:{ *:[f64] }:$fs, FGR64Opnd:{ *:[f64] }:$ft)
/* 53078*/    0, /*End of Scope*/
/* 53079*/  /*SwitchOpcode*/ 124|128,2/*380*/, TARGET_VAL(MipsISD::VSHF),// ->53463
/* 53083*/    OPC_Scope, 88, /*->53173*/ // 4 children in Scope
/* 53085*/      OPC_MoveChild0,
/* 53086*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 53089*/      OPC_MoveChild0,
/* 53090*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 53093*/      OPC_MoveChild0,
/* 53094*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 53097*/      OPC_Scope, 36, /*->53135*/ // 2 children in Scope
/* 53099*/        OPC_RecordChild0, // #0 = $rt
/* 53100*/        OPC_CheckChild0Type, MVT::i32,
/* 53102*/        OPC_CheckChild1Same, 0,
/* 53104*/        OPC_CheckChild2Same, 0,
/* 53106*/        OPC_CheckChild3Same, 0,
/* 53108*/        OPC_MoveParent,
/* 53109*/        OPC_MoveChild1,
/* 53110*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 53113*/        OPC_MoveParent,
/* 53114*/        OPC_CheckType, MVT::v4i32,
/* 53116*/        OPC_MoveParent,
/* 53117*/        OPC_CheckType, MVT::v2i64,
/* 53119*/        OPC_MoveParent,
/* 53120*/        OPC_RecordChild1, // #1 = $ws
/* 53121*/        OPC_CheckChild2Same, 1,
/* 53123*/        OPC_CheckType, MVT::v2i64,
/* 53125*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53127*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 1, 0, 
                  // Src: (MipsVSHF:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (and:{ *:[v4i32] } (build_vector:{ *:[v4i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt), (build_vector:{ *:[v4i32] }))), MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 15
                  // Dst: (SPLAT_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, GPR32Opnd:{ *:[i32] }:$rt)
/* 53135*/      /*Scope*/ 36, /*->53172*/
/* 53136*/        OPC_MoveParent,
/* 53137*/        OPC_MoveChild1,
/* 53138*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 53141*/        OPC_RecordChild0, // #0 = $rt
/* 53142*/        OPC_CheckChild0Type, MVT::i32,
/* 53144*/        OPC_CheckChild1Same, 0,
/* 53146*/        OPC_CheckChild2Same, 0,
/* 53148*/        OPC_CheckChild3Same, 0,
/* 53150*/        OPC_MoveParent,
/* 53151*/        OPC_CheckType, MVT::v4i32,
/* 53153*/        OPC_MoveParent,
/* 53154*/        OPC_CheckType, MVT::v2i64,
/* 53156*/        OPC_MoveParent,
/* 53157*/        OPC_RecordChild1, // #1 = $ws
/* 53158*/        OPC_CheckChild2Same, 1,
/* 53160*/        OPC_CheckType, MVT::v2i64,
/* 53162*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53164*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 1, 0, 
                  // Src: (MipsVSHF:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (and:{ *:[v4i32] } (build_vector:{ *:[v4i32] }), (build_vector:{ *:[v4i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt))), MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 15
                  // Dst: (SPLAT_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, GPR32Opnd:{ *:[i32] }:$rt)
/* 53172*/      0, /*End of Scope*/
/* 53173*/    /*Scope*/ 83, /*->53257*/
/* 53174*/      OPC_RecordChild0, // #0 = $n
/* 53175*/      OPC_SwitchType /*4 cases */, 18, MVT::v16i8,// ->53196
/* 53178*/        OPC_CheckChild0Type, MVT::v16i8,
/* 53180*/        OPC_RecordChild1, // #1 = $ws
/* 53181*/        OPC_CheckChild2Same, 1,
/* 53183*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53185*/        OPC_CheckComplexPat, /*CP*/27, /*#*/0, // selectVSplatUimm4:$n #2
/* 53188*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SPLATI_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 1, 2, 
                  // Src: (MipsVSHF:{ *:[v16i8] } vsplati8_uimm4:{ *:[v16i8] }:$n, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 9
                  // Dst: (SPLATI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm4:{ *:[v16i8] }:$n)
/* 53196*/      /*SwitchType*/ 18, MVT::v8i16,// ->53216
/* 53198*/        OPC_CheckChild0Type, MVT::v8i16,
/* 53200*/        OPC_RecordChild1, // #1 = $ws
/* 53201*/        OPC_CheckChild2Same, 1,
/* 53203*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53205*/        OPC_CheckComplexPat, /*CP*/28, /*#*/0, // selectVSplatUimm3:$n #2
/* 53208*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SPLATI_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 1, 2, 
                  // Src: (MipsVSHF:{ *:[v8i16] } vsplati16_uimm3:{ *:[v8i16] }:$n, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 9
                  // Dst: (SPLATI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm3:{ *:[v8i16] }:$n)
/* 53216*/      /*SwitchType*/ 18, MVT::v4i32,// ->53236
/* 53218*/        OPC_CheckChild0Type, MVT::v4i32,
/* 53220*/        OPC_RecordChild1, // #1 = $ws
/* 53221*/        OPC_CheckChild2Same, 1,
/* 53223*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53225*/        OPC_CheckComplexPat, /*CP*/29, /*#*/0, // selectVSplatUimm2:$n #2
/* 53228*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SPLATI_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 1, 2, 
                  // Src: (MipsVSHF:{ *:[v4i32] } vsplati32_uimm2:{ *:[v4i32] }:$n, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 9
                  // Dst: (SPLATI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm2:{ *:[v4i32] }:$n)
/* 53236*/      /*SwitchType*/ 18, MVT::v2i64,// ->53256
/* 53238*/        OPC_CheckChild0Type, MVT::v2i64,
/* 53240*/        OPC_RecordChild1, // #1 = $ws
/* 53241*/        OPC_CheckChild2Same, 1,
/* 53243*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53245*/        OPC_CheckComplexPat, /*CP*/30, /*#*/0, // selectVSplatUimm1:$n #2
/* 53248*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SPLATI_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 1, 2, 
                  // Src: (MipsVSHF:{ *:[v2i64] } vsplati64_uimm1:{ *:[v2i64] }:$n, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 9
                  // Dst: (SPLATI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm1:{ *:[v2i64] }:$n)
/* 53256*/      0, // EndSwitchType
/* 53257*/    /*Scope*/ 3|128,1/*131*/, /*->53390*/
/* 53259*/      OPC_MoveChild0,
/* 53260*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 53263*/      OPC_RecordChild0, // #0 = $rt
/* 53264*/      OPC_CheckChild0Type, MVT::i32,
/* 53266*/      OPC_CheckChild1Same, 0,
/* 53268*/      OPC_CheckChild2Same, 0,
/* 53270*/      OPC_CheckChild3Same, 0,
/* 53272*/      OPC_Scope, 96, /*->53370*/ // 2 children in Scope
/* 53274*/        OPC_MoveChild4,
/* 53275*/        OPC_CheckSame, 0,
/* 53277*/        OPC_MoveParent,
/* 53278*/        OPC_MoveChild5,
/* 53279*/        OPC_CheckSame, 0,
/* 53281*/        OPC_MoveParent,
/* 53282*/        OPC_MoveChild6,
/* 53283*/        OPC_CheckSame, 0,
/* 53285*/        OPC_MoveParent,
/* 53286*/        OPC_MoveChild7,
/* 53287*/        OPC_CheckSame, 0,
/* 53289*/        OPC_MoveParent,
/* 53290*/        OPC_Scope, 58, /*->53350*/ // 2 children in Scope
/* 53292*/          OPC_MoveChild, 8,
/* 53294*/          OPC_CheckSame, 0,
/* 53296*/          OPC_MoveParent,
/* 53297*/          OPC_MoveChild, 9,
/* 53299*/          OPC_CheckSame, 0,
/* 53301*/          OPC_MoveParent,
/* 53302*/          OPC_MoveChild, 10,
/* 53304*/          OPC_CheckSame, 0,
/* 53306*/          OPC_MoveParent,
/* 53307*/          OPC_MoveChild, 11,
/* 53309*/          OPC_CheckSame, 0,
/* 53311*/          OPC_MoveParent,
/* 53312*/          OPC_MoveChild, 12,
/* 53314*/          OPC_CheckSame, 0,
/* 53316*/          OPC_MoveParent,
/* 53317*/          OPC_MoveChild, 13,
/* 53319*/          OPC_CheckSame, 0,
/* 53321*/          OPC_MoveParent,
/* 53322*/          OPC_MoveChild, 14,
/* 53324*/          OPC_CheckSame, 0,
/* 53326*/          OPC_MoveParent,
/* 53327*/          OPC_MoveChild, 15,
/* 53329*/          OPC_CheckSame, 0,
/* 53331*/          OPC_MoveParent,
/* 53332*/          OPC_CheckType, MVT::v16i8,
/* 53334*/          OPC_MoveParent,
/* 53335*/          OPC_RecordChild1, // #1 = $ws
/* 53336*/          OPC_CheckChild2Same, 1,
/* 53338*/          OPC_CheckType, MVT::v16i8,
/* 53340*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53342*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SPLAT_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsVSHF:{ *:[v16i8] } (build_vector:{ *:[v16i8] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt), MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 6
                    // Dst: (SPLAT_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, GPR32Opnd:{ *:[i32] }:$rt)
/* 53350*/        /*Scope*/ 18, /*->53369*/
/* 53351*/          OPC_CheckType, MVT::v8i16,
/* 53353*/          OPC_MoveParent,
/* 53354*/          OPC_RecordChild1, // #1 = $ws
/* 53355*/          OPC_CheckChild2Same, 1,
/* 53357*/          OPC_CheckType, MVT::v8i16,
/* 53359*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53361*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SPLAT_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 1, 0, 
                    // Src: (MipsVSHF:{ *:[v8i16] } (build_vector:{ *:[v8i16] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt), MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 6
                    // Dst: (SPLAT_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, GPR32Opnd:{ *:[i32] }:$rt)
/* 53369*/        0, /*End of Scope*/
/* 53370*/      /*Scope*/ 18, /*->53389*/
/* 53371*/        OPC_CheckType, MVT::v4i32,
/* 53373*/        OPC_MoveParent,
/* 53374*/        OPC_RecordChild1, // #1 = $ws
/* 53375*/        OPC_CheckChild2Same, 1,
/* 53377*/        OPC_CheckType, MVT::v4i32,
/* 53379*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53381*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 1, 0, 
                  // Src: (MipsVSHF:{ *:[v4i32] } (build_vector:{ *:[v4i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rt), MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 6
                  // Dst: (SPLAT_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, GPR32Opnd:{ *:[i32] }:$rt)
/* 53389*/      0, /*End of Scope*/
/* 53390*/    /*Scope*/ 71, /*->53462*/
/* 53391*/      OPC_RecordChild0, // #0 = $wd_in
/* 53392*/      OPC_SwitchType /*4 cases */, 15, MVT::v16i8,// ->53410
/* 53395*/        OPC_CheckChild0Type, MVT::v16i8,
/* 53397*/        OPC_RecordChild1, // #1 = $ws
/* 53398*/        OPC_RecordChild2, // #2 = $wt
/* 53399*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53401*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::VSHF_B), 0,
                      MVT::v16i8, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsVSHF:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                  // Dst: (VSHF_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 53410*/      /*SwitchType*/ 15, MVT::v8i16,// ->53427
/* 53412*/        OPC_CheckChild0Type, MVT::v8i16,
/* 53414*/        OPC_RecordChild1, // #1 = $ws
/* 53415*/        OPC_RecordChild2, // #2 = $wt
/* 53416*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53418*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::VSHF_H), 0,
                      MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsVSHF:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                  // Dst: (VSHF_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 53427*/      /*SwitchType*/ 15, MVT::v4i32,// ->53444
/* 53429*/        OPC_CheckChild0Type, MVT::v4i32,
/* 53431*/        OPC_RecordChild1, // #1 = $ws
/* 53432*/        OPC_RecordChild2, // #2 = $wt
/* 53433*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53435*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::VSHF_W), 0,
                      MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsVSHF:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                  // Dst: (VSHF_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 53444*/      /*SwitchType*/ 15, MVT::v2i64,// ->53461
/* 53446*/        OPC_CheckChild0Type, MVT::v2i64,
/* 53448*/        OPC_RecordChild1, // #1 = $ws
/* 53449*/        OPC_RecordChild2, // #2 = $wt
/* 53450*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53452*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::VSHF_D), 0,
                      MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                  // Src: (MipsVSHF:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                  // Dst: (VSHF_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 53461*/      0, // EndSwitchType
/* 53462*/    0, /*End of Scope*/
/* 53463*/  /*SwitchOpcode*/ 124, TARGET_VAL(MipsISD::INSVE),// ->53590
/* 53466*/    OPC_RecordChild0, // #0 = $wd_in
/* 53467*/    OPC_RecordChild1, // #1 = $n
/* 53468*/    OPC_MoveChild1,
/* 53469*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 53472*/    OPC_Scope, 28, /*->53502*/ // 4 children in Scope
/* 53474*/      OPC_CheckPredicate, 25, // Predicate_timmZExt4
/* 53476*/      OPC_MoveParent,
/* 53477*/      OPC_RecordChild2, // #2 = $ws
/* 53478*/      OPC_RecordChild3, // #3 = $n2
/* 53479*/      OPC_MoveChild3,
/* 53480*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 53483*/      OPC_CheckPredicate, 19, // Predicate_immz
/* 53485*/      OPC_MoveParent,
/* 53486*/      OPC_CheckType, MVT::v16i8,
/* 53488*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53490*/      OPC_EmitConvertToTarget, 3,
/* 53492*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::INSVE_B), 0,
                    MVT::v16i8, 4/*#Ops*/, 0, 1, 2, 4, 
                // Src: (MipsINSVE:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, (timm:{ *:[i32] })<<P:Predicate_timmZExt4>>:$n, MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immz>>:$n2) - Complexity = 11
                // Dst: (INSVE_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, (timm:{ *:[i32] }):$n, MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[i32] }):$n2)
/* 53502*/    /*Scope*/ 28, /*->53531*/
/* 53503*/      OPC_CheckPredicate, 26, // Predicate_timmZExt3
/* 53505*/      OPC_MoveParent,
/* 53506*/      OPC_RecordChild2, // #2 = $ws
/* 53507*/      OPC_RecordChild3, // #3 = $n2
/* 53508*/      OPC_MoveChild3,
/* 53509*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 53512*/      OPC_CheckPredicate, 19, // Predicate_immz
/* 53514*/      OPC_MoveParent,
/* 53515*/      OPC_CheckType, MVT::v8i16,
/* 53517*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53519*/      OPC_EmitConvertToTarget, 3,
/* 53521*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::INSVE_H), 0,
                    MVT::v8i16, 4/*#Ops*/, 0, 1, 2, 4, 
                // Src: (MipsINSVE:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, (timm:{ *:[i32] })<<P:Predicate_timmZExt3>>:$n, MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immz>>:$n2) - Complexity = 11
                // Dst: (INSVE_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, (timm:{ *:[i32] }):$n, MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[i32] }):$n2)
/* 53531*/    /*Scope*/ 28, /*->53560*/
/* 53532*/      OPC_CheckPredicate, 27, // Predicate_timmZExt2
/* 53534*/      OPC_MoveParent,
/* 53535*/      OPC_RecordChild2, // #2 = $ws
/* 53536*/      OPC_RecordChild3, // #3 = $n2
/* 53537*/      OPC_MoveChild3,
/* 53538*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 53541*/      OPC_CheckPredicate, 19, // Predicate_immz
/* 53543*/      OPC_MoveParent,
/* 53544*/      OPC_CheckType, MVT::v4i32,
/* 53546*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53548*/      OPC_EmitConvertToTarget, 3,
/* 53550*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::INSVE_W), 0,
                    MVT::v4i32, 4/*#Ops*/, 0, 1, 2, 4, 
                // Src: (MipsINSVE:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, (timm:{ *:[i32] })<<P:Predicate_timmZExt2>>:$n, MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immz>>:$n2) - Complexity = 11
                // Dst: (INSVE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, (timm:{ *:[i32] }):$n, MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[i32] }):$n2)
/* 53560*/    /*Scope*/ 28, /*->53589*/
/* 53561*/      OPC_CheckPredicate, 31, // Predicate_timmZExt1
/* 53563*/      OPC_MoveParent,
/* 53564*/      OPC_RecordChild2, // #2 = $ws
/* 53565*/      OPC_RecordChild3, // #3 = $n2
/* 53566*/      OPC_MoveChild3,
/* 53567*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 53570*/      OPC_CheckPredicate, 19, // Predicate_immz
/* 53572*/      OPC_MoveParent,
/* 53573*/      OPC_CheckType, MVT::v2i64,
/* 53575*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53577*/      OPC_EmitConvertToTarget, 3,
/* 53579*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::INSVE_D), 0,
                    MVT::v2i64, 4/*#Ops*/, 0, 1, 2, 4, 
                // Src: (MipsINSVE:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, (timm:{ *:[i32] })<<P:Predicate_timmZExt1>>:$n, MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immz>>:$n2) - Complexity = 11
                // Dst: (INSVE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, (timm:{ *:[i32] }):$n, MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[i32] }):$n2)
/* 53589*/    0, /*End of Scope*/
/* 53590*/  /*SwitchOpcode*/ 64|128,2/*320*/, TARGET_VAL(ISD::VSELECT),// ->53914
/* 53594*/    OPC_RecordChild0, // #0 = $m
/* 53595*/    OPC_Scope, 36, /*->53633*/ // 9 children in Scope
/* 53597*/      OPC_RecordChild1, // #1 = $ws
/* 53598*/      OPC_RecordChild2, // #2 = $wd_in
/* 53599*/      OPC_SwitchType /*2 cases */, 14, MVT::v16i8,// ->53616
/* 53602*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53604*/        OPC_CheckComplexPat, /*CP*/31, /*#*/0, // selectVSplatMaskL:$m #3
/* 53607*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSLI_B), 0,
                      MVT::v16i8, 3/*#Ops*/, 2, 1, 3, 
                  // Src: (vselect:{ *:[v16i8] } vsplat_maskl_bits_uimm3:{ *:[v16i8] }:$m, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wd_in) - Complexity = 9
                  // Dst: (BINSLI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, vsplat_maskl_bits_uimm3:{ *:[v16i8] }:$m)
/* 53616*/      /*SwitchType*/ 14, MVT::v8i16,// ->53632
/* 53618*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53620*/        OPC_CheckComplexPat, /*CP*/32, /*#*/0, // selectVSplatMaskL:$m #3
/* 53623*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSLI_H), 0,
                      MVT::v8i16, 3/*#Ops*/, 2, 1, 3, 
                  // Src: (vselect:{ *:[v8i16] } vsplat_maskl_bits_uimm4:{ *:[v8i16] }:$m, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wd_in) - Complexity = 9
                  // Dst: (BINSLI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, vsplat_maskl_bits_uimm4:{ *:[v8i16] }:$m)
/* 53632*/      0, // EndSwitchType
/* 53633*/    /*Scope*/ 20, /*->53654*/
/* 53634*/      OPC_CheckChild0Type, MVT::v4i32,
/* 53636*/      OPC_RecordChild1, // #1 = $ws
/* 53637*/      OPC_RecordChild2, // #2 = $wd_in
/* 53638*/      OPC_CheckType, MVT::v4i32,
/* 53640*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53642*/      OPC_CheckComplexPat, /*CP*/33, /*#*/0, // selectVSplatMaskL:$m #3
/* 53645*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSLI_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 2, 1, 3, 
                // Src: (vselect:{ *:[v4i32] } vsplat_maskl_bits_uimm5:{ *:[v4i32] }:$m, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wd_in) - Complexity = 9
                // Dst: (BINSLI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, vsplat_maskl_bits_uimm5:{ *:[v4i32] }:$m)
/* 53654*/    /*Scope*/ 20, /*->53675*/
/* 53655*/      OPC_CheckChild0Type, MVT::v2i64,
/* 53657*/      OPC_RecordChild1, // #1 = $ws
/* 53658*/      OPC_RecordChild2, // #2 = $wd_in
/* 53659*/      OPC_CheckType, MVT::v2i64,
/* 53661*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53663*/      OPC_CheckComplexPat, /*CP*/34, /*#*/0, // selectVSplatMaskL:$m #3
/* 53666*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSLI_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 2, 1, 3, 
                // Src: (vselect:{ *:[v2i64] } vsplat_maskl_bits_uimm6:{ *:[v2i64] }:$m, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wd_in) - Complexity = 9
                // Dst: (BINSLI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, vsplat_maskl_bits_uimm6:{ *:[v2i64] }:$m)
/* 53675*/    /*Scope*/ 36, /*->53712*/
/* 53676*/      OPC_RecordChild1, // #1 = $ws
/* 53677*/      OPC_RecordChild2, // #2 = $wd_in
/* 53678*/      OPC_SwitchType /*2 cases */, 14, MVT::v16i8,// ->53695
/* 53681*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53683*/        OPC_CheckComplexPat, /*CP*/35, /*#*/0, // selectVSplatMaskR:$m #3
/* 53686*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSRI_B), 0,
                      MVT::v16i8, 3/*#Ops*/, 2, 1, 3, 
                  // Src: (vselect:{ *:[v16i8] } vsplat_maskr_bits_uimm3:{ *:[v16i8] }:$m, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wd_in) - Complexity = 9
                  // Dst: (BINSRI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, vsplat_maskr_bits_uimm3:{ *:[v16i8] }:$m)
/* 53695*/      /*SwitchType*/ 14, MVT::v8i16,// ->53711
/* 53697*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53699*/        OPC_CheckComplexPat, /*CP*/36, /*#*/0, // selectVSplatMaskR:$m #3
/* 53702*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSRI_H), 0,
                      MVT::v8i16, 3/*#Ops*/, 2, 1, 3, 
                  // Src: (vselect:{ *:[v8i16] } vsplat_maskr_bits_uimm4:{ *:[v8i16] }:$m, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wd_in) - Complexity = 9
                  // Dst: (BINSRI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, vsplat_maskr_bits_uimm4:{ *:[v8i16] }:$m)
/* 53711*/      0, // EndSwitchType
/* 53712*/    /*Scope*/ 20, /*->53733*/
/* 53713*/      OPC_CheckChild0Type, MVT::v4i32,
/* 53715*/      OPC_RecordChild1, // #1 = $ws
/* 53716*/      OPC_RecordChild2, // #2 = $wd_in
/* 53717*/      OPC_CheckType, MVT::v4i32,
/* 53719*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53721*/      OPC_CheckComplexPat, /*CP*/37, /*#*/0, // selectVSplatMaskR:$m #3
/* 53724*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSRI_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 2, 1, 3, 
                // Src: (vselect:{ *:[v4i32] } vsplat_maskr_bits_uimm5:{ *:[v4i32] }:$m, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wd_in) - Complexity = 9
                // Dst: (BINSRI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, vsplat_maskr_bits_uimm5:{ *:[v4i32] }:$m)
/* 53733*/    /*Scope*/ 20, /*->53754*/
/* 53734*/      OPC_CheckChild0Type, MVT::v2i64,
/* 53736*/      OPC_RecordChild1, // #1 = $ws
/* 53737*/      OPC_RecordChild2, // #2 = $wd_in
/* 53738*/      OPC_CheckType, MVT::v2i64,
/* 53740*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53742*/      OPC_CheckComplexPat, /*CP*/38, /*#*/0, // selectVSplatMaskR:$m #3
/* 53745*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSRI_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 2, 1, 3, 
                // Src: (vselect:{ *:[v2i64] } vsplat_maskr_bits_uimm6:{ *:[v2i64] }:$m, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wd_in) - Complexity = 9
                // Dst: (BINSRI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, vsplat_maskr_bits_uimm6:{ *:[v2i64] }:$m)
/* 53754*/    /*Scope*/ 92, /*->53847*/
/* 53755*/      OPC_RecordChild1, // #1 = $ws
/* 53756*/      OPC_RecordChild2, // #2 = $wd_in
/* 53757*/      OPC_SwitchType /*2 cases */, 73, MVT::v16i8,// ->53833
/* 53760*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53762*/        OPC_Scope, 25, /*->53789*/ // 5 children in Scope
/* 53764*/          OPC_CheckComplexPat, /*CP*/14, /*#*/0, // selectVSplatUimm8:$u8 #3
/* 53767*/          OPC_Scope, 9, /*->53778*/ // 2 children in Scope
/* 53769*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::BMNZI_B), 0,
                          MVT::v16i8, 3/*#Ops*/, 2, 1, 3, 
                      // Src: (vselect:{ *:[v16i8] } vsplati8_uimm8:{ *:[v16i8] }:$u8, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wd_in) - Complexity = 9
                      // Dst: (BMNZI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm8:{ *:[v16i8] }:$u8)
/* 53778*/          /*Scope*/ 9, /*->53788*/
/* 53779*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::BMZI_B), 0,
                          MVT::v16i8, 3/*#Ops*/, 1, 2, 3, 
                      // Src: (vselect:{ *:[v16i8] } vsplati8_uimm8:{ *:[v16i8] }:$u8, MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 9
                      // Dst: (BMZI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm8:{ *:[v16i8] }:$u8)
/* 53788*/          0, /*End of Scope*/
/* 53789*/        /*Scope*/ 12, /*->53802*/
/* 53790*/          OPC_CheckComplexPat, /*CP*/14, /*#*/1, // selectVSplatUimm8:$u8 #3
/* 53793*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BSELI_B), 0,
                        MVT::v16i8, 3/*#Ops*/, 0, 2, 3, 
                    // Src: (vselect:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, vsplati8_uimm8:{ *:[v16i8] }:$u8, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 9
                    // Dst: (BSELI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm8:{ *:[v16i8] }:$u8)
/* 53802*/        /*Scope*/ 9, /*->53812*/
/* 53803*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BMNZ_V), 0,
                        MVT::v16i8, 3/*#Ops*/, 2, 1, 0, 
                    // Src: (vselect:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wt, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wd_in) - Complexity = 3
                    // Dst: (BMNZ_V:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 53812*/        /*Scope*/ 9, /*->53822*/
/* 53813*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BMZ_V), 0,
                        MVT::v16i8, 3/*#Ops*/, 1, 2, 0, 
                    // Src: (vselect:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wt, MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 3
                    // Dst: (BMZ_V:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 53822*/        /*Scope*/ 9, /*->53832*/
/* 53823*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BSEL_V), 0,
                        MVT::v16i8, 3/*#Ops*/, 0, 2, 1, 
                    // Src: (vselect:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$wt, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 3
                    // Dst: (BSEL_V:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 53832*/        0, /*End of Scope*/
/* 53833*/      /*SwitchType*/ 11, MVT::v8i16,// ->53846
/* 53835*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53837*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSEL_H_PSEUDO), 0,
                      MVT::v8i16, 3/*#Ops*/, 0, 2, 1, 
                  // Src: (vselect:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$wt, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 3
                  // Dst: (BSEL_H_PSEUDO:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 53846*/      0, // EndSwitchType
/* 53847*/    /*Scope*/ 32, /*->53880*/
/* 53848*/      OPC_CheckChild0Type, MVT::v4i32,
/* 53850*/      OPC_RecordChild1, // #1 = $wt
/* 53851*/      OPC_RecordChild2, // #2 = $ws
/* 53852*/      OPC_SwitchType /*2 cases */, 11, MVT::v4i32,// ->53866
/* 53855*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53857*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSEL_W_PSEUDO), 0,
                      MVT::v4i32, 3/*#Ops*/, 0, 2, 1, 
                  // Src: (vselect:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$wt, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 3
                  // Dst: (BSEL_W_PSEUDO:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 53866*/      /*SwitchType*/ 11, MVT::v4f32,// ->53879
/* 53868*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53870*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSEL_FW_PSEUDO), 0,
                      MVT::v4f32, 3/*#Ops*/, 0, 2, 1, 
                  // Src: (vselect:{ *:[v4f32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4f32] }:$wt, MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 3
                  // Dst: (BSEL_FW_PSEUDO:{ *:[v4f32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 53879*/      0, // EndSwitchType
/* 53880*/    /*Scope*/ 32, /*->53913*/
/* 53881*/      OPC_CheckChild0Type, MVT::v2i64,
/* 53883*/      OPC_RecordChild1, // #1 = $wt
/* 53884*/      OPC_RecordChild2, // #2 = $ws
/* 53885*/      OPC_SwitchType /*2 cases */, 11, MVT::v2i64,// ->53899
/* 53888*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53890*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSEL_D_PSEUDO), 0,
                      MVT::v2i64, 3/*#Ops*/, 0, 2, 1, 
                  // Src: (vselect:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$wt, MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 3
                  // Dst: (BSEL_D_PSEUDO:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 53899*/      /*SwitchType*/ 11, MVT::v2f64,// ->53912
/* 53901*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53903*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BSEL_FD_PSEUDO), 0,
                      MVT::v2f64, 3/*#Ops*/, 0, 2, 1, 
                  // Src: (vselect:{ *:[v2f64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2f64] }:$wt, MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 3
                  // Dst: (BSEL_FD_PSEUDO:{ *:[v2f64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 53912*/      0, // EndSwitchType
/* 53913*/    0, /*End of Scope*/
/* 53914*/  /*SwitchOpcode*/ 32|128,1/*160*/, TARGET_VAL(ISD::SMAX),// ->54078
/* 53918*/    OPC_RecordChild0, // #0 = $ws
/* 53919*/    OPC_RecordChild1, // #1 = $imm
/* 53920*/    OPC_SwitchType /*4 cases */, 37, MVT::v16i8,// ->53960
/* 53923*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53925*/      OPC_Scope, 11, /*->53938*/ // 3 children in Scope
/* 53927*/        OPC_CheckComplexPat, /*CP*/20, /*#*/1, // selectVSplatSimm5:$imm #2
/* 53930*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_S_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 2, 
                  // Src: (smax:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_simm5:{ *:[v16i8] }:$imm) - Complexity = 9
                  // Dst: (MAXI_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_simm5:{ *:[v16i8] }:$imm)
/* 53938*/      /*Scope*/ 11, /*->53950*/
/* 53939*/        OPC_CheckComplexPat, /*CP*/20, /*#*/0, // selectVSplatSimm5:$imm #2
/* 53942*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_S_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 1, 2, 
                  // Src: (smax:{ *:[v16i8] } vsplati8_simm5:{ *:[v16i8] }:$imm, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 9
                  // Dst: (MAXI_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_simm5:{ *:[v16i8] }:$imm)
/* 53950*/      /*Scope*/ 8, /*->53959*/
/* 53951*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_S_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (smax:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                  // Dst: (MAX_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 53959*/      0, /*End of Scope*/
/* 53960*/    /*SwitchType*/ 37, MVT::v8i16,// ->53999
/* 53962*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53964*/      OPC_Scope, 11, /*->53977*/ // 3 children in Scope
/* 53966*/        OPC_CheckComplexPat, /*CP*/21, /*#*/1, // selectVSplatSimm5:$imm #2
/* 53969*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_S_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 2, 
                  // Src: (smax:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_simm5:{ *:[v8i16] }:$imm) - Complexity = 9
                  // Dst: (MAXI_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_simm5:{ *:[v8i16] }:$imm)
/* 53977*/      /*Scope*/ 11, /*->53989*/
/* 53978*/        OPC_CheckComplexPat, /*CP*/21, /*#*/0, // selectVSplatSimm5:$imm #2
/* 53981*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_S_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 1, 2, 
                  // Src: (smax:{ *:[v8i16] } vsplati16_simm5:{ *:[v8i16] }:$imm, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 9
                  // Dst: (MAXI_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_simm5:{ *:[v8i16] }:$imm)
/* 53989*/      /*Scope*/ 8, /*->53998*/
/* 53990*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_S_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (smax:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                  // Dst: (MAX_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 53998*/      0, /*End of Scope*/
/* 53999*/    /*SwitchType*/ 37, MVT::v4i32,// ->54038
/* 54001*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54003*/      OPC_Scope, 11, /*->54016*/ // 3 children in Scope
/* 54005*/        OPC_CheckComplexPat, /*CP*/22, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54008*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_S_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 2, 
                  // Src: (smax:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_simm5:{ *:[v4i32] }:$imm) - Complexity = 9
                  // Dst: (MAXI_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_simm5:{ *:[v4i32] }:$imm)
/* 54016*/      /*Scope*/ 11, /*->54028*/
/* 54017*/        OPC_CheckComplexPat, /*CP*/22, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54020*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_S_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 1, 2, 
                  // Src: (smax:{ *:[v4i32] } vsplati32_simm5:{ *:[v4i32] }:$imm, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 9
                  // Dst: (MAXI_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_simm5:{ *:[v4i32] }:$imm)
/* 54028*/      /*Scope*/ 8, /*->54037*/
/* 54029*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_S_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (smax:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                  // Dst: (MAX_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 54037*/      0, /*End of Scope*/
/* 54038*/    /*SwitchType*/ 37, MVT::v2i64,// ->54077
/* 54040*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54042*/      OPC_Scope, 11, /*->54055*/ // 3 children in Scope
/* 54044*/        OPC_CheckComplexPat, /*CP*/23, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54047*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_S_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 2, 
                  // Src: (smax:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_simm5:{ *:[v2i64] }:$imm) - Complexity = 9
                  // Dst: (MAXI_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_simm5:{ *:[v2i64] }:$imm)
/* 54055*/      /*Scope*/ 11, /*->54067*/
/* 54056*/        OPC_CheckComplexPat, /*CP*/23, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54059*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_S_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 1, 2, 
                  // Src: (smax:{ *:[v2i64] } vsplati64_simm5:{ *:[v2i64] }:$imm, MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 9
                  // Dst: (MAXI_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_simm5:{ *:[v2i64] }:$imm)
/* 54067*/      /*Scope*/ 8, /*->54076*/
/* 54068*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_S_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (smax:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                  // Dst: (MAX_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 54076*/      0, /*End of Scope*/
/* 54077*/    0, // EndSwitchType
/* 54078*/  /*SwitchOpcode*/ 32|128,1/*160*/, TARGET_VAL(ISD::UMAX),// ->54242
/* 54082*/    OPC_RecordChild0, // #0 = $ws
/* 54083*/    OPC_RecordChild1, // #1 = $imm
/* 54084*/    OPC_SwitchType /*4 cases */, 37, MVT::v16i8,// ->54124
/* 54087*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54089*/      OPC_Scope, 11, /*->54102*/ // 3 children in Scope
/* 54091*/        OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54094*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_U_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 2, 
                  // Src: (umax:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm5:{ *:[v16i8] }:$imm) - Complexity = 9
                  // Dst: (MAXI_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm5:{ *:[v16i8] }:$imm)
/* 54102*/      /*Scope*/ 11, /*->54114*/
/* 54103*/        OPC_CheckComplexPat, /*CP*/16, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54106*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_U_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 1, 2, 
                  // Src: (umax:{ *:[v16i8] } vsplati8_uimm5:{ *:[v16i8] }:$imm, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 9
                  // Dst: (MAXI_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm5:{ *:[v16i8] }:$imm)
/* 54114*/      /*Scope*/ 8, /*->54123*/
/* 54115*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_U_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (umax:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                  // Dst: (MAX_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 54123*/      0, /*End of Scope*/
/* 54124*/    /*SwitchType*/ 37, MVT::v8i16,// ->54163
/* 54126*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54128*/      OPC_Scope, 11, /*->54141*/ // 3 children in Scope
/* 54130*/        OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54133*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_U_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 2, 
                  // Src: (umax:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm5:{ *:[v8i16] }:$imm) - Complexity = 9
                  // Dst: (MAXI_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm5:{ *:[v8i16] }:$imm)
/* 54141*/      /*Scope*/ 11, /*->54153*/
/* 54142*/        OPC_CheckComplexPat, /*CP*/17, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54145*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_U_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 1, 2, 
                  // Src: (umax:{ *:[v8i16] } vsplati16_uimm5:{ *:[v8i16] }:$imm, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 9
                  // Dst: (MAXI_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm5:{ *:[v8i16] }:$imm)
/* 54153*/      /*Scope*/ 8, /*->54162*/
/* 54154*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_U_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (umax:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                  // Dst: (MAX_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 54162*/      0, /*End of Scope*/
/* 54163*/    /*SwitchType*/ 37, MVT::v4i32,// ->54202
/* 54165*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54167*/      OPC_Scope, 11, /*->54180*/ // 3 children in Scope
/* 54169*/        OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54172*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_U_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 2, 
                  // Src: (umax:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$imm) - Complexity = 9
                  // Dst: (MAXI_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$imm)
/* 54180*/      /*Scope*/ 11, /*->54192*/
/* 54181*/        OPC_CheckComplexPat, /*CP*/18, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54184*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_U_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 1, 2, 
                  // Src: (umax:{ *:[v4i32] } vsplati32_uimm5:{ *:[v4i32] }:$imm, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 9
                  // Dst: (MAXI_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$imm)
/* 54192*/      /*Scope*/ 8, /*->54201*/
/* 54193*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_U_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (umax:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                  // Dst: (MAX_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 54201*/      0, /*End of Scope*/
/* 54202*/    /*SwitchType*/ 37, MVT::v2i64,// ->54241
/* 54204*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54206*/      OPC_Scope, 11, /*->54219*/ // 3 children in Scope
/* 54208*/        OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54211*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_U_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 2, 
                  // Src: (umax:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm5:{ *:[v2i64] }:$imm) - Complexity = 9
                  // Dst: (MAXI_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm5:{ *:[v2i64] }:$imm)
/* 54219*/      /*Scope*/ 11, /*->54231*/
/* 54220*/        OPC_CheckComplexPat, /*CP*/19, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54223*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAXI_U_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 1, 2, 
                  // Src: (umax:{ *:[v2i64] } vsplati64_uimm5:{ *:[v2i64] }:$imm, MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 9
                  // Dst: (MAXI_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm5:{ *:[v2i64] }:$imm)
/* 54231*/      /*Scope*/ 8, /*->54240*/
/* 54232*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_U_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (umax:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                  // Dst: (MAX_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 54240*/      0, /*End of Scope*/
/* 54241*/    0, // EndSwitchType
/* 54242*/  /*SwitchOpcode*/ 32|128,1/*160*/, TARGET_VAL(ISD::SMIN),// ->54406
/* 54246*/    OPC_RecordChild0, // #0 = $ws
/* 54247*/    OPC_RecordChild1, // #1 = $imm
/* 54248*/    OPC_SwitchType /*4 cases */, 37, MVT::v16i8,// ->54288
/* 54251*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54253*/      OPC_Scope, 11, /*->54266*/ // 3 children in Scope
/* 54255*/        OPC_CheckComplexPat, /*CP*/20, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54258*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_S_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 2, 
                  // Src: (smin:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_simm5:{ *:[v16i8] }:$imm) - Complexity = 9
                  // Dst: (MINI_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_simm5:{ *:[v16i8] }:$imm)
/* 54266*/      /*Scope*/ 11, /*->54278*/
/* 54267*/        OPC_CheckComplexPat, /*CP*/20, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54270*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_S_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 1, 2, 
                  // Src: (smin:{ *:[v16i8] } vsplati8_simm5:{ *:[v16i8] }:$imm, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 9
                  // Dst: (MINI_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_simm5:{ *:[v16i8] }:$imm)
/* 54278*/      /*Scope*/ 8, /*->54287*/
/* 54279*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_S_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (smin:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                  // Dst: (MIN_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 54287*/      0, /*End of Scope*/
/* 54288*/    /*SwitchType*/ 37, MVT::v8i16,// ->54327
/* 54290*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54292*/      OPC_Scope, 11, /*->54305*/ // 3 children in Scope
/* 54294*/        OPC_CheckComplexPat, /*CP*/21, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54297*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_S_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 2, 
                  // Src: (smin:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_simm5:{ *:[v8i16] }:$imm) - Complexity = 9
                  // Dst: (MINI_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_simm5:{ *:[v8i16] }:$imm)
/* 54305*/      /*Scope*/ 11, /*->54317*/
/* 54306*/        OPC_CheckComplexPat, /*CP*/21, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54309*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_S_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 1, 2, 
                  // Src: (smin:{ *:[v8i16] } vsplati16_simm5:{ *:[v8i16] }:$imm, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 9
                  // Dst: (MINI_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_simm5:{ *:[v8i16] }:$imm)
/* 54317*/      /*Scope*/ 8, /*->54326*/
/* 54318*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_S_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (smin:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                  // Dst: (MIN_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 54326*/      0, /*End of Scope*/
/* 54327*/    /*SwitchType*/ 37, MVT::v4i32,// ->54366
/* 54329*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54331*/      OPC_Scope, 11, /*->54344*/ // 3 children in Scope
/* 54333*/        OPC_CheckComplexPat, /*CP*/22, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54336*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_S_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 2, 
                  // Src: (smin:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_simm5:{ *:[v4i32] }:$imm) - Complexity = 9
                  // Dst: (MINI_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_simm5:{ *:[v4i32] }:$imm)
/* 54344*/      /*Scope*/ 11, /*->54356*/
/* 54345*/        OPC_CheckComplexPat, /*CP*/22, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54348*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_S_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 1, 2, 
                  // Src: (smin:{ *:[v4i32] } vsplati32_simm5:{ *:[v4i32] }:$imm, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 9
                  // Dst: (MINI_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_simm5:{ *:[v4i32] }:$imm)
/* 54356*/      /*Scope*/ 8, /*->54365*/
/* 54357*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_S_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (smin:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                  // Dst: (MIN_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 54365*/      0, /*End of Scope*/
/* 54366*/    /*SwitchType*/ 37, MVT::v2i64,// ->54405
/* 54368*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54370*/      OPC_Scope, 11, /*->54383*/ // 3 children in Scope
/* 54372*/        OPC_CheckComplexPat, /*CP*/23, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54375*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_S_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 2, 
                  // Src: (smin:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_simm5:{ *:[v2i64] }:$imm) - Complexity = 9
                  // Dst: (MINI_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_simm5:{ *:[v2i64] }:$imm)
/* 54383*/      /*Scope*/ 11, /*->54395*/
/* 54384*/        OPC_CheckComplexPat, /*CP*/23, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54387*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_S_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 1, 2, 
                  // Src: (smin:{ *:[v2i64] } vsplati64_simm5:{ *:[v2i64] }:$imm, MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 9
                  // Dst: (MINI_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_simm5:{ *:[v2i64] }:$imm)
/* 54395*/      /*Scope*/ 8, /*->54404*/
/* 54396*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_S_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (smin:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                  // Dst: (MIN_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 54404*/      0, /*End of Scope*/
/* 54405*/    0, // EndSwitchType
/* 54406*/  /*SwitchOpcode*/ 32|128,1/*160*/, TARGET_VAL(ISD::UMIN),// ->54570
/* 54410*/    OPC_RecordChild0, // #0 = $ws
/* 54411*/    OPC_RecordChild1, // #1 = $imm
/* 54412*/    OPC_SwitchType /*4 cases */, 37, MVT::v16i8,// ->54452
/* 54415*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54417*/      OPC_Scope, 11, /*->54430*/ // 3 children in Scope
/* 54419*/        OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54422*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_U_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 2, 
                  // Src: (umin:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm5:{ *:[v16i8] }:$imm) - Complexity = 9
                  // Dst: (MINI_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm5:{ *:[v16i8] }:$imm)
/* 54430*/      /*Scope*/ 11, /*->54442*/
/* 54431*/        OPC_CheckComplexPat, /*CP*/16, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54434*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_U_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 1, 2, 
                  // Src: (umin:{ *:[v16i8] } vsplati8_uimm5:{ *:[v16i8] }:$imm, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 9
                  // Dst: (MINI_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm5:{ *:[v16i8] }:$imm)
/* 54442*/      /*Scope*/ 8, /*->54451*/
/* 54443*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_U_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (umin:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                  // Dst: (MIN_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 54451*/      0, /*End of Scope*/
/* 54452*/    /*SwitchType*/ 37, MVT::v8i16,// ->54491
/* 54454*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54456*/      OPC_Scope, 11, /*->54469*/ // 3 children in Scope
/* 54458*/        OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54461*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_U_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 2, 
                  // Src: (umin:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm5:{ *:[v8i16] }:$imm) - Complexity = 9
                  // Dst: (MINI_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm5:{ *:[v8i16] }:$imm)
/* 54469*/      /*Scope*/ 11, /*->54481*/
/* 54470*/        OPC_CheckComplexPat, /*CP*/17, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54473*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_U_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 1, 2, 
                  // Src: (umin:{ *:[v8i16] } vsplati16_uimm5:{ *:[v8i16] }:$imm, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 9
                  // Dst: (MINI_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, vsplati16_uimm5:{ *:[v8i16] }:$imm)
/* 54481*/      /*Scope*/ 8, /*->54490*/
/* 54482*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_U_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1, 
                  // Src: (umin:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                  // Dst: (MIN_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 54490*/      0, /*End of Scope*/
/* 54491*/    /*SwitchType*/ 37, MVT::v4i32,// ->54530
/* 54493*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54495*/      OPC_Scope, 11, /*->54508*/ // 3 children in Scope
/* 54497*/        OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54500*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_U_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 2, 
                  // Src: (umin:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$imm) - Complexity = 9
                  // Dst: (MINI_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$imm)
/* 54508*/      /*Scope*/ 11, /*->54520*/
/* 54509*/        OPC_CheckComplexPat, /*CP*/18, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54512*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_U_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 1, 2, 
                  // Src: (umin:{ *:[v4i32] } vsplati32_uimm5:{ *:[v4i32] }:$imm, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 9
                  // Dst: (MINI_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, vsplati32_uimm5:{ *:[v4i32] }:$imm)
/* 54520*/      /*Scope*/ 8, /*->54529*/
/* 54521*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_U_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1, 
                  // Src: (umin:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                  // Dst: (MIN_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 54529*/      0, /*End of Scope*/
/* 54530*/    /*SwitchType*/ 37, MVT::v2i64,// ->54569
/* 54532*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54534*/      OPC_Scope, 11, /*->54547*/ // 3 children in Scope
/* 54536*/        OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54539*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_U_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 2, 
                  // Src: (umin:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm5:{ *:[v2i64] }:$imm) - Complexity = 9
                  // Dst: (MINI_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm5:{ *:[v2i64] }:$imm)
/* 54547*/      /*Scope*/ 11, /*->54559*/
/* 54548*/        OPC_CheckComplexPat, /*CP*/19, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54551*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MINI_U_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 1, 2, 
                  // Src: (umin:{ *:[v2i64] } vsplati64_uimm5:{ *:[v2i64] }:$imm, MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 9
                  // Dst: (MINI_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, vsplati64_uimm5:{ *:[v2i64] }:$imm)
/* 54559*/      /*Scope*/ 8, /*->54568*/
/* 54560*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_U_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (umin:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                  // Dst: (MIN_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 54568*/      0, /*End of Scope*/
/* 54569*/    0, // EndSwitchType
/* 54570*/  /*SwitchOpcode*/ 79, TARGET_VAL(MipsISD::VNOR),// ->54652
/* 54573*/    OPC_RecordChild0, // #0 = $ws
/* 54574*/    OPC_RecordChild1, // #1 = $u8
/* 54575*/    OPC_SwitchType /*4 cases */, 37, MVT::v16i8,// ->54615
/* 54578*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54580*/      OPC_Scope, 11, /*->54593*/ // 3 children in Scope
/* 54582*/        OPC_CheckComplexPat, /*CP*/14, /*#*/1, // selectVSplatUimm8:$u8 #2
/* 54585*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NORI_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 2, 
                  // Src: (MipsVNOR:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm8:{ *:[v16i8] }:$u8) - Complexity = 9
                  // Dst: (NORI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm8:{ *:[v16i8] }:$u8)
/* 54593*/      /*Scope*/ 11, /*->54605*/
/* 54594*/        OPC_CheckComplexPat, /*CP*/14, /*#*/0, // selectVSplatUimm8:$u8 #2
/* 54597*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NORI_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 1, 2, 
                  // Src: (MipsVNOR:{ *:[v16i8] } vsplati8_uimm8:{ *:[v16i8] }:$u8, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 9
                  // Dst: (NORI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, vsplati8_uimm8:{ *:[v16i8] }:$u8)
/* 54605*/      /*Scope*/ 8, /*->54614*/
/* 54606*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_V), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (MipsVNOR:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                  // Dst: (NOR_V:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 54614*/      0, /*End of Scope*/
/* 54615*/    /*SwitchType*/ 10, MVT::v8i16,// ->54627
/* 54617*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54619*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_V_H_PSEUDO), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (MipsVNOR:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                // Dst: (NOR_V_H_PSEUDO:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 54627*/    /*SwitchType*/ 10, MVT::v4i32,// ->54639
/* 54629*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54631*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_V_W_PSEUDO), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (MipsVNOR:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                // Dst: (NOR_V_W_PSEUDO:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 54639*/    /*SwitchType*/ 10, MVT::v2i64,// ->54651
/* 54641*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54643*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::NOR_V_D_PSEUDO), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (MipsVNOR:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                // Dst: (NOR_V_D_PSEUDO:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 54651*/    0, // EndSwitchType
/* 54652*/  /*SwitchOpcode*/ 90|128,2/*346*/, TARGET_VAL(ISD::INSERT_VECTOR_ELT),// ->55002
/* 54656*/    OPC_RecordChild0, // #0 = $wd_in
/* 54657*/    OPC_RecordChild1, // #1 = $rs
/* 54658*/    OPC_Scope, 29|128,1/*157*/, /*->54818*/ // 4 children in Scope
/* 54661*/      OPC_CheckChild1Type, MVT::i32,
/* 54663*/      OPC_RecordChild2, // #2 = $n
/* 54664*/      OPC_Scope, 63, /*->54729*/ // 3 children in Scope
/* 54666*/        OPC_MoveChild2,
/* 54667*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 54670*/        OPC_Scope, 18, /*->54690*/ // 3 children in Scope
/* 54672*/          OPC_CheckPredicate, 25, // Predicate_immZExt4Ptr
/* 54674*/          OPC_MoveParent,
/* 54675*/          OPC_CheckType, MVT::v16i8,
/* 54677*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54679*/          OPC_EmitConvertToTarget, 2,
/* 54681*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_B), 0,
                        MVT::v16i8, 3/*#Ops*/, 0, 1, 3, 
                    // Src: (vector_insert:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[iPTR] })<<P:Predicate_immZExt4Ptr>>:$n) - Complexity = 7
                    // Dst: (INSERT_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$n)
/* 54690*/        /*Scope*/ 18, /*->54709*/
/* 54691*/          OPC_CheckPredicate, 26, // Predicate_immZExt3Ptr
/* 54693*/          OPC_MoveParent,
/* 54694*/          OPC_CheckType, MVT::v8i16,
/* 54696*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54698*/          OPC_EmitConvertToTarget, 2,
/* 54700*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_H), 0,
                        MVT::v8i16, 3/*#Ops*/, 0, 1, 3, 
                    // Src: (vector_insert:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[iPTR] })<<P:Predicate_immZExt3Ptr>>:$n) - Complexity = 7
                    // Dst: (INSERT_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$n)
/* 54709*/        /*Scope*/ 18, /*->54728*/
/* 54710*/          OPC_CheckPredicate, 27, // Predicate_immZExt2Ptr
/* 54712*/          OPC_MoveParent,
/* 54713*/          OPC_CheckType, MVT::v4i32,
/* 54715*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54717*/          OPC_EmitConvertToTarget, 2,
/* 54719*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_W), 0,
                        MVT::v4i32, 3/*#Ops*/, 0, 1, 3, 
                    // Src: (vector_insert:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[iPTR] })<<P:Predicate_immZExt2Ptr>>:$n) - Complexity = 7
                    // Dst: (INSERT_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$n)
/* 54728*/        0, /*End of Scope*/
/* 54729*/      /*Scope*/ 43, /*->54773*/
/* 54730*/        OPC_CheckChild2Type, MVT::i32,
/* 54732*/        OPC_SwitchType /*3 cases */, 11, MVT::v16i8,// ->54746
/* 54735*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54737*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_B_VIDX_PSEUDO), 0,
                        MVT::v16i8, 3/*#Ops*/, 0, 2, 1, 
                    // Src: (vector_insert:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, GPR32Opnd:{ *:[i32] }:$fs, GPR32Opnd:{ *:[i32] }:$n) - Complexity = 3
                    // Dst: (INSERT_B_VIDX_PSEUDO:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, GPR32Opnd:{ *:[i32] }:$n, GPR32Opnd:{ *:[i32] }:$fs)
/* 54746*/        /*SwitchType*/ 11, MVT::v8i16,// ->54759
/* 54748*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54750*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_H_VIDX_PSEUDO), 0,
                        MVT::v8i16, 3/*#Ops*/, 0, 2, 1, 
                    // Src: (vector_insert:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, GPR32Opnd:{ *:[i32] }:$fs, GPR32Opnd:{ *:[i32] }:$n) - Complexity = 3
                    // Dst: (INSERT_H_VIDX_PSEUDO:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, GPR32Opnd:{ *:[i32] }:$n, GPR32Opnd:{ *:[i32] }:$fs)
/* 54759*/        /*SwitchType*/ 11, MVT::v4i32,// ->54772
/* 54761*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54763*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_W_VIDX_PSEUDO), 0,
                        MVT::v4i32, 3/*#Ops*/, 0, 2, 1, 
                    // Src: (vector_insert:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, GPR32Opnd:{ *:[i32] }:$fs, GPR32Opnd:{ *:[i32] }:$n) - Complexity = 3
                    // Dst: (INSERT_W_VIDX_PSEUDO:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, GPR32Opnd:{ *:[i32] }:$n, GPR32Opnd:{ *:[i32] }:$fs)
/* 54772*/        0, // EndSwitchType
/* 54773*/      /*Scope*/ 43, /*->54817*/
/* 54774*/        OPC_CheckChild2Type, MVT::i64,
/* 54776*/        OPC_SwitchType /*3 cases */, 11, MVT::v16i8,// ->54790
/* 54779*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54781*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_B_VIDX64_PSEUDO), 0,
                        MVT::v16i8, 3/*#Ops*/, 0, 2, 1, 
                    // Src: (vector_insert:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, GPR32Opnd:{ *:[i32] }:$fs, GPR64Opnd:{ *:[i64] }:$n) - Complexity = 3
                    // Dst: (INSERT_B_VIDX64_PSEUDO:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, GPR64Opnd:{ *:[i64] }:$n, GPR32Opnd:{ *:[i32] }:$fs)
/* 54790*/        /*SwitchType*/ 11, MVT::v8i16,// ->54803
/* 54792*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54794*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_H_VIDX64_PSEUDO), 0,
                        MVT::v8i16, 3/*#Ops*/, 0, 2, 1, 
                    // Src: (vector_insert:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, GPR32Opnd:{ *:[i32] }:$fs, GPR64Opnd:{ *:[i64] }:$n) - Complexity = 3
                    // Dst: (INSERT_H_VIDX64_PSEUDO:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, GPR64Opnd:{ *:[i64] }:$n, GPR32Opnd:{ *:[i32] }:$fs)
/* 54803*/        /*SwitchType*/ 11, MVT::v4i32,// ->54816
/* 54805*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54807*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_W_VIDX64_PSEUDO), 0,
                        MVT::v4i32, 3/*#Ops*/, 0, 2, 1, 
                    // Src: (vector_insert:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, GPR32Opnd:{ *:[i32] }:$fs, GPR64Opnd:{ *:[i64] }:$n) - Complexity = 3
                    // Dst: (INSERT_W_VIDX64_PSEUDO:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, GPR64Opnd:{ *:[i64] }:$n, GPR32Opnd:{ *:[i32] }:$fs)
/* 54816*/        0, // EndSwitchType
/* 54817*/      0, /*End of Scope*/
/* 54818*/    /*Scope*/ 60, /*->54879*/
/* 54819*/      OPC_CheckChild1Type, MVT::i64,
/* 54821*/      OPC_RecordChild2, // #2 = $n
/* 54822*/      OPC_Scope, 22, /*->54846*/ // 3 children in Scope
/* 54824*/        OPC_MoveChild2,
/* 54825*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 54828*/        OPC_CheckPredicate, 31, // Predicate_immZExt1Ptr
/* 54830*/        OPC_MoveParent,
/* 54831*/        OPC_CheckType, MVT::v2i64,
/* 54833*/        OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 54835*/        OPC_EmitConvertToTarget, 2,
/* 54837*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_D), 0,
                      MVT::v2i64, 3/*#Ops*/, 0, 1, 3, 
                  // Src: (vector_insert:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[iPTR] })<<P:Predicate_immZExt1Ptr>>:$n) - Complexity = 7
                  // Dst: (INSERT_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, GPR64Opnd:{ *:[i64] }:$rs, (imm:{ *:[i32] }):$n)
/* 54846*/      /*Scope*/ 15, /*->54862*/
/* 54847*/        OPC_CheckChild2Type, MVT::i32,
/* 54849*/        OPC_CheckType, MVT::v2i64,
/* 54851*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54853*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_D_VIDX_PSEUDO), 0,
                      MVT::v2i64, 3/*#Ops*/, 0, 2, 1, 
                  // Src: (vector_insert:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, GPR64Opnd:{ *:[i64] }:$fs, GPR32Opnd:{ *:[i32] }:$n) - Complexity = 3
                  // Dst: (INSERT_D_VIDX_PSEUDO:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, GPR32Opnd:{ *:[i32] }:$n, GPR64Opnd:{ *:[i64] }:$fs)
/* 54862*/      /*Scope*/ 15, /*->54878*/
/* 54863*/        OPC_CheckChild2Type, MVT::i64,
/* 54865*/        OPC_CheckType, MVT::v2i64,
/* 54867*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54869*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_D_VIDX64_PSEUDO), 0,
                      MVT::v2i64, 3/*#Ops*/, 0, 2, 1, 
                  // Src: (vector_insert:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, GPR64Opnd:{ *:[i64] }:$fs, GPR64Opnd:{ *:[i64] }:$n) - Complexity = 3
                  // Dst: (INSERT_D_VIDX64_PSEUDO:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, GPR64Opnd:{ *:[i64] }:$n, GPR64Opnd:{ *:[i64] }:$fs)
/* 54878*/      0, /*End of Scope*/
/* 54879*/    /*Scope*/ 60, /*->54940*/
/* 54880*/      OPC_CheckChild1Type, MVT::f32,
/* 54882*/      OPC_RecordChild2, // #2 = $n
/* 54883*/      OPC_Scope, 22, /*->54907*/ // 3 children in Scope
/* 54885*/        OPC_MoveChild2,
/* 54886*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 54889*/        OPC_CheckPredicate, 27, // Predicate_immZExt2Ptr
/* 54891*/        OPC_MoveParent,
/* 54892*/        OPC_CheckType, MVT::v4f32,
/* 54894*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54896*/        OPC_EmitConvertToTarget, 2,
/* 54898*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_FW_PSEUDO), 0,
                      MVT::v4f32, 3/*#Ops*/, 0, 3, 1, 
                  // Src: (vector_insert:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wd_in, FGR32Opnd:{ *:[f32] }:$fs, (imm:{ *:[iPTR] })<<P:Predicate_immZExt2Ptr>>:$n) - Complexity = 7
                  // Dst: (INSERT_FW_PSEUDO:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wd_in, (imm:{ *:[i32] }):$n, FGR32Opnd:{ *:[f32] }:$fs)
/* 54907*/      /*Scope*/ 15, /*->54923*/
/* 54908*/        OPC_CheckChild2Type, MVT::i32,
/* 54910*/        OPC_CheckType, MVT::v4f32,
/* 54912*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54914*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_FW_VIDX_PSEUDO), 0,
                      MVT::v4f32, 3/*#Ops*/, 0, 2, 1, 
                  // Src: (vector_insert:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wd_in, FGR32Opnd:{ *:[f32] }:$fs, GPR32Opnd:{ *:[i32] }:$n) - Complexity = 3
                  // Dst: (INSERT_FW_VIDX_PSEUDO:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wd_in, GPR32Opnd:{ *:[i32] }:$n, FGR32Opnd:{ *:[f32] }:$fs)
/* 54923*/      /*Scope*/ 15, /*->54939*/
/* 54924*/        OPC_CheckChild2Type, MVT::i64,
/* 54926*/        OPC_CheckType, MVT::v4f32,
/* 54928*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54930*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_FW_VIDX64_PSEUDO), 0,
                      MVT::v4f32, 3/*#Ops*/, 0, 2, 1, 
                  // Src: (vector_insert:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wd_in, FGR32Opnd:{ *:[f32] }:$fs, GPR64Opnd:{ *:[i64] }:$n) - Complexity = 3
                  // Dst: (INSERT_FW_VIDX64_PSEUDO:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wd_in, GPR64Opnd:{ *:[i64] }:$n, FGR32Opnd:{ *:[f32] }:$fs)
/* 54939*/      0, /*End of Scope*/
/* 54940*/    /*Scope*/ 60, /*->55001*/
/* 54941*/      OPC_CheckChild1Type, MVT::f64,
/* 54943*/      OPC_RecordChild2, // #2 = $n
/* 54944*/      OPC_Scope, 22, /*->54968*/ // 3 children in Scope
/* 54946*/        OPC_MoveChild2,
/* 54947*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 54950*/        OPC_CheckPredicate, 31, // Predicate_immZExt1Ptr
/* 54952*/        OPC_MoveParent,
/* 54953*/        OPC_CheckType, MVT::v2f64,
/* 54955*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54957*/        OPC_EmitConvertToTarget, 2,
/* 54959*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_FD_PSEUDO), 0,
                      MVT::v2f64, 3/*#Ops*/, 0, 3, 1, 
                  // Src: (vector_insert:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wd_in, FGR64Opnd:{ *:[f64] }:$fs, (imm:{ *:[iPTR] })<<P:Predicate_immZExt1Ptr>>:$n) - Complexity = 7
                  // Dst: (INSERT_FD_PSEUDO:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wd_in, (imm:{ *:[i32] }):$n, FGR64Opnd:{ *:[f64] }:$fs)
/* 54968*/      /*Scope*/ 15, /*->54984*/
/* 54969*/        OPC_CheckChild2Type, MVT::i32,
/* 54971*/        OPC_CheckType, MVT::v2f64,
/* 54973*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54975*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_FD_VIDX_PSEUDO), 0,
                      MVT::v2f64, 3/*#Ops*/, 0, 2, 1, 
                  // Src: (vector_insert:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wd_in, FGR64Opnd:{ *:[f64] }:$fs, GPR32Opnd:{ *:[i32] }:$n) - Complexity = 3
                  // Dst: (INSERT_FD_VIDX_PSEUDO:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wd_in, GPR32Opnd:{ *:[i32] }:$n, FGR64Opnd:{ *:[f64] }:$fs)
/* 54984*/      /*Scope*/ 15, /*->55000*/
/* 54985*/        OPC_CheckChild2Type, MVT::i64,
/* 54987*/        OPC_CheckType, MVT::v2f64,
/* 54989*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54991*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::INSERT_FD_VIDX64_PSEUDO), 0,
                      MVT::v2f64, 3/*#Ops*/, 0, 2, 1, 
                  // Src: (vector_insert:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wd_in, FGR64Opnd:{ *:[f64] }:$fs, GPR64Opnd:{ *:[i64] }:$n) - Complexity = 3
                  // Dst: (INSERT_FD_VIDX64_PSEUDO:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wd_in, GPR64Opnd:{ *:[i64] }:$n, FGR64Opnd:{ *:[f64] }:$fs)
/* 55000*/      0, /*End of Scope*/
/* 55001*/    0, /*End of Scope*/
/* 55002*/  /*SwitchOpcode*/ 47, TARGET_VAL(MipsISD::SHF),// ->55052
/* 55005*/    OPC_RecordChild0, // #0 = $u8
/* 55006*/    OPC_MoveChild0,
/* 55007*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 55010*/    OPC_CheckPredicate, 28, // Predicate_timmZExt8
/* 55012*/    OPC_MoveParent,
/* 55013*/    OPC_RecordChild1, // #1 = $ws
/* 55014*/    OPC_SwitchType /*3 cases */, 10, MVT::v16i8,// ->55027
/* 55017*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55019*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SHF_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 1, 0, 
                // Src: (MipsSHF:{ *:[v16i8] } (timm:{ *:[i32] })<<P:Predicate_timmZExt8>>:$u8, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 7
                // Dst: (SHF_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, (timm:{ *:[i32] }):$u8)
/* 55027*/    /*SwitchType*/ 10, MVT::v8i16,// ->55039
/* 55029*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55031*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SHF_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 1, 0, 
                // Src: (MipsSHF:{ *:[v8i16] } (timm:{ *:[i32] })<<P:Predicate_timmZExt8>>:$u8, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 7
                // Dst: (SHF_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, (timm:{ *:[i32] }):$u8)
/* 55039*/    /*SwitchType*/ 10, MVT::v4i32,// ->55051
/* 55041*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55043*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SHF_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 1, 0, 
                // Src: (MipsSHF:{ *:[v4i32] } (timm:{ *:[i32] })<<P:Predicate_timmZExt8>>:$u8, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 7
                // Dst: (SHF_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (timm:{ *:[i32] }):$u8)
/* 55051*/    0, // EndSwitchType
/* 55052*/  /*SwitchOpcode*/ 37, TARGET_VAL(MipsISD::SHLL_DSP),// ->55092
/* 55055*/    OPC_RecordChild0, // #0 = $a
/* 55056*/    OPC_RecordChild1, // #1 = $shamt
/* 55057*/    OPC_MoveChild1,
/* 55058*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55061*/    OPC_MoveParent,
/* 55062*/    OPC_SwitchType /*2 cases */, 12, MVT::v2i16,// ->55077
/* 55065*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55067*/      OPC_EmitConvertToTarget, 1,
/* 55069*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLL_PH), 0,
                    MVT::v2i16, 2/*#Ops*/, 0, 2, 
                // Src: (MipsSHLL_DSP:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, (imm:{ *:[i32] }):$shamt) - Complexity = 6
                // Dst: (SHLL_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, (imm:{ *:[i32] }):$shamt)
/* 55077*/    /*SwitchType*/ 12, MVT::v4i8,// ->55091
/* 55079*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55081*/      OPC_EmitConvertToTarget, 1,
/* 55083*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLL_QB), 0,
                    MVT::v4i8, 2/*#Ops*/, 0, 2, 
                // Src: (MipsSHLL_DSP:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, (imm:{ *:[i32] }):$shamt) - Complexity = 6
                // Dst: (SHLL_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, (imm:{ *:[i32] }):$shamt)
/* 55091*/    0, // EndSwitchType
/* 55092*/  /*SwitchOpcode*/ 37, TARGET_VAL(MipsISD::SHRA_DSP),// ->55132
/* 55095*/    OPC_RecordChild0, // #0 = $a
/* 55096*/    OPC_RecordChild1, // #1 = $shamt
/* 55097*/    OPC_MoveChild1,
/* 55098*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55101*/    OPC_MoveParent,
/* 55102*/    OPC_SwitchType /*2 cases */, 12, MVT::v2i16,// ->55117
/* 55105*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55107*/      OPC_EmitConvertToTarget, 1,
/* 55109*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_PH), 0,
                    MVT::v2i16, 2/*#Ops*/, 0, 2, 
                // Src: (MipsSHRA_DSP:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, (imm:{ *:[i32] }):$shamt) - Complexity = 6
                // Dst: (SHRA_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, (imm:{ *:[i32] }):$shamt)
/* 55117*/    /*SwitchType*/ 12, MVT::v4i8,// ->55131
/* 55119*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 55121*/      OPC_EmitConvertToTarget, 1,
/* 55123*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_QB), 0,
                    MVT::v4i8, 2/*#Ops*/, 0, 2, 
                // Src: (MipsSHRA_DSP:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, (imm:{ *:[i32] }):$shamt) - Complexity = 6
                // Dst: (SHRA_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, (imm:{ *:[i32] }):$shamt)
/* 55131*/    0, // EndSwitchType
/* 55132*/  /*SwitchOpcode*/ 37, TARGET_VAL(MipsISD::SHRL_DSP),// ->55172
/* 55135*/    OPC_RecordChild0, // #0 = $a
/* 55136*/    OPC_RecordChild1, // #1 = $shamt
/* 55137*/    OPC_MoveChild1,
/* 55138*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55141*/    OPC_MoveParent,
/* 55142*/    OPC_SwitchType /*2 cases */, 12, MVT::v2i16,// ->55157
/* 55145*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 55147*/      OPC_EmitConvertToTarget, 1,
/* 55149*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRL_PH), 0,
                    MVT::v2i16, 2/*#Ops*/, 0, 2, 
                // Src: (MipsSHRL_DSP:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, (imm:{ *:[i32] }):$shamt) - Complexity = 6
                // Dst: (SHRL_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, (imm:{ *:[i32] }):$shamt)
/* 55157*/    /*SwitchType*/ 12, MVT::v4i8,// ->55171
/* 55159*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55161*/      OPC_EmitConvertToTarget, 1,
/* 55163*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRL_QB), 0,
                    MVT::v4i8, 2/*#Ops*/, 0, 2, 
                // Src: (MipsSHRL_DSP:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, (imm:{ *:[i32] }):$shamt) - Complexity = 6
                // Dst: (SHRL_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, (imm:{ *:[i32] }):$shamt)
/* 55171*/    0, // EndSwitchType
/* 55172*/  /*SwitchOpcode*/ 33|128,1/*161*/, TARGET_VAL(ISD::BUILD_VECTOR),// ->55337
/* 55176*/    OPC_RecordChild0, // #0 = $rs
/* 55177*/    OPC_Scope, 105, /*->55284*/ // 4 children in Scope
/* 55179*/      OPC_CheckChild0Type, MVT::i32,
/* 55181*/      OPC_CheckChild1Same, 0,
/* 55183*/      OPC_CheckChild2Same, 0,
/* 55185*/      OPC_CheckChild3Same, 0,
/* 55187*/      OPC_Scope, 82, /*->55271*/ // 2 children in Scope
/* 55189*/        OPC_MoveChild4,
/* 55190*/        OPC_CheckSame, 0,
/* 55192*/        OPC_MoveParent,
/* 55193*/        OPC_MoveChild5,
/* 55194*/        OPC_CheckSame, 0,
/* 55196*/        OPC_MoveParent,
/* 55197*/        OPC_MoveChild6,
/* 55198*/        OPC_CheckSame, 0,
/* 55200*/        OPC_MoveParent,
/* 55201*/        OPC_MoveChild7,
/* 55202*/        OPC_CheckSame, 0,
/* 55204*/        OPC_MoveParent,
/* 55205*/        OPC_Scope, 51, /*->55258*/ // 2 children in Scope
/* 55207*/          OPC_MoveChild, 8,
/* 55209*/          OPC_CheckSame, 0,
/* 55211*/          OPC_MoveParent,
/* 55212*/          OPC_MoveChild, 9,
/* 55214*/          OPC_CheckSame, 0,
/* 55216*/          OPC_MoveParent,
/* 55217*/          OPC_MoveChild, 10,
/* 55219*/          OPC_CheckSame, 0,
/* 55221*/          OPC_MoveParent,
/* 55222*/          OPC_MoveChild, 11,
/* 55224*/          OPC_CheckSame, 0,
/* 55226*/          OPC_MoveParent,
/* 55227*/          OPC_MoveChild, 12,
/* 55229*/          OPC_CheckSame, 0,
/* 55231*/          OPC_MoveParent,
/* 55232*/          OPC_MoveChild, 13,
/* 55234*/          OPC_CheckSame, 0,
/* 55236*/          OPC_MoveParent,
/* 55237*/          OPC_MoveChild, 14,
/* 55239*/          OPC_CheckSame, 0,
/* 55241*/          OPC_MoveParent,
/* 55242*/          OPC_MoveChild, 15,
/* 55244*/          OPC_CheckSame, 0,
/* 55246*/          OPC_MoveParent,
/* 55247*/          OPC_CheckType, MVT::v16i8,
/* 55249*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55251*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FILL_B), 0,
                        MVT::v16i8, 1/*#Ops*/, 0, 
                    // Src: (build_vector:{ *:[v16i8] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                    // Dst: (FILL_B:{ *:[v16i8] } GPR32Opnd:{ *:[i32] }:$rs)
/* 55258*/        /*Scope*/ 11, /*->55270*/
/* 55259*/          OPC_CheckType, MVT::v8i16,
/* 55261*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55263*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FILL_H), 0,
                        MVT::v8i16, 1/*#Ops*/, 0, 
                    // Src: (build_vector:{ *:[v8i16] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                    // Dst: (FILL_H:{ *:[v8i16] } GPR32Opnd:{ *:[i32] }:$rs)
/* 55270*/        0, /*End of Scope*/
/* 55271*/      /*Scope*/ 11, /*->55283*/
/* 55272*/        OPC_CheckType, MVT::v4i32,
/* 55274*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55276*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::FILL_W), 0,
                      MVT::v4i32, 1/*#Ops*/, 0, 
                  // Src: (build_vector:{ *:[v4i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (FILL_W:{ *:[v4i32] } GPR32Opnd:{ *:[i32] }:$rs)
/* 55283*/      0, /*End of Scope*/
/* 55284*/    /*Scope*/ 15, /*->55300*/
/* 55285*/      OPC_CheckChild0Type, MVT::i64,
/* 55287*/      OPC_CheckChild1Same, 0,
/* 55289*/      OPC_CheckType, MVT::v2i64,
/* 55291*/      OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 55293*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FILL_D), 0,
                    MVT::v2i64, 1/*#Ops*/, 0, 
                // Src: (build_vector:{ *:[v2i64] } GPR64Opnd:{ *:[i64] }:$rs, GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                // Dst: (FILL_D:{ *:[v2i64] } GPR64Opnd:{ *:[i64] }:$rs)
/* 55300*/    /*Scope*/ 19, /*->55320*/
/* 55301*/      OPC_CheckChild0Type, MVT::f32,
/* 55303*/      OPC_CheckChild1Same, 0,
/* 55305*/      OPC_CheckChild2Same, 0,
/* 55307*/      OPC_CheckChild3Same, 0,
/* 55309*/      OPC_CheckType, MVT::v4f32,
/* 55311*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55313*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FILL_FW_PSEUDO), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (build_vector:{ *:[v4f32] } FGR32:{ *:[f32] }:$fs, FGR32:{ *:[f32] }:$fs, FGR32:{ *:[f32] }:$fs, FGR32:{ *:[f32] }:$fs) - Complexity = 3
                // Dst: (FILL_FW_PSEUDO:{ *:[v4f32] } FGR32:{ *:[f32] }:$fs)
/* 55320*/    /*Scope*/ 15, /*->55336*/
/* 55321*/      OPC_CheckChild0Type, MVT::f64,
/* 55323*/      OPC_CheckChild1Same, 0,
/* 55325*/      OPC_CheckType, MVT::v2f64,
/* 55327*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55329*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FILL_FD_PSEUDO), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (build_vector:{ *:[v2f64] } FGR64:{ *:[f64] }:$fs, FGR64:{ *:[f64] }:$fs) - Complexity = 3
                // Dst: (FILL_FD_PSEUDO:{ *:[v2f64] } FGR64:{ *:[f64] }:$fs)
/* 55336*/    0, /*End of Scope*/
/* 55337*/  /*SwitchOpcode*/ 25, TARGET_VAL(ISD::FP_TO_SINT),// ->55365
/* 55340*/    OPC_RecordChild0, // #0 = $ws
/* 55341*/    OPC_SwitchType /*2 cases */, 9, MVT::v4i32,// ->55353
/* 55344*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55346*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTRUNC_S_W), 0,
                    MVT::v4i32, 1/*#Ops*/, 0, 
                // Src: (fp_to_sint:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 3
                // Dst: (FTRUNC_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 55353*/    /*SwitchType*/ 9, MVT::v2i64,// ->55364
/* 55355*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55357*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTRUNC_S_D), 0,
                    MVT::v2i64, 1/*#Ops*/, 0, 
                // Src: (fp_to_sint:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 3
                // Dst: (FTRUNC_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 55364*/    0, // EndSwitchType
/* 55365*/  /*SwitchOpcode*/ 25, TARGET_VAL(ISD::FP_TO_UINT),// ->55393
/* 55368*/    OPC_RecordChild0, // #0 = $ws
/* 55369*/    OPC_SwitchType /*2 cases */, 9, MVT::v4i32,// ->55381
/* 55372*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55374*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTRUNC_U_W), 0,
                    MVT::v4i32, 1/*#Ops*/, 0, 
                // Src: (fp_to_uint:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 3
                // Dst: (FTRUNC_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 55381*/    /*SwitchType*/ 9, MVT::v2i64,// ->55392
/* 55383*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55385*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTRUNC_U_D), 0,
                    MVT::v2i64, 1/*#Ops*/, 0, 
                // Src: (fp_to_uint:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 3
                // Dst: (FTRUNC_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 55392*/    0, // EndSwitchType
/* 55393*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::ILVEV),// ->55448
/* 55396*/    OPC_RecordChild0, // #0 = $ws
/* 55397*/    OPC_RecordChild1, // #1 = $wt
/* 55398*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55411
/* 55401*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55403*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVEV_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVEV:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                // Dst: (ILVEV_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 55411*/    /*SwitchType*/ 10, MVT::v8i16,// ->55423
/* 55413*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55415*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVEV_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVEV:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                // Dst: (ILVEV_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 55423*/    /*SwitchType*/ 10, MVT::v4i32,// ->55435
/* 55425*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55427*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVEV_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVEV:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                // Dst: (ILVEV_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 55435*/    /*SwitchType*/ 10, MVT::v2i64,// ->55447
/* 55437*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55439*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVEV_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVEV:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                // Dst: (ILVEV_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 55447*/    0, // EndSwitchType
/* 55448*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::ILVL),// ->55503
/* 55451*/    OPC_RecordChild0, // #0 = $ws
/* 55452*/    OPC_RecordChild1, // #1 = $wt
/* 55453*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55466
/* 55456*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55458*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVL_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVL:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                // Dst: (ILVL_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 55466*/    /*SwitchType*/ 10, MVT::v8i16,// ->55478
/* 55468*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55470*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVL_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVL:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                // Dst: (ILVL_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 55478*/    /*SwitchType*/ 10, MVT::v4i32,// ->55490
/* 55480*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55482*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVL_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVL:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                // Dst: (ILVL_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 55490*/    /*SwitchType*/ 10, MVT::v2i64,// ->55502
/* 55492*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55494*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVL_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVL:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                // Dst: (ILVL_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 55502*/    0, // EndSwitchType
/* 55503*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::ILVOD),// ->55558
/* 55506*/    OPC_RecordChild0, // #0 = $ws
/* 55507*/    OPC_RecordChild1, // #1 = $wt
/* 55508*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55521
/* 55511*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55513*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVOD_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVOD:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                // Dst: (ILVOD_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 55521*/    /*SwitchType*/ 10, MVT::v8i16,// ->55533
/* 55523*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55525*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVOD_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVOD:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                // Dst: (ILVOD_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 55533*/    /*SwitchType*/ 10, MVT::v4i32,// ->55545
/* 55535*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55537*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVOD_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVOD:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                // Dst: (ILVOD_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 55545*/    /*SwitchType*/ 10, MVT::v2i64,// ->55557
/* 55547*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55549*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVOD_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVOD:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                // Dst: (ILVOD_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 55557*/    0, // EndSwitchType
/* 55558*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::ILVR),// ->55613
/* 55561*/    OPC_RecordChild0, // #0 = $ws
/* 55562*/    OPC_RecordChild1, // #1 = $wt
/* 55563*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55576
/* 55566*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55568*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVR_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVR:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                // Dst: (ILVR_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 55576*/    /*SwitchType*/ 10, MVT::v8i16,// ->55588
/* 55578*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55580*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVR_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVR:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                // Dst: (ILVR_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 55588*/    /*SwitchType*/ 10, MVT::v4i32,// ->55600
/* 55590*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55592*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVR_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVR:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                // Dst: (ILVR_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 55600*/    /*SwitchType*/ 10, MVT::v2i64,// ->55612
/* 55602*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55604*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ILVR_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (MipsILVR:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                // Dst: (ILVR_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 55612*/    0, // EndSwitchType
/* 55613*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::PCKEV),// ->55668
/* 55616*/    OPC_RecordChild0, // #0 = $ws
/* 55617*/    OPC_RecordChild1, // #1 = $wt
/* 55618*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55631
/* 55621*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55623*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PCKEV_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (MipsPCKEV:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                // Dst: (PCKEV_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 55631*/    /*SwitchType*/ 10, MVT::v8i16,// ->55643
/* 55633*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55635*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PCKEV_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (MipsPCKEV:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                // Dst: (PCKEV_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 55643*/    /*SwitchType*/ 10, MVT::v4i32,// ->55655
/* 55645*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55647*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PCKEV_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (MipsPCKEV:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                // Dst: (PCKEV_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 55655*/    /*SwitchType*/ 10, MVT::v2i64,// ->55667
/* 55657*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55659*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PCKEV_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (MipsPCKEV:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                // Dst: (PCKEV_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 55667*/    0, // EndSwitchType
/* 55668*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::PCKOD),// ->55723
/* 55671*/    OPC_RecordChild0, // #0 = $ws
/* 55672*/    OPC_RecordChild1, // #1 = $wt
/* 55673*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55686
/* 55676*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55678*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PCKOD_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (MipsPCKOD:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 3
                // Dst: (PCKOD_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 55686*/    /*SwitchType*/ 10, MVT::v8i16,// ->55698
/* 55688*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55690*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PCKOD_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (MipsPCKOD:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 3
                // Dst: (PCKOD_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 55698*/    /*SwitchType*/ 10, MVT::v4i32,// ->55710
/* 55700*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55702*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PCKOD_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (MipsPCKOD:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 3
                // Dst: (PCKOD_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 55710*/    /*SwitchType*/ 10, MVT::v2i64,// ->55722
/* 55712*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55714*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::PCKOD_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (MipsPCKOD:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 3
                // Dst: (PCKOD_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 55722*/    0, // EndSwitchType
/* 55723*/  /*SwitchOpcode*/ 67|128,2/*323*/, TARGET_VAL(MipsISD::SELECT_CC_DSP),// ->56050
/* 55727*/    OPC_RecordChild0, // #0 = $a
/* 55728*/    OPC_Scope, 30|128,1/*158*/, /*->55889*/ // 2 children in Scope
/* 55731*/      OPC_CheckChild0Type, MVT::v2i16,
/* 55733*/      OPC_RecordChild1, // #1 = $b
/* 55734*/      OPC_RecordChild2, // #2 = $c
/* 55735*/      OPC_RecordChild3, // #3 = $d
/* 55736*/      OPC_MoveChild4,
/* 55737*/      OPC_Scope, 24, /*->55763*/ // 6 children in Scope
/* 55739*/        OPC_CheckCondCode, ISD::SETEQ,
/* 55741*/        OPC_MoveParent,
/* 55742*/        OPC_CheckType, MVT::v2i16,
/* 55744*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55746*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_EQ_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 55754*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_PH), 0,
                      MVT::v2i16, 3/*#Ops*/, 4, 2, 3, 
                  // Src: (MipsSELECT_CC_DSP:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b, v2i16:{ *:[v2i16] }:$c, v2i16:{ *:[v2i16] }:$d, SETEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_PH:{ *:[v2i16] } (PseudoCMP_EQ_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b), ?:{ *:[v2i16] }:$c, ?:{ *:[v2i16] }:$d)
/* 55763*/      /*Scope*/ 24, /*->55788*/
/* 55764*/        OPC_CheckCondCode, ISD::SETLT,
/* 55766*/        OPC_MoveParent,
/* 55767*/        OPC_CheckType, MVT::v2i16,
/* 55769*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55771*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LT_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 55779*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_PH), 0,
                      MVT::v2i16, 3/*#Ops*/, 4, 2, 3, 
                  // Src: (MipsSELECT_CC_DSP:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b, v2i16:{ *:[v2i16] }:$c, v2i16:{ *:[v2i16] }:$d, SETLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_PH:{ *:[v2i16] } (PseudoCMP_LT_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b), ?:{ *:[v2i16] }:$c, ?:{ *:[v2i16] }:$d)
/* 55788*/      /*Scope*/ 24, /*->55813*/
/* 55789*/        OPC_CheckCondCode, ISD::SETLE,
/* 55791*/        OPC_MoveParent,
/* 55792*/        OPC_CheckType, MVT::v2i16,
/* 55794*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55796*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LE_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 55804*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_PH), 0,
                      MVT::v2i16, 3/*#Ops*/, 4, 2, 3, 
                  // Src: (MipsSELECT_CC_DSP:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b, v2i16:{ *:[v2i16] }:$c, v2i16:{ *:[v2i16] }:$d, SETLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_PH:{ *:[v2i16] } (PseudoCMP_LE_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b), ?:{ *:[v2i16] }:$c, ?:{ *:[v2i16] }:$d)
/* 55813*/      /*Scope*/ 24, /*->55838*/
/* 55814*/        OPC_CheckCondCode, ISD::SETNE,
/* 55816*/        OPC_MoveParent,
/* 55817*/        OPC_CheckType, MVT::v2i16,
/* 55819*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55821*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_EQ_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 55829*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_PH), 0,
                      MVT::v2i16, 3/*#Ops*/, 4, 3, 2, 
                  // Src: (MipsSELECT_CC_DSP:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b, v2i16:{ *:[v2i16] }:$c, v2i16:{ *:[v2i16] }:$d, SETNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_PH:{ *:[v2i16] } (PseudoCMP_EQ_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b), ?:{ *:[v2i16] }:$d, ?:{ *:[v2i16] }:$c)
/* 55838*/      /*Scope*/ 24, /*->55863*/
/* 55839*/        OPC_CheckCondCode, ISD::SETGE,
/* 55841*/        OPC_MoveParent,
/* 55842*/        OPC_CheckType, MVT::v2i16,
/* 55844*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55846*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LT_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 55854*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_PH), 0,
                      MVT::v2i16, 3/*#Ops*/, 4, 3, 2, 
                  // Src: (MipsSELECT_CC_DSP:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b, v2i16:{ *:[v2i16] }:$c, v2i16:{ *:[v2i16] }:$d, SETGE:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_PH:{ *:[v2i16] } (PseudoCMP_LT_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b), ?:{ *:[v2i16] }:$d, ?:{ *:[v2i16] }:$c)
/* 55863*/      /*Scope*/ 24, /*->55888*/
/* 55864*/        OPC_CheckCondCode, ISD::SETGT,
/* 55866*/        OPC_MoveParent,
/* 55867*/        OPC_CheckType, MVT::v2i16,
/* 55869*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55871*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LE_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 55879*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_PH), 0,
                      MVT::v2i16, 3/*#Ops*/, 4, 3, 2, 
                  // Src: (MipsSELECT_CC_DSP:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b, v2i16:{ *:[v2i16] }:$c, v2i16:{ *:[v2i16] }:$d, SETGT:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_PH:{ *:[v2i16] } (PseudoCMP_LE_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b), ?:{ *:[v2i16] }:$d, ?:{ *:[v2i16] }:$c)
/* 55888*/      0, /*End of Scope*/
/* 55889*/    /*Scope*/ 30|128,1/*158*/, /*->56049*/
/* 55891*/      OPC_CheckChild0Type, MVT::v4i8,
/* 55893*/      OPC_RecordChild1, // #1 = $b
/* 55894*/      OPC_RecordChild2, // #2 = $c
/* 55895*/      OPC_RecordChild3, // #3 = $d
/* 55896*/      OPC_MoveChild4,
/* 55897*/      OPC_Scope, 24, /*->55923*/ // 6 children in Scope
/* 55899*/        OPC_CheckCondCode, ISD::SETEQ,
/* 55901*/        OPC_MoveParent,
/* 55902*/        OPC_CheckType, MVT::v4i8,
/* 55904*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55906*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_EQ_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 55914*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_QB), 0,
                      MVT::v4i8, 3/*#Ops*/, 4, 2, 3, 
                  // Src: (MipsSELECT_CC_DSP:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b, v4i8:{ *:[v4i8] }:$c, v4i8:{ *:[v4i8] }:$d, SETEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_QB:{ *:[v4i8] } (PseudoCMPU_EQ_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b), ?:{ *:[v4i8] }:$c, ?:{ *:[v4i8] }:$d)
/* 55923*/      /*Scope*/ 24, /*->55948*/
/* 55924*/        OPC_CheckCondCode, ISD::SETULT,
/* 55926*/        OPC_MoveParent,
/* 55927*/        OPC_CheckType, MVT::v4i8,
/* 55929*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55931*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LT_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 55939*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_QB), 0,
                      MVT::v4i8, 3/*#Ops*/, 4, 2, 3, 
                  // Src: (MipsSELECT_CC_DSP:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b, v4i8:{ *:[v4i8] }:$c, v4i8:{ *:[v4i8] }:$d, SETULT:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_QB:{ *:[v4i8] } (PseudoCMPU_LT_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b), ?:{ *:[v4i8] }:$c, ?:{ *:[v4i8] }:$d)
/* 55948*/      /*Scope*/ 24, /*->55973*/
/* 55949*/        OPC_CheckCondCode, ISD::SETULE,
/* 55951*/        OPC_MoveParent,
/* 55952*/        OPC_CheckType, MVT::v4i8,
/* 55954*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55956*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LE_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 55964*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_QB), 0,
                      MVT::v4i8, 3/*#Ops*/, 4, 2, 3, 
                  // Src: (MipsSELECT_CC_DSP:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b, v4i8:{ *:[v4i8] }:$c, v4i8:{ *:[v4i8] }:$d, SETULE:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_QB:{ *:[v4i8] } (PseudoCMPU_LE_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b), ?:{ *:[v4i8] }:$c, ?:{ *:[v4i8] }:$d)
/* 55973*/      /*Scope*/ 24, /*->55998*/
/* 55974*/        OPC_CheckCondCode, ISD::SETNE,
/* 55976*/        OPC_MoveParent,
/* 55977*/        OPC_CheckType, MVT::v4i8,
/* 55979*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55981*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_EQ_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 55989*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_QB), 0,
                      MVT::v4i8, 3/*#Ops*/, 4, 3, 2, 
                  // Src: (MipsSELECT_CC_DSP:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b, v4i8:{ *:[v4i8] }:$c, v4i8:{ *:[v4i8] }:$d, SETNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_QB:{ *:[v4i8] } (PseudoCMPU_EQ_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b), ?:{ *:[v4i8] }:$d, ?:{ *:[v4i8] }:$c)
/* 55998*/      /*Scope*/ 24, /*->56023*/
/* 55999*/        OPC_CheckCondCode, ISD::SETUGE,
/* 56001*/        OPC_MoveParent,
/* 56002*/        OPC_CheckType, MVT::v4i8,
/* 56004*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56006*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LT_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56014*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_QB), 0,
                      MVT::v4i8, 3/*#Ops*/, 4, 3, 2, 
                  // Src: (MipsSELECT_CC_DSP:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b, v4i8:{ *:[v4i8] }:$c, v4i8:{ *:[v4i8] }:$d, SETUGE:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_QB:{ *:[v4i8] } (PseudoCMPU_LT_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b), ?:{ *:[v4i8] }:$d, ?:{ *:[v4i8] }:$c)
/* 56023*/      /*Scope*/ 24, /*->56048*/
/* 56024*/        OPC_CheckCondCode, ISD::SETUGT,
/* 56026*/        OPC_MoveParent,
/* 56027*/        OPC_CheckType, MVT::v4i8,
/* 56029*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56031*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LE_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56039*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_QB), 0,
                      MVT::v4i8, 3/*#Ops*/, 4, 3, 2, 
                  // Src: (MipsSELECT_CC_DSP:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b, v4i8:{ *:[v4i8] }:$c, v4i8:{ *:[v4i8] }:$d, SETUGT:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_QB:{ *:[v4i8] } (PseudoCMPU_LE_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b), ?:{ *:[v4i8] }:$d, ?:{ *:[v4i8] }:$c)
/* 56048*/      0, /*End of Scope*/
/* 56049*/    0, /*End of Scope*/
/* 56050*/  /*SwitchOpcode*/ 87|128,5/*727*/, TARGET_VAL(MipsISD::SETCC_DSP),// ->56781
/* 56054*/    OPC_RecordChild0, // #0 = $a
/* 56055*/    OPC_SwitchType /*2 cases */, 103|128,2/*359*/, MVT::v2i16,// ->56418
/* 56059*/      OPC_CheckChild0Type, MVT::v2i16,
/* 56061*/      OPC_RecordChild1, // #1 = $b
/* 56062*/      OPC_Scope, 58, /*->56122*/ // 6 children in Scope
/* 56064*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 56066*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56068*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_EQ_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56076*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56079*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56091*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56099*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56102*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56110*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56113*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_PH), 0,
                      MVT::v2i16, 3/*#Ops*/, 2, 7, 8, 
                  // Src: (MipsSETCC_DSP:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b, SETEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_PH:{ *:[v2i16] } (PseudoCMP_EQ_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b), (COPY_TO_REGCLASS:{ *:[v2i16] } (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, -1:{ *:[i32] }), DSPR:{ *:[i32] }), ZERO:{ *:[v2i16] })
/* 56122*/      /*Scope*/ 58, /*->56181*/
/* 56123*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 56125*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56127*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LT_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56135*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56138*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56150*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56158*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56161*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56169*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56172*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_PH), 0,
                      MVT::v2i16, 3/*#Ops*/, 2, 7, 8, 
                  // Src: (MipsSETCC_DSP:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b, SETLT:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_PH:{ *:[v2i16] } (PseudoCMP_LT_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b), (COPY_TO_REGCLASS:{ *:[v2i16] } (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, -1:{ *:[i32] }), DSPR:{ *:[i32] }), ZERO:{ *:[v2i16] })
/* 56181*/      /*Scope*/ 58, /*->56240*/
/* 56182*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 56184*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56186*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LE_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56194*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56197*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56209*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56217*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56220*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56228*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56231*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_PH), 0,
                      MVT::v2i16, 3/*#Ops*/, 2, 7, 8, 
                  // Src: (MipsSETCC_DSP:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b, SETLE:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_PH:{ *:[v2i16] } (PseudoCMP_LE_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b), (COPY_TO_REGCLASS:{ *:[v2i16] } (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, -1:{ *:[i32] }), DSPR:{ *:[i32] }), ZERO:{ *:[v2i16] })
/* 56240*/      /*Scope*/ 58, /*->56299*/
/* 56241*/        OPC_CheckChild2CondCode, ISD::SETNE,
/* 56243*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56245*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_EQ_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56253*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56256*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56259*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56271*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56279*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56282*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56290*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_PH), 0,
                      MVT::v2i16, 3/*#Ops*/, 2, 3, 8, 
                  // Src: (MipsSETCC_DSP:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b, SETNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_PH:{ *:[v2i16] } (PseudoCMP_EQ_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b), ZERO:{ *:[v2i16] }, (COPY_TO_REGCLASS:{ *:[v2i16] } (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, -1:{ *:[i32] }), DSPR:{ *:[i32] }))
/* 56299*/      /*Scope*/ 58, /*->56358*/
/* 56300*/        OPC_CheckChild2CondCode, ISD::SETGE,
/* 56302*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56304*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LT_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56312*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56315*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56318*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56330*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56338*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56341*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56349*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_PH), 0,
                      MVT::v2i16, 3/*#Ops*/, 2, 3, 8, 
                  // Src: (MipsSETCC_DSP:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b, SETGE:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_PH:{ *:[v2i16] } (PseudoCMP_LT_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b), ZERO:{ *:[v2i16] }, (COPY_TO_REGCLASS:{ *:[v2i16] } (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, -1:{ *:[i32] }), DSPR:{ *:[i32] }))
/* 56358*/      /*Scope*/ 58, /*->56417*/
/* 56359*/        OPC_CheckChild2CondCode, ISD::SETGT,
/* 56361*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56363*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LE_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56371*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56374*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56377*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56389*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56397*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56400*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56408*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_PH), 0,
                      MVT::v2i16, 3/*#Ops*/, 2, 3, 8, 
                  // Src: (MipsSETCC_DSP:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b, SETGT:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_PH:{ *:[v2i16] } (PseudoCMP_LE_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b), ZERO:{ *:[v2i16] }, (COPY_TO_REGCLASS:{ *:[v2i16] } (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, -1:{ *:[i32] }), DSPR:{ *:[i32] }))
/* 56417*/      0, /*End of Scope*/
/* 56418*/    /*SwitchType*/ 103|128,2/*359*/, MVT::v4i8,// ->56780
/* 56421*/      OPC_CheckChild0Type, MVT::v4i8,
/* 56423*/      OPC_RecordChild1, // #1 = $b
/* 56424*/      OPC_Scope, 58, /*->56484*/ // 6 children in Scope
/* 56426*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 56428*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56430*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_EQ_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56438*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56441*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56453*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56461*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56464*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56472*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56475*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_QB), 0,
                      MVT::v4i8, 3/*#Ops*/, 2, 7, 8, 
                  // Src: (MipsSETCC_DSP:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b, SETEQ:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_QB:{ *:[v4i8] } (PseudoCMPU_EQ_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b), (COPY_TO_REGCLASS:{ *:[v4i8] } (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, -1:{ *:[i32] }), DSPR:{ *:[i32] }), ZERO:{ *:[v4i8] })
/* 56484*/      /*Scope*/ 58, /*->56543*/
/* 56485*/        OPC_CheckChild2CondCode, ISD::SETULT,
/* 56487*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56489*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LT_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56497*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56500*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56512*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56520*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56523*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56531*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56534*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_QB), 0,
                      MVT::v4i8, 3/*#Ops*/, 2, 7, 8, 
                  // Src: (MipsSETCC_DSP:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b, SETULT:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_QB:{ *:[v4i8] } (PseudoCMPU_LT_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b), (COPY_TO_REGCLASS:{ *:[v4i8] } (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, -1:{ *:[i32] }), DSPR:{ *:[i32] }), ZERO:{ *:[v4i8] })
/* 56543*/      /*Scope*/ 58, /*->56602*/
/* 56544*/        OPC_CheckChild2CondCode, ISD::SETULE,
/* 56546*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56548*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LE_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56556*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56559*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56571*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56579*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56582*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56590*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56593*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_QB), 0,
                      MVT::v4i8, 3/*#Ops*/, 2, 7, 8, 
                  // Src: (MipsSETCC_DSP:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b, SETULE:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_QB:{ *:[v4i8] } (PseudoCMPU_LE_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b), (COPY_TO_REGCLASS:{ *:[v4i8] } (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, -1:{ *:[i32] }), DSPR:{ *:[i32] }), ZERO:{ *:[v4i8] })
/* 56602*/      /*Scope*/ 58, /*->56661*/
/* 56603*/        OPC_CheckChild2CondCode, ISD::SETNE,
/* 56605*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56607*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_EQ_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56615*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56618*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56621*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56633*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56641*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56644*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56652*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_QB), 0,
                      MVT::v4i8, 3/*#Ops*/, 2, 3, 8, 
                  // Src: (MipsSETCC_DSP:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b, SETNE:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_QB:{ *:[v4i8] } (PseudoCMPU_EQ_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b), ZERO:{ *:[v4i8] }, (COPY_TO_REGCLASS:{ *:[v4i8] } (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, -1:{ *:[i32] }), DSPR:{ *:[i32] }))
/* 56661*/      /*Scope*/ 58, /*->56720*/
/* 56662*/        OPC_CheckChild2CondCode, ISD::SETUGE,
/* 56664*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56666*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LT_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56674*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56677*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56680*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56692*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56700*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56703*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56711*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_QB), 0,
                      MVT::v4i8, 3/*#Ops*/, 2, 3, 8, 
                  // Src: (MipsSETCC_DSP:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b, SETUGE:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_QB:{ *:[v4i8] } (PseudoCMPU_LT_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b), ZERO:{ *:[v4i8] }, (COPY_TO_REGCLASS:{ *:[v4i8] } (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, -1:{ *:[i32] }), DSPR:{ *:[i32] }))
/* 56720*/      /*Scope*/ 58, /*->56779*/
/* 56721*/        OPC_CheckChild2CondCode, ISD::SETUGT,
/* 56723*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56725*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LE_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56733*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56736*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56739*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56751*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56759*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56762*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56770*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PseudoPICK_QB), 0,
                      MVT::v4i8, 3/*#Ops*/, 2, 3, 8, 
                  // Src: (MipsSETCC_DSP:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b, SETUGT:{ *:[Other] }) - Complexity = 3
                  // Dst: (PseudoPICK_QB:{ *:[v4i8] } (PseudoCMPU_LE_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b), ZERO:{ *:[v4i8] }, (COPY_TO_REGCLASS:{ *:[v4i8] } (ADDiu:{ *:[i32] } ZERO:{ *:[i32] }, -1:{ *:[i32] }), DSPR:{ *:[i32] }))
/* 56779*/      0, /*End of Scope*/
/* 56780*/    0, // EndSwitchType
/* 56781*/  /*SwitchOpcode*/ 29, TARGET_VAL(ISD::UINT_TO_FP),// ->56813
/* 56784*/    OPC_RecordChild0, // #0 = $ws
/* 56785*/    OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->56799
/* 56788*/      OPC_CheckChild0Type, MVT::v4i32,
/* 56790*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 56792*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FFINT_U_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (uint_to_fp:{ *:[v4f32] } MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 3
                // Dst: (FFINT_U_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4i32] }:$ws)
/* 56799*/    /*SwitchType*/ 11, MVT::v2f64,// ->56812
/* 56801*/      OPC_CheckChild0Type, MVT::v2i64,
/* 56803*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 56805*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FFINT_U_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (uint_to_fp:{ *:[v2f64] } MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 3
                // Dst: (FFINT_U_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2i64] }:$ws)
/* 56812*/    0, // EndSwitchType
/* 56813*/  /*SwitchOpcode*/ 25, TARGET_VAL(ISD::FLOG2),// ->56841
/* 56816*/    OPC_RecordChild0, // #0 = $ws
/* 56817*/    OPC_SwitchType /*2 cases */, 9, MVT::v4f32,// ->56829
/* 56820*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 56822*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FLOG2_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (flog2:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 3
                // Dst: (FLOG2_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 56829*/    /*SwitchType*/ 9, MVT::v2f64,// ->56840
/* 56831*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 56833*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FLOG2_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (flog2:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 3
                // Dst: (FLOG2_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 56840*/    0, // EndSwitchType
/* 56841*/  /*SwitchOpcode*/ 31, TARGET_VAL(ISD::FMA),// ->56875
/* 56844*/    OPC_RecordChild0, // #0 = $wd_in
/* 56845*/    OPC_RecordChild1, // #1 = $ws
/* 56846*/    OPC_RecordChild2, // #2 = $wt
/* 56847*/    OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->56861
/* 56850*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 56852*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMADD_W), 0,
                    MVT::v4f32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (fma:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wd_in, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 3
                // Dst: (FMADD_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wd_in, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 56861*/    /*SwitchType*/ 11, MVT::v2f64,// ->56874
/* 56863*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 56865*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMADD_D), 0,
                    MVT::v2f64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (fma:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wd_in, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 3
                // Dst: (FMADD_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wd_in, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 56874*/    0, // EndSwitchType
/* 56875*/  /*SwitchOpcode*/ 31, TARGET_VAL(MipsISD::FMS),// ->56909
/* 56878*/    OPC_RecordChild0, // #0 = $wd_in
/* 56879*/    OPC_RecordChild1, // #1 = $ws
/* 56880*/    OPC_RecordChild2, // #2 = $wt
/* 56881*/    OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->56895
/* 56884*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 56886*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMSUB_W), 0,
                    MVT::v4f32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsFMS:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wd_in, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 3
                // Dst: (FMSUB_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$wd_in, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 56895*/    /*SwitchType*/ 11, MVT::v2f64,// ->56908
/* 56897*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 56899*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMSUB_D), 0,
                    MVT::v2f64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (MipsFMS:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wd_in, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 3
                // Dst: (FMSUB_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$wd_in, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 56908*/    0, // EndSwitchType
/* 56909*/  /*SwitchOpcode*/ 25, TARGET_VAL(ISD::FRINT),// ->56937
/* 56912*/    OPC_RecordChild0, // #0 = $ws
/* 56913*/    OPC_SwitchType /*2 cases */, 9, MVT::v4f32,// ->56925
/* 56916*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 56918*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FRINT_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (frint:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 3
                // Dst: (FRINT_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 56925*/    /*SwitchType*/ 9, MVT::v2f64,// ->56936
/* 56927*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 56929*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FRINT_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (frint:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 3
                // Dst: (FRINT_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 56936*/    0, // EndSwitchType
/* 56937*/  /*SwitchOpcode*/ 25, TARGET_VAL(ISD::FEXP2),// ->56965
/* 56940*/    OPC_RecordChild0, // #0 = $ws
/* 56941*/    OPC_SwitchType /*2 cases */, 9, MVT::v4f32,// ->56953
/* 56944*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 56946*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXP2_W_1_PSEUDO), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (fexp2:{ *:[v4f32] } MSA128W:{ *:[v4f32] }:$ws) - Complexity = 3
                // Dst: (FEXP2_W_1_PSEUDO:{ *:[v4f32] } MSA128W:{ *:[v4f32] }:$ws)
/* 56953*/    /*SwitchType*/ 9, MVT::v2f64,// ->56964
/* 56955*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 56957*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXP2_D_1_PSEUDO), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (fexp2:{ *:[v2f64] } MSA128D:{ *:[v2f64] }:$ws) - Complexity = 3
                // Dst: (FEXP2_D_1_PSEUDO:{ *:[v2f64] } MSA128D:{ *:[v2f64] }:$ws)
/* 56964*/    0, // EndSwitchType
/* 56965*/  0, // EndSwitchOpcode
    0
  }; // Total Array size is 56967 bytes

  // Opcode Histogram:
  // #OPC_Scope                                = 732
  // #OPC_RecordNode                           = 61
  // #OPC_RecordChild                          = 1903
  // #OPC_RecordMemRef                         = 24
  // #OPC_CaptureGlueInput                     = 10
  // #OPC_MoveChild                            = 1304
  // #OPC_MoveParent                           = 1961
  // #OPC_CheckSame                            = 24
  // #OPC_CheckChildSame                       = 26
  // #OPC_CheckPatternPredicate                = 2360
  // #OPC_CheckPredicate                       = 1133
  // #OPC_CheckOpcode                          = 1192
  // #OPC_SwitchOpcode                         = 30
  // #OPC_CheckType                            = 1565
  // #OPC_SwitchType                           = 186
  // #OPC_CheckChildType                       = 247
  // #OPC_CheckInteger                         = 0
  // #OPC_CheckChildInteger                    = 336
  // #OPC_CheckCondCode                        = 12
  // #OPC_CheckChild2CondCode                  = 501
  // #OPC_CheckValueType                       = 29
  // #OPC_CheckComplexPat                      = 276
  // #OPC_CheckAndImm                          = 1
  // #OPC_CheckOrImm                           = 0
  // #OPC_CheckImmAllOnesV                     = 40
  // #OPC_CheckImmAllZerosV                    = 0
  // #OPC_CheckFoldableChainNode               = 0
  // #OPC_EmitInteger                          = 111
  // #OPC_EmitStringInteger                    = 225
  // #OPC_EmitRegister                         = 135
  // #OPC_EmitConvertToTarget                  = 303
  // #OPC_EmitMergeInputChains                 = 512
  // #OPC_EmitCopyToReg                        = 0
  // #OPC_EmitNode                             = 585
  // #OPC_EmitNodeXForm                        = 96
  // #OPC_CompleteMatch                        = 0
  // #OPC_MorphNodeTo                          = 2486

  #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->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit());
  case 1: return (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode());
  case 2: return (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode());
  case 3: return (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit());
  case 4: return (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isTargetNaCl()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 5: return (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 6: return (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode());
  case 7: return (Subtarget->inMicroMipsMode());
  case 8: return (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isTargetNaCl()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 9: return (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6());
  case 10: return (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 11: return (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 12: return (Subtarget->hasStandardEncoding()) && (!Subtarget->hasCnMips()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 13: return (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasCnMips()) && (!Subtarget->inMicroMipsMode());
  case 14: return (Subtarget->inMips16Mode());
  case 15: return (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode());
  case 16: return (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode());
  case 17: return (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat());
  case 18: return (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode());
  case 19: return (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode());
  case 20: return (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit());
  case 21: return (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat());
  case 22: return (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode());
  case 23: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode());
  case 24: return (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding());
  case 25: return (Subtarget->hasMSA());
  case 26: return (Subtarget->hasDSP());
  case 27: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit());
  case 28: return (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6());
  case 29: return (Subtarget->hasCnMips());
  case 30: return (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding());
  case 31: return (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode());
  case 32: return (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding());
  case 33: return (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 34: return (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 35: return (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 36: return (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32());
  case 37: return (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 38: return (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 39: return (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6());
  case 40: return (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode());
  case 41: return (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32());
  case 42: return (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32());
  case 43: return (Subtarget->hasEVA()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6());
  case 44: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 45: return (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode());
  case 46: return (Subtarget->hasDSPR2());
  case 47: return (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode());
  case 48: return (Subtarget->hasDSP()) && (!Subtarget->inMicroMipsMode());
  case 49: return (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 50: return (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding());
  case 51: return (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips64r6());
  case 52: return (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode());
  case 53: return (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode());
  case 54: return (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode());
  case 55: return (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (!Subtarget->inMicroMipsMode());
  case 56: return (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode());
  case 57: return (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode());
  case 58: return (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding());
  case 59: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode());
  case 60: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasSym32()) && (!Subtarget->inMicroMipsMode());
  case 61: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64());
  case 62: return (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 63: return (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode());
  case 64: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode());
  case 65: return (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat());
  case 66: return (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 67: return (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode());
  case 68: return (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding());
  case 69: return (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP());
  case 70: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasDSP()) && (!Subtarget->inMicroMipsMode());
  case 71: return (Subtarget->hasMSA()) && (Subtarget->isGP64bit());
  case 72: return (Subtarget->hasStandardEncoding());
  case 73: return (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode());
  case 74: return (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard());
  case 75: return (Subtarget->isABI_N64()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMips16Mode());
  case 76: return (Subtarget->isABI_N64()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard());
  case 77: return (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 78: return (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard());
  case 79: return (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode());
  case 80: return (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard());
  case 81: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 82: return (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard());
  case 83: return (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode());
  case 84: return (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard());
  case 85: return (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 86: return (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 87: return (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 88: return (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMips16Mode());
  case 89: return (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMips16Mode());
  case 90: return (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard());
  case 91: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 92: return (!Subtarget->inMips16Mode());
  case 93: return (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 94: return (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!TM.isPositionIndependent());
  case 95: return (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!TM.isPositionIndependent());
  case 96: return (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (TM.isPositionIndependent());
  case 97: return (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit());
  case 98: return (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 99: return (Subtarget->inMicroMipsMode()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6());
  case 100: return (Subtarget->hasDSP()) && (!Subtarget->inMips16Mode());
  case 101: return (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 102: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode());
  case 103: return (Subtarget->hasMSA()) && (Subtarget->isLittle());
  case 104: return (Subtarget->hasMSA()) && (!Subtarget->isLittle());
  case 105: return (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 106: return (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 107: return (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 108: return (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 109: return (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6());
  case 110: return (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding());
  case 111: return (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 112: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 113: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 114: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 115: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 116: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 117: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 118: return (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode());
  case 119: return (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode());
  case 120: return (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat());
  case 121: return (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding());
  case 122: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 123: return (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6());
  case 124: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 125: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 126: return (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6());
  case 127: return (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat());
  case 128: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (Subtarget->isGP64bit());
  case 129: return (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (Subtarget->inAbs2008Mode() ||TM.Options.NoNaNsFPMath);
  case 130: return (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (Subtarget->inAbs2008Mode() ||TM.Options.NoNaNsFPMath);
  case 131: return (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (Subtarget->inAbs2008Mode() ||TM.Options.NoNaNsFPMath);
  case 132: return (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (Subtarget->inAbs2008Mode() ||TM.Options.NoNaNsFPMath);
  case 133: return (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode());
  case 134: return (!Subtarget->isFP64bit());
  case 135: return (Subtarget->isFP64bit());
  case 136: return (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit());
  case 137: return (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode());
  case 138: return (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6());
  case 139: return (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit());
  case 140: return (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit());
  }
}
#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_unindexedstore
    SDNode *N = Node;
    (void)N;
if (cast<StoreSDNode>(N)->getAddressingMode() != ISD::UNINDEXED) return false;
return true;

  }
  case 1: { 
    // Predicate_store
    SDNode *N = Node;
    (void)N;
 if (cast<StoreSDNode>(N)->isTruncatingStore()) return false;
return true;

  }
  case 2: { 
    // Predicate_truncstore
    SDNode *N = Node;
    (void)N;
 if (!cast<StoreSDNode>(N)->isTruncatingStore()) return false;
return true;

  }
  case 3: { 
    // Predicate_truncstorei8
    // Predicate_zextloadi8
    // Predicate_sextloadi8
    // Predicate_extloadi8
    // Predicate_atomic_load_8
    // Predicate_atomic_store_8
    // Predicate_atomic_load_add_8
    // Predicate_atomic_load_sub_8
    // Predicate_atomic_load_and_8
    // Predicate_atomic_load_or_8
    // Predicate_atomic_load_xor_8
    // Predicate_atomic_load_nand_8
    // Predicate_atomic_swap_8
    // Predicate_atomic_cmp_swap_8
    // Predicate_atomic_load_min_8
    // Predicate_atomic_load_max_8
    // Predicate_atomic_load_umin_8
    // Predicate_atomic_load_umax_8
    SDNode *N = Node;
    (void)N;
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i8) return false;
return true;

  }
  case 4: { 
    // Predicate_truncstorei16
    // Predicate_zextloadi16
    // Predicate_sextloadi16
    // Predicate_extloadi16
    // Predicate_atomic_load_16
    // Predicate_atomic_store_16
    // Predicate_atomic_load_add_16
    // Predicate_atomic_load_sub_16
    // Predicate_atomic_load_and_16
    // Predicate_atomic_load_or_16
    // Predicate_atomic_load_xor_16
    // Predicate_atomic_load_nand_16
    // Predicate_atomic_swap_16
    // Predicate_atomic_cmp_swap_16
    // Predicate_atomic_load_min_16
    // Predicate_atomic_load_max_16
    // Predicate_atomic_load_umin_16
    // Predicate_atomic_load_umax_16
    SDNode *N = Node;
    (void)N;
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i16) return false;
return true;

  }
  case 5: { 
    // Predicate_truncstorei32
    // Predicate_sextloadi32
    // Predicate_zextloadi32
    // Predicate_extloadi32
    // Predicate_atomic_load_32
    // Predicate_atomic_store_32
    // Predicate_atomic_load_add_32
    // Predicate_atomic_load_sub_32
    // Predicate_atomic_load_and_32
    // Predicate_atomic_load_or_32
    // Predicate_atomic_load_xor_32
    // Predicate_atomic_load_nand_32
    // Predicate_atomic_swap_32
    // Predicate_atomic_cmp_swap_32
    // Predicate_atomic_load_min_32
    // Predicate_atomic_load_max_32
    // Predicate_atomic_load_umin_32
    // Predicate_atomic_load_umax_32
    SDNode *N = Node;
    (void)N;
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i32) return false;
return true;

  }
  case 6: { 
    // Predicate_unindexedload
    SDNode *N = Node;
    (void)N;
if (cast<LoadSDNode>(N)->getAddressingMode() != ISD::UNINDEXED) return false;
return true;

  }
  case 7: { 
    // Predicate_zextload
    SDNode *N = Node;
    (void)N;
if (cast<LoadSDNode>(N)->getExtensionType() != ISD::ZEXTLOAD) return false;
return true;

  }
  case 8: { 
    // Predicate_sextload
    SDNode *N = Node;
    (void)N;
if (cast<LoadSDNode>(N)->getExtensionType() != ISD::SEXTLOAD) return false;
return true;

  }
  case 9: { 
    // Predicate_load
    SDNode *N = Node;
    (void)N;
if (cast<LoadSDNode>(N)->getExtensionType() != ISD::NON_EXTLOAD) return false;
return true;

  }
  case 10: { 
    // Predicate_extload
    SDNode *N = Node;
    (void)N;
if (cast<LoadSDNode>(N)->getExtensionType() != ISD::EXTLOAD) return false;
return true;

  }
  case 11: { 
    // Predicate_extloadi1
    SDNode *N = Node;
    (void)N;
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i1) return false;
return true;

  }
  case 12: { 
    // Predicate_immZExt5_64
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
 return Imm == (Imm & 0x1f); 
  }
  case 13: { 
    // Predicate_PowerOf2LO
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;

  if (N->getValueType(0) == MVT::i64) {
    uint64_t Imm = N->getZExtValue();
    return isPowerOf2_64(Imm) && (Imm & 0xffffffff) == Imm;
  }
  else
    return false;

  }
  case 14: { 
    // Predicate_PowerOf2HI
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;

  if (N->getValueType(0) == MVT::i64) {
    uint64_t Imm = N->getZExtValue();
    return isPowerOf2_64(Imm) && (Imm & 0xffffffff00000000) == Imm;
  }
  else
    return false;

  }
  case 15: { 
    // Predicate_PowerOf2LO_i32
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;

  if (N->getValueType(0) == MVT::i32) {
    uint64_t Imm = N->getZExtValue();
    return isPowerOf2_32(Imm) && isUInt<32>(Imm);
  }
  else
    return false;

  }
  case 16: { 
    // Predicate_immSExt16
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;
 return isInt<16>(N->getSExtValue()); 
  }
  case 17: { 
    // Predicate_immSExt16Plus1
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;

  return isInt<17>(N->getSExtValue()) && isInt<16>(N->getSExtValue() + 1);

  }
  case 18: { 
    // Predicate_immZExt16
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;

  if (N->getValueType(0) == MVT::i32)
    return (uint32_t)N->getZExtValue() == (unsigned short)N->getZExtValue();
  else
    return (uint64_t)N->getZExtValue() == (unsigned short)N->getZExtValue();

  }
  case 19: { 
    // Predicate_immz
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;
 return N->getSExtValue() == 0; 
  }
  case 20: { 
    // Predicate_immZExt16_64
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;
 return isUInt<16>(N->getZExtValue()); 
  }
  case 21: { 
    // Predicate_atomic_load_64
    // Predicate_atomic_store_64
    // Predicate_atomic_load_add_64
    // Predicate_atomic_load_sub_64
    // Predicate_atomic_load_and_64
    // Predicate_atomic_load_or_64
    // Predicate_atomic_load_xor_64
    // Predicate_atomic_load_nand_64
    // Predicate_atomic_swap_64
    // Predicate_atomic_cmp_swap_64
    // Predicate_atomic_load_min_64
    // Predicate_atomic_load_max_64
    // Predicate_atomic_load_umin_64
    // Predicate_atomic_load_umax_64
    SDNode *N = Node;
    (void)N;
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i64) return false;
return true;

  }
  case 22: { 
    // Predicate_immZExt5
    // Predicate_timmZExt5
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return Imm == (Imm & 0x1f);
  }
  case 23: { 
    // Predicate_timmZExt10
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<10>(Imm);
  }
  case 24: { 
    // Predicate_timmZExt7
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;
 return isUInt<7>(N->getZExtValue()); 
  }
  case 25: { 
    // Predicate_immZExt4
    // Predicate_timmZExt4
    // Predicate_immZExt4Ptr
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<4>(Imm);
  }
  case 26: { 
    // Predicate_immZExt3
    // Predicate_timmZExt3
    // Predicate_immZExt3Ptr
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<3>(Imm);
  }
  case 27: { 
    // Predicate_timmZExt2
    // Predicate_immZExt2
    // Predicate_immZExt2Ptr
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<2>(Imm);
  }
  case 28: { 
    // Predicate_immZExt8
    // Predicate_timmZExt8
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<8>(Imm);
  }
  case 29: { 
    // Predicate_immSExt10
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isInt<10>(Imm);
  }
  case 30: { 
    // Predicate_timmZExt6
    // Predicate_immZExt6
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return Imm == (Imm & 0x3f);
  }
  case 31: { 
    // Predicate_timmZExt1
    // Predicate_immZExt1Ptr
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<1>(Imm);
  }
  case 32: { 
    // Predicate_imm32ZExt16
    const APInt & Imm = cast<ConstantSDNode>(Node)->getAPIntValue();

  return (uint32_t)Imm.getZExtValue() == (unsigned short)Imm.getZExtValue();

  }
  case 33: { 
    // Predicate_vsplat_imm_eq_1
    SDNode *N = Node;
    (void)N;

  APInt Imm;
  EVT EltTy = N->getValueType(0).getVectorElementType();

  return selectVSplat(N, Imm, EltTy.getSizeInBits()) &&
         Imm.getBitWidth() == EltTy.getSizeInBits() && Imm == 1;

  }
  case 34: { 
    // Predicate_immi32Cst7
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<32>(Imm) && Imm == 7;
  }
  case 35: { 
    // Predicate_immi32Cst15
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<32>(Imm) && Imm == 15;
  }
  case 36: { 
    // Predicate_immi32Cst31
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<32>(Imm) && Imm == 31;
  }
  case 37: { 
    // Predicate_vsplati64_imm_eq_1
    SDNode *N = Node;
    (void)N;

  APInt Imm;
  SDNode *BV = N->getOperand(0).getNode();
  EVT EltTy = N->getValueType(0).getVectorElementType();

  return selectVSplat(BV, Imm, EltTy.getSizeInBits()) &&
         Imm.getBitWidth() == EltTy.getSizeInBits() && Imm == 1;

  }
  case 38: { 
    // Predicate_vsplati64_imm_eq_63
    SDNode *N = Node;
    (void)N;

  APInt Imm;
  SDNode *BV = N->getOperand(0).getNode();
  EVT EltTy = N->getValueType(0).getVectorElementType();

  return selectVSplat(BV, Imm, EltTy.getSizeInBits()) &&
         Imm.getBitWidth() == EltTy.getSizeInBits() && Imm == 63;

  }
  case 39: { 
    // Predicate_immZExt5Plus1
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;

  return isUInt<5>(N->getZExtValue() - 1);

  }
  case 40: { 
    // Predicate_immZExt5Plus33
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;

  return isUInt<5>(N->getZExtValue() - 33);

  }
  case 41: { 
    // Predicate_immZExt5Plus32
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;

  return isUInt<5>(N->getZExtValue() - 32);

  }
  case 42: { 
    // Predicate_immZExtAndi16
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return (Imm == 128 || (Imm >= 1 && Imm <= 4) || Imm == 7 || Imm == 8 ||
            Imm == 15 || Imm == 16 || Imm == 31 || Imm == 32 || Imm == 63 ||
            Imm == 64 || Imm == 255 || Imm == 32768 || Imm == 65535 );
  }
  case 43: { 
    // Predicate_immSExt10_64
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;
 return isInt<10>(N->getSExtValue()); 
  }
  case 44: { 
    // Predicate_immZExt2Lsa
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<2>(Imm - 1);
  }
  case 45: { 
    // Predicate_imm32SExt16
    const APInt & Imm = cast<ConstantSDNode>(Node)->getAPIntValue();
 return isInt<16>(Imm.getSExtValue()); 
  }
  case 46: { 
    // Predicate_immSExt8
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;
 return isInt<8>(N->getSExtValue()); 
  }
  case 47: { 
    // Predicate_immSExtAddiur2
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return Imm == 1 || Imm == -1 ||
                                           ((Imm % 4 == 0) &&
                                            Imm < 28 && Imm > 0);
  }
  case 48: { 
    // Predicate_immSExtAddius5
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return Imm >= -8 && Imm <= 7;
  }
  case 49: { 
    // Predicate_immZExt2Shift
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return Imm >= 1 && Imm <= 8;
  }
  case 50: { 
    // Predicate_assertzext_lt_i32
    SDNode *N = Node;
    (void)N;

  return cast<VTSDNode>(N->getOperand(1))->getVT().bitsLT(MVT::i32);

  }
  case 51: { 
    // Predicate_immSExt6
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isInt<6>(Imm);
  }
  case 52: { 
    // Predicate_LUiPred
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;

  int64_t Val = N->getSExtValue();
  return !isInt<16>(Val) && isInt<32>(Val) && !(Val & 0xffff);

  }
  case 53: { 
    // Predicate_ORiPred
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;

  return isUInt<16>(N->getZExtValue()) && !isInt<16>(N->getSExtValue());

  }
  case 54: { 
    // Predicate_immLi16
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return Imm >= -1 && Imm <= 126;
  }
  case 55: { 
    // Predicate_LUiORiPred
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;

  int64_t SVal = N->getSExtValue();
  return isInt<32>(SVal) && (SVal & 0xffff);

  }
  case 56: { 
    // Predicate_immZExt32Low16Zero
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;

  uint64_t Val = N->getZExtValue();
  return isUInt<32>(Val) && !(Val & 0xffff);

  }
  case 57: { 
    // Predicate_immZExt32
    auto *N = cast<ConstantSDNode>(Node);
    (void)N;
 return isUInt<32>(N->getZExtValue()); 
  }
  case 58: { 
    // Predicate_fpimm0
    auto *N = cast<ConstantFPSDNode>(Node);
    (void)N;

  return N->isExactlyValue(+0.0);

  }
  case 59: { 
    // 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+2);
  return selectAddrRegImm(N, Result[NextRes+0].first, Result[NextRes+1].first);
  case 1:
    Result.resize(NextRes+2);
  return selectIntAddr(N, Result[NextRes+0].first, Result[NextRes+1].first);
  case 2:
    Result.resize(NextRes+2);
  return selectAddrDefault(N, Result[NextRes+0].first, Result[NextRes+1].first);
  case 3:
    Result.resize(NextRes+2);
  return selectAddr16(N, Result[NextRes+0].first, Result[NextRes+1].first);
  case 4:
    Result.resize(NextRes+2);
  return selectAddr16SP(N, Result[NextRes+0].first, Result[NextRes+1].first);
  case 5:
    Result.resize(NextRes+2);
  return selectIntAddrLSL2MM(N, Result[NextRes+0].first, Result[NextRes+1].first);
  case 6:
    Result.resize(NextRes+2);
  return selectIntAddr11MM(N, Result[NextRes+0].first, Result[NextRes+1].first);
  case 7:
    Result.resize(NextRes+2);
  return selectIntAddr16MM(N, Result[NextRes+0].first, Result[NextRes+1].first);
  case 8:
    Result.resize(NextRes+2);
  return selectIntAddrSImm10(N, Result[NextRes+0].first, Result[NextRes+1].first);
  case 9:
    Result.resize(NextRes+2);
  return selectIntAddrSImm10Lsl1(N, Result[NextRes+0].first, Result[NextRes+1].first);
  case 10:
    Result.resize(NextRes+2);
  return selectIntAddrSImm10Lsl2(N, Result[NextRes+0].first, Result[NextRes+1].first);
  case 11:
    Result.resize(NextRes+2);
  return selectIntAddrSImm10Lsl3(N, Result[NextRes+0].first, Result[NextRes+1].first);
  case 12:
    Result.resize(NextRes+2);
  return selectIntAddr12MM(N, Result[NextRes+0].first, Result[NextRes+1].first);
  case 13:
    Result.resize(NextRes+1);
  return selectVSplatUimmPow2(N, Result[NextRes+0].first);
  case 14:
    Result.resize(NextRes+1);
  return selectVSplatUimm8(N, Result[NextRes+0].first);
  case 15:
    Result.resize(NextRes+1);
  return selectVSplatUimmInvPow2(N, Result[NextRes+0].first);
  case 16:
    Result.resize(NextRes+1);
  return selectVSplatUimm5(N, Result[NextRes+0].first);
  case 17:
    Result.resize(NextRes+1);
  return selectVSplatUimm5(N, Result[NextRes+0].first);
  case 18:
    Result.resize(NextRes+1);
  return selectVSplatUimm5(N, Result[NextRes+0].first);
  case 19:
    Result.resize(NextRes+1);
  return selectVSplatUimm5(N, Result[NextRes+0].first);
  case 20:
    Result.resize(NextRes+1);
  return selectVSplatSimm5(N, Result[NextRes+0].first);
  case 21:
    Result.resize(NextRes+1);
  return selectVSplatSimm5(N, Result[NextRes+0].first);
  case 22:
    Result.resize(NextRes+1);
  return selectVSplatSimm5(N, Result[NextRes+0].first);
  case 23:
    Result.resize(NextRes+1);
  return selectVSplatSimm5(N, Result[NextRes+0].first);
  case 24:
    Result.resize(NextRes+1);
  return selectVSplatUimm3(N, Result[NextRes+0].first);
  case 25:
    Result.resize(NextRes+1);
  return selectVSplatUimm4(N, Result[NextRes+0].first);
  case 26:
    Result.resize(NextRes+1);
  return selectVSplatUimm6(N, Result[NextRes+0].first);
  case 27:
    Result.resize(NextRes+1);
  return selectVSplatUimm4(N, Result[NextRes+0].first);
  case 28:
    Result.resize(NextRes+1);
  return selectVSplatUimm3(N, Result[NextRes+0].first);
  case 29:
    Result.resize(NextRes+1);
  return selectVSplatUimm2(N, Result[NextRes+0].first);
  case 30:
    Result.resize(NextRes+1);
  return selectVSplatUimm1(N, Result[NextRes+0].first);
  case 31:
    Result.resize(NextRes+1);
  return selectVSplatMaskL(N, Result[NextRes+0].first);
  case 32:
    Result.resize(NextRes+1);
  return selectVSplatMaskL(N, Result[NextRes+0].first);
  case 33:
    Result.resize(NextRes+1);
  return selectVSplatMaskL(N, Result[NextRes+0].first);
  case 34:
    Result.resize(NextRes+1);
  return selectVSplatMaskL(N, Result[NextRes+0].first);
  case 35:
    Result.resize(NextRes+1);
  return selectVSplatMaskR(N, Result[NextRes+0].first);
  case 36:
    Result.resize(NextRes+1);
  return selectVSplatMaskR(N, Result[NextRes+0].first);
  case 37:
    Result.resize(NextRes+1);
  return selectVSplatMaskR(N, Result[NextRes+0].first);
  case 38:
    Result.resize(NextRes+1);
  return selectVSplatMaskR(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: {  // Log2LO
    ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());

  return getImm(N, Log2_64((unsigned) N->getZExtValue()));

  }
  case 1: {  // Log2HI
    ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());

  return getImm(N, Log2_64((unsigned) (N->getZExtValue() >> 32)));

  }
  case 2: {  // Plus1
    ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
 return getImm(N, N->getSExtValue() + 1); 
  }
  case 3: {  // LO16
    ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());

  return getImm(N, N->getZExtValue() & 0xFFFF);

  }
  case 4: {  // immZExt5To31
    ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());

  return getImm(N, 31 - N->getZExtValue());

  }
  case 5: {  // HI16
    ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());

  return getImm(N, (N->getZExtValue() >> 16) & 0xFFFF);

  }
  }
}
#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
