/*===- 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 /*177 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, 8, // 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, 9, // 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, 10, // Predicate_sextload
/*  1030*/        OPC_Scope, 16, /*->1048*/ // 2 children in Scope
/*  1032*/          OPC_CheckPredicate, 8, // 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, 9, // 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, 11, // 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, 10, // Predicate_sextload
/*  1086*/        OPC_CheckPredicate, 9, // 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, 8, // 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, 10, // Predicate_sextload
/*  1137*/        OPC_CheckPredicate, 9, // 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, 11, // 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, 10, // Predicate_sextload
/*  1174*/        OPC_CheckPredicate, 8, // 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, 8, // 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, 10, // Predicate_sextload
/*  1216*/        OPC_CheckPredicate, 9, // 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, 9, // 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, 11, // 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, 12, // Predicate_extload
/*  1340*/        OPC_CheckType, MVT::i32,
/*  1342*/        OPC_Scope, 16, /*->1360*/ // 3 children in Scope
/*  1344*/          OPC_CheckPredicate, 13, // 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, 8, // 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, 9, // 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, 10, // Predicate_sextload
/*  1398*/        OPC_CheckPredicate, 8, // 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, 8, // 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, 10, // Predicate_sextload
/*  1440*/        OPC_CheckPredicate, 9, // 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, 9, // 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, 10, // Predicate_sextload
/*  1482*/        OPC_CheckPredicate, 14, // 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, 14, // 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, 11, // 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, 12, // Predicate_extload
/*  1543*/        OPC_CheckType, MVT::i64,
/*  1545*/        OPC_Scope, 16, /*->1563*/ // 4 children in Scope
/*  1547*/          OPC_CheckPredicate, 13, // 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, 8, // 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, 9, // 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, 14, // 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, 10, // Predicate_sextload
/*  1618*/        OPC_CheckPredicate, 8, // 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, 8, // 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, 10, // Predicate_sextload
/*  1660*/        OPC_CheckPredicate, 9, // 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, 9, // 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, 11, // 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, 12, // Predicate_extload
/*  1721*/        OPC_CheckType, MVT::i32,
/*  1723*/        OPC_Scope, 16, /*->1741*/ // 2 children in Scope
/*  1725*/          OPC_CheckPredicate, 8, // 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, 9, // 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, 10, // Predicate_sextload
/*  1762*/        OPC_CheckPredicate, 8, // 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, 8, // 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, 10, // Predicate_sextload
/*  1804*/        OPC_CheckPredicate, 9, // 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, 9, // 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, 14, // 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, 11, // 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, 12, // Predicate_extload
/*  1901*/        OPC_CheckType, MVT::i32,
/*  1903*/        OPC_Scope, 16, /*->1921*/ // 3 children in Scope
/*  1905*/          OPC_CheckPredicate, 13, // 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, 8, // 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, 9, // 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, 11, // 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, 11, // 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, 11, // 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*/ 104|128,23/*3048*/, TARGET_VAL(ISD::BRCOND),// ->5517
/*  2469*/    OPC_RecordNode, // #0 = 'brcond' chained node
/*  2470*/    OPC_Scope, 8|128,23/*2952*/, /*->5425*/ // 2 children in Scope
/*  2473*/      OPC_MoveChild1,
/*  2474*/      OPC_CheckOpcode, TARGET_VAL(ISD::SETCC),
/*  2477*/      OPC_Scope, 85|128,4/*597*/, /*->3077*/ // 2 children in Scope
/*  2480*/        OPC_MoveChild0,
/*  2481*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/*  2484*/        OPC_Scope, 31|128,1/*159*/, /*->2646*/ // 3 children in Scope
/*  2487*/          OPC_RecordChild0, // #1 = $rs
/*  2488*/          OPC_MoveChild1,
/*  2489*/          OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/*  2492*/          OPC_Scope, 73, /*->2567*/ // 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, 15, // 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_MoveChild2,
/*  2513*/            OPC_Scope, 25, /*->2540*/ // 2 children in Scope
/*  2515*/              OPC_CheckCondCode, ISD::SETEQ,
/*  2517*/              OPC_MoveParent,
/*  2518*/              OPC_CheckType, MVT::i32,
/*  2520*/              OPC_MoveParent,
/*  2521*/              OPC_RecordChild2, // #3 = $offset
/*  2522*/              OPC_MoveChild2,
/*  2523*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2526*/              OPC_MoveParent,
/*  2527*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2529*/              OPC_EmitMergeInputChains1_0,
/*  2530*/              OPC_EmitConvertToTarget, 2,
/*  2532*/              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)
/*  2540*/            /*Scope*/ 25, /*->2566*/
/*  2541*/              OPC_CheckCondCode, ISD::SETNE,
/*  2543*/              OPC_MoveParent,
/*  2544*/              OPC_CheckType, MVT::i32,
/*  2546*/              OPC_MoveParent,
/*  2547*/              OPC_RecordChild2, // #3 = $offset
/*  2548*/              OPC_MoveChild2,
/*  2549*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2552*/              OPC_MoveParent,
/*  2553*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2555*/              OPC_EmitMergeInputChains1_0,
/*  2556*/              OPC_EmitConvertToTarget, 2,
/*  2558*/              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)
/*  2566*/            0, /*End of Scope*/
/*  2567*/          /*Scope*/ 77, /*->2645*/
/*  2568*/            OPC_CheckChild0Integer, 0|128,0|128,0|128,0|128,16/*4294967296*/, 
/*  2574*/            OPC_RecordChild1, // #2 = $p
/*  2575*/            OPC_MoveChild1,
/*  2576*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  2579*/            OPC_CheckPredicate, 15, // Predicate_immZExt5_64
/*  2581*/            OPC_CheckType, MVT::i64,
/*  2583*/            OPC_MoveParent,
/*  2584*/            OPC_MoveParent,
/*  2585*/            OPC_CheckType, MVT::i64,
/*  2587*/            OPC_MoveParent,
/*  2588*/            OPC_CheckChild1Integer, 0, 
/*  2590*/            OPC_MoveChild2,
/*  2591*/            OPC_Scope, 25, /*->2618*/ // 2 children in Scope
/*  2593*/              OPC_CheckCondCode, ISD::SETEQ,
/*  2595*/              OPC_MoveParent,
/*  2596*/              OPC_CheckType, MVT::i32,
/*  2598*/              OPC_MoveParent,
/*  2599*/              OPC_RecordChild2, // #3 = $offset
/*  2600*/              OPC_MoveChild2,
/*  2601*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2604*/              OPC_MoveParent,
/*  2605*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2607*/              OPC_EmitMergeInputChains1_0,
/*  2608*/              OPC_EmitConvertToTarget, 2,
/*  2610*/              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)
/*  2618*/            /*Scope*/ 25, /*->2644*/
/*  2619*/              OPC_CheckCondCode, ISD::SETNE,
/*  2621*/              OPC_MoveParent,
/*  2622*/              OPC_CheckType, MVT::i32,
/*  2624*/              OPC_MoveParent,
/*  2625*/              OPC_RecordChild2, // #3 = $offset
/*  2626*/              OPC_MoveChild2,
/*  2627*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2630*/              OPC_MoveParent,
/*  2631*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2633*/              OPC_EmitMergeInputChains1_0,
/*  2634*/              OPC_EmitConvertToTarget, 2,
/*  2636*/              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)
/*  2644*/            0, /*End of Scope*/
/*  2645*/          0, /*End of Scope*/
/*  2646*/        /*Scope*/ 32|128,1/*160*/, /*->2808*/
/*  2648*/          OPC_MoveChild0,
/*  2649*/          OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/*  2652*/          OPC_Scope, 74, /*->2728*/ // 2 children in Scope
/*  2654*/            OPC_CheckChild0Integer, 1, 
/*  2656*/            OPC_RecordChild1, // #1 = $p
/*  2657*/            OPC_MoveChild1,
/*  2658*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  2661*/            OPC_CheckPredicate, 15, // Predicate_immZExt5_64
/*  2663*/            OPC_CheckType, MVT::i64,
/*  2665*/            OPC_MoveParent,
/*  2666*/            OPC_MoveParent,
/*  2667*/            OPC_RecordChild1, // #2 = $rs
/*  2668*/            OPC_CheckType, MVT::i64,
/*  2670*/            OPC_MoveParent,
/*  2671*/            OPC_CheckChild1Integer, 0, 
/*  2673*/            OPC_MoveChild2,
/*  2674*/            OPC_Scope, 25, /*->2701*/ // 2 children in Scope
/*  2676*/              OPC_CheckCondCode, ISD::SETEQ,
/*  2678*/              OPC_MoveParent,
/*  2679*/              OPC_CheckType, MVT::i32,
/*  2681*/              OPC_MoveParent,
/*  2682*/              OPC_RecordChild2, // #3 = $offset
/*  2683*/              OPC_MoveChild2,
/*  2684*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2687*/              OPC_MoveParent,
/*  2688*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2690*/              OPC_EmitMergeInputChains1_0,
/*  2691*/              OPC_EmitConvertToTarget, 1,
/*  2693*/              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)
/*  2701*/            /*Scope*/ 25, /*->2727*/
/*  2702*/              OPC_CheckCondCode, ISD::SETNE,
/*  2704*/              OPC_MoveParent,
/*  2705*/              OPC_CheckType, MVT::i32,
/*  2707*/              OPC_MoveParent,
/*  2708*/              OPC_RecordChild2, // #3 = $offset
/*  2709*/              OPC_MoveChild2,
/*  2710*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2713*/              OPC_MoveParent,
/*  2714*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2716*/              OPC_EmitMergeInputChains1_0,
/*  2717*/              OPC_EmitConvertToTarget, 1,
/*  2719*/              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)
/*  2727*/            0, /*End of Scope*/
/*  2728*/          /*Scope*/ 78, /*->2807*/
/*  2729*/            OPC_CheckChild0Integer, 0|128,0|128,0|128,0|128,16/*4294967296*/, 
/*  2735*/            OPC_RecordChild1, // #1 = $p
/*  2736*/            OPC_MoveChild1,
/*  2737*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  2740*/            OPC_CheckPredicate, 15, // Predicate_immZExt5_64
/*  2742*/            OPC_CheckType, MVT::i64,
/*  2744*/            OPC_MoveParent,
/*  2745*/            OPC_MoveParent,
/*  2746*/            OPC_RecordChild1, // #2 = $rs
/*  2747*/            OPC_CheckType, MVT::i64,
/*  2749*/            OPC_MoveParent,
/*  2750*/            OPC_CheckChild1Integer, 0, 
/*  2752*/            OPC_MoveChild2,
/*  2753*/            OPC_Scope, 25, /*->2780*/ // 2 children in Scope
/*  2755*/              OPC_CheckCondCode, ISD::SETEQ,
/*  2757*/              OPC_MoveParent,
/*  2758*/              OPC_CheckType, MVT::i32,
/*  2760*/              OPC_MoveParent,
/*  2761*/              OPC_RecordChild2, // #3 = $offset
/*  2762*/              OPC_MoveChild2,
/*  2763*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2766*/              OPC_MoveParent,
/*  2767*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2769*/              OPC_EmitMergeInputChains1_0,
/*  2770*/              OPC_EmitConvertToTarget, 1,
/*  2772*/              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)
/*  2780*/            /*Scope*/ 25, /*->2806*/
/*  2781*/              OPC_CheckCondCode, ISD::SETNE,
/*  2783*/              OPC_MoveParent,
/*  2784*/              OPC_CheckType, MVT::i32,
/*  2786*/              OPC_MoveParent,
/*  2787*/              OPC_RecordChild2, // #3 = $offset
/*  2788*/              OPC_MoveChild2,
/*  2789*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2792*/              OPC_MoveParent,
/*  2793*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/*  2795*/              OPC_EmitMergeInputChains1_0,
/*  2796*/              OPC_EmitConvertToTarget, 1,
/*  2798*/              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)
/*  2806*/            0, /*End of Scope*/
/*  2807*/          0, /*End of Scope*/
/*  2808*/        /*Scope*/ 10|128,2/*266*/, /*->3076*/
/*  2810*/          OPC_RecordChild0, // #1 = $lhs
/*  2811*/          OPC_RecordChild1, // #2 = $mask
/*  2812*/          OPC_MoveChild1,
/*  2813*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  2816*/          OPC_Scope, 37, /*->2855*/ // 5 children in Scope
/*  2818*/            OPC_CheckPredicate, 16, // Predicate_PowerOf2LO
/*  2820*/            OPC_MoveParent,
/*  2821*/            OPC_CheckType, MVT::i64,
/*  2823*/            OPC_MoveParent,
/*  2824*/            OPC_CheckChild1Integer, 0, 
/*  2826*/            OPC_MoveChild2,
/*  2827*/            OPC_CheckCondCode, ISD::SETEQ,
/*  2829*/            OPC_MoveParent,
/*  2830*/            OPC_CheckType, MVT::i32,
/*  2832*/            OPC_MoveParent,
/*  2833*/            OPC_RecordChild2, // #3 = $dst
/*  2834*/            OPC_MoveChild2,
/*  2835*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2838*/            OPC_MoveParent,
/*  2839*/            OPC_CheckPatternPredicate, 30, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding())
/*  2841*/            OPC_EmitMergeInputChains1_0,
/*  2842*/            OPC_EmitConvertToTarget, 2,
/*  2844*/            OPC_EmitNodeXForm, 0, 4, // Log2LO
/*  2847*/            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)
/*  2855*/          /*Scope*/ 37, /*->2893*/
/*  2856*/            OPC_CheckPredicate, 17, // Predicate_PowerOf2HI
/*  2858*/            OPC_MoveParent,
/*  2859*/            OPC_CheckType, MVT::i64,
/*  2861*/            OPC_MoveParent,
/*  2862*/            OPC_CheckChild1Integer, 0, 
/*  2864*/            OPC_MoveChild2,
/*  2865*/            OPC_CheckCondCode, ISD::SETEQ,
/*  2867*/            OPC_MoveParent,
/*  2868*/            OPC_CheckType, MVT::i32,
/*  2870*/            OPC_MoveParent,
/*  2871*/            OPC_RecordChild2, // #3 = $dst
/*  2872*/            OPC_MoveChild2,
/*  2873*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2876*/            OPC_MoveParent,
/*  2877*/            OPC_CheckPatternPredicate, 30, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding())
/*  2879*/            OPC_EmitMergeInputChains1_0,
/*  2880*/            OPC_EmitConvertToTarget, 2,
/*  2882*/            OPC_EmitNodeXForm, 1, 4, // Log2HI
/*  2885*/            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)
/*  2893*/          /*Scope*/ 37, /*->2931*/
/*  2894*/            OPC_CheckPredicate, 16, // Predicate_PowerOf2LO
/*  2896*/            OPC_MoveParent,
/*  2897*/            OPC_CheckType, MVT::i64,
/*  2899*/            OPC_MoveParent,
/*  2900*/            OPC_CheckChild1Integer, 0, 
/*  2902*/            OPC_MoveChild2,
/*  2903*/            OPC_CheckCondCode, ISD::SETNE,
/*  2905*/            OPC_MoveParent,
/*  2906*/            OPC_CheckType, MVT::i32,
/*  2908*/            OPC_MoveParent,
/*  2909*/            OPC_RecordChild2, // #3 = $dst
/*  2910*/            OPC_MoveChild2,
/*  2911*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2914*/            OPC_MoveParent,
/*  2915*/            OPC_CheckPatternPredicate, 30, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding())
/*  2917*/            OPC_EmitMergeInputChains1_0,
/*  2918*/            OPC_EmitConvertToTarget, 2,
/*  2920*/            OPC_EmitNodeXForm, 0, 4, // Log2LO
/*  2923*/            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)
/*  2931*/          /*Scope*/ 37, /*->2969*/
/*  2932*/            OPC_CheckPredicate, 17, // Predicate_PowerOf2HI
/*  2934*/            OPC_MoveParent,
/*  2935*/            OPC_CheckType, MVT::i64,
/*  2937*/            OPC_MoveParent,
/*  2938*/            OPC_CheckChild1Integer, 0, 
/*  2940*/            OPC_MoveChild2,
/*  2941*/            OPC_CheckCondCode, ISD::SETNE,
/*  2943*/            OPC_MoveParent,
/*  2944*/            OPC_CheckType, MVT::i32,
/*  2946*/            OPC_MoveParent,
/*  2947*/            OPC_RecordChild2, // #3 = $dst
/*  2948*/            OPC_MoveChild2,
/*  2949*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2952*/            OPC_MoveParent,
/*  2953*/            OPC_CheckPatternPredicate, 30, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding())
/*  2955*/            OPC_EmitMergeInputChains1_0,
/*  2956*/            OPC_EmitConvertToTarget, 2,
/*  2958*/            OPC_EmitNodeXForm, 1, 4, // Log2HI
/*  2961*/            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)
/*  2969*/          /*Scope*/ 105, /*->3075*/
/*  2970*/            OPC_CheckPredicate, 18, // Predicate_PowerOf2LO_i32
/*  2972*/            OPC_MoveParent,
/*  2973*/            OPC_CheckType, MVT::i32,
/*  2975*/            OPC_MoveParent,
/*  2976*/            OPC_CheckChild1Integer, 0, 
/*  2978*/            OPC_MoveChild2,
/*  2979*/            OPC_Scope, 46, /*->3027*/ // 2 children in Scope
/*  2981*/              OPC_CheckCondCode, ISD::SETEQ,
/*  2983*/              OPC_MoveParent,
/*  2984*/              OPC_CheckType, MVT::i32,
/*  2986*/              OPC_MoveParent,
/*  2987*/              OPC_RecordChild2, // #3 = $dst
/*  2988*/              OPC_MoveChild2,
/*  2989*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  2992*/              OPC_MoveParent,
/*  2993*/              OPC_CheckPatternPredicate, 30, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding())
/*  2995*/              OPC_EmitMergeInputChains1_0,
/*  2996*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                            MVT::i64, 0/*#Ops*/,  // Results = #4
/*  3002*/              OPC_EmitInteger, MVT::i32, Mips::sub_32,
/*  3005*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                            MVT::i64, 3/*#Ops*/, 4, 1, 5,  // Results = #6
/*  3014*/              OPC_EmitConvertToTarget, 2,
/*  3016*/              OPC_EmitNodeXForm, 0, 7, // Log2LO
/*  3019*/              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)
/*  3027*/            /*Scope*/ 46, /*->3074*/
/*  3028*/              OPC_CheckCondCode, ISD::SETNE,
/*  3030*/              OPC_MoveParent,
/*  3031*/              OPC_CheckType, MVT::i32,
/*  3033*/              OPC_MoveParent,
/*  3034*/              OPC_RecordChild2, // #3 = $dst
/*  3035*/              OPC_MoveChild2,
/*  3036*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3039*/              OPC_MoveParent,
/*  3040*/              OPC_CheckPatternPredicate, 30, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding())
/*  3042*/              OPC_EmitMergeInputChains1_0,
/*  3043*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                            MVT::i64, 0/*#Ops*/,  // Results = #4
/*  3049*/              OPC_EmitInteger, MVT::i32, Mips::sub_32,
/*  3052*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                            MVT::i64, 3/*#Ops*/, 4, 1, 5,  // Results = #6
/*  3061*/              OPC_EmitConvertToTarget, 2,
/*  3063*/              OPC_EmitNodeXForm, 0, 7, // Log2LO
/*  3066*/              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)
/*  3074*/            0, /*End of Scope*/
/*  3075*/          0, /*End of Scope*/
/*  3076*/        0, /*End of Scope*/
/*  3077*/      /*Scope*/ 41|128,18/*2345*/, /*->5424*/
/*  3079*/        OPC_RecordChild0, // #1 = $rs
/*  3080*/        OPC_Scope, 80|128,13/*1744*/, /*->4827*/ // 2 children in Scope
/*  3083*/          OPC_CheckChild0Type, MVT::i32,
/*  3085*/          OPC_Scope, 124|128,2/*380*/, /*->3468*/ // 4 children in Scope
/*  3088*/            OPC_CheckChild1Integer, 0, 
/*  3090*/            OPC_MoveChild2,
/*  3091*/            OPC_Scope, 22, /*->3115*/ // 15 children in Scope
/*  3093*/              OPC_CheckCondCode, ISD::SETGE,
/*  3095*/              OPC_MoveParent,
/*  3096*/              OPC_CheckType, MVT::i32,
/*  3098*/              OPC_MoveParent,
/*  3099*/              OPC_RecordChild2, // #2 = $offset
/*  3100*/              OPC_MoveChild2,
/*  3101*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3104*/              OPC_MoveParent,
/*  3105*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3107*/              OPC_EmitMergeInputChains1_0,
/*  3108*/              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)
/*  3115*/            /*Scope*/ 22, /*->3138*/
/*  3116*/              OPC_CheckCondCode, ISD::SETGT,
/*  3118*/              OPC_MoveParent,
/*  3119*/              OPC_CheckType, MVT::i32,
/*  3121*/              OPC_MoveParent,
/*  3122*/              OPC_RecordChild2, // #2 = $offset
/*  3123*/              OPC_MoveChild2,
/*  3124*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3127*/              OPC_MoveParent,
/*  3128*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3130*/              OPC_EmitMergeInputChains1_0,
/*  3131*/              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)
/*  3138*/            /*Scope*/ 22, /*->3161*/
/*  3139*/              OPC_CheckCondCode, ISD::SETLE,
/*  3141*/              OPC_MoveParent,
/*  3142*/              OPC_CheckType, MVT::i32,
/*  3144*/              OPC_MoveParent,
/*  3145*/              OPC_RecordChild2, // #2 = $offset
/*  3146*/              OPC_MoveChild2,
/*  3147*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3150*/              OPC_MoveParent,
/*  3151*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3153*/              OPC_EmitMergeInputChains1_0,
/*  3154*/              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)
/*  3161*/            /*Scope*/ 22, /*->3184*/
/*  3162*/              OPC_CheckCondCode, ISD::SETLT,
/*  3164*/              OPC_MoveParent,
/*  3165*/              OPC_CheckType, MVT::i32,
/*  3167*/              OPC_MoveParent,
/*  3168*/              OPC_RecordChild2, // #2 = $offset
/*  3169*/              OPC_MoveChild2,
/*  3170*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3173*/              OPC_MoveParent,
/*  3174*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3176*/              OPC_EmitMergeInputChains1_0,
/*  3177*/              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)
/*  3184*/            /*Scope*/ 26, /*->3211*/
/*  3185*/              OPC_CheckCondCode, ISD::SETNE,
/*  3187*/              OPC_MoveParent,
/*  3188*/              OPC_CheckType, MVT::i32,
/*  3190*/              OPC_MoveParent,
/*  3191*/              OPC_RecordChild2, // #2 = $dst
/*  3192*/              OPC_MoveChild2,
/*  3193*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3196*/              OPC_MoveParent,
/*  3197*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3199*/              OPC_EmitMergeInputChains1_0,
/*  3200*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3203*/              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)
/*  3211*/            /*Scope*/ 40, /*->3252*/
/*  3212*/              OPC_CheckCondCode, ISD::SETEQ,
/*  3214*/              OPC_MoveParent,
/*  3215*/              OPC_CheckType, MVT::i32,
/*  3217*/              OPC_MoveParent,
/*  3218*/              OPC_RecordChild2, // #2 = $dst
/*  3219*/              OPC_MoveChild2,
/*  3220*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3223*/              OPC_MoveParent,
/*  3224*/              OPC_Scope, 14, /*->3240*/ // 2 children in Scope
/*  3226*/                OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3228*/                OPC_EmitMergeInputChains1_0,
/*  3229*/                OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3232*/                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)
/*  3240*/              /*Scope*/ 10, /*->3251*/
/*  3241*/                OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  3243*/                OPC_EmitMergeInputChains1_0,
/*  3244*/                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)
/*  3251*/              0, /*End of Scope*/
/*  3252*/            /*Scope*/ 22, /*->3275*/
/*  3253*/              OPC_CheckCondCode, ISD::SETNE,
/*  3255*/              OPC_MoveParent,
/*  3256*/              OPC_CheckType, MVT::i32,
/*  3258*/              OPC_MoveParent,
/*  3259*/              OPC_RecordChild2, // #2 = $targ16
/*  3260*/              OPC_MoveChild2,
/*  3261*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3264*/              OPC_MoveParent,
/*  3265*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  3267*/              OPC_EmitMergeInputChains1_0,
/*  3268*/              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)
/*  3275*/            /*Scope*/ 22, /*->3298*/
/*  3276*/              OPC_CheckCondCode, ISD::SETGE,
/*  3278*/              OPC_MoveParent,
/*  3279*/              OPC_CheckType, MVT::i32,
/*  3281*/              OPC_MoveParent,
/*  3282*/              OPC_RecordChild2, // #2 = $offset
/*  3283*/              OPC_MoveChild2,
/*  3284*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3287*/              OPC_MoveParent,
/*  3288*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3290*/              OPC_EmitMergeInputChains1_0,
/*  3291*/              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)
/*  3298*/            /*Scope*/ 22, /*->3321*/
/*  3299*/              OPC_CheckCondCode, ISD::SETGT,
/*  3301*/              OPC_MoveParent,
/*  3302*/              OPC_CheckType, MVT::i32,
/*  3304*/              OPC_MoveParent,
/*  3305*/              OPC_RecordChild2, // #2 = $offset
/*  3306*/              OPC_MoveChild2,
/*  3307*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3310*/              OPC_MoveParent,
/*  3311*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3313*/              OPC_EmitMergeInputChains1_0,
/*  3314*/              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)
/*  3321*/            /*Scope*/ 22, /*->3344*/
/*  3322*/              OPC_CheckCondCode, ISD::SETLE,
/*  3324*/              OPC_MoveParent,
/*  3325*/              OPC_CheckType, MVT::i32,
/*  3327*/              OPC_MoveParent,
/*  3328*/              OPC_RecordChild2, // #2 = $offset
/*  3329*/              OPC_MoveChild2,
/*  3330*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3333*/              OPC_MoveParent,
/*  3334*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3336*/              OPC_EmitMergeInputChains1_0,
/*  3337*/              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)
/*  3344*/            /*Scope*/ 22, /*->3367*/
/*  3345*/              OPC_CheckCondCode, ISD::SETLT,
/*  3347*/              OPC_MoveParent,
/*  3348*/              OPC_CheckType, MVT::i32,
/*  3350*/              OPC_MoveParent,
/*  3351*/              OPC_RecordChild2, // #2 = $offset
/*  3352*/              OPC_MoveChild2,
/*  3353*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3356*/              OPC_MoveParent,
/*  3357*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3359*/              OPC_EmitMergeInputChains1_0,
/*  3360*/              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)
/*  3367*/            /*Scope*/ 26, /*->3394*/
/*  3368*/              OPC_CheckCondCode, ISD::SETNE,
/*  3370*/              OPC_MoveParent,
/*  3371*/              OPC_CheckType, MVT::i32,
/*  3373*/              OPC_MoveParent,
/*  3374*/              OPC_RecordChild2, // #2 = $dst
/*  3375*/              OPC_MoveChild2,
/*  3376*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3379*/              OPC_MoveParent,
/*  3380*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3382*/              OPC_EmitMergeInputChains1_0,
/*  3383*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3386*/              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)
/*  3394*/            /*Scope*/ 26, /*->3421*/
/*  3395*/              OPC_CheckCondCode, ISD::SETEQ,
/*  3397*/              OPC_MoveParent,
/*  3398*/              OPC_CheckType, MVT::i32,
/*  3400*/              OPC_MoveParent,
/*  3401*/              OPC_RecordChild2, // #2 = $dst
/*  3402*/              OPC_MoveChild2,
/*  3403*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3406*/              OPC_MoveParent,
/*  3407*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3409*/              OPC_EmitMergeInputChains1_0,
/*  3410*/              OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3413*/              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)
/*  3421*/            /*Scope*/ 22, /*->3444*/
/*  3422*/              OPC_CheckCondCode, ISD::SETNE,
/*  3424*/              OPC_MoveParent,
/*  3425*/              OPC_CheckType, MVT::i32,
/*  3427*/              OPC_MoveParent,
/*  3428*/              OPC_RecordChild2, // #2 = $dst
/*  3429*/              OPC_MoveChild2,
/*  3430*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3433*/              OPC_MoveParent,
/*  3434*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  3436*/              OPC_EmitMergeInputChains1_0,
/*  3437*/              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)
/*  3444*/            /*Scope*/ 22, /*->3467*/
/*  3445*/              OPC_CheckCondCode, ISD::SETEQ,
/*  3447*/              OPC_MoveParent,
/*  3448*/              OPC_CheckType, MVT::i32,
/*  3450*/              OPC_MoveParent,
/*  3451*/              OPC_RecordChild2, // #2 = $dst
/*  3452*/              OPC_MoveChild2,
/*  3453*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3456*/              OPC_MoveParent,
/*  3457*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  3459*/              OPC_EmitMergeInputChains1_0,
/*  3460*/              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)
/*  3467*/            0, /*End of Scope*/
/*  3468*/          /*Scope*/ 39, /*->3508*/
/*  3469*/            OPC_CheckChild1Integer, 1, 
/*  3471*/            OPC_MoveChild2,
/*  3472*/            OPC_CheckCondCode, ISD::SETLT,
/*  3474*/            OPC_MoveParent,
/*  3475*/            OPC_CheckType, MVT::i32,
/*  3477*/            OPC_MoveParent,
/*  3478*/            OPC_RecordChild2, // #2 = $dst
/*  3479*/            OPC_MoveChild2,
/*  3480*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3483*/            OPC_MoveParent,
/*  3484*/            OPC_Scope, 10, /*->3496*/ // 2 children in Scope
/*  3486*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3488*/              OPC_EmitMergeInputChains1_0,
/*  3489*/              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)
/*  3496*/            /*Scope*/ 10, /*->3507*/
/*  3497*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3499*/              OPC_EmitMergeInputChains1_0,
/*  3500*/              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)
/*  3507*/            0, /*End of Scope*/
/*  3508*/          /*Scope*/ 48, /*->3557*/
/*  3509*/            OPC_CheckChild1Integer, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/*  3520*/            OPC_MoveChild2,
/*  3521*/            OPC_CheckCondCode, ISD::SETGT,
/*  3523*/            OPC_MoveParent,
/*  3524*/            OPC_CheckType, MVT::i32,
/*  3526*/            OPC_MoveParent,
/*  3527*/            OPC_RecordChild2, // #2 = $dst
/*  3528*/            OPC_MoveChild2,
/*  3529*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3532*/            OPC_MoveParent,
/*  3533*/            OPC_Scope, 10, /*->3545*/ // 2 children in Scope
/*  3535*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3537*/              OPC_EmitMergeInputChains1_0,
/*  3538*/              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)
/*  3545*/            /*Scope*/ 10, /*->3556*/
/*  3546*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3548*/              OPC_EmitMergeInputChains1_0,
/*  3549*/              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)
/*  3556*/            0, /*End of Scope*/
/*  3557*/          /*Scope*/ 115|128,9/*1267*/, /*->4826*/
/*  3559*/            OPC_RecordChild1, // #2 = $rhs
/*  3560*/            OPC_Scope, 101|128,4/*613*/, /*->4176*/ // 2 children in Scope
/*  3563*/              OPC_MoveChild1,
/*  3564*/              OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  3567*/              OPC_Scope, 80, /*->3649*/ // 9 children in Scope
/*  3569*/                OPC_CheckPredicate, 19, // Predicate_immSExt16
/*  3571*/                OPC_MoveParent,
/*  3572*/                OPC_MoveChild2,
/*  3573*/                OPC_Scope, 36, /*->3611*/ // 2 children in Scope
/*  3575*/                  OPC_CheckCondCode, ISD::SETGE,
/*  3577*/                  OPC_MoveParent,
/*  3578*/                  OPC_CheckType, MVT::i32,
/*  3580*/                  OPC_MoveParent,
/*  3581*/                  OPC_RecordChild2, // #3 = $dst
/*  3582*/                  OPC_MoveChild2,
/*  3583*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3586*/                  OPC_MoveParent,
/*  3587*/                  OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3589*/                  OPC_EmitMergeInputChains1_0,
/*  3590*/                  OPC_EmitConvertToTarget, 2,
/*  3592*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  3600*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3603*/                  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)
/*  3611*/                /*Scope*/ 36, /*->3648*/
/*  3612*/                  OPC_CheckCondCode, ISD::SETUGE,
/*  3614*/                  OPC_MoveParent,
/*  3615*/                  OPC_CheckType, MVT::i32,
/*  3617*/                  OPC_MoveParent,
/*  3618*/                  OPC_RecordChild2, // #3 = $dst
/*  3619*/                  OPC_MoveChild2,
/*  3620*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3623*/                  OPC_MoveParent,
/*  3624*/                  OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3626*/                  OPC_EmitMergeInputChains1_0,
/*  3627*/                  OPC_EmitConvertToTarget, 2,
/*  3629*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  3637*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3640*/                  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)
/*  3648*/                0, /*End of Scope*/
/*  3649*/              /*Scope*/ 86, /*->3736*/
/*  3650*/                OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/*  3652*/                OPC_MoveParent,
/*  3653*/                OPC_MoveChild2,
/*  3654*/                OPC_Scope, 39, /*->3695*/ // 2 children in Scope
/*  3656*/                  OPC_CheckCondCode, ISD::SETGT,
/*  3658*/                  OPC_MoveParent,
/*  3659*/                  OPC_CheckType, MVT::i32,
/*  3661*/                  OPC_MoveParent,
/*  3662*/                  OPC_RecordChild2, // #3 = $dst
/*  3663*/                  OPC_MoveChild2,
/*  3664*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3667*/                  OPC_MoveParent,
/*  3668*/                  OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3670*/                  OPC_EmitMergeInputChains1_0,
/*  3671*/                  OPC_EmitConvertToTarget, 2,
/*  3673*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  3676*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  3684*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3687*/                  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)
/*  3695*/                /*Scope*/ 39, /*->3735*/
/*  3696*/                  OPC_CheckCondCode, ISD::SETUGT,
/*  3698*/                  OPC_MoveParent,
/*  3699*/                  OPC_CheckType, MVT::i32,
/*  3701*/                  OPC_MoveParent,
/*  3702*/                  OPC_RecordChild2, // #3 = $dst
/*  3703*/                  OPC_MoveChild2,
/*  3704*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3707*/                  OPC_MoveParent,
/*  3708*/                  OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  3710*/                  OPC_EmitMergeInputChains1_0,
/*  3711*/                  OPC_EmitConvertToTarget, 2,
/*  3713*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  3716*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  3724*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3727*/                  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)
/*  3735*/                0, /*End of Scope*/
/*  3736*/              /*Scope*/ 80, /*->3817*/
/*  3737*/                OPC_CheckPredicate, 19, // Predicate_immSExt16
/*  3739*/                OPC_MoveParent,
/*  3740*/                OPC_MoveChild2,
/*  3741*/                OPC_Scope, 36, /*->3779*/ // 2 children in Scope
/*  3743*/                  OPC_CheckCondCode, ISD::SETGE,
/*  3745*/                  OPC_MoveParent,
/*  3746*/                  OPC_CheckType, MVT::i32,
/*  3748*/                  OPC_MoveParent,
/*  3749*/                  OPC_RecordChild2, // #3 = $dst
/*  3750*/                  OPC_MoveChild2,
/*  3751*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3754*/                  OPC_MoveParent,
/*  3755*/                  OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3757*/                  OPC_EmitMergeInputChains1_0,
/*  3758*/                  OPC_EmitConvertToTarget, 2,
/*  3760*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  3768*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3771*/                  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)
/*  3779*/                /*Scope*/ 36, /*->3816*/
/*  3780*/                  OPC_CheckCondCode, ISD::SETUGE,
/*  3782*/                  OPC_MoveParent,
/*  3783*/                  OPC_CheckType, MVT::i32,
/*  3785*/                  OPC_MoveParent,
/*  3786*/                  OPC_RecordChild2, // #3 = $dst
/*  3787*/                  OPC_MoveChild2,
/*  3788*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3791*/                  OPC_MoveParent,
/*  3792*/                  OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3794*/                  OPC_EmitMergeInputChains1_0,
/*  3795*/                  OPC_EmitConvertToTarget, 2,
/*  3797*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  3805*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3808*/                  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)
/*  3816*/                0, /*End of Scope*/
/*  3817*/              /*Scope*/ 86, /*->3904*/
/*  3818*/                OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/*  3820*/                OPC_MoveParent,
/*  3821*/                OPC_MoveChild2,
/*  3822*/                OPC_Scope, 39, /*->3863*/ // 2 children in Scope
/*  3824*/                  OPC_CheckCondCode, ISD::SETGT,
/*  3826*/                  OPC_MoveParent,
/*  3827*/                  OPC_CheckType, MVT::i32,
/*  3829*/                  OPC_MoveParent,
/*  3830*/                  OPC_RecordChild2, // #3 = $dst
/*  3831*/                  OPC_MoveChild2,
/*  3832*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3835*/                  OPC_MoveParent,
/*  3836*/                  OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3838*/                  OPC_EmitMergeInputChains1_0,
/*  3839*/                  OPC_EmitConvertToTarget, 2,
/*  3841*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  3844*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  3852*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3855*/                  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)
/*  3863*/                /*Scope*/ 39, /*->3903*/
/*  3864*/                  OPC_CheckCondCode, ISD::SETUGT,
/*  3866*/                  OPC_MoveParent,
/*  3867*/                  OPC_CheckType, MVT::i32,
/*  3869*/                  OPC_MoveParent,
/*  3870*/                  OPC_RecordChild2, // #3 = $dst
/*  3871*/                  OPC_MoveChild2,
/*  3872*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3875*/                  OPC_MoveParent,
/*  3876*/                  OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  3878*/                  OPC_EmitMergeInputChains1_0,
/*  3879*/                  OPC_EmitConvertToTarget, 2,
/*  3881*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  3884*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  3892*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  3895*/                  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)
/*  3903*/                0, /*End of Scope*/
/*  3904*/              /*Scope*/ 72, /*->3977*/
/*  3905*/                OPC_CheckPredicate, 19, // Predicate_immSExt16
/*  3907*/                OPC_MoveParent,
/*  3908*/                OPC_MoveChild2,
/*  3909*/                OPC_Scope, 32, /*->3943*/ // 2 children in Scope
/*  3911*/                  OPC_CheckCondCode, ISD::SETGE,
/*  3913*/                  OPC_MoveParent,
/*  3914*/                  OPC_CheckType, MVT::i32,
/*  3916*/                  OPC_MoveParent,
/*  3917*/                  OPC_RecordChild2, // #3 = $dst
/*  3918*/                  OPC_MoveChild2,
/*  3919*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3922*/                  OPC_MoveParent,
/*  3923*/                  OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  3925*/                  OPC_EmitMergeInputChains1_0,
/*  3926*/                  OPC_EmitConvertToTarget, 2,
/*  3928*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  3936*/                  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)
/*  3943*/                /*Scope*/ 32, /*->3976*/
/*  3944*/                  OPC_CheckCondCode, ISD::SETUGE,
/*  3946*/                  OPC_MoveParent,
/*  3947*/                  OPC_CheckType, MVT::i32,
/*  3949*/                  OPC_MoveParent,
/*  3950*/                  OPC_RecordChild2, // #3 = $dst
/*  3951*/                  OPC_MoveChild2,
/*  3952*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3955*/                  OPC_MoveParent,
/*  3956*/                  OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  3958*/                  OPC_EmitMergeInputChains1_0,
/*  3959*/                  OPC_EmitConvertToTarget, 2,
/*  3961*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  3969*/                  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)
/*  3976*/                0, /*End of Scope*/
/*  3977*/              /*Scope*/ 78, /*->4056*/
/*  3978*/                OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/*  3980*/                OPC_MoveParent,
/*  3981*/                OPC_MoveChild2,
/*  3982*/                OPC_Scope, 35, /*->4019*/ // 2 children in Scope
/*  3984*/                  OPC_CheckCondCode, ISD::SETGT,
/*  3986*/                  OPC_MoveParent,
/*  3987*/                  OPC_CheckType, MVT::i32,
/*  3989*/                  OPC_MoveParent,
/*  3990*/                  OPC_RecordChild2, // #3 = $dst
/*  3991*/                  OPC_MoveChild2,
/*  3992*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  3995*/                  OPC_MoveParent,
/*  3996*/                  OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  3998*/                  OPC_EmitMergeInputChains1_0,
/*  3999*/                  OPC_EmitConvertToTarget, 2,
/*  4001*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  4004*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  4012*/                  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)
/*  4019*/                /*Scope*/ 35, /*->4055*/
/*  4020*/                  OPC_CheckCondCode, ISD::SETUGT,
/*  4022*/                  OPC_MoveParent,
/*  4023*/                  OPC_CheckType, MVT::i32,
/*  4025*/                  OPC_MoveParent,
/*  4026*/                  OPC_RecordChild2, // #3 = $dst
/*  4027*/                  OPC_MoveChild2,
/*  4028*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4031*/                  OPC_MoveParent,
/*  4032*/                  OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  4034*/                  OPC_EmitMergeInputChains1_0,
/*  4035*/                  OPC_EmitConvertToTarget, 2,
/*  4037*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  4040*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  4048*/                  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)
/*  4055*/                0, /*End of Scope*/
/*  4056*/              /*Scope*/ 29, /*->4086*/
/*  4057*/                OPC_CheckPredicate, 21, // Predicate_immZExt16
/*  4059*/                OPC_MoveParent,
/*  4060*/                OPC_MoveChild2,
/*  4061*/                OPC_CheckCondCode, ISD::SETEQ,
/*  4063*/                OPC_MoveParent,
/*  4064*/                OPC_CheckType, MVT::i32,
/*  4066*/                OPC_MoveParent,
/*  4067*/                OPC_RecordChild2, // #3 = $targ16
/*  4068*/                OPC_MoveChild2,
/*  4069*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4072*/                OPC_MoveParent,
/*  4073*/                OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4075*/                OPC_EmitMergeInputChains1_0,
/*  4076*/                OPC_EmitConvertToTarget, 2,
/*  4078*/                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)
/*  4086*/              /*Scope*/ 58, /*->4145*/
/*  4087*/                OPC_CheckPredicate, 19, // Predicate_immSExt16
/*  4089*/                OPC_MoveParent,
/*  4090*/                OPC_MoveChild2,
/*  4091*/                OPC_Scope, 25, /*->4118*/ // 2 children in Scope
/*  4093*/                  OPC_CheckCondCode, ISD::SETGE,
/*  4095*/                  OPC_MoveParent,
/*  4096*/                  OPC_CheckType, MVT::i32,
/*  4098*/                  OPC_MoveParent,
/*  4099*/                  OPC_RecordChild2, // #3 = $imm16
/*  4100*/                  OPC_MoveChild2,
/*  4101*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4104*/                  OPC_MoveParent,
/*  4105*/                  OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4107*/                  OPC_EmitMergeInputChains1_0,
/*  4108*/                  OPC_EmitConvertToTarget, 2,
/*  4110*/                  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)
/*  4118*/                /*Scope*/ 25, /*->4144*/
/*  4119*/                  OPC_CheckCondCode, ISD::SETLT,
/*  4121*/                  OPC_MoveParent,
/*  4122*/                  OPC_CheckType, MVT::i32,
/*  4124*/                  OPC_MoveParent,
/*  4125*/                  OPC_RecordChild2, // #3 = $imm16
/*  4126*/                  OPC_MoveChild2,
/*  4127*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4130*/                  OPC_MoveParent,
/*  4131*/                  OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4133*/                  OPC_EmitMergeInputChains1_0,
/*  4134*/                  OPC_EmitConvertToTarget, 2,
/*  4136*/                  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)
/*  4144*/                0, /*End of Scope*/
/*  4145*/              /*Scope*/ 29, /*->4175*/
/*  4146*/                OPC_CheckPredicate, 21, // Predicate_immZExt16
/*  4148*/                OPC_MoveParent,
/*  4149*/                OPC_MoveChild2,
/*  4150*/                OPC_CheckCondCode, ISD::SETNE,
/*  4152*/                OPC_MoveParent,
/*  4153*/                OPC_CheckType, MVT::i32,
/*  4155*/                OPC_MoveParent,
/*  4156*/                OPC_RecordChild2, // #3 = $targ16
/*  4157*/                OPC_MoveChild2,
/*  4158*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4161*/                OPC_MoveParent,
/*  4162*/                OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4164*/                OPC_EmitMergeInputChains1_0,
/*  4165*/                OPC_EmitConvertToTarget, 2,
/*  4167*/                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)
/*  4175*/              0, /*End of Scope*/
/*  4176*/            /*Scope*/ 7|128,5/*647*/, /*->4825*/
/*  4178*/              OPC_MoveChild2,
/*  4179*/              OPC_Scope, 23, /*->4204*/ // 22 children in Scope
/*  4181*/                OPC_CheckCondCode, ISD::SETEQ,
/*  4183*/                OPC_MoveParent,
/*  4184*/                OPC_CheckType, MVT::i32,
/*  4186*/                OPC_MoveParent,
/*  4187*/                OPC_RecordChild2, // #3 = $offset
/*  4188*/                OPC_MoveChild2,
/*  4189*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4192*/                OPC_MoveParent,
/*  4193*/                OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  4195*/                OPC_EmitMergeInputChains1_0,
/*  4196*/                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)
/*  4204*/              /*Scope*/ 23, /*->4228*/
/*  4205*/                OPC_CheckCondCode, ISD::SETNE,
/*  4207*/                OPC_MoveParent,
/*  4208*/                OPC_CheckType, MVT::i32,
/*  4210*/                OPC_MoveParent,
/*  4211*/                OPC_RecordChild2, // #3 = $offset
/*  4212*/                OPC_MoveChild2,
/*  4213*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4216*/                OPC_MoveParent,
/*  4217*/                OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  4219*/                OPC_EmitMergeInputChains1_0,
/*  4220*/                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)
/*  4228*/              /*Scope*/ 23, /*->4252*/
/*  4229*/                OPC_CheckCondCode, ISD::SETEQ,
/*  4231*/                OPC_MoveParent,
/*  4232*/                OPC_CheckType, MVT::i32,
/*  4234*/                OPC_MoveParent,
/*  4235*/                OPC_RecordChild2, // #3 = $offset
/*  4236*/                OPC_MoveChild2,
/*  4237*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4240*/                OPC_MoveParent,
/*  4241*/                OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  4243*/                OPC_EmitMergeInputChains1_0,
/*  4244*/                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)
/*  4252*/              /*Scope*/ 23, /*->4276*/
/*  4253*/                OPC_CheckCondCode, ISD::SETNE,
/*  4255*/                OPC_MoveParent,
/*  4256*/                OPC_CheckType, MVT::i32,
/*  4258*/                OPC_MoveParent,
/*  4259*/                OPC_RecordChild2, // #3 = $offset
/*  4260*/                OPC_MoveChild2,
/*  4261*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4264*/                OPC_MoveParent,
/*  4265*/                OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  4267*/                OPC_EmitMergeInputChains1_0,
/*  4268*/                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)
/*  4276*/              /*Scope*/ 34, /*->4311*/
/*  4277*/                OPC_CheckCondCode, ISD::SETGE,
/*  4279*/                OPC_MoveParent,
/*  4280*/                OPC_CheckType, MVT::i32,
/*  4282*/                OPC_MoveParent,
/*  4283*/                OPC_RecordChild2, // #3 = $dst
/*  4284*/                OPC_MoveChild2,
/*  4285*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4288*/                OPC_MoveParent,
/*  4289*/                OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  4291*/                OPC_EmitMergeInputChains1_0,
/*  4292*/                OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                              MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  4300*/                OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4303*/                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)
/*  4311*/              /*Scope*/ 34, /*->4346*/
/*  4312*/                OPC_CheckCondCode, ISD::SETUGE,
/*  4314*/                OPC_MoveParent,
/*  4315*/                OPC_CheckType, MVT::i32,
/*  4317*/                OPC_MoveParent,
/*  4318*/                OPC_RecordChild2, // #3 = $dst
/*  4319*/                OPC_MoveChild2,
/*  4320*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4323*/                OPC_MoveParent,
/*  4324*/                OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  4326*/                OPC_EmitMergeInputChains1_0,
/*  4327*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                              MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  4335*/                OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4338*/                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)
/*  4346*/              /*Scope*/ 34, /*->4381*/
/*  4347*/                OPC_CheckCondCode, ISD::SETLE,
/*  4349*/                OPC_MoveParent,
/*  4350*/                OPC_CheckType, MVT::i32,
/*  4352*/                OPC_MoveParent,
/*  4353*/                OPC_RecordChild2, // #3 = $dst
/*  4354*/                OPC_MoveChild2,
/*  4355*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4358*/                OPC_MoveParent,
/*  4359*/                OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  4361*/                OPC_EmitMergeInputChains1_0,
/*  4362*/                OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                              MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  4370*/                OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4373*/                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)
/*  4381*/              /*Scope*/ 34, /*->4416*/
/*  4382*/                OPC_CheckCondCode, ISD::SETULE,
/*  4384*/                OPC_MoveParent,
/*  4385*/                OPC_CheckType, MVT::i32,
/*  4387*/                OPC_MoveParent,
/*  4388*/                OPC_RecordChild2, // #3 = $dst
/*  4389*/                OPC_MoveChild2,
/*  4390*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4393*/                OPC_MoveParent,
/*  4394*/                OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  4396*/                OPC_EmitMergeInputChains1_0,
/*  4397*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                              MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  4405*/                OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4408*/                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)
/*  4416*/              /*Scope*/ 34, /*->4451*/
/*  4417*/                OPC_CheckCondCode, ISD::SETGE,
/*  4419*/                OPC_MoveParent,
/*  4420*/                OPC_CheckType, MVT::i32,
/*  4422*/                OPC_MoveParent,
/*  4423*/                OPC_RecordChild2, // #3 = $dst
/*  4424*/                OPC_MoveChild2,
/*  4425*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4428*/                OPC_MoveParent,
/*  4429*/                OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  4431*/                OPC_EmitMergeInputChains1_0,
/*  4432*/                OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                              MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  4440*/                OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4443*/                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)
/*  4451*/              /*Scope*/ 34, /*->4486*/
/*  4452*/                OPC_CheckCondCode, ISD::SETUGE,
/*  4454*/                OPC_MoveParent,
/*  4455*/                OPC_CheckType, MVT::i32,
/*  4457*/                OPC_MoveParent,
/*  4458*/                OPC_RecordChild2, // #3 = $dst
/*  4459*/                OPC_MoveChild2,
/*  4460*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4463*/                OPC_MoveParent,
/*  4464*/                OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  4466*/                OPC_EmitMergeInputChains1_0,
/*  4467*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                              MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  4475*/                OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4478*/                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)
/*  4486*/              /*Scope*/ 34, /*->4521*/
/*  4487*/                OPC_CheckCondCode, ISD::SETLE,
/*  4489*/                OPC_MoveParent,
/*  4490*/                OPC_CheckType, MVT::i32,
/*  4492*/                OPC_MoveParent,
/*  4493*/                OPC_RecordChild2, // #3 = $dst
/*  4494*/                OPC_MoveChild2,
/*  4495*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4498*/                OPC_MoveParent,
/*  4499*/                OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  4501*/                OPC_EmitMergeInputChains1_0,
/*  4502*/                OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                              MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  4510*/                OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4513*/                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)
/*  4521*/              /*Scope*/ 34, /*->4556*/
/*  4522*/                OPC_CheckCondCode, ISD::SETULE,
/*  4524*/                OPC_MoveParent,
/*  4525*/                OPC_CheckType, MVT::i32,
/*  4527*/                OPC_MoveParent,
/*  4528*/                OPC_RecordChild2, // #3 = $dst
/*  4529*/                OPC_MoveChild2,
/*  4530*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4533*/                OPC_MoveParent,
/*  4534*/                OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  4536*/                OPC_EmitMergeInputChains1_0,
/*  4537*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                              MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  4545*/                OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  4548*/                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)
/*  4556*/              /*Scope*/ 30, /*->4587*/
/*  4557*/                OPC_CheckCondCode, ISD::SETGE,
/*  4559*/                OPC_MoveParent,
/*  4560*/                OPC_CheckType, MVT::i32,
/*  4562*/                OPC_MoveParent,
/*  4563*/                OPC_RecordChild2, // #3 = $dst
/*  4564*/                OPC_MoveChild2,
/*  4565*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4568*/                OPC_MoveParent,
/*  4569*/                OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  4571*/                OPC_EmitMergeInputChains1_0,
/*  4572*/                OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                              MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  4580*/                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)
/*  4587*/              /*Scope*/ 30, /*->4618*/
/*  4588*/                OPC_CheckCondCode, ISD::SETUGE,
/*  4590*/                OPC_MoveParent,
/*  4591*/                OPC_CheckType, MVT::i32,
/*  4593*/                OPC_MoveParent,
/*  4594*/                OPC_RecordChild2, // #3 = $dst
/*  4595*/                OPC_MoveChild2,
/*  4596*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4599*/                OPC_MoveParent,
/*  4600*/                OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  4602*/                OPC_EmitMergeInputChains1_0,
/*  4603*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                              MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  4611*/                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)
/*  4618*/              /*Scope*/ 30, /*->4649*/
/*  4619*/                OPC_CheckCondCode, ISD::SETLE,
/*  4621*/                OPC_MoveParent,
/*  4622*/                OPC_CheckType, MVT::i32,
/*  4624*/                OPC_MoveParent,
/*  4625*/                OPC_RecordChild2, // #3 = $dst
/*  4626*/                OPC_MoveChild2,
/*  4627*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4630*/                OPC_MoveParent,
/*  4631*/                OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  4633*/                OPC_EmitMergeInputChains1_0,
/*  4634*/                OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                              MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  4642*/                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)
/*  4649*/              /*Scope*/ 30, /*->4680*/
/*  4650*/                OPC_CheckCondCode, ISD::SETULE,
/*  4652*/                OPC_MoveParent,
/*  4653*/                OPC_CheckType, MVT::i32,
/*  4655*/                OPC_MoveParent,
/*  4656*/                OPC_RecordChild2, // #3 = $dst
/*  4657*/                OPC_MoveChild2,
/*  4658*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4661*/                OPC_MoveParent,
/*  4662*/                OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  4664*/                OPC_EmitMergeInputChains1_0,
/*  4665*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                              MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  4673*/                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)
/*  4680*/              /*Scope*/ 23, /*->4704*/
/*  4681*/                OPC_CheckCondCode, ISD::SETEQ,
/*  4683*/                OPC_MoveParent,
/*  4684*/                OPC_CheckType, MVT::i32,
/*  4686*/                OPC_MoveParent,
/*  4687*/                OPC_RecordChild2, // #3 = $imm16
/*  4688*/                OPC_MoveChild2,
/*  4689*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4692*/                OPC_MoveParent,
/*  4693*/                OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4695*/                OPC_EmitMergeInputChains1_0,
/*  4696*/                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)
/*  4704*/              /*Scope*/ 23, /*->4728*/
/*  4705*/                OPC_CheckCondCode, ISD::SETGT,
/*  4707*/                OPC_MoveParent,
/*  4708*/                OPC_CheckType, MVT::i32,
/*  4710*/                OPC_MoveParent,
/*  4711*/                OPC_RecordChild2, // #3 = $imm16
/*  4712*/                OPC_MoveChild2,
/*  4713*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4716*/                OPC_MoveParent,
/*  4717*/                OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4719*/                OPC_EmitMergeInputChains1_0,
/*  4720*/                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)
/*  4728*/              /*Scope*/ 23, /*->4752*/
/*  4729*/                OPC_CheckCondCode, ISD::SETGE,
/*  4731*/                OPC_MoveParent,
/*  4732*/                OPC_CheckType, MVT::i32,
/*  4734*/                OPC_MoveParent,
/*  4735*/                OPC_RecordChild2, // #3 = $imm16
/*  4736*/                OPC_MoveChild2,
/*  4737*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4740*/                OPC_MoveParent,
/*  4741*/                OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4743*/                OPC_EmitMergeInputChains1_0,
/*  4744*/                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)
/*  4752*/              /*Scope*/ 23, /*->4776*/
/*  4753*/                OPC_CheckCondCode, ISD::SETLT,
/*  4755*/                OPC_MoveParent,
/*  4756*/                OPC_CheckType, MVT::i32,
/*  4758*/                OPC_MoveParent,
/*  4759*/                OPC_RecordChild2, // #3 = $imm16
/*  4760*/                OPC_MoveChild2,
/*  4761*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4764*/                OPC_MoveParent,
/*  4765*/                OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4767*/                OPC_EmitMergeInputChains1_0,
/*  4768*/                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)
/*  4776*/              /*Scope*/ 23, /*->4800*/
/*  4777*/                OPC_CheckCondCode, ISD::SETLE,
/*  4779*/                OPC_MoveParent,
/*  4780*/                OPC_CheckType, MVT::i32,
/*  4782*/                OPC_MoveParent,
/*  4783*/                OPC_RecordChild2, // #3 = $imm16
/*  4784*/                OPC_MoveChild2,
/*  4785*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4788*/                OPC_MoveParent,
/*  4789*/                OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4791*/                OPC_EmitMergeInputChains1_0,
/*  4792*/                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)
/*  4800*/              /*Scope*/ 23, /*->4824*/
/*  4801*/                OPC_CheckCondCode, ISD::SETNE,
/*  4803*/                OPC_MoveParent,
/*  4804*/                OPC_CheckType, MVT::i32,
/*  4806*/                OPC_MoveParent,
/*  4807*/                OPC_RecordChild2, // #3 = $imm16
/*  4808*/                OPC_MoveChild2,
/*  4809*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4812*/                OPC_MoveParent,
/*  4813*/                OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  4815*/                OPC_EmitMergeInputChains1_0,
/*  4816*/                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)
/*  4824*/              0, /*End of Scope*/
/*  4825*/            0, /*End of Scope*/
/*  4826*/          0, /*End of Scope*/
/*  4827*/        /*Scope*/ 82|128,4/*594*/, /*->5423*/
/*  4829*/          OPC_CheckChild0Type, MVT::i64,
/*  4831*/          OPC_Scope, 25|128,1/*153*/, /*->4987*/ // 4 children in Scope
/*  4834*/            OPC_CheckChild1Integer, 0, 
/*  4836*/            OPC_MoveChild2,
/*  4837*/            OPC_Scope, 22, /*->4861*/ // 6 children in Scope
/*  4839*/              OPC_CheckCondCode, ISD::SETGE,
/*  4841*/              OPC_MoveParent,
/*  4842*/              OPC_CheckType, MVT::i32,
/*  4844*/              OPC_MoveParent,
/*  4845*/              OPC_RecordChild2, // #2 = $offset
/*  4846*/              OPC_MoveChild2,
/*  4847*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4850*/              OPC_MoveParent,
/*  4851*/              OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  4853*/              OPC_EmitMergeInputChains1_0,
/*  4854*/              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)
/*  4861*/            /*Scope*/ 22, /*->4884*/
/*  4862*/              OPC_CheckCondCode, ISD::SETGT,
/*  4864*/              OPC_MoveParent,
/*  4865*/              OPC_CheckType, MVT::i32,
/*  4867*/              OPC_MoveParent,
/*  4868*/              OPC_RecordChild2, // #2 = $offset
/*  4869*/              OPC_MoveChild2,
/*  4870*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4873*/              OPC_MoveParent,
/*  4874*/              OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  4876*/              OPC_EmitMergeInputChains1_0,
/*  4877*/              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)
/*  4884*/            /*Scope*/ 22, /*->4907*/
/*  4885*/              OPC_CheckCondCode, ISD::SETLE,
/*  4887*/              OPC_MoveParent,
/*  4888*/              OPC_CheckType, MVT::i32,
/*  4890*/              OPC_MoveParent,
/*  4891*/              OPC_RecordChild2, // #2 = $offset
/*  4892*/              OPC_MoveChild2,
/*  4893*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4896*/              OPC_MoveParent,
/*  4897*/              OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  4899*/              OPC_EmitMergeInputChains1_0,
/*  4900*/              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)
/*  4907*/            /*Scope*/ 22, /*->4930*/
/*  4908*/              OPC_CheckCondCode, ISD::SETLT,
/*  4910*/              OPC_MoveParent,
/*  4911*/              OPC_CheckType, MVT::i32,
/*  4913*/              OPC_MoveParent,
/*  4914*/              OPC_RecordChild2, // #2 = $offset
/*  4915*/              OPC_MoveChild2,
/*  4916*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4919*/              OPC_MoveParent,
/*  4920*/              OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  4922*/              OPC_EmitMergeInputChains1_0,
/*  4923*/              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)
/*  4930*/            /*Scope*/ 27, /*->4958*/
/*  4931*/              OPC_CheckCondCode, ISD::SETNE,
/*  4933*/              OPC_MoveParent,
/*  4934*/              OPC_CheckType, MVT::i32,
/*  4936*/              OPC_MoveParent,
/*  4937*/              OPC_RecordChild2, // #2 = $dst
/*  4938*/              OPC_MoveChild2,
/*  4939*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4942*/              OPC_MoveParent,
/*  4943*/              OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  4945*/              OPC_EmitMergeInputChains1_0,
/*  4946*/              OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/*  4950*/              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)
/*  4958*/            /*Scope*/ 27, /*->4986*/
/*  4959*/              OPC_CheckCondCode, ISD::SETEQ,
/*  4961*/              OPC_MoveParent,
/*  4962*/              OPC_CheckType, MVT::i32,
/*  4964*/              OPC_MoveParent,
/*  4965*/              OPC_RecordChild2, // #2 = $dst
/*  4966*/              OPC_MoveChild2,
/*  4967*/              OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  4970*/              OPC_MoveParent,
/*  4971*/              OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  4973*/              OPC_EmitMergeInputChains1_0,
/*  4974*/              OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/*  4978*/              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)
/*  4986*/            0, /*End of Scope*/
/*  4987*/          /*Scope*/ 25, /*->5013*/
/*  4988*/            OPC_CheckChild1Integer, 1, 
/*  4990*/            OPC_MoveChild2,
/*  4991*/            OPC_CheckCondCode, ISD::SETLT,
/*  4993*/            OPC_MoveParent,
/*  4994*/            OPC_CheckType, MVT::i32,
/*  4996*/            OPC_MoveParent,
/*  4997*/            OPC_RecordChild2, // #2 = $dst
/*  4998*/            OPC_MoveChild2,
/*  4999*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5002*/            OPC_MoveParent,
/*  5003*/            OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5005*/            OPC_EmitMergeInputChains1_0,
/*  5006*/            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)
/*  5013*/          /*Scope*/ 34, /*->5048*/
/*  5014*/            OPC_CheckChild1Integer, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/*  5025*/            OPC_MoveChild2,
/*  5026*/            OPC_CheckCondCode, ISD::SETGT,
/*  5028*/            OPC_MoveParent,
/*  5029*/            OPC_CheckType, MVT::i32,
/*  5031*/            OPC_MoveParent,
/*  5032*/            OPC_RecordChild2, // #2 = $dst
/*  5033*/            OPC_MoveChild2,
/*  5034*/            OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5037*/            OPC_MoveParent,
/*  5038*/            OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5040*/            OPC_EmitMergeInputChains1_0,
/*  5041*/            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)
/*  5048*/          /*Scope*/ 116|128,2/*372*/, /*->5422*/
/*  5050*/            OPC_RecordChild1, // #2 = $rhs
/*  5051*/            OPC_Scope, 46|128,1/*174*/, /*->5228*/ // 2 children in Scope
/*  5054*/              OPC_MoveChild1,
/*  5055*/              OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5058*/              OPC_Scope, 80, /*->5140*/ // 2 children in Scope
/*  5060*/                OPC_CheckPredicate, 19, // Predicate_immSExt16
/*  5062*/                OPC_MoveParent,
/*  5063*/                OPC_MoveChild2,
/*  5064*/                OPC_Scope, 36, /*->5102*/ // 2 children in Scope
/*  5066*/                  OPC_CheckCondCode, ISD::SETGE,
/*  5068*/                  OPC_MoveParent,
/*  5069*/                  OPC_CheckType, MVT::i32,
/*  5071*/                  OPC_MoveParent,
/*  5072*/                  OPC_RecordChild2, // #3 = $dst
/*  5073*/                  OPC_MoveChild2,
/*  5074*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5077*/                  OPC_MoveParent,
/*  5078*/                  OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5080*/                  OPC_EmitMergeInputChains1_0,
/*  5081*/                  OPC_EmitConvertToTarget, 2,
/*  5083*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  5091*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5094*/                  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)
/*  5102*/                /*Scope*/ 36, /*->5139*/
/*  5103*/                  OPC_CheckCondCode, ISD::SETUGE,
/*  5105*/                  OPC_MoveParent,
/*  5106*/                  OPC_CheckType, MVT::i32,
/*  5108*/                  OPC_MoveParent,
/*  5109*/                  OPC_RecordChild2, // #3 = $dst
/*  5110*/                  OPC_MoveChild2,
/*  5111*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5114*/                  OPC_MoveParent,
/*  5115*/                  OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5117*/                  OPC_EmitMergeInputChains1_0,
/*  5118*/                  OPC_EmitConvertToTarget, 2,
/*  5120*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                                MVT::i32, 2/*#Ops*/, 1, 4,  // Results = #5
/*  5128*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5131*/                  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)
/*  5139*/                0, /*End of Scope*/
/*  5140*/              /*Scope*/ 86, /*->5227*/
/*  5141*/                OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/*  5143*/                OPC_MoveParent,
/*  5144*/                OPC_MoveChild2,
/*  5145*/                OPC_Scope, 39, /*->5186*/ // 2 children in Scope
/*  5147*/                  OPC_CheckCondCode, ISD::SETGT,
/*  5149*/                  OPC_MoveParent,
/*  5150*/                  OPC_CheckType, MVT::i32,
/*  5152*/                  OPC_MoveParent,
/*  5153*/                  OPC_RecordChild2, // #3 = $dst
/*  5154*/                  OPC_MoveChild2,
/*  5155*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5158*/                  OPC_MoveParent,
/*  5159*/                  OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5161*/                  OPC_EmitMergeInputChains1_0,
/*  5162*/                  OPC_EmitConvertToTarget, 2,
/*  5164*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  5167*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  5175*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5178*/                  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)
/*  5186*/                /*Scope*/ 39, /*->5226*/
/*  5187*/                  OPC_CheckCondCode, ISD::SETUGT,
/*  5189*/                  OPC_MoveParent,
/*  5190*/                  OPC_CheckType, MVT::i32,
/*  5192*/                  OPC_MoveParent,
/*  5193*/                  OPC_RecordChild2, // #3 = $dst
/*  5194*/                  OPC_MoveChild2,
/*  5195*/                  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5198*/                  OPC_MoveParent,
/*  5199*/                  OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5201*/                  OPC_EmitMergeInputChains1_0,
/*  5202*/                  OPC_EmitConvertToTarget, 2,
/*  5204*/                  OPC_EmitNodeXForm, 2, 4, // Plus1
/*  5207*/                  OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                                MVT::i32, 2/*#Ops*/, 1, 5,  // Results = #6
/*  5215*/                  OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5218*/                  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)
/*  5226*/                0, /*End of Scope*/
/*  5227*/              0, /*End of Scope*/
/*  5228*/            /*Scope*/ 63|128,1/*191*/, /*->5421*/
/*  5230*/              OPC_MoveChild2,
/*  5231*/              OPC_Scope, 23, /*->5256*/ // 6 children in Scope
/*  5233*/                OPC_CheckCondCode, ISD::SETEQ,
/*  5235*/                OPC_MoveParent,
/*  5236*/                OPC_CheckType, MVT::i32,
/*  5238*/                OPC_MoveParent,
/*  5239*/                OPC_RecordChild2, // #3 = $offset
/*  5240*/                OPC_MoveChild2,
/*  5241*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5244*/                OPC_MoveParent,
/*  5245*/                OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  5247*/                OPC_EmitMergeInputChains1_0,
/*  5248*/                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)
/*  5256*/              /*Scope*/ 23, /*->5280*/
/*  5257*/                OPC_CheckCondCode, ISD::SETNE,
/*  5259*/                OPC_MoveParent,
/*  5260*/                OPC_CheckType, MVT::i32,
/*  5262*/                OPC_MoveParent,
/*  5263*/                OPC_RecordChild2, // #3 = $offset
/*  5264*/                OPC_MoveChild2,
/*  5265*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5268*/                OPC_MoveParent,
/*  5269*/                OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/*  5271*/                OPC_EmitMergeInputChains1_0,
/*  5272*/                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)
/*  5280*/              /*Scope*/ 34, /*->5315*/
/*  5281*/                OPC_CheckCondCode, ISD::SETGE,
/*  5283*/                OPC_MoveParent,
/*  5284*/                OPC_CheckType, MVT::i32,
/*  5286*/                OPC_MoveParent,
/*  5287*/                OPC_RecordChild2, // #3 = $dst
/*  5288*/                OPC_MoveChild2,
/*  5289*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5292*/                OPC_MoveParent,
/*  5293*/                OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5295*/                OPC_EmitMergeInputChains1_0,
/*  5296*/                OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                              MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  5304*/                OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5307*/                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)
/*  5315*/              /*Scope*/ 34, /*->5350*/
/*  5316*/                OPC_CheckCondCode, ISD::SETUGE,
/*  5318*/                OPC_MoveParent,
/*  5319*/                OPC_CheckType, MVT::i32,
/*  5321*/                OPC_MoveParent,
/*  5322*/                OPC_RecordChild2, // #3 = $dst
/*  5323*/                OPC_MoveChild2,
/*  5324*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5327*/                OPC_MoveParent,
/*  5328*/                OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5330*/                OPC_EmitMergeInputChains1_0,
/*  5331*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                              MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #4
/*  5339*/                OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5342*/                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)
/*  5350*/              /*Scope*/ 34, /*->5385*/
/*  5351*/                OPC_CheckCondCode, ISD::SETLE,
/*  5353*/                OPC_MoveParent,
/*  5354*/                OPC_CheckType, MVT::i32,
/*  5356*/                OPC_MoveParent,
/*  5357*/                OPC_RecordChild2, // #3 = $dst
/*  5358*/                OPC_MoveChild2,
/*  5359*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5362*/                OPC_MoveParent,
/*  5363*/                OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5365*/                OPC_EmitMergeInputChains1_0,
/*  5366*/                OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                              MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  5374*/                OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5377*/                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)
/*  5385*/              /*Scope*/ 34, /*->5420*/
/*  5386*/                OPC_CheckCondCode, ISD::SETULE,
/*  5388*/                OPC_MoveParent,
/*  5389*/                OPC_CheckType, MVT::i32,
/*  5391*/                OPC_MoveParent,
/*  5392*/                OPC_RecordChild2, // #3 = $dst
/*  5393*/                OPC_MoveChild2,
/*  5394*/                OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5397*/                OPC_MoveParent,
/*  5398*/                OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5400*/                OPC_EmitMergeInputChains1_0,
/*  5401*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                              MVT::i32, 2/*#Ops*/, 2, 1,  // Results = #4
/*  5409*/                OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5412*/                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)
/*  5420*/              0, /*End of Scope*/
/*  5421*/            0, /*End of Scope*/
/*  5422*/          0, /*End of Scope*/
/*  5423*/        0, /*End of Scope*/
/*  5424*/      0, /*End of Scope*/
/*  5425*/    /*Scope*/ 90, /*->5516*/
/*  5426*/      OPC_RecordChild1, // #1 = $cond
/*  5427*/      OPC_Scope, 62, /*->5491*/ // 2 children in Scope
/*  5429*/        OPC_CheckChild1Type, MVT::i32,
/*  5431*/        OPC_RecordChild2, // #2 = $dst
/*  5432*/        OPC_MoveChild2,
/*  5433*/        OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5436*/        OPC_MoveParent,
/*  5437*/        OPC_Scope, 14, /*->5453*/ // 4 children in Scope
/*  5439*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  5441*/          OPC_EmitMergeInputChains1_0,
/*  5442*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5445*/          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)
/*  5453*/        /*Scope*/ 10, /*->5464*/
/*  5454*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  5456*/          OPC_EmitMergeInputChains1_0,
/*  5457*/          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)
/*  5464*/        /*Scope*/ 14, /*->5479*/
/*  5465*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  5467*/          OPC_EmitMergeInputChains1_0,
/*  5468*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/*  5471*/          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)
/*  5479*/        /*Scope*/ 10, /*->5490*/
/*  5480*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  5482*/          OPC_EmitMergeInputChains1_0,
/*  5483*/          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)
/*  5490*/        0, /*End of Scope*/
/*  5491*/      /*Scope*/ 23, /*->5515*/
/*  5492*/        OPC_CheckChild1Type, MVT::i64,
/*  5494*/        OPC_RecordChild2, // #2 = $dst
/*  5495*/        OPC_MoveChild2,
/*  5496*/        OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/*  5499*/        OPC_MoveParent,
/*  5500*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/*  5502*/        OPC_EmitMergeInputChains1_0,
/*  5503*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/*  5507*/        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)
/*  5515*/      0, /*End of Scope*/
/*  5516*/    0, /*End of Scope*/
/*  5517*/  /*SwitchOpcode*/ 5|128,62/*7941*/, TARGET_VAL(ISD::SELECT),// ->13462
/*  5521*/    OPC_Scope, 83|128,26/*3411*/, /*->8935*/ // 6 children in Scope
/*  5524*/      OPC_MoveChild0,
/*  5525*/      OPC_CheckOpcode, TARGET_VAL(ISD::SETCC),
/*  5528*/      OPC_RecordChild0, // #0 = $cond
/*  5529*/      OPC_Scope, 112|128,18/*2416*/, /*->7948*/ // 2 children in Scope
/*  5532*/        OPC_CheckChild0Type, MVT::i32,
/*  5534*/        OPC_Scope, 103|128,2/*359*/, /*->5896*/ // 7 children in Scope
/*  5537*/          OPC_MoveChild1,
/*  5538*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5541*/          OPC_CheckPredicate, 22, // Predicate_immz
/*  5543*/          OPC_MoveParent,
/*  5544*/          OPC_MoveChild2,
/*  5545*/          OPC_Scope, 26, /*->5573*/ // 11 children in Scope
/*  5547*/            OPC_CheckCondCode, ISD::SETEQ,
/*  5549*/            OPC_MoveParent,
/*  5550*/            OPC_CheckType, MVT::i32,
/*  5552*/            OPC_MoveParent,
/*  5553*/            OPC_RecordChild1, // #1 = $t
/*  5554*/            OPC_MoveChild2,
/*  5555*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5558*/            OPC_CheckPredicate, 22, // Predicate_immz
/*  5560*/            OPC_MoveParent,
/*  5561*/            OPC_CheckType, MVT::i32,
/*  5563*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  5565*/            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)
/*  5573*/          /*Scope*/ 26, /*->5600*/
/*  5574*/            OPC_CheckCondCode, ISD::SETNE,
/*  5576*/            OPC_MoveParent,
/*  5577*/            OPC_CheckType, MVT::i32,
/*  5579*/            OPC_MoveParent,
/*  5580*/            OPC_RecordChild1, // #1 = $t
/*  5581*/            OPC_MoveChild2,
/*  5582*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5585*/            OPC_CheckPredicate, 22, // Predicate_immz
/*  5587*/            OPC_MoveParent,
/*  5588*/            OPC_CheckType, MVT::i32,
/*  5590*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  5592*/            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)
/*  5600*/          /*Scope*/ 26, /*->5627*/
/*  5601*/            OPC_CheckCondCode, ISD::SETEQ,
/*  5603*/            OPC_MoveParent,
/*  5604*/            OPC_CheckType, MVT::i32,
/*  5606*/            OPC_MoveParent,
/*  5607*/            OPC_MoveChild1,
/*  5608*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5611*/            OPC_CheckPredicate, 22, // Predicate_immz
/*  5613*/            OPC_MoveParent,
/*  5614*/            OPC_RecordChild2, // #1 = $f
/*  5615*/            OPC_CheckType, MVT::i32,
/*  5617*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  5619*/            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)
/*  5627*/          /*Scope*/ 26, /*->5654*/
/*  5628*/            OPC_CheckCondCode, ISD::SETNE,
/*  5630*/            OPC_MoveParent,
/*  5631*/            OPC_CheckType, MVT::i32,
/*  5633*/            OPC_MoveParent,
/*  5634*/            OPC_MoveChild1,
/*  5635*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5638*/            OPC_CheckPredicate, 22, // Predicate_immz
/*  5640*/            OPC_MoveParent,
/*  5641*/            OPC_RecordChild2, // #1 = $f
/*  5642*/            OPC_CheckType, MVT::i32,
/*  5644*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  5646*/            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)
/*  5654*/          /*Scope*/ 26, /*->5681*/
/*  5655*/            OPC_CheckCondCode, ISD::SETEQ,
/*  5657*/            OPC_MoveParent,
/*  5658*/            OPC_CheckType, MVT::i32,
/*  5660*/            OPC_MoveParent,
/*  5661*/            OPC_RecordChild1, // #1 = $t
/*  5662*/            OPC_MoveChild2,
/*  5663*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5666*/            OPC_CheckPredicate, 22, // Predicate_immz
/*  5668*/            OPC_MoveParent,
/*  5669*/            OPC_CheckType, MVT::i32,
/*  5671*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  5673*/            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)
/*  5681*/          /*Scope*/ 26, /*->5708*/
/*  5682*/            OPC_CheckCondCode, ISD::SETNE,
/*  5684*/            OPC_MoveParent,
/*  5685*/            OPC_CheckType, MVT::i32,
/*  5687*/            OPC_MoveParent,
/*  5688*/            OPC_RecordChild1, // #1 = $t
/*  5689*/            OPC_MoveChild2,
/*  5690*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5693*/            OPC_CheckPredicate, 22, // Predicate_immz
/*  5695*/            OPC_MoveParent,
/*  5696*/            OPC_CheckType, MVT::i32,
/*  5698*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  5700*/            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)
/*  5708*/          /*Scope*/ 26, /*->5735*/
/*  5709*/            OPC_CheckCondCode, ISD::SETEQ,
/*  5711*/            OPC_MoveParent,
/*  5712*/            OPC_CheckType, MVT::i32,
/*  5714*/            OPC_MoveParent,
/*  5715*/            OPC_MoveChild1,
/*  5716*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5719*/            OPC_CheckPredicate, 22, // Predicate_immz
/*  5721*/            OPC_MoveParent,
/*  5722*/            OPC_RecordChild2, // #1 = $f
/*  5723*/            OPC_CheckType, MVT::i32,
/*  5725*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  5727*/            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)
/*  5735*/          /*Scope*/ 57, /*->5793*/
/*  5736*/            OPC_CheckCondCode, ISD::SETNE,
/*  5738*/            OPC_MoveParent,
/*  5739*/            OPC_CheckType, MVT::i32,
/*  5741*/            OPC_MoveParent,
/*  5742*/            OPC_Scope, 20, /*->5764*/ // 2 children in Scope
/*  5744*/              OPC_MoveChild1,
/*  5745*/              OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5748*/              OPC_CheckPredicate, 22, // Predicate_immz
/*  5750*/              OPC_MoveParent,
/*  5751*/              OPC_RecordChild2, // #1 = $f
/*  5752*/              OPC_CheckType, MVT::i32,
/*  5754*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  5756*/              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)
/*  5764*/            /*Scope*/ 27, /*->5792*/
/*  5765*/              OPC_RecordChild1, // #1 = $t
/*  5766*/              OPC_MoveChild2,
/*  5767*/              OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5770*/              OPC_CheckPredicate, 22, // Predicate_immz
/*  5772*/              OPC_MoveParent,
/*  5773*/              OPC_CheckType, MVT::i64,
/*  5775*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  5777*/              OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                            MVT::i64, 1/*#Ops*/, 0,  // Results = #2
/*  5784*/              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))
/*  5792*/            0, /*End of Scope*/
/*  5793*/          /*Scope*/ 33, /*->5827*/
/*  5794*/            OPC_CheckCondCode, ISD::SETEQ,
/*  5796*/            OPC_MoveParent,
/*  5797*/            OPC_CheckType, MVT::i32,
/*  5799*/            OPC_MoveParent,
/*  5800*/            OPC_RecordChild1, // #1 = $t
/*  5801*/            OPC_MoveChild2,
/*  5802*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5805*/            OPC_CheckPredicate, 22, // Predicate_immz
/*  5807*/            OPC_MoveParent,
/*  5808*/            OPC_CheckType, MVT::i64,
/*  5810*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  5812*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #2
/*  5819*/            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))
/*  5827*/          /*Scope*/ 33, /*->5861*/
/*  5828*/            OPC_CheckCondCode, ISD::SETNE,
/*  5830*/            OPC_MoveParent,
/*  5831*/            OPC_CheckType, MVT::i32,
/*  5833*/            OPC_MoveParent,
/*  5834*/            OPC_MoveChild1,
/*  5835*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5838*/            OPC_CheckPredicate, 22, // Predicate_immz
/*  5840*/            OPC_MoveParent,
/*  5841*/            OPC_RecordChild2, // #1 = $f
/*  5842*/            OPC_CheckType, MVT::i64,
/*  5844*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  5846*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #2
/*  5853*/            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))
/*  5861*/          /*Scope*/ 33, /*->5895*/
/*  5862*/            OPC_CheckCondCode, ISD::SETEQ,
/*  5864*/            OPC_MoveParent,
/*  5865*/            OPC_CheckType, MVT::i32,
/*  5867*/            OPC_MoveParent,
/*  5868*/            OPC_MoveChild1,
/*  5869*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5872*/            OPC_CheckPredicate, 22, // Predicate_immz
/*  5874*/            OPC_MoveParent,
/*  5875*/            OPC_RecordChild2, // #1 = $f
/*  5876*/            OPC_CheckType, MVT::i64,
/*  5878*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  5880*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #2
/*  5887*/            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))
/*  5895*/          0, /*End of Scope*/
/*  5896*/        /*Scope*/ 83|128,1/*211*/, /*->6109*/
/*  5898*/          OPC_CheckChild1Integer, 0, 
/*  5900*/          OPC_MoveChild2,
/*  5901*/          OPC_Scope, 36, /*->5939*/ // 8 children in Scope
/*  5903*/            OPC_CheckCondCode, ISD::SETEQ,
/*  5905*/            OPC_MoveParent,
/*  5906*/            OPC_CheckType, MVT::i32,
/*  5908*/            OPC_MoveParent,
/*  5909*/            OPC_RecordChild1, // #1 = $T
/*  5910*/            OPC_RecordChild2, // #2 = $F
/*  5911*/            OPC_SwitchType /*2 cases */, 11, MVT::i32,// ->5925
/*  5914*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  5916*/              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)
/*  5925*/            /*SwitchType*/ 11, MVT::i64,// ->5938
/*  5927*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  5929*/              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)
/*  5938*/            0, // EndSwitchType
/*  5939*/          /*Scope*/ 36, /*->5976*/
/*  5940*/            OPC_CheckCondCode, ISD::SETNE,
/*  5942*/            OPC_MoveParent,
/*  5943*/            OPC_CheckType, MVT::i32,
/*  5945*/            OPC_MoveParent,
/*  5946*/            OPC_RecordChild1, // #1 = $T
/*  5947*/            OPC_RecordChild2, // #2 = $F
/*  5948*/            OPC_SwitchType /*2 cases */, 11, MVT::i32,// ->5962
/*  5951*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  5953*/              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)
/*  5962*/            /*SwitchType*/ 11, MVT::i64,// ->5975
/*  5964*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  5966*/              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)
/*  5975*/            0, // EndSwitchType
/*  5976*/          /*Scope*/ 21, /*->5998*/
/*  5977*/            OPC_CheckCondCode, ISD::SETEQ,
/*  5979*/            OPC_MoveParent,
/*  5980*/            OPC_CheckType, MVT::i32,
/*  5982*/            OPC_MoveParent,
/*  5983*/            OPC_RecordChild1, // #1 = $T
/*  5984*/            OPC_RecordChild2, // #2 = $F
/*  5985*/            OPC_CheckType, MVT::i32,
/*  5987*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  5989*/            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)
/*  5998*/          /*Scope*/ 21, /*->6020*/
/*  5999*/            OPC_CheckCondCode, ISD::SETNE,
/*  6001*/            OPC_MoveParent,
/*  6002*/            OPC_CheckType, MVT::i32,
/*  6004*/            OPC_MoveParent,
/*  6005*/            OPC_RecordChild1, // #1 = $T
/*  6006*/            OPC_RecordChild2, // #2 = $F
/*  6007*/            OPC_CheckType, MVT::i32,
/*  6009*/            OPC_CheckPatternPredicate, 35, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6011*/            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)
/*  6020*/          /*Scope*/ 21, /*->6042*/
/*  6021*/            OPC_CheckCondCode, ISD::SETEQ,
/*  6023*/            OPC_MoveParent,
/*  6024*/            OPC_CheckType, MVT::i32,
/*  6026*/            OPC_MoveParent,
/*  6027*/            OPC_RecordChild1, // #1 = $T
/*  6028*/            OPC_RecordChild2, // #2 = $F
/*  6029*/            OPC_CheckType, MVT::i32,
/*  6031*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6033*/            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)
/*  6042*/          /*Scope*/ 21, /*->6064*/
/*  6043*/            OPC_CheckCondCode, ISD::SETNE,
/*  6045*/            OPC_MoveParent,
/*  6046*/            OPC_CheckType, MVT::i32,
/*  6048*/            OPC_MoveParent,
/*  6049*/            OPC_RecordChild1, // #1 = $T
/*  6050*/            OPC_RecordChild2, // #2 = $F
/*  6051*/            OPC_CheckType, MVT::i32,
/*  6053*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6055*/            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)
/*  6064*/          /*Scope*/ 21, /*->6086*/
/*  6065*/            OPC_CheckCondCode, ISD::SETEQ,
/*  6067*/            OPC_MoveParent,
/*  6068*/            OPC_CheckType, MVT::i32,
/*  6070*/            OPC_MoveParent,
/*  6071*/            OPC_RecordChild1, // #1 = $x
/*  6072*/            OPC_RecordChild2, // #2 = $y
/*  6073*/            OPC_CheckType, MVT::i32,
/*  6075*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  6077*/            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)
/*  6086*/          /*Scope*/ 21, /*->6108*/
/*  6087*/            OPC_CheckCondCode, ISD::SETNE,
/*  6089*/            OPC_MoveParent,
/*  6090*/            OPC_CheckType, MVT::i32,
/*  6092*/            OPC_MoveParent,
/*  6093*/            OPC_RecordChild1, // #1 = $x
/*  6094*/            OPC_RecordChild2, // #2 = $y
/*  6095*/            OPC_CheckType, MVT::i32,
/*  6097*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  6099*/            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)
/*  6108*/          0, /*End of Scope*/
/*  6109*/        /*Scope*/ 115|128,5/*755*/, /*->6866*/
/*  6111*/          OPC_RecordChild1, // #1 = $rhs
/*  6112*/          OPC_MoveChild1,
/*  6113*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  6116*/          OPC_Scope, 70, /*->6188*/ // 12 children in Scope
/*  6118*/            OPC_CheckPredicate, 19, // Predicate_immSExt16
/*  6120*/            OPC_MoveParent,
/*  6121*/            OPC_MoveChild2,
/*  6122*/            OPC_Scope, 31, /*->6155*/ // 2 children in Scope
/*  6124*/              OPC_CheckCondCode, ISD::SETGE,
/*  6126*/              OPC_MoveParent,
/*  6127*/              OPC_CheckType, MVT::i32,
/*  6129*/              OPC_MoveParent,
/*  6130*/              OPC_RecordChild1, // #2 = $T
/*  6131*/              OPC_RecordChild2, // #3 = $F
/*  6132*/              OPC_CheckType, MVT::i32,
/*  6134*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6136*/              OPC_EmitConvertToTarget, 1,
/*  6138*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  6146*/              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)
/*  6155*/            /*Scope*/ 31, /*->6187*/
/*  6156*/              OPC_CheckCondCode, ISD::SETUGE,
/*  6158*/              OPC_MoveParent,
/*  6159*/              OPC_CheckType, MVT::i32,
/*  6161*/              OPC_MoveParent,
/*  6162*/              OPC_RecordChild1, // #2 = $T
/*  6163*/              OPC_RecordChild2, // #3 = $F
/*  6164*/              OPC_CheckType, MVT::i32,
/*  6166*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6168*/              OPC_EmitConvertToTarget, 1,
/*  6170*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  6178*/              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)
/*  6187*/            0, /*End of Scope*/
/*  6188*/          /*Scope*/ 76, /*->6265*/
/*  6189*/            OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/*  6191*/            OPC_MoveParent,
/*  6192*/            OPC_MoveChild2,
/*  6193*/            OPC_Scope, 34, /*->6229*/ // 2 children in Scope
/*  6195*/              OPC_CheckCondCode, ISD::SETGT,
/*  6197*/              OPC_MoveParent,
/*  6198*/              OPC_CheckType, MVT::i32,
/*  6200*/              OPC_MoveParent,
/*  6201*/              OPC_RecordChild1, // #2 = $T
/*  6202*/              OPC_RecordChild2, // #3 = $F
/*  6203*/              OPC_CheckType, MVT::i32,
/*  6205*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6207*/              OPC_EmitConvertToTarget, 1,
/*  6209*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6212*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6220*/              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)
/*  6229*/            /*Scope*/ 34, /*->6264*/
/*  6230*/              OPC_CheckCondCode, ISD::SETUGT,
/*  6232*/              OPC_MoveParent,
/*  6233*/              OPC_CheckType, MVT::i32,
/*  6235*/              OPC_MoveParent,
/*  6236*/              OPC_RecordChild1, // #2 = $T
/*  6237*/              OPC_RecordChild2, // #3 = $F
/*  6238*/              OPC_CheckType, MVT::i32,
/*  6240*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6242*/              OPC_EmitConvertToTarget, 1,
/*  6244*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6247*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6255*/              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)
/*  6264*/            0, /*End of Scope*/
/*  6265*/          /*Scope*/ 38, /*->6304*/
/*  6266*/            OPC_CheckPredicate, 21, // Predicate_immZExt16
/*  6268*/            OPC_MoveParent,
/*  6269*/            OPC_MoveChild2,
/*  6270*/            OPC_CheckCondCode, ISD::SETEQ,
/*  6272*/            OPC_MoveParent,
/*  6273*/            OPC_CheckType, MVT::i32,
/*  6275*/            OPC_MoveParent,
/*  6276*/            OPC_RecordChild1, // #2 = $T
/*  6277*/            OPC_RecordChild2, // #3 = $F
/*  6278*/            OPC_CheckType, MVT::i32,
/*  6280*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6282*/            OPC_EmitConvertToTarget, 1,
/*  6284*/            OPC_EmitNodeXForm, 3, 4, // LO16
/*  6287*/            OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                          MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6295*/            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)
/*  6304*/          /*Scope*/ 70, /*->6375*/
/*  6305*/            OPC_CheckPredicate, 19, // Predicate_immSExt16
/*  6307*/            OPC_MoveParent,
/*  6308*/            OPC_MoveChild2,
/*  6309*/            OPC_Scope, 31, /*->6342*/ // 2 children in Scope
/*  6311*/              OPC_CheckCondCode, ISD::SETGE,
/*  6313*/              OPC_MoveParent,
/*  6314*/              OPC_CheckType, MVT::i32,
/*  6316*/              OPC_MoveParent,
/*  6317*/              OPC_RecordChild1, // #2 = $T
/*  6318*/              OPC_RecordChild2, // #3 = $F
/*  6319*/              OPC_CheckType, MVT::i64,
/*  6321*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6323*/              OPC_EmitConvertToTarget, 1,
/*  6325*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  6333*/              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)
/*  6342*/            /*Scope*/ 31, /*->6374*/
/*  6343*/              OPC_CheckCondCode, ISD::SETUGE,
/*  6345*/              OPC_MoveParent,
/*  6346*/              OPC_CheckType, MVT::i32,
/*  6348*/              OPC_MoveParent,
/*  6349*/              OPC_RecordChild1, // #2 = $T
/*  6350*/              OPC_RecordChild2, // #3 = $F
/*  6351*/              OPC_CheckType, MVT::i64,
/*  6353*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6355*/              OPC_EmitConvertToTarget, 1,
/*  6357*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  6365*/              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)
/*  6374*/            0, /*End of Scope*/
/*  6375*/          /*Scope*/ 76, /*->6452*/
/*  6376*/            OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/*  6378*/            OPC_MoveParent,
/*  6379*/            OPC_MoveChild2,
/*  6380*/            OPC_Scope, 34, /*->6416*/ // 2 children in Scope
/*  6382*/              OPC_CheckCondCode, ISD::SETGT,
/*  6384*/              OPC_MoveParent,
/*  6385*/              OPC_CheckType, MVT::i32,
/*  6387*/              OPC_MoveParent,
/*  6388*/              OPC_RecordChild1, // #2 = $T
/*  6389*/              OPC_RecordChild2, // #3 = $F
/*  6390*/              OPC_CheckType, MVT::i64,
/*  6392*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6394*/              OPC_EmitConvertToTarget, 1,
/*  6396*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6399*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6407*/              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)
/*  6416*/            /*Scope*/ 34, /*->6451*/
/*  6417*/              OPC_CheckCondCode, ISD::SETUGT,
/*  6419*/              OPC_MoveParent,
/*  6420*/              OPC_CheckType, MVT::i32,
/*  6422*/              OPC_MoveParent,
/*  6423*/              OPC_RecordChild1, // #2 = $T
/*  6424*/              OPC_RecordChild2, // #3 = $F
/*  6425*/              OPC_CheckType, MVT::i64,
/*  6427*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6429*/              OPC_EmitConvertToTarget, 1,
/*  6431*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6434*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6442*/              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)
/*  6451*/            0, /*End of Scope*/
/*  6452*/          /*Scope*/ 38, /*->6491*/
/*  6453*/            OPC_CheckPredicate, 21, // Predicate_immZExt16
/*  6455*/            OPC_MoveParent,
/*  6456*/            OPC_MoveChild2,
/*  6457*/            OPC_CheckCondCode, ISD::SETEQ,
/*  6459*/            OPC_MoveParent,
/*  6460*/            OPC_CheckType, MVT::i32,
/*  6462*/            OPC_MoveParent,
/*  6463*/            OPC_RecordChild1, // #2 = $T
/*  6464*/            OPC_RecordChild2, // #3 = $F
/*  6465*/            OPC_CheckType, MVT::i64,
/*  6467*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  6469*/            OPC_EmitConvertToTarget, 1,
/*  6471*/            OPC_EmitNodeXForm, 3, 4, // LO16
/*  6474*/            OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                          MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6482*/            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)
/*  6491*/          /*Scope*/ 70, /*->6562*/
/*  6492*/            OPC_CheckPredicate, 19, // Predicate_immSExt16
/*  6494*/            OPC_MoveParent,
/*  6495*/            OPC_MoveChild2,
/*  6496*/            OPC_Scope, 31, /*->6529*/ // 2 children in Scope
/*  6498*/              OPC_CheckCondCode, ISD::SETGE,
/*  6500*/              OPC_MoveParent,
/*  6501*/              OPC_CheckType, MVT::i32,
/*  6503*/              OPC_MoveParent,
/*  6504*/              OPC_RecordChild1, // #2 = $T
/*  6505*/              OPC_RecordChild2, // #3 = $F
/*  6506*/              OPC_CheckType, MVT::i32,
/*  6508*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6510*/              OPC_EmitConvertToTarget, 1,
/*  6512*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  6520*/              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)
/*  6529*/            /*Scope*/ 31, /*->6561*/
/*  6530*/              OPC_CheckCondCode, ISD::SETUGE,
/*  6532*/              OPC_MoveParent,
/*  6533*/              OPC_CheckType, MVT::i32,
/*  6535*/              OPC_MoveParent,
/*  6536*/              OPC_RecordChild1, // #2 = $T
/*  6537*/              OPC_RecordChild2, // #3 = $F
/*  6538*/              OPC_CheckType, MVT::i32,
/*  6540*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6542*/              OPC_EmitConvertToTarget, 1,
/*  6544*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  6552*/              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)
/*  6561*/            0, /*End of Scope*/
/*  6562*/          /*Scope*/ 76, /*->6639*/
/*  6563*/            OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/*  6565*/            OPC_MoveParent,
/*  6566*/            OPC_MoveChild2,
/*  6567*/            OPC_Scope, 34, /*->6603*/ // 2 children in Scope
/*  6569*/              OPC_CheckCondCode, ISD::SETGT,
/*  6571*/              OPC_MoveParent,
/*  6572*/              OPC_CheckType, MVT::i32,
/*  6574*/              OPC_MoveParent,
/*  6575*/              OPC_RecordChild1, // #2 = $T
/*  6576*/              OPC_RecordChild2, // #3 = $F
/*  6577*/              OPC_CheckType, MVT::i32,
/*  6579*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6581*/              OPC_EmitConvertToTarget, 1,
/*  6583*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6586*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6594*/              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)
/*  6603*/            /*Scope*/ 34, /*->6638*/
/*  6604*/              OPC_CheckCondCode, ISD::SETUGT,
/*  6606*/              OPC_MoveParent,
/*  6607*/              OPC_CheckType, MVT::i32,
/*  6609*/              OPC_MoveParent,
/*  6610*/              OPC_RecordChild1, // #2 = $T
/*  6611*/              OPC_RecordChild2, // #3 = $F
/*  6612*/              OPC_CheckType, MVT::i32,
/*  6614*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6616*/              OPC_EmitConvertToTarget, 1,
/*  6618*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6621*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6629*/              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)
/*  6638*/            0, /*End of Scope*/
/*  6639*/          /*Scope*/ 38, /*->6678*/
/*  6640*/            OPC_CheckPredicate, 21, // Predicate_immZExt16
/*  6642*/            OPC_MoveParent,
/*  6643*/            OPC_MoveChild2,
/*  6644*/            OPC_CheckCondCode, ISD::SETEQ,
/*  6646*/            OPC_MoveParent,
/*  6647*/            OPC_CheckType, MVT::i32,
/*  6649*/            OPC_MoveParent,
/*  6650*/            OPC_RecordChild1, // #2 = $T
/*  6651*/            OPC_RecordChild2, // #3 = $F
/*  6652*/            OPC_CheckType, MVT::i32,
/*  6654*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6656*/            OPC_EmitConvertToTarget, 1,
/*  6658*/            OPC_EmitNodeXForm, 3, 4, // LO16
/*  6661*/            OPC_EmitNode1, TARGET_VAL(Mips::XORi_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6669*/            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)
/*  6678*/          /*Scope*/ 70, /*->6749*/
/*  6679*/            OPC_CheckPredicate, 19, // Predicate_immSExt16
/*  6681*/            OPC_MoveParent,
/*  6682*/            OPC_MoveChild2,
/*  6683*/            OPC_Scope, 31, /*->6716*/ // 2 children in Scope
/*  6685*/              OPC_CheckCondCode, ISD::SETGE,
/*  6687*/              OPC_MoveParent,
/*  6688*/              OPC_CheckType, MVT::i32,
/*  6690*/              OPC_MoveParent,
/*  6691*/              OPC_RecordChild1, // #2 = $T
/*  6692*/              OPC_RecordChild2, // #3 = $F
/*  6693*/              OPC_CheckType, MVT::i32,
/*  6695*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6697*/              OPC_EmitConvertToTarget, 1,
/*  6699*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  6707*/              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)
/*  6716*/            /*Scope*/ 31, /*->6748*/
/*  6717*/              OPC_CheckCondCode, ISD::SETUGE,
/*  6719*/              OPC_MoveParent,
/*  6720*/              OPC_CheckType, MVT::i32,
/*  6722*/              OPC_MoveParent,
/*  6723*/              OPC_RecordChild1, // #2 = $T
/*  6724*/              OPC_RecordChild2, // #3 = $F
/*  6725*/              OPC_CheckType, MVT::i32,
/*  6727*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6729*/              OPC_EmitConvertToTarget, 1,
/*  6731*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  6739*/              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)
/*  6748*/            0, /*End of Scope*/
/*  6749*/          /*Scope*/ 76, /*->6826*/
/*  6750*/            OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/*  6752*/            OPC_MoveParent,
/*  6753*/            OPC_MoveChild2,
/*  6754*/            OPC_Scope, 34, /*->6790*/ // 2 children in Scope
/*  6756*/              OPC_CheckCondCode, ISD::SETGT,
/*  6758*/              OPC_MoveParent,
/*  6759*/              OPC_CheckType, MVT::i32,
/*  6761*/              OPC_MoveParent,
/*  6762*/              OPC_RecordChild1, // #2 = $T
/*  6763*/              OPC_RecordChild2, // #3 = $F
/*  6764*/              OPC_CheckType, MVT::i32,
/*  6766*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6768*/              OPC_EmitConvertToTarget, 1,
/*  6770*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6773*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6781*/              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)
/*  6790*/            /*Scope*/ 34, /*->6825*/
/*  6791*/              OPC_CheckCondCode, ISD::SETUGT,
/*  6793*/              OPC_MoveParent,
/*  6794*/              OPC_CheckType, MVT::i32,
/*  6796*/              OPC_MoveParent,
/*  6797*/              OPC_RecordChild1, // #2 = $T
/*  6798*/              OPC_RecordChild2, // #3 = $F
/*  6799*/              OPC_CheckType, MVT::i32,
/*  6801*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6803*/              OPC_EmitConvertToTarget, 1,
/*  6805*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  6808*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6816*/              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)
/*  6825*/            0, /*End of Scope*/
/*  6826*/          /*Scope*/ 38, /*->6865*/
/*  6827*/            OPC_CheckPredicate, 21, // Predicate_immZExt16
/*  6829*/            OPC_MoveParent,
/*  6830*/            OPC_MoveChild2,
/*  6831*/            OPC_CheckCondCode, ISD::SETEQ,
/*  6833*/            OPC_MoveParent,
/*  6834*/            OPC_CheckType, MVT::i32,
/*  6836*/            OPC_MoveParent,
/*  6837*/            OPC_RecordChild1, // #2 = $T
/*  6838*/            OPC_RecordChild2, // #3 = $F
/*  6839*/            OPC_CheckType, MVT::i32,
/*  6841*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  6843*/            OPC_EmitConvertToTarget, 1,
/*  6845*/            OPC_EmitNodeXForm, 3, 4, // LO16
/*  6848*/            OPC_EmitNode1, TARGET_VAL(Mips::XORi_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  6856*/            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)
/*  6865*/          0, /*End of Scope*/
/*  6866*/        /*Scope*/ 30|128,1/*158*/, /*->7026*/
/*  6868*/          OPC_MoveChild1,
/*  6869*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  6872*/          OPC_CheckPredicate, 22, // Predicate_immz
/*  6874*/          OPC_MoveParent,
/*  6875*/          OPC_MoveChild2,
/*  6876*/          OPC_Scope, 36, /*->6914*/ // 4 children in Scope
/*  6878*/            OPC_CheckCondCode, ISD::SETEQ,
/*  6880*/            OPC_MoveParent,
/*  6881*/            OPC_CheckType, MVT::i32,
/*  6883*/            OPC_MoveParent,
/*  6884*/            OPC_RecordChild1, // #1 = $t
/*  6885*/            OPC_RecordChild2, // #2 = $f
/*  6886*/            OPC_CheckType, MVT::i32,
/*  6888*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  6890*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #3
/*  6898*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ), 0,
                          MVT::i32, 2/*#Ops*/, 2, 0,  // Results = #4
/*  6906*/            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))
/*  6914*/          /*Scope*/ 36, /*->6951*/
/*  6915*/            OPC_CheckCondCode, ISD::SETNE,
/*  6917*/            OPC_MoveParent,
/*  6918*/            OPC_CheckType, MVT::i32,
/*  6920*/            OPC_MoveParent,
/*  6921*/            OPC_RecordChild1, // #1 = $t
/*  6922*/            OPC_RecordChild2, // #2 = $f
/*  6923*/            OPC_CheckType, MVT::i32,
/*  6925*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  6927*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #3
/*  6935*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ), 0,
                          MVT::i32, 2/*#Ops*/, 2, 0,  // Results = #4
/*  6943*/            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))
/*  6951*/          /*Scope*/ 36, /*->6988*/
/*  6952*/            OPC_CheckCondCode, ISD::SETEQ,
/*  6954*/            OPC_MoveParent,
/*  6955*/            OPC_CheckType, MVT::i32,
/*  6957*/            OPC_MoveParent,
/*  6958*/            OPC_RecordChild1, // #1 = $t
/*  6959*/            OPC_RecordChild2, // #2 = $f
/*  6960*/            OPC_CheckType, MVT::i32,
/*  6962*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  6964*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #3
/*  6972*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 2, 0,  // Results = #4
/*  6980*/            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))
/*  6988*/          /*Scope*/ 36, /*->7025*/
/*  6989*/            OPC_CheckCondCode, ISD::SETNE,
/*  6991*/            OPC_MoveParent,
/*  6992*/            OPC_CheckType, MVT::i32,
/*  6994*/            OPC_MoveParent,
/*  6995*/            OPC_RecordChild1, // #1 = $t
/*  6996*/            OPC_RecordChild2, // #2 = $f
/*  6997*/            OPC_CheckType, MVT::i32,
/*  6999*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  7001*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #3
/*  7009*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 2, 0,  // Results = #4
/*  7017*/            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))
/*  7025*/          0, /*End of Scope*/
/*  7026*/        /*Scope*/ 19|128,2/*275*/, /*->7303*/
/*  7028*/          OPC_RecordChild1, // #1 = $imm
/*  7029*/          OPC_MoveChild1,
/*  7030*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  7033*/          OPC_Scope, 4|128,1/*132*/, /*->7168*/ // 2 children in Scope
/*  7036*/            OPC_CheckPredicate, 21, // Predicate_immZExt16
/*  7038*/            OPC_MoveParent,
/*  7039*/            OPC_MoveChild2,
/*  7040*/            OPC_Scope, 62, /*->7104*/ // 2 children in Scope
/*  7042*/              OPC_CheckCondCode, ISD::SETEQ,
/*  7044*/              OPC_MoveParent,
/*  7045*/              OPC_CheckType, MVT::i32,
/*  7047*/              OPC_MoveParent,
/*  7048*/              OPC_RecordChild1, // #2 = $t
/*  7049*/              OPC_RecordChild2, // #3 = $f
/*  7050*/              OPC_CheckType, MVT::i32,
/*  7052*/              OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  7054*/              OPC_EmitConvertToTarget, 1,
/*  7056*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  7059*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7067*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  7075*/              OPC_EmitConvertToTarget, 1,
/*  7077*/              OPC_EmitNodeXForm, 3, 8, // LO16
/*  7080*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  7088*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  7096*/              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))))
/*  7104*/            /*Scope*/ 62, /*->7167*/
/*  7105*/              OPC_CheckCondCode, ISD::SETNE,
/*  7107*/              OPC_MoveParent,
/*  7108*/              OPC_CheckType, MVT::i32,
/*  7110*/              OPC_MoveParent,
/*  7111*/              OPC_RecordChild1, // #2 = $t
/*  7112*/              OPC_RecordChild2, // #3 = $f
/*  7113*/              OPC_CheckType, MVT::i32,
/*  7115*/              OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  7117*/              OPC_EmitConvertToTarget, 1,
/*  7119*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  7122*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7130*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  7138*/              OPC_EmitConvertToTarget, 1,
/*  7140*/              OPC_EmitNodeXForm, 3, 8, // LO16
/*  7143*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  7151*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  7159*/              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))))
/*  7167*/            0, /*End of Scope*/
/*  7168*/          /*Scope*/ 4|128,1/*132*/, /*->7302*/
/*  7170*/            OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/*  7172*/            OPC_MoveParent,
/*  7173*/            OPC_MoveChild2,
/*  7174*/            OPC_Scope, 62, /*->7238*/ // 2 children in Scope
/*  7176*/              OPC_CheckCondCode, ISD::SETGT,
/*  7178*/              OPC_MoveParent,
/*  7179*/              OPC_CheckType, MVT::i32,
/*  7181*/              OPC_MoveParent,
/*  7182*/              OPC_RecordChild1, // #2 = $t
/*  7183*/              OPC_RecordChild2, // #3 = $f
/*  7184*/              OPC_CheckType, MVT::i32,
/*  7186*/              OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  7188*/              OPC_EmitConvertToTarget, 1,
/*  7190*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  7193*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7201*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  7209*/              OPC_EmitConvertToTarget, 1,
/*  7211*/              OPC_EmitNodeXForm, 2, 8, // Plus1
/*  7214*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  7222*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  7230*/              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))))
/*  7238*/            /*Scope*/ 62, /*->7301*/
/*  7239*/              OPC_CheckCondCode, ISD::SETUGT,
/*  7241*/              OPC_MoveParent,
/*  7242*/              OPC_CheckType, MVT::i32,
/*  7244*/              OPC_MoveParent,
/*  7245*/              OPC_RecordChild1, // #2 = $t
/*  7246*/              OPC_RecordChild2, // #3 = $f
/*  7247*/              OPC_CheckType, MVT::i32,
/*  7249*/              OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  7251*/              OPC_EmitConvertToTarget, 1,
/*  7253*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  7256*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7264*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  7272*/              OPC_EmitConvertToTarget, 1,
/*  7274*/              OPC_EmitNodeXForm, 2, 8, // Plus1
/*  7277*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  7285*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  7293*/              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))))
/*  7301*/            0, /*End of Scope*/
/*  7302*/          0, /*End of Scope*/
/*  7303*/        /*Scope*/ 112, /*->7416*/
/*  7304*/          OPC_MoveChild1,
/*  7305*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  7308*/          OPC_CheckPredicate, 22, // Predicate_immz
/*  7310*/          OPC_MoveParent,
/*  7311*/          OPC_MoveChild2,
/*  7312*/          OPC_Scope, 50, /*->7364*/ // 2 children in Scope
/*  7314*/            OPC_CheckCondCode, ISD::SETEQ,
/*  7316*/            OPC_MoveParent,
/*  7317*/            OPC_CheckType, MVT::i32,
/*  7319*/            OPC_MoveParent,
/*  7320*/            OPC_RecordChild1, // #1 = $t
/*  7321*/            OPC_RecordChild2, // #2 = $f
/*  7322*/            OPC_CheckType, MVT::i64,
/*  7324*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  7326*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #3
/*  7333*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 3,  // Results = #4
/*  7341*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #5
/*  7348*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                          MVT::i64, 2/*#Ops*/, 2, 5,  // Results = #6
/*  7356*/            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)))
/*  7364*/          /*Scope*/ 50, /*->7415*/
/*  7365*/            OPC_CheckCondCode, ISD::SETNE,
/*  7367*/            OPC_MoveParent,
/*  7368*/            OPC_CheckType, MVT::i32,
/*  7370*/            OPC_MoveParent,
/*  7371*/            OPC_RecordChild1, // #1 = $t
/*  7372*/            OPC_RecordChild2, // #2 = $f
/*  7373*/            OPC_CheckType, MVT::i64,
/*  7375*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  7377*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #3
/*  7384*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 3,  // Results = #4
/*  7392*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #5
/*  7399*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 2, 5,  // Results = #6
/*  7407*/            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)))
/*  7415*/          0, /*End of Scope*/
/*  7416*/        /*Scope*/ 17|128,4/*529*/, /*->7947*/
/*  7418*/          OPC_RecordChild1, // #1 = $imm
/*  7419*/          OPC_MoveChild1,
/*  7420*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  7423*/          OPC_Scope, 4|128,1/*132*/, /*->7558*/ // 5 children in Scope
/*  7426*/            OPC_CheckPredicate, 21, // Predicate_immZExt16
/*  7428*/            OPC_MoveParent,
/*  7429*/            OPC_MoveChild2,
/*  7430*/            OPC_Scope, 62, /*->7494*/ // 2 children in Scope
/*  7432*/              OPC_CheckCondCode, ISD::SETEQ,
/*  7434*/              OPC_MoveParent,
/*  7435*/              OPC_CheckType, MVT::i32,
/*  7437*/              OPC_MoveParent,
/*  7438*/              OPC_RecordChild1, // #2 = $t
/*  7439*/              OPC_RecordChild2, // #3 = $f
/*  7440*/              OPC_CheckType, MVT::i32,
/*  7442*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  7444*/              OPC_EmitConvertToTarget, 1,
/*  7446*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  7449*/              OPC_EmitNode1, TARGET_VAL(Mips::XORI_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7457*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  7465*/              OPC_EmitConvertToTarget, 1,
/*  7467*/              OPC_EmitNodeXForm, 3, 8, // LO16
/*  7470*/              OPC_EmitNode1, TARGET_VAL(Mips::XORI_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  7478*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  7486*/              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))))
/*  7494*/            /*Scope*/ 62, /*->7557*/
/*  7495*/              OPC_CheckCondCode, ISD::SETNE,
/*  7497*/              OPC_MoveParent,
/*  7498*/              OPC_CheckType, MVT::i32,
/*  7500*/              OPC_MoveParent,
/*  7501*/              OPC_RecordChild1, // #2 = $t
/*  7502*/              OPC_RecordChild2, // #3 = $f
/*  7503*/              OPC_CheckType, MVT::i32,
/*  7505*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  7507*/              OPC_EmitConvertToTarget, 1,
/*  7509*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  7512*/              OPC_EmitNode1, TARGET_VAL(Mips::XORI_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7520*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  7528*/              OPC_EmitConvertToTarget, 1,
/*  7530*/              OPC_EmitNodeXForm, 3, 8, // LO16
/*  7533*/              OPC_EmitNode1, TARGET_VAL(Mips::XORI_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  7541*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  7549*/              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))))
/*  7557*/            0, /*End of Scope*/
/*  7558*/          /*Scope*/ 4|128,1/*132*/, /*->7692*/
/*  7560*/            OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/*  7562*/            OPC_MoveParent,
/*  7563*/            OPC_MoveChild2,
/*  7564*/            OPC_Scope, 62, /*->7628*/ // 2 children in Scope
/*  7566*/              OPC_CheckCondCode, ISD::SETGT,
/*  7568*/              OPC_MoveParent,
/*  7569*/              OPC_CheckType, MVT::i32,
/*  7571*/              OPC_MoveParent,
/*  7572*/              OPC_RecordChild1, // #2 = $t
/*  7573*/              OPC_RecordChild2, // #3 = $f
/*  7574*/              OPC_CheckType, MVT::i32,
/*  7576*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  7578*/              OPC_EmitConvertToTarget, 1,
/*  7580*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  7583*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7591*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  7599*/              OPC_EmitConvertToTarget, 1,
/*  7601*/              OPC_EmitNodeXForm, 2, 8, // Plus1
/*  7604*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  7612*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  7620*/              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))))
/*  7628*/            /*Scope*/ 62, /*->7691*/
/*  7629*/              OPC_CheckCondCode, ISD::SETUGT,
/*  7631*/              OPC_MoveParent,
/*  7632*/              OPC_CheckType, MVT::i32,
/*  7634*/              OPC_MoveParent,
/*  7635*/              OPC_RecordChild1, // #2 = $t
/*  7636*/              OPC_RecordChild2, // #3 = $f
/*  7637*/              OPC_CheckType, MVT::i32,
/*  7639*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  7641*/              OPC_EmitConvertToTarget, 1,
/*  7643*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  7646*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7654*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 2, 6,  // Results = #7
/*  7662*/              OPC_EmitConvertToTarget, 1,
/*  7664*/              OPC_EmitNodeXForm, 2, 8, // Plus1
/*  7667*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 9,  // Results = #10
/*  7675*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                            MVT::i32, 2/*#Ops*/, 3, 10,  // Results = #11
/*  7683*/              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))))
/*  7691*/            0, /*End of Scope*/
/*  7692*/          /*Scope*/ 32|128,1/*160*/, /*->7854*/
/*  7694*/            OPC_CheckPredicate, 21, // Predicate_immZExt16
/*  7696*/            OPC_MoveParent,
/*  7697*/            OPC_MoveChild2,
/*  7698*/            OPC_Scope, 76, /*->7776*/ // 2 children in Scope
/*  7700*/              OPC_CheckCondCode, ISD::SETEQ,
/*  7702*/              OPC_MoveParent,
/*  7703*/              OPC_CheckType, MVT::i32,
/*  7705*/              OPC_MoveParent,
/*  7706*/              OPC_RecordChild1, // #2 = $t
/*  7707*/              OPC_RecordChild2, // #3 = $f
/*  7708*/              OPC_CheckType, MVT::i64,
/*  7710*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  7712*/              OPC_EmitConvertToTarget, 1,
/*  7714*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  7717*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7725*/              OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                            MVT::i64, 1/*#Ops*/, 6,  // Results = #7
/*  7732*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                            MVT::i64, 2/*#Ops*/, 2, 7,  // Results = #8
/*  7740*/              OPC_EmitConvertToTarget, 1,
/*  7742*/              OPC_EmitNodeXForm, 3, 9, // LO16
/*  7745*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 10,  // Results = #11
/*  7753*/              OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                            MVT::i64, 1/*#Ops*/, 11,  // Results = #12
/*  7760*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                            MVT::i64, 2/*#Ops*/, 3, 12,  // Results = #13
/*  7768*/              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)))))
/*  7776*/            /*Scope*/ 76, /*->7853*/
/*  7777*/              OPC_CheckCondCode, ISD::SETNE,
/*  7779*/              OPC_MoveParent,
/*  7780*/              OPC_CheckType, MVT::i32,
/*  7782*/              OPC_MoveParent,
/*  7783*/              OPC_RecordChild1, // #2 = $t
/*  7784*/              OPC_RecordChild2, // #3 = $f
/*  7785*/              OPC_CheckType, MVT::i64,
/*  7787*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  7789*/              OPC_EmitConvertToTarget, 1,
/*  7791*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  7794*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  7802*/              OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                            MVT::i64, 1/*#Ops*/, 6,  // Results = #7
/*  7809*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                            MVT::i64, 2/*#Ops*/, 2, 7,  // Results = #8
/*  7817*/              OPC_EmitConvertToTarget, 1,
/*  7819*/              OPC_EmitNodeXForm, 3, 9, // LO16
/*  7822*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 10,  // Results = #11
/*  7830*/              OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                            MVT::i64, 1/*#Ops*/, 11,  // Results = #12
/*  7837*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                            MVT::i64, 2/*#Ops*/, 3, 12,  // Results = #13
/*  7845*/              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)))))
/*  7853*/            0, /*End of Scope*/
/*  7854*/          /*Scope*/ 28, /*->7883*/
/*  7855*/            OPC_CheckPredicate, 19, // Predicate_immSExt16
/*  7857*/            OPC_MoveParent,
/*  7858*/            OPC_MoveChild2,
/*  7859*/            OPC_CheckCondCode, ISD::SETLT,
/*  7861*/            OPC_MoveParent,
/*  7862*/            OPC_CheckType, MVT::i32,
/*  7864*/            OPC_MoveParent,
/*  7865*/            OPC_RecordChild1, // #2 = $x
/*  7866*/            OPC_RecordChild2, // #3 = $y
/*  7867*/            OPC_CheckType, MVT::i32,
/*  7869*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  7871*/            OPC_EmitConvertToTarget, 1,
/*  7873*/            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)
/*  7883*/          /*Scope*/ 62, /*->7946*/
/*  7884*/            OPC_CheckPredicate, 21, // Predicate_immZExt16
/*  7886*/            OPC_MoveParent,
/*  7887*/            OPC_MoveChild2,
/*  7888*/            OPC_Scope, 27, /*->7917*/ // 2 children in Scope
/*  7890*/              OPC_CheckCondCode, ISD::SETEQ,
/*  7892*/              OPC_MoveParent,
/*  7893*/              OPC_CheckType, MVT::i32,
/*  7895*/              OPC_MoveParent,
/*  7896*/              OPC_RecordChild1, // #2 = $x
/*  7897*/              OPC_RecordChild2, // #3 = $y
/*  7898*/              OPC_CheckType, MVT::i32,
/*  7900*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  7902*/              OPC_EmitConvertToTarget, 1,
/*  7904*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  7907*/              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))
/*  7917*/            /*Scope*/ 27, /*->7945*/
/*  7918*/              OPC_CheckCondCode, ISD::SETNE,
/*  7920*/              OPC_MoveParent,
/*  7921*/              OPC_CheckType, MVT::i32,
/*  7923*/              OPC_MoveParent,
/*  7924*/              OPC_RecordChild1, // #2 = $x
/*  7925*/              OPC_RecordChild2, // #3 = $y
/*  7926*/              OPC_CheckType, MVT::i32,
/*  7928*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  7930*/              OPC_EmitConvertToTarget, 1,
/*  7932*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  7935*/              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))
/*  7945*/            0, /*End of Scope*/
/*  7946*/          0, /*End of Scope*/
/*  7947*/        0, /*End of Scope*/
/*  7948*/      /*Scope*/ 88|128,7/*984*/, /*->8934*/
/*  7950*/        OPC_CheckChild0Type, MVT::i64,
/*  7952*/        OPC_Scope, 118, /*->8072*/ // 5 children in Scope
/*  7954*/          OPC_MoveChild1,
/*  7955*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  7958*/          OPC_CheckPredicate, 22, // Predicate_immz
/*  7960*/          OPC_MoveParent,
/*  7961*/          OPC_MoveChild2,
/*  7962*/          OPC_Scope, 26, /*->7990*/ // 4 children in Scope
/*  7964*/            OPC_CheckCondCode, ISD::SETNE,
/*  7966*/            OPC_MoveParent,
/*  7967*/            OPC_CheckType, MVT::i32,
/*  7969*/            OPC_MoveParent,
/*  7970*/            OPC_RecordChild1, // #1 = $t
/*  7971*/            OPC_MoveChild2,
/*  7972*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  7975*/            OPC_CheckPredicate, 22, // Predicate_immz
/*  7977*/            OPC_MoveParent,
/*  7978*/            OPC_CheckType, MVT::i64,
/*  7980*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  7982*/            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)
/*  7990*/          /*Scope*/ 26, /*->8017*/
/*  7991*/            OPC_CheckCondCode, ISD::SETEQ,
/*  7993*/            OPC_MoveParent,
/*  7994*/            OPC_CheckType, MVT::i32,
/*  7996*/            OPC_MoveParent,
/*  7997*/            OPC_RecordChild1, // #1 = $t
/*  7998*/            OPC_MoveChild2,
/*  7999*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8002*/            OPC_CheckPredicate, 22, // Predicate_immz
/*  8004*/            OPC_MoveParent,
/*  8005*/            OPC_CheckType, MVT::i64,
/*  8007*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8009*/            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)
/*  8017*/          /*Scope*/ 26, /*->8044*/
/*  8018*/            OPC_CheckCondCode, ISD::SETNE,
/*  8020*/            OPC_MoveParent,
/*  8021*/            OPC_CheckType, MVT::i32,
/*  8023*/            OPC_MoveParent,
/*  8024*/            OPC_MoveChild1,
/*  8025*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8028*/            OPC_CheckPredicate, 22, // Predicate_immz
/*  8030*/            OPC_MoveParent,
/*  8031*/            OPC_RecordChild2, // #1 = $f
/*  8032*/            OPC_CheckType, MVT::i64,
/*  8034*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8036*/            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)
/*  8044*/          /*Scope*/ 26, /*->8071*/
/*  8045*/            OPC_CheckCondCode, ISD::SETEQ,
/*  8047*/            OPC_MoveParent,
/*  8048*/            OPC_CheckType, MVT::i32,
/*  8050*/            OPC_MoveParent,
/*  8051*/            OPC_MoveChild1,
/*  8052*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8055*/            OPC_CheckPredicate, 22, // Predicate_immz
/*  8057*/            OPC_MoveParent,
/*  8058*/            OPC_RecordChild2, // #1 = $f
/*  8059*/            OPC_CheckType, MVT::i64,
/*  8061*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8063*/            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)
/*  8071*/          0, /*End of Scope*/
/*  8072*/        /*Scope*/ 79, /*->8152*/
/*  8073*/          OPC_CheckChild1Integer, 0, 
/*  8075*/          OPC_MoveChild2,
/*  8076*/          OPC_Scope, 36, /*->8114*/ // 2 children in Scope
/*  8078*/            OPC_CheckCondCode, ISD::SETEQ,
/*  8080*/            OPC_MoveParent,
/*  8081*/            OPC_CheckType, MVT::i32,
/*  8083*/            OPC_MoveParent,
/*  8084*/            OPC_RecordChild1, // #1 = $T
/*  8085*/            OPC_RecordChild2, // #2 = $F
/*  8086*/            OPC_SwitchType /*2 cases */, 11, MVT::i32,// ->8100
/*  8089*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8091*/              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)
/*  8100*/            /*SwitchType*/ 11, MVT::i64,// ->8113
/*  8102*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8104*/              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)
/*  8113*/            0, // EndSwitchType
/*  8114*/          /*Scope*/ 36, /*->8151*/
/*  8115*/            OPC_CheckCondCode, ISD::SETNE,
/*  8117*/            OPC_MoveParent,
/*  8118*/            OPC_CheckType, MVT::i32,
/*  8120*/            OPC_MoveParent,
/*  8121*/            OPC_RecordChild1, // #1 = $T
/*  8122*/            OPC_RecordChild2, // #2 = $F
/*  8123*/            OPC_SwitchType /*2 cases */, 11, MVT::i32,// ->8137
/*  8126*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8128*/              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)
/*  8137*/            /*SwitchType*/ 11, MVT::i64,// ->8150
/*  8139*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8141*/              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)
/*  8150*/            0, // EndSwitchType
/*  8151*/          0, /*End of Scope*/
/*  8152*/        /*Scope*/ 114|128,2/*370*/, /*->8524*/
/*  8154*/          OPC_RecordChild1, // #1 = $rhs
/*  8155*/          OPC_MoveChild1,
/*  8156*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8159*/          OPC_Scope, 70, /*->8231*/ // 5 children in Scope
/*  8161*/            OPC_CheckPredicate, 19, // Predicate_immSExt16
/*  8163*/            OPC_MoveParent,
/*  8164*/            OPC_MoveChild2,
/*  8165*/            OPC_Scope, 31, /*->8198*/ // 2 children in Scope
/*  8167*/              OPC_CheckCondCode, ISD::SETGE,
/*  8169*/              OPC_MoveParent,
/*  8170*/              OPC_CheckType, MVT::i32,
/*  8172*/              OPC_MoveParent,
/*  8173*/              OPC_RecordChild1, // #2 = $T
/*  8174*/              OPC_RecordChild2, // #3 = $F
/*  8175*/              OPC_CheckType, MVT::i32,
/*  8177*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8179*/              OPC_EmitConvertToTarget, 1,
/*  8181*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  8189*/              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)
/*  8198*/            /*Scope*/ 31, /*->8230*/
/*  8199*/              OPC_CheckCondCode, ISD::SETUGE,
/*  8201*/              OPC_MoveParent,
/*  8202*/              OPC_CheckType, MVT::i32,
/*  8204*/              OPC_MoveParent,
/*  8205*/              OPC_RecordChild1, // #2 = $T
/*  8206*/              OPC_RecordChild2, // #3 = $F
/*  8207*/              OPC_CheckType, MVT::i32,
/*  8209*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8211*/              OPC_EmitConvertToTarget, 1,
/*  8213*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  8221*/              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)
/*  8230*/            0, /*End of Scope*/
/*  8231*/          /*Scope*/ 76, /*->8308*/
/*  8232*/            OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/*  8234*/            OPC_MoveParent,
/*  8235*/            OPC_MoveChild2,
/*  8236*/            OPC_Scope, 34, /*->8272*/ // 2 children in Scope
/*  8238*/              OPC_CheckCondCode, ISD::SETGT,
/*  8240*/              OPC_MoveParent,
/*  8241*/              OPC_CheckType, MVT::i32,
/*  8243*/              OPC_MoveParent,
/*  8244*/              OPC_RecordChild1, // #2 = $T
/*  8245*/              OPC_RecordChild2, // #3 = $F
/*  8246*/              OPC_CheckType, MVT::i32,
/*  8248*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8250*/              OPC_EmitConvertToTarget, 1,
/*  8252*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  8255*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  8263*/              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)
/*  8272*/            /*Scope*/ 34, /*->8307*/
/*  8273*/              OPC_CheckCondCode, ISD::SETUGT,
/*  8275*/              OPC_MoveParent,
/*  8276*/              OPC_CheckType, MVT::i32,
/*  8278*/              OPC_MoveParent,
/*  8279*/              OPC_RecordChild1, // #2 = $T
/*  8280*/              OPC_RecordChild2, // #3 = $F
/*  8281*/              OPC_CheckType, MVT::i32,
/*  8283*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8285*/              OPC_EmitConvertToTarget, 1,
/*  8287*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  8290*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  8298*/              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)
/*  8307*/            0, /*End of Scope*/
/*  8308*/          /*Scope*/ 70, /*->8379*/
/*  8309*/            OPC_CheckPredicate, 19, // Predicate_immSExt16
/*  8311*/            OPC_MoveParent,
/*  8312*/            OPC_MoveChild2,
/*  8313*/            OPC_Scope, 31, /*->8346*/ // 2 children in Scope
/*  8315*/              OPC_CheckCondCode, ISD::SETGE,
/*  8317*/              OPC_MoveParent,
/*  8318*/              OPC_CheckType, MVT::i32,
/*  8320*/              OPC_MoveParent,
/*  8321*/              OPC_RecordChild1, // #2 = $T
/*  8322*/              OPC_RecordChild2, // #3 = $F
/*  8323*/              OPC_CheckType, MVT::i64,
/*  8325*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8327*/              OPC_EmitConvertToTarget, 1,
/*  8329*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  8337*/              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)
/*  8346*/            /*Scope*/ 31, /*->8378*/
/*  8347*/              OPC_CheckCondCode, ISD::SETUGE,
/*  8349*/              OPC_MoveParent,
/*  8350*/              OPC_CheckType, MVT::i32,
/*  8352*/              OPC_MoveParent,
/*  8353*/              OPC_RecordChild1, // #2 = $T
/*  8354*/              OPC_RecordChild2, // #3 = $F
/*  8355*/              OPC_CheckType, MVT::i64,
/*  8357*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8359*/              OPC_EmitConvertToTarget, 1,
/*  8361*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/*  8369*/              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)
/*  8378*/            0, /*End of Scope*/
/*  8379*/          /*Scope*/ 76, /*->8456*/
/*  8380*/            OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/*  8382*/            OPC_MoveParent,
/*  8383*/            OPC_MoveChild2,
/*  8384*/            OPC_Scope, 34, /*->8420*/ // 2 children in Scope
/*  8386*/              OPC_CheckCondCode, ISD::SETGT,
/*  8388*/              OPC_MoveParent,
/*  8389*/              OPC_CheckType, MVT::i32,
/*  8391*/              OPC_MoveParent,
/*  8392*/              OPC_RecordChild1, // #2 = $T
/*  8393*/              OPC_RecordChild2, // #3 = $F
/*  8394*/              OPC_CheckType, MVT::i64,
/*  8396*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8398*/              OPC_EmitConvertToTarget, 1,
/*  8400*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  8403*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  8411*/              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)
/*  8420*/            /*Scope*/ 34, /*->8455*/
/*  8421*/              OPC_CheckCondCode, ISD::SETUGT,
/*  8423*/              OPC_MoveParent,
/*  8424*/              OPC_CheckType, MVT::i32,
/*  8426*/              OPC_MoveParent,
/*  8427*/              OPC_RecordChild1, // #2 = $T
/*  8428*/              OPC_RecordChild2, // #3 = $F
/*  8429*/              OPC_CheckType, MVT::i64,
/*  8431*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8433*/              OPC_EmitConvertToTarget, 1,
/*  8435*/              OPC_EmitNodeXForm, 2, 4, // Plus1
/*  8438*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/*  8446*/              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)
/*  8455*/            0, /*End of Scope*/
/*  8456*/          /*Scope*/ 66, /*->8523*/
/*  8457*/            OPC_CheckPredicate, 21, // Predicate_immZExt16
/*  8459*/            OPC_MoveParent,
/*  8460*/            OPC_MoveChild2,
/*  8461*/            OPC_CheckCondCode, ISD::SETEQ,
/*  8463*/            OPC_MoveParent,
/*  8464*/            OPC_CheckType, MVT::i32,
/*  8466*/            OPC_MoveParent,
/*  8467*/            OPC_RecordChild1, // #2 = $T
/*  8468*/            OPC_RecordChild2, // #3 = $F
/*  8469*/            OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->8496
/*  8472*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8474*/              OPC_EmitConvertToTarget, 1,
/*  8476*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  8479*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 5,  // Results = #6
/*  8487*/              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)
/*  8496*/            /*SwitchType*/ 24, MVT::i64,// ->8522
/*  8498*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  8500*/              OPC_EmitConvertToTarget, 1,
/*  8502*/              OPC_EmitNodeXForm, 3, 4, // LO16
/*  8505*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 5,  // Results = #6
/*  8513*/              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)
/*  8522*/            0, // EndSwitchType
/*  8523*/          0, /*End of Scope*/
/*  8524*/        /*Scope*/ 84, /*->8609*/
/*  8525*/          OPC_MoveChild1,
/*  8526*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8529*/          OPC_CheckPredicate, 22, // Predicate_immz
/*  8531*/          OPC_MoveParent,
/*  8532*/          OPC_MoveChild2,
/*  8533*/          OPC_Scope, 36, /*->8571*/ // 2 children in Scope
/*  8535*/            OPC_CheckCondCode, ISD::SETEQ,
/*  8537*/            OPC_MoveParent,
/*  8538*/            OPC_CheckType, MVT::i32,
/*  8540*/            OPC_MoveParent,
/*  8541*/            OPC_RecordChild1, // #1 = $t
/*  8542*/            OPC_RecordChild2, // #2 = $f
/*  8543*/            OPC_CheckType, MVT::i64,
/*  8545*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8547*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 0,  // Results = #3
/*  8555*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                          MVT::i64, 2/*#Ops*/, 2, 0,  // Results = #4
/*  8563*/            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))
/*  8571*/          /*Scope*/ 36, /*->8608*/
/*  8572*/            OPC_CheckCondCode, ISD::SETNE,
/*  8574*/            OPC_MoveParent,
/*  8575*/            OPC_CheckType, MVT::i32,
/*  8577*/            OPC_MoveParent,
/*  8578*/            OPC_RecordChild1, // #1 = $t
/*  8579*/            OPC_RecordChild2, // #2 = $f
/*  8580*/            OPC_CheckType, MVT::i64,
/*  8582*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8584*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 0,  // Results = #3
/*  8592*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 2, 0,  // Results = #4
/*  8600*/            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))
/*  8608*/          0, /*End of Scope*/
/*  8609*/        /*Scope*/ 66|128,2/*322*/, /*->8933*/
/*  8611*/          OPC_RecordChild1, // #1 = $imm
/*  8612*/          OPC_MoveChild1,
/*  8613*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8616*/          OPC_Scope, 120, /*->8738*/ // 2 children in Scope
/*  8618*/            OPC_CheckPredicate, 23, // Predicate_immZExt16_64
/*  8620*/            OPC_MoveParent,
/*  8621*/            OPC_MoveChild2,
/*  8622*/            OPC_Scope, 56, /*->8680*/ // 2 children in Scope
/*  8624*/              OPC_CheckCondCode, ISD::SETEQ,
/*  8626*/              OPC_MoveParent,
/*  8627*/              OPC_CheckType, MVT::i32,
/*  8629*/              OPC_MoveParent,
/*  8630*/              OPC_RecordChild1, // #2 = $t
/*  8631*/              OPC_RecordChild2, // #3 = $f
/*  8632*/              OPC_CheckType, MVT::i64,
/*  8634*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8636*/              OPC_EmitConvertToTarget, 1,
/*  8638*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 4,  // Results = #5
/*  8646*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                            MVT::i64, 2/*#Ops*/, 2, 5,  // Results = #6
/*  8654*/              OPC_EmitConvertToTarget, 1,
/*  8656*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 7,  // Results = #8
/*  8664*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                            MVT::i64, 2/*#Ops*/, 3, 8,  // Results = #9
/*  8672*/              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)))
/*  8680*/            /*Scope*/ 56, /*->8737*/
/*  8681*/              OPC_CheckCondCode, ISD::SETNE,
/*  8683*/              OPC_MoveParent,
/*  8684*/              OPC_CheckType, MVT::i32,
/*  8686*/              OPC_MoveParent,
/*  8687*/              OPC_RecordChild1, // #2 = $t
/*  8688*/              OPC_RecordChild2, // #3 = $f
/*  8689*/              OPC_CheckType, MVT::i64,
/*  8691*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8693*/              OPC_EmitConvertToTarget, 1,
/*  8695*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 4,  // Results = #5
/*  8703*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                            MVT::i64, 2/*#Ops*/, 2, 5,  // Results = #6
/*  8711*/              OPC_EmitConvertToTarget, 1,
/*  8713*/              OPC_EmitNode1, TARGET_VAL(Mips::XORi64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 7,  // Results = #8
/*  8721*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                            MVT::i64, 2/*#Ops*/, 3, 8,  // Results = #9
/*  8729*/              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)))
/*  8737*/            0, /*End of Scope*/
/*  8738*/          /*Scope*/ 64|128,1/*192*/, /*->8932*/
/*  8740*/            OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/*  8742*/            OPC_MoveParent,
/*  8743*/            OPC_MoveChild2,
/*  8744*/            OPC_Scope, 92, /*->8838*/ // 2 children in Scope
/*  8746*/              OPC_CheckCondCode, ISD::SETGT,
/*  8748*/              OPC_MoveParent,
/*  8749*/              OPC_CheckType, MVT::i32,
/*  8751*/              OPC_MoveParent,
/*  8752*/              OPC_RecordChild1, // #2 = $t
/*  8753*/              OPC_RecordChild2, // #3 = $f
/*  8754*/              OPC_CheckType, MVT::i64,
/*  8756*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8758*/              OPC_EmitInteger, MVT::i64, 0, 
/*  8761*/              OPC_EmitConvertToTarget, 1,
/*  8763*/              OPC_EmitNodeXForm, 2, 5, // Plus1
/*  8766*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 6,  // Results = #7
/*  8774*/              OPC_EmitInteger, MVT::i32, Mips::sub_32,
/*  8777*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::SUBREG_TO_REG), 0,
                            MVT::i64, 3/*#Ops*/, 4, 7, 8,  // Results = #9
/*  8786*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                            MVT::i64, 2/*#Ops*/, 2, 9,  // Results = #10
/*  8794*/              OPC_EmitInteger, MVT::i64, 0, 
/*  8797*/              OPC_EmitConvertToTarget, 1,
/*  8799*/              OPC_EmitNodeXForm, 2, 12, // Plus1
/*  8802*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 13,  // Results = #14
/*  8810*/              OPC_EmitInteger, MVT::i32, Mips::sub_32,
/*  8813*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::SUBREG_TO_REG), 0,
                            MVT::i64, 3/*#Ops*/, 11, 14, 15,  // Results = #16
/*  8822*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                            MVT::i64, 2/*#Ops*/, 3, 16,  // Results = #17
/*  8830*/              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] })))
/*  8838*/            /*Scope*/ 92, /*->8931*/
/*  8839*/              OPC_CheckCondCode, ISD::SETUGT,
/*  8841*/              OPC_MoveParent,
/*  8842*/              OPC_CheckType, MVT::i32,
/*  8844*/              OPC_MoveParent,
/*  8845*/              OPC_RecordChild1, // #2 = $t
/*  8846*/              OPC_RecordChild2, // #3 = $f
/*  8847*/              OPC_CheckType, MVT::i64,
/*  8849*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  8851*/              OPC_EmitInteger, MVT::i64, 0, 
/*  8854*/              OPC_EmitConvertToTarget, 1,
/*  8856*/              OPC_EmitNodeXForm, 2, 5, // Plus1
/*  8859*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 6,  // Results = #7
/*  8867*/              OPC_EmitInteger, MVT::i32, Mips::sub_32,
/*  8870*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::SUBREG_TO_REG), 0,
                            MVT::i64, 3/*#Ops*/, 4, 7, 8,  // Results = #9
/*  8879*/              OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                            MVT::i64, 2/*#Ops*/, 2, 9,  // Results = #10
/*  8887*/              OPC_EmitInteger, MVT::i64, 0, 
/*  8890*/              OPC_EmitConvertToTarget, 1,
/*  8892*/              OPC_EmitNodeXForm, 2, 12, // Plus1
/*  8895*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 13,  // Results = #14
/*  8903*/              OPC_EmitInteger, MVT::i32, Mips::sub_32,
/*  8906*/              OPC_EmitNode1, TARGET_VAL(TargetOpcode::SUBREG_TO_REG), 0,
                            MVT::i64, 3/*#Ops*/, 11, 14, 15,  // Results = #16
/*  8915*/              OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                            MVT::i64, 2/*#Ops*/, 3, 16,  // Results = #17
/*  8923*/              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] })))
/*  8931*/            0, /*End of Scope*/
/*  8932*/          0, /*End of Scope*/
/*  8933*/        0, /*End of Scope*/
/*  8934*/      0, /*End of Scope*/
/*  8935*/    /*Scope*/ 17|128,1/*145*/, /*->9082*/
/*  8937*/      OPC_RecordChild0, // #0 = $cond
/*  8938*/      OPC_CheckChild0Type, MVT::i32,
/*  8940*/      OPC_Scope, 20, /*->8962*/ // 6 children in Scope
/*  8942*/        OPC_RecordChild1, // #1 = $t
/*  8943*/        OPC_MoveChild2,
/*  8944*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8947*/        OPC_CheckPredicate, 22, // Predicate_immz
/*  8949*/        OPC_MoveParent,
/*  8950*/        OPC_CheckType, MVT::i32,
/*  8952*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  8954*/        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)
/*  8962*/      /*Scope*/ 20, /*->8983*/
/*  8963*/        OPC_MoveChild1,
/*  8964*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8967*/        OPC_CheckPredicate, 22, // Predicate_immz
/*  8969*/        OPC_MoveParent,
/*  8970*/        OPC_RecordChild2, // #1 = $f
/*  8971*/        OPC_CheckType, MVT::i32,
/*  8973*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/*  8975*/        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)
/*  8983*/      /*Scope*/ 20, /*->9004*/
/*  8984*/        OPC_RecordChild1, // #1 = $t
/*  8985*/        OPC_MoveChild2,
/*  8986*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8989*/        OPC_CheckPredicate, 22, // Predicate_immz
/*  8991*/        OPC_MoveParent,
/*  8992*/        OPC_CheckType, MVT::i32,
/*  8994*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  8996*/        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)
/*  9004*/      /*Scope*/ 20, /*->9025*/
/*  9005*/        OPC_MoveChild1,
/*  9006*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  9009*/        OPC_CheckPredicate, 22, // Predicate_immz
/*  9011*/        OPC_MoveParent,
/*  9012*/        OPC_RecordChild2, // #1 = $f
/*  9013*/        OPC_CheckType, MVT::i32,
/*  9015*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/*  9017*/        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)
/*  9025*/      /*Scope*/ 27, /*->9053*/
/*  9026*/        OPC_RecordChild1, // #1 = $t
/*  9027*/        OPC_MoveChild2,
/*  9028*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  9031*/        OPC_CheckPredicate, 22, // Predicate_immz
/*  9033*/        OPC_MoveParent,
/*  9034*/        OPC_CheckType, MVT::i64,
/*  9036*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  9038*/        OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                      MVT::i64, 1/*#Ops*/, 0,  // Results = #2
/*  9045*/        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))
/*  9053*/      /*Scope*/ 27, /*->9081*/
/*  9054*/        OPC_MoveChild1,
/*  9055*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  9058*/        OPC_CheckPredicate, 22, // Predicate_immz
/*  9060*/        OPC_MoveParent,
/*  9061*/        OPC_RecordChild2, // #1 = $f
/*  9062*/        OPC_CheckType, MVT::i64,
/*  9064*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/*  9066*/        OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                      MVT::i64, 1/*#Ops*/, 0,  // Results = #2
/*  9073*/        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))
/*  9081*/      0, /*End of Scope*/
/*  9082*/    /*Scope*/ 114|128,9/*1266*/, /*->10350*/
/*  9084*/      OPC_MoveChild0,
/*  9085*/      OPC_CheckOpcode, TARGET_VAL(ISD::SETCC),
/*  9088*/      OPC_RecordChild0, // #0 = $lhs
/*  9089*/      OPC_Scope, 7|128,7/*903*/, /*->9995*/ // 2 children in Scope
/*  9092*/        OPC_CheckChild0Type, MVT::i32,
/*  9094*/        OPC_RecordChild1, // #1 = $rhs
/*  9095*/        OPC_MoveChild2,
/*  9096*/        OPC_Scope, 29, /*->9127*/ // 31 children in Scope
/*  9098*/          OPC_CheckCondCode, ISD::SETGE,
/*  9100*/          OPC_MoveParent,
/*  9101*/          OPC_CheckType, MVT::i32,
/*  9103*/          OPC_MoveParent,
/*  9104*/          OPC_RecordChild1, // #2 = $T
/*  9105*/          OPC_RecordChild2, // #3 = $F
/*  9106*/          OPC_CheckType, MVT::i32,
/*  9108*/          OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9110*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9118*/          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)
/*  9127*/        /*Scope*/ 29, /*->9157*/
/*  9128*/          OPC_CheckCondCode, ISD::SETUGE,
/*  9130*/          OPC_MoveParent,
/*  9131*/          OPC_CheckType, MVT::i32,
/*  9133*/          OPC_MoveParent,
/*  9134*/          OPC_RecordChild1, // #2 = $T
/*  9135*/          OPC_RecordChild2, // #3 = $F
/*  9136*/          OPC_CheckType, MVT::i32,
/*  9138*/          OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9140*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9148*/          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)
/*  9157*/        /*Scope*/ 29, /*->9187*/
/*  9158*/          OPC_CheckCondCode, ISD::SETLE,
/*  9160*/          OPC_MoveParent,
/*  9161*/          OPC_CheckType, MVT::i32,
/*  9163*/          OPC_MoveParent,
/*  9164*/          OPC_RecordChild1, // #2 = $T
/*  9165*/          OPC_RecordChild2, // #3 = $F
/*  9166*/          OPC_CheckType, MVT::i32,
/*  9168*/          OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9170*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9178*/          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)
/*  9187*/        /*Scope*/ 29, /*->9217*/
/*  9188*/          OPC_CheckCondCode, ISD::SETULE,
/*  9190*/          OPC_MoveParent,
/*  9191*/          OPC_CheckType, MVT::i32,
/*  9193*/          OPC_MoveParent,
/*  9194*/          OPC_RecordChild1, // #2 = $T
/*  9195*/          OPC_RecordChild2, // #3 = $F
/*  9196*/          OPC_CheckType, MVT::i32,
/*  9198*/          OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9200*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9208*/          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)
/*  9217*/        /*Scope*/ 29, /*->9247*/
/*  9218*/          OPC_CheckCondCode, ISD::SETEQ,
/*  9220*/          OPC_MoveParent,
/*  9221*/          OPC_CheckType, MVT::i32,
/*  9223*/          OPC_MoveParent,
/*  9224*/          OPC_RecordChild1, // #2 = $T
/*  9225*/          OPC_RecordChild2, // #3 = $F
/*  9226*/          OPC_CheckType, MVT::i32,
/*  9228*/          OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9230*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9238*/          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)
/*  9247*/        /*Scope*/ 29, /*->9277*/
/*  9248*/          OPC_CheckCondCode, ISD::SETGE,
/*  9250*/          OPC_MoveParent,
/*  9251*/          OPC_CheckType, MVT::i32,
/*  9253*/          OPC_MoveParent,
/*  9254*/          OPC_RecordChild1, // #2 = $T
/*  9255*/          OPC_RecordChild2, // #3 = $F
/*  9256*/          OPC_CheckType, MVT::i64,
/*  9258*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9260*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9268*/          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)
/*  9277*/        /*Scope*/ 29, /*->9307*/
/*  9278*/          OPC_CheckCondCode, ISD::SETUGE,
/*  9280*/          OPC_MoveParent,
/*  9281*/          OPC_CheckType, MVT::i32,
/*  9283*/          OPC_MoveParent,
/*  9284*/          OPC_RecordChild1, // #2 = $T
/*  9285*/          OPC_RecordChild2, // #3 = $F
/*  9286*/          OPC_CheckType, MVT::i64,
/*  9288*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9290*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9298*/          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)
/*  9307*/        /*Scope*/ 29, /*->9337*/
/*  9308*/          OPC_CheckCondCode, ISD::SETLE,
/*  9310*/          OPC_MoveParent,
/*  9311*/          OPC_CheckType, MVT::i32,
/*  9313*/          OPC_MoveParent,
/*  9314*/          OPC_RecordChild1, // #2 = $T
/*  9315*/          OPC_RecordChild2, // #3 = $F
/*  9316*/          OPC_CheckType, MVT::i64,
/*  9318*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9320*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9328*/          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)
/*  9337*/        /*Scope*/ 29, /*->9367*/
/*  9338*/          OPC_CheckCondCode, ISD::SETULE,
/*  9340*/          OPC_MoveParent,
/*  9341*/          OPC_CheckType, MVT::i32,
/*  9343*/          OPC_MoveParent,
/*  9344*/          OPC_RecordChild1, // #2 = $T
/*  9345*/          OPC_RecordChild2, // #3 = $F
/*  9346*/          OPC_CheckType, MVT::i64,
/*  9348*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9350*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9358*/          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)
/*  9367*/        /*Scope*/ 29, /*->9397*/
/*  9368*/          OPC_CheckCondCode, ISD::SETEQ,
/*  9370*/          OPC_MoveParent,
/*  9371*/          OPC_CheckType, MVT::i32,
/*  9373*/          OPC_MoveParent,
/*  9374*/          OPC_RecordChild1, // #2 = $T
/*  9375*/          OPC_RecordChild2, // #3 = $F
/*  9376*/          OPC_CheckType, MVT::i64,
/*  9378*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9380*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9388*/          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)
/*  9397*/        /*Scope*/ 52, /*->9450*/
/*  9398*/          OPC_CheckCondCode, ISD::SETNE,
/*  9400*/          OPC_MoveParent,
/*  9401*/          OPC_CheckType, MVT::i32,
/*  9403*/          OPC_MoveParent,
/*  9404*/          OPC_RecordChild1, // #2 = $T
/*  9405*/          OPC_RecordChild2, // #3 = $F
/*  9406*/          OPC_SwitchType /*2 cases */, 19, MVT::i32,// ->9428
/*  9409*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9411*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9419*/            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)
/*  9428*/          /*SwitchType*/ 19, MVT::i64,// ->9449
/*  9430*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9432*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9440*/            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)
/*  9449*/          0, // EndSwitchType
/*  9450*/        /*Scope*/ 29, /*->9480*/
/*  9451*/          OPC_CheckCondCode, ISD::SETGE,
/*  9453*/          OPC_MoveParent,
/*  9454*/          OPC_CheckType, MVT::i32,
/*  9456*/          OPC_MoveParent,
/*  9457*/          OPC_RecordChild1, // #2 = $T
/*  9458*/          OPC_RecordChild2, // #3 = $F
/*  9459*/          OPC_CheckType, MVT::i32,
/*  9461*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9463*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9471*/          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)
/*  9480*/        /*Scope*/ 29, /*->9510*/
/*  9481*/          OPC_CheckCondCode, ISD::SETUGE,
/*  9483*/          OPC_MoveParent,
/*  9484*/          OPC_CheckType, MVT::i32,
/*  9486*/          OPC_MoveParent,
/*  9487*/          OPC_RecordChild1, // #2 = $T
/*  9488*/          OPC_RecordChild2, // #3 = $F
/*  9489*/          OPC_CheckType, MVT::i32,
/*  9491*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9493*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9501*/          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)
/*  9510*/        /*Scope*/ 29, /*->9540*/
/*  9511*/          OPC_CheckCondCode, ISD::SETLE,
/*  9513*/          OPC_MoveParent,
/*  9514*/          OPC_CheckType, MVT::i32,
/*  9516*/          OPC_MoveParent,
/*  9517*/          OPC_RecordChild1, // #2 = $T
/*  9518*/          OPC_RecordChild2, // #3 = $F
/*  9519*/          OPC_CheckType, MVT::i32,
/*  9521*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9523*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9531*/          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)
/*  9540*/        /*Scope*/ 29, /*->9570*/
/*  9541*/          OPC_CheckCondCode, ISD::SETULE,
/*  9543*/          OPC_MoveParent,
/*  9544*/          OPC_CheckType, MVT::i32,
/*  9546*/          OPC_MoveParent,
/*  9547*/          OPC_RecordChild1, // #2 = $T
/*  9548*/          OPC_RecordChild2, // #3 = $F
/*  9549*/          OPC_CheckType, MVT::i32,
/*  9551*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9553*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9561*/          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)
/*  9570*/        /*Scope*/ 29, /*->9600*/
/*  9571*/          OPC_CheckCondCode, ISD::SETEQ,
/*  9573*/          OPC_MoveParent,
/*  9574*/          OPC_CheckType, MVT::i32,
/*  9576*/          OPC_MoveParent,
/*  9577*/          OPC_RecordChild1, // #2 = $T
/*  9578*/          OPC_RecordChild2, // #3 = $F
/*  9579*/          OPC_CheckType, MVT::i32,
/*  9581*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9583*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9591*/          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)
/*  9600*/        /*Scope*/ 29, /*->9630*/
/*  9601*/          OPC_CheckCondCode, ISD::SETNE,
/*  9603*/          OPC_MoveParent,
/*  9604*/          OPC_CheckType, MVT::i32,
/*  9606*/          OPC_MoveParent,
/*  9607*/          OPC_RecordChild1, // #2 = $T
/*  9608*/          OPC_RecordChild2, // #3 = $F
/*  9609*/          OPC_CheckType, MVT::i32,
/*  9611*/          OPC_CheckPatternPredicate, 35, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/*  9613*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9621*/          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)
/*  9630*/        /*Scope*/ 29, /*->9660*/
/*  9631*/          OPC_CheckCondCode, ISD::SETGE,
/*  9633*/          OPC_MoveParent,
/*  9634*/          OPC_CheckType, MVT::i32,
/*  9636*/          OPC_MoveParent,
/*  9637*/          OPC_RecordChild1, // #2 = $T
/*  9638*/          OPC_RecordChild2, // #3 = $F
/*  9639*/          OPC_CheckType, MVT::i32,
/*  9641*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9643*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9651*/          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)
/*  9660*/        /*Scope*/ 29, /*->9690*/
/*  9661*/          OPC_CheckCondCode, ISD::SETUGE,
/*  9663*/          OPC_MoveParent,
/*  9664*/          OPC_CheckType, MVT::i32,
/*  9666*/          OPC_MoveParent,
/*  9667*/          OPC_RecordChild1, // #2 = $T
/*  9668*/          OPC_RecordChild2, // #3 = $F
/*  9669*/          OPC_CheckType, MVT::i32,
/*  9671*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9673*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9681*/          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)
/*  9690*/        /*Scope*/ 29, /*->9720*/
/*  9691*/          OPC_CheckCondCode, ISD::SETLE,
/*  9693*/          OPC_MoveParent,
/*  9694*/          OPC_CheckType, MVT::i32,
/*  9696*/          OPC_MoveParent,
/*  9697*/          OPC_RecordChild1, // #2 = $T
/*  9698*/          OPC_RecordChild2, // #3 = $F
/*  9699*/          OPC_CheckType, MVT::i32,
/*  9701*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9703*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9711*/          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)
/*  9720*/        /*Scope*/ 29, /*->9750*/
/*  9721*/          OPC_CheckCondCode, ISD::SETULE,
/*  9723*/          OPC_MoveParent,
/*  9724*/          OPC_CheckType, MVT::i32,
/*  9726*/          OPC_MoveParent,
/*  9727*/          OPC_RecordChild1, // #2 = $T
/*  9728*/          OPC_RecordChild2, // #3 = $F
/*  9729*/          OPC_CheckType, MVT::i32,
/*  9731*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9733*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/*  9741*/          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)
/*  9750*/        /*Scope*/ 29, /*->9780*/
/*  9751*/          OPC_CheckCondCode, ISD::SETEQ,
/*  9753*/          OPC_MoveParent,
/*  9754*/          OPC_CheckType, MVT::i32,
/*  9756*/          OPC_MoveParent,
/*  9757*/          OPC_RecordChild1, // #2 = $T
/*  9758*/          OPC_RecordChild2, // #3 = $F
/*  9759*/          OPC_CheckType, MVT::i32,
/*  9761*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9763*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9771*/          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)
/*  9780*/        /*Scope*/ 29, /*->9810*/
/*  9781*/          OPC_CheckCondCode, ISD::SETNE,
/*  9783*/          OPC_MoveParent,
/*  9784*/          OPC_CheckType, MVT::i32,
/*  9786*/          OPC_MoveParent,
/*  9787*/          OPC_RecordChild1, // #2 = $T
/*  9788*/          OPC_RecordChild2, // #3 = $F
/*  9789*/          OPC_CheckType, MVT::i32,
/*  9791*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/*  9793*/          OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/*  9801*/          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)
/*  9810*/        /*Scope*/ 22, /*->9833*/
/*  9811*/          OPC_CheckCondCode, ISD::SETGE,
/*  9813*/          OPC_MoveParent,
/*  9814*/          OPC_CheckType, MVT::i32,
/*  9816*/          OPC_MoveParent,
/*  9817*/          OPC_RecordChild1, // #2 = $x
/*  9818*/          OPC_RecordChild2, // #3 = $y
/*  9819*/          OPC_CheckType, MVT::i32,
/*  9821*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9823*/          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)
/*  9833*/        /*Scope*/ 22, /*->9856*/
/*  9834*/          OPC_CheckCondCode, ISD::SETGT,
/*  9836*/          OPC_MoveParent,
/*  9837*/          OPC_CheckType, MVT::i32,
/*  9839*/          OPC_MoveParent,
/*  9840*/          OPC_RecordChild1, // #2 = $x
/*  9841*/          OPC_RecordChild2, // #3 = $y
/*  9842*/          OPC_CheckType, MVT::i32,
/*  9844*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9846*/          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)
/*  9856*/        /*Scope*/ 22, /*->9879*/
/*  9857*/          OPC_CheckCondCode, ISD::SETUGE,
/*  9859*/          OPC_MoveParent,
/*  9860*/          OPC_CheckType, MVT::i32,
/*  9862*/          OPC_MoveParent,
/*  9863*/          OPC_RecordChild1, // #2 = $x
/*  9864*/          OPC_RecordChild2, // #3 = $y
/*  9865*/          OPC_CheckType, MVT::i32,
/*  9867*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9869*/          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)
/*  9879*/        /*Scope*/ 22, /*->9902*/
/*  9880*/          OPC_CheckCondCode, ISD::SETUGT,
/*  9882*/          OPC_MoveParent,
/*  9883*/          OPC_CheckType, MVT::i32,
/*  9885*/          OPC_MoveParent,
/*  9886*/          OPC_RecordChild1, // #2 = $x
/*  9887*/          OPC_RecordChild2, // #3 = $y
/*  9888*/          OPC_CheckType, MVT::i32,
/*  9890*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9892*/          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)
/*  9902*/        /*Scope*/ 22, /*->9925*/
/*  9903*/          OPC_CheckCondCode, ISD::SETLE,
/*  9905*/          OPC_MoveParent,
/*  9906*/          OPC_CheckType, MVT::i32,
/*  9908*/          OPC_MoveParent,
/*  9909*/          OPC_RecordChild1, // #2 = $x
/*  9910*/          OPC_RecordChild2, // #3 = $y
/*  9911*/          OPC_CheckType, MVT::i32,
/*  9913*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9915*/          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)
/*  9925*/        /*Scope*/ 22, /*->9948*/
/*  9926*/          OPC_CheckCondCode, ISD::SETULE,
/*  9928*/          OPC_MoveParent,
/*  9929*/          OPC_CheckType, MVT::i32,
/*  9931*/          OPC_MoveParent,
/*  9932*/          OPC_RecordChild1, // #2 = $x
/*  9933*/          OPC_RecordChild2, // #3 = $y
/*  9934*/          OPC_CheckType, MVT::i32,
/*  9936*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9938*/          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)
/*  9948*/        /*Scope*/ 22, /*->9971*/
/*  9949*/          OPC_CheckCondCode, ISD::SETEQ,
/*  9951*/          OPC_MoveParent,
/*  9952*/          OPC_CheckType, MVT::i32,
/*  9954*/          OPC_MoveParent,
/*  9955*/          OPC_RecordChild1, // #2 = $x
/*  9956*/          OPC_RecordChild2, // #3 = $y
/*  9957*/          OPC_CheckType, MVT::i32,
/*  9959*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9961*/          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)
/*  9971*/        /*Scope*/ 22, /*->9994*/
/*  9972*/          OPC_CheckCondCode, ISD::SETNE,
/*  9974*/          OPC_MoveParent,
/*  9975*/          OPC_CheckType, MVT::i32,
/*  9977*/          OPC_MoveParent,
/*  9978*/          OPC_RecordChild1, // #2 = $x
/*  9979*/          OPC_RecordChild2, // #3 = $y
/*  9980*/          OPC_CheckType, MVT::i32,
/*  9982*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/*  9984*/          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)
/*  9994*/        0, /*End of Scope*/
/*  9995*/      /*Scope*/ 96|128,2/*352*/, /*->10349*/
/*  9997*/        OPC_CheckChild0Type, MVT::i64,
/*  9999*/        OPC_RecordChild1, // #1 = $rhs
/* 10000*/        OPC_MoveChild2,
/* 10001*/        OPC_Scope, 29, /*->10032*/ // 10 children in Scope
/* 10003*/          OPC_CheckCondCode, ISD::SETGE,
/* 10005*/          OPC_MoveParent,
/* 10006*/          OPC_CheckType, MVT::i32,
/* 10008*/          OPC_MoveParent,
/* 10009*/          OPC_RecordChild1, // #2 = $T
/* 10010*/          OPC_RecordChild2, // #3 = $F
/* 10011*/          OPC_CheckType, MVT::i32,
/* 10013*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10015*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 10023*/          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)
/* 10032*/        /*Scope*/ 29, /*->10062*/
/* 10033*/          OPC_CheckCondCode, ISD::SETUGE,
/* 10035*/          OPC_MoveParent,
/* 10036*/          OPC_CheckType, MVT::i32,
/* 10038*/          OPC_MoveParent,
/* 10039*/          OPC_RecordChild1, // #2 = $T
/* 10040*/          OPC_RecordChild2, // #3 = $F
/* 10041*/          OPC_CheckType, MVT::i32,
/* 10043*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10045*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 10053*/          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)
/* 10062*/        /*Scope*/ 29, /*->10092*/
/* 10063*/          OPC_CheckCondCode, ISD::SETLE,
/* 10065*/          OPC_MoveParent,
/* 10066*/          OPC_CheckType, MVT::i32,
/* 10068*/          OPC_MoveParent,
/* 10069*/          OPC_RecordChild1, // #2 = $T
/* 10070*/          OPC_RecordChild2, // #3 = $F
/* 10071*/          OPC_CheckType, MVT::i32,
/* 10073*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10075*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 10083*/          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)
/* 10092*/        /*Scope*/ 29, /*->10122*/
/* 10093*/          OPC_CheckCondCode, ISD::SETULE,
/* 10095*/          OPC_MoveParent,
/* 10096*/          OPC_CheckType, MVT::i32,
/* 10098*/          OPC_MoveParent,
/* 10099*/          OPC_RecordChild1, // #2 = $T
/* 10100*/          OPC_RecordChild2, // #3 = $F
/* 10101*/          OPC_CheckType, MVT::i32,
/* 10103*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10105*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 10113*/          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)
/* 10122*/        /*Scope*/ 29, /*->10152*/
/* 10123*/          OPC_CheckCondCode, ISD::SETGE,
/* 10125*/          OPC_MoveParent,
/* 10126*/          OPC_CheckType, MVT::i32,
/* 10128*/          OPC_MoveParent,
/* 10129*/          OPC_RecordChild1, // #2 = $T
/* 10130*/          OPC_RecordChild2, // #3 = $F
/* 10131*/          OPC_CheckType, MVT::i64,
/* 10133*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10135*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 10143*/          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)
/* 10152*/        /*Scope*/ 29, /*->10182*/
/* 10153*/          OPC_CheckCondCode, ISD::SETUGE,
/* 10155*/          OPC_MoveParent,
/* 10156*/          OPC_CheckType, MVT::i32,
/* 10158*/          OPC_MoveParent,
/* 10159*/          OPC_RecordChild1, // #2 = $T
/* 10160*/          OPC_RecordChild2, // #3 = $F
/* 10161*/          OPC_CheckType, MVT::i64,
/* 10163*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10165*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 10173*/          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)
/* 10182*/        /*Scope*/ 29, /*->10212*/
/* 10183*/          OPC_CheckCondCode, ISD::SETLE,
/* 10185*/          OPC_MoveParent,
/* 10186*/          OPC_CheckType, MVT::i32,
/* 10188*/          OPC_MoveParent,
/* 10189*/          OPC_RecordChild1, // #2 = $T
/* 10190*/          OPC_RecordChild2, // #3 = $F
/* 10191*/          OPC_CheckType, MVT::i64,
/* 10193*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10195*/          OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 10203*/          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)
/* 10212*/        /*Scope*/ 29, /*->10242*/
/* 10213*/          OPC_CheckCondCode, ISD::SETULE,
/* 10215*/          OPC_MoveParent,
/* 10216*/          OPC_CheckType, MVT::i32,
/* 10218*/          OPC_MoveParent,
/* 10219*/          OPC_RecordChild1, // #2 = $T
/* 10220*/          OPC_RecordChild2, // #3 = $F
/* 10221*/          OPC_CheckType, MVT::i64,
/* 10223*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10225*/          OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                        MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 10233*/          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)
/* 10242*/        /*Scope*/ 52, /*->10295*/
/* 10243*/          OPC_CheckCondCode, ISD::SETEQ,
/* 10245*/          OPC_MoveParent,
/* 10246*/          OPC_CheckType, MVT::i32,
/* 10248*/          OPC_MoveParent,
/* 10249*/          OPC_RecordChild1, // #2 = $T
/* 10250*/          OPC_RecordChild2, // #3 = $F
/* 10251*/          OPC_SwitchType /*2 cases */, 19, MVT::i32,// ->10273
/* 10254*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10256*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/* 10264*/            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)
/* 10273*/          /*SwitchType*/ 19, MVT::i64,// ->10294
/* 10275*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10277*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/* 10285*/            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)
/* 10294*/          0, // EndSwitchType
/* 10295*/        /*Scope*/ 52, /*->10348*/
/* 10296*/          OPC_CheckCondCode, ISD::SETNE,
/* 10298*/          OPC_MoveParent,
/* 10299*/          OPC_CheckType, MVT::i32,
/* 10301*/          OPC_MoveParent,
/* 10302*/          OPC_RecordChild1, // #2 = $T
/* 10303*/          OPC_RecordChild2, // #3 = $F
/* 10304*/          OPC_SwitchType /*2 cases */, 19, MVT::i32,// ->10326
/* 10307*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10309*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/* 10317*/            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)
/* 10326*/          /*SwitchType*/ 19, MVT::i64,// ->10347
/* 10328*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10330*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/* 10338*/            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)
/* 10347*/          0, // EndSwitchType
/* 10348*/        0, /*End of Scope*/
/* 10349*/      0, /*End of Scope*/
/* 10350*/    /*Scope*/ 5|128,2/*261*/, /*->10613*/
/* 10352*/      OPC_RecordChild0, // #0 = $cond
/* 10353*/      OPC_Scope, 65|128,1/*193*/, /*->10549*/ // 2 children in Scope
/* 10356*/        OPC_CheckChild0Type, MVT::i32,
/* 10358*/        OPC_RecordChild1, // #1 = $T
/* 10359*/        OPC_RecordChild2, // #2 = $F
/* 10360*/        OPC_SwitchType /*2 cases */, 116, MVT::i32,// ->10479
/* 10363*/          OPC_Scope, 11, /*->10376*/ // 7 children in Scope
/* 10365*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10367*/            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)
/* 10376*/          /*Scope*/ 11, /*->10388*/
/* 10377*/            OPC_CheckPatternPredicate, 35, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10379*/            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)
/* 10388*/          /*Scope*/ 11, /*->10400*/
/* 10389*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 10391*/            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)
/* 10400*/          /*Scope*/ 26, /*->10427*/
/* 10401*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 10403*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #3
/* 10411*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ), 0,
                          MVT::i32, 2/*#Ops*/, 2, 0,  // Results = #4
/* 10419*/            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))
/* 10427*/          /*Scope*/ 26, /*->10454*/
/* 10428*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 10430*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #3
/* 10438*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ_MMR6), 0,
                          MVT::i32, 2/*#Ops*/, 2, 0,  // Results = #4
/* 10446*/            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))
/* 10454*/          /*Scope*/ 11, /*->10466*/
/* 10455*/            OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 10457*/            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)
/* 10466*/          /*Scope*/ 11, /*->10478*/
/* 10467*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 10469*/            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)
/* 10478*/          0, /*End of Scope*/
/* 10479*/        /*SwitchType*/ 67, MVT::i64,// ->10548
/* 10481*/          OPC_Scope, 11, /*->10494*/ // 3 children in Scope
/* 10483*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10485*/            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)
/* 10494*/          /*Scope*/ 40, /*->10535*/
/* 10495*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 10497*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #3
/* 10504*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 3,  // Results = #4
/* 10512*/            OPC_EmitNode1, TARGET_VAL(Mips::SLL64_32), 0,
                          MVT::i64, 1/*#Ops*/, 0,  // Results = #5
/* 10519*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 2, 5,  // Results = #6
/* 10527*/            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)))
/* 10535*/          /*Scope*/ 11, /*->10547*/
/* 10536*/            OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 10538*/            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)
/* 10547*/          0, /*End of Scope*/
/* 10548*/        0, // EndSwitchType
/* 10549*/      /*Scope*/ 62, /*->10612*/
/* 10550*/        OPC_CheckChild0Type, MVT::i64,
/* 10552*/        OPC_RecordChild1, // #1 = $T
/* 10553*/        OPC_RecordChild2, // #2 = $F
/* 10554*/        OPC_SwitchType /*2 cases */, 11, MVT::i32,// ->10568
/* 10557*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10559*/          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)
/* 10568*/        /*SwitchType*/ 41, MVT::i64,// ->10611
/* 10570*/          OPC_Scope, 11, /*->10583*/ // 2 children in Scope
/* 10572*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10574*/            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)
/* 10583*/          /*Scope*/ 26, /*->10610*/
/* 10584*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 10586*/            OPC_EmitNode1, TARGET_VAL(Mips::SELNEZ64), 0,
                          MVT::i64, 2/*#Ops*/, 1, 0,  // Results = #3
/* 10594*/            OPC_EmitNode1, TARGET_VAL(Mips::SELEQZ64), 0,
                          MVT::i64, 2/*#Ops*/, 2, 0,  // Results = #4
/* 10602*/            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))
/* 10610*/          0, /*End of Scope*/
/* 10611*/        0, // EndSwitchType
/* 10612*/      0, /*End of Scope*/
/* 10613*/    /*Scope*/ 112|128,20/*2672*/, /*->13287*/
/* 10615*/      OPC_MoveChild0,
/* 10616*/      OPC_CheckOpcode, TARGET_VAL(ISD::SETCC),
/* 10619*/      OPC_RecordChild0, // #0 = $lhs
/* 10620*/      OPC_Scope, 97|128,14/*1889*/, /*->12512*/ // 2 children in Scope
/* 10623*/        OPC_CheckChild0Type, MVT::i32,
/* 10625*/        OPC_Scope, 97|128,1/*225*/, /*->10853*/ // 2 children in Scope
/* 10628*/          OPC_CheckChild1Integer, 0, 
/* 10630*/          OPC_MoveChild2,
/* 10631*/          OPC_Scope, 21, /*->10654*/ // 10 children in Scope
/* 10633*/            OPC_CheckCondCode, ISD::SETEQ,
/* 10635*/            OPC_MoveParent,
/* 10636*/            OPC_CheckType, MVT::i32,
/* 10638*/            OPC_MoveParent,
/* 10639*/            OPC_RecordChild1, // #1 = $T
/* 10640*/            OPC_RecordChild2, // #2 = $F
/* 10641*/            OPC_CheckType, MVT::f32,
/* 10643*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10645*/            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)
/* 10654*/          /*Scope*/ 21, /*->10676*/
/* 10655*/            OPC_CheckCondCode, ISD::SETNE,
/* 10657*/            OPC_MoveParent,
/* 10658*/            OPC_CheckType, MVT::i32,
/* 10660*/            OPC_MoveParent,
/* 10661*/            OPC_RecordChild1, // #1 = $T
/* 10662*/            OPC_RecordChild2, // #2 = $F
/* 10663*/            OPC_CheckType, MVT::f32,
/* 10665*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10667*/            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)
/* 10676*/          /*Scope*/ 21, /*->10698*/
/* 10677*/            OPC_CheckCondCode, ISD::SETEQ,
/* 10679*/            OPC_MoveParent,
/* 10680*/            OPC_CheckType, MVT::i32,
/* 10682*/            OPC_MoveParent,
/* 10683*/            OPC_RecordChild1, // #1 = $T
/* 10684*/            OPC_RecordChild2, // #2 = $F
/* 10685*/            OPC_CheckType, MVT::f64,
/* 10687*/            OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10689*/            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)
/* 10698*/          /*Scope*/ 21, /*->10720*/
/* 10699*/            OPC_CheckCondCode, ISD::SETNE,
/* 10701*/            OPC_MoveParent,
/* 10702*/            OPC_CheckType, MVT::i32,
/* 10704*/            OPC_MoveParent,
/* 10705*/            OPC_RecordChild1, // #1 = $T
/* 10706*/            OPC_RecordChild2, // #2 = $F
/* 10707*/            OPC_CheckType, MVT::f64,
/* 10709*/            OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10711*/            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)
/* 10720*/          /*Scope*/ 21, /*->10742*/
/* 10721*/            OPC_CheckCondCode, ISD::SETEQ,
/* 10723*/            OPC_MoveParent,
/* 10724*/            OPC_CheckType, MVT::i32,
/* 10726*/            OPC_MoveParent,
/* 10727*/            OPC_RecordChild1, // #1 = $T
/* 10728*/            OPC_RecordChild2, // #2 = $F
/* 10729*/            OPC_CheckType, MVT::f64,
/* 10731*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10733*/            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)
/* 10742*/          /*Scope*/ 21, /*->10764*/
/* 10743*/            OPC_CheckCondCode, ISD::SETNE,
/* 10745*/            OPC_MoveParent,
/* 10746*/            OPC_CheckType, MVT::i32,
/* 10748*/            OPC_MoveParent,
/* 10749*/            OPC_RecordChild1, // #1 = $T
/* 10750*/            OPC_RecordChild2, // #2 = $F
/* 10751*/            OPC_CheckType, MVT::f64,
/* 10753*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10755*/            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)
/* 10764*/          /*Scope*/ 21, /*->10786*/
/* 10765*/            OPC_CheckCondCode, ISD::SETEQ,
/* 10767*/            OPC_MoveParent,
/* 10768*/            OPC_CheckType, MVT::i32,
/* 10770*/            OPC_MoveParent,
/* 10771*/            OPC_RecordChild1, // #1 = $T
/* 10772*/            OPC_RecordChild2, // #2 = $F
/* 10773*/            OPC_CheckType, MVT::f32,
/* 10775*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 10777*/            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)
/* 10786*/          /*Scope*/ 21, /*->10808*/
/* 10787*/            OPC_CheckCondCode, ISD::SETNE,
/* 10789*/            OPC_MoveParent,
/* 10790*/            OPC_CheckType, MVT::i32,
/* 10792*/            OPC_MoveParent,
/* 10793*/            OPC_RecordChild1, // #1 = $T
/* 10794*/            OPC_RecordChild2, // #2 = $F
/* 10795*/            OPC_CheckType, MVT::f32,
/* 10797*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 10799*/            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)
/* 10808*/          /*Scope*/ 21, /*->10830*/
/* 10809*/            OPC_CheckCondCode, ISD::SETEQ,
/* 10811*/            OPC_MoveParent,
/* 10812*/            OPC_CheckType, MVT::i32,
/* 10814*/            OPC_MoveParent,
/* 10815*/            OPC_RecordChild1, // #1 = $T
/* 10816*/            OPC_RecordChild2, // #2 = $F
/* 10817*/            OPC_CheckType, MVT::f64,
/* 10819*/            OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 10821*/            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)
/* 10830*/          /*Scope*/ 21, /*->10852*/
/* 10831*/            OPC_CheckCondCode, ISD::SETNE,
/* 10833*/            OPC_MoveParent,
/* 10834*/            OPC_CheckType, MVT::i32,
/* 10836*/            OPC_MoveParent,
/* 10837*/            OPC_RecordChild1, // #1 = $T
/* 10838*/            OPC_RecordChild2, // #2 = $F
/* 10839*/            OPC_CheckType, MVT::f64,
/* 10841*/            OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 10843*/            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)
/* 10852*/          0, /*End of Scope*/
/* 10853*/        /*Scope*/ 120|128,12/*1656*/, /*->12511*/
/* 10855*/          OPC_RecordChild1, // #1 = $rhs
/* 10856*/          OPC_Scope, 106|128,5/*746*/, /*->11605*/ // 2 children in Scope
/* 10859*/            OPC_MoveChild1,
/* 10860*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 10863*/            OPC_Scope, 70, /*->10935*/ // 10 children in Scope
/* 10865*/              OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 10867*/              OPC_MoveParent,
/* 10868*/              OPC_MoveChild2,
/* 10869*/              OPC_Scope, 31, /*->10902*/ // 2 children in Scope
/* 10871*/                OPC_CheckCondCode, ISD::SETGE,
/* 10873*/                OPC_MoveParent,
/* 10874*/                OPC_CheckType, MVT::i32,
/* 10876*/                OPC_MoveParent,
/* 10877*/                OPC_RecordChild1, // #2 = $T
/* 10878*/                OPC_RecordChild2, // #3 = $F
/* 10879*/                OPC_CheckType, MVT::f32,
/* 10881*/                OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10883*/                OPC_EmitConvertToTarget, 1,
/* 10885*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 10893*/                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)
/* 10902*/              /*Scope*/ 31, /*->10934*/
/* 10903*/                OPC_CheckCondCode, ISD::SETUGE,
/* 10905*/                OPC_MoveParent,
/* 10906*/                OPC_CheckType, MVT::i32,
/* 10908*/                OPC_MoveParent,
/* 10909*/                OPC_RecordChild1, // #2 = $T
/* 10910*/                OPC_RecordChild2, // #3 = $F
/* 10911*/                OPC_CheckType, MVT::f32,
/* 10913*/                OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10915*/                OPC_EmitConvertToTarget, 1,
/* 10917*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 10925*/                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)
/* 10934*/              0, /*End of Scope*/
/* 10935*/            /*Scope*/ 76, /*->11012*/
/* 10936*/              OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/* 10938*/              OPC_MoveParent,
/* 10939*/              OPC_MoveChild2,
/* 10940*/              OPC_Scope, 34, /*->10976*/ // 2 children in Scope
/* 10942*/                OPC_CheckCondCode, ISD::SETGT,
/* 10944*/                OPC_MoveParent,
/* 10945*/                OPC_CheckType, MVT::i32,
/* 10947*/                OPC_MoveParent,
/* 10948*/                OPC_RecordChild1, // #2 = $T
/* 10949*/                OPC_RecordChild2, // #3 = $F
/* 10950*/                OPC_CheckType, MVT::f32,
/* 10952*/                OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10954*/                OPC_EmitConvertToTarget, 1,
/* 10956*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 10959*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 10967*/                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)
/* 10976*/              /*Scope*/ 34, /*->11011*/
/* 10977*/                OPC_CheckCondCode, ISD::SETUGT,
/* 10979*/                OPC_MoveParent,
/* 10980*/                OPC_CheckType, MVT::i32,
/* 10982*/                OPC_MoveParent,
/* 10983*/                OPC_RecordChild1, // #2 = $T
/* 10984*/                OPC_RecordChild2, // #3 = $F
/* 10985*/                OPC_CheckType, MVT::f32,
/* 10987*/                OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 10989*/                OPC_EmitConvertToTarget, 1,
/* 10991*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 10994*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 11002*/                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)
/* 11011*/              0, /*End of Scope*/
/* 11012*/            /*Scope*/ 70, /*->11083*/
/* 11013*/              OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 11015*/              OPC_MoveParent,
/* 11016*/              OPC_MoveChild2,
/* 11017*/              OPC_Scope, 31, /*->11050*/ // 2 children in Scope
/* 11019*/                OPC_CheckCondCode, ISD::SETGE,
/* 11021*/                OPC_MoveParent,
/* 11022*/                OPC_CheckType, MVT::i32,
/* 11024*/                OPC_MoveParent,
/* 11025*/                OPC_RecordChild1, // #2 = $T
/* 11026*/                OPC_RecordChild2, // #3 = $F
/* 11027*/                OPC_CheckType, MVT::f64,
/* 11029*/                OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11031*/                OPC_EmitConvertToTarget, 1,
/* 11033*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 11041*/                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)
/* 11050*/              /*Scope*/ 31, /*->11082*/
/* 11051*/                OPC_CheckCondCode, ISD::SETUGE,
/* 11053*/                OPC_MoveParent,
/* 11054*/                OPC_CheckType, MVT::i32,
/* 11056*/                OPC_MoveParent,
/* 11057*/                OPC_RecordChild1, // #2 = $T
/* 11058*/                OPC_RecordChild2, // #3 = $F
/* 11059*/                OPC_CheckType, MVT::f64,
/* 11061*/                OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11063*/                OPC_EmitConvertToTarget, 1,
/* 11065*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 11073*/                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)
/* 11082*/              0, /*End of Scope*/
/* 11083*/            /*Scope*/ 76, /*->11160*/
/* 11084*/              OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/* 11086*/              OPC_MoveParent,
/* 11087*/              OPC_MoveChild2,
/* 11088*/              OPC_Scope, 34, /*->11124*/ // 2 children in Scope
/* 11090*/                OPC_CheckCondCode, ISD::SETGT,
/* 11092*/                OPC_MoveParent,
/* 11093*/                OPC_CheckType, MVT::i32,
/* 11095*/                OPC_MoveParent,
/* 11096*/                OPC_RecordChild1, // #2 = $T
/* 11097*/                OPC_RecordChild2, // #3 = $F
/* 11098*/                OPC_CheckType, MVT::f64,
/* 11100*/                OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11102*/                OPC_EmitConvertToTarget, 1,
/* 11104*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 11107*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 11115*/                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)
/* 11124*/              /*Scope*/ 34, /*->11159*/
/* 11125*/                OPC_CheckCondCode, ISD::SETUGT,
/* 11127*/                OPC_MoveParent,
/* 11128*/                OPC_CheckType, MVT::i32,
/* 11130*/                OPC_MoveParent,
/* 11131*/                OPC_RecordChild1, // #2 = $T
/* 11132*/                OPC_RecordChild2, // #3 = $F
/* 11133*/                OPC_CheckType, MVT::f64,
/* 11135*/                OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11137*/                OPC_EmitConvertToTarget, 1,
/* 11139*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 11142*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 11150*/                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)
/* 11159*/              0, /*End of Scope*/
/* 11160*/            /*Scope*/ 70, /*->11231*/
/* 11161*/              OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 11163*/              OPC_MoveParent,
/* 11164*/              OPC_MoveChild2,
/* 11165*/              OPC_Scope, 31, /*->11198*/ // 2 children in Scope
/* 11167*/                OPC_CheckCondCode, ISD::SETGE,
/* 11169*/                OPC_MoveParent,
/* 11170*/                OPC_CheckType, MVT::i32,
/* 11172*/                OPC_MoveParent,
/* 11173*/                OPC_RecordChild1, // #2 = $T
/* 11174*/                OPC_RecordChild2, // #3 = $F
/* 11175*/                OPC_CheckType, MVT::f64,
/* 11177*/                OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11179*/                OPC_EmitConvertToTarget, 1,
/* 11181*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 11189*/                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)
/* 11198*/              /*Scope*/ 31, /*->11230*/
/* 11199*/                OPC_CheckCondCode, ISD::SETUGE,
/* 11201*/                OPC_MoveParent,
/* 11202*/                OPC_CheckType, MVT::i32,
/* 11204*/                OPC_MoveParent,
/* 11205*/                OPC_RecordChild1, // #2 = $T
/* 11206*/                OPC_RecordChild2, // #3 = $F
/* 11207*/                OPC_CheckType, MVT::f64,
/* 11209*/                OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11211*/                OPC_EmitConvertToTarget, 1,
/* 11213*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 11221*/                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)
/* 11230*/              0, /*End of Scope*/
/* 11231*/            /*Scope*/ 76, /*->11308*/
/* 11232*/              OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/* 11234*/              OPC_MoveParent,
/* 11235*/              OPC_MoveChild2,
/* 11236*/              OPC_Scope, 34, /*->11272*/ // 2 children in Scope
/* 11238*/                OPC_CheckCondCode, ISD::SETGT,
/* 11240*/                OPC_MoveParent,
/* 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, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11250*/                OPC_EmitConvertToTarget, 1,
/* 11252*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 11255*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 11263*/                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)
/* 11272*/              /*Scope*/ 34, /*->11307*/
/* 11273*/                OPC_CheckCondCode, ISD::SETUGT,
/* 11275*/                OPC_MoveParent,
/* 11276*/                OPC_CheckType, MVT::i32,
/* 11278*/                OPC_MoveParent,
/* 11279*/                OPC_RecordChild1, // #2 = $T
/* 11280*/                OPC_RecordChild2, // #3 = $F
/* 11281*/                OPC_CheckType, MVT::f64,
/* 11283*/                OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11285*/                OPC_EmitConvertToTarget, 1,
/* 11287*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 11290*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 11298*/                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)
/* 11307*/              0, /*End of Scope*/
/* 11308*/            /*Scope*/ 70, /*->11379*/
/* 11309*/              OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 11311*/              OPC_MoveParent,
/* 11312*/              OPC_MoveChild2,
/* 11313*/              OPC_Scope, 31, /*->11346*/ // 2 children in Scope
/* 11315*/                OPC_CheckCondCode, ISD::SETGE,
/* 11317*/                OPC_MoveParent,
/* 11318*/                OPC_CheckType, MVT::i32,
/* 11320*/                OPC_MoveParent,
/* 11321*/                OPC_RecordChild1, // #2 = $T
/* 11322*/                OPC_RecordChild2, // #3 = $F
/* 11323*/                OPC_CheckType, MVT::f32,
/* 11325*/                OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 11327*/                OPC_EmitConvertToTarget, 1,
/* 11329*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 11337*/                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)
/* 11346*/              /*Scope*/ 31, /*->11378*/
/* 11347*/                OPC_CheckCondCode, ISD::SETUGE,
/* 11349*/                OPC_MoveParent,
/* 11350*/                OPC_CheckType, MVT::i32,
/* 11352*/                OPC_MoveParent,
/* 11353*/                OPC_RecordChild1, // #2 = $T
/* 11354*/                OPC_RecordChild2, // #3 = $F
/* 11355*/                OPC_CheckType, MVT::f32,
/* 11357*/                OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 11359*/                OPC_EmitConvertToTarget, 1,
/* 11361*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 11369*/                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)
/* 11378*/              0, /*End of Scope*/
/* 11379*/            /*Scope*/ 76, /*->11456*/
/* 11380*/              OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/* 11382*/              OPC_MoveParent,
/* 11383*/              OPC_MoveChild2,
/* 11384*/              OPC_Scope, 34, /*->11420*/ // 2 children in Scope
/* 11386*/                OPC_CheckCondCode, ISD::SETGT,
/* 11388*/                OPC_MoveParent,
/* 11389*/                OPC_CheckType, MVT::i32,
/* 11391*/                OPC_MoveParent,
/* 11392*/                OPC_RecordChild1, // #2 = $T
/* 11393*/                OPC_RecordChild2, // #3 = $F
/* 11394*/                OPC_CheckType, MVT::f32,
/* 11396*/                OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 11398*/                OPC_EmitConvertToTarget, 1,
/* 11400*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 11403*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 11411*/                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)
/* 11420*/              /*Scope*/ 34, /*->11455*/
/* 11421*/                OPC_CheckCondCode, ISD::SETUGT,
/* 11423*/                OPC_MoveParent,
/* 11424*/                OPC_CheckType, MVT::i32,
/* 11426*/                OPC_MoveParent,
/* 11427*/                OPC_RecordChild1, // #2 = $T
/* 11428*/                OPC_RecordChild2, // #3 = $F
/* 11429*/                OPC_CheckType, MVT::f32,
/* 11431*/                OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 11433*/                OPC_EmitConvertToTarget, 1,
/* 11435*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 11438*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 11446*/                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)
/* 11455*/              0, /*End of Scope*/
/* 11456*/            /*Scope*/ 70, /*->11527*/
/* 11457*/              OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 11459*/              OPC_MoveParent,
/* 11460*/              OPC_MoveChild2,
/* 11461*/              OPC_Scope, 31, /*->11494*/ // 2 children in Scope
/* 11463*/                OPC_CheckCondCode, ISD::SETGE,
/* 11465*/                OPC_MoveParent,
/* 11466*/                OPC_CheckType, MVT::i32,
/* 11468*/                OPC_MoveParent,
/* 11469*/                OPC_RecordChild1, // #2 = $T
/* 11470*/                OPC_RecordChild2, // #3 = $F
/* 11471*/                OPC_CheckType, MVT::f64,
/* 11473*/                OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 11475*/                OPC_EmitConvertToTarget, 1,
/* 11477*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 11485*/                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)
/* 11494*/              /*Scope*/ 31, /*->11526*/
/* 11495*/                OPC_CheckCondCode, ISD::SETUGE,
/* 11497*/                OPC_MoveParent,
/* 11498*/                OPC_CheckType, MVT::i32,
/* 11500*/                OPC_MoveParent,
/* 11501*/                OPC_RecordChild1, // #2 = $T
/* 11502*/                OPC_RecordChild2, // #3 = $F
/* 11503*/                OPC_CheckType, MVT::f64,
/* 11505*/                OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 11507*/                OPC_EmitConvertToTarget, 1,
/* 11509*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 11517*/                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)
/* 11526*/              0, /*End of Scope*/
/* 11527*/            /*Scope*/ 76, /*->11604*/
/* 11528*/              OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/* 11530*/              OPC_MoveParent,
/* 11531*/              OPC_MoveChild2,
/* 11532*/              OPC_Scope, 34, /*->11568*/ // 2 children in Scope
/* 11534*/                OPC_CheckCondCode, ISD::SETGT,
/* 11536*/                OPC_MoveParent,
/* 11537*/                OPC_CheckType, MVT::i32,
/* 11539*/                OPC_MoveParent,
/* 11540*/                OPC_RecordChild1, // #2 = $T
/* 11541*/                OPC_RecordChild2, // #3 = $F
/* 11542*/                OPC_CheckType, MVT::f64,
/* 11544*/                OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 11546*/                OPC_EmitConvertToTarget, 1,
/* 11548*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 11551*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 11559*/                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)
/* 11568*/              /*Scope*/ 34, /*->11603*/
/* 11569*/                OPC_CheckCondCode, ISD::SETUGT,
/* 11571*/                OPC_MoveParent,
/* 11572*/                OPC_CheckType, MVT::i32,
/* 11574*/                OPC_MoveParent,
/* 11575*/                OPC_RecordChild1, // #2 = $T
/* 11576*/                OPC_RecordChild2, // #3 = $F
/* 11577*/                OPC_CheckType, MVT::f64,
/* 11579*/                OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 11581*/                OPC_EmitConvertToTarget, 1,
/* 11583*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 11586*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 11594*/                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)
/* 11603*/              0, /*End of Scope*/
/* 11604*/            0, /*End of Scope*/
/* 11605*/          /*Scope*/ 7|128,7/*903*/, /*->12510*/
/* 11607*/            OPC_MoveChild2,
/* 11608*/            OPC_Scope, 29, /*->11639*/ // 30 children in Scope
/* 11610*/              OPC_CheckCondCode, ISD::SETGE,
/* 11612*/              OPC_MoveParent,
/* 11613*/              OPC_CheckType, MVT::i32,
/* 11615*/              OPC_MoveParent,
/* 11616*/              OPC_RecordChild1, // #2 = $T
/* 11617*/              OPC_RecordChild2, // #3 = $F
/* 11618*/              OPC_CheckType, MVT::f32,
/* 11620*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11622*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11630*/              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)
/* 11639*/            /*Scope*/ 29, /*->11669*/
/* 11640*/              OPC_CheckCondCode, ISD::SETUGE,
/* 11642*/              OPC_MoveParent,
/* 11643*/              OPC_CheckType, MVT::i32,
/* 11645*/              OPC_MoveParent,
/* 11646*/              OPC_RecordChild1, // #2 = $T
/* 11647*/              OPC_RecordChild2, // #3 = $F
/* 11648*/              OPC_CheckType, MVT::f32,
/* 11650*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11652*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11660*/              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)
/* 11669*/            /*Scope*/ 29, /*->11699*/
/* 11670*/              OPC_CheckCondCode, ISD::SETLE,
/* 11672*/              OPC_MoveParent,
/* 11673*/              OPC_CheckType, MVT::i32,
/* 11675*/              OPC_MoveParent,
/* 11676*/              OPC_RecordChild1, // #2 = $T
/* 11677*/              OPC_RecordChild2, // #3 = $F
/* 11678*/              OPC_CheckType, MVT::f32,
/* 11680*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11682*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 11690*/              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)
/* 11699*/            /*Scope*/ 29, /*->11729*/
/* 11700*/              OPC_CheckCondCode, ISD::SETULE,
/* 11702*/              OPC_MoveParent,
/* 11703*/              OPC_CheckType, MVT::i32,
/* 11705*/              OPC_MoveParent,
/* 11706*/              OPC_RecordChild1, // #2 = $T
/* 11707*/              OPC_RecordChild2, // #3 = $F
/* 11708*/              OPC_CheckType, MVT::f32,
/* 11710*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11712*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 11720*/              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)
/* 11729*/            /*Scope*/ 29, /*->11759*/
/* 11730*/              OPC_CheckCondCode, ISD::SETEQ,
/* 11732*/              OPC_MoveParent,
/* 11733*/              OPC_CheckType, MVT::i32,
/* 11735*/              OPC_MoveParent,
/* 11736*/              OPC_RecordChild1, // #2 = $T
/* 11737*/              OPC_RecordChild2, // #3 = $F
/* 11738*/              OPC_CheckType, MVT::f32,
/* 11740*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11742*/              OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11750*/              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)
/* 11759*/            /*Scope*/ 29, /*->11789*/
/* 11760*/              OPC_CheckCondCode, ISD::SETNE,
/* 11762*/              OPC_MoveParent,
/* 11763*/              OPC_CheckType, MVT::i32,
/* 11765*/              OPC_MoveParent,
/* 11766*/              OPC_RecordChild1, // #2 = $T
/* 11767*/              OPC_RecordChild2, // #3 = $F
/* 11768*/              OPC_CheckType, MVT::f32,
/* 11770*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11772*/              OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11780*/              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)
/* 11789*/            /*Scope*/ 29, /*->11819*/
/* 11790*/              OPC_CheckCondCode, ISD::SETGE,
/* 11792*/              OPC_MoveParent,
/* 11793*/              OPC_CheckType, MVT::i32,
/* 11795*/              OPC_MoveParent,
/* 11796*/              OPC_RecordChild1, // #2 = $T
/* 11797*/              OPC_RecordChild2, // #3 = $F
/* 11798*/              OPC_CheckType, MVT::f64,
/* 11800*/              OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11802*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11810*/              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)
/* 11819*/            /*Scope*/ 29, /*->11849*/
/* 11820*/              OPC_CheckCondCode, ISD::SETUGE,
/* 11822*/              OPC_MoveParent,
/* 11823*/              OPC_CheckType, MVT::i32,
/* 11825*/              OPC_MoveParent,
/* 11826*/              OPC_RecordChild1, // #2 = $T
/* 11827*/              OPC_RecordChild2, // #3 = $F
/* 11828*/              OPC_CheckType, MVT::f64,
/* 11830*/              OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11832*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11840*/              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)
/* 11849*/            /*Scope*/ 29, /*->11879*/
/* 11850*/              OPC_CheckCondCode, ISD::SETLE,
/* 11852*/              OPC_MoveParent,
/* 11853*/              OPC_CheckType, MVT::i32,
/* 11855*/              OPC_MoveParent,
/* 11856*/              OPC_RecordChild1, // #2 = $T
/* 11857*/              OPC_RecordChild2, // #3 = $F
/* 11858*/              OPC_CheckType, MVT::f64,
/* 11860*/              OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11862*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 11870*/              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)
/* 11879*/            /*Scope*/ 29, /*->11909*/
/* 11880*/              OPC_CheckCondCode, ISD::SETULE,
/* 11882*/              OPC_MoveParent,
/* 11883*/              OPC_CheckType, MVT::i32,
/* 11885*/              OPC_MoveParent,
/* 11886*/              OPC_RecordChild1, // #2 = $T
/* 11887*/              OPC_RecordChild2, // #3 = $F
/* 11888*/              OPC_CheckType, MVT::f64,
/* 11890*/              OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11892*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 11900*/              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)
/* 11909*/            /*Scope*/ 29, /*->11939*/
/* 11910*/              OPC_CheckCondCode, ISD::SETEQ,
/* 11912*/              OPC_MoveParent,
/* 11913*/              OPC_CheckType, MVT::i32,
/* 11915*/              OPC_MoveParent,
/* 11916*/              OPC_RecordChild1, // #2 = $T
/* 11917*/              OPC_RecordChild2, // #3 = $F
/* 11918*/              OPC_CheckType, MVT::f64,
/* 11920*/              OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11922*/              OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11930*/              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)
/* 11939*/            /*Scope*/ 29, /*->11969*/
/* 11940*/              OPC_CheckCondCode, ISD::SETNE,
/* 11942*/              OPC_MoveParent,
/* 11943*/              OPC_CheckType, MVT::i32,
/* 11945*/              OPC_MoveParent,
/* 11946*/              OPC_RecordChild1, // #2 = $T
/* 11947*/              OPC_RecordChild2, // #3 = $F
/* 11948*/              OPC_CheckType, MVT::f64,
/* 11950*/              OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11952*/              OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11960*/              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)
/* 11969*/            /*Scope*/ 29, /*->11999*/
/* 11970*/              OPC_CheckCondCode, ISD::SETGE,
/* 11972*/              OPC_MoveParent,
/* 11973*/              OPC_CheckType, MVT::i32,
/* 11975*/              OPC_MoveParent,
/* 11976*/              OPC_RecordChild1, // #2 = $T
/* 11977*/              OPC_RecordChild2, // #3 = $F
/* 11978*/              OPC_CheckType, MVT::f64,
/* 11980*/              OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 11982*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 11990*/              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)
/* 11999*/            /*Scope*/ 29, /*->12029*/
/* 12000*/              OPC_CheckCondCode, ISD::SETUGE,
/* 12002*/              OPC_MoveParent,
/* 12003*/              OPC_CheckType, MVT::i32,
/* 12005*/              OPC_MoveParent,
/* 12006*/              OPC_RecordChild1, // #2 = $T
/* 12007*/              OPC_RecordChild2, // #3 = $F
/* 12008*/              OPC_CheckType, MVT::f64,
/* 12010*/              OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12012*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12020*/              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)
/* 12029*/            /*Scope*/ 29, /*->12059*/
/* 12030*/              OPC_CheckCondCode, ISD::SETLE,
/* 12032*/              OPC_MoveParent,
/* 12033*/              OPC_CheckType, MVT::i32,
/* 12035*/              OPC_MoveParent,
/* 12036*/              OPC_RecordChild1, // #2 = $T
/* 12037*/              OPC_RecordChild2, // #3 = $F
/* 12038*/              OPC_CheckType, MVT::f64,
/* 12040*/              OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12042*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 12050*/              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)
/* 12059*/            /*Scope*/ 29, /*->12089*/
/* 12060*/              OPC_CheckCondCode, ISD::SETULE,
/* 12062*/              OPC_MoveParent,
/* 12063*/              OPC_CheckType, MVT::i32,
/* 12065*/              OPC_MoveParent,
/* 12066*/              OPC_RecordChild1, // #2 = $T
/* 12067*/              OPC_RecordChild2, // #3 = $F
/* 12068*/              OPC_CheckType, MVT::f64,
/* 12070*/              OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12072*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 12080*/              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)
/* 12089*/            /*Scope*/ 29, /*->12119*/
/* 12090*/              OPC_CheckCondCode, ISD::SETEQ,
/* 12092*/              OPC_MoveParent,
/* 12093*/              OPC_CheckType, MVT::i32,
/* 12095*/              OPC_MoveParent,
/* 12096*/              OPC_RecordChild1, // #2 = $T
/* 12097*/              OPC_RecordChild2, // #3 = $F
/* 12098*/              OPC_CheckType, MVT::f64,
/* 12100*/              OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12102*/              OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12110*/              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)
/* 12119*/            /*Scope*/ 29, /*->12149*/
/* 12120*/              OPC_CheckCondCode, ISD::SETNE,
/* 12122*/              OPC_MoveParent,
/* 12123*/              OPC_CheckType, MVT::i32,
/* 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_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12140*/              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)
/* 12149*/            /*Scope*/ 29, /*->12179*/
/* 12150*/              OPC_CheckCondCode, ISD::SETGE,
/* 12152*/              OPC_MoveParent,
/* 12153*/              OPC_CheckType, MVT::i32,
/* 12155*/              OPC_MoveParent,
/* 12156*/              OPC_RecordChild1, // #2 = $T
/* 12157*/              OPC_RecordChild2, // #3 = $F
/* 12158*/              OPC_CheckType, MVT::f32,
/* 12160*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 12162*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12170*/              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)
/* 12179*/            /*Scope*/ 29, /*->12209*/
/* 12180*/              OPC_CheckCondCode, ISD::SETUGE,
/* 12182*/              OPC_MoveParent,
/* 12183*/              OPC_CheckType, MVT::i32,
/* 12185*/              OPC_MoveParent,
/* 12186*/              OPC_RecordChild1, // #2 = $T
/* 12187*/              OPC_RecordChild2, // #3 = $F
/* 12188*/              OPC_CheckType, MVT::f32,
/* 12190*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 12192*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12200*/              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)
/* 12209*/            /*Scope*/ 29, /*->12239*/
/* 12210*/              OPC_CheckCondCode, ISD::SETLE,
/* 12212*/              OPC_MoveParent,
/* 12213*/              OPC_CheckType, MVT::i32,
/* 12215*/              OPC_MoveParent,
/* 12216*/              OPC_RecordChild1, // #2 = $T
/* 12217*/              OPC_RecordChild2, // #3 = $F
/* 12218*/              OPC_CheckType, MVT::f32,
/* 12220*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 12222*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 12230*/              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)
/* 12239*/            /*Scope*/ 29, /*->12269*/
/* 12240*/              OPC_CheckCondCode, ISD::SETULE,
/* 12242*/              OPC_MoveParent,
/* 12243*/              OPC_CheckType, MVT::i32,
/* 12245*/              OPC_MoveParent,
/* 12246*/              OPC_RecordChild1, // #2 = $T
/* 12247*/              OPC_RecordChild2, // #3 = $F
/* 12248*/              OPC_CheckType, MVT::f32,
/* 12250*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 12252*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 12260*/              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)
/* 12269*/            /*Scope*/ 29, /*->12299*/
/* 12270*/              OPC_CheckCondCode, ISD::SETEQ,
/* 12272*/              OPC_MoveParent,
/* 12273*/              OPC_CheckType, MVT::i32,
/* 12275*/              OPC_MoveParent,
/* 12276*/              OPC_RecordChild1, // #2 = $T
/* 12277*/              OPC_RecordChild2, // #3 = $F
/* 12278*/              OPC_CheckType, MVT::f32,
/* 12280*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 12282*/              OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12290*/              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)
/* 12299*/            /*Scope*/ 29, /*->12329*/
/* 12300*/              OPC_CheckCondCode, ISD::SETNE,
/* 12302*/              OPC_MoveParent,
/* 12303*/              OPC_CheckType, MVT::i32,
/* 12305*/              OPC_MoveParent,
/* 12306*/              OPC_RecordChild1, // #2 = $T
/* 12307*/              OPC_RecordChild2, // #3 = $F
/* 12308*/              OPC_CheckType, MVT::f32,
/* 12310*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 12312*/              OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12320*/              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)
/* 12329*/            /*Scope*/ 29, /*->12359*/
/* 12330*/              OPC_CheckCondCode, ISD::SETGE,
/* 12332*/              OPC_MoveParent,
/* 12333*/              OPC_CheckType, MVT::i32,
/* 12335*/              OPC_MoveParent,
/* 12336*/              OPC_RecordChild1, // #2 = $T
/* 12337*/              OPC_RecordChild2, // #3 = $F
/* 12338*/              OPC_CheckType, MVT::f64,
/* 12340*/              OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 12342*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12350*/              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)
/* 12359*/            /*Scope*/ 29, /*->12389*/
/* 12360*/              OPC_CheckCondCode, ISD::SETUGE,
/* 12362*/              OPC_MoveParent,
/* 12363*/              OPC_CheckType, MVT::i32,
/* 12365*/              OPC_MoveParent,
/* 12366*/              OPC_RecordChild1, // #2 = $T
/* 12367*/              OPC_RecordChild2, // #3 = $F
/* 12368*/              OPC_CheckType, MVT::f64,
/* 12370*/              OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 12372*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12380*/              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)
/* 12389*/            /*Scope*/ 29, /*->12419*/
/* 12390*/              OPC_CheckCondCode, ISD::SETLE,
/* 12392*/              OPC_MoveParent,
/* 12393*/              OPC_CheckType, MVT::i32,
/* 12395*/              OPC_MoveParent,
/* 12396*/              OPC_RecordChild1, // #2 = $T
/* 12397*/              OPC_RecordChild2, // #3 = $F
/* 12398*/              OPC_CheckType, MVT::f64,
/* 12400*/              OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 12402*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 12410*/              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)
/* 12419*/            /*Scope*/ 29, /*->12449*/
/* 12420*/              OPC_CheckCondCode, ISD::SETULE,
/* 12422*/              OPC_MoveParent,
/* 12423*/              OPC_CheckType, MVT::i32,
/* 12425*/              OPC_MoveParent,
/* 12426*/              OPC_RecordChild1, // #2 = $T
/* 12427*/              OPC_RecordChild2, // #3 = $F
/* 12428*/              OPC_CheckType, MVT::f64,
/* 12430*/              OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 12432*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 12440*/              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)
/* 12449*/            /*Scope*/ 29, /*->12479*/
/* 12450*/              OPC_CheckCondCode, ISD::SETEQ,
/* 12452*/              OPC_MoveParent,
/* 12453*/              OPC_CheckType, MVT::i32,
/* 12455*/              OPC_MoveParent,
/* 12456*/              OPC_RecordChild1, // #2 = $T
/* 12457*/              OPC_RecordChild2, // #3 = $F
/* 12458*/              OPC_CheckType, MVT::f64,
/* 12460*/              OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 12462*/              OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12470*/              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)
/* 12479*/            /*Scope*/ 29, /*->12509*/
/* 12480*/              OPC_CheckCondCode, ISD::SETNE,
/* 12482*/              OPC_MoveParent,
/* 12483*/              OPC_CheckType, MVT::i32,
/* 12485*/              OPC_MoveParent,
/* 12486*/              OPC_RecordChild1, // #2 = $T
/* 12487*/              OPC_RecordChild2, // #3 = $F
/* 12488*/              OPC_CheckType, MVT::f64,
/* 12490*/              OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 12492*/              OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12500*/              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)
/* 12509*/            0, /*End of Scope*/
/* 12510*/          0, /*End of Scope*/
/* 12511*/        0, /*End of Scope*/
/* 12512*/      /*Scope*/ 4|128,6/*772*/, /*->13286*/
/* 12514*/        OPC_CheckChild0Type, MVT::i64,
/* 12516*/        OPC_Scope, 93, /*->12611*/ // 2 children in Scope
/* 12518*/          OPC_CheckChild1Integer, 0, 
/* 12520*/          OPC_MoveChild2,
/* 12521*/          OPC_Scope, 21, /*->12544*/ // 4 children in Scope
/* 12523*/            OPC_CheckCondCode, ISD::SETEQ,
/* 12525*/            OPC_MoveParent,
/* 12526*/            OPC_CheckType, MVT::i32,
/* 12528*/            OPC_MoveParent,
/* 12529*/            OPC_RecordChild1, // #1 = $T
/* 12530*/            OPC_RecordChild2, // #2 = $F
/* 12531*/            OPC_CheckType, MVT::f32,
/* 12533*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12535*/            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)
/* 12544*/          /*Scope*/ 21, /*->12566*/
/* 12545*/            OPC_CheckCondCode, ISD::SETNE,
/* 12547*/            OPC_MoveParent,
/* 12548*/            OPC_CheckType, MVT::i32,
/* 12550*/            OPC_MoveParent,
/* 12551*/            OPC_RecordChild1, // #1 = $T
/* 12552*/            OPC_RecordChild2, // #2 = $F
/* 12553*/            OPC_CheckType, MVT::f32,
/* 12555*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12557*/            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)
/* 12566*/          /*Scope*/ 21, /*->12588*/
/* 12567*/            OPC_CheckCondCode, ISD::SETEQ,
/* 12569*/            OPC_MoveParent,
/* 12570*/            OPC_CheckType, MVT::i32,
/* 12572*/            OPC_MoveParent,
/* 12573*/            OPC_RecordChild1, // #1 = $T
/* 12574*/            OPC_RecordChild2, // #2 = $F
/* 12575*/            OPC_CheckType, MVT::f64,
/* 12577*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12579*/            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)
/* 12588*/          /*Scope*/ 21, /*->12610*/
/* 12589*/            OPC_CheckCondCode, ISD::SETNE,
/* 12591*/            OPC_MoveParent,
/* 12592*/            OPC_CheckType, MVT::i32,
/* 12594*/            OPC_MoveParent,
/* 12595*/            OPC_RecordChild1, // #1 = $T
/* 12596*/            OPC_RecordChild2, // #2 = $F
/* 12597*/            OPC_CheckType, MVT::f64,
/* 12599*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12601*/            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)
/* 12610*/          0, /*End of Scope*/
/* 12611*/        /*Scope*/ 32|128,5/*672*/, /*->13285*/
/* 12613*/          OPC_RecordChild1, // #1 = $rhs
/* 12614*/          OPC_Scope, 46|128,2/*302*/, /*->12919*/ // 2 children in Scope
/* 12617*/            OPC_MoveChild1,
/* 12618*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 12621*/            OPC_Scope, 70, /*->12693*/ // 4 children in Scope
/* 12623*/              OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 12625*/              OPC_MoveParent,
/* 12626*/              OPC_MoveChild2,
/* 12627*/              OPC_Scope, 31, /*->12660*/ // 2 children in Scope
/* 12629*/                OPC_CheckCondCode, ISD::SETGE,
/* 12631*/                OPC_MoveParent,
/* 12632*/                OPC_CheckType, MVT::i32,
/* 12634*/                OPC_MoveParent,
/* 12635*/                OPC_RecordChild1, // #2 = $T
/* 12636*/                OPC_RecordChild2, // #3 = $F
/* 12637*/                OPC_CheckType, MVT::f32,
/* 12639*/                OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12641*/                OPC_EmitConvertToTarget, 1,
/* 12643*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 12651*/                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)
/* 12660*/              /*Scope*/ 31, /*->12692*/
/* 12661*/                OPC_CheckCondCode, ISD::SETUGE,
/* 12663*/                OPC_MoveParent,
/* 12664*/                OPC_CheckType, MVT::i32,
/* 12666*/                OPC_MoveParent,
/* 12667*/                OPC_RecordChild1, // #2 = $T
/* 12668*/                OPC_RecordChild2, // #3 = $F
/* 12669*/                OPC_CheckType, MVT::f32,
/* 12671*/                OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12673*/                OPC_EmitConvertToTarget, 1,
/* 12675*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 12683*/                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)
/* 12692*/              0, /*End of Scope*/
/* 12693*/            /*Scope*/ 76, /*->12770*/
/* 12694*/              OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/* 12696*/              OPC_MoveParent,
/* 12697*/              OPC_MoveChild2,
/* 12698*/              OPC_Scope, 34, /*->12734*/ // 2 children in Scope
/* 12700*/                OPC_CheckCondCode, ISD::SETGT,
/* 12702*/                OPC_MoveParent,
/* 12703*/                OPC_CheckType, MVT::i32,
/* 12705*/                OPC_MoveParent,
/* 12706*/                OPC_RecordChild1, // #2 = $T
/* 12707*/                OPC_RecordChild2, // #3 = $F
/* 12708*/                OPC_CheckType, MVT::f32,
/* 12710*/                OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12712*/                OPC_EmitConvertToTarget, 1,
/* 12714*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 12717*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 12725*/                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)
/* 12734*/              /*Scope*/ 34, /*->12769*/
/* 12735*/                OPC_CheckCondCode, ISD::SETUGT,
/* 12737*/                OPC_MoveParent,
/* 12738*/                OPC_CheckType, MVT::i32,
/* 12740*/                OPC_MoveParent,
/* 12741*/                OPC_RecordChild1, // #2 = $T
/* 12742*/                OPC_RecordChild2, // #3 = $F
/* 12743*/                OPC_CheckType, MVT::f32,
/* 12745*/                OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12747*/                OPC_EmitConvertToTarget, 1,
/* 12749*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 12752*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 12760*/                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)
/* 12769*/              0, /*End of Scope*/
/* 12770*/            /*Scope*/ 70, /*->12841*/
/* 12771*/              OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 12773*/              OPC_MoveParent,
/* 12774*/              OPC_MoveChild2,
/* 12775*/              OPC_Scope, 31, /*->12808*/ // 2 children in Scope
/* 12777*/                OPC_CheckCondCode, ISD::SETGE,
/* 12779*/                OPC_MoveParent,
/* 12780*/                OPC_CheckType, MVT::i32,
/* 12782*/                OPC_MoveParent,
/* 12783*/                OPC_RecordChild1, // #2 = $T
/* 12784*/                OPC_RecordChild2, // #3 = $F
/* 12785*/                OPC_CheckType, MVT::f64,
/* 12787*/                OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12789*/                OPC_EmitConvertToTarget, 1,
/* 12791*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 12799*/                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)
/* 12808*/              /*Scope*/ 31, /*->12840*/
/* 12809*/                OPC_CheckCondCode, ISD::SETUGE,
/* 12811*/                OPC_MoveParent,
/* 12812*/                OPC_CheckType, MVT::i32,
/* 12814*/                OPC_MoveParent,
/* 12815*/                OPC_RecordChild1, // #2 = $T
/* 12816*/                OPC_RecordChild2, // #3 = $F
/* 12817*/                OPC_CheckType, MVT::f64,
/* 12819*/                OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12821*/                OPC_EmitConvertToTarget, 1,
/* 12823*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 4,  // Results = #5
/* 12831*/                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)
/* 12840*/              0, /*End of Scope*/
/* 12841*/            /*Scope*/ 76, /*->12918*/
/* 12842*/              OPC_CheckPredicate, 20, // Predicate_immSExt16Plus1
/* 12844*/              OPC_MoveParent,
/* 12845*/              OPC_MoveChild2,
/* 12846*/              OPC_Scope, 34, /*->12882*/ // 2 children in Scope
/* 12848*/                OPC_CheckCondCode, ISD::SETGT,
/* 12850*/                OPC_MoveParent,
/* 12851*/                OPC_CheckType, MVT::i32,
/* 12853*/                OPC_MoveParent,
/* 12854*/                OPC_RecordChild1, // #2 = $T
/* 12855*/                OPC_RecordChild2, // #3 = $F
/* 12856*/                OPC_CheckType, MVT::f64,
/* 12858*/                OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12860*/                OPC_EmitConvertToTarget, 1,
/* 12862*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 12865*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 12873*/                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)
/* 12882*/              /*Scope*/ 34, /*->12917*/
/* 12883*/                OPC_CheckCondCode, ISD::SETUGT,
/* 12885*/                OPC_MoveParent,
/* 12886*/                OPC_CheckType, MVT::i32,
/* 12888*/                OPC_MoveParent,
/* 12889*/                OPC_RecordChild1, // #2 = $T
/* 12890*/                OPC_RecordChild2, // #3 = $F
/* 12891*/                OPC_CheckType, MVT::f64,
/* 12893*/                OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12895*/                OPC_EmitConvertToTarget, 1,
/* 12897*/                OPC_EmitNodeXForm, 2, 4, // Plus1
/* 12900*/                OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                              MVT::i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 12908*/                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)
/* 12917*/              0, /*End of Scope*/
/* 12918*/            0, /*End of Scope*/
/* 12919*/          /*Scope*/ 107|128,2/*363*/, /*->13284*/
/* 12921*/            OPC_MoveChild2,
/* 12922*/            OPC_Scope, 29, /*->12953*/ // 12 children in Scope
/* 12924*/              OPC_CheckCondCode, ISD::SETGE,
/* 12926*/              OPC_MoveParent,
/* 12927*/              OPC_CheckType, MVT::i32,
/* 12929*/              OPC_MoveParent,
/* 12930*/              OPC_RecordChild1, // #2 = $T
/* 12931*/              OPC_RecordChild2, // #3 = $F
/* 12932*/              OPC_CheckType, MVT::f32,
/* 12934*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12936*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12944*/              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)
/* 12953*/            /*Scope*/ 29, /*->12983*/
/* 12954*/              OPC_CheckCondCode, ISD::SETUGE,
/* 12956*/              OPC_MoveParent,
/* 12957*/              OPC_CheckType, MVT::i32,
/* 12959*/              OPC_MoveParent,
/* 12960*/              OPC_RecordChild1, // #2 = $T
/* 12961*/              OPC_RecordChild2, // #3 = $F
/* 12962*/              OPC_CheckType, MVT::f32,
/* 12964*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12966*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 12974*/              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)
/* 12983*/            /*Scope*/ 29, /*->13013*/
/* 12984*/              OPC_CheckCondCode, ISD::SETLE,
/* 12986*/              OPC_MoveParent,
/* 12987*/              OPC_CheckType, MVT::i32,
/* 12989*/              OPC_MoveParent,
/* 12990*/              OPC_RecordChild1, // #2 = $T
/* 12991*/              OPC_RecordChild2, // #3 = $F
/* 12992*/              OPC_CheckType, MVT::f32,
/* 12994*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 12996*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 13004*/              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)
/* 13013*/            /*Scope*/ 29, /*->13043*/
/* 13014*/              OPC_CheckCondCode, ISD::SETULE,
/* 13016*/              OPC_MoveParent,
/* 13017*/              OPC_CheckType, MVT::i32,
/* 13019*/              OPC_MoveParent,
/* 13020*/              OPC_RecordChild1, // #2 = $T
/* 13021*/              OPC_RecordChild2, // #3 = $F
/* 13022*/              OPC_CheckType, MVT::f32,
/* 13024*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13026*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 13034*/              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)
/* 13043*/            /*Scope*/ 29, /*->13073*/
/* 13044*/              OPC_CheckCondCode, ISD::SETEQ,
/* 13046*/              OPC_MoveParent,
/* 13047*/              OPC_CheckType, MVT::i32,
/* 13049*/              OPC_MoveParent,
/* 13050*/              OPC_RecordChild1, // #2 = $T
/* 13051*/              OPC_RecordChild2, // #3 = $F
/* 13052*/              OPC_CheckType, MVT::f32,
/* 13054*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13056*/              OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/* 13064*/              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)
/* 13073*/            /*Scope*/ 29, /*->13103*/
/* 13074*/              OPC_CheckCondCode, ISD::SETNE,
/* 13076*/              OPC_MoveParent,
/* 13077*/              OPC_CheckType, MVT::i32,
/* 13079*/              OPC_MoveParent,
/* 13080*/              OPC_RecordChild1, // #2 = $T
/* 13081*/              OPC_RecordChild2, // #3 = $F
/* 13082*/              OPC_CheckType, MVT::f32,
/* 13084*/              OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13086*/              OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/* 13094*/              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)
/* 13103*/            /*Scope*/ 29, /*->13133*/
/* 13104*/              OPC_CheckCondCode, ISD::SETGE,
/* 13106*/              OPC_MoveParent,
/* 13107*/              OPC_CheckType, MVT::i32,
/* 13109*/              OPC_MoveParent,
/* 13110*/              OPC_RecordChild1, // #2 = $T
/* 13111*/              OPC_RecordChild2, // #3 = $F
/* 13112*/              OPC_CheckType, MVT::f64,
/* 13114*/              OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13116*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 13124*/              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)
/* 13133*/            /*Scope*/ 29, /*->13163*/
/* 13134*/              OPC_CheckCondCode, ISD::SETUGE,
/* 13136*/              OPC_MoveParent,
/* 13137*/              OPC_CheckType, MVT::i32,
/* 13139*/              OPC_MoveParent,
/* 13140*/              OPC_RecordChild1, // #2 = $T
/* 13141*/              OPC_RecordChild2, // #3 = $F
/* 13142*/              OPC_CheckType, MVT::f64,
/* 13144*/              OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13146*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 13154*/              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)
/* 13163*/            /*Scope*/ 29, /*->13193*/
/* 13164*/              OPC_CheckCondCode, ISD::SETLE,
/* 13166*/              OPC_MoveParent,
/* 13167*/              OPC_CheckType, MVT::i32,
/* 13169*/              OPC_MoveParent,
/* 13170*/              OPC_RecordChild1, // #2 = $T
/* 13171*/              OPC_RecordChild2, // #3 = $F
/* 13172*/              OPC_CheckType, MVT::f64,
/* 13174*/              OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13176*/              OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 13184*/              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)
/* 13193*/            /*Scope*/ 29, /*->13223*/
/* 13194*/              OPC_CheckCondCode, ISD::SETULE,
/* 13196*/              OPC_MoveParent,
/* 13197*/              OPC_CheckType, MVT::i32,
/* 13199*/              OPC_MoveParent,
/* 13200*/              OPC_RecordChild1, // #2 = $T
/* 13201*/              OPC_RecordChild2, // #3 = $F
/* 13202*/              OPC_CheckType, MVT::f64,
/* 13204*/              OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13206*/              OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                            MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #4
/* 13214*/              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)
/* 13223*/            /*Scope*/ 29, /*->13253*/
/* 13224*/              OPC_CheckCondCode, ISD::SETEQ,
/* 13226*/              OPC_MoveParent,
/* 13227*/              OPC_CheckType, MVT::i32,
/* 13229*/              OPC_MoveParent,
/* 13230*/              OPC_RecordChild1, // #2 = $T
/* 13231*/              OPC_RecordChild2, // #3 = $F
/* 13232*/              OPC_CheckType, MVT::f64,
/* 13234*/              OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13236*/              OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/* 13244*/              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)
/* 13253*/            /*Scope*/ 29, /*->13283*/
/* 13254*/              OPC_CheckCondCode, ISD::SETNE,
/* 13256*/              OPC_MoveParent,
/* 13257*/              OPC_CheckType, MVT::i32,
/* 13259*/              OPC_MoveParent,
/* 13260*/              OPC_RecordChild1, // #2 = $T
/* 13261*/              OPC_RecordChild2, // #3 = $F
/* 13262*/              OPC_CheckType, MVT::f64,
/* 13264*/              OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13266*/              OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                            MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #4
/* 13274*/              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)
/* 13283*/            0, /*End of Scope*/
/* 13284*/          0, /*End of Scope*/
/* 13285*/        0, /*End of Scope*/
/* 13286*/      0, /*End of Scope*/
/* 13287*/    /*Scope*/ 44|128,1/*172*/, /*->13461*/
/* 13289*/      OPC_RecordChild0, // #0 = $cond
/* 13290*/      OPC_Scope, 6|128,1/*134*/, /*->13427*/ // 2 children in Scope
/* 13293*/        OPC_CheckChild0Type, MVT::i32,
/* 13295*/        OPC_RecordChild1, // #1 = $T
/* 13296*/        OPC_RecordChild2, // #2 = $F
/* 13297*/        OPC_SwitchType /*2 cases */, 62, MVT::f32,// ->13362
/* 13300*/          OPC_Scope, 11, /*->13313*/ // 5 children in Scope
/* 13302*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13304*/            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)
/* 13313*/          /*Scope*/ 11, /*->13325*/
/* 13314*/            OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 13316*/            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)
/* 13325*/          /*Scope*/ 11, /*->13337*/
/* 13326*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 13328*/            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)
/* 13337*/          /*Scope*/ 11, /*->13349*/
/* 13338*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 13340*/            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)
/* 13349*/          /*Scope*/ 11, /*->13361*/
/* 13350*/            OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 13352*/            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)
/* 13361*/          0, /*End of Scope*/
/* 13362*/        /*SwitchType*/ 62, MVT::f64,// ->13426
/* 13364*/          OPC_Scope, 11, /*->13377*/ // 5 children in Scope
/* 13366*/            OPC_CheckPatternPredicate, 37, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13368*/            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)
/* 13377*/          /*Scope*/ 11, /*->13389*/
/* 13378*/            OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13380*/            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)
/* 13389*/          /*Scope*/ 11, /*->13401*/
/* 13390*/            OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 13392*/            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)
/* 13401*/          /*Scope*/ 11, /*->13413*/
/* 13402*/            OPC_CheckPatternPredicate, 41, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 13404*/            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)
/* 13413*/          /*Scope*/ 11, /*->13425*/
/* 13414*/            OPC_CheckPatternPredicate, 42, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 13416*/            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)
/* 13425*/          0, /*End of Scope*/
/* 13426*/        0, // EndSwitchType
/* 13427*/      /*Scope*/ 32, /*->13460*/
/* 13428*/        OPC_CheckChild0Type, MVT::i64,
/* 13430*/        OPC_RecordChild1, // #1 = $T
/* 13431*/        OPC_RecordChild2, // #2 = $F
/* 13432*/        OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->13446
/* 13435*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13437*/          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)
/* 13446*/        /*SwitchType*/ 11, MVT::f64,// ->13459
/* 13448*/          OPC_CheckPatternPredicate, 38, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13450*/          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)
/* 13459*/        0, // EndSwitchType
/* 13460*/      0, /*End of Scope*/
/* 13461*/    0, /*End of Scope*/
/* 13462*/  /*SwitchOpcode*/ 55|128,1/*183*/, TARGET_VAL(ISD::ATOMIC_LOAD),// ->13649
/* 13466*/    OPC_RecordMemRef,
/* 13467*/    OPC_RecordNode, // #0 = 'atomic_load' chained node
/* 13468*/    OPC_RecordChild1, // #1 = $a
/* 13469*/    OPC_SwitchType /*2 cases */, 104, MVT::i32,// ->13576
/* 13472*/      OPC_Scope, 16, /*->13490*/ // 6 children in Scope
/* 13474*/        OPC_CheckPredicate, 24, // Predicate_atomic_load_8
/* 13476*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 13478*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 13481*/        OPC_EmitMergeInputChains1_0,
/* 13482*/        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)
/* 13490*/      /*Scope*/ 16, /*->13507*/
/* 13491*/        OPC_CheckPredicate, 25, // Predicate_atomic_load_16
/* 13493*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 13495*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 13498*/        OPC_EmitMergeInputChains1_0,
/* 13499*/        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)
/* 13507*/      /*Scope*/ 16, /*->13524*/
/* 13508*/        OPC_CheckPredicate, 26, // Predicate_atomic_load_32
/* 13510*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 13512*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 13515*/        OPC_EmitMergeInputChains1_0,
/* 13516*/        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)
/* 13524*/      /*Scope*/ 16, /*->13541*/
/* 13525*/        OPC_CheckPredicate, 24, // Predicate_atomic_load_8
/* 13527*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 13529*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 13532*/        OPC_EmitMergeInputChains1_0,
/* 13533*/        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)
/* 13541*/      /*Scope*/ 16, /*->13558*/
/* 13542*/        OPC_CheckPredicate, 25, // Predicate_atomic_load_16
/* 13544*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 13546*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 13549*/        OPC_EmitMergeInputChains1_0,
/* 13550*/        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)
/* 13558*/      /*Scope*/ 16, /*->13575*/
/* 13559*/        OPC_CheckPredicate, 26, // Predicate_atomic_load_32
/* 13561*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 13563*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 13566*/        OPC_EmitMergeInputChains1_0,
/* 13567*/        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)
/* 13575*/      0, /*End of Scope*/
/* 13576*/    /*SwitchType*/ 70, MVT::i64,// ->13648
/* 13578*/      OPC_Scope, 16, /*->13596*/ // 4 children in Scope
/* 13580*/        OPC_CheckPredicate, 24, // Predicate_atomic_load_8
/* 13582*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 13584*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 13587*/        OPC_EmitMergeInputChains1_0,
/* 13588*/        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)
/* 13596*/      /*Scope*/ 16, /*->13613*/
/* 13597*/        OPC_CheckPredicate, 25, // Predicate_atomic_load_16
/* 13599*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 13601*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 13604*/        OPC_EmitMergeInputChains1_0,
/* 13605*/        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)
/* 13613*/      /*Scope*/ 16, /*->13630*/
/* 13614*/        OPC_CheckPredicate, 26, // Predicate_atomic_load_32
/* 13616*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 13618*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 13621*/        OPC_EmitMergeInputChains1_0,
/* 13622*/        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)
/* 13630*/      /*Scope*/ 16, /*->13647*/
/* 13631*/        OPC_CheckPredicate, 27, // Predicate_atomic_load_64
/* 13633*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 13635*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #2 #3
/* 13638*/        OPC_EmitMergeInputChains1_0,
/* 13639*/        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)
/* 13647*/      0, /*End of Scope*/
/* 13648*/    0, // EndSwitchType
/* 13649*/  /*SwitchOpcode*/ 7|128,1/*135*/, TARGET_VAL(ISD::ATOMIC_STORE),// ->13788
/* 13653*/    OPC_RecordMemRef,
/* 13654*/    OPC_RecordNode, // #0 = 'atomic_store' chained node
/* 13655*/    OPC_RecordChild1, // #1 = $a
/* 13656*/    OPC_RecordChild2, // #2 = $v
/* 13657*/    OPC_Scope, 55, /*->13714*/ // 2 children in Scope
/* 13659*/      OPC_CheckChild2Type, MVT::i32,
/* 13661*/      OPC_Scope, 16, /*->13679*/ // 3 children in Scope
/* 13663*/        OPC_CheckPredicate, 24, // Predicate_atomic_store_8
/* 13665*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 13667*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #3 #4
/* 13670*/        OPC_EmitMergeInputChains1_0,
/* 13671*/        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)
/* 13679*/      /*Scope*/ 16, /*->13696*/
/* 13680*/        OPC_CheckPredicate, 25, // Predicate_atomic_store_16
/* 13682*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 13684*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #3 #4
/* 13687*/        OPC_EmitMergeInputChains1_0,
/* 13688*/        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)
/* 13696*/      /*Scope*/ 16, /*->13713*/
/* 13697*/        OPC_CheckPredicate, 26, // Predicate_atomic_store_32
/* 13699*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 13701*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #3 #4
/* 13704*/        OPC_EmitMergeInputChains1_0,
/* 13705*/        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)
/* 13713*/      0, /*End of Scope*/
/* 13714*/    /*Scope*/ 72, /*->13787*/
/* 13715*/      OPC_CheckChild2Type, MVT::i64,
/* 13717*/      OPC_Scope, 16, /*->13735*/ // 4 children in Scope
/* 13719*/        OPC_CheckPredicate, 24, // Predicate_atomic_store_8
/* 13721*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 13723*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #3 #4
/* 13726*/        OPC_EmitMergeInputChains1_0,
/* 13727*/        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)
/* 13735*/      /*Scope*/ 16, /*->13752*/
/* 13736*/        OPC_CheckPredicate, 25, // Predicate_atomic_store_16
/* 13738*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 13740*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #3 #4
/* 13743*/        OPC_EmitMergeInputChains1_0,
/* 13744*/        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)
/* 13752*/      /*Scope*/ 16, /*->13769*/
/* 13753*/        OPC_CheckPredicate, 26, // Predicate_atomic_store_32
/* 13755*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 13757*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #3 #4
/* 13760*/        OPC_EmitMergeInputChains1_0,
/* 13761*/        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)
/* 13769*/      /*Scope*/ 16, /*->13786*/
/* 13770*/        OPC_CheckPredicate, 27, // Predicate_atomic_store_64
/* 13772*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 13774*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$a #3 #4
/* 13777*/        OPC_EmitMergeInputChains1_0,
/* 13778*/        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)
/* 13786*/      0, /*End of Scope*/
/* 13787*/    0, /*End of Scope*/
/* 13788*/  /*SwitchOpcode*/ 75, TARGET_VAL(MipsISD::LWL),// ->13866
/* 13791*/    OPC_RecordMemRef,
/* 13792*/    OPC_RecordNode, // #0 = 'MipsLWL' chained node
/* 13793*/    OPC_RecordChild1, // #1 = $addr
/* 13794*/    OPC_RecordChild2, // #2 = $src
/* 13795*/    OPC_SwitchType /*2 cases */, 50, MVT::i32,// ->13848
/* 13798*/      OPC_Scope, 15, /*->13815*/ // 3 children in Scope
/* 13800*/        OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13802*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #3 #4
/* 13805*/        OPC_EmitMergeInputChains1_0,
/* 13806*/        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)
/* 13815*/      /*Scope*/ 15, /*->13831*/
/* 13816*/        OPC_CheckPatternPredicate, 43, // (Subtarget->hasEVA()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 13818*/        OPC_CheckComplexPat, /*CP*/12, /*#*/1, // selectIntAddr12MM:$addr #3 #4
/* 13821*/        OPC_EmitMergeInputChains1_0,
/* 13822*/        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)
/* 13831*/      /*Scope*/ 15, /*->13847*/
/* 13832*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 13834*/        OPC_CheckComplexPat, /*CP*/12, /*#*/1, // selectIntAddr12MM:$addr #3 #4
/* 13837*/        OPC_EmitMergeInputChains1_0,
/* 13838*/        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)
/* 13847*/      0, /*End of Scope*/
/* 13848*/    /*SwitchType*/ 15, MVT::i64,// ->13865
/* 13850*/      OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 13852*/      OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #3 #4
/* 13855*/      OPC_EmitMergeInputChains1_0,
/* 13856*/      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)
/* 13865*/    0, // EndSwitchType
/* 13866*/  /*SwitchOpcode*/ 75, TARGET_VAL(MipsISD::LWR),// ->13944
/* 13869*/    OPC_RecordMemRef,
/* 13870*/    OPC_RecordNode, // #0 = 'MipsLWR' chained node
/* 13871*/    OPC_RecordChild1, // #1 = $addr
/* 13872*/    OPC_RecordChild2, // #2 = $src
/* 13873*/    OPC_SwitchType /*2 cases */, 50, MVT::i32,// ->13926
/* 13876*/      OPC_Scope, 15, /*->13893*/ // 3 children in Scope
/* 13878*/        OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13880*/        OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #3 #4
/* 13883*/        OPC_EmitMergeInputChains1_0,
/* 13884*/        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)
/* 13893*/      /*Scope*/ 15, /*->13909*/
/* 13894*/        OPC_CheckPatternPredicate, 43, // (Subtarget->hasEVA()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 13896*/        OPC_CheckComplexPat, /*CP*/12, /*#*/1, // selectIntAddr12MM:$addr #3 #4
/* 13899*/        OPC_EmitMergeInputChains1_0,
/* 13900*/        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)
/* 13909*/      /*Scope*/ 15, /*->13925*/
/* 13910*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 13912*/        OPC_CheckComplexPat, /*CP*/12, /*#*/1, // selectIntAddr12MM:$addr #3 #4
/* 13915*/        OPC_EmitMergeInputChains1_0,
/* 13916*/        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)
/* 13925*/      0, /*End of Scope*/
/* 13926*/    /*SwitchType*/ 15, MVT::i64,// ->13943
/* 13928*/      OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 13930*/      OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #3 #4
/* 13933*/      OPC_EmitMergeInputChains1_0,
/* 13934*/      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)
/* 13943*/    0, // EndSwitchType
/* 13944*/  /*SwitchOpcode*/ 74, TARGET_VAL(MipsISD::SWL),// ->14021
/* 13947*/    OPC_RecordMemRef,
/* 13948*/    OPC_RecordNode, // #0 = 'MipsSWL' chained node
/* 13949*/    OPC_RecordChild1, // #1 = $rt
/* 13950*/    OPC_Scope, 50, /*->14002*/ // 2 children in Scope
/* 13952*/      OPC_CheckChild1Type, MVT::i32,
/* 13954*/      OPC_RecordChild2, // #2 = $addr
/* 13955*/      OPC_Scope, 14, /*->13971*/ // 3 children in Scope
/* 13957*/        OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 13959*/        OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/* 13962*/        OPC_EmitMergeInputChains1_0,
/* 13963*/        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)
/* 13971*/      /*Scope*/ 14, /*->13986*/
/* 13972*/        OPC_CheckPatternPredicate, 43, // (Subtarget->hasEVA()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 13974*/        OPC_CheckComplexPat, /*CP*/12, /*#*/2, // selectIntAddr12MM:$addr #3 #4
/* 13977*/        OPC_EmitMergeInputChains1_0,
/* 13978*/        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)
/* 13986*/      /*Scope*/ 14, /*->14001*/
/* 13987*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 13989*/        OPC_CheckComplexPat, /*CP*/12, /*#*/2, // selectIntAddr12MM:$addr #3 #4
/* 13992*/        OPC_EmitMergeInputChains1_0,
/* 13993*/        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)
/* 14001*/      0, /*End of Scope*/
/* 14002*/    /*Scope*/ 17, /*->14020*/
/* 14003*/      OPC_CheckChild1Type, MVT::i64,
/* 14005*/      OPC_RecordChild2, // #2 = $addr
/* 14006*/      OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 14008*/      OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/* 14011*/      OPC_EmitMergeInputChains1_0,
/* 14012*/      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)
/* 14020*/    0, /*End of Scope*/
/* 14021*/  /*SwitchOpcode*/ 74, TARGET_VAL(MipsISD::SWR),// ->14098
/* 14024*/    OPC_RecordMemRef,
/* 14025*/    OPC_RecordNode, // #0 = 'MipsSWR' chained node
/* 14026*/    OPC_RecordChild1, // #1 = $rt
/* 14027*/    OPC_Scope, 50, /*->14079*/ // 2 children in Scope
/* 14029*/      OPC_CheckChild1Type, MVT::i32,
/* 14031*/      OPC_RecordChild2, // #2 = $addr
/* 14032*/      OPC_Scope, 14, /*->14048*/ // 3 children in Scope
/* 14034*/        OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 14036*/        OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/* 14039*/        OPC_EmitMergeInputChains1_0,
/* 14040*/        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)
/* 14048*/      /*Scope*/ 14, /*->14063*/
/* 14049*/        OPC_CheckPatternPredicate, 43, // (Subtarget->hasEVA()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 14051*/        OPC_CheckComplexPat, /*CP*/12, /*#*/2, // selectIntAddr12MM:$addr #3 #4
/* 14054*/        OPC_EmitMergeInputChains1_0,
/* 14055*/        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)
/* 14063*/      /*Scope*/ 14, /*->14078*/
/* 14064*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 14066*/        OPC_CheckComplexPat, /*CP*/12, /*#*/2, // selectIntAddr12MM:$addr #3 #4
/* 14069*/        OPC_EmitMergeInputChains1_0,
/* 14070*/        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)
/* 14078*/      0, /*End of Scope*/
/* 14079*/    /*Scope*/ 17, /*->14097*/
/* 14080*/      OPC_CheckChild1Type, MVT::i64,
/* 14082*/      OPC_RecordChild2, // #2 = $addr
/* 14083*/      OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 14085*/      OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/* 14088*/      OPC_EmitMergeInputChains1_0,
/* 14089*/      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)
/* 14097*/    0, /*End of Scope*/
/* 14098*/  /*SwitchOpcode*/ 21, TARGET_VAL(MipsISD::LDL),// ->14122
/* 14101*/    OPC_RecordMemRef,
/* 14102*/    OPC_RecordNode, // #0 = 'MipsLDL' chained node
/* 14103*/    OPC_RecordChild1, // #1 = $addr
/* 14104*/    OPC_RecordChild2, // #2 = $src
/* 14105*/    OPC_CheckType, MVT::i64,
/* 14107*/    OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 14109*/    OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #3 #4
/* 14112*/    OPC_EmitMergeInputChains1_0,
/* 14113*/    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)
/* 14122*/  /*SwitchOpcode*/ 21, TARGET_VAL(MipsISD::LDR),// ->14146
/* 14125*/    OPC_RecordMemRef,
/* 14126*/    OPC_RecordNode, // #0 = 'MipsLDR' chained node
/* 14127*/    OPC_RecordChild1, // #1 = $addr
/* 14128*/    OPC_RecordChild2, // #2 = $src
/* 14129*/    OPC_CheckType, MVT::i64,
/* 14131*/    OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 14133*/    OPC_CheckComplexPat, /*CP*/1, /*#*/1, // selectIntAddr:$addr #3 #4
/* 14136*/    OPC_EmitMergeInputChains1_0,
/* 14137*/    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)
/* 14146*/  /*SwitchOpcode*/ 20, TARGET_VAL(MipsISD::SDL),// ->14169
/* 14149*/    OPC_RecordMemRef,
/* 14150*/    OPC_RecordNode, // #0 = 'MipsSDL' chained node
/* 14151*/    OPC_RecordChild1, // #1 = $rt
/* 14152*/    OPC_CheckChild1Type, MVT::i64,
/* 14154*/    OPC_RecordChild2, // #2 = $addr
/* 14155*/    OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 14157*/    OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/* 14160*/    OPC_EmitMergeInputChains1_0,
/* 14161*/    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)
/* 14169*/  /*SwitchOpcode*/ 20, TARGET_VAL(MipsISD::SDR),// ->14192
/* 14172*/    OPC_RecordMemRef,
/* 14173*/    OPC_RecordNode, // #0 = 'MipsSDR' chained node
/* 14174*/    OPC_RecordChild1, // #1 = $rt
/* 14175*/    OPC_CheckChild1Type, MVT::i64,
/* 14177*/    OPC_RecordChild2, // #2 = $addr
/* 14178*/    OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 14180*/    OPC_CheckComplexPat, /*CP*/1, /*#*/2, // selectIntAddr:$addr #3 #4
/* 14183*/    OPC_EmitMergeInputChains1_0,
/* 14184*/    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)
/* 14192*/  /*SwitchOpcode*/ 121|128,10/*1401*/, TARGET_VAL(ISD::INTRINSIC_W_CHAIN),// ->15597
/* 14196*/    OPC_RecordNode, // #0 = 'intrinsic_w_chain' chained node
/* 14197*/    OPC_Scope, 69, /*->14268*/ // 42 children in Scope
/* 14199*/      OPC_CheckChild1Integer, 31|128,27/*3487*/, 
/* 14202*/      OPC_RecordChild2, // #1 = $rt
/* 14203*/      OPC_RecordChild3, // #2 = $rs_sa
/* 14204*/      OPC_Scope, 37, /*->14243*/ // 3 children in Scope
/* 14206*/        OPC_MoveChild3,
/* 14207*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 14210*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 14212*/        OPC_MoveParent,
/* 14213*/        OPC_Scope, 13, /*->14228*/ // 2 children in Scope
/* 14215*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14217*/          OPC_EmitMergeInputChains1_0,
/* 14218*/          OPC_EmitConvertToTarget, 2,
/* 14220*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLL_S_W), 0|OPFL_Chain,
                        MVT::i32, 2/*#Ops*/, 1, 3, 
                    // Src: (intrinsic_w_chain:{ *:[i32] } 3487:{ *:[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)
/* 14228*/        /*Scope*/ 13, /*->14242*/
/* 14229*/          OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14231*/          OPC_EmitMergeInputChains1_0,
/* 14232*/          OPC_EmitConvertToTarget, 2,
/* 14234*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLL_S_W_MM), 0|OPFL_Chain,
                        MVT::i32, 2/*#Ops*/, 1, 3, 
                    // Src: (intrinsic_w_chain:{ *:[i32] } 3487:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$sa) - Complexity = 12
                    // Dst: (SHLL_S_W_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$sa)
/* 14242*/        0, /*End of Scope*/
/* 14243*/      /*Scope*/ 11, /*->14255*/
/* 14244*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14246*/        OPC_EmitMergeInputChains1_0,
/* 14247*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_S_W), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3487:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHLLV_S_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 14255*/      /*Scope*/ 11, /*->14267*/
/* 14256*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14258*/        OPC_EmitMergeInputChains1_0,
/* 14259*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_S_W_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3487:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHLLV_S_W_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 14267*/      0, /*End of Scope*/
/* 14268*/    /*Scope*/ 42, /*->14311*/
/* 14269*/      OPC_CheckChild1Integer, 13|128,27/*3469*/, 
/* 14272*/      OPC_RecordChild2, // #1 = $mask
/* 14273*/      OPC_MoveChild2,
/* 14274*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 14277*/      OPC_Scope, 15, /*->14294*/ // 2 children in Scope
/* 14279*/        OPC_CheckPredicate, 29, // Predicate_immZExt10
/* 14281*/        OPC_MoveParent,
/* 14282*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14284*/        OPC_EmitMergeInputChains1_0,
/* 14285*/        OPC_EmitConvertToTarget, 1,
/* 14287*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::RDDSP), 0|OPFL_Chain,
                      MVT::i32, 1/*#Ops*/, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3469:{ *:[iPTR] }, (imm:{ *:[i32] })<<P:Predicate_immZExt10>>:$mask) - Complexity = 12
                  // Dst: (RDDSP:{ *:[i32] } (imm:{ *:[i32] }):$mask)
/* 14294*/      /*Scope*/ 15, /*->14310*/
/* 14295*/        OPC_CheckPredicate, 30, // Predicate_immZExt7
/* 14297*/        OPC_MoveParent,
/* 14298*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14300*/        OPC_EmitMergeInputChains1_0,
/* 14301*/        OPC_EmitConvertToTarget, 1,
/* 14303*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::RDDSP_MM), 0|OPFL_Chain,
                      MVT::i32, 1/*#Ops*/, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3469:{ *:[iPTR] }, (imm:{ *:[i32] })<<P:Predicate_immZExt7>>:$mask) - Complexity = 12
                  // Dst: (RDDSP_MM:{ *:[i32] } (imm:{ *:[i32] }):$mask)
/* 14310*/      0, /*End of Scope*/
/* 14311*/    /*Scope*/ 31, /*->14343*/
/* 14312*/      OPC_CheckChild1Integer, 125|128,22/*2941*/, 
/* 14315*/      OPC_RecordChild2, // #1 = $rs
/* 14316*/      OPC_RecordChild3, // #2 = $rt
/* 14317*/      OPC_Scope, 11, /*->14330*/ // 2 children in Scope
/* 14319*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14321*/        OPC_EmitMergeInputChains1_0,
/* 14322*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQ_S_W), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 2941:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (ADDQ_S_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 14330*/      /*Scope*/ 11, /*->14342*/
/* 14331*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14333*/        OPC_EmitMergeInputChains1_0,
/* 14334*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQ_S_W_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 2941:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (ADDQ_S_W_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 14342*/      0, /*End of Scope*/
/* 14343*/    /*Scope*/ 31, /*->14375*/
/* 14344*/      OPC_CheckChild1Integer, 101|128,27/*3557*/, 
/* 14347*/      OPC_RecordChild2, // #1 = $rs
/* 14348*/      OPC_RecordChild3, // #2 = $rt
/* 14349*/      OPC_Scope, 11, /*->14362*/ // 2 children in Scope
/* 14351*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14353*/        OPC_EmitMergeInputChains1_0,
/* 14354*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQ_S_W), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3557:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (SUBQ_S_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 14362*/      /*Scope*/ 11, /*->14374*/
/* 14363*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14365*/        OPC_EmitMergeInputChains1_0,
/* 14366*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQ_S_W_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3557:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (SUBQ_S_W_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 14374*/      0, /*End of Scope*/
/* 14375*/    /*Scope*/ 28, /*->14404*/
/* 14376*/      OPC_CheckChild1Integer, 118|128,22/*2934*/, 
/* 14379*/      OPC_RecordChild2, // #1 = $rt
/* 14380*/      OPC_Scope, 10, /*->14392*/ // 2 children in Scope
/* 14382*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14384*/        OPC_EmitMergeInputChains1_0,
/* 14385*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ABSQ_S_W), 0|OPFL_Chain,
                      MVT::i32, 1/*#Ops*/, 1, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 2934:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (ABSQ_S_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt)
/* 14392*/      /*Scope*/ 10, /*->14403*/
/* 14393*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14395*/        OPC_EmitMergeInputChains1_0,
/* 14396*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ABSQ_S_W_MM), 0|OPFL_Chain,
                      MVT::i32, 1/*#Ops*/, 1, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 2934:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (ABSQ_S_W_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs)
/* 14403*/      0, /*End of Scope*/
/* 14404*/    /*Scope*/ 31, /*->14436*/
/* 14405*/      OPC_CheckChild1Integer, 77|128,26/*3405*/, 
/* 14408*/      OPC_RecordChild2, // #1 = $rs
/* 14409*/      OPC_RecordChild3, // #2 = $rt
/* 14410*/      OPC_Scope, 11, /*->14423*/ // 2 children in Scope
/* 14412*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14414*/        OPC_EmitMergeInputChains1_0,
/* 14415*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEQ_S_W_PHL), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3405:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEQ_S_W_PHL:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14423*/      /*Scope*/ 11, /*->14435*/
/* 14424*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14426*/        OPC_EmitMergeInputChains1_0,
/* 14427*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEQ_S_W_PHL_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3405:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEQ_S_W_PHL_MM:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14435*/      0, /*End of Scope*/
/* 14436*/    /*Scope*/ 31, /*->14468*/
/* 14437*/      OPC_CheckChild1Integer, 78|128,26/*3406*/, 
/* 14440*/      OPC_RecordChild2, // #1 = $rs
/* 14441*/      OPC_RecordChild3, // #2 = $rt
/* 14442*/      OPC_Scope, 11, /*->14455*/ // 2 children in Scope
/* 14444*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14446*/        OPC_EmitMergeInputChains1_0,
/* 14447*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEQ_S_W_PHR), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3406:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEQ_S_W_PHR:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14455*/      /*Scope*/ 11, /*->14467*/
/* 14456*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14458*/        OPC_EmitMergeInputChains1_0,
/* 14459*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEQ_S_W_PHR_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3406:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEQ_S_W_PHR_MM:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 14467*/      0, /*End of Scope*/
/* 14468*/    /*Scope*/ 31, /*->14500*/
/* 14469*/      OPC_CheckChild1Integer, 35|128,24/*3107*/, 
/* 14472*/      OPC_RecordChild2, // #1 = $rs
/* 14473*/      OPC_RecordChild3, // #2 = $rt
/* 14474*/      OPC_Scope, 11, /*->14487*/ // 2 children in Scope
/* 14476*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14478*/        OPC_EmitMergeInputChains1_0,
/* 14479*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGU_EQ_QB), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3107:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGU_EQ_QB:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14487*/      /*Scope*/ 11, /*->14499*/
/* 14488*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14490*/        OPC_EmitMergeInputChains1_0,
/* 14491*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGU_EQ_QB_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3107:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGU_EQ_QB_MM:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14499*/      0, /*End of Scope*/
/* 14500*/    /*Scope*/ 31, /*->14532*/
/* 14501*/      OPC_CheckChild1Integer, 37|128,24/*3109*/, 
/* 14504*/      OPC_RecordChild2, // #1 = $rs
/* 14505*/      OPC_RecordChild3, // #2 = $rt
/* 14506*/      OPC_Scope, 11, /*->14519*/ // 2 children in Scope
/* 14508*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14510*/        OPC_EmitMergeInputChains1_0,
/* 14511*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGU_LT_QB), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3109:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGU_LT_QB:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14519*/      /*Scope*/ 11, /*->14531*/
/* 14520*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14522*/        OPC_EmitMergeInputChains1_0,
/* 14523*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGU_LT_QB_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3109:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGU_LT_QB_MM:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14531*/      0, /*End of Scope*/
/* 14532*/    /*Scope*/ 31, /*->14564*/
/* 14533*/      OPC_CheckChild1Integer, 36|128,24/*3108*/, 
/* 14536*/      OPC_RecordChild2, // #1 = $rs
/* 14537*/      OPC_RecordChild3, // #2 = $rt
/* 14538*/      OPC_Scope, 11, /*->14551*/ // 2 children in Scope
/* 14540*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14542*/        OPC_EmitMergeInputChains1_0,
/* 14543*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGU_LE_QB), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3108:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGU_LE_QB:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14551*/      /*Scope*/ 11, /*->14563*/
/* 14552*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14554*/        OPC_EmitMergeInputChains1_0,
/* 14555*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGU_LE_QB_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3108:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGU_LE_QB_MM:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14563*/      0, /*End of Scope*/
/* 14564*/    /*Scope*/ 31, /*->14596*/
/* 14565*/      OPC_CheckChild1Integer, 125|128,25/*3325*/, 
/* 14568*/      OPC_RecordChild2, // #1 = $base
/* 14569*/      OPC_RecordChild3, // #2 = $index
/* 14570*/      OPC_Scope, 11, /*->14583*/ // 2 children in Scope
/* 14572*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14574*/        OPC_EmitMergeInputChains1_0,
/* 14575*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LWX), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3325:{ *:[iPTR] }, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index) - Complexity = 8
                  // Dst: (LWX:{ *:[i32] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index)
/* 14583*/      /*Scope*/ 11, /*->14595*/
/* 14584*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14586*/        OPC_EmitMergeInputChains1_0,
/* 14587*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LWX_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3325:{ *:[iPTR] }, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index) - Complexity = 8
                  // Dst: (LWX_MM:{ *:[i32] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index)
/* 14595*/      0, /*End of Scope*/
/* 14596*/    /*Scope*/ 31, /*->14628*/
/* 14597*/      OPC_CheckChild1Integer, 123|128,25/*3323*/, 
/* 14600*/      OPC_RecordChild2, // #1 = $base
/* 14601*/      OPC_RecordChild3, // #2 = $index
/* 14602*/      OPC_Scope, 11, /*->14615*/ // 2 children in Scope
/* 14604*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14606*/        OPC_EmitMergeInputChains1_0,
/* 14607*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LHX), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3323:{ *:[iPTR] }, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index) - Complexity = 8
                  // Dst: (LHX:{ *:[i32] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index)
/* 14615*/      /*Scope*/ 11, /*->14627*/
/* 14616*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14618*/        OPC_EmitMergeInputChains1_0,
/* 14619*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LHX_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3323:{ *:[iPTR] }, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index) - Complexity = 8
                  // Dst: (LHX_MM:{ *:[i32] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index)
/* 14627*/      0, /*End of Scope*/
/* 14628*/    /*Scope*/ 31, /*->14660*/
/* 14629*/      OPC_CheckChild1Integer, 114|128,25/*3314*/, 
/* 14632*/      OPC_RecordChild2, // #1 = $base
/* 14633*/      OPC_RecordChild3, // #2 = $index
/* 14634*/      OPC_Scope, 11, /*->14647*/ // 2 children in Scope
/* 14636*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14638*/        OPC_EmitMergeInputChains1_0,
/* 14639*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LBUX), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3314:{ *:[iPTR] }, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index) - Complexity = 8
                  // Dst: (LBUX:{ *:[i32] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index)
/* 14647*/      /*Scope*/ 11, /*->14659*/
/* 14648*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14650*/        OPC_EmitMergeInputChains1_0,
/* 14651*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::LBUX_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3314:{ *:[iPTR] }, iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index) - Complexity = 8
                  // Dst: (LBUX_MM:{ *:[i32] } iPTR:{ *:[iPTR] }:$base, iPTR:{ *:[i32] }:$index)
/* 14659*/      0, /*End of Scope*/
/* 14660*/    /*Scope*/ 31, /*->14692*/
/* 14661*/      OPC_CheckChild1Integer, 109|128,25/*3309*/, 
/* 14664*/      OPC_RecordChild2, // #1 = $src
/* 14665*/      OPC_RecordChild3, // #2 = $rs
/* 14666*/      OPC_Scope, 11, /*->14679*/ // 2 children in Scope
/* 14668*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14670*/        OPC_EmitMergeInputChains1_0,
/* 14671*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::INSV), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3309:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (INSV:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs)
/* 14679*/      /*Scope*/ 11, /*->14691*/
/* 14680*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14682*/        OPC_EmitMergeInputChains1_0,
/* 14683*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::INSV_MM), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3309:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (INSV_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs)
/* 14691*/      0, /*End of Scope*/
/* 14692*/    /*Scope*/ 31, /*->14724*/
/* 14693*/      OPC_CheckChild1Integer, 32|128,24/*3104*/, 
/* 14696*/      OPC_RecordChild2, // #1 = $rs
/* 14697*/      OPC_RecordChild3, // #2 = $rt
/* 14698*/      OPC_Scope, 11, /*->14711*/ // 2 children in Scope
/* 14700*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14702*/        OPC_EmitMergeInputChains1_0,
/* 14703*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGDU_EQ_QB), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3104:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGDU_EQ_QB:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14711*/      /*Scope*/ 11, /*->14723*/
/* 14712*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14714*/        OPC_EmitMergeInputChains1_0,
/* 14715*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGDU_EQ_QB_MMR2), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3104:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGDU_EQ_QB_MMR2:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14723*/      0, /*End of Scope*/
/* 14724*/    /*Scope*/ 31, /*->14756*/
/* 14725*/      OPC_CheckChild1Integer, 34|128,24/*3106*/, 
/* 14728*/      OPC_RecordChild2, // #1 = $rs
/* 14729*/      OPC_RecordChild3, // #2 = $rt
/* 14730*/      OPC_Scope, 11, /*->14743*/ // 2 children in Scope
/* 14732*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14734*/        OPC_EmitMergeInputChains1_0,
/* 14735*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGDU_LT_QB), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3106:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGDU_LT_QB:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14743*/      /*Scope*/ 11, /*->14755*/
/* 14744*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14746*/        OPC_EmitMergeInputChains1_0,
/* 14747*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGDU_LT_QB_MMR2), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3106:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGDU_LT_QB_MMR2:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14755*/      0, /*End of Scope*/
/* 14756*/    /*Scope*/ 31, /*->14788*/
/* 14757*/      OPC_CheckChild1Integer, 33|128,24/*3105*/, 
/* 14760*/      OPC_RecordChild2, // #1 = $rs
/* 14761*/      OPC_RecordChild3, // #2 = $rt
/* 14762*/      OPC_Scope, 11, /*->14775*/ // 2 children in Scope
/* 14764*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14766*/        OPC_EmitMergeInputChains1_0,
/* 14767*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGDU_LE_QB), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3105:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGDU_LE_QB:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14775*/      /*Scope*/ 11, /*->14787*/
/* 14776*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14778*/        OPC_EmitMergeInputChains1_0,
/* 14779*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::CMPGDU_LE_QB_MMR2), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3105:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPGDU_LE_QB_MMR2:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 14787*/      0, /*End of Scope*/
/* 14788*/    /*Scope*/ 31, /*->14820*/
/* 14789*/      OPC_CheckChild1Integer, 84|128,26/*3412*/, 
/* 14792*/      OPC_RecordChild2, // #1 = $rs
/* 14793*/      OPC_RecordChild3, // #2 = $rt
/* 14794*/      OPC_Scope, 11, /*->14807*/ // 2 children in Scope
/* 14796*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14798*/        OPC_EmitMergeInputChains1_0,
/* 14799*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_S_W), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3412:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (MULQ_S_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 14807*/      /*Scope*/ 11, /*->14819*/
/* 14808*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14810*/        OPC_EmitMergeInputChains1_0,
/* 14811*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_S_W_MMR2), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3412:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (MULQ_S_W_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 14819*/      0, /*End of Scope*/
/* 14820*/    /*Scope*/ 31, /*->14852*/
/* 14821*/      OPC_CheckChild1Integer, 82|128,26/*3410*/, 
/* 14824*/      OPC_RecordChild2, // #1 = $rs
/* 14825*/      OPC_RecordChild3, // #2 = $rt
/* 14826*/      OPC_Scope, 11, /*->14839*/ // 2 children in Scope
/* 14828*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 14830*/        OPC_EmitMergeInputChains1_0,
/* 14831*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_RS_W), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3410:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (MULQ_RS_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 14839*/      /*Scope*/ 11, /*->14851*/
/* 14840*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 14842*/        OPC_EmitMergeInputChains1_0,
/* 14843*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_RS_W_MMR2), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[i32] } 3410:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (MULQ_RS_W_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 14851*/      0, /*End of Scope*/
/* 14852*/    /*Scope*/ 16, /*->14869*/
/* 14853*/      OPC_CheckChild1Integer, 14|128,23/*2958*/, 
/* 14856*/      OPC_RecordChild2, // #1 = $a
/* 14857*/      OPC_RecordChild3, // #2 = $b
/* 14858*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14860*/      OPC_EmitMergeInputChains1_0,
/* 14861*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDSC), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 1, 2, 
                // Src: (intrinsic_w_chain:{ *:[i32] } 2958:{ *:[iPTR] }, i32:{ *:[i32] }:$a, i32:{ *:[i32] }:$b) - Complexity = 8
                // Dst: (ADDSC:{ *:[i32] } i32:{ *:[i32] }:$a, i32:{ *:[i32] }:$b)
/* 14869*/    /*Scope*/ 16, /*->14886*/
/* 14870*/      OPC_CheckChild1Integer, 29|128,23/*2973*/, 
/* 14873*/      OPC_RecordChild2, // #1 = $a
/* 14874*/      OPC_RecordChild3, // #2 = $b
/* 14875*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14877*/      OPC_EmitMergeInputChains1_0,
/* 14878*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDWC), 0|OPFL_Chain,
                    MVT::i32, 2/*#Ops*/, 1, 2, 
                // Src: (intrinsic_w_chain:{ *:[i32] } 2973:{ *:[iPTR] }, i32:{ *:[i32] }:$a, i32:{ *:[i32] }:$b) - Complexity = 8
                // Dst: (ADDWC:{ *:[i32] } i32:{ *:[i32] }:$a, i32:{ *:[i32] }:$b)
/* 14886*/    /*Scope*/ 10, /*->14897*/
/* 14887*/      OPC_CheckChild1Integer, 100|128,23/*3044*/, 
/* 14890*/      OPC_EmitMergeInputChains1_0,
/* 14891*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BPOSGE32_PSEUDO), 0|OPFL_Chain,
                    MVT::i32, 0/*#Ops*/, 
                // Src: (intrinsic_w_chain:{ *:[i32] } 3044:{ *:[iPTR] }) - Complexity = 8
                // Dst: (BPOSGE32_PSEUDO:{ *:[i32] })
/* 14897*/    /*Scope*/ 69, /*->14967*/
/* 14898*/      OPC_CheckChild1Integer, 30|128,27/*3486*/, 
/* 14901*/      OPC_RecordChild2, // #1 = $rt
/* 14902*/      OPC_RecordChild3, // #2 = $rs_sa
/* 14903*/      OPC_Scope, 37, /*->14942*/ // 3 children in Scope
/* 14905*/        OPC_MoveChild3,
/* 14906*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 14909*/        OPC_CheckPredicate, 31, // Predicate_immZExt4
/* 14911*/        OPC_MoveParent,
/* 14912*/        OPC_Scope, 13, /*->14927*/ // 2 children in Scope
/* 14914*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14916*/          OPC_EmitMergeInputChains1_0,
/* 14917*/          OPC_EmitConvertToTarget, 2,
/* 14919*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLL_S_PH), 0|OPFL_Chain,
                        MVT::v2i16, 2/*#Ops*/, 1, 3, 
                    // Src: (intrinsic_w_chain:{ *:[v2i16] } 3486:{ *:[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)
/* 14927*/        /*Scope*/ 13, /*->14941*/
/* 14928*/          OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14930*/          OPC_EmitMergeInputChains1_0,
/* 14931*/          OPC_EmitConvertToTarget, 2,
/* 14933*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLL_S_PH_MM), 0|OPFL_Chain,
                        MVT::v2i16, 2/*#Ops*/, 1, 3, 
                    // Src: (intrinsic_w_chain:{ *:[v2i16] } 3486:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$sa) - Complexity = 12
                    // Dst: (SHLL_S_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, (imm:{ *:[i32] }):$sa)
/* 14941*/        0, /*End of Scope*/
/* 14942*/      /*Scope*/ 11, /*->14954*/
/* 14943*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14945*/        OPC_EmitMergeInputChains1_0,
/* 14946*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_S_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3486:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHLLV_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 14954*/      /*Scope*/ 11, /*->14966*/
/* 14955*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 14957*/        OPC_EmitMergeInputChains1_0,
/* 14958*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_S_PH_MM), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3486:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHLLV_S_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 14966*/      0, /*End of Scope*/
/* 14967*/    /*Scope*/ 52, /*->15020*/
/* 14968*/      OPC_CheckChild1Integer, 28|128,27/*3484*/, 
/* 14971*/      OPC_RecordChild2, // #1 = $a
/* 14972*/      OPC_RecordChild3, // #2 = $shamt
/* 14973*/      OPC_Scope, 20, /*->14995*/ // 3 children in Scope
/* 14975*/        OPC_MoveChild3,
/* 14976*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 14979*/        OPC_CheckPredicate, 31, // Predicate_immZExt4
/* 14981*/        OPC_MoveParent,
/* 14982*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14984*/        OPC_EmitMergeInputChains1_0,
/* 14985*/        OPC_EmitConvertToTarget, 2,
/* 14987*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLL_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 3, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3484:{ *:[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)
/* 14995*/      /*Scope*/ 11, /*->15007*/
/* 14996*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 14998*/        OPC_EmitMergeInputChains1_0,
/* 14999*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3484:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHLLV_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 15007*/      /*Scope*/ 11, /*->15019*/
/* 15008*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15010*/        OPC_EmitMergeInputChains1_0,
/* 15011*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_PH_MM), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3484:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHLLV_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 15019*/      0, /*End of Scope*/
/* 15020*/    /*Scope*/ 52, /*->15073*/
/* 15021*/      OPC_CheckChild1Integer, 29|128,27/*3485*/, 
/* 15024*/      OPC_RecordChild2, // #1 = $a
/* 15025*/      OPC_RecordChild3, // #2 = $shamt
/* 15026*/      OPC_Scope, 20, /*->15048*/ // 3 children in Scope
/* 15028*/        OPC_MoveChild3,
/* 15029*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 15032*/        OPC_CheckPredicate, 32, // Predicate_immZExt3
/* 15034*/        OPC_MoveParent,
/* 15035*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15037*/        OPC_EmitMergeInputChains1_0,
/* 15038*/        OPC_EmitConvertToTarget, 2,
/* 15040*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLL_QB), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 3, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 3485:{ *:[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)
/* 15048*/      /*Scope*/ 11, /*->15060*/
/* 15049*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15051*/        OPC_EmitMergeInputChains1_0,
/* 15052*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_QB), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 3485:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHLLV_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 15060*/      /*Scope*/ 11, /*->15072*/
/* 15061*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15063*/        OPC_EmitMergeInputChains1_0,
/* 15064*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHLLV_QB_MM), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 3485:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHLLV_QB_MM:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 15072*/      0, /*End of Scope*/
/* 15073*/    /*Scope*/ 28, /*->15102*/
/* 15074*/      OPC_CheckChild1Integer, 116|128,22/*2932*/, 
/* 15077*/      OPC_RecordChild2, // #1 = $rt
/* 15078*/      OPC_Scope, 10, /*->15090*/ // 2 children in Scope
/* 15080*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15082*/        OPC_EmitMergeInputChains1_0,
/* 15083*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ABSQ_S_PH), 0|OPFL_Chain,
                      MVT::v2i16, 1/*#Ops*/, 1, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 2932:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ABSQ_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt)
/* 15090*/      /*Scope*/ 10, /*->15101*/
/* 15091*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15093*/        OPC_EmitMergeInputChains1_0,
/* 15094*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ABSQ_S_PH_MM), 0|OPFL_Chain,
                      MVT::v2i16, 1/*#Ops*/, 1, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 2932:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs) - Complexity = 8
                  // Dst: (ABSQ_S_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs)
/* 15101*/      0, /*End of Scope*/
/* 15102*/    /*Scope*/ 31, /*->15134*/
/* 15103*/      OPC_CheckChild1Integer, 9|128,27/*3465*/, 
/* 15106*/      OPC_RecordChild2, // #1 = $rs
/* 15107*/      OPC_RecordChild3, // #2 = $rt
/* 15108*/      OPC_Scope, 11, /*->15121*/ // 2 children in Scope
/* 15110*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15112*/        OPC_EmitMergeInputChains1_0,
/* 15113*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQ_RS_PH_W), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3465:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (PRECRQ_RS_PH_W:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15121*/      /*Scope*/ 11, /*->15133*/
/* 15122*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15124*/        OPC_EmitMergeInputChains1_0,
/* 15125*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQ_RS_PH_W_MM), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3465:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (PRECRQ_RS_PH_W_MM:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15133*/      0, /*End of Scope*/
/* 15134*/    /*Scope*/ 31, /*->15166*/
/* 15135*/      OPC_CheckChild1Integer, 10|128,27/*3466*/, 
/* 15138*/      OPC_RecordChild2, // #1 = $rs
/* 15139*/      OPC_RecordChild3, // #2 = $rt
/* 15140*/      OPC_Scope, 11, /*->15153*/ // 2 children in Scope
/* 15142*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15144*/        OPC_EmitMergeInputChains1_0,
/* 15145*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQU_S_QB_PH), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 3466:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECRQU_S_QB_PH:{ *:[v4i8] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15153*/      /*Scope*/ 11, /*->15165*/
/* 15154*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15156*/        OPC_EmitMergeInputChains1_0,
/* 15157*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQU_S_QB_PH_MM), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 3466:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECRQU_S_QB_PH_MM:{ *:[v4i8] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15165*/      0, /*End of Scope*/
/* 15166*/    /*Scope*/ 31, /*->15198*/
/* 15167*/      OPC_CheckChild1Integer, 79|128,26/*3407*/, 
/* 15170*/      OPC_RecordChild2, // #1 = $rs
/* 15171*/      OPC_RecordChild3, // #2 = $rt
/* 15172*/      OPC_Scope, 11, /*->15185*/ // 2 children in Scope
/* 15174*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15176*/        OPC_EmitMergeInputChains1_0,
/* 15177*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEU_S_PH_QBL), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3407:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEU_S_PH_QBL:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15185*/      /*Scope*/ 11, /*->15197*/
/* 15186*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15188*/        OPC_EmitMergeInputChains1_0,
/* 15189*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEU_S_PH_QBL_MM), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3407:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEU_S_PH_QBL_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15197*/      0, /*End of Scope*/
/* 15198*/    /*Scope*/ 31, /*->15230*/
/* 15199*/      OPC_CheckChild1Integer, 80|128,26/*3408*/, 
/* 15202*/      OPC_RecordChild2, // #1 = $rs
/* 15203*/      OPC_RecordChild3, // #2 = $rt
/* 15204*/      OPC_Scope, 11, /*->15217*/ // 2 children in Scope
/* 15206*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15208*/        OPC_EmitMergeInputChains1_0,
/* 15209*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEU_S_PH_QBR), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3408:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEU_S_PH_QBR:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15217*/      /*Scope*/ 11, /*->15229*/
/* 15218*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15220*/        OPC_EmitMergeInputChains1_0,
/* 15221*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULEU_S_PH_QBR_MM), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3408:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULEU_S_PH_QBR_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15229*/      0, /*End of Scope*/
/* 15230*/    /*Scope*/ 31, /*->15262*/
/* 15231*/      OPC_CheckChild1Integer, 81|128,26/*3409*/, 
/* 15234*/      OPC_RecordChild2, // #1 = $rs
/* 15235*/      OPC_RecordChild3, // #2 = $rt
/* 15236*/      OPC_Scope, 11, /*->15249*/ // 2 children in Scope
/* 15238*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15240*/        OPC_EmitMergeInputChains1_0,
/* 15241*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_RS_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3409:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULQ_RS_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15249*/      /*Scope*/ 11, /*->15261*/
/* 15250*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15252*/        OPC_EmitMergeInputChains1_0,
/* 15253*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_RS_PH_MM), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3409:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULQ_RS_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15261*/      0, /*End of Scope*/
/* 15262*/    /*Scope*/ 31, /*->15294*/
/* 15263*/      OPC_CheckChild1Integer, 121|128,26/*3449*/, 
/* 15266*/      OPC_RecordChild2, // #1 = $rs
/* 15267*/      OPC_RecordChild3, // #2 = $rt
/* 15268*/      OPC_Scope, 11, /*->15281*/ // 2 children in Scope
/* 15270*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15272*/        OPC_EmitMergeInputChains1_0,
/* 15273*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PICK_QB), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 3449:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PICK_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 15281*/      /*Scope*/ 11, /*->15293*/
/* 15282*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15284*/        OPC_EmitMergeInputChains1_0,
/* 15285*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PICK_QB_MM), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 3449:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PICK_QB_MM:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 15293*/      0, /*End of Scope*/
/* 15294*/    /*Scope*/ 31, /*->15326*/
/* 15295*/      OPC_CheckChild1Integer, 120|128,26/*3448*/, 
/* 15298*/      OPC_RecordChild2, // #1 = $rs
/* 15299*/      OPC_RecordChild3, // #2 = $rt
/* 15300*/      OPC_Scope, 11, /*->15313*/ // 2 children in Scope
/* 15302*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15304*/        OPC_EmitMergeInputChains1_0,
/* 15305*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PICK_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3448:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PICK_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15313*/      /*Scope*/ 11, /*->15325*/
/* 15314*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15316*/        OPC_EmitMergeInputChains1_0,
/* 15317*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PICK_PH_MM), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3448:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PICK_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15325*/      0, /*End of Scope*/
/* 15326*/    /*Scope*/ 31, /*->15358*/
/* 15327*/      OPC_CheckChild1Integer, 15|128,23/*2959*/, 
/* 15330*/      OPC_RecordChild2, // #1 = $rs
/* 15331*/      OPC_RecordChild3, // #2 = $rt
/* 15332*/      OPC_Scope, 11, /*->15345*/ // 2 children in Scope
/* 15334*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15336*/        OPC_EmitMergeInputChains1_0,
/* 15337*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 2959:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDU_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15345*/      /*Scope*/ 11, /*->15357*/
/* 15346*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15348*/        OPC_EmitMergeInputChains1_0,
/* 15349*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU_PH_MMR2), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 2959:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDU_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15357*/      0, /*End of Scope*/
/* 15358*/    /*Scope*/ 31, /*->15390*/
/* 15359*/      OPC_CheckChild1Integer, 17|128,23/*2961*/, 
/* 15362*/      OPC_RecordChild2, // #1 = $rs
/* 15363*/      OPC_RecordChild3, // #2 = $rt
/* 15364*/      OPC_Scope, 11, /*->15377*/ // 2 children in Scope
/* 15366*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15368*/        OPC_EmitMergeInputChains1_0,
/* 15369*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU_S_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 2961:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDU_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15377*/      /*Scope*/ 11, /*->15389*/
/* 15378*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15380*/        OPC_EmitMergeInputChains1_0,
/* 15381*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU_S_PH_MMR2), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 2961:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDU_S_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15389*/      0, /*End of Scope*/
/* 15390*/    /*Scope*/ 31, /*->15422*/
/* 15391*/      OPC_CheckChild1Integer, 122|128,27/*3578*/, 
/* 15394*/      OPC_RecordChild2, // #1 = $rs
/* 15395*/      OPC_RecordChild3, // #2 = $rt
/* 15396*/      OPC_Scope, 11, /*->15409*/ // 2 children in Scope
/* 15398*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15400*/        OPC_EmitMergeInputChains1_0,
/* 15401*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3578:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBU_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15409*/      /*Scope*/ 11, /*->15421*/
/* 15410*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15412*/        OPC_EmitMergeInputChains1_0,
/* 15413*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_PH_MMR2), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3578:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBU_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15421*/      0, /*End of Scope*/
/* 15422*/    /*Scope*/ 31, /*->15454*/
/* 15423*/      OPC_CheckChild1Integer, 124|128,27/*3580*/, 
/* 15426*/      OPC_RecordChild2, // #1 = $rs
/* 15427*/      OPC_RecordChild3, // #2 = $rt
/* 15428*/      OPC_Scope, 11, /*->15441*/ // 2 children in Scope
/* 15430*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15432*/        OPC_EmitMergeInputChains1_0,
/* 15433*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_S_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3580:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBU_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15441*/      /*Scope*/ 11, /*->15453*/
/* 15442*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15444*/        OPC_EmitMergeInputChains1_0,
/* 15445*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_S_PH_MMR2), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3580:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBU_S_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15453*/      0, /*End of Scope*/
/* 15454*/    /*Scope*/ 28, /*->15483*/
/* 15455*/      OPC_CheckChild1Integer, 117|128,22/*2933*/, 
/* 15458*/      OPC_RecordChild2, // #1 = $rt
/* 15459*/      OPC_Scope, 10, /*->15471*/ // 2 children in Scope
/* 15461*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15463*/        OPC_EmitMergeInputChains1_0,
/* 15464*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ABSQ_S_QB), 0|OPFL_Chain,
                      MVT::v4i8, 1/*#Ops*/, 1, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 2933:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (ABSQ_S_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 15471*/      /*Scope*/ 10, /*->15482*/
/* 15472*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15474*/        OPC_EmitMergeInputChains1_0,
/* 15475*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ABSQ_S_QB_MMR2), 0|OPFL_Chain,
                      MVT::v4i8, 1/*#Ops*/, 1, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 2933:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (ABSQ_S_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 15482*/      0, /*End of Scope*/
/* 15483*/    /*Scope*/ 31, /*->15515*/
/* 15484*/      OPC_CheckChild1Integer, 76|128,26/*3404*/, 
/* 15487*/      OPC_RecordChild2, // #1 = $rs
/* 15488*/      OPC_RecordChild3, // #2 = $rt
/* 15489*/      OPC_Scope, 11, /*->15502*/ // 2 children in Scope
/* 15491*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15493*/        OPC_EmitMergeInputChains1_0,
/* 15494*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MUL_S_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3404:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MUL_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15502*/      /*Scope*/ 11, /*->15514*/
/* 15503*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15505*/        OPC_EmitMergeInputChains1_0,
/* 15506*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MUL_S_PH_MMR2), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3404:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MUL_S_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15514*/      0, /*End of Scope*/
/* 15515*/    /*Scope*/ 31, /*->15547*/
/* 15516*/      OPC_CheckChild1Integer, 83|128,26/*3411*/, 
/* 15519*/      OPC_RecordChild2, // #1 = $rs
/* 15520*/      OPC_RecordChild3, // #2 = $rt
/* 15521*/      OPC_Scope, 11, /*->15534*/ // 2 children in Scope
/* 15523*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15525*/        OPC_EmitMergeInputChains1_0,
/* 15526*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_S_PH), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3411:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULQ_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15534*/      /*Scope*/ 11, /*->15546*/
/* 15535*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15537*/        OPC_EmitMergeInputChains1_0,
/* 15538*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MULQ_S_PH_MMR2), 0|OPFL_Chain,
                      MVT::v2i16, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v2i16] } 3411:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (MULQ_S_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15546*/      0, /*End of Scope*/
/* 15547*/    /*Scope*/ 31, /*->15579*/
/* 15548*/      OPC_CheckChild1Integer, 4|128,27/*3460*/, 
/* 15551*/      OPC_RecordChild2, // #1 = $rs
/* 15552*/      OPC_RecordChild3, // #2 = $rt
/* 15553*/      OPC_Scope, 11, /*->15566*/ // 2 children in Scope
/* 15555*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15557*/        OPC_EmitMergeInputChains1_0,
/* 15558*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECR_QB_PH), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 3460:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECR_QB_PH:{ *:[v4i8] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15566*/      /*Scope*/ 11, /*->15578*/
/* 15567*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15569*/        OPC_EmitMergeInputChains1_0,
/* 15570*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECR_QB_PH_MMR2), 0|OPFL_Chain,
                      MVT::v4i8, 2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_w_chain:{ *:[v4i8] } 3460:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECR_QB_PH_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 15578*/      0, /*End of Scope*/
/* 15579*/    /*Scope*/ 16, /*->15596*/
/* 15580*/      OPC_CheckChild1Integer, 73|128,26/*3401*/, 
/* 15583*/      OPC_RecordChild2, // #1 = $a
/* 15584*/      OPC_RecordChild3, // #2 = $b
/* 15585*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15587*/      OPC_EmitMergeInputChains1_0,
/* 15588*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MUL_PH), 0|OPFL_Chain,
                    MVT::v2i16, 2/*#Ops*/, 1, 2, 
                // Src: (intrinsic_w_chain:{ *:[v2i16] } 3401:{ *:[iPTR] }, v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b) - Complexity = 8
                // Dst: (MUL_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b)
/* 15596*/    0, /*End of Scope*/
/* 15597*/  /*SwitchOpcode*/ 82|128,40/*5202*/, TARGET_VAL(ISD::INTRINSIC_WO_CHAIN),// ->20803
/* 15601*/    OPC_Scope, 65, /*->15668*/ // 254 children in Scope
/* 15603*/      OPC_CheckChild0Integer, 36|128,27/*3492*/, 
/* 15606*/      OPC_RecordChild1, // #0 = $rt
/* 15607*/      OPC_RecordChild2, // #1 = $rs_sa
/* 15608*/      OPC_Scope, 35, /*->15645*/ // 3 children in Scope
/* 15610*/        OPC_MoveChild2,
/* 15611*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 15614*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 15616*/        OPC_MoveParent,
/* 15617*/        OPC_Scope, 12, /*->15631*/ // 2 children in Scope
/* 15619*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15621*/          OPC_EmitConvertToTarget, 1,
/* 15623*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_R_W), 0,
                        MVT::i32, 2/*#Ops*/, 0, 2, 
                    // Src: (intrinsic_wo_chain:{ *:[i32] } 3492:{ *:[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)
/* 15631*/        /*Scope*/ 12, /*->15644*/
/* 15632*/          OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15634*/          OPC_EmitConvertToTarget, 1,
/* 15636*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_R_W_MM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 2, 
                    // Src: (intrinsic_wo_chain:{ *:[i32] } 3492:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$sa) - Complexity = 12
                    // Dst: (SHRA_R_W_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$sa)
/* 15644*/        0, /*End of Scope*/
/* 15645*/      /*Scope*/ 10, /*->15656*/
/* 15646*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15648*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_R_W), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3492:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHRAV_R_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 15656*/      /*Scope*/ 10, /*->15667*/
/* 15657*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15659*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_R_W_MM), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3492:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHRAV_R_W_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 15667*/      0, /*End of Scope*/
/* 15668*/    /*Scope*/ 43, /*->15712*/
/* 15669*/      OPC_CheckChild0Integer, 32|128,23/*2976*/, 
/* 15672*/      OPC_RecordChild1, // #0 = $src
/* 15673*/      OPC_RecordChild2, // #1 = $rs
/* 15674*/      OPC_RecordChild3, // #2 = $sa
/* 15675*/      OPC_MoveChild3,
/* 15676*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 15679*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 15681*/      OPC_MoveParent,
/* 15682*/      OPC_Scope, 13, /*->15697*/ // 2 children in Scope
/* 15684*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15686*/        OPC_EmitConvertToTarget, 2,
/* 15688*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::APPEND), 0,
                      MVT::i32, 3/*#Ops*/, 1, 3, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 2976:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$sa) - Complexity = 12
                  // Dst: (APPEND:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 15697*/      /*Scope*/ 13, /*->15711*/
/* 15698*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15700*/        OPC_EmitConvertToTarget, 2,
/* 15702*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::APPEND_MMR2), 0,
                      MVT::i32, 3/*#Ops*/, 1, 3, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 2976:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$sa) - Complexity = 12
                  // Dst: (APPEND_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 15711*/      0, /*End of Scope*/
/* 15712*/    /*Scope*/ 43, /*->15756*/
/* 15713*/      OPC_CheckChild0Integer, 57|128,23/*3001*/, 
/* 15716*/      OPC_RecordChild1, // #0 = $src
/* 15717*/      OPC_RecordChild2, // #1 = $rs
/* 15718*/      OPC_RecordChild3, // #2 = $sa
/* 15719*/      OPC_MoveChild3,
/* 15720*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 15723*/      OPC_CheckPredicate, 33, // Predicate_immZExt2
/* 15725*/      OPC_MoveParent,
/* 15726*/      OPC_Scope, 13, /*->15741*/ // 2 children in Scope
/* 15728*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15730*/        OPC_EmitConvertToTarget, 2,
/* 15732*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BALIGN), 0,
                      MVT::i32, 3/*#Ops*/, 1, 3, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3001:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt2>>:$sa) - Complexity = 12
                  // Dst: (BALIGN:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 15741*/      /*Scope*/ 13, /*->15755*/
/* 15742*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15744*/        OPC_EmitConvertToTarget, 2,
/* 15746*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BALIGN_MMR2), 0,
                      MVT::i32, 3/*#Ops*/, 1, 3, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3001:{ *:[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)
/* 15755*/      0, /*End of Scope*/
/* 15756*/    /*Scope*/ 43, /*->15800*/
/* 15757*/      OPC_CheckChild0Integer, 11|128,27/*3467*/, 
/* 15760*/      OPC_RecordChild1, // #0 = $src
/* 15761*/      OPC_RecordChild2, // #1 = $rs
/* 15762*/      OPC_RecordChild3, // #2 = $sa
/* 15763*/      OPC_MoveChild3,
/* 15764*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 15767*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 15769*/      OPC_MoveParent,
/* 15770*/      OPC_Scope, 13, /*->15785*/ // 2 children in Scope
/* 15772*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15774*/        OPC_EmitConvertToTarget, 2,
/* 15776*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PREPEND), 0,
                      MVT::i32, 3/*#Ops*/, 1, 3, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3467:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$sa) - Complexity = 12
                  // Dst: (PREPEND:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 15785*/      /*Scope*/ 13, /*->15799*/
/* 15786*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15788*/        OPC_EmitConvertToTarget, 2,
/* 15790*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PREPEND_MMR2), 0,
                      MVT::i32, 3/*#Ops*/, 1, 3, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3467:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$sa) - Complexity = 12
                  // Dst: (PREPEND_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 15799*/      0, /*End of Scope*/
/* 15800*/    /*Scope*/ 29, /*->15830*/
/* 15801*/      OPC_CheckChild0Integer, 60|128,26/*3388*/, 
/* 15804*/      OPC_RecordChild1, // #0 = $rs
/* 15805*/      OPC_RecordChild2, // #1 = $rt
/* 15806*/      OPC_Scope, 10, /*->15818*/ // 2 children in Scope
/* 15808*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15810*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MODSUB), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3388:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (MODSUB:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15818*/      /*Scope*/ 10, /*->15829*/
/* 15819*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15821*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::MODSUB_MM), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3388:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (MODSUB_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15829*/      0, /*End of Scope*/
/* 15830*/    /*Scope*/ 26, /*->15857*/
/* 15831*/      OPC_CheckChild0Integer, 12|128,27/*3468*/, 
/* 15834*/      OPC_RecordChild1, // #0 = $rs
/* 15835*/      OPC_Scope, 9, /*->15846*/ // 2 children in Scope
/* 15837*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15839*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::RADDU_W_QB), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3468:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (RADDU_W_QB:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 15846*/      /*Scope*/ 9, /*->15856*/
/* 15847*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15849*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::RADDU_W_QB_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3468:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (RADDU_W_QB_MM:{ *:[i32] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 15856*/      0, /*End of Scope*/
/* 15857*/    /*Scope*/ 26, /*->15884*/
/* 15858*/      OPC_CheckChild0Integer, 122|128,26/*3450*/, 
/* 15861*/      OPC_RecordChild1, // #0 = $rt
/* 15862*/      OPC_Scope, 9, /*->15873*/ // 2 children in Scope
/* 15864*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15866*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQ_W_PHL), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3450:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECEQ_W_PHL:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rt)
/* 15873*/      /*Scope*/ 9, /*->15883*/
/* 15874*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15876*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQ_W_PHL_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3450:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs) - Complexity = 8
                  // Dst: (PRECEQ_W_PHL_MM:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rs)
/* 15883*/      0, /*End of Scope*/
/* 15884*/    /*Scope*/ 26, /*->15911*/
/* 15885*/      OPC_CheckChild0Integer, 123|128,26/*3451*/, 
/* 15888*/      OPC_RecordChild1, // #0 = $rt
/* 15889*/      OPC_Scope, 9, /*->15900*/ // 2 children in Scope
/* 15891*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15893*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQ_W_PHR), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3451:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECEQ_W_PHR:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rt)
/* 15900*/      /*Scope*/ 9, /*->15910*/
/* 15901*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15903*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQ_W_PHR_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3451:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs) - Complexity = 8
                  // Dst: (PRECEQ_W_PHR_MM:{ *:[i32] } DSPROpnd:{ *:[v2i16] }:$rs)
/* 15910*/      0, /*End of Scope*/
/* 15911*/    /*Scope*/ 26, /*->15938*/
/* 15912*/      OPC_CheckChild0Integer, 82|128,23/*3026*/, 
/* 15915*/      OPC_RecordChild1, // #0 = $rt
/* 15916*/      OPC_Scope, 9, /*->15927*/ // 2 children in Scope
/* 15918*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 15920*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BITREV), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3026:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (BITREV:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rt)
/* 15927*/      /*Scope*/ 9, /*->15937*/
/* 15928*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 15930*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BITREV_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3026:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (BITREV_MM:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs)
/* 15937*/      0, /*End of Scope*/
/* 15938*/    /*Scope*/ 29, /*->15968*/
/* 15939*/      OPC_CheckChild0Integer, 1|128,23/*2945*/, 
/* 15942*/      OPC_RecordChild1, // #0 = $rs
/* 15943*/      OPC_RecordChild2, // #1 = $rt
/* 15944*/      OPC_Scope, 10, /*->15956*/ // 2 children in Scope
/* 15946*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15948*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_W), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 2945:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15956*/      /*Scope*/ 10, /*->15967*/
/* 15957*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15959*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_W_MMR2), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 2945:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_W_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15967*/      0, /*End of Scope*/
/* 15968*/    /*Scope*/ 29, /*->15998*/
/* 15969*/      OPC_CheckChild0Integer, 0|128,23/*2944*/, 
/* 15972*/      OPC_RecordChild1, // #0 = $rs
/* 15973*/      OPC_RecordChild2, // #1 = $rt
/* 15974*/      OPC_Scope, 10, /*->15986*/ // 2 children in Scope
/* 15976*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 15978*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_R_W), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 2944:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_R_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15986*/      /*Scope*/ 10, /*->15997*/
/* 15987*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 15989*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_R_W_MMR2), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 2944:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_R_W_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 15997*/      0, /*End of Scope*/
/* 15998*/    /*Scope*/ 29, /*->16028*/
/* 15999*/      OPC_CheckChild0Integer, 105|128,27/*3561*/, 
/* 16002*/      OPC_RecordChild1, // #0 = $rs
/* 16003*/      OPC_RecordChild2, // #1 = $rt
/* 16004*/      OPC_Scope, 10, /*->16016*/ // 2 children in Scope
/* 16006*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16008*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_W), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3561:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 16016*/      /*Scope*/ 10, /*->16027*/
/* 16017*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 16019*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_W_MMR2), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3561:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_W_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 16027*/      0, /*End of Scope*/
/* 16028*/    /*Scope*/ 29, /*->16058*/
/* 16029*/      OPC_CheckChild0Integer, 104|128,27/*3560*/, 
/* 16032*/      OPC_RecordChild1, // #0 = $rs
/* 16033*/      OPC_RecordChild2, // #1 = $rt
/* 16034*/      OPC_Scope, 10, /*->16046*/ // 2 children in Scope
/* 16036*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16038*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_R_W), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3560:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_R_W:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 16046*/      /*Scope*/ 10, /*->16057*/
/* 16047*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 16049*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_R_W_MMR2), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[i32] } 3560:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_R_W_MMR2:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 16057*/      0, /*End of Scope*/
/* 16058*/    /*Scope*/ 65, /*->16124*/
/* 16059*/      OPC_CheckChild0Integer, 34|128,27/*3490*/, 
/* 16062*/      OPC_RecordChild1, // #0 = $rt
/* 16063*/      OPC_RecordChild2, // #1 = $rs_sa
/* 16064*/      OPC_Scope, 35, /*->16101*/ // 3 children in Scope
/* 16066*/        OPC_MoveChild2,
/* 16067*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16070*/        OPC_CheckPredicate, 31, // Predicate_immZExt4
/* 16072*/        OPC_MoveParent,
/* 16073*/        OPC_Scope, 12, /*->16087*/ // 2 children in Scope
/* 16075*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16077*/          OPC_EmitConvertToTarget, 1,
/* 16079*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_R_PH), 0,
                        MVT::v2i16, 2/*#Ops*/, 0, 2, 
                    // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3490:{ *:[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)
/* 16087*/        /*Scope*/ 12, /*->16100*/
/* 16088*/          OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16090*/          OPC_EmitConvertToTarget, 1,
/* 16092*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_R_PH_MM), 0,
                        MVT::v2i16, 2/*#Ops*/, 0, 2, 
                    // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3490:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$sa) - Complexity = 12
                    // Dst: (SHRA_R_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, (imm:{ *:[i32] }):$sa)
/* 16100*/        0, /*End of Scope*/
/* 16101*/      /*Scope*/ 10, /*->16112*/
/* 16102*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16104*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_R_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3490:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHRAV_R_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 16112*/      /*Scope*/ 10, /*->16123*/
/* 16113*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16115*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_R_PH_MM), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3490:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHRAV_R_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 16123*/      0, /*End of Scope*/
/* 16124*/    /*Scope*/ 60, /*->16185*/
/* 16125*/      OPC_CheckChild0Integer, 15|128,27/*3471*/, 
/* 16128*/      OPC_RecordChild1, // #0 = $imm
/* 16129*/      OPC_Scope, 33, /*->16164*/ // 3 children in Scope
/* 16131*/        OPC_MoveChild1,
/* 16132*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16135*/        OPC_CheckPredicate, 34, // Predicate_immZExt8
/* 16137*/        OPC_MoveParent,
/* 16138*/        OPC_Scope, 11, /*->16151*/ // 2 children in Scope
/* 16140*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16142*/          OPC_EmitConvertToTarget, 0,
/* 16144*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::REPL_QB), 0,
                        MVT::v4i8, 1/*#Ops*/, 1, 
                    // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3471:{ *:[iPTR] }, (imm:{ *:[i32] })<<P:Predicate_immZExt8>>:$imm) - Complexity = 12
                    // Dst: (REPL_QB:{ *:[v4i8] } (imm:{ *:[i32] }):$imm)
/* 16151*/        /*Scope*/ 11, /*->16163*/
/* 16152*/          OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16154*/          OPC_EmitConvertToTarget, 0,
/* 16156*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::REPL_QB_MM), 0,
                        MVT::v4i8, 1/*#Ops*/, 1, 
                    // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3471:{ *:[iPTR] }, (imm:{ *:[i32] })<<P:Predicate_immZExt8>>:$imm) - Complexity = 12
                    // Dst: (REPL_QB_MM:{ *:[v4i8] } (imm:{ *:[i32] }):$imm)
/* 16163*/        0, /*End of Scope*/
/* 16164*/      /*Scope*/ 9, /*->16174*/
/* 16165*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16167*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::REPLV_QB), 0,
                      MVT::v4i8, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3471:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (REPLV_QB:{ *:[v4i8] } GPR32Opnd:{ *:[i32] }:$rt)
/* 16174*/      /*Scope*/ 9, /*->16184*/
/* 16175*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16177*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::REPLV_QB_MM), 0,
                      MVT::v4i8, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3471:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (REPLV_QB_MM:{ *:[v4i8] } GPR32Opnd:{ *:[i32] }:$rs)
/* 16184*/      0, /*End of Scope*/
/* 16185*/    /*Scope*/ 60, /*->16246*/
/* 16186*/      OPC_CheckChild0Integer, 14|128,27/*3470*/, 
/* 16189*/      OPC_RecordChild1, // #0 = $imm
/* 16190*/      OPC_Scope, 33, /*->16225*/ // 3 children in Scope
/* 16192*/        OPC_MoveChild1,
/* 16193*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16196*/        OPC_CheckPredicate, 35, // Predicate_immSExt10
/* 16198*/        OPC_MoveParent,
/* 16199*/        OPC_Scope, 11, /*->16212*/ // 2 children in Scope
/* 16201*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16203*/          OPC_EmitConvertToTarget, 0,
/* 16205*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::REPL_PH), 0,
                        MVT::v2i16, 1/*#Ops*/, 1, 
                    // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3470:{ *:[iPTR] }, (imm:{ *:[i32] })<<P:Predicate_immSExt10>>:$imm) - Complexity = 12
                    // Dst: (REPL_PH:{ *:[v2i16] } (imm:{ *:[i32] }):$imm)
/* 16212*/        /*Scope*/ 11, /*->16224*/
/* 16213*/          OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16215*/          OPC_EmitConvertToTarget, 0,
/* 16217*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::REPL_PH_MM), 0,
                        MVT::v2i16, 1/*#Ops*/, 1, 
                    // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3470:{ *:[iPTR] }, (imm:{ *:[i32] })<<P:Predicate_immSExt10>>:$imm) - Complexity = 12
                    // Dst: (REPL_PH_MM:{ *:[v2i16] } (imm:{ *:[i32] }):$imm)
/* 16224*/        0, /*End of Scope*/
/* 16225*/      /*Scope*/ 9, /*->16235*/
/* 16226*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16228*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::REPLV_PH), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3470:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (REPLV_PH:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rt)
/* 16235*/      /*Scope*/ 9, /*->16245*/
/* 16236*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16238*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::REPLV_PH_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3470:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (REPLV_PH_MM:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs)
/* 16245*/      0, /*End of Scope*/
/* 16246*/    /*Scope*/ 43, /*->16290*/
/* 16247*/      OPC_CheckChild0Integer, 5|128,27/*3461*/, 
/* 16250*/      OPC_RecordChild1, // #0 = $src
/* 16251*/      OPC_RecordChild2, // #1 = $rs
/* 16252*/      OPC_RecordChild3, // #2 = $sa
/* 16253*/      OPC_MoveChild3,
/* 16254*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16257*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 16259*/      OPC_MoveParent,
/* 16260*/      OPC_Scope, 13, /*->16275*/ // 2 children in Scope
/* 16262*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16264*/        OPC_EmitConvertToTarget, 2,
/* 16266*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECR_SRA_PH_W), 0,
                      MVT::v2i16, 3/*#Ops*/, 1, 3, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3461:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$sa) - Complexity = 12
                  // Dst: (PRECR_SRA_PH_W:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 16275*/      /*Scope*/ 13, /*->16289*/
/* 16276*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 16278*/        OPC_EmitConvertToTarget, 2,
/* 16280*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECR_SRA_PH_W_MMR2), 0,
                      MVT::v2i16, 3/*#Ops*/, 1, 3, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3461:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$sa) - Complexity = 12
                  // Dst: (PRECR_SRA_PH_W_MMR2:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 16289*/      0, /*End of Scope*/
/* 16290*/    /*Scope*/ 43, /*->16334*/
/* 16291*/      OPC_CheckChild0Integer, 6|128,27/*3462*/, 
/* 16294*/      OPC_RecordChild1, // #0 = $src
/* 16295*/      OPC_RecordChild2, // #1 = $rs
/* 16296*/      OPC_RecordChild3, // #2 = $sa
/* 16297*/      OPC_MoveChild3,
/* 16298*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16301*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 16303*/      OPC_MoveParent,
/* 16304*/      OPC_Scope, 13, /*->16319*/ // 2 children in Scope
/* 16306*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16308*/        OPC_EmitConvertToTarget, 2,
/* 16310*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECR_SRA_R_PH_W), 0,
                      MVT::v2i16, 3/*#Ops*/, 1, 3, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3462:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$sa) - Complexity = 12
                  // Dst: (PRECR_SRA_R_PH_W:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 16319*/      /*Scope*/ 13, /*->16333*/
/* 16320*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 16322*/        OPC_EmitConvertToTarget, 2,
/* 16324*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECR_SRA_R_PH_W_MMR2), 0,
                      MVT::v2i16, 3/*#Ops*/, 1, 3, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3462:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$src, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$sa) - Complexity = 12
                  // Dst: (PRECR_SRA_R_PH_W_MMR2:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$sa, GPR32Opnd:{ *:[i32] }:$src)
/* 16333*/      0, /*End of Scope*/
/* 16334*/    /*Scope*/ 65, /*->16400*/
/* 16335*/      OPC_CheckChild0Integer, 35|128,27/*3491*/, 
/* 16338*/      OPC_RecordChild1, // #0 = $rt
/* 16339*/      OPC_RecordChild2, // #1 = $rs_sa
/* 16340*/      OPC_Scope, 35, /*->16377*/ // 3 children in Scope
/* 16342*/        OPC_MoveChild2,
/* 16343*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16346*/        OPC_CheckPredicate, 32, // Predicate_immZExt3
/* 16348*/        OPC_MoveParent,
/* 16349*/        OPC_Scope, 12, /*->16363*/ // 2 children in Scope
/* 16351*/          OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16353*/          OPC_EmitConvertToTarget, 1,
/* 16355*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_R_QB), 0,
                        MVT::v4i8, 2/*#Ops*/, 0, 2, 
                    // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3491:{ *:[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)
/* 16363*/        /*Scope*/ 12, /*->16376*/
/* 16364*/          OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 16366*/          OPC_EmitConvertToTarget, 1,
/* 16368*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_R_QB_MMR2), 0,
                        MVT::v4i8, 2/*#Ops*/, 0, 2, 
                    // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3491:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt3>>:$sa) - Complexity = 12
                    // Dst: (SHRA_R_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, (imm:{ *:[i32] }):$sa)
/* 16376*/        0, /*End of Scope*/
/* 16377*/      /*Scope*/ 10, /*->16388*/
/* 16378*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16380*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_R_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3491:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHRAV_R_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 16388*/      /*Scope*/ 10, /*->16399*/
/* 16389*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 16391*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_R_QB_MMR2), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3491:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHRAV_R_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 16399*/      0, /*End of Scope*/
/* 16400*/    /*Scope*/ 49, /*->16450*/
/* 16401*/      OPC_CheckChild0Integer, 32|128,27/*3488*/, 
/* 16404*/      OPC_RecordChild1, // #0 = $a
/* 16405*/      OPC_RecordChild2, // #1 = $shamt
/* 16406*/      OPC_Scope, 19, /*->16427*/ // 3 children in Scope
/* 16408*/        OPC_MoveChild2,
/* 16409*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16412*/        OPC_CheckPredicate, 31, // Predicate_immZExt4
/* 16414*/        OPC_MoveParent,
/* 16415*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16417*/        OPC_EmitConvertToTarget, 1,
/* 16419*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 2, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3488:{ *:[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)
/* 16427*/      /*Scope*/ 10, /*->16438*/
/* 16428*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16430*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3488:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHRAV_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 16438*/      /*Scope*/ 10, /*->16449*/
/* 16439*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16441*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_PH_MM), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3488:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHRAV_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 16449*/      0, /*End of Scope*/
/* 16450*/    /*Scope*/ 49, /*->16500*/
/* 16451*/      OPC_CheckChild0Integer, 37|128,27/*3493*/, 
/* 16454*/      OPC_RecordChild1, // #0 = $a
/* 16455*/      OPC_RecordChild2, // #1 = $shamt
/* 16456*/      OPC_Scope, 19, /*->16477*/ // 3 children in Scope
/* 16458*/        OPC_MoveChild2,
/* 16459*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16462*/        OPC_CheckPredicate, 31, // Predicate_immZExt4
/* 16464*/        OPC_MoveParent,
/* 16465*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16467*/        OPC_EmitConvertToTarget, 1,
/* 16469*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRL_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 2, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3493:{ *:[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)
/* 16477*/      /*Scope*/ 10, /*->16488*/
/* 16478*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16480*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRLV_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3493:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHRLV_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 16488*/      /*Scope*/ 10, /*->16499*/
/* 16489*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 16491*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRLV_PH_MMR2), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3493:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHRLV_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 16499*/      0, /*End of Scope*/
/* 16500*/    /*Scope*/ 49, /*->16550*/
/* 16501*/      OPC_CheckChild0Integer, 33|128,27/*3489*/, 
/* 16504*/      OPC_RecordChild1, // #0 = $a
/* 16505*/      OPC_RecordChild2, // #1 = $shamt
/* 16506*/      OPC_Scope, 19, /*->16527*/ // 3 children in Scope
/* 16508*/        OPC_MoveChild2,
/* 16509*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16512*/        OPC_CheckPredicate, 32, // Predicate_immZExt3
/* 16514*/        OPC_MoveParent,
/* 16515*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16517*/        OPC_EmitConvertToTarget, 1,
/* 16519*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRA_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 2, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3489:{ *:[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)
/* 16527*/      /*Scope*/ 10, /*->16538*/
/* 16528*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 16530*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3489:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHRAV_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 16538*/      /*Scope*/ 10, /*->16549*/
/* 16539*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 16541*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRAV_QB_MMR2), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3489:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHRAV_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 16549*/      0, /*End of Scope*/
/* 16550*/    /*Scope*/ 49, /*->16600*/
/* 16551*/      OPC_CheckChild0Integer, 38|128,27/*3494*/, 
/* 16554*/      OPC_RecordChild1, // #0 = $a
/* 16555*/      OPC_RecordChild2, // #1 = $shamt
/* 16556*/      OPC_Scope, 19, /*->16577*/ // 3 children in Scope
/* 16558*/        OPC_MoveChild2,
/* 16559*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16562*/        OPC_CheckPredicate, 32, // Predicate_immZExt3
/* 16564*/        OPC_MoveParent,
/* 16565*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16567*/        OPC_EmitConvertToTarget, 1,
/* 16569*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRL_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 2, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3494:{ *:[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)
/* 16577*/      /*Scope*/ 10, /*->16588*/
/* 16578*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 16580*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRLV_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3494:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa) - Complexity = 8
                  // Dst: (SHRLV_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs_sa)
/* 16588*/      /*Scope*/ 10, /*->16599*/
/* 16589*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 16591*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SHRLV_QB_MM), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3494:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 8
                  // Dst: (SHRLV_QB_MM:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rt, GPR32Opnd:{ *:[i32] }:$rs)
/* 16599*/      0, /*End of Scope*/
/* 16600*/    /*Scope*/ 24, /*->16625*/
/* 16601*/      OPC_CheckChild0Integer, 16|128,27/*3472*/, 
/* 16604*/      OPC_RecordChild1, // #0 = $ws
/* 16605*/      OPC_RecordChild2, // #1 = $m
/* 16606*/      OPC_MoveChild2,
/* 16607*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16610*/      OPC_CheckPredicate, 32, // Predicate_immZExt3
/* 16612*/      OPC_MoveParent,
/* 16613*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16615*/      OPC_EmitConvertToTarget, 1,
/* 16617*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3472:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt3>>:$m) - Complexity = 12
                // Dst: (SAT_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[i32] }):$m)
/* 16625*/    /*Scope*/ 24, /*->16650*/
/* 16626*/      OPC_CheckChild0Integer, 18|128,27/*3474*/, 
/* 16629*/      OPC_RecordChild1, // #0 = $ws
/* 16630*/      OPC_RecordChild2, // #1 = $m
/* 16631*/      OPC_MoveChild2,
/* 16632*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16635*/      OPC_CheckPredicate, 31, // Predicate_immZExt4
/* 16637*/      OPC_MoveParent,
/* 16638*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16640*/      OPC_EmitConvertToTarget, 1,
/* 16642*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3474:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$m) - Complexity = 12
                // Dst: (SAT_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[i32] }):$m)
/* 16650*/    /*Scope*/ 24, /*->16675*/
/* 16651*/      OPC_CheckChild0Integer, 19|128,27/*3475*/, 
/* 16654*/      OPC_RecordChild1, // #0 = $ws
/* 16655*/      OPC_RecordChild2, // #1 = $m
/* 16656*/      OPC_MoveChild2,
/* 16657*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16660*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 16662*/      OPC_MoveParent,
/* 16663*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16665*/      OPC_EmitConvertToTarget, 1,
/* 16667*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3475:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$m) - Complexity = 12
                // Dst: (SAT_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[i32] }):$m)
/* 16675*/    /*Scope*/ 24, /*->16700*/
/* 16676*/      OPC_CheckChild0Integer, 17|128,27/*3473*/, 
/* 16679*/      OPC_RecordChild1, // #0 = $ws
/* 16680*/      OPC_RecordChild2, // #1 = $m
/* 16681*/      OPC_MoveChild2,
/* 16682*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16685*/      OPC_CheckPredicate, 36, // Predicate_immZExt6
/* 16687*/      OPC_MoveParent,
/* 16688*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16690*/      OPC_EmitConvertToTarget, 1,
/* 16692*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3473:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt6>>:$m) - Complexity = 12
                // Dst: (SAT_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[i32] }):$m)
/* 16700*/    /*Scope*/ 24, /*->16725*/
/* 16701*/      OPC_CheckChild0Integer, 20|128,27/*3476*/, 
/* 16704*/      OPC_RecordChild1, // #0 = $ws
/* 16705*/      OPC_RecordChild2, // #1 = $m
/* 16706*/      OPC_MoveChild2,
/* 16707*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16710*/      OPC_CheckPredicate, 32, // Predicate_immZExt3
/* 16712*/      OPC_MoveParent,
/* 16713*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16715*/      OPC_EmitConvertToTarget, 1,
/* 16717*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3476:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt3>>:$m) - Complexity = 12
                // Dst: (SAT_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[i32] }):$m)
/* 16725*/    /*Scope*/ 24, /*->16750*/
/* 16726*/      OPC_CheckChild0Integer, 22|128,27/*3478*/, 
/* 16729*/      OPC_RecordChild1, // #0 = $ws
/* 16730*/      OPC_RecordChild2, // #1 = $m
/* 16731*/      OPC_MoveChild2,
/* 16732*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16735*/      OPC_CheckPredicate, 31, // Predicate_immZExt4
/* 16737*/      OPC_MoveParent,
/* 16738*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16740*/      OPC_EmitConvertToTarget, 1,
/* 16742*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3478:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$m) - Complexity = 12
                // Dst: (SAT_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[i32] }):$m)
/* 16750*/    /*Scope*/ 24, /*->16775*/
/* 16751*/      OPC_CheckChild0Integer, 23|128,27/*3479*/, 
/* 16754*/      OPC_RecordChild1, // #0 = $ws
/* 16755*/      OPC_RecordChild2, // #1 = $m
/* 16756*/      OPC_MoveChild2,
/* 16757*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16760*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 16762*/      OPC_MoveParent,
/* 16763*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16765*/      OPC_EmitConvertToTarget, 1,
/* 16767*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3479:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$m) - Complexity = 12
                // Dst: (SAT_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[i32] }):$m)
/* 16775*/    /*Scope*/ 24, /*->16800*/
/* 16776*/      OPC_CheckChild0Integer, 21|128,27/*3477*/, 
/* 16779*/      OPC_RecordChild1, // #0 = $ws
/* 16780*/      OPC_RecordChild2, // #1 = $m
/* 16781*/      OPC_MoveChild2,
/* 16782*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16785*/      OPC_CheckPredicate, 36, // Predicate_immZExt6
/* 16787*/      OPC_MoveParent,
/* 16788*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16790*/      OPC_EmitConvertToTarget, 1,
/* 16792*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SAT_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3477:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt6>>:$m) - Complexity = 12
                // Dst: (SAT_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[i32] }):$m)
/* 16800*/    /*Scope*/ 26, /*->16827*/
/* 16801*/      OPC_CheckChild0Integer, 43|128,27/*3499*/, 
/* 16804*/      OPC_RecordChild1, // #0 = $wd_in
/* 16805*/      OPC_RecordChild2, // #1 = $ws
/* 16806*/      OPC_RecordChild3, // #2 = $n
/* 16807*/      OPC_MoveChild3,
/* 16808*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16811*/      OPC_CheckPredicate, 31, // Predicate_immZExt4
/* 16813*/      OPC_MoveParent,
/* 16814*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16816*/      OPC_EmitConvertToTarget, 2,
/* 16818*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLDI_B), 0,
                    MVT::v16i8, 3/*#Ops*/, 0, 1, 3, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3499:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$n) - Complexity = 12
                // Dst: (SLDI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[i32] }):$n)
/* 16827*/    /*Scope*/ 26, /*->16854*/
/* 16828*/      OPC_CheckChild0Integer, 45|128,27/*3501*/, 
/* 16831*/      OPC_RecordChild1, // #0 = $wd_in
/* 16832*/      OPC_RecordChild2, // #1 = $ws
/* 16833*/      OPC_RecordChild3, // #2 = $n
/* 16834*/      OPC_MoveChild3,
/* 16835*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16838*/      OPC_CheckPredicate, 32, // Predicate_immZExt3
/* 16840*/      OPC_MoveParent,
/* 16841*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16843*/      OPC_EmitConvertToTarget, 2,
/* 16845*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLDI_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 3, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3501:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt3>>:$n) - Complexity = 12
                // Dst: (SLDI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[i32] }):$n)
/* 16854*/    /*Scope*/ 26, /*->16881*/
/* 16855*/      OPC_CheckChild0Integer, 46|128,27/*3502*/, 
/* 16858*/      OPC_RecordChild1, // #0 = $wd_in
/* 16859*/      OPC_RecordChild2, // #1 = $ws
/* 16860*/      OPC_RecordChild3, // #2 = $n
/* 16861*/      OPC_MoveChild3,
/* 16862*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16865*/      OPC_CheckPredicate, 33, // Predicate_immZExt2
/* 16867*/      OPC_MoveParent,
/* 16868*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16870*/      OPC_EmitConvertToTarget, 2,
/* 16872*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLDI_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 3, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3502:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt2>>:$n) - Complexity = 12
                // Dst: (SLDI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[i32] }):$n)
/* 16881*/    /*Scope*/ 26, /*->16908*/
/* 16882*/      OPC_CheckChild0Integer, 44|128,27/*3500*/, 
/* 16885*/      OPC_RecordChild1, // #0 = $wd_in
/* 16886*/      OPC_RecordChild2, // #1 = $ws
/* 16887*/      OPC_RecordChild3, // #2 = $n
/* 16888*/      OPC_MoveChild3,
/* 16889*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16892*/      OPC_CheckPredicate, 37, // Predicate_immZExt1
/* 16894*/      OPC_MoveParent,
/* 16895*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16897*/      OPC_EmitConvertToTarget, 2,
/* 16899*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLDI_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 3, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3500:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt1>>:$n) - Complexity = 12
                // Dst: (SLDI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[i32] }):$n)
/* 16908*/    /*Scope*/ 24, /*->16933*/
/* 16909*/      OPC_CheckChild0Integer, 75|128,27/*3531*/, 
/* 16912*/      OPC_RecordChild1, // #0 = $ws
/* 16913*/      OPC_RecordChild2, // #1 = $m
/* 16914*/      OPC_MoveChild2,
/* 16915*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16918*/      OPC_CheckPredicate, 32, // Predicate_immZExt3
/* 16920*/      OPC_MoveParent,
/* 16921*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16923*/      OPC_EmitConvertToTarget, 1,
/* 16925*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRARI_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3531:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt3>>:$m) - Complexity = 12
                // Dst: (SRARI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[i32] }):$m)
/* 16933*/    /*Scope*/ 24, /*->16958*/
/* 16934*/      OPC_CheckChild0Integer, 77|128,27/*3533*/, 
/* 16937*/      OPC_RecordChild1, // #0 = $ws
/* 16938*/      OPC_RecordChild2, // #1 = $m
/* 16939*/      OPC_MoveChild2,
/* 16940*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16943*/      OPC_CheckPredicate, 31, // Predicate_immZExt4
/* 16945*/      OPC_MoveParent,
/* 16946*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16948*/      OPC_EmitConvertToTarget, 1,
/* 16950*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRARI_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3533:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$m) - Complexity = 12
                // Dst: (SRARI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[i32] }):$m)
/* 16958*/    /*Scope*/ 24, /*->16983*/
/* 16959*/      OPC_CheckChild0Integer, 78|128,27/*3534*/, 
/* 16962*/      OPC_RecordChild1, // #0 = $ws
/* 16963*/      OPC_RecordChild2, // #1 = $m
/* 16964*/      OPC_MoveChild2,
/* 16965*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16968*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 16970*/      OPC_MoveParent,
/* 16971*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16973*/      OPC_EmitConvertToTarget, 1,
/* 16975*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRARI_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3534:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$m) - Complexity = 12
                // Dst: (SRARI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[i32] }):$m)
/* 16983*/    /*Scope*/ 24, /*->17008*/
/* 16984*/      OPC_CheckChild0Integer, 76|128,27/*3532*/, 
/* 16987*/      OPC_RecordChild1, // #0 = $ws
/* 16988*/      OPC_RecordChild2, // #1 = $m
/* 16989*/      OPC_MoveChild2,
/* 16990*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 16993*/      OPC_CheckPredicate, 36, // Predicate_immZExt6
/* 16995*/      OPC_MoveParent,
/* 16996*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 16998*/      OPC_EmitConvertToTarget, 1,
/* 17000*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRARI_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3532:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt6>>:$m) - Complexity = 12
                // Dst: (SRARI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[i32] }):$m)
/* 17008*/    /*Scope*/ 24, /*->17033*/
/* 17009*/      OPC_CheckChild0Integer, 91|128,27/*3547*/, 
/* 17012*/      OPC_RecordChild1, // #0 = $ws
/* 17013*/      OPC_RecordChild2, // #1 = $m
/* 17014*/      OPC_MoveChild2,
/* 17015*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 17018*/      OPC_CheckPredicate, 32, // Predicate_immZExt3
/* 17020*/      OPC_MoveParent,
/* 17021*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17023*/      OPC_EmitConvertToTarget, 1,
/* 17025*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLRI_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3547:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt3>>:$m) - Complexity = 12
                // Dst: (SRLRI_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[i32] }):$m)
/* 17033*/    /*Scope*/ 24, /*->17058*/
/* 17034*/      OPC_CheckChild0Integer, 93|128,27/*3549*/, 
/* 17037*/      OPC_RecordChild1, // #0 = $ws
/* 17038*/      OPC_RecordChild2, // #1 = $m
/* 17039*/      OPC_MoveChild2,
/* 17040*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 17043*/      OPC_CheckPredicate, 31, // Predicate_immZExt4
/* 17045*/      OPC_MoveParent,
/* 17046*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17048*/      OPC_EmitConvertToTarget, 1,
/* 17050*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLRI_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3549:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$m) - Complexity = 12
                // Dst: (SRLRI_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[i32] }):$m)
/* 17058*/    /*Scope*/ 24, /*->17083*/
/* 17059*/      OPC_CheckChild0Integer, 94|128,27/*3550*/, 
/* 17062*/      OPC_RecordChild1, // #0 = $ws
/* 17063*/      OPC_RecordChild2, // #1 = $m
/* 17064*/      OPC_MoveChild2,
/* 17065*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 17068*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 17070*/      OPC_MoveParent,
/* 17071*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17073*/      OPC_EmitConvertToTarget, 1,
/* 17075*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLRI_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3550:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt5>>:$m) - Complexity = 12
                // Dst: (SRLRI_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[i32] }):$m)
/* 17083*/    /*Scope*/ 24, /*->17108*/
/* 17084*/      OPC_CheckChild0Integer, 92|128,27/*3548*/, 
/* 17087*/      OPC_RecordChild1, // #0 = $ws
/* 17088*/      OPC_RecordChild2, // #1 = $m
/* 17089*/      OPC_MoveChild2,
/* 17090*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 17093*/      OPC_CheckPredicate, 36, // Predicate_immZExt6
/* 17095*/      OPC_MoveParent,
/* 17096*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17098*/      OPC_EmitConvertToTarget, 1,
/* 17100*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLRI_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3548:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immZExt6>>:$m) - Complexity = 12
                // Dst: (SRLRI_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[i32] }):$m)
/* 17108*/    /*Scope*/ 29, /*->17138*/
/* 17109*/      OPC_CheckChild0Integer, 18|128,23/*2962*/, 
/* 17112*/      OPC_RecordChild1, // #0 = $rs
/* 17113*/      OPC_RecordChild2, // #1 = $rt
/* 17114*/      OPC_Scope, 10, /*->17126*/ // 2 children in Scope
/* 17116*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17118*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU_S_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 2962:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (ADDU_S_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 17126*/      /*Scope*/ 10, /*->17137*/
/* 17127*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 17129*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU_S_QB_MM), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 2962:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (ADDU_S_QB_MM:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 17137*/      0, /*End of Scope*/
/* 17138*/    /*Scope*/ 29, /*->17168*/
/* 17139*/      OPC_CheckChild0Integer, 125|128,27/*3581*/, 
/* 17142*/      OPC_RecordChild1, // #0 = $rs
/* 17143*/      OPC_RecordChild2, // #1 = $rt
/* 17144*/      OPC_Scope, 10, /*->17156*/ // 2 children in Scope
/* 17146*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17148*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_S_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3581:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (SUBU_S_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 17156*/      /*Scope*/ 10, /*->17167*/
/* 17157*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 17159*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_S_QB_MM), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3581:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (SUBU_S_QB_MM:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 17167*/      0, /*End of Scope*/
/* 17168*/    /*Scope*/ 29, /*->17198*/
/* 17169*/      OPC_CheckChild0Integer, 124|128,22/*2940*/, 
/* 17172*/      OPC_RecordChild1, // #0 = $rs
/* 17173*/      OPC_RecordChild2, // #1 = $rt
/* 17174*/      OPC_Scope, 10, /*->17186*/ // 2 children in Scope
/* 17176*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17178*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQ_S_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 2940:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDQ_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17186*/      /*Scope*/ 10, /*->17197*/
/* 17187*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 17189*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQ_S_PH_MM), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 2940:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDQ_S_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17197*/      0, /*End of Scope*/
/* 17198*/    /*Scope*/ 29, /*->17228*/
/* 17199*/      OPC_CheckChild0Integer, 100|128,27/*3556*/, 
/* 17202*/      OPC_RecordChild1, // #0 = $rs
/* 17203*/      OPC_RecordChild2, // #1 = $rt
/* 17204*/      OPC_Scope, 10, /*->17216*/ // 2 children in Scope
/* 17206*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17208*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQ_S_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3556:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBQ_S_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17216*/      /*Scope*/ 10, /*->17227*/
/* 17217*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 17219*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQ_S_PH_MM), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3556:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBQ_S_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17227*/      0, /*End of Scope*/
/* 17228*/    /*Scope*/ 29, /*->17258*/
/* 17229*/      OPC_CheckChild0Integer, 8|128,27/*3464*/, 
/* 17232*/      OPC_RecordChild1, // #0 = $rs
/* 17233*/      OPC_RecordChild2, // #1 = $rt
/* 17234*/      OPC_Scope, 10, /*->17246*/ // 2 children in Scope
/* 17236*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17238*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQ_QB_PH), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3464:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECRQ_QB_PH:{ *:[v4i8] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17246*/      /*Scope*/ 10, /*->17257*/
/* 17247*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 17249*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQ_QB_PH_MM), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3464:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PRECRQ_QB_PH_MM:{ *:[v4i8] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17257*/      0, /*End of Scope*/
/* 17258*/    /*Scope*/ 29, /*->17288*/
/* 17259*/      OPC_CheckChild0Integer, 7|128,27/*3463*/, 
/* 17262*/      OPC_RecordChild1, // #0 = $rs
/* 17263*/      OPC_RecordChild2, // #1 = $rt
/* 17264*/      OPC_Scope, 10, /*->17276*/ // 2 children in Scope
/* 17266*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17268*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQ_PH_W), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3463:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (PRECRQ_PH_W:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 17276*/      /*Scope*/ 10, /*->17287*/
/* 17277*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 17279*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECRQ_PH_W_MM), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3463:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt) - Complexity = 8
                  // Dst: (PRECRQ_PH_W_MM:{ *:[v2i16] } GPR32Opnd:{ *:[i32] }:$rs, GPR32Opnd:{ *:[i32] }:$rt)
/* 17287*/      0, /*End of Scope*/
/* 17288*/    /*Scope*/ 26, /*->17315*/
/* 17289*/      OPC_CheckChild0Integer, 124|128,26/*3452*/, 
/* 17292*/      OPC_RecordChild1, // #0 = $rt
/* 17293*/      OPC_Scope, 9, /*->17304*/ // 2 children in Scope
/* 17295*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17297*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBL), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3452:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBL:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 17304*/      /*Scope*/ 9, /*->17314*/
/* 17305*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 17307*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBL_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3452:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBL_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 17314*/      0, /*End of Scope*/
/* 17315*/    /*Scope*/ 26, /*->17342*/
/* 17316*/      OPC_CheckChild0Integer, 126|128,26/*3454*/, 
/* 17319*/      OPC_RecordChild1, // #0 = $rt
/* 17320*/      OPC_Scope, 9, /*->17331*/ // 2 children in Scope
/* 17322*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17324*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBR), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3454:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBR:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 17331*/      /*Scope*/ 9, /*->17341*/
/* 17332*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 17334*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBR_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3454:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBR_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 17341*/      0, /*End of Scope*/
/* 17342*/    /*Scope*/ 26, /*->17369*/
/* 17343*/      OPC_CheckChild0Integer, 125|128,26/*3453*/, 
/* 17346*/      OPC_RecordChild1, // #0 = $rt
/* 17347*/      OPC_Scope, 9, /*->17358*/ // 2 children in Scope
/* 17349*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17351*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBLA), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3453:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBLA:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 17358*/      /*Scope*/ 9, /*->17368*/
/* 17359*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 17361*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBLA_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3453:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBLA_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 17368*/      0, /*End of Scope*/
/* 17369*/    /*Scope*/ 26, /*->17396*/
/* 17370*/      OPC_CheckChild0Integer, 127|128,26/*3455*/, 
/* 17373*/      OPC_RecordChild1, // #0 = $rt
/* 17374*/      OPC_Scope, 9, /*->17385*/ // 2 children in Scope
/* 17376*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17378*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBRA), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3455:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBRA:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 17385*/      /*Scope*/ 9, /*->17395*/
/* 17386*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 17388*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEQU_PH_QBRA_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3455:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEQU_PH_QBRA_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 17395*/      0, /*End of Scope*/
/* 17396*/    /*Scope*/ 26, /*->17423*/
/* 17397*/      OPC_CheckChild0Integer, 0|128,27/*3456*/, 
/* 17400*/      OPC_RecordChild1, // #0 = $rt
/* 17401*/      OPC_Scope, 9, /*->17412*/ // 2 children in Scope
/* 17403*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17405*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBL), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3456:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEU_PH_QBL:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 17412*/      /*Scope*/ 9, /*->17422*/
/* 17413*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 17415*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBL_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3456:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEU_PH_QBL_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 17422*/      0, /*End of Scope*/
/* 17423*/    /*Scope*/ 26, /*->17450*/
/* 17424*/      OPC_CheckChild0Integer, 2|128,27/*3458*/, 
/* 17427*/      OPC_RecordChild1, // #0 = $rt
/* 17428*/      OPC_Scope, 9, /*->17439*/ // 2 children in Scope
/* 17430*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17432*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBR), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3458:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEU_PH_QBR:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 17439*/      /*Scope*/ 9, /*->17449*/
/* 17440*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 17442*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBR_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3458:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEU_PH_QBR_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 17449*/      0, /*End of Scope*/
/* 17450*/    /*Scope*/ 26, /*->17477*/
/* 17451*/      OPC_CheckChild0Integer, 1|128,27/*3457*/, 
/* 17454*/      OPC_RecordChild1, // #0 = $rt
/* 17455*/      OPC_Scope, 9, /*->17466*/ // 2 children in Scope
/* 17457*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17459*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBLA), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3457:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEU_PH_QBLA:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 17466*/      /*Scope*/ 9, /*->17476*/
/* 17467*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 17469*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBLA_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3457:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEU_PH_QBLA_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 17476*/      0, /*End of Scope*/
/* 17477*/    /*Scope*/ 26, /*->17504*/
/* 17478*/      OPC_CheckChild0Integer, 3|128,27/*3459*/, 
/* 17481*/      OPC_RecordChild1, // #0 = $rt
/* 17482*/      OPC_Scope, 9, /*->17493*/ // 2 children in Scope
/* 17484*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17486*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBRA), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3459:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (PRECEU_PH_QBRA:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rt)
/* 17493*/      /*Scope*/ 9, /*->17503*/
/* 17494*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 17496*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PRECEU_PH_QBRA_MM), 0,
                      MVT::v2i16, 1/*#Ops*/, 0, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3459:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs) - Complexity = 8
                  // Dst: (PRECEU_PH_QBRA_MM:{ *:[v2i16] } DSPROpnd:{ *:[v4i8] }:$rs)
/* 17503*/      0, /*End of Scope*/
/* 17504*/    /*Scope*/ 29, /*->17534*/
/* 17505*/      OPC_CheckChild0Integer, 107|128,26/*3435*/, 
/* 17508*/      OPC_RecordChild1, // #0 = $rs
/* 17509*/      OPC_RecordChild2, // #1 = $rt
/* 17510*/      OPC_Scope, 10, /*->17522*/ // 2 children in Scope
/* 17512*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17514*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PACKRL_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3435:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PACKRL_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17522*/      /*Scope*/ 10, /*->17533*/
/* 17523*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 17525*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::PACKRL_PH_MM), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3435:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (PACKRL_PH_MM:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17533*/      0, /*End of Scope*/
/* 17534*/    /*Scope*/ 29, /*->17564*/
/* 17535*/      OPC_CheckChild0Integer, 19|128,23/*2963*/, 
/* 17538*/      OPC_RecordChild1, // #0 = $rs
/* 17539*/      OPC_RecordChild2, // #1 = $rt
/* 17540*/      OPC_Scope, 10, /*->17552*/ // 2 children in Scope
/* 17542*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 17544*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDUH_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 2963:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (ADDUH_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 17552*/      /*Scope*/ 10, /*->17563*/
/* 17553*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 17555*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDUH_QB_MMR2), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 2963:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (ADDUH_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 17563*/      0, /*End of Scope*/
/* 17564*/    /*Scope*/ 29, /*->17594*/
/* 17565*/      OPC_CheckChild0Integer, 20|128,23/*2964*/, 
/* 17568*/      OPC_RecordChild1, // #0 = $rs
/* 17569*/      OPC_RecordChild2, // #1 = $rt
/* 17570*/      OPC_Scope, 10, /*->17582*/ // 2 children in Scope
/* 17572*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 17574*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDUH_R_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 2964:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (ADDUH_R_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 17582*/      /*Scope*/ 10, /*->17593*/
/* 17583*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 17585*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDUH_R_QB_MMR2), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 2964:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (ADDUH_R_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 17593*/      0, /*End of Scope*/
/* 17594*/    /*Scope*/ 29, /*->17624*/
/* 17595*/      OPC_CheckChild0Integer, 126|128,27/*3582*/, 
/* 17598*/      OPC_RecordChild1, // #0 = $rs
/* 17599*/      OPC_RecordChild2, // #1 = $rt
/* 17600*/      OPC_Scope, 10, /*->17612*/ // 2 children in Scope
/* 17602*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 17604*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBUH_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3582:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (SUBUH_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 17612*/      /*Scope*/ 10, /*->17623*/
/* 17613*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 17615*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBUH_QB_MMR2), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3582:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (SUBUH_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 17623*/      0, /*End of Scope*/
/* 17624*/    /*Scope*/ 29, /*->17654*/
/* 17625*/      OPC_CheckChild0Integer, 127|128,27/*3583*/, 
/* 17628*/      OPC_RecordChild1, // #0 = $rs
/* 17629*/      OPC_RecordChild2, // #1 = $rt
/* 17630*/      OPC_Scope, 10, /*->17642*/ // 2 children in Scope
/* 17632*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 17634*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBUH_R_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3583:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (SUBUH_R_QB:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 17642*/      /*Scope*/ 10, /*->17653*/
/* 17643*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 17645*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBUH_R_QB_MMR2), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3583:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (SUBUH_R_QB_MMR2:{ *:[v4i8] } DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 17653*/      0, /*End of Scope*/
/* 17654*/    /*Scope*/ 29, /*->17684*/
/* 17655*/      OPC_CheckChild0Integer, 126|128,22/*2942*/, 
/* 17658*/      OPC_RecordChild1, // #0 = $rs
/* 17659*/      OPC_RecordChild2, // #1 = $rt
/* 17660*/      OPC_Scope, 10, /*->17672*/ // 2 children in Scope
/* 17662*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 17664*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 2942:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17672*/      /*Scope*/ 10, /*->17683*/
/* 17673*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 17675*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_PH_MMR2), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 2942:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17683*/      0, /*End of Scope*/
/* 17684*/    /*Scope*/ 29, /*->17714*/
/* 17685*/      OPC_CheckChild0Integer, 127|128,22/*2943*/, 
/* 17688*/      OPC_RecordChild1, // #0 = $rs
/* 17689*/      OPC_RecordChild2, // #1 = $rt
/* 17690*/      OPC_Scope, 10, /*->17702*/ // 2 children in Scope
/* 17692*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 17694*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_R_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 2943:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_R_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17702*/      /*Scope*/ 10, /*->17713*/
/* 17703*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 17705*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQH_R_PH_MMR2), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 2943:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (ADDQH_R_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17713*/      0, /*End of Scope*/
/* 17714*/    /*Scope*/ 29, /*->17744*/
/* 17715*/      OPC_CheckChild0Integer, 102|128,27/*3558*/, 
/* 17718*/      OPC_RecordChild1, // #0 = $rs
/* 17719*/      OPC_RecordChild2, // #1 = $rt
/* 17720*/      OPC_Scope, 10, /*->17732*/ // 2 children in Scope
/* 17722*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 17724*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3558:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17732*/      /*Scope*/ 10, /*->17743*/
/* 17733*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 17735*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_PH_MMR2), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3558:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17743*/      0, /*End of Scope*/
/* 17744*/    /*Scope*/ 29, /*->17774*/
/* 17745*/      OPC_CheckChild0Integer, 103|128,27/*3559*/, 
/* 17748*/      OPC_RecordChild1, // #0 = $rs
/* 17749*/      OPC_RecordChild2, // #1 = $rt
/* 17750*/      OPC_Scope, 10, /*->17762*/ // 2 children in Scope
/* 17752*/        OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 17754*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_R_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3559:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_R_PH:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17762*/      /*Scope*/ 10, /*->17773*/
/* 17763*/        OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 17765*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQH_R_PH_MMR2), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1, 
                  // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3559:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (SUBQH_R_PH_MMR2:{ *:[v2i16] } DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 17773*/      0, /*End of Scope*/
/* 17774*/    /*Scope*/ 15, /*->17790*/
/* 17775*/      OPC_CheckChild0Integer, 123|128,22/*2939*/, 
/* 17778*/      OPC_RecordChild1, // #0 = $a
/* 17779*/      OPC_RecordChild2, // #1 = $b
/* 17780*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17782*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDQ_PH), 0,
                    MVT::v2i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i16] } 2939:{ *:[iPTR] }, v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b) - Complexity = 8
                // Dst: (ADDQ_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b)
/* 17790*/    /*Scope*/ 15, /*->17806*/
/* 17791*/      OPC_CheckChild0Integer, 99|128,27/*3555*/, 
/* 17794*/      OPC_RecordChild1, // #0 = $a
/* 17795*/      OPC_RecordChild2, // #1 = $b
/* 17796*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17798*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBQ_PH), 0,
                    MVT::v2i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i16] } 3555:{ *:[iPTR] }, v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b) - Complexity = 8
                // Dst: (SUBQ_PH:{ *:[v2i16] } v2i16:{ *:[v2i16] }:$a, v2i16:{ *:[v2i16] }:$b)
/* 17806*/    /*Scope*/ 15, /*->17822*/
/* 17807*/      OPC_CheckChild0Integer, 16|128,23/*2960*/, 
/* 17810*/      OPC_RecordChild1, // #0 = $a
/* 17811*/      OPC_RecordChild2, // #1 = $b
/* 17812*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17814*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDU_QB), 0,
                    MVT::v4i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i8] } 2960:{ *:[iPTR] }, v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b) - Complexity = 8
                // Dst: (ADDU_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b)
/* 17822*/    /*Scope*/ 15, /*->17838*/
/* 17823*/      OPC_CheckChild0Integer, 123|128,27/*3579*/, 
/* 17826*/      OPC_RecordChild1, // #0 = $a
/* 17827*/      OPC_RecordChild2, // #1 = $b
/* 17828*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 17830*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBU_QB), 0,
                    MVT::v4i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i8] } 3579:{ *:[iPTR] }, v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b) - Complexity = 8
                // Dst: (SUBU_QB:{ *:[v4i8] } v4i8:{ *:[v4i8] }:$a, v4i8:{ *:[v4i8] }:$b)
/* 17838*/    /*Scope*/ 15, /*->17854*/
/* 17839*/      OPC_CheckChild0Integer, 119|128,22/*2935*/, 
/* 17842*/      OPC_RecordChild1, // #0 = $ws
/* 17843*/      OPC_RecordChild2, // #1 = $wt
/* 17844*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17846*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADD_A_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 2935:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (ADD_A_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17854*/    /*Scope*/ 15, /*->17870*/
/* 17855*/      OPC_CheckChild0Integer, 121|128,22/*2937*/, 
/* 17858*/      OPC_RecordChild1, // #0 = $ws
/* 17859*/      OPC_RecordChild2, // #1 = $wt
/* 17860*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17862*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADD_A_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 2937:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (ADD_A_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17870*/    /*Scope*/ 15, /*->17886*/
/* 17871*/      OPC_CheckChild0Integer, 122|128,22/*2938*/, 
/* 17874*/      OPC_RecordChild1, // #0 = $ws
/* 17875*/      OPC_RecordChild2, // #1 = $wt
/* 17876*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17878*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADD_A_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 2938:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (ADD_A_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17886*/    /*Scope*/ 15, /*->17902*/
/* 17887*/      OPC_CheckChild0Integer, 120|128,22/*2936*/, 
/* 17890*/      OPC_RecordChild1, // #0 = $ws
/* 17891*/      OPC_RecordChild2, // #1 = $wt
/* 17892*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17894*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADD_A_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 2936:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (ADD_A_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 17902*/    /*Scope*/ 15, /*->17918*/
/* 17903*/      OPC_CheckChild0Integer, 2|128,23/*2946*/, 
/* 17906*/      OPC_RecordChild1, // #0 = $ws
/* 17907*/      OPC_RecordChild2, // #1 = $wt
/* 17908*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17910*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_A_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 2946:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (ADDS_A_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17918*/    /*Scope*/ 15, /*->17934*/
/* 17919*/      OPC_CheckChild0Integer, 4|128,23/*2948*/, 
/* 17922*/      OPC_RecordChild1, // #0 = $ws
/* 17923*/      OPC_RecordChild2, // #1 = $wt
/* 17924*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17926*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_A_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 2948:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (ADDS_A_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17934*/    /*Scope*/ 15, /*->17950*/
/* 17935*/      OPC_CheckChild0Integer, 5|128,23/*2949*/, 
/* 17938*/      OPC_RecordChild1, // #0 = $ws
/* 17939*/      OPC_RecordChild2, // #1 = $wt
/* 17940*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17942*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_A_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 2949:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (ADDS_A_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 17950*/    /*Scope*/ 15, /*->17966*/
/* 17951*/      OPC_CheckChild0Integer, 3|128,23/*2947*/, 
/* 17954*/      OPC_RecordChild1, // #0 = $ws
/* 17955*/      OPC_RecordChild2, // #1 = $wt
/* 17956*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17958*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_A_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 2947:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (ADDS_A_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 17966*/    /*Scope*/ 15, /*->17982*/
/* 17967*/      OPC_CheckChild0Integer, 6|128,23/*2950*/, 
/* 17970*/      OPC_RecordChild1, // #0 = $ws
/* 17971*/      OPC_RecordChild2, // #1 = $wt
/* 17972*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17974*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 2950:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (ADDS_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 17982*/    /*Scope*/ 15, /*->17998*/
/* 17983*/      OPC_CheckChild0Integer, 8|128,23/*2952*/, 
/* 17986*/      OPC_RecordChild1, // #0 = $ws
/* 17987*/      OPC_RecordChild2, // #1 = $wt
/* 17988*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 17990*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 2952:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (ADDS_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 17998*/    /*Scope*/ 15, /*->18014*/
/* 17999*/      OPC_CheckChild0Integer, 9|128,23/*2953*/, 
/* 18002*/      OPC_RecordChild1, // #0 = $ws
/* 18003*/      OPC_RecordChild2, // #1 = $wt
/* 18004*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18006*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 2953:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (ADDS_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18014*/    /*Scope*/ 15, /*->18030*/
/* 18015*/      OPC_CheckChild0Integer, 7|128,23/*2951*/, 
/* 18018*/      OPC_RecordChild1, // #0 = $ws
/* 18019*/      OPC_RecordChild2, // #1 = $wt
/* 18020*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18022*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 2951:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (ADDS_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 18030*/    /*Scope*/ 15, /*->18046*/
/* 18031*/      OPC_CheckChild0Integer, 10|128,23/*2954*/, 
/* 18034*/      OPC_RecordChild1, // #0 = $ws
/* 18035*/      OPC_RecordChild2, // #1 = $wt
/* 18036*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18038*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 2954:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (ADDS_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18046*/    /*Scope*/ 15, /*->18062*/
/* 18047*/      OPC_CheckChild0Integer, 12|128,23/*2956*/, 
/* 18050*/      OPC_RecordChild1, // #0 = $ws
/* 18051*/      OPC_RecordChild2, // #1 = $wt
/* 18052*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18054*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 2956:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (ADDS_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18062*/    /*Scope*/ 15, /*->18078*/
/* 18063*/      OPC_CheckChild0Integer, 13|128,23/*2957*/, 
/* 18066*/      OPC_RecordChild1, // #0 = $ws
/* 18067*/      OPC_RecordChild2, // #1 = $wt
/* 18068*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18070*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 2957:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (ADDS_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18078*/    /*Scope*/ 15, /*->18094*/
/* 18079*/      OPC_CheckChild0Integer, 11|128,23/*2955*/, 
/* 18082*/      OPC_RecordChild1, // #0 = $ws
/* 18083*/      OPC_RecordChild2, // #1 = $wt
/* 18084*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18086*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDS_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 2955:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (ADDS_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 18094*/    /*Scope*/ 15, /*->18110*/
/* 18095*/      OPC_CheckChild0Integer, 33|128,23/*2977*/, 
/* 18098*/      OPC_RecordChild1, // #0 = $ws
/* 18099*/      OPC_RecordChild2, // #1 = $wt
/* 18100*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18102*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 2977:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (ASUB_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18110*/    /*Scope*/ 15, /*->18126*/
/* 18111*/      OPC_CheckChild0Integer, 35|128,23/*2979*/, 
/* 18114*/      OPC_RecordChild1, // #0 = $ws
/* 18115*/      OPC_RecordChild2, // #1 = $wt
/* 18116*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18118*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 2979:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (ASUB_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18126*/    /*Scope*/ 15, /*->18142*/
/* 18127*/      OPC_CheckChild0Integer, 36|128,23/*2980*/, 
/* 18130*/      OPC_RecordChild1, // #0 = $ws
/* 18131*/      OPC_RecordChild2, // #1 = $wt
/* 18132*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18134*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 2980:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (ASUB_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18142*/    /*Scope*/ 15, /*->18158*/
/* 18143*/      OPC_CheckChild0Integer, 34|128,23/*2978*/, 
/* 18146*/      OPC_RecordChild1, // #0 = $ws
/* 18147*/      OPC_RecordChild2, // #1 = $wt
/* 18148*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18150*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 2978:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (ASUB_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 18158*/    /*Scope*/ 15, /*->18174*/
/* 18159*/      OPC_CheckChild0Integer, 37|128,23/*2981*/, 
/* 18162*/      OPC_RecordChild1, // #0 = $ws
/* 18163*/      OPC_RecordChild2, // #1 = $wt
/* 18164*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18166*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 2981:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (ASUB_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18174*/    /*Scope*/ 15, /*->18190*/
/* 18175*/      OPC_CheckChild0Integer, 39|128,23/*2983*/, 
/* 18178*/      OPC_RecordChild1, // #0 = $ws
/* 18179*/      OPC_RecordChild2, // #1 = $wt
/* 18180*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18182*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 2983:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (ASUB_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18190*/    /*Scope*/ 15, /*->18206*/
/* 18191*/      OPC_CheckChild0Integer, 40|128,23/*2984*/, 
/* 18194*/      OPC_RecordChild1, // #0 = $ws
/* 18195*/      OPC_RecordChild2, // #1 = $wt
/* 18196*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18198*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 2984:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (ASUB_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18206*/    /*Scope*/ 15, /*->18222*/
/* 18207*/      OPC_CheckChild0Integer, 38|128,23/*2982*/, 
/* 18210*/      OPC_RecordChild1, // #0 = $ws
/* 18211*/      OPC_RecordChild2, // #1 = $wt
/* 18212*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18214*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::ASUB_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 2982:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (ASUB_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 18222*/    /*Scope*/ 15, /*->18238*/
/* 18223*/      OPC_CheckChild0Integer, 41|128,23/*2985*/, 
/* 18226*/      OPC_RecordChild1, // #0 = $ws
/* 18227*/      OPC_RecordChild2, // #1 = $wt
/* 18228*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18230*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 2985:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (AVE_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18238*/    /*Scope*/ 15, /*->18254*/
/* 18239*/      OPC_CheckChild0Integer, 43|128,23/*2987*/, 
/* 18242*/      OPC_RecordChild1, // #0 = $ws
/* 18243*/      OPC_RecordChild2, // #1 = $wt
/* 18244*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18246*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 2987:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (AVE_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18254*/    /*Scope*/ 15, /*->18270*/
/* 18255*/      OPC_CheckChild0Integer, 44|128,23/*2988*/, 
/* 18258*/      OPC_RecordChild1, // #0 = $ws
/* 18259*/      OPC_RecordChild2, // #1 = $wt
/* 18260*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18262*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 2988:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (AVE_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18270*/    /*Scope*/ 15, /*->18286*/
/* 18271*/      OPC_CheckChild0Integer, 42|128,23/*2986*/, 
/* 18274*/      OPC_RecordChild1, // #0 = $ws
/* 18275*/      OPC_RecordChild2, // #1 = $wt
/* 18276*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18278*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 2986:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (AVE_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 18286*/    /*Scope*/ 15, /*->18302*/
/* 18287*/      OPC_CheckChild0Integer, 45|128,23/*2989*/, 
/* 18290*/      OPC_RecordChild1, // #0 = $ws
/* 18291*/      OPC_RecordChild2, // #1 = $wt
/* 18292*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18294*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 2989:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (AVE_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18302*/    /*Scope*/ 15, /*->18318*/
/* 18303*/      OPC_CheckChild0Integer, 47|128,23/*2991*/, 
/* 18306*/      OPC_RecordChild1, // #0 = $ws
/* 18307*/      OPC_RecordChild2, // #1 = $wt
/* 18308*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18310*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 2991:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (AVE_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18318*/    /*Scope*/ 15, /*->18334*/
/* 18319*/      OPC_CheckChild0Integer, 48|128,23/*2992*/, 
/* 18322*/      OPC_RecordChild1, // #0 = $ws
/* 18323*/      OPC_RecordChild2, // #1 = $wt
/* 18324*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18326*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 2992:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (AVE_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18334*/    /*Scope*/ 15, /*->18350*/
/* 18335*/      OPC_CheckChild0Integer, 46|128,23/*2990*/, 
/* 18338*/      OPC_RecordChild1, // #0 = $ws
/* 18339*/      OPC_RecordChild2, // #1 = $wt
/* 18340*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18342*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVE_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 2990:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (AVE_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 18350*/    /*Scope*/ 15, /*->18366*/
/* 18351*/      OPC_CheckChild0Integer, 49|128,23/*2993*/, 
/* 18354*/      OPC_RecordChild1, // #0 = $ws
/* 18355*/      OPC_RecordChild2, // #1 = $wt
/* 18356*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18358*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 2993:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (AVER_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18366*/    /*Scope*/ 15, /*->18382*/
/* 18367*/      OPC_CheckChild0Integer, 51|128,23/*2995*/, 
/* 18370*/      OPC_RecordChild1, // #0 = $ws
/* 18371*/      OPC_RecordChild2, // #1 = $wt
/* 18372*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18374*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 2995:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (AVER_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18382*/    /*Scope*/ 15, /*->18398*/
/* 18383*/      OPC_CheckChild0Integer, 52|128,23/*2996*/, 
/* 18386*/      OPC_RecordChild1, // #0 = $ws
/* 18387*/      OPC_RecordChild2, // #1 = $wt
/* 18388*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18390*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 2996:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (AVER_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18398*/    /*Scope*/ 15, /*->18414*/
/* 18399*/      OPC_CheckChild0Integer, 50|128,23/*2994*/, 
/* 18402*/      OPC_RecordChild1, // #0 = $ws
/* 18403*/      OPC_RecordChild2, // #1 = $wt
/* 18404*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18406*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 2994:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (AVER_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 18414*/    /*Scope*/ 15, /*->18430*/
/* 18415*/      OPC_CheckChild0Integer, 53|128,23/*2997*/, 
/* 18418*/      OPC_RecordChild1, // #0 = $ws
/* 18419*/      OPC_RecordChild2, // #1 = $wt
/* 18420*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18422*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 2997:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (AVER_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18430*/    /*Scope*/ 15, /*->18446*/
/* 18431*/      OPC_CheckChild0Integer, 55|128,23/*2999*/, 
/* 18434*/      OPC_RecordChild1, // #0 = $ws
/* 18435*/      OPC_RecordChild2, // #1 = $wt
/* 18436*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18438*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 2999:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (AVER_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18446*/    /*Scope*/ 15, /*->18462*/
/* 18447*/      OPC_CheckChild0Integer, 56|128,23/*3000*/, 
/* 18450*/      OPC_RecordChild1, // #0 = $ws
/* 18451*/      OPC_RecordChild2, // #1 = $wt
/* 18452*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18454*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3000:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (AVER_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18462*/    /*Scope*/ 15, /*->18478*/
/* 18463*/      OPC_CheckChild0Integer, 54|128,23/*2998*/, 
/* 18466*/      OPC_RecordChild1, // #0 = $ws
/* 18467*/      OPC_RecordChild2, // #1 = $wt
/* 18468*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18470*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::AVER_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 2998:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (AVER_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 18478*/    /*Scope*/ 17, /*->18496*/
/* 18479*/      OPC_CheckChild0Integer, 66|128,23/*3010*/, 
/* 18482*/      OPC_RecordChild1, // #0 = $wd_in
/* 18483*/      OPC_RecordChild2, // #1 = $ws
/* 18484*/      OPC_RecordChild3, // #2 = $wt
/* 18485*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18487*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSL_B), 0,
                    MVT::v16i8, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3010:{ *:[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)
/* 18496*/    /*Scope*/ 17, /*->18514*/
/* 18497*/      OPC_CheckChild0Integer, 68|128,23/*3012*/, 
/* 18500*/      OPC_RecordChild1, // #0 = $wd_in
/* 18501*/      OPC_RecordChild2, // #1 = $ws
/* 18502*/      OPC_RecordChild3, // #2 = $wt
/* 18503*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18505*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSL_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3012:{ *:[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)
/* 18514*/    /*Scope*/ 17, /*->18532*/
/* 18515*/      OPC_CheckChild0Integer, 69|128,23/*3013*/, 
/* 18518*/      OPC_RecordChild1, // #0 = $wd_in
/* 18519*/      OPC_RecordChild2, // #1 = $ws
/* 18520*/      OPC_RecordChild3, // #2 = $wt
/* 18521*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18523*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSL_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3013:{ *:[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)
/* 18532*/    /*Scope*/ 17, /*->18550*/
/* 18533*/      OPC_CheckChild0Integer, 67|128,23/*3011*/, 
/* 18536*/      OPC_RecordChild1, // #0 = $wd_in
/* 18537*/      OPC_RecordChild2, // #1 = $ws
/* 18538*/      OPC_RecordChild3, // #2 = $wt
/* 18539*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18541*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSL_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3011:{ *:[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)
/* 18550*/    /*Scope*/ 17, /*->18568*/
/* 18551*/      OPC_CheckChild0Integer, 74|128,23/*3018*/, 
/* 18554*/      OPC_RecordChild1, // #0 = $wd_in
/* 18555*/      OPC_RecordChild2, // #1 = $ws
/* 18556*/      OPC_RecordChild3, // #2 = $wt
/* 18557*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18559*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSR_B), 0,
                    MVT::v16i8, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3018:{ *:[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)
/* 18568*/    /*Scope*/ 17, /*->18586*/
/* 18569*/      OPC_CheckChild0Integer, 76|128,23/*3020*/, 
/* 18572*/      OPC_RecordChild1, // #0 = $wd_in
/* 18573*/      OPC_RecordChild2, // #1 = $ws
/* 18574*/      OPC_RecordChild3, // #2 = $wt
/* 18575*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18577*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSR_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3020:{ *:[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)
/* 18586*/    /*Scope*/ 17, /*->18604*/
/* 18587*/      OPC_CheckChild0Integer, 77|128,23/*3021*/, 
/* 18590*/      OPC_RecordChild1, // #0 = $wd_in
/* 18591*/      OPC_RecordChild2, // #1 = $ws
/* 18592*/      OPC_RecordChild3, // #2 = $wt
/* 18593*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18595*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSR_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3021:{ *:[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)
/* 18604*/    /*Scope*/ 17, /*->18622*/
/* 18605*/      OPC_CheckChild0Integer, 75|128,23/*3019*/, 
/* 18608*/      OPC_RecordChild1, // #0 = $wd_in
/* 18609*/      OPC_RecordChild2, // #1 = $ws
/* 18610*/      OPC_RecordChild3, // #2 = $wt
/* 18611*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18613*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BINSR_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3019:{ *:[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)
/* 18622*/    /*Scope*/ 15, /*->18638*/
/* 18623*/      OPC_CheckChild0Integer, 60|128,24/*3132*/, 
/* 18626*/      OPC_RecordChild1, // #0 = $ws
/* 18627*/      OPC_RecordChild2, // #1 = $wt
/* 18628*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18630*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DOTP_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3132:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (DOTP_S_H:{ *:[v8i16] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18638*/    /*Scope*/ 15, /*->18654*/
/* 18639*/      OPC_CheckChild0Integer, 61|128,24/*3133*/, 
/* 18642*/      OPC_RecordChild1, // #0 = $ws
/* 18643*/      OPC_RecordChild2, // #1 = $wt
/* 18644*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18646*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DOTP_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3133:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (DOTP_S_W:{ *:[v4i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18654*/    /*Scope*/ 15, /*->18670*/
/* 18655*/      OPC_CheckChild0Integer, 59|128,24/*3131*/, 
/* 18658*/      OPC_RecordChild1, // #0 = $ws
/* 18659*/      OPC_RecordChild2, // #1 = $wt
/* 18660*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18662*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DOTP_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3131:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (DOTP_S_D:{ *:[v2i64] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18670*/    /*Scope*/ 15, /*->18686*/
/* 18671*/      OPC_CheckChild0Integer, 63|128,24/*3135*/, 
/* 18674*/      OPC_RecordChild1, // #0 = $ws
/* 18675*/      OPC_RecordChild2, // #1 = $wt
/* 18676*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18678*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DOTP_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3135:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (DOTP_U_H:{ *:[v8i16] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 18686*/    /*Scope*/ 15, /*->18702*/
/* 18687*/      OPC_CheckChild0Integer, 64|128,24/*3136*/, 
/* 18690*/      OPC_RecordChild1, // #0 = $ws
/* 18691*/      OPC_RecordChild2, // #1 = $wt
/* 18692*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18694*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DOTP_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3136:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (DOTP_U_W:{ *:[v4i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 18702*/    /*Scope*/ 15, /*->18718*/
/* 18703*/      OPC_CheckChild0Integer, 62|128,24/*3134*/, 
/* 18706*/      OPC_RecordChild1, // #0 = $ws
/* 18707*/      OPC_RecordChild2, // #1 = $wt
/* 18708*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18710*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DOTP_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3134:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (DOTP_U_D:{ *:[v2i64] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 18718*/    /*Scope*/ 17, /*->18736*/
/* 18719*/      OPC_CheckChild0Integer, 67|128,24/*3139*/, 
/* 18722*/      OPC_RecordChild1, // #0 = $wd_in
/* 18723*/      OPC_RecordChild2, // #1 = $ws
/* 18724*/      OPC_RecordChild3, // #2 = $wt
/* 18725*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18727*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPADD_S_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3139:{ *:[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)
/* 18736*/    /*Scope*/ 17, /*->18754*/
/* 18737*/      OPC_CheckChild0Integer, 68|128,24/*3140*/, 
/* 18740*/      OPC_RecordChild1, // #0 = $wd_in
/* 18741*/      OPC_RecordChild2, // #1 = $ws
/* 18742*/      OPC_RecordChild3, // #2 = $wt
/* 18743*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18745*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPADD_S_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3140:{ *:[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)
/* 18754*/    /*Scope*/ 17, /*->18772*/
/* 18755*/      OPC_CheckChild0Integer, 66|128,24/*3138*/, 
/* 18758*/      OPC_RecordChild1, // #0 = $wd_in
/* 18759*/      OPC_RecordChild2, // #1 = $ws
/* 18760*/      OPC_RecordChild3, // #2 = $wt
/* 18761*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18763*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPADD_S_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3138:{ *:[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)
/* 18772*/    /*Scope*/ 17, /*->18790*/
/* 18773*/      OPC_CheckChild0Integer, 70|128,24/*3142*/, 
/* 18776*/      OPC_RecordChild1, // #0 = $wd_in
/* 18777*/      OPC_RecordChild2, // #1 = $ws
/* 18778*/      OPC_RecordChild3, // #2 = $wt
/* 18779*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18781*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPADD_U_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3142:{ *:[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)
/* 18790*/    /*Scope*/ 17, /*->18808*/
/* 18791*/      OPC_CheckChild0Integer, 71|128,24/*3143*/, 
/* 18794*/      OPC_RecordChild1, // #0 = $wd_in
/* 18795*/      OPC_RecordChild2, // #1 = $ws
/* 18796*/      OPC_RecordChild3, // #2 = $wt
/* 18797*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18799*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPADD_U_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3143:{ *:[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)
/* 18808*/    /*Scope*/ 17, /*->18826*/
/* 18809*/      OPC_CheckChild0Integer, 69|128,24/*3141*/, 
/* 18812*/      OPC_RecordChild1, // #0 = $wd_in
/* 18813*/      OPC_RecordChild2, // #1 = $ws
/* 18814*/      OPC_RecordChild3, // #2 = $wt
/* 18815*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18817*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPADD_U_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3141:{ *:[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)
/* 18826*/    /*Scope*/ 17, /*->18844*/
/* 18827*/      OPC_CheckChild0Integer, 87|128,24/*3159*/, 
/* 18830*/      OPC_RecordChild1, // #0 = $wd_in
/* 18831*/      OPC_RecordChild2, // #1 = $ws
/* 18832*/      OPC_RecordChild3, // #2 = $wt
/* 18833*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18835*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSUB_S_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3159:{ *:[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)
/* 18844*/    /*Scope*/ 17, /*->18862*/
/* 18845*/      OPC_CheckChild0Integer, 88|128,24/*3160*/, 
/* 18848*/      OPC_RecordChild1, // #0 = $wd_in
/* 18849*/      OPC_RecordChild2, // #1 = $ws
/* 18850*/      OPC_RecordChild3, // #2 = $wt
/* 18851*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18853*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSUB_S_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3160:{ *:[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)
/* 18862*/    /*Scope*/ 17, /*->18880*/
/* 18863*/      OPC_CheckChild0Integer, 86|128,24/*3158*/, 
/* 18866*/      OPC_RecordChild1, // #0 = $wd_in
/* 18867*/      OPC_RecordChild2, // #1 = $ws
/* 18868*/      OPC_RecordChild3, // #2 = $wt
/* 18869*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18871*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSUB_S_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3158:{ *:[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)
/* 18880*/    /*Scope*/ 17, /*->18898*/
/* 18881*/      OPC_CheckChild0Integer, 90|128,24/*3162*/, 
/* 18884*/      OPC_RecordChild1, // #0 = $wd_in
/* 18885*/      OPC_RecordChild2, // #1 = $ws
/* 18886*/      OPC_RecordChild3, // #2 = $wt
/* 18887*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18889*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSUB_U_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3162:{ *:[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)
/* 18898*/    /*Scope*/ 17, /*->18916*/
/* 18899*/      OPC_CheckChild0Integer, 91|128,24/*3163*/, 
/* 18902*/      OPC_RecordChild1, // #0 = $wd_in
/* 18903*/      OPC_RecordChild2, // #1 = $ws
/* 18904*/      OPC_RecordChild3, // #2 = $wt
/* 18905*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18907*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSUB_U_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3163:{ *:[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)
/* 18916*/    /*Scope*/ 17, /*->18934*/
/* 18917*/      OPC_CheckChild0Integer, 89|128,24/*3161*/, 
/* 18920*/      OPC_RecordChild1, // #0 = $wd_in
/* 18921*/      OPC_RecordChild2, // #1 = $ws
/* 18922*/      OPC_RecordChild3, // #2 = $wt
/* 18923*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18925*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::DPSUB_U_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3161:{ *:[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)
/* 18934*/    /*Scope*/ 15, /*->18950*/
/* 18935*/      OPC_CheckChild0Integer, 102|128,24/*3174*/, 
/* 18938*/      OPC_RecordChild1, // #0 = $ws
/* 18939*/      OPC_RecordChild2, // #1 = $wt
/* 18940*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18942*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FCAF_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3174:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FCAF_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 18950*/    /*Scope*/ 15, /*->18966*/
/* 18951*/      OPC_CheckChild0Integer, 101|128,24/*3173*/, 
/* 18954*/      OPC_RecordChild1, // #0 = $ws
/* 18955*/      OPC_RecordChild2, // #1 = $wt
/* 18956*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18958*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FCAF_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3173:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FCAF_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 18966*/    /*Scope*/ 13, /*->18980*/
/* 18967*/      OPC_CheckChild0Integer, 106|128,24/*3178*/, 
/* 18970*/      OPC_RecordChild1, // #0 = $ws
/* 18971*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18973*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FCLASS_W), 0,
                    MVT::v4i32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3178:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 8
                // Dst: (FCLASS_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 18980*/    /*Scope*/ 13, /*->18994*/
/* 18981*/      OPC_CheckChild0Integer, 105|128,24/*3177*/, 
/* 18984*/      OPC_RecordChild1, // #0 = $ws
/* 18985*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 18987*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FCLASS_D), 0,
                    MVT::v2i64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3177:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 8
                // Dst: (FCLASS_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 18994*/    /*Scope*/ 15, /*->19010*/
/* 18995*/      OPC_CheckChild0Integer, 42|128,25/*3242*/, 
/* 18998*/      OPC_RecordChild1, // #0 = $ws
/* 18999*/      OPC_RecordChild2, // #1 = $wt
/* 19000*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19002*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSAF_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3242:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSAF_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19010*/    /*Scope*/ 15, /*->19026*/
/* 19011*/      OPC_CheckChild0Integer, 41|128,25/*3241*/, 
/* 19014*/      OPC_RecordChild1, // #0 = $ws
/* 19015*/      OPC_RecordChild2, // #1 = $wt
/* 19016*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19018*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSAF_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3241:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSAF_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19026*/    /*Scope*/ 15, /*->19042*/
/* 19027*/      OPC_CheckChild0Integer, 44|128,25/*3244*/, 
/* 19030*/      OPC_RecordChild1, // #0 = $ws
/* 19031*/      OPC_RecordChild2, // #1 = $wt
/* 19032*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19034*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSEQ_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3244:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSEQ_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19042*/    /*Scope*/ 15, /*->19058*/
/* 19043*/      OPC_CheckChild0Integer, 43|128,25/*3243*/, 
/* 19046*/      OPC_RecordChild1, // #0 = $ws
/* 19047*/      OPC_RecordChild2, // #1 = $wt
/* 19048*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19050*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSEQ_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3243:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSEQ_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19058*/    /*Scope*/ 15, /*->19074*/
/* 19059*/      OPC_CheckChild0Integer, 46|128,25/*3246*/, 
/* 19062*/      OPC_RecordChild1, // #0 = $ws
/* 19063*/      OPC_RecordChild2, // #1 = $wt
/* 19064*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19066*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSLE_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3246:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSLE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19074*/    /*Scope*/ 15, /*->19090*/
/* 19075*/      OPC_CheckChild0Integer, 45|128,25/*3245*/, 
/* 19078*/      OPC_RecordChild1, // #0 = $ws
/* 19079*/      OPC_RecordChild2, // #1 = $wt
/* 19080*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19082*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSLE_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3245:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSLE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19090*/    /*Scope*/ 15, /*->19106*/
/* 19091*/      OPC_CheckChild0Integer, 48|128,25/*3248*/, 
/* 19094*/      OPC_RecordChild1, // #0 = $ws
/* 19095*/      OPC_RecordChild2, // #1 = $wt
/* 19096*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19098*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSLT_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3248:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSLT_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19106*/    /*Scope*/ 15, /*->19122*/
/* 19107*/      OPC_CheckChild0Integer, 47|128,25/*3247*/, 
/* 19110*/      OPC_RecordChild1, // #0 = $ws
/* 19111*/      OPC_RecordChild2, // #1 = $wt
/* 19112*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19114*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSLT_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3247:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSLT_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19122*/    /*Scope*/ 15, /*->19138*/
/* 19123*/      OPC_CheckChild0Integer, 50|128,25/*3250*/, 
/* 19126*/      OPC_RecordChild1, // #0 = $ws
/* 19127*/      OPC_RecordChild2, // #1 = $wt
/* 19128*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19130*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSNE_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3250:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSNE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19138*/    /*Scope*/ 15, /*->19154*/
/* 19139*/      OPC_CheckChild0Integer, 49|128,25/*3249*/, 
/* 19142*/      OPC_RecordChild1, // #0 = $ws
/* 19143*/      OPC_RecordChild2, // #1 = $wt
/* 19144*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19146*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSNE_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3249:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSNE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19154*/    /*Scope*/ 15, /*->19170*/
/* 19155*/      OPC_CheckChild0Integer, 52|128,25/*3252*/, 
/* 19158*/      OPC_RecordChild1, // #0 = $ws
/* 19159*/      OPC_RecordChild2, // #1 = $wt
/* 19160*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19162*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSOR_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3252:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSOR_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19170*/    /*Scope*/ 15, /*->19186*/
/* 19171*/      OPC_CheckChild0Integer, 51|128,25/*3251*/, 
/* 19174*/      OPC_RecordChild1, // #0 = $ws
/* 19175*/      OPC_RecordChild2, // #1 = $wt
/* 19176*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19178*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSOR_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3251:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSOR_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19186*/    /*Scope*/ 15, /*->19202*/
/* 19187*/      OPC_CheckChild0Integer, 58|128,25/*3258*/, 
/* 19190*/      OPC_RecordChild1, // #0 = $ws
/* 19191*/      OPC_RecordChild2, // #1 = $wt
/* 19192*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19194*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUEQ_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3258:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSUEQ_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19202*/    /*Scope*/ 15, /*->19218*/
/* 19203*/      OPC_CheckChild0Integer, 57|128,25/*3257*/, 
/* 19206*/      OPC_RecordChild1, // #0 = $ws
/* 19207*/      OPC_RecordChild2, // #1 = $wt
/* 19208*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19210*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUEQ_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3257:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSUEQ_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19218*/    /*Scope*/ 15, /*->19234*/
/* 19219*/      OPC_CheckChild0Integer, 60|128,25/*3260*/, 
/* 19222*/      OPC_RecordChild1, // #0 = $ws
/* 19223*/      OPC_RecordChild2, // #1 = $wt
/* 19224*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19226*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSULE_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3260:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSULE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19234*/    /*Scope*/ 15, /*->19250*/
/* 19235*/      OPC_CheckChild0Integer, 59|128,25/*3259*/, 
/* 19238*/      OPC_RecordChild1, // #0 = $ws
/* 19239*/      OPC_RecordChild2, // #1 = $wt
/* 19240*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19242*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSULE_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3259:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSULE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19250*/    /*Scope*/ 15, /*->19266*/
/* 19251*/      OPC_CheckChild0Integer, 62|128,25/*3262*/, 
/* 19254*/      OPC_RecordChild1, // #0 = $ws
/* 19255*/      OPC_RecordChild2, // #1 = $wt
/* 19256*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19258*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSULT_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3262:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSULT_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19266*/    /*Scope*/ 15, /*->19282*/
/* 19267*/      OPC_CheckChild0Integer, 61|128,25/*3261*/, 
/* 19270*/      OPC_RecordChild1, // #0 = $ws
/* 19271*/      OPC_RecordChild2, // #1 = $wt
/* 19272*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19274*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSULT_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3261:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSULT_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19282*/    /*Scope*/ 15, /*->19298*/
/* 19283*/      OPC_CheckChild0Integer, 64|128,25/*3264*/, 
/* 19286*/      OPC_RecordChild1, // #0 = $ws
/* 19287*/      OPC_RecordChild2, // #1 = $wt
/* 19288*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19290*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUN_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3264:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSUN_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19298*/    /*Scope*/ 15, /*->19314*/
/* 19299*/      OPC_CheckChild0Integer, 63|128,25/*3263*/, 
/* 19302*/      OPC_RecordChild1, // #0 = $ws
/* 19303*/      OPC_RecordChild2, // #1 = $wt
/* 19304*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19306*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUN_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3263:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSUN_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19314*/    /*Scope*/ 15, /*->19330*/
/* 19315*/      OPC_CheckChild0Integer, 66|128,25/*3266*/, 
/* 19318*/      OPC_RecordChild1, // #0 = $ws
/* 19319*/      OPC_RecordChild2, // #1 = $wt
/* 19320*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19322*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUNE_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3266:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FSUNE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19330*/    /*Scope*/ 15, /*->19346*/
/* 19331*/      OPC_CheckChild0Integer, 65|128,25/*3265*/, 
/* 19334*/      OPC_RecordChild1, // #0 = $ws
/* 19335*/      OPC_RecordChild2, // #1 = $wt
/* 19336*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19338*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FSUNE_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3265:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FSUNE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19346*/    /*Scope*/ 13, /*->19360*/
/* 19347*/      OPC_CheckChild0Integer, 68|128,25/*3268*/, 
/* 19350*/      OPC_RecordChild1, // #0 = $ws
/* 19351*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19353*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTINT_S_W), 0,
                    MVT::v4i32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3268:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 8
                // Dst: (FTINT_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 19360*/    /*Scope*/ 13, /*->19374*/
/* 19361*/      OPC_CheckChild0Integer, 67|128,25/*3267*/, 
/* 19364*/      OPC_RecordChild1, // #0 = $ws
/* 19365*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19367*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTINT_S_D), 0,
                    MVT::v2i64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3267:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 8
                // Dst: (FTINT_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 19374*/    /*Scope*/ 13, /*->19388*/
/* 19375*/      OPC_CheckChild0Integer, 70|128,25/*3270*/, 
/* 19378*/      OPC_RecordChild1, // #0 = $ws
/* 19379*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19381*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTINT_U_W), 0,
                    MVT::v4i32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3270:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 8
                // Dst: (FTINT_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 19388*/    /*Scope*/ 13, /*->19402*/
/* 19389*/      OPC_CheckChild0Integer, 69|128,25/*3269*/, 
/* 19392*/      OPC_RecordChild1, // #0 = $ws
/* 19393*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19395*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTINT_U_D), 0,
                    MVT::v2i64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3269:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 8
                // Dst: (FTINT_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 19402*/    /*Scope*/ 15, /*->19418*/
/* 19403*/      OPC_CheckChild0Integer, 71|128,25/*3271*/, 
/* 19406*/      OPC_RecordChild1, // #0 = $ws
/* 19407*/      OPC_RecordChild2, // #1 = $wt
/* 19408*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19410*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTQ_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3271:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FTQ_H:{ *:[v8i16] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 19418*/    /*Scope*/ 15, /*->19434*/
/* 19419*/      OPC_CheckChild0Integer, 72|128,25/*3272*/, 
/* 19422*/      OPC_RecordChild1, // #0 = $ws
/* 19423*/      OPC_RecordChild2, // #1 = $wt
/* 19424*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19426*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FTQ_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3272:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FTQ_W:{ *:[v4i32] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 19434*/    /*Scope*/ 15, /*->19450*/
/* 19435*/      OPC_CheckChild0Integer, 78|128,25/*3278*/, 
/* 19438*/      OPC_RecordChild1, // #0 = $ws
/* 19439*/      OPC_RecordChild2, // #1 = $wt
/* 19440*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19442*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HADD_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3278:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (HADD_S_H:{ *:[v8i16] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 19450*/    /*Scope*/ 15, /*->19466*/
/* 19451*/      OPC_CheckChild0Integer, 79|128,25/*3279*/, 
/* 19454*/      OPC_RecordChild1, // #0 = $ws
/* 19455*/      OPC_RecordChild2, // #1 = $wt
/* 19456*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19458*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HADD_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3279:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (HADD_S_W:{ *:[v4i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19466*/    /*Scope*/ 15, /*->19482*/
/* 19467*/      OPC_CheckChild0Integer, 77|128,25/*3277*/, 
/* 19470*/      OPC_RecordChild1, // #0 = $ws
/* 19471*/      OPC_RecordChild2, // #1 = $wt
/* 19472*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19474*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HADD_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3277:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (HADD_S_D:{ *:[v2i64] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19482*/    /*Scope*/ 15, /*->19498*/
/* 19483*/      OPC_CheckChild0Integer, 81|128,25/*3281*/, 
/* 19486*/      OPC_RecordChild1, // #0 = $ws
/* 19487*/      OPC_RecordChild2, // #1 = $wt
/* 19488*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19490*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HADD_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3281:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (HADD_U_H:{ *:[v8i16] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 19498*/    /*Scope*/ 15, /*->19514*/
/* 19499*/      OPC_CheckChild0Integer, 82|128,25/*3282*/, 
/* 19502*/      OPC_RecordChild1, // #0 = $ws
/* 19503*/      OPC_RecordChild2, // #1 = $wt
/* 19504*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19506*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HADD_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3282:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (HADD_U_W:{ *:[v4i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19514*/    /*Scope*/ 15, /*->19530*/
/* 19515*/      OPC_CheckChild0Integer, 80|128,25/*3280*/, 
/* 19518*/      OPC_RecordChild1, // #0 = $ws
/* 19519*/      OPC_RecordChild2, // #1 = $wt
/* 19520*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19522*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HADD_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3280:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (HADD_U_D:{ *:[v2i64] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19530*/    /*Scope*/ 15, /*->19546*/
/* 19531*/      OPC_CheckChild0Integer, 84|128,25/*3284*/, 
/* 19534*/      OPC_RecordChild1, // #0 = $ws
/* 19535*/      OPC_RecordChild2, // #1 = $wt
/* 19536*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19538*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HSUB_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3284:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (HSUB_S_H:{ *:[v8i16] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 19546*/    /*Scope*/ 15, /*->19562*/
/* 19547*/      OPC_CheckChild0Integer, 85|128,25/*3285*/, 
/* 19550*/      OPC_RecordChild1, // #0 = $ws
/* 19551*/      OPC_RecordChild2, // #1 = $wt
/* 19552*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19554*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HSUB_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3285:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (HSUB_S_W:{ *:[v4i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19562*/    /*Scope*/ 15, /*->19578*/
/* 19563*/      OPC_CheckChild0Integer, 83|128,25/*3283*/, 
/* 19566*/      OPC_RecordChild1, // #0 = $ws
/* 19567*/      OPC_RecordChild2, // #1 = $wt
/* 19568*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19570*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HSUB_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3283:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (HSUB_S_D:{ *:[v2i64] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19578*/    /*Scope*/ 15, /*->19594*/
/* 19579*/      OPC_CheckChild0Integer, 87|128,25/*3287*/, 
/* 19582*/      OPC_RecordChild1, // #0 = $ws
/* 19583*/      OPC_RecordChild2, // #1 = $wt
/* 19584*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19586*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HSUB_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3287:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (HSUB_U_H:{ *:[v8i16] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 19594*/    /*Scope*/ 15, /*->19610*/
/* 19595*/      OPC_CheckChild0Integer, 88|128,25/*3288*/, 
/* 19598*/      OPC_RecordChild1, // #0 = $ws
/* 19599*/      OPC_RecordChild2, // #1 = $wt
/* 19600*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19602*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HSUB_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3288:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (HSUB_U_W:{ *:[v4i32] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19610*/    /*Scope*/ 15, /*->19626*/
/* 19611*/      OPC_CheckChild0Integer, 86|128,25/*3286*/, 
/* 19614*/      OPC_RecordChild1, // #0 = $ws
/* 19615*/      OPC_RecordChild2, // #1 = $wt
/* 19616*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19618*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::HSUB_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3286:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (HSUB_U_D:{ *:[v2i64] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19626*/    /*Scope*/ 17, /*->19644*/
/* 19627*/      OPC_CheckChild0Integer, 127|128,25/*3327*/, 
/* 19630*/      OPC_RecordChild1, // #0 = $wd_in
/* 19631*/      OPC_RecordChild2, // #1 = $ws
/* 19632*/      OPC_RecordChild3, // #2 = $wt
/* 19633*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19635*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MADD_Q_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3327:{ *:[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)
/* 19644*/    /*Scope*/ 17, /*->19662*/
/* 19645*/      OPC_CheckChild0Integer, 0|128,26/*3328*/, 
/* 19648*/      OPC_RecordChild1, // #0 = $wd_in
/* 19649*/      OPC_RecordChild2, // #1 = $ws
/* 19650*/      OPC_RecordChild3, // #2 = $wt
/* 19651*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19653*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MADD_Q_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3328:{ *:[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)
/* 19662*/    /*Scope*/ 17, /*->19680*/
/* 19663*/      OPC_CheckChild0Integer, 1|128,26/*3329*/, 
/* 19666*/      OPC_RecordChild1, // #0 = $wd_in
/* 19667*/      OPC_RecordChild2, // #1 = $ws
/* 19668*/      OPC_RecordChild3, // #2 = $wt
/* 19669*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19671*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MADDR_Q_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3329:{ *:[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)
/* 19680*/    /*Scope*/ 17, /*->19698*/
/* 19681*/      OPC_CheckChild0Integer, 2|128,26/*3330*/, 
/* 19684*/      OPC_RecordChild1, // #0 = $wd_in
/* 19685*/      OPC_RecordChild2, // #1 = $ws
/* 19686*/      OPC_RecordChild3, // #2 = $wt
/* 19687*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19689*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MADDR_Q_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3330:{ *:[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)
/* 19698*/    /*Scope*/ 15, /*->19714*/
/* 19699*/      OPC_CheckChild0Integer, 12|128,26/*3340*/, 
/* 19702*/      OPC_RecordChild1, // #0 = $ws
/* 19703*/      OPC_RecordChild2, // #1 = $wt
/* 19704*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19706*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_A_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3340:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (MAX_A_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 19714*/    /*Scope*/ 15, /*->19730*/
/* 19715*/      OPC_CheckChild0Integer, 14|128,26/*3342*/, 
/* 19718*/      OPC_RecordChild1, // #0 = $ws
/* 19719*/      OPC_RecordChild2, // #1 = $wt
/* 19720*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19722*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_A_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3342:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (MAX_A_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19730*/    /*Scope*/ 15, /*->19746*/
/* 19731*/      OPC_CheckChild0Integer, 15|128,26/*3343*/, 
/* 19734*/      OPC_RecordChild1, // #0 = $ws
/* 19735*/      OPC_RecordChild2, // #1 = $wt
/* 19736*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19738*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_A_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3343:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (MAX_A_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19746*/    /*Scope*/ 15, /*->19762*/
/* 19747*/      OPC_CheckChild0Integer, 13|128,26/*3341*/, 
/* 19750*/      OPC_RecordChild1, // #0 = $ws
/* 19751*/      OPC_RecordChild2, // #1 = $wt
/* 19752*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19754*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MAX_A_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3341:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (MAX_A_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 19762*/    /*Scope*/ 15, /*->19778*/
/* 19763*/      OPC_CheckChild0Integer, 32|128,26/*3360*/, 
/* 19766*/      OPC_RecordChild1, // #0 = $ws
/* 19767*/      OPC_RecordChild2, // #1 = $wt
/* 19768*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19770*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_A_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3360:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (MIN_A_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 19778*/    /*Scope*/ 15, /*->19794*/
/* 19779*/      OPC_CheckChild0Integer, 34|128,26/*3362*/, 
/* 19782*/      OPC_RecordChild1, // #0 = $ws
/* 19783*/      OPC_RecordChild2, // #1 = $wt
/* 19784*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19786*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_A_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3362:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (MIN_A_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19794*/    /*Scope*/ 15, /*->19810*/
/* 19795*/      OPC_CheckChild0Integer, 35|128,26/*3363*/, 
/* 19798*/      OPC_RecordChild1, // #0 = $ws
/* 19799*/      OPC_RecordChild2, // #1 = $wt
/* 19800*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19802*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_A_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3363:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (MIN_A_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19810*/    /*Scope*/ 15, /*->19826*/
/* 19811*/      OPC_CheckChild0Integer, 33|128,26/*3361*/, 
/* 19814*/      OPC_RecordChild1, // #0 = $ws
/* 19815*/      OPC_RecordChild2, // #1 = $wt
/* 19816*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19818*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MIN_A_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3361:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (MIN_A_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 19826*/    /*Scope*/ 17, /*->19844*/
/* 19827*/      OPC_CheckChild0Integer, 63|128,26/*3391*/, 
/* 19830*/      OPC_RecordChild1, // #0 = $wd_in
/* 19831*/      OPC_RecordChild2, // #1 = $ws
/* 19832*/      OPC_RecordChild3, // #2 = $wt
/* 19833*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19835*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUB_Q_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3391:{ *:[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)
/* 19844*/    /*Scope*/ 17, /*->19862*/
/* 19845*/      OPC_CheckChild0Integer, 64|128,26/*3392*/, 
/* 19848*/      OPC_RecordChild1, // #0 = $wd_in
/* 19849*/      OPC_RecordChild2, // #1 = $ws
/* 19850*/      OPC_RecordChild3, // #2 = $wt
/* 19851*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19853*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUB_Q_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3392:{ *:[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)
/* 19862*/    /*Scope*/ 17, /*->19880*/
/* 19863*/      OPC_CheckChild0Integer, 65|128,26/*3393*/, 
/* 19866*/      OPC_RecordChild1, // #0 = $wd_in
/* 19867*/      OPC_RecordChild2, // #1 = $ws
/* 19868*/      OPC_RecordChild3, // #2 = $wt
/* 19869*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19871*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUBR_Q_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3393:{ *:[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)
/* 19880*/    /*Scope*/ 17, /*->19898*/
/* 19881*/      OPC_CheckChild0Integer, 66|128,26/*3394*/, 
/* 19884*/      OPC_RecordChild1, // #0 = $wd_in
/* 19885*/      OPC_RecordChild2, // #1 = $ws
/* 19886*/      OPC_RecordChild3, // #2 = $wt
/* 19887*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19889*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MSUBR_Q_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3394:{ *:[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)
/* 19898*/    /*Scope*/ 15, /*->19914*/
/* 19899*/      OPC_CheckChild0Integer, 74|128,26/*3402*/, 
/* 19902*/      OPC_RecordChild1, // #0 = $ws
/* 19903*/      OPC_RecordChild2, // #1 = $wt
/* 19904*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19906*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MUL_Q_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3402:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (MUL_Q_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19914*/    /*Scope*/ 15, /*->19930*/
/* 19915*/      OPC_CheckChild0Integer, 75|128,26/*3403*/, 
/* 19918*/      OPC_RecordChild1, // #0 = $ws
/* 19919*/      OPC_RecordChild2, // #1 = $wt
/* 19920*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19922*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MUL_Q_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3403:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (MUL_Q_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19930*/    /*Scope*/ 15, /*->19946*/
/* 19931*/      OPC_CheckChild0Integer, 85|128,26/*3413*/, 
/* 19934*/      OPC_RecordChild1, // #0 = $ws
/* 19935*/      OPC_RecordChild2, // #1 = $wt
/* 19936*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19938*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MULR_Q_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3413:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (MULR_Q_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 19946*/    /*Scope*/ 15, /*->19962*/
/* 19947*/      OPC_CheckChild0Integer, 86|128,26/*3414*/, 
/* 19950*/      OPC_RecordChild1, // #0 = $ws
/* 19951*/      OPC_RecordChild2, // #1 = $wt
/* 19952*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19954*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::MULR_Q_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3414:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (MULR_Q_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 19962*/    /*Scope*/ 13, /*->19976*/
/* 19963*/      OPC_CheckChild0Integer, 95|128,26/*3423*/, 
/* 19966*/      OPC_RecordChild1, // #0 = $ws
/* 19967*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19969*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::NLOC_B), 0,
                    MVT::v16i8, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3423:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 8
                // Dst: (NLOC_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws)
/* 19976*/    /*Scope*/ 13, /*->19990*/
/* 19977*/      OPC_CheckChild0Integer, 97|128,26/*3425*/, 
/* 19980*/      OPC_RecordChild1, // #0 = $ws
/* 19981*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19983*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::NLOC_H), 0,
                    MVT::v8i16, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3425:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 8
                // Dst: (NLOC_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws)
/* 19990*/    /*Scope*/ 13, /*->20004*/
/* 19991*/      OPC_CheckChild0Integer, 98|128,26/*3426*/, 
/* 19994*/      OPC_RecordChild1, // #0 = $ws
/* 19995*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 19997*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::NLOC_W), 0,
                    MVT::v4i32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3426:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 8
                // Dst: (NLOC_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws)
/* 20004*/    /*Scope*/ 13, /*->20018*/
/* 20005*/      OPC_CheckChild0Integer, 96|128,26/*3424*/, 
/* 20008*/      OPC_RecordChild1, // #0 = $ws
/* 20009*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20011*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::NLOC_D), 0,
                    MVT::v2i64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3424:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 8
                // Dst: (NLOC_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws)
/* 20018*/    /*Scope*/ 17, /*->20036*/
/* 20019*/      OPC_CheckChild0Integer, 39|128,27/*3495*/, 
/* 20022*/      OPC_RecordChild1, // #0 = $wd_in
/* 20023*/      OPC_RecordChild2, // #1 = $ws
/* 20024*/      OPC_RecordChild3, // #2 = $rt
/* 20025*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20027*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLD_B), 0,
                    MVT::v16i8, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3495:{ *:[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)
/* 20036*/    /*Scope*/ 17, /*->20054*/
/* 20037*/      OPC_CheckChild0Integer, 41|128,27/*3497*/, 
/* 20040*/      OPC_RecordChild1, // #0 = $wd_in
/* 20041*/      OPC_RecordChild2, // #1 = $ws
/* 20042*/      OPC_RecordChild3, // #2 = $rt
/* 20043*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20045*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLD_H), 0,
                    MVT::v8i16, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3497:{ *:[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)
/* 20054*/    /*Scope*/ 17, /*->20072*/
/* 20055*/      OPC_CheckChild0Integer, 42|128,27/*3498*/, 
/* 20058*/      OPC_RecordChild1, // #0 = $wd_in
/* 20059*/      OPC_RecordChild2, // #1 = $ws
/* 20060*/      OPC_RecordChild3, // #2 = $rt
/* 20061*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20063*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLD_W), 0,
                    MVT::v4i32, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3498:{ *:[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)
/* 20072*/    /*Scope*/ 17, /*->20090*/
/* 20073*/      OPC_CheckChild0Integer, 40|128,27/*3496*/, 
/* 20076*/      OPC_RecordChild1, // #0 = $wd_in
/* 20077*/      OPC_RecordChild2, // #1 = $ws
/* 20078*/      OPC_RecordChild3, // #2 = $rt
/* 20079*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20081*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SLD_D), 0,
                    MVT::v2i64, 3/*#Ops*/, 0, 1, 2, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3496:{ *:[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)
/* 20090*/    /*Scope*/ 15, /*->20106*/
/* 20091*/      OPC_CheckChild0Integer, 71|128,27/*3527*/, 
/* 20094*/      OPC_RecordChild1, // #0 = $ws
/* 20095*/      OPC_RecordChild2, // #1 = $wt
/* 20096*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20098*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRAR_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3527:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (SRAR_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 20106*/    /*Scope*/ 15, /*->20122*/
/* 20107*/      OPC_CheckChild0Integer, 73|128,27/*3529*/, 
/* 20110*/      OPC_RecordChild1, // #0 = $ws
/* 20111*/      OPC_RecordChild2, // #1 = $wt
/* 20112*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20114*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRAR_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3529:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (SRAR_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 20122*/    /*Scope*/ 15, /*->20138*/
/* 20123*/      OPC_CheckChild0Integer, 74|128,27/*3530*/, 
/* 20126*/      OPC_RecordChild1, // #0 = $ws
/* 20127*/      OPC_RecordChild2, // #1 = $wt
/* 20128*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20130*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRAR_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3530:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (SRAR_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 20138*/    /*Scope*/ 15, /*->20154*/
/* 20139*/      OPC_CheckChild0Integer, 72|128,27/*3528*/, 
/* 20142*/      OPC_RecordChild1, // #0 = $ws
/* 20143*/      OPC_RecordChild2, // #1 = $wt
/* 20144*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20146*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRAR_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3528:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (SRAR_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 20154*/    /*Scope*/ 15, /*->20170*/
/* 20155*/      OPC_CheckChild0Integer, 87|128,27/*3543*/, 
/* 20158*/      OPC_RecordChild1, // #0 = $ws
/* 20159*/      OPC_RecordChild2, // #1 = $wt
/* 20160*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20162*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLR_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3543:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (SRLR_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 20170*/    /*Scope*/ 15, /*->20186*/
/* 20171*/      OPC_CheckChild0Integer, 89|128,27/*3545*/, 
/* 20174*/      OPC_RecordChild1, // #0 = $ws
/* 20175*/      OPC_RecordChild2, // #1 = $wt
/* 20176*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20178*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLR_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3545:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (SRLR_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 20186*/    /*Scope*/ 15, /*->20202*/
/* 20187*/      OPC_CheckChild0Integer, 90|128,27/*3546*/, 
/* 20190*/      OPC_RecordChild1, // #0 = $ws
/* 20191*/      OPC_RecordChild2, // #1 = $wt
/* 20192*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20194*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLR_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3546:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (SRLR_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 20202*/    /*Scope*/ 15, /*->20218*/
/* 20203*/      OPC_CheckChild0Integer, 88|128,27/*3544*/, 
/* 20206*/      OPC_RecordChild1, // #0 = $ws
/* 20207*/      OPC_RecordChild2, // #1 = $wt
/* 20208*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20210*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SRLR_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3544:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (SRLR_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 20218*/    /*Scope*/ 15, /*->20234*/
/* 20219*/      OPC_CheckChild0Integer, 106|128,27/*3562*/, 
/* 20222*/      OPC_RecordChild1, // #0 = $ws
/* 20223*/      OPC_RecordChild2, // #1 = $wt
/* 20224*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20226*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3562:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (SUBS_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 20234*/    /*Scope*/ 15, /*->20250*/
/* 20235*/      OPC_CheckChild0Integer, 108|128,27/*3564*/, 
/* 20238*/      OPC_RecordChild1, // #0 = $ws
/* 20239*/      OPC_RecordChild2, // #1 = $wt
/* 20240*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20242*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3564:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (SUBS_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 20250*/    /*Scope*/ 15, /*->20266*/
/* 20251*/      OPC_CheckChild0Integer, 109|128,27/*3565*/, 
/* 20254*/      OPC_RecordChild1, // #0 = $ws
/* 20255*/      OPC_RecordChild2, // #1 = $wt
/* 20256*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20258*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3565:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (SUBS_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 20266*/    /*Scope*/ 15, /*->20282*/
/* 20267*/      OPC_CheckChild0Integer, 107|128,27/*3563*/, 
/* 20270*/      OPC_RecordChild1, // #0 = $ws
/* 20271*/      OPC_RecordChild2, // #1 = $wt
/* 20272*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20274*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3563:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (SUBS_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 20282*/    /*Scope*/ 15, /*->20298*/
/* 20283*/      OPC_CheckChild0Integer, 110|128,27/*3566*/, 
/* 20286*/      OPC_RecordChild1, // #0 = $ws
/* 20287*/      OPC_RecordChild2, // #1 = $wt
/* 20288*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20290*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3566:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (SUBS_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 20298*/    /*Scope*/ 15, /*->20314*/
/* 20299*/      OPC_CheckChild0Integer, 112|128,27/*3568*/, 
/* 20302*/      OPC_RecordChild1, // #0 = $ws
/* 20303*/      OPC_RecordChild2, // #1 = $wt
/* 20304*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20306*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3568:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (SUBS_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 20314*/    /*Scope*/ 15, /*->20330*/
/* 20315*/      OPC_CheckChild0Integer, 113|128,27/*3569*/, 
/* 20318*/      OPC_RecordChild1, // #0 = $ws
/* 20319*/      OPC_RecordChild2, // #1 = $wt
/* 20320*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20322*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3569:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (SUBS_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 20330*/    /*Scope*/ 15, /*->20346*/
/* 20331*/      OPC_CheckChild0Integer, 111|128,27/*3567*/, 
/* 20334*/      OPC_RecordChild1, // #0 = $ws
/* 20335*/      OPC_RecordChild2, // #1 = $wt
/* 20336*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20338*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBS_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3567:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (SUBS_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 20346*/    /*Scope*/ 15, /*->20362*/
/* 20347*/      OPC_CheckChild0Integer, 114|128,27/*3570*/, 
/* 20350*/      OPC_RecordChild1, // #0 = $ws
/* 20351*/      OPC_RecordChild2, // #1 = $wt
/* 20352*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20354*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUS_U_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3570:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (SUBSUS_U_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 20362*/    /*Scope*/ 15, /*->20378*/
/* 20363*/      OPC_CheckChild0Integer, 116|128,27/*3572*/, 
/* 20366*/      OPC_RecordChild1, // #0 = $ws
/* 20367*/      OPC_RecordChild2, // #1 = $wt
/* 20368*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20370*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUS_U_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3572:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (SUBSUS_U_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 20378*/    /*Scope*/ 15, /*->20394*/
/* 20379*/      OPC_CheckChild0Integer, 117|128,27/*3573*/, 
/* 20382*/      OPC_RecordChild1, // #0 = $ws
/* 20383*/      OPC_RecordChild2, // #1 = $wt
/* 20384*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20386*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUS_U_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3573:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (SUBSUS_U_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 20394*/    /*Scope*/ 15, /*->20410*/
/* 20395*/      OPC_CheckChild0Integer, 115|128,27/*3571*/, 
/* 20398*/      OPC_RecordChild1, // #0 = $ws
/* 20399*/      OPC_RecordChild2, // #1 = $wt
/* 20400*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20402*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUS_U_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3571:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (SUBSUS_U_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 20410*/    /*Scope*/ 15, /*->20426*/
/* 20411*/      OPC_CheckChild0Integer, 118|128,27/*3574*/, 
/* 20414*/      OPC_RecordChild1, // #0 = $ws
/* 20415*/      OPC_RecordChild2, // #1 = $wt
/* 20416*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20418*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUU_S_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v16i8] } 3574:{ *:[iPTR] }, MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt) - Complexity = 8
                // Dst: (SUBSUU_S_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 20426*/    /*Scope*/ 15, /*->20442*/
/* 20427*/      OPC_CheckChild0Integer, 120|128,27/*3576*/, 
/* 20430*/      OPC_RecordChild1, // #0 = $ws
/* 20431*/      OPC_RecordChild2, // #1 = $wt
/* 20432*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20434*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUU_S_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8i16] } 3576:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt) - Complexity = 8
                // Dst: (SUBSUU_S_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 20442*/    /*Scope*/ 15, /*->20458*/
/* 20443*/      OPC_CheckChild0Integer, 121|128,27/*3577*/, 
/* 20446*/      OPC_RecordChild1, // #0 = $ws
/* 20447*/      OPC_RecordChild2, // #1 = $wt
/* 20448*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20450*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUU_S_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4i32] } 3577:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt) - Complexity = 8
                // Dst: (SUBSUU_S_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 20458*/    /*Scope*/ 15, /*->20474*/
/* 20459*/      OPC_CheckChild0Integer, 119|128,27/*3575*/, 
/* 20462*/      OPC_RecordChild1, // #0 = $ws
/* 20463*/      OPC_RecordChild2, // #1 = $wt
/* 20464*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20466*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SUBSUU_S_D), 0,
                    MVT::v2i64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2i64] } 3575:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt) - Complexity = 8
                // Dst: (SUBSUU_S_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 20474*/    /*Scope*/ 15, /*->20490*/
/* 20475*/      OPC_CheckChild0Integer, 127|128,24/*3199*/, 
/* 20478*/      OPC_RecordChild1, // #0 = $ws
/* 20479*/      OPC_RecordChild2, // #1 = $wt
/* 20480*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20482*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXDO_H), 0,
                    MVT::v8f16, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v8f16] } 3199:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FEXDO_H:{ *:[v8f16] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 20490*/    /*Scope*/ 15, /*->20506*/
/* 20491*/      OPC_CheckChild0Integer, 0|128,25/*3200*/, 
/* 20494*/      OPC_RecordChild1, // #0 = $ws
/* 20495*/      OPC_RecordChild2, // #1 = $wt
/* 20496*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20498*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXDO_W), 0,
                    MVT::v4f32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3200:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FEXDO_W:{ *:[v4f32] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 20506*/    /*Scope*/ 13, /*->20520*/
/* 20507*/      OPC_CheckChild0Integer, 4|128,25/*3204*/, 
/* 20510*/      OPC_RecordChild1, // #0 = $ws
/* 20511*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20513*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXUPL_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3204:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8f16] }:$ws) - Complexity = 8
                // Dst: (FEXUPL_W:{ *:[v4f32] } MSA128HOpnd:{ *:[v8f16] }:$ws)
/* 20520*/    /*Scope*/ 13, /*->20534*/
/* 20521*/      OPC_CheckChild0Integer, 3|128,25/*3203*/, 
/* 20524*/      OPC_RecordChild1, // #0 = $ws
/* 20525*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20527*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXUPL_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3203:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 8
                // Dst: (FEXUPL_D:{ *:[v2f64] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 20534*/    /*Scope*/ 13, /*->20548*/
/* 20535*/      OPC_CheckChild0Integer, 6|128,25/*3206*/, 
/* 20538*/      OPC_RecordChild1, // #0 = $ws
/* 20539*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20541*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXUPR_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3206:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8f16] }:$ws) - Complexity = 8
                // Dst: (FEXUPR_W:{ *:[v4f32] } MSA128HOpnd:{ *:[v8f16] }:$ws)
/* 20548*/    /*Scope*/ 13, /*->20562*/
/* 20549*/      OPC_CheckChild0Integer, 5|128,25/*3205*/, 
/* 20552*/      OPC_RecordChild1, // #0 = $ws
/* 20553*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20555*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FEXUPR_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3205:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 8
                // Dst: (FEXUPR_D:{ *:[v2f64] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 20562*/    /*Scope*/ 13, /*->20576*/
/* 20563*/      OPC_CheckChild0Integer, 12|128,25/*3212*/, 
/* 20566*/      OPC_RecordChild1, // #0 = $ws
/* 20567*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20569*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FFQL_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3212:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 8
                // Dst: (FFQL_W:{ *:[v4f32] } MSA128HOpnd:{ *:[v8i16] }:$ws)
/* 20576*/    /*Scope*/ 13, /*->20590*/
/* 20577*/      OPC_CheckChild0Integer, 11|128,25/*3211*/, 
/* 20580*/      OPC_RecordChild1, // #0 = $ws
/* 20581*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20583*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FFQL_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3211:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 8
                // Dst: (FFQL_D:{ *:[v2f64] } MSA128WOpnd:{ *:[v4i32] }:$ws)
/* 20590*/    /*Scope*/ 13, /*->20604*/
/* 20591*/      OPC_CheckChild0Integer, 14|128,25/*3214*/, 
/* 20594*/      OPC_RecordChild1, // #0 = $ws
/* 20595*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20597*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FFQR_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3214:{ *:[iPTR] }, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 8
                // Dst: (FFQR_W:{ *:[v4f32] } MSA128HOpnd:{ *:[v8i16] }:$ws)
/* 20604*/    /*Scope*/ 13, /*->20618*/
/* 20605*/      OPC_CheckChild0Integer, 13|128,25/*3213*/, 
/* 20608*/      OPC_RecordChild1, // #0 = $ws
/* 20609*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20611*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FFQR_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3213:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 8
                // Dst: (FFQR_D:{ *:[v2f64] } MSA128WOpnd:{ *:[v4i32] }:$ws)
/* 20618*/    /*Scope*/ 15, /*->20634*/
/* 20619*/      OPC_CheckChild0Integer, 26|128,25/*3226*/, 
/* 20622*/      OPC_RecordChild1, // #0 = $ws
/* 20623*/      OPC_RecordChild2, // #1 = $wt
/* 20624*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20626*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMAX_W), 0,
                    MVT::v4f32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3226:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FMAX_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 20634*/    /*Scope*/ 15, /*->20650*/
/* 20635*/      OPC_CheckChild0Integer, 25|128,25/*3225*/, 
/* 20638*/      OPC_RecordChild1, // #0 = $ws
/* 20639*/      OPC_RecordChild2, // #1 = $wt
/* 20640*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20642*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMAX_D), 0,
                    MVT::v2f64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3225:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FMAX_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 20650*/    /*Scope*/ 15, /*->20666*/
/* 20651*/      OPC_CheckChild0Integer, 24|128,25/*3224*/, 
/* 20654*/      OPC_RecordChild1, // #0 = $ws
/* 20655*/      OPC_RecordChild2, // #1 = $wt
/* 20656*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20658*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMAX_A_W), 0,
                    MVT::v4f32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3224:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FMAX_A_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 20666*/    /*Scope*/ 15, /*->20682*/
/* 20667*/      OPC_CheckChild0Integer, 23|128,25/*3223*/, 
/* 20670*/      OPC_RecordChild1, // #0 = $ws
/* 20671*/      OPC_RecordChild2, // #1 = $wt
/* 20672*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20674*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMAX_A_D), 0,
                    MVT::v2f64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3223:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FMAX_A_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 20682*/    /*Scope*/ 15, /*->20698*/
/* 20683*/      OPC_CheckChild0Integer, 30|128,25/*3230*/, 
/* 20686*/      OPC_RecordChild1, // #0 = $ws
/* 20687*/      OPC_RecordChild2, // #1 = $wt
/* 20688*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20690*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMIN_W), 0,
                    MVT::v4f32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3230:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FMIN_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 20698*/    /*Scope*/ 15, /*->20714*/
/* 20699*/      OPC_CheckChild0Integer, 29|128,25/*3229*/, 
/* 20702*/      OPC_RecordChild1, // #0 = $ws
/* 20703*/      OPC_RecordChild2, // #1 = $wt
/* 20704*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20706*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMIN_D), 0,
                    MVT::v2f64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3229:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FMIN_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 20714*/    /*Scope*/ 15, /*->20730*/
/* 20715*/      OPC_CheckChild0Integer, 28|128,25/*3228*/, 
/* 20718*/      OPC_RecordChild1, // #0 = $ws
/* 20719*/      OPC_RecordChild2, // #1 = $wt
/* 20720*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20722*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMIN_A_W), 0,
                    MVT::v4f32, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3228:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt) - Complexity = 8
                // Dst: (FMIN_A_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws, MSA128WOpnd:{ *:[v4f32] }:$wt)
/* 20730*/    /*Scope*/ 15, /*->20746*/
/* 20731*/      OPC_CheckChild0Integer, 27|128,25/*3227*/, 
/* 20734*/      OPC_RecordChild1, // #0 = $ws
/* 20735*/      OPC_RecordChild2, // #1 = $wt
/* 20736*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20738*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FMIN_A_D), 0,
                    MVT::v2f64, 2/*#Ops*/, 0, 1, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3227:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt) - Complexity = 8
                // Dst: (FMIN_A_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws, MSA128DOpnd:{ *:[v2f64] }:$wt)
/* 20746*/    /*Scope*/ 13, /*->20760*/
/* 20747*/      OPC_CheckChild0Integer, 36|128,25/*3236*/, 
/* 20750*/      OPC_RecordChild1, // #0 = $ws
/* 20751*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20753*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FRCP_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3236:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 8
                // Dst: (FRCP_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 20760*/    /*Scope*/ 13, /*->20774*/
/* 20761*/      OPC_CheckChild0Integer, 35|128,25/*3235*/, 
/* 20764*/      OPC_RecordChild1, // #0 = $ws
/* 20765*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20767*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FRCP_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3235:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 8
                // Dst: (FRCP_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 20774*/    /*Scope*/ 13, /*->20788*/
/* 20775*/      OPC_CheckChild0Integer, 40|128,25/*3240*/, 
/* 20778*/      OPC_RecordChild1, // #0 = $ws
/* 20779*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20781*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FRSQRT_W), 0,
                    MVT::v4f32, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v4f32] } 3240:{ *:[iPTR] }, MSA128WOpnd:{ *:[v4f32] }:$ws) - Complexity = 8
                // Dst: (FRSQRT_W:{ *:[v4f32] } MSA128WOpnd:{ *:[v4f32] }:$ws)
/* 20788*/    /*Scope*/ 13, /*->20802*/
/* 20789*/      OPC_CheckChild0Integer, 39|128,25/*3239*/, 
/* 20792*/      OPC_RecordChild1, // #0 = $ws
/* 20793*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 20795*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::FRSQRT_D), 0,
                    MVT::v2f64, 1/*#Ops*/, 0, 
                // Src: (intrinsic_wo_chain:{ *:[v2f64] } 3239:{ *:[iPTR] }, MSA128DOpnd:{ *:[v2f64] }:$ws) - Complexity = 8
                // Dst: (FRSQRT_D:{ *:[v2f64] } MSA128DOpnd:{ *:[v2f64] }:$ws)
/* 20802*/    0, /*End of Scope*/
/* 20803*/  /*SwitchOpcode*/ 99|128,1/*227*/, TARGET_VAL(ISD::INTRINSIC_VOID),// ->21034
/* 20807*/    OPC_RecordNode, // #0 = 'intrinsic_void' chained node
/* 20808*/    OPC_Scope, 43, /*->20853*/ // 7 children in Scope
/* 20810*/      OPC_CheckChild1Integer, 12|128,28/*3596*/, 
/* 20813*/      OPC_RecordChild2, // #1 = $rs
/* 20814*/      OPC_RecordChild3, // #2 = $mask
/* 20815*/      OPC_MoveChild3,
/* 20816*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 20819*/      OPC_Scope, 15, /*->20836*/ // 2 children in Scope
/* 20821*/        OPC_CheckPredicate, 29, // Predicate_immZExt10
/* 20823*/        OPC_MoveParent,
/* 20824*/        OPC_CheckPatternPredicate, 48, // (Subtarget->hasDSP()) && (!Subtarget->inMicroMipsMode())
/* 20826*/        OPC_EmitMergeInputChains1_0,
/* 20827*/        OPC_EmitConvertToTarget, 2,
/* 20829*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::WRDSP), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 3, 
                  // Src: (intrinsic_void 3596:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt10>>:$mask) - Complexity = 12
                  // Dst: (WRDSP GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$mask)
/* 20836*/      /*Scope*/ 15, /*->20852*/
/* 20837*/        OPC_CheckPredicate, 30, // Predicate_immZExt7
/* 20839*/        OPC_MoveParent,
/* 20840*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 20842*/        OPC_EmitMergeInputChains1_0,
/* 20843*/        OPC_EmitConvertToTarget, 2,
/* 20845*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::WRDSP_MM), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 3, 
                  // Src: (intrinsic_void 3596:{ *:[iPTR] }, GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] })<<P:Predicate_immZExt7>>:$mask) - Complexity = 12
                  // Dst: (WRDSP_MM GPR32Opnd:{ *:[i32] }:$rt, (imm:{ *:[i32] }):$mask)
/* 20852*/      0, /*End of Scope*/
/* 20853*/    /*Scope*/ 29, /*->20883*/
/* 20854*/      OPC_CheckChild1Integer, 38|128,24/*3110*/, 
/* 20857*/      OPC_RecordChild2, // #1 = $rs
/* 20858*/      OPC_RecordChild3, // #2 = $rt
/* 20859*/      OPC_Scope, 10, /*->20871*/ // 2 children in Scope
/* 20861*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 20863*/        OPC_EmitMergeInputChains1_0,
/* 20864*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMPU_EQ_QB), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3110:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPU_EQ_QB DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 20871*/      /*Scope*/ 10, /*->20882*/
/* 20872*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 20874*/        OPC_EmitMergeInputChains1_0,
/* 20875*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMPU_EQ_QB_MM), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3110:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPU_EQ_QB_MM DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 20882*/      0, /*End of Scope*/
/* 20883*/    /*Scope*/ 29, /*->20913*/
/* 20884*/      OPC_CheckChild1Integer, 40|128,24/*3112*/, 
/* 20887*/      OPC_RecordChild2, // #1 = $rs
/* 20888*/      OPC_RecordChild3, // #2 = $rt
/* 20889*/      OPC_Scope, 10, /*->20901*/ // 2 children in Scope
/* 20891*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 20893*/        OPC_EmitMergeInputChains1_0,
/* 20894*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMPU_LT_QB), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3112:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPU_LT_QB DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 20901*/      /*Scope*/ 10, /*->20912*/
/* 20902*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 20904*/        OPC_EmitMergeInputChains1_0,
/* 20905*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMPU_LT_QB_MM), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3112:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPU_LT_QB_MM DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 20912*/      0, /*End of Scope*/
/* 20913*/    /*Scope*/ 29, /*->20943*/
/* 20914*/      OPC_CheckChild1Integer, 39|128,24/*3111*/, 
/* 20917*/      OPC_RecordChild2, // #1 = $rs
/* 20918*/      OPC_RecordChild3, // #2 = $rt
/* 20919*/      OPC_Scope, 10, /*->20931*/ // 2 children in Scope
/* 20921*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 20923*/        OPC_EmitMergeInputChains1_0,
/* 20924*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMPU_LE_QB), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3111:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPU_LE_QB DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 20931*/      /*Scope*/ 10, /*->20942*/
/* 20932*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 20934*/        OPC_EmitMergeInputChains1_0,
/* 20935*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMPU_LE_QB_MM), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3111:{ *:[iPTR] }, DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt) - Complexity = 8
                  // Dst: (CMPU_LE_QB_MM DSPROpnd:{ *:[v4i8] }:$rs, DSPROpnd:{ *:[v4i8] }:$rt)
/* 20942*/      0, /*End of Scope*/
/* 20943*/    /*Scope*/ 29, /*->20973*/
/* 20944*/      OPC_CheckChild1Integer, 29|128,24/*3101*/, 
/* 20947*/      OPC_RecordChild2, // #1 = $rs
/* 20948*/      OPC_RecordChild3, // #2 = $rt
/* 20949*/      OPC_Scope, 10, /*->20961*/ // 2 children in Scope
/* 20951*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 20953*/        OPC_EmitMergeInputChains1_0,
/* 20954*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMP_EQ_PH), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3101:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (CMP_EQ_PH DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 20961*/      /*Scope*/ 10, /*->20972*/
/* 20962*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 20964*/        OPC_EmitMergeInputChains1_0,
/* 20965*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMP_EQ_PH_MM), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3101:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (CMP_EQ_PH_MM DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 20972*/      0, /*End of Scope*/
/* 20973*/    /*Scope*/ 29, /*->21003*/
/* 20974*/      OPC_CheckChild1Integer, 31|128,24/*3103*/, 
/* 20977*/      OPC_RecordChild2, // #1 = $rs
/* 20978*/      OPC_RecordChild3, // #2 = $rt
/* 20979*/      OPC_Scope, 10, /*->20991*/ // 2 children in Scope
/* 20981*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 20983*/        OPC_EmitMergeInputChains1_0,
/* 20984*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMP_LT_PH), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3103:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (CMP_LT_PH DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 20991*/      /*Scope*/ 10, /*->21002*/
/* 20992*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 20994*/        OPC_EmitMergeInputChains1_0,
/* 20995*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMP_LT_PH_MM), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3103:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (CMP_LT_PH_MM DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 21002*/      0, /*End of Scope*/
/* 21003*/    /*Scope*/ 29, /*->21033*/
/* 21004*/      OPC_CheckChild1Integer, 30|128,24/*3102*/, 
/* 21007*/      OPC_RecordChild2, // #1 = $rs
/* 21008*/      OPC_RecordChild3, // #2 = $rt
/* 21009*/      OPC_Scope, 10, /*->21021*/ // 2 children in Scope
/* 21011*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 21013*/        OPC_EmitMergeInputChains1_0,
/* 21014*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMP_LE_PH), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3102:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (CMP_LE_PH DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 21021*/      /*Scope*/ 10, /*->21032*/
/* 21022*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 21024*/        OPC_EmitMergeInputChains1_0,
/* 21025*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::CMP_LE_PH_MM), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2, 
                  // Src: (intrinsic_void 3102:{ *:[iPTR] }, DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt) - Complexity = 8
                  // Dst: (CMP_LE_PH_MM DSPROpnd:{ *:[v2i16] }:$rs, DSPROpnd:{ *:[v2i16] }:$rt)
/* 21032*/      0, /*End of Scope*/
/* 21033*/    0, /*End of Scope*/
/* 21034*/  /*SwitchOpcode*/ 52|128,18/*2356*/, TARGET_VAL(ISD::XOR),// ->23394
/* 21038*/    OPC_Scope, 69, /*->21109*/ // 14 children in Scope
/* 21040*/      OPC_MoveChild0,
/* 21041*/      OPC_CheckOpcode, TARGET_VAL(ISD::OR),
/* 21044*/      OPC_RecordChild0, // #0 = $rs
/* 21045*/      OPC_RecordChild1, // #1 = $rt
/* 21046*/      OPC_MoveParent,
/* 21047*/      OPC_CheckChild1Integer, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 21058*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->21096
/* 21061*/        OPC_Scope, 10, /*->21073*/ // 3 children in Scope
/* 21063*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 21065*/          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)
/* 21073*/        /*Scope*/ 10, /*->21084*/
/* 21074*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 21076*/          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)
/* 21084*/        /*Scope*/ 10, /*->21095*/
/* 21085*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 21087*/          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)
/* 21095*/        0, /*End of Scope*/
/* 21096*/      /*SwitchType*/ 10, MVT::i64,// ->21108
/* 21098*/        OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 21100*/        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)
/* 21108*/      0, // EndSwitchType
/* 21109*/    /*Scope*/ 2|128,5/*642*/, /*->21753*/
/* 21111*/      OPC_RecordChild0, // #0 = $rs
/* 21112*/      OPC_Scope, 109, /*->21223*/ // 3 children in Scope
/* 21114*/        OPC_CheckChild1Integer, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 21125*/        OPC_CheckType, MVT::i32,
/* 21127*/        OPC_Scope, 9, /*->21138*/ // 6 children in Scope
/* 21129*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 21131*/          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)
/* 21138*/        /*Scope*/ 13, /*->21152*/
/* 21139*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 21141*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 21144*/          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] })
/* 21152*/        /*Scope*/ 9, /*->21162*/
/* 21153*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 21155*/          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)
/* 21162*/        /*Scope*/ 9, /*->21172*/
/* 21163*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 21165*/          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)
/* 21172*/        /*Scope*/ 24, /*->21197*/
/* 21173*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 21175*/          OPC_Scope, 7, /*->21184*/ // 2 children in Scope
/* 21177*/            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)
/* 21184*/          /*Scope*/ 11, /*->21196*/
/* 21185*/            OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 21188*/            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] })
/* 21196*/          0, /*End of Scope*/
/* 21197*/        /*Scope*/ 24, /*->21222*/
/* 21198*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 21200*/          OPC_Scope, 7, /*->21209*/ // 2 children in Scope
/* 21202*/            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)
/* 21209*/          /*Scope*/ 11, /*->21221*/
/* 21210*/            OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 21213*/            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] })
/* 21221*/          0, /*End of Scope*/
/* 21222*/        0, /*End of Scope*/
/* 21223*/      /*Scope*/ 28|128,1/*156*/, /*->21381*/
/* 21225*/        OPC_RecordChild1, // #1 = $imm16
/* 21226*/        OPC_Scope, 78, /*->21306*/ // 3 children in Scope
/* 21228*/          OPC_MoveChild1,
/* 21229*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21232*/          OPC_CheckPredicate, 21, // Predicate_immZExt16
/* 21234*/          OPC_MoveParent,
/* 21235*/          OPC_SwitchType /*2 cases */, 50, MVT::i32,// ->21288
/* 21238*/            OPC_Scope, 15, /*->21255*/ // 3 children in Scope
/* 21240*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 21242*/              OPC_EmitConvertToTarget, 1,
/* 21244*/              OPC_EmitNodeXForm, 3, 2, // LO16
/* 21247*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::XORi), 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:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (LO16:{ *:[i32] } (imm:{ *:[i32] }):$imm16))
/* 21255*/            /*Scope*/ 15, /*->21271*/
/* 21256*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 21258*/              OPC_EmitConvertToTarget, 1,
/* 21260*/              OPC_EmitNodeXForm, 3, 2, // LO16
/* 21263*/              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))
/* 21271*/            /*Scope*/ 15, /*->21287*/
/* 21272*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 21274*/              OPC_EmitConvertToTarget, 1,
/* 21276*/              OPC_EmitNodeXForm, 3, 2, // LO16
/* 21279*/              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))
/* 21287*/            0, /*End of Scope*/
/* 21288*/          /*SwitchType*/ 15, MVT::i64,// ->21305
/* 21290*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 21292*/            OPC_EmitConvertToTarget, 1,
/* 21294*/            OPC_EmitNodeXForm, 3, 2, // LO16
/* 21297*/            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))
/* 21305*/          0, // EndSwitchType
/* 21306*/        /*Scope*/ 60, /*->21367*/
/* 21307*/          OPC_CheckType, MVT::i32,
/* 21309*/          OPC_Scope, 10, /*->21321*/ // 4 children in Scope
/* 21311*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 21313*/            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)
/* 21321*/          /*Scope*/ 10, /*->21332*/
/* 21322*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 21324*/            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)
/* 21332*/          /*Scope*/ 22, /*->21355*/
/* 21333*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 21335*/            OPC_Scope, 8, /*->21345*/ // 2 children in Scope
/* 21337*/              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)
/* 21345*/            /*Scope*/ 8, /*->21354*/
/* 21346*/              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)
/* 21354*/            0, /*End of Scope*/
/* 21355*/          /*Scope*/ 10, /*->21366*/
/* 21356*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 21358*/            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)
/* 21366*/          0, /*End of Scope*/
/* 21367*/        /*Scope*/ 12, /*->21380*/
/* 21368*/          OPC_CheckType, MVT::i64,
/* 21370*/          OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 21372*/          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)
/* 21380*/        0, /*End of Scope*/
/* 21381*/      /*Scope*/ 113|128,2/*369*/, /*->21752*/
/* 21383*/        OPC_MoveChild1,
/* 21384*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 21387*/        OPC_MoveChild0,
/* 21388*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21391*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 21393*/        OPC_MoveParent,
/* 21394*/        OPC_MoveChild1,
/* 21395*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 21398*/        OPC_Scope, 46|128,1/*174*/, /*->21575*/ // 2 children in Scope
/* 21401*/          OPC_RecordChild0, // #1 = $wt
/* 21402*/          OPC_MoveChild1,
/* 21403*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21406*/          OPC_MoveChild0,
/* 21407*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21410*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21412*/          OPC_CheckType, MVT::i32,
/* 21414*/          OPC_MoveParent,
/* 21415*/          OPC_MoveChild1,
/* 21416*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21419*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21421*/          OPC_CheckType, MVT::i32,
/* 21423*/          OPC_MoveParent,
/* 21424*/          OPC_MoveChild2,
/* 21425*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21428*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21430*/          OPC_CheckType, MVT::i32,
/* 21432*/          OPC_MoveParent,
/* 21433*/          OPC_MoveChild3,
/* 21434*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21437*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21439*/          OPC_CheckType, MVT::i32,
/* 21441*/          OPC_MoveParent,
/* 21442*/          OPC_MoveChild4,
/* 21443*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21446*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21448*/          OPC_CheckType, MVT::i32,
/* 21450*/          OPC_MoveParent,
/* 21451*/          OPC_MoveChild5,
/* 21452*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21455*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21457*/          OPC_CheckType, MVT::i32,
/* 21459*/          OPC_MoveParent,
/* 21460*/          OPC_MoveChild6,
/* 21461*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21464*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21466*/          OPC_CheckType, MVT::i32,
/* 21468*/          OPC_MoveParent,
/* 21469*/          OPC_MoveChild7,
/* 21470*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21473*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21475*/          OPC_CheckType, MVT::i32,
/* 21477*/          OPC_MoveParent,
/* 21478*/          OPC_MoveChild, 8,
/* 21480*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21483*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21485*/          OPC_CheckType, MVT::i32,
/* 21487*/          OPC_MoveParent,
/* 21488*/          OPC_MoveChild, 9,
/* 21490*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21493*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21495*/          OPC_CheckType, MVT::i32,
/* 21497*/          OPC_MoveParent,
/* 21498*/          OPC_MoveChild, 10,
/* 21500*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21503*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21505*/          OPC_CheckType, MVT::i32,
/* 21507*/          OPC_MoveParent,
/* 21508*/          OPC_MoveChild, 11,
/* 21510*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21513*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21515*/          OPC_CheckType, MVT::i32,
/* 21517*/          OPC_MoveParent,
/* 21518*/          OPC_MoveChild, 12,
/* 21520*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21523*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21525*/          OPC_CheckType, MVT::i32,
/* 21527*/          OPC_MoveParent,
/* 21528*/          OPC_MoveChild, 13,
/* 21530*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21533*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21535*/          OPC_CheckType, MVT::i32,
/* 21537*/          OPC_MoveParent,
/* 21538*/          OPC_MoveChild, 14,
/* 21540*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21543*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21545*/          OPC_CheckType, MVT::i32,
/* 21547*/          OPC_MoveParent,
/* 21548*/          OPC_MoveChild, 15,
/* 21550*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21553*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21555*/          OPC_CheckType, MVT::i32,
/* 21557*/          OPC_MoveParent,
/* 21558*/          OPC_MoveParent,
/* 21559*/          OPC_CheckType, MVT::v16i8,
/* 21561*/          OPC_MoveParent,
/* 21562*/          OPC_MoveParent,
/* 21563*/          OPC_CheckType, MVT::v16i8,
/* 21565*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 21567*/          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)
/* 21575*/        /*Scope*/ 46|128,1/*174*/, /*->21751*/
/* 21577*/          OPC_MoveChild0,
/* 21578*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21581*/          OPC_MoveChild0,
/* 21582*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21585*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21587*/          OPC_CheckType, MVT::i32,
/* 21589*/          OPC_MoveParent,
/* 21590*/          OPC_MoveChild1,
/* 21591*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21594*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21596*/          OPC_CheckType, MVT::i32,
/* 21598*/          OPC_MoveParent,
/* 21599*/          OPC_MoveChild2,
/* 21600*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21603*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21605*/          OPC_CheckType, MVT::i32,
/* 21607*/          OPC_MoveParent,
/* 21608*/          OPC_MoveChild3,
/* 21609*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21612*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21614*/          OPC_CheckType, MVT::i32,
/* 21616*/          OPC_MoveParent,
/* 21617*/          OPC_MoveChild4,
/* 21618*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21621*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21623*/          OPC_CheckType, MVT::i32,
/* 21625*/          OPC_MoveParent,
/* 21626*/          OPC_MoveChild5,
/* 21627*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21630*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21632*/          OPC_CheckType, MVT::i32,
/* 21634*/          OPC_MoveParent,
/* 21635*/          OPC_MoveChild6,
/* 21636*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21639*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21641*/          OPC_CheckType, MVT::i32,
/* 21643*/          OPC_MoveParent,
/* 21644*/          OPC_MoveChild7,
/* 21645*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21648*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21650*/          OPC_CheckType, MVT::i32,
/* 21652*/          OPC_MoveParent,
/* 21653*/          OPC_MoveChild, 8,
/* 21655*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21658*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21660*/          OPC_CheckType, MVT::i32,
/* 21662*/          OPC_MoveParent,
/* 21663*/          OPC_MoveChild, 9,
/* 21665*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21668*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21670*/          OPC_CheckType, MVT::i32,
/* 21672*/          OPC_MoveParent,
/* 21673*/          OPC_MoveChild, 10,
/* 21675*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21678*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21680*/          OPC_CheckType, MVT::i32,
/* 21682*/          OPC_MoveParent,
/* 21683*/          OPC_MoveChild, 11,
/* 21685*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21688*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21690*/          OPC_CheckType, MVT::i32,
/* 21692*/          OPC_MoveParent,
/* 21693*/          OPC_MoveChild, 12,
/* 21695*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21698*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21700*/          OPC_CheckType, MVT::i32,
/* 21702*/          OPC_MoveParent,
/* 21703*/          OPC_MoveChild, 13,
/* 21705*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21708*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21710*/          OPC_CheckType, MVT::i32,
/* 21712*/          OPC_MoveParent,
/* 21713*/          OPC_MoveChild, 14,
/* 21715*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21718*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21720*/          OPC_CheckType, MVT::i32,
/* 21722*/          OPC_MoveParent,
/* 21723*/          OPC_MoveChild, 15,
/* 21725*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21728*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21730*/          OPC_CheckType, MVT::i32,
/* 21732*/          OPC_MoveParent,
/* 21733*/          OPC_MoveParent,
/* 21734*/          OPC_RecordChild1, // #1 = $wt
/* 21735*/          OPC_CheckType, MVT::v16i8,
/* 21737*/          OPC_MoveParent,
/* 21738*/          OPC_MoveParent,
/* 21739*/          OPC_CheckType, MVT::v16i8,
/* 21741*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 21743*/          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)
/* 21751*/        0, /*End of Scope*/
/* 21752*/      0, /*End of Scope*/
/* 21753*/    /*Scope*/ 115|128,2/*371*/, /*->22126*/
/* 21755*/      OPC_MoveChild0,
/* 21756*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 21759*/      OPC_MoveChild0,
/* 21760*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21763*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 21765*/      OPC_MoveParent,
/* 21766*/      OPC_MoveChild1,
/* 21767*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 21770*/      OPC_Scope, 47|128,1/*175*/, /*->21948*/ // 2 children in Scope
/* 21773*/        OPC_RecordChild0, // #0 = $wt
/* 21774*/        OPC_MoveChild1,
/* 21775*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21778*/        OPC_MoveChild0,
/* 21779*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21782*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21784*/        OPC_CheckType, MVT::i32,
/* 21786*/        OPC_MoveParent,
/* 21787*/        OPC_MoveChild1,
/* 21788*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21791*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21793*/        OPC_CheckType, MVT::i32,
/* 21795*/        OPC_MoveParent,
/* 21796*/        OPC_MoveChild2,
/* 21797*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21800*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21802*/        OPC_CheckType, MVT::i32,
/* 21804*/        OPC_MoveParent,
/* 21805*/        OPC_MoveChild3,
/* 21806*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21809*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21811*/        OPC_CheckType, MVT::i32,
/* 21813*/        OPC_MoveParent,
/* 21814*/        OPC_MoveChild4,
/* 21815*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21818*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21820*/        OPC_CheckType, MVT::i32,
/* 21822*/        OPC_MoveParent,
/* 21823*/        OPC_MoveChild5,
/* 21824*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21827*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21829*/        OPC_CheckType, MVT::i32,
/* 21831*/        OPC_MoveParent,
/* 21832*/        OPC_MoveChild6,
/* 21833*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21836*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21838*/        OPC_CheckType, MVT::i32,
/* 21840*/        OPC_MoveParent,
/* 21841*/        OPC_MoveChild7,
/* 21842*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21845*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21847*/        OPC_CheckType, MVT::i32,
/* 21849*/        OPC_MoveParent,
/* 21850*/        OPC_MoveChild, 8,
/* 21852*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21855*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21857*/        OPC_CheckType, MVT::i32,
/* 21859*/        OPC_MoveParent,
/* 21860*/        OPC_MoveChild, 9,
/* 21862*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21865*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21867*/        OPC_CheckType, MVT::i32,
/* 21869*/        OPC_MoveParent,
/* 21870*/        OPC_MoveChild, 10,
/* 21872*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21875*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21877*/        OPC_CheckType, MVT::i32,
/* 21879*/        OPC_MoveParent,
/* 21880*/        OPC_MoveChild, 11,
/* 21882*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21885*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21887*/        OPC_CheckType, MVT::i32,
/* 21889*/        OPC_MoveParent,
/* 21890*/        OPC_MoveChild, 12,
/* 21892*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21895*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21897*/        OPC_CheckType, MVT::i32,
/* 21899*/        OPC_MoveParent,
/* 21900*/        OPC_MoveChild, 13,
/* 21902*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21905*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21907*/        OPC_CheckType, MVT::i32,
/* 21909*/        OPC_MoveParent,
/* 21910*/        OPC_MoveChild, 14,
/* 21912*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21915*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21917*/        OPC_CheckType, MVT::i32,
/* 21919*/        OPC_MoveParent,
/* 21920*/        OPC_MoveChild, 15,
/* 21922*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21925*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21927*/        OPC_CheckType, MVT::i32,
/* 21929*/        OPC_MoveParent,
/* 21930*/        OPC_MoveParent,
/* 21931*/        OPC_CheckType, MVT::v16i8,
/* 21933*/        OPC_MoveParent,
/* 21934*/        OPC_MoveParent,
/* 21935*/        OPC_RecordChild1, // #1 = $ws
/* 21936*/        OPC_CheckType, MVT::v16i8,
/* 21938*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 21940*/        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)
/* 21948*/      /*Scope*/ 47|128,1/*175*/, /*->22125*/
/* 21950*/        OPC_MoveChild0,
/* 21951*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 21954*/        OPC_MoveChild0,
/* 21955*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21958*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21960*/        OPC_CheckType, MVT::i32,
/* 21962*/        OPC_MoveParent,
/* 21963*/        OPC_MoveChild1,
/* 21964*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21967*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21969*/        OPC_CheckType, MVT::i32,
/* 21971*/        OPC_MoveParent,
/* 21972*/        OPC_MoveChild2,
/* 21973*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21976*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21978*/        OPC_CheckType, MVT::i32,
/* 21980*/        OPC_MoveParent,
/* 21981*/        OPC_MoveChild3,
/* 21982*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21985*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21987*/        OPC_CheckType, MVT::i32,
/* 21989*/        OPC_MoveParent,
/* 21990*/        OPC_MoveChild4,
/* 21991*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 21994*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 21996*/        OPC_CheckType, MVT::i32,
/* 21998*/        OPC_MoveParent,
/* 21999*/        OPC_MoveChild5,
/* 22000*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22003*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 22005*/        OPC_CheckType, MVT::i32,
/* 22007*/        OPC_MoveParent,
/* 22008*/        OPC_MoveChild6,
/* 22009*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22012*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 22014*/        OPC_CheckType, MVT::i32,
/* 22016*/        OPC_MoveParent,
/* 22017*/        OPC_MoveChild7,
/* 22018*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22021*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 22023*/        OPC_CheckType, MVT::i32,
/* 22025*/        OPC_MoveParent,
/* 22026*/        OPC_MoveChild, 8,
/* 22028*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22031*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 22033*/        OPC_CheckType, MVT::i32,
/* 22035*/        OPC_MoveParent,
/* 22036*/        OPC_MoveChild, 9,
/* 22038*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22041*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 22043*/        OPC_CheckType, MVT::i32,
/* 22045*/        OPC_MoveParent,
/* 22046*/        OPC_MoveChild, 10,
/* 22048*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22051*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 22053*/        OPC_CheckType, MVT::i32,
/* 22055*/        OPC_MoveParent,
/* 22056*/        OPC_MoveChild, 11,
/* 22058*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22061*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 22063*/        OPC_CheckType, MVT::i32,
/* 22065*/        OPC_MoveParent,
/* 22066*/        OPC_MoveChild, 12,
/* 22068*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22071*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 22073*/        OPC_CheckType, MVT::i32,
/* 22075*/        OPC_MoveParent,
/* 22076*/        OPC_MoveChild, 13,
/* 22078*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22081*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 22083*/        OPC_CheckType, MVT::i32,
/* 22085*/        OPC_MoveParent,
/* 22086*/        OPC_MoveChild, 14,
/* 22088*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22091*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 22093*/        OPC_CheckType, MVT::i32,
/* 22095*/        OPC_MoveParent,
/* 22096*/        OPC_MoveChild, 15,
/* 22098*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22101*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 22103*/        OPC_CheckType, MVT::i32,
/* 22105*/        OPC_MoveParent,
/* 22106*/        OPC_MoveParent,
/* 22107*/        OPC_RecordChild1, // #0 = $wt
/* 22108*/        OPC_CheckType, MVT::v16i8,
/* 22110*/        OPC_MoveParent,
/* 22111*/        OPC_MoveParent,
/* 22112*/        OPC_RecordChild1, // #1 = $ws
/* 22113*/        OPC_CheckType, MVT::v16i8,
/* 22115*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22117*/        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)
/* 22125*/      0, /*End of Scope*/
/* 22126*/    /*Scope*/ 80|128,1/*208*/, /*->22336*/
/* 22128*/      OPC_RecordChild0, // #0 = $ws
/* 22129*/      OPC_MoveChild1,
/* 22130*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 22133*/      OPC_MoveChild0,
/* 22134*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22137*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 22139*/      OPC_MoveParent,
/* 22140*/      OPC_MoveChild1,
/* 22141*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 22144*/      OPC_Scope, 94, /*->22240*/ // 2 children in Scope
/* 22146*/        OPC_RecordChild0, // #1 = $wt
/* 22147*/        OPC_MoveChild1,
/* 22148*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22151*/        OPC_MoveChild0,
/* 22152*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22155*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22157*/        OPC_CheckType, MVT::i32,
/* 22159*/        OPC_MoveParent,
/* 22160*/        OPC_MoveChild1,
/* 22161*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22164*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22166*/        OPC_CheckType, MVT::i32,
/* 22168*/        OPC_MoveParent,
/* 22169*/        OPC_MoveChild2,
/* 22170*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22173*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22175*/        OPC_CheckType, MVT::i32,
/* 22177*/        OPC_MoveParent,
/* 22178*/        OPC_MoveChild3,
/* 22179*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22182*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22184*/        OPC_CheckType, MVT::i32,
/* 22186*/        OPC_MoveParent,
/* 22187*/        OPC_MoveChild4,
/* 22188*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22191*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22193*/        OPC_CheckType, MVT::i32,
/* 22195*/        OPC_MoveParent,
/* 22196*/        OPC_MoveChild5,
/* 22197*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22200*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22202*/        OPC_CheckType, MVT::i32,
/* 22204*/        OPC_MoveParent,
/* 22205*/        OPC_MoveChild6,
/* 22206*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22209*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22211*/        OPC_CheckType, MVT::i32,
/* 22213*/        OPC_MoveParent,
/* 22214*/        OPC_MoveChild7,
/* 22215*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22218*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22220*/        OPC_CheckType, MVT::i32,
/* 22222*/        OPC_MoveParent,
/* 22223*/        OPC_MoveParent,
/* 22224*/        OPC_CheckType, MVT::v8i16,
/* 22226*/        OPC_MoveParent,
/* 22227*/        OPC_MoveParent,
/* 22228*/        OPC_CheckType, MVT::v8i16,
/* 22230*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22232*/        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)
/* 22240*/      /*Scope*/ 94, /*->22335*/
/* 22241*/        OPC_MoveChild0,
/* 22242*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22245*/        OPC_MoveChild0,
/* 22246*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22249*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22251*/        OPC_CheckType, MVT::i32,
/* 22253*/        OPC_MoveParent,
/* 22254*/        OPC_MoveChild1,
/* 22255*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22258*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22260*/        OPC_CheckType, MVT::i32,
/* 22262*/        OPC_MoveParent,
/* 22263*/        OPC_MoveChild2,
/* 22264*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22267*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22269*/        OPC_CheckType, MVT::i32,
/* 22271*/        OPC_MoveParent,
/* 22272*/        OPC_MoveChild3,
/* 22273*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22276*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22278*/        OPC_CheckType, MVT::i32,
/* 22280*/        OPC_MoveParent,
/* 22281*/        OPC_MoveChild4,
/* 22282*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22285*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22287*/        OPC_CheckType, MVT::i32,
/* 22289*/        OPC_MoveParent,
/* 22290*/        OPC_MoveChild5,
/* 22291*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22294*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22296*/        OPC_CheckType, MVT::i32,
/* 22298*/        OPC_MoveParent,
/* 22299*/        OPC_MoveChild6,
/* 22300*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22303*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22305*/        OPC_CheckType, MVT::i32,
/* 22307*/        OPC_MoveParent,
/* 22308*/        OPC_MoveChild7,
/* 22309*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22312*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22314*/        OPC_CheckType, MVT::i32,
/* 22316*/        OPC_MoveParent,
/* 22317*/        OPC_MoveParent,
/* 22318*/        OPC_RecordChild1, // #1 = $wt
/* 22319*/        OPC_CheckType, MVT::v8i16,
/* 22321*/        OPC_MoveParent,
/* 22322*/        OPC_MoveParent,
/* 22323*/        OPC_CheckType, MVT::v8i16,
/* 22325*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22327*/        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)
/* 22335*/      0, /*End of Scope*/
/* 22336*/    /*Scope*/ 81|128,1/*209*/, /*->22547*/
/* 22338*/      OPC_MoveChild0,
/* 22339*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 22342*/      OPC_MoveChild0,
/* 22343*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22346*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 22348*/      OPC_MoveParent,
/* 22349*/      OPC_MoveChild1,
/* 22350*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 22353*/      OPC_Scope, 95, /*->22450*/ // 2 children in Scope
/* 22355*/        OPC_RecordChild0, // #0 = $wt
/* 22356*/        OPC_MoveChild1,
/* 22357*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22360*/        OPC_MoveChild0,
/* 22361*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22364*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22366*/        OPC_CheckType, MVT::i32,
/* 22368*/        OPC_MoveParent,
/* 22369*/        OPC_MoveChild1,
/* 22370*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22373*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22375*/        OPC_CheckType, MVT::i32,
/* 22377*/        OPC_MoveParent,
/* 22378*/        OPC_MoveChild2,
/* 22379*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22382*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22384*/        OPC_CheckType, MVT::i32,
/* 22386*/        OPC_MoveParent,
/* 22387*/        OPC_MoveChild3,
/* 22388*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22391*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22393*/        OPC_CheckType, MVT::i32,
/* 22395*/        OPC_MoveParent,
/* 22396*/        OPC_MoveChild4,
/* 22397*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22400*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22402*/        OPC_CheckType, MVT::i32,
/* 22404*/        OPC_MoveParent,
/* 22405*/        OPC_MoveChild5,
/* 22406*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22409*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22411*/        OPC_CheckType, MVT::i32,
/* 22413*/        OPC_MoveParent,
/* 22414*/        OPC_MoveChild6,
/* 22415*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22418*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22420*/        OPC_CheckType, MVT::i32,
/* 22422*/        OPC_MoveParent,
/* 22423*/        OPC_MoveChild7,
/* 22424*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22427*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22429*/        OPC_CheckType, MVT::i32,
/* 22431*/        OPC_MoveParent,
/* 22432*/        OPC_MoveParent,
/* 22433*/        OPC_CheckType, MVT::v8i16,
/* 22435*/        OPC_MoveParent,
/* 22436*/        OPC_MoveParent,
/* 22437*/        OPC_RecordChild1, // #1 = $ws
/* 22438*/        OPC_CheckType, MVT::v8i16,
/* 22440*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 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>>, (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)
/* 22450*/      /*Scope*/ 95, /*->22546*/
/* 22451*/        OPC_MoveChild0,
/* 22452*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22455*/        OPC_MoveChild0,
/* 22456*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22459*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22461*/        OPC_CheckType, MVT::i32,
/* 22463*/        OPC_MoveParent,
/* 22464*/        OPC_MoveChild1,
/* 22465*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22468*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22470*/        OPC_CheckType, MVT::i32,
/* 22472*/        OPC_MoveParent,
/* 22473*/        OPC_MoveChild2,
/* 22474*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22477*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22479*/        OPC_CheckType, MVT::i32,
/* 22481*/        OPC_MoveParent,
/* 22482*/        OPC_MoveChild3,
/* 22483*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22486*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22488*/        OPC_CheckType, MVT::i32,
/* 22490*/        OPC_MoveParent,
/* 22491*/        OPC_MoveChild4,
/* 22492*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22495*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22497*/        OPC_CheckType, MVT::i32,
/* 22499*/        OPC_MoveParent,
/* 22500*/        OPC_MoveChild5,
/* 22501*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22504*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22506*/        OPC_CheckType, MVT::i32,
/* 22508*/        OPC_MoveParent,
/* 22509*/        OPC_MoveChild6,
/* 22510*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22513*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22515*/        OPC_CheckType, MVT::i32,
/* 22517*/        OPC_MoveParent,
/* 22518*/        OPC_MoveChild7,
/* 22519*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22522*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 22524*/        OPC_CheckType, MVT::i32,
/* 22526*/        OPC_MoveParent,
/* 22527*/        OPC_MoveParent,
/* 22528*/        OPC_RecordChild1, // #0 = $wt
/* 22529*/        OPC_CheckType, MVT::v8i16,
/* 22531*/        OPC_MoveParent,
/* 22532*/        OPC_MoveParent,
/* 22533*/        OPC_RecordChild1, // #1 = $ws
/* 22534*/        OPC_CheckType, MVT::v8i16,
/* 22536*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22538*/        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)
/* 22546*/      0, /*End of Scope*/
/* 22547*/    /*Scope*/ 8|128,1/*136*/, /*->22685*/
/* 22549*/      OPC_RecordChild0, // #0 = $ws
/* 22550*/      OPC_MoveChild1,
/* 22551*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 22554*/      OPC_MoveChild0,
/* 22555*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22558*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 22560*/      OPC_MoveParent,
/* 22561*/      OPC_MoveChild1,
/* 22562*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 22565*/      OPC_Scope, 58, /*->22625*/ // 2 children in Scope
/* 22567*/        OPC_RecordChild0, // #1 = $wt
/* 22568*/        OPC_MoveChild1,
/* 22569*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22572*/        OPC_MoveChild0,
/* 22573*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22576*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22578*/        OPC_CheckType, MVT::i32,
/* 22580*/        OPC_MoveParent,
/* 22581*/        OPC_MoveChild1,
/* 22582*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22585*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22587*/        OPC_CheckType, MVT::i32,
/* 22589*/        OPC_MoveParent,
/* 22590*/        OPC_MoveChild2,
/* 22591*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22594*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22596*/        OPC_CheckType, MVT::i32,
/* 22598*/        OPC_MoveParent,
/* 22599*/        OPC_MoveChild3,
/* 22600*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22603*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22605*/        OPC_CheckType, MVT::i32,
/* 22607*/        OPC_MoveParent,
/* 22608*/        OPC_MoveParent,
/* 22609*/        OPC_CheckType, MVT::v4i32,
/* 22611*/        OPC_MoveParent,
/* 22612*/        OPC_MoveParent,
/* 22613*/        OPC_CheckType, MVT::v4i32,
/* 22615*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22617*/        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)
/* 22625*/      /*Scope*/ 58, /*->22684*/
/* 22626*/        OPC_MoveChild0,
/* 22627*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22630*/        OPC_MoveChild0,
/* 22631*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22634*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22636*/        OPC_CheckType, MVT::i32,
/* 22638*/        OPC_MoveParent,
/* 22639*/        OPC_MoveChild1,
/* 22640*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22643*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22645*/        OPC_CheckType, MVT::i32,
/* 22647*/        OPC_MoveParent,
/* 22648*/        OPC_MoveChild2,
/* 22649*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22652*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22654*/        OPC_CheckType, MVT::i32,
/* 22656*/        OPC_MoveParent,
/* 22657*/        OPC_MoveChild3,
/* 22658*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22661*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22663*/        OPC_CheckType, MVT::i32,
/* 22665*/        OPC_MoveParent,
/* 22666*/        OPC_MoveParent,
/* 22667*/        OPC_RecordChild1, // #1 = $wt
/* 22668*/        OPC_CheckType, MVT::v4i32,
/* 22670*/        OPC_MoveParent,
/* 22671*/        OPC_MoveParent,
/* 22672*/        OPC_CheckType, MVT::v4i32,
/* 22674*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22676*/        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)
/* 22684*/      0, /*End of Scope*/
/* 22685*/    /*Scope*/ 9|128,1/*137*/, /*->22824*/
/* 22687*/      OPC_MoveChild0,
/* 22688*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 22691*/      OPC_MoveChild0,
/* 22692*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22695*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 22697*/      OPC_MoveParent,
/* 22698*/      OPC_MoveChild1,
/* 22699*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 22702*/      OPC_Scope, 59, /*->22763*/ // 2 children in Scope
/* 22704*/        OPC_RecordChild0, // #0 = $wt
/* 22705*/        OPC_MoveChild1,
/* 22706*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22709*/        OPC_MoveChild0,
/* 22710*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22713*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22715*/        OPC_CheckType, MVT::i32,
/* 22717*/        OPC_MoveParent,
/* 22718*/        OPC_MoveChild1,
/* 22719*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22722*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22724*/        OPC_CheckType, MVT::i32,
/* 22726*/        OPC_MoveParent,
/* 22727*/        OPC_MoveChild2,
/* 22728*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22731*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22733*/        OPC_CheckType, MVT::i32,
/* 22735*/        OPC_MoveParent,
/* 22736*/        OPC_MoveChild3,
/* 22737*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22740*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22742*/        OPC_CheckType, MVT::i32,
/* 22744*/        OPC_MoveParent,
/* 22745*/        OPC_MoveParent,
/* 22746*/        OPC_CheckType, MVT::v4i32,
/* 22748*/        OPC_MoveParent,
/* 22749*/        OPC_MoveParent,
/* 22750*/        OPC_RecordChild1, // #1 = $ws
/* 22751*/        OPC_CheckType, MVT::v4i32,
/* 22753*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22755*/        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)
/* 22763*/      /*Scope*/ 59, /*->22823*/
/* 22764*/        OPC_MoveChild0,
/* 22765*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22768*/        OPC_MoveChild0,
/* 22769*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22772*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22774*/        OPC_CheckType, MVT::i32,
/* 22776*/        OPC_MoveParent,
/* 22777*/        OPC_MoveChild1,
/* 22778*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22781*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22783*/        OPC_CheckType, MVT::i32,
/* 22785*/        OPC_MoveParent,
/* 22786*/        OPC_MoveChild2,
/* 22787*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22790*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22792*/        OPC_CheckType, MVT::i32,
/* 22794*/        OPC_MoveParent,
/* 22795*/        OPC_MoveChild3,
/* 22796*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 22799*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 22801*/        OPC_CheckType, MVT::i32,
/* 22803*/        OPC_MoveParent,
/* 22804*/        OPC_MoveParent,
/* 22805*/        OPC_RecordChild1, // #0 = $wt
/* 22806*/        OPC_CheckType, MVT::v4i32,
/* 22808*/        OPC_MoveParent,
/* 22809*/        OPC_MoveParent,
/* 22810*/        OPC_RecordChild1, // #1 = $ws
/* 22811*/        OPC_CheckType, MVT::v4i32,
/* 22813*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22815*/        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)
/* 22823*/      0, /*End of Scope*/
/* 22824*/    /*Scope*/ 89, /*->22914*/
/* 22825*/      OPC_RecordChild0, // #0 = $ws
/* 22826*/      OPC_MoveChild1,
/* 22827*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 22830*/      OPC_MoveChild0,
/* 22831*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 22834*/      OPC_MoveChild0,
/* 22835*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22838*/      OPC_CheckType, MVT::v4i32,
/* 22840*/      OPC_MoveParent,
/* 22841*/      OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 22843*/      OPC_MoveParent,
/* 22844*/      OPC_MoveChild1,
/* 22845*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 22848*/      OPC_Scope, 31, /*->22881*/ // 2 children in Scope
/* 22850*/        OPC_RecordChild0, // #1 = $wt
/* 22851*/        OPC_MoveChild1,
/* 22852*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 22855*/        OPC_MoveChild0,
/* 22856*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22859*/        OPC_CheckType, MVT::v4i32,
/* 22861*/        OPC_MoveParent,
/* 22862*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 22864*/        OPC_MoveParent,
/* 22865*/        OPC_CheckType, MVT::v2i64,
/* 22867*/        OPC_MoveParent,
/* 22868*/        OPC_MoveParent,
/* 22869*/        OPC_CheckType, MVT::v2i64,
/* 22871*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22873*/        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)
/* 22881*/      /*Scope*/ 31, /*->22913*/
/* 22882*/        OPC_MoveChild0,
/* 22883*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 22886*/        OPC_MoveChild0,
/* 22887*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22890*/        OPC_CheckType, MVT::v4i32,
/* 22892*/        OPC_MoveParent,
/* 22893*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 22895*/        OPC_MoveParent,
/* 22896*/        OPC_RecordChild1, // #1 = $wt
/* 22897*/        OPC_CheckType, MVT::v2i64,
/* 22899*/        OPC_MoveParent,
/* 22900*/        OPC_MoveParent,
/* 22901*/        OPC_CheckType, MVT::v2i64,
/* 22903*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22905*/        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)
/* 22913*/      0, /*End of Scope*/
/* 22914*/    /*Scope*/ 90, /*->23005*/
/* 22915*/      OPC_MoveChild0,
/* 22916*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 22919*/      OPC_MoveChild0,
/* 22920*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 22923*/      OPC_MoveChild0,
/* 22924*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22927*/      OPC_CheckType, MVT::v4i32,
/* 22929*/      OPC_MoveParent,
/* 22930*/      OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 22932*/      OPC_MoveParent,
/* 22933*/      OPC_MoveChild1,
/* 22934*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 22937*/      OPC_Scope, 32, /*->22971*/ // 2 children in Scope
/* 22939*/        OPC_RecordChild0, // #0 = $wt
/* 22940*/        OPC_MoveChild1,
/* 22941*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 22944*/        OPC_MoveChild0,
/* 22945*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22948*/        OPC_CheckType, MVT::v4i32,
/* 22950*/        OPC_MoveParent,
/* 22951*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 22953*/        OPC_MoveParent,
/* 22954*/        OPC_CheckType, MVT::v2i64,
/* 22956*/        OPC_MoveParent,
/* 22957*/        OPC_MoveParent,
/* 22958*/        OPC_RecordChild1, // #1 = $ws
/* 22959*/        OPC_CheckType, MVT::v2i64,
/* 22961*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22963*/        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)
/* 22971*/      /*Scope*/ 32, /*->23004*/
/* 22972*/        OPC_MoveChild0,
/* 22973*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 22976*/        OPC_MoveChild0,
/* 22977*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 22980*/        OPC_CheckType, MVT::v4i32,
/* 22982*/        OPC_MoveParent,
/* 22983*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 22985*/        OPC_MoveParent,
/* 22986*/        OPC_RecordChild1, // #0 = $wt
/* 22987*/        OPC_CheckType, MVT::v2i64,
/* 22989*/        OPC_MoveParent,
/* 22990*/        OPC_MoveParent,
/* 22991*/        OPC_RecordChild1, // #1 = $ws
/* 22992*/        OPC_CheckType, MVT::v2i64,
/* 22994*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 22996*/        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)
/* 23004*/      0, /*End of Scope*/
/* 23005*/    /*Scope*/ 35, /*->23041*/
/* 23006*/      OPC_RecordChild0, // #0 = $ws
/* 23007*/      OPC_MoveChild1,
/* 23008*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 23011*/      OPC_MoveChild0,
/* 23012*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 23015*/      OPC_MoveChild0,
/* 23016*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 23019*/      OPC_CheckType, MVT::v4i32,
/* 23021*/      OPC_MoveParent,
/* 23022*/      OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 23024*/      OPC_MoveParent,
/* 23025*/      OPC_RecordChild1, // #1 = $wt
/* 23026*/      OPC_CheckChild1Type, MVT::v2i64,
/* 23028*/      OPC_MoveParent,
/* 23029*/      OPC_CheckType, MVT::v2i64,
/* 23031*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23033*/      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)
/* 23041*/    /*Scope*/ 35, /*->23077*/
/* 23042*/      OPC_MoveChild0,
/* 23043*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 23046*/      OPC_MoveChild0,
/* 23047*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 23050*/      OPC_MoveChild0,
/* 23051*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 23054*/      OPC_CheckType, MVT::v4i32,
/* 23056*/      OPC_MoveParent,
/* 23057*/      OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 23059*/      OPC_MoveParent,
/* 23060*/      OPC_RecordChild1, // #0 = $wt
/* 23061*/      OPC_CheckChild1Type, MVT::v2i64,
/* 23063*/      OPC_MoveParent,
/* 23064*/      OPC_RecordChild1, // #1 = $ws
/* 23065*/      OPC_CheckType, MVT::v2i64,
/* 23067*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23069*/      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)
/* 23077*/    /*Scope*/ 63, /*->23141*/
/* 23078*/      OPC_RecordChild0, // #0 = $ws
/* 23079*/      OPC_MoveChild1,
/* 23080*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 23083*/      OPC_MoveChild0,
/* 23084*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 23087*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 23089*/      OPC_MoveParent,
/* 23090*/      OPC_RecordChild1, // #1 = $wt
/* 23091*/      OPC_Scope, 15, /*->23108*/ // 3 children in Scope
/* 23093*/        OPC_CheckChild1Type, MVT::v16i8,
/* 23095*/        OPC_MoveParent,
/* 23096*/        OPC_CheckType, MVT::v16i8,
/* 23098*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23100*/        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)
/* 23108*/      /*Scope*/ 15, /*->23124*/
/* 23109*/        OPC_CheckChild1Type, MVT::v8i16,
/* 23111*/        OPC_MoveParent,
/* 23112*/        OPC_CheckType, MVT::v8i16,
/* 23114*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23116*/        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)
/* 23124*/      /*Scope*/ 15, /*->23140*/
/* 23125*/        OPC_CheckChild1Type, MVT::v4i32,
/* 23127*/        OPC_MoveParent,
/* 23128*/        OPC_CheckType, MVT::v4i32,
/* 23130*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23132*/        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)
/* 23140*/      0, /*End of Scope*/
/* 23141*/    /*Scope*/ 65, /*->23207*/
/* 23142*/      OPC_MoveChild0,
/* 23143*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 23146*/      OPC_MoveChild0,
/* 23147*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 23150*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 23152*/      OPC_MoveParent,
/* 23153*/      OPC_RecordChild1, // #0 = $wt
/* 23154*/      OPC_Scope, 16, /*->23172*/ // 3 children in Scope
/* 23156*/        OPC_CheckChild1Type, MVT::v16i8,
/* 23158*/        OPC_MoveParent,
/* 23159*/        OPC_RecordChild1, // #1 = $ws
/* 23160*/        OPC_CheckType, MVT::v16i8,
/* 23162*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23164*/        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)
/* 23172*/      /*Scope*/ 16, /*->23189*/
/* 23173*/        OPC_CheckChild1Type, MVT::v8i16,
/* 23175*/        OPC_MoveParent,
/* 23176*/        OPC_RecordChild1, // #1 = $ws
/* 23177*/        OPC_CheckType, MVT::v8i16,
/* 23179*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23181*/        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)
/* 23189*/      /*Scope*/ 16, /*->23206*/
/* 23190*/        OPC_CheckChild1Type, MVT::v4i32,
/* 23192*/        OPC_MoveParent,
/* 23193*/        OPC_RecordChild1, // #1 = $ws
/* 23194*/        OPC_CheckType, MVT::v4i32,
/* 23196*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23198*/        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)
/* 23206*/      0, /*End of Scope*/
/* 23207*/    /*Scope*/ 56|128,1/*184*/, /*->23393*/
/* 23209*/      OPC_RecordChild0, // #0 = $ws
/* 23210*/      OPC_RecordChild1, // #1 = $m
/* 23211*/      OPC_SwitchType /*4 cases */, 61, MVT::v16i8,// ->23275
/* 23214*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23216*/        OPC_Scope, 11, /*->23229*/ // 5 children in Scope
/* 23218*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 23221*/          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)
/* 23229*/        /*Scope*/ 11, /*->23241*/
/* 23230*/          OPC_CheckComplexPat, /*CP*/14, /*#*/1, // selectVSplatUimm8:$u8 #2
/* 23233*/          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)
/* 23241*/        /*Scope*/ 11, /*->23253*/
/* 23242*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 23245*/          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)
/* 23253*/        /*Scope*/ 11, /*->23265*/
/* 23254*/          OPC_CheckComplexPat, /*CP*/14, /*#*/0, // selectVSplatUimm8:$u8 #2
/* 23257*/          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)
/* 23265*/        /*Scope*/ 8, /*->23274*/
/* 23266*/          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)
/* 23274*/        0, /*End of Scope*/
/* 23275*/      /*SwitchType*/ 37, MVT::v8i16,// ->23314
/* 23277*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23279*/        OPC_Scope, 11, /*->23292*/ // 3 children in Scope
/* 23281*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 23284*/          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)
/* 23292*/        /*Scope*/ 11, /*->23304*/
/* 23293*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 23296*/          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)
/* 23304*/        /*Scope*/ 8, /*->23313*/
/* 23305*/          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)
/* 23313*/        0, /*End of Scope*/
/* 23314*/      /*SwitchType*/ 37, MVT::v4i32,// ->23353
/* 23316*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23318*/        OPC_Scope, 11, /*->23331*/ // 3 children in Scope
/* 23320*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 23323*/          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)
/* 23331*/        /*Scope*/ 11, /*->23343*/
/* 23332*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 23335*/          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)
/* 23343*/        /*Scope*/ 8, /*->23352*/
/* 23344*/          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)
/* 23352*/        0, /*End of Scope*/
/* 23353*/      /*SwitchType*/ 37, MVT::v2i64,// ->23392
/* 23355*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23357*/        OPC_Scope, 11, /*->23370*/ // 3 children in Scope
/* 23359*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 23362*/          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)
/* 23370*/        /*Scope*/ 11, /*->23382*/
/* 23371*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 23374*/          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)
/* 23382*/        /*Scope*/ 8, /*->23391*/
/* 23383*/          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)
/* 23391*/        0, /*End of Scope*/
/* 23392*/      0, // EndSwitchType
/* 23393*/    0, /*End of Scope*/
/* 23394*/  /*SwitchOpcode*/ 58|128,1/*186*/, TARGET_VAL(ISD::CTLZ),// ->23584
/* 23398*/    OPC_Scope, 77, /*->23477*/ // 2 children in Scope
/* 23400*/      OPC_MoveChild0,
/* 23401*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 23404*/      OPC_RecordChild0, // #0 = $rs
/* 23405*/      OPC_CheckChild1Integer, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 23416*/      OPC_MoveParent,
/* 23417*/      OPC_SwitchType /*2 cases */, 32, MVT::i32,// ->23452
/* 23420*/        OPC_Scope, 9, /*->23431*/ // 3 children in Scope
/* 23422*/          OPC_CheckPatternPredicate, 49, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 23424*/          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)
/* 23431*/        /*Scope*/ 9, /*->23441*/
/* 23432*/          OPC_CheckPatternPredicate, 50, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding())
/* 23434*/          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)
/* 23441*/        /*Scope*/ 9, /*->23451*/
/* 23442*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 23444*/          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)
/* 23451*/        0, /*End of Scope*/
/* 23452*/      /*SwitchType*/ 22, MVT::i64,// ->23476
/* 23454*/        OPC_Scope, 9, /*->23465*/ // 2 children in Scope
/* 23456*/          OPC_CheckPatternPredicate, 51, // (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips64r6())
/* 23458*/          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)
/* 23465*/        /*Scope*/ 9, /*->23475*/
/* 23466*/          OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 23468*/          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)
/* 23475*/        0, /*End of Scope*/
/* 23476*/      0, // EndSwitchType
/* 23477*/    /*Scope*/ 105, /*->23583*/
/* 23478*/      OPC_RecordChild0, // #0 = $rs
/* 23479*/      OPC_SwitchType /*6 cases */, 32, MVT::i32,// ->23514
/* 23482*/        OPC_Scope, 9, /*->23493*/ // 3 children in Scope
/* 23484*/          OPC_CheckPatternPredicate, 49, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 23486*/          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)
/* 23493*/        /*Scope*/ 9, /*->23503*/
/* 23494*/          OPC_CheckPatternPredicate, 50, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding())
/* 23496*/          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)
/* 23503*/        /*Scope*/ 9, /*->23513*/
/* 23504*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 23506*/          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)
/* 23513*/        0, /*End of Scope*/
/* 23514*/      /*SwitchType*/ 22, MVT::i64,// ->23538
/* 23516*/        OPC_Scope, 9, /*->23527*/ // 2 children in Scope
/* 23518*/          OPC_CheckPatternPredicate, 51, // (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips64r6())
/* 23520*/          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)
/* 23527*/        /*Scope*/ 9, /*->23537*/
/* 23528*/          OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 23530*/          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)
/* 23537*/        0, /*End of Scope*/
/* 23538*/      /*SwitchType*/ 9, MVT::v16i8,// ->23549
/* 23540*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23542*/        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)
/* 23549*/      /*SwitchType*/ 9, MVT::v8i16,// ->23560
/* 23551*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23553*/        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)
/* 23560*/      /*SwitchType*/ 9, MVT::v4i32,// ->23571
/* 23562*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23564*/        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)
/* 23571*/      /*SwitchType*/ 9, MVT::v2i64,// ->23582
/* 23573*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 23575*/        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)
/* 23582*/      0, // EndSwitchType
/* 23583*/    0, /*End of Scope*/
/* 23584*/  /*SwitchOpcode*/ 35|128,1/*163*/, TARGET_VAL(MipsISD::Ext),// ->23751
/* 23588*/    OPC_RecordChild0, // #0 = $rs
/* 23589*/    OPC_RecordChild1, // #1 = $pos
/* 23590*/    OPC_MoveChild1,
/* 23591*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23594*/    OPC_Scope, 71, /*->23667*/ // 4 children in Scope
/* 23596*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 23598*/      OPC_MoveParent,
/* 23599*/      OPC_RecordChild2, // #2 = $size
/* 23600*/      OPC_MoveChild2,
/* 23601*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23604*/      OPC_Scope, 39, /*->23645*/ // 2 children in Scope
/* 23606*/        OPC_CheckPredicate, 44, // Predicate_immZExt5Plus1
/* 23608*/        OPC_MoveParent,
/* 23609*/        OPC_SwitchType /*2 cases */, 15, MVT::i32,// ->23627
/* 23612*/          OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 23614*/          OPC_EmitConvertToTarget, 1,
/* 23616*/          OPC_EmitConvertToTarget, 2,
/* 23618*/          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)
/* 23627*/        /*SwitchType*/ 15, MVT::i64,// ->23644
/* 23629*/          OPC_CheckPatternPredicate, 54, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 23631*/          OPC_EmitConvertToTarget, 1,
/* 23633*/          OPC_EmitConvertToTarget, 2,
/* 23635*/          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)
/* 23644*/        0, // EndSwitchType
/* 23645*/      /*Scope*/ 20, /*->23666*/
/* 23646*/        OPC_CheckPredicate, 45, // Predicate_immZExt5Plus33
/* 23648*/        OPC_MoveParent,
/* 23649*/        OPC_CheckType, MVT::i64,
/* 23651*/        OPC_CheckPatternPredicate, 54, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 23653*/        OPC_EmitConvertToTarget, 1,
/* 23655*/        OPC_EmitConvertToTarget, 2,
/* 23657*/        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)
/* 23666*/      0, /*End of Scope*/
/* 23667*/    /*Scope*/ 28, /*->23696*/
/* 23668*/      OPC_CheckPredicate, 46, // Predicate_immZExt5Plus32
/* 23670*/      OPC_MoveParent,
/* 23671*/      OPC_RecordChild2, // #2 = $size
/* 23672*/      OPC_MoveChild2,
/* 23673*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23676*/      OPC_CheckPredicate, 44, // Predicate_immZExt5Plus1
/* 23678*/      OPC_MoveParent,
/* 23679*/      OPC_CheckType, MVT::i64,
/* 23681*/      OPC_CheckPatternPredicate, 54, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 23683*/      OPC_EmitConvertToTarget, 1,
/* 23685*/      OPC_EmitConvertToTarget, 2,
/* 23687*/      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)
/* 23696*/    /*Scope*/ 28, /*->23725*/
/* 23697*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 23699*/      OPC_MoveParent,
/* 23700*/      OPC_RecordChild2, // #2 = $size
/* 23701*/      OPC_MoveChild2,
/* 23702*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23705*/      OPC_CheckPredicate, 44, // Predicate_immZExt5Plus1
/* 23707*/      OPC_MoveParent,
/* 23708*/      OPC_CheckType, MVT::i32,
/* 23710*/      OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 23712*/      OPC_EmitConvertToTarget, 1,
/* 23714*/      OPC_EmitConvertToTarget, 2,
/* 23716*/      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)
/* 23725*/    /*Scope*/ 24, /*->23750*/
/* 23726*/      OPC_MoveParent,
/* 23727*/      OPC_RecordChild2, // #2 = $size
/* 23728*/      OPC_MoveChild2,
/* 23729*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23732*/      OPC_MoveParent,
/* 23733*/      OPC_CheckType, MVT::i32,
/* 23735*/      OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 23737*/      OPC_EmitConvertToTarget, 1,
/* 23739*/      OPC_EmitConvertToTarget, 2,
/* 23741*/      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)
/* 23750*/    0, /*End of Scope*/
/* 23751*/  /*SwitchOpcode*/ 120|128,35/*4600*/, TARGET_VAL(ISD::AND),// ->28355
/* 23755*/    OPC_Scope, 22, /*->23779*/ // 18 children in Scope
/* 23757*/      OPC_CheckAndImm, 127|128,1/*255*/, 
/* 23760*/      OPC_MoveChild0,
/* 23761*/      OPC_CheckOpcode, TARGET_VAL(ISD::ADD),
/* 23764*/      OPC_RecordChild0, // #0 = $rs
/* 23765*/      OPC_RecordChild1, // #1 = $rt
/* 23766*/      OPC_MoveParent,
/* 23767*/      OPC_CheckType, MVT::i64,
/* 23769*/      OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 23771*/      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)
/* 23779*/    /*Scope*/ 83|128,7/*979*/, /*->24760*/
/* 23781*/      OPC_RecordChild0, // #0 = $rs
/* 23782*/      OPC_Scope, 74|128,1/*202*/, /*->23987*/ // 2 children in Scope
/* 23785*/        OPC_RecordChild1, // #1 = $imm16
/* 23786*/        OPC_Scope, 124, /*->23912*/ // 3 children in Scope
/* 23788*/          OPC_MoveChild1,
/* 23789*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 23792*/          OPC_Scope, 39, /*->23833*/ // 5 children in Scope
/* 23794*/            OPC_CheckPredicate, 21, // Predicate_immZExt16
/* 23796*/            OPC_MoveParent,
/* 23797*/            OPC_SwitchType /*2 cases */, 15, MVT::i32,// ->23815
/* 23800*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 23802*/              OPC_EmitConvertToTarget, 1,
/* 23804*/              OPC_EmitNodeXForm, 3, 2, // LO16
/* 23807*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ANDi), 0,
                            MVT::i32, 2/*#Ops*/, 0, 3, 
                        // Src: (and:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immZExt16>><<X:LO16>>:$imm16) - Complexity = 7
                        // Dst: (ANDi:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (LO16:{ *:[i32] } (imm:{ *:[i32] }):$imm16))
/* 23815*/            /*SwitchType*/ 15, MVT::i64,// ->23832
/* 23817*/              OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 23819*/              OPC_EmitConvertToTarget, 1,
/* 23821*/              OPC_EmitNodeXForm, 3, 2, // LO16
/* 23824*/              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))
/* 23832*/            0, // EndSwitchType
/* 23833*/          /*Scope*/ 17, /*->23851*/
/* 23834*/            OPC_CheckPredicate, 47, // Predicate_immZExtAndi16
/* 23836*/            OPC_MoveParent,
/* 23837*/            OPC_CheckType, MVT::i32,
/* 23839*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 23841*/            OPC_EmitConvertToTarget, 1,
/* 23843*/            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)
/* 23851*/          /*Scope*/ 20, /*->23872*/
/* 23852*/            OPC_CheckPredicate, 21, // Predicate_immZExt16
/* 23854*/            OPC_MoveParent,
/* 23855*/            OPC_CheckType, MVT::i32,
/* 23857*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 23859*/            OPC_EmitConvertToTarget, 1,
/* 23861*/            OPC_EmitNodeXForm, 3, 2, // LO16
/* 23864*/            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))
/* 23872*/          /*Scope*/ 17, /*->23890*/
/* 23873*/            OPC_CheckPredicate, 47, // Predicate_immZExtAndi16
/* 23875*/            OPC_MoveParent,
/* 23876*/            OPC_CheckType, MVT::i32,
/* 23878*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 23880*/            OPC_EmitConvertToTarget, 1,
/* 23882*/            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)
/* 23890*/          /*Scope*/ 20, /*->23911*/
/* 23891*/            OPC_CheckPredicate, 21, // Predicate_immZExt16
/* 23893*/            OPC_MoveParent,
/* 23894*/            OPC_CheckType, MVT::i32,
/* 23896*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 23898*/            OPC_EmitConvertToTarget, 1,
/* 23900*/            OPC_EmitNodeXForm, 3, 2, // LO16
/* 23903*/            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))
/* 23911*/          0, /*End of Scope*/
/* 23912*/        /*Scope*/ 60, /*->23973*/
/* 23913*/          OPC_CheckType, MVT::i32,
/* 23915*/          OPC_Scope, 10, /*->23927*/ // 4 children in Scope
/* 23917*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 23919*/            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)
/* 23927*/          /*Scope*/ 10, /*->23938*/
/* 23928*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 23930*/            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)
/* 23938*/          /*Scope*/ 22, /*->23961*/
/* 23939*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 23941*/            OPC_Scope, 8, /*->23951*/ // 2 children in Scope
/* 23943*/              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)
/* 23951*/            /*Scope*/ 8, /*->23960*/
/* 23952*/              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)
/* 23960*/            0, /*End of Scope*/
/* 23961*/          /*Scope*/ 10, /*->23972*/
/* 23962*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 23964*/            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)
/* 23972*/          0, /*End of Scope*/
/* 23973*/        /*Scope*/ 12, /*->23986*/
/* 23974*/          OPC_CheckType, MVT::i64,
/* 23976*/          OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 23978*/          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)
/* 23986*/        0, /*End of Scope*/
/* 23987*/      /*Scope*/ 2|128,6/*770*/, /*->24759*/
/* 23989*/        OPC_MoveChild1,
/* 23990*/        OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 23993*/        OPC_MoveChild0,
/* 23994*/        OPC_SwitchOpcode /*2 cases */, 125|128,2/*381*/, TARGET_VAL(ISD::SHL),// ->24380
/* 23999*/          OPC_MoveChild0,
/* 24000*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24003*/          OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 24005*/          OPC_MoveParent,
/* 24006*/          OPC_MoveChild1,
/* 24007*/          OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 24010*/          OPC_Scope, 54|128,1/*182*/, /*->24195*/ // 2 children in Scope
/* 24013*/            OPC_RecordChild0, // #1 = $wt
/* 24014*/            OPC_MoveChild1,
/* 24015*/            OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24018*/            OPC_MoveChild0,
/* 24019*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24022*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24024*/            OPC_CheckType, MVT::i32,
/* 24026*/            OPC_MoveParent,
/* 24027*/            OPC_MoveChild1,
/* 24028*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24031*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24033*/            OPC_CheckType, MVT::i32,
/* 24035*/            OPC_MoveParent,
/* 24036*/            OPC_MoveChild2,
/* 24037*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24040*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24042*/            OPC_CheckType, MVT::i32,
/* 24044*/            OPC_MoveParent,
/* 24045*/            OPC_MoveChild3,
/* 24046*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24049*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24051*/            OPC_CheckType, MVT::i32,
/* 24053*/            OPC_MoveParent,
/* 24054*/            OPC_MoveChild4,
/* 24055*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24058*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24060*/            OPC_CheckType, MVT::i32,
/* 24062*/            OPC_MoveParent,
/* 24063*/            OPC_MoveChild5,
/* 24064*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24067*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24069*/            OPC_CheckType, MVT::i32,
/* 24071*/            OPC_MoveParent,
/* 24072*/            OPC_MoveChild6,
/* 24073*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24076*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24078*/            OPC_CheckType, MVT::i32,
/* 24080*/            OPC_MoveParent,
/* 24081*/            OPC_MoveChild7,
/* 24082*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24085*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24087*/            OPC_CheckType, MVT::i32,
/* 24089*/            OPC_MoveParent,
/* 24090*/            OPC_MoveChild, 8,
/* 24092*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24095*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24097*/            OPC_CheckType, MVT::i32,
/* 24099*/            OPC_MoveParent,
/* 24100*/            OPC_MoveChild, 9,
/* 24102*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24105*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24107*/            OPC_CheckType, MVT::i32,
/* 24109*/            OPC_MoveParent,
/* 24110*/            OPC_MoveChild, 10,
/* 24112*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24115*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24117*/            OPC_CheckType, MVT::i32,
/* 24119*/            OPC_MoveParent,
/* 24120*/            OPC_MoveChild, 11,
/* 24122*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24125*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24127*/            OPC_CheckType, MVT::i32,
/* 24129*/            OPC_MoveParent,
/* 24130*/            OPC_MoveChild, 12,
/* 24132*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24135*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24137*/            OPC_CheckType, MVT::i32,
/* 24139*/            OPC_MoveParent,
/* 24140*/            OPC_MoveChild, 13,
/* 24142*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24145*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24147*/            OPC_CheckType, MVT::i32,
/* 24149*/            OPC_MoveParent,
/* 24150*/            OPC_MoveChild, 14,
/* 24152*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24155*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24157*/            OPC_CheckType, MVT::i32,
/* 24159*/            OPC_MoveParent,
/* 24160*/            OPC_MoveChild, 15,
/* 24162*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24165*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24167*/            OPC_CheckType, MVT::i32,
/* 24169*/            OPC_MoveParent,
/* 24170*/            OPC_MoveParent,
/* 24171*/            OPC_CheckType, MVT::v16i8,
/* 24173*/            OPC_MoveParent,
/* 24174*/            OPC_MoveParent,
/* 24175*/            OPC_MoveChild1,
/* 24176*/            OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24179*/            OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 24181*/            OPC_MoveParent,
/* 24182*/            OPC_MoveParent,
/* 24183*/            OPC_CheckType, MVT::v16i8,
/* 24185*/            OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 24187*/            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>>))), (build_vector:{ *:[v16i8] })<<P:Predicate_immAllOnesV>>)) - Complexity = 87
                      // Dst: (BCLR_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 24195*/          /*Scope*/ 54|128,1/*182*/, /*->24379*/
/* 24197*/            OPC_MoveChild0,
/* 24198*/            OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24201*/            OPC_MoveChild0,
/* 24202*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24205*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24207*/            OPC_CheckType, MVT::i32,
/* 24209*/            OPC_MoveParent,
/* 24210*/            OPC_MoveChild1,
/* 24211*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24214*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24216*/            OPC_CheckType, MVT::i32,
/* 24218*/            OPC_MoveParent,
/* 24219*/            OPC_MoveChild2,
/* 24220*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24223*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24225*/            OPC_CheckType, MVT::i32,
/* 24227*/            OPC_MoveParent,
/* 24228*/            OPC_MoveChild3,
/* 24229*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24232*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24234*/            OPC_CheckType, MVT::i32,
/* 24236*/            OPC_MoveParent,
/* 24237*/            OPC_MoveChild4,
/* 24238*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24241*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24243*/            OPC_CheckType, MVT::i32,
/* 24245*/            OPC_MoveParent,
/* 24246*/            OPC_MoveChild5,
/* 24247*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24250*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24252*/            OPC_CheckType, MVT::i32,
/* 24254*/            OPC_MoveParent,
/* 24255*/            OPC_MoveChild6,
/* 24256*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24259*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24261*/            OPC_CheckType, MVT::i32,
/* 24263*/            OPC_MoveParent,
/* 24264*/            OPC_MoveChild7,
/* 24265*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24268*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24270*/            OPC_CheckType, MVT::i32,
/* 24272*/            OPC_MoveParent,
/* 24273*/            OPC_MoveChild, 8,
/* 24275*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24278*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24280*/            OPC_CheckType, MVT::i32,
/* 24282*/            OPC_MoveParent,
/* 24283*/            OPC_MoveChild, 9,
/* 24285*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24288*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24290*/            OPC_CheckType, MVT::i32,
/* 24292*/            OPC_MoveParent,
/* 24293*/            OPC_MoveChild, 10,
/* 24295*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24298*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24300*/            OPC_CheckType, MVT::i32,
/* 24302*/            OPC_MoveParent,
/* 24303*/            OPC_MoveChild, 11,
/* 24305*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24308*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24310*/            OPC_CheckType, MVT::i32,
/* 24312*/            OPC_MoveParent,
/* 24313*/            OPC_MoveChild, 12,
/* 24315*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24318*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24320*/            OPC_CheckType, MVT::i32,
/* 24322*/            OPC_MoveParent,
/* 24323*/            OPC_MoveChild, 13,
/* 24325*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24328*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24330*/            OPC_CheckType, MVT::i32,
/* 24332*/            OPC_MoveParent,
/* 24333*/            OPC_MoveChild, 14,
/* 24335*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24338*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24340*/            OPC_CheckType, MVT::i32,
/* 24342*/            OPC_MoveParent,
/* 24343*/            OPC_MoveChild, 15,
/* 24345*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24348*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24350*/            OPC_CheckType, MVT::i32,
/* 24352*/            OPC_MoveParent,
/* 24353*/            OPC_MoveParent,
/* 24354*/            OPC_RecordChild1, // #1 = $wt
/* 24355*/            OPC_CheckType, MVT::v16i8,
/* 24357*/            OPC_MoveParent,
/* 24358*/            OPC_MoveParent,
/* 24359*/            OPC_MoveChild1,
/* 24360*/            OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24363*/            OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 24365*/            OPC_MoveParent,
/* 24366*/            OPC_MoveParent,
/* 24367*/            OPC_CheckType, MVT::v16i8,
/* 24369*/            OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 24371*/            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)), (build_vector:{ *:[v16i8] })<<P:Predicate_immAllOnesV>>)) - Complexity = 87
                      // Dst: (BCLR_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 24379*/          0, /*End of Scope*/
/* 24380*/        /*SwitchOpcode*/ 118|128,2/*374*/, TARGET_VAL(ISD::BUILD_VECTOR),// ->24758
/* 24384*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 24386*/          OPC_MoveParent,
/* 24387*/          OPC_MoveChild1,
/* 24388*/          OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 24391*/          OPC_MoveChild0,
/* 24392*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24395*/          OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 24397*/          OPC_MoveParent,
/* 24398*/          OPC_MoveChild1,
/* 24399*/          OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 24402*/          OPC_Scope, 47|128,1/*175*/, /*->24580*/ // 2 children in Scope
/* 24405*/            OPC_RecordChild0, // #1 = $wt
/* 24406*/            OPC_MoveChild1,
/* 24407*/            OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24410*/            OPC_MoveChild0,
/* 24411*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24414*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24416*/            OPC_CheckType, MVT::i32,
/* 24418*/            OPC_MoveParent,
/* 24419*/            OPC_MoveChild1,
/* 24420*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24423*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24425*/            OPC_CheckType, MVT::i32,
/* 24427*/            OPC_MoveParent,
/* 24428*/            OPC_MoveChild2,
/* 24429*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24432*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24434*/            OPC_CheckType, MVT::i32,
/* 24436*/            OPC_MoveParent,
/* 24437*/            OPC_MoveChild3,
/* 24438*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24441*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24443*/            OPC_CheckType, MVT::i32,
/* 24445*/            OPC_MoveParent,
/* 24446*/            OPC_MoveChild4,
/* 24447*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24450*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24452*/            OPC_CheckType, MVT::i32,
/* 24454*/            OPC_MoveParent,
/* 24455*/            OPC_MoveChild5,
/* 24456*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24459*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24461*/            OPC_CheckType, MVT::i32,
/* 24463*/            OPC_MoveParent,
/* 24464*/            OPC_MoveChild6,
/* 24465*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24468*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24470*/            OPC_CheckType, MVT::i32,
/* 24472*/            OPC_MoveParent,
/* 24473*/            OPC_MoveChild7,
/* 24474*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24477*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24479*/            OPC_CheckType, MVT::i32,
/* 24481*/            OPC_MoveParent,
/* 24482*/            OPC_MoveChild, 8,
/* 24484*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24487*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24489*/            OPC_CheckType, MVT::i32,
/* 24491*/            OPC_MoveParent,
/* 24492*/            OPC_MoveChild, 9,
/* 24494*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24497*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24499*/            OPC_CheckType, MVT::i32,
/* 24501*/            OPC_MoveParent,
/* 24502*/            OPC_MoveChild, 10,
/* 24504*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24507*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24509*/            OPC_CheckType, MVT::i32,
/* 24511*/            OPC_MoveParent,
/* 24512*/            OPC_MoveChild, 11,
/* 24514*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24517*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24519*/            OPC_CheckType, MVT::i32,
/* 24521*/            OPC_MoveParent,
/* 24522*/            OPC_MoveChild, 12,
/* 24524*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24527*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24529*/            OPC_CheckType, MVT::i32,
/* 24531*/            OPC_MoveParent,
/* 24532*/            OPC_MoveChild, 13,
/* 24534*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24537*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24539*/            OPC_CheckType, MVT::i32,
/* 24541*/            OPC_MoveParent,
/* 24542*/            OPC_MoveChild, 14,
/* 24544*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24547*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24549*/            OPC_CheckType, MVT::i32,
/* 24551*/            OPC_MoveParent,
/* 24552*/            OPC_MoveChild, 15,
/* 24554*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24557*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24559*/            OPC_CheckType, MVT::i32,
/* 24561*/            OPC_MoveParent,
/* 24562*/            OPC_MoveParent,
/* 24563*/            OPC_CheckType, MVT::v16i8,
/* 24565*/            OPC_MoveParent,
/* 24566*/            OPC_MoveParent,
/* 24567*/            OPC_MoveParent,
/* 24568*/            OPC_CheckType, MVT::v16i8,
/* 24570*/            OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 24572*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                          MVT::v16i8, 2/*#Ops*/, 0, 1, 
                      // Src: (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (xor:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_immAllOnesV>>, (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)
/* 24580*/          /*Scope*/ 47|128,1/*175*/, /*->24757*/
/* 24582*/            OPC_MoveChild0,
/* 24583*/            OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24586*/            OPC_MoveChild0,
/* 24587*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24590*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24592*/            OPC_CheckType, MVT::i32,
/* 24594*/            OPC_MoveParent,
/* 24595*/            OPC_MoveChild1,
/* 24596*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24599*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24601*/            OPC_CheckType, MVT::i32,
/* 24603*/            OPC_MoveParent,
/* 24604*/            OPC_MoveChild2,
/* 24605*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24608*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24610*/            OPC_CheckType, MVT::i32,
/* 24612*/            OPC_MoveParent,
/* 24613*/            OPC_MoveChild3,
/* 24614*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24617*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24619*/            OPC_CheckType, MVT::i32,
/* 24621*/            OPC_MoveParent,
/* 24622*/            OPC_MoveChild4,
/* 24623*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24626*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24628*/            OPC_CheckType, MVT::i32,
/* 24630*/            OPC_MoveParent,
/* 24631*/            OPC_MoveChild5,
/* 24632*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24635*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24637*/            OPC_CheckType, MVT::i32,
/* 24639*/            OPC_MoveParent,
/* 24640*/            OPC_MoveChild6,
/* 24641*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24644*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24646*/            OPC_CheckType, MVT::i32,
/* 24648*/            OPC_MoveParent,
/* 24649*/            OPC_MoveChild7,
/* 24650*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24653*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24655*/            OPC_CheckType, MVT::i32,
/* 24657*/            OPC_MoveParent,
/* 24658*/            OPC_MoveChild, 8,
/* 24660*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24663*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24665*/            OPC_CheckType, MVT::i32,
/* 24667*/            OPC_MoveParent,
/* 24668*/            OPC_MoveChild, 9,
/* 24670*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24673*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24675*/            OPC_CheckType, MVT::i32,
/* 24677*/            OPC_MoveParent,
/* 24678*/            OPC_MoveChild, 10,
/* 24680*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24683*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24685*/            OPC_CheckType, MVT::i32,
/* 24687*/            OPC_MoveParent,
/* 24688*/            OPC_MoveChild, 11,
/* 24690*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24693*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24695*/            OPC_CheckType, MVT::i32,
/* 24697*/            OPC_MoveParent,
/* 24698*/            OPC_MoveChild, 12,
/* 24700*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24703*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24705*/            OPC_CheckType, MVT::i32,
/* 24707*/            OPC_MoveParent,
/* 24708*/            OPC_MoveChild, 13,
/* 24710*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24713*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24715*/            OPC_CheckType, MVT::i32,
/* 24717*/            OPC_MoveParent,
/* 24718*/            OPC_MoveChild, 14,
/* 24720*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24723*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24725*/            OPC_CheckType, MVT::i32,
/* 24727*/            OPC_MoveParent,
/* 24728*/            OPC_MoveChild, 15,
/* 24730*/            OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24733*/            OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24735*/            OPC_CheckType, MVT::i32,
/* 24737*/            OPC_MoveParent,
/* 24738*/            OPC_MoveParent,
/* 24739*/            OPC_RecordChild1, // #1 = $wt
/* 24740*/            OPC_CheckType, MVT::v16i8,
/* 24742*/            OPC_MoveParent,
/* 24743*/            OPC_MoveParent,
/* 24744*/            OPC_MoveParent,
/* 24745*/            OPC_CheckType, MVT::v16i8,
/* 24747*/            OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 24749*/            OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                          MVT::v16i8, 2/*#Ops*/, 0, 1, 
                      // Src: (and:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, (xor:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_immAllOnesV>>, (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)
/* 24757*/          0, /*End of Scope*/
/* 24758*/        0, // EndSwitchOpcode
/* 24759*/      0, /*End of Scope*/
/* 24760*/    /*Scope*/ 6|128,6/*774*/, /*->25536*/
/* 24762*/      OPC_MoveChild0,
/* 24763*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 24766*/      OPC_MoveChild0,
/* 24767*/      OPC_SwitchOpcode /*2 cases */, 127|128,2/*383*/, TARGET_VAL(ISD::SHL),// ->25155
/* 24772*/        OPC_MoveChild0,
/* 24773*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24776*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 24778*/        OPC_MoveParent,
/* 24779*/        OPC_MoveChild1,
/* 24780*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 24783*/        OPC_Scope, 55|128,1/*183*/, /*->24969*/ // 2 children in Scope
/* 24786*/          OPC_RecordChild0, // #0 = $wt
/* 24787*/          OPC_MoveChild1,
/* 24788*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24791*/          OPC_MoveChild0,
/* 24792*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24795*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24797*/          OPC_CheckType, MVT::i32,
/* 24799*/          OPC_MoveParent,
/* 24800*/          OPC_MoveChild1,
/* 24801*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24804*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24806*/          OPC_CheckType, MVT::i32,
/* 24808*/          OPC_MoveParent,
/* 24809*/          OPC_MoveChild2,
/* 24810*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24813*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24815*/          OPC_CheckType, MVT::i32,
/* 24817*/          OPC_MoveParent,
/* 24818*/          OPC_MoveChild3,
/* 24819*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24822*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24824*/          OPC_CheckType, MVT::i32,
/* 24826*/          OPC_MoveParent,
/* 24827*/          OPC_MoveChild4,
/* 24828*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24831*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24833*/          OPC_CheckType, MVT::i32,
/* 24835*/          OPC_MoveParent,
/* 24836*/          OPC_MoveChild5,
/* 24837*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24840*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24842*/          OPC_CheckType, MVT::i32,
/* 24844*/          OPC_MoveParent,
/* 24845*/          OPC_MoveChild6,
/* 24846*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24849*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24851*/          OPC_CheckType, MVT::i32,
/* 24853*/          OPC_MoveParent,
/* 24854*/          OPC_MoveChild7,
/* 24855*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24858*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24860*/          OPC_CheckType, MVT::i32,
/* 24862*/          OPC_MoveParent,
/* 24863*/          OPC_MoveChild, 8,
/* 24865*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24868*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24870*/          OPC_CheckType, MVT::i32,
/* 24872*/          OPC_MoveParent,
/* 24873*/          OPC_MoveChild, 9,
/* 24875*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24878*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24880*/          OPC_CheckType, MVT::i32,
/* 24882*/          OPC_MoveParent,
/* 24883*/          OPC_MoveChild, 10,
/* 24885*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24888*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24890*/          OPC_CheckType, MVT::i32,
/* 24892*/          OPC_MoveParent,
/* 24893*/          OPC_MoveChild, 11,
/* 24895*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24898*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24900*/          OPC_CheckType, MVT::i32,
/* 24902*/          OPC_MoveParent,
/* 24903*/          OPC_MoveChild, 12,
/* 24905*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24908*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24910*/          OPC_CheckType, MVT::i32,
/* 24912*/          OPC_MoveParent,
/* 24913*/          OPC_MoveChild, 13,
/* 24915*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24918*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24920*/          OPC_CheckType, MVT::i32,
/* 24922*/          OPC_MoveParent,
/* 24923*/          OPC_MoveChild, 14,
/* 24925*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24928*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24930*/          OPC_CheckType, MVT::i32,
/* 24932*/          OPC_MoveParent,
/* 24933*/          OPC_MoveChild, 15,
/* 24935*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24938*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24940*/          OPC_CheckType, MVT::i32,
/* 24942*/          OPC_MoveParent,
/* 24943*/          OPC_MoveParent,
/* 24944*/          OPC_CheckType, MVT::v16i8,
/* 24946*/          OPC_MoveParent,
/* 24947*/          OPC_MoveParent,
/* 24948*/          OPC_MoveChild1,
/* 24949*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24952*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 24954*/          OPC_MoveParent,
/* 24955*/          OPC_MoveParent,
/* 24956*/          OPC_RecordChild1, // #1 = $ws
/* 24957*/          OPC_CheckType, MVT::v16i8,
/* 24959*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 24961*/          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>>))), (build_vector:{ *:[v16i8] })<<P:Predicate_immAllOnesV>>), v16i8:{ *:[v16i8] }:$ws) - Complexity = 87
                    // Dst: (BCLR_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 24969*/        /*Scope*/ 55|128,1/*183*/, /*->25154*/
/* 24971*/          OPC_MoveChild0,
/* 24972*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 24975*/          OPC_MoveChild0,
/* 24976*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24979*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24981*/          OPC_CheckType, MVT::i32,
/* 24983*/          OPC_MoveParent,
/* 24984*/          OPC_MoveChild1,
/* 24985*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24988*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24990*/          OPC_CheckType, MVT::i32,
/* 24992*/          OPC_MoveParent,
/* 24993*/          OPC_MoveChild2,
/* 24994*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 24997*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 24999*/          OPC_CheckType, MVT::i32,
/* 25001*/          OPC_MoveParent,
/* 25002*/          OPC_MoveChild3,
/* 25003*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25006*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25008*/          OPC_CheckType, MVT::i32,
/* 25010*/          OPC_MoveParent,
/* 25011*/          OPC_MoveChild4,
/* 25012*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25015*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25017*/          OPC_CheckType, MVT::i32,
/* 25019*/          OPC_MoveParent,
/* 25020*/          OPC_MoveChild5,
/* 25021*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25024*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25026*/          OPC_CheckType, MVT::i32,
/* 25028*/          OPC_MoveParent,
/* 25029*/          OPC_MoveChild6,
/* 25030*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25033*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25035*/          OPC_CheckType, MVT::i32,
/* 25037*/          OPC_MoveParent,
/* 25038*/          OPC_MoveChild7,
/* 25039*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25042*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25044*/          OPC_CheckType, MVT::i32,
/* 25046*/          OPC_MoveParent,
/* 25047*/          OPC_MoveChild, 8,
/* 25049*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25052*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25054*/          OPC_CheckType, MVT::i32,
/* 25056*/          OPC_MoveParent,
/* 25057*/          OPC_MoveChild, 9,
/* 25059*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25062*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25064*/          OPC_CheckType, MVT::i32,
/* 25066*/          OPC_MoveParent,
/* 25067*/          OPC_MoveChild, 10,
/* 25069*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25072*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25074*/          OPC_CheckType, MVT::i32,
/* 25076*/          OPC_MoveParent,
/* 25077*/          OPC_MoveChild, 11,
/* 25079*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25082*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25084*/          OPC_CheckType, MVT::i32,
/* 25086*/          OPC_MoveParent,
/* 25087*/          OPC_MoveChild, 12,
/* 25089*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25092*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25094*/          OPC_CheckType, MVT::i32,
/* 25096*/          OPC_MoveParent,
/* 25097*/          OPC_MoveChild, 13,
/* 25099*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25102*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25104*/          OPC_CheckType, MVT::i32,
/* 25106*/          OPC_MoveParent,
/* 25107*/          OPC_MoveChild, 14,
/* 25109*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25112*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25114*/          OPC_CheckType, MVT::i32,
/* 25116*/          OPC_MoveParent,
/* 25117*/          OPC_MoveChild, 15,
/* 25119*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25122*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25124*/          OPC_CheckType, MVT::i32,
/* 25126*/          OPC_MoveParent,
/* 25127*/          OPC_MoveParent,
/* 25128*/          OPC_RecordChild1, // #0 = $wt
/* 25129*/          OPC_CheckType, MVT::v16i8,
/* 25131*/          OPC_MoveParent,
/* 25132*/          OPC_MoveParent,
/* 25133*/          OPC_MoveChild1,
/* 25134*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25137*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 25139*/          OPC_MoveParent,
/* 25140*/          OPC_MoveParent,
/* 25141*/          OPC_RecordChild1, // #1 = $ws
/* 25142*/          OPC_CheckType, MVT::v16i8,
/* 25144*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25146*/          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)), (build_vector:{ *:[v16i8] })<<P:Predicate_immAllOnesV>>), v16i8:{ *:[v16i8] }:$ws) - Complexity = 87
                    // Dst: (BCLR_B:{ *:[v16i8] } v16i8:{ *:[v16i8] }:$ws, v16i8:{ *:[v16i8] }:$wt)
/* 25154*/        0, /*End of Scope*/
/* 25155*/      /*SwitchOpcode*/ 120|128,2/*376*/, TARGET_VAL(ISD::BUILD_VECTOR),// ->25535
/* 25159*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 25161*/        OPC_MoveParent,
/* 25162*/        OPC_MoveChild1,
/* 25163*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 25166*/        OPC_MoveChild0,
/* 25167*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25170*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 25172*/        OPC_MoveParent,
/* 25173*/        OPC_MoveChild1,
/* 25174*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 25177*/        OPC_Scope, 48|128,1/*176*/, /*->25356*/ // 2 children in Scope
/* 25180*/          OPC_RecordChild0, // #0 = $wt
/* 25181*/          OPC_MoveChild1,
/* 25182*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25185*/          OPC_MoveChild0,
/* 25186*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25189*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25191*/          OPC_CheckType, MVT::i32,
/* 25193*/          OPC_MoveParent,
/* 25194*/          OPC_MoveChild1,
/* 25195*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25198*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25200*/          OPC_CheckType, MVT::i32,
/* 25202*/          OPC_MoveParent,
/* 25203*/          OPC_MoveChild2,
/* 25204*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25207*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25209*/          OPC_CheckType, MVT::i32,
/* 25211*/          OPC_MoveParent,
/* 25212*/          OPC_MoveChild3,
/* 25213*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25216*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25218*/          OPC_CheckType, MVT::i32,
/* 25220*/          OPC_MoveParent,
/* 25221*/          OPC_MoveChild4,
/* 25222*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25225*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25227*/          OPC_CheckType, MVT::i32,
/* 25229*/          OPC_MoveParent,
/* 25230*/          OPC_MoveChild5,
/* 25231*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25234*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25236*/          OPC_CheckType, MVT::i32,
/* 25238*/          OPC_MoveParent,
/* 25239*/          OPC_MoveChild6,
/* 25240*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25243*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25245*/          OPC_CheckType, MVT::i32,
/* 25247*/          OPC_MoveParent,
/* 25248*/          OPC_MoveChild7,
/* 25249*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25252*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25254*/          OPC_CheckType, MVT::i32,
/* 25256*/          OPC_MoveParent,
/* 25257*/          OPC_MoveChild, 8,
/* 25259*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25262*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25264*/          OPC_CheckType, MVT::i32,
/* 25266*/          OPC_MoveParent,
/* 25267*/          OPC_MoveChild, 9,
/* 25269*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25272*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25274*/          OPC_CheckType, MVT::i32,
/* 25276*/          OPC_MoveParent,
/* 25277*/          OPC_MoveChild, 10,
/* 25279*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25282*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25284*/          OPC_CheckType, MVT::i32,
/* 25286*/          OPC_MoveParent,
/* 25287*/          OPC_MoveChild, 11,
/* 25289*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25292*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25294*/          OPC_CheckType, MVT::i32,
/* 25296*/          OPC_MoveParent,
/* 25297*/          OPC_MoveChild, 12,
/* 25299*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25302*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25304*/          OPC_CheckType, MVT::i32,
/* 25306*/          OPC_MoveParent,
/* 25307*/          OPC_MoveChild, 13,
/* 25309*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25312*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25314*/          OPC_CheckType, MVT::i32,
/* 25316*/          OPC_MoveParent,
/* 25317*/          OPC_MoveChild, 14,
/* 25319*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25322*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25324*/          OPC_CheckType, MVT::i32,
/* 25326*/          OPC_MoveParent,
/* 25327*/          OPC_MoveChild, 15,
/* 25329*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25332*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25334*/          OPC_CheckType, MVT::i32,
/* 25336*/          OPC_MoveParent,
/* 25337*/          OPC_MoveParent,
/* 25338*/          OPC_CheckType, MVT::v16i8,
/* 25340*/          OPC_MoveParent,
/* 25341*/          OPC_MoveParent,
/* 25342*/          OPC_MoveParent,
/* 25343*/          OPC_RecordChild1, // #1 = $ws
/* 25344*/          OPC_CheckType, MVT::v16i8,
/* 25346*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25348*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v16i8] } (xor:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_immAllOnesV>>, (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)
/* 25356*/        /*Scope*/ 48|128,1/*176*/, /*->25534*/
/* 25358*/          OPC_MoveChild0,
/* 25359*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25362*/          OPC_MoveChild0,
/* 25363*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25366*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25368*/          OPC_CheckType, MVT::i32,
/* 25370*/          OPC_MoveParent,
/* 25371*/          OPC_MoveChild1,
/* 25372*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25375*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25377*/          OPC_CheckType, MVT::i32,
/* 25379*/          OPC_MoveParent,
/* 25380*/          OPC_MoveChild2,
/* 25381*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25384*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25386*/          OPC_CheckType, MVT::i32,
/* 25388*/          OPC_MoveParent,
/* 25389*/          OPC_MoveChild3,
/* 25390*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25393*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25395*/          OPC_CheckType, MVT::i32,
/* 25397*/          OPC_MoveParent,
/* 25398*/          OPC_MoveChild4,
/* 25399*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25402*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25404*/          OPC_CheckType, MVT::i32,
/* 25406*/          OPC_MoveParent,
/* 25407*/          OPC_MoveChild5,
/* 25408*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25411*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25413*/          OPC_CheckType, MVT::i32,
/* 25415*/          OPC_MoveParent,
/* 25416*/          OPC_MoveChild6,
/* 25417*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25420*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25422*/          OPC_CheckType, MVT::i32,
/* 25424*/          OPC_MoveParent,
/* 25425*/          OPC_MoveChild7,
/* 25426*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25429*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25431*/          OPC_CheckType, MVT::i32,
/* 25433*/          OPC_MoveParent,
/* 25434*/          OPC_MoveChild, 8,
/* 25436*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25439*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25441*/          OPC_CheckType, MVT::i32,
/* 25443*/          OPC_MoveParent,
/* 25444*/          OPC_MoveChild, 9,
/* 25446*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25449*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25451*/          OPC_CheckType, MVT::i32,
/* 25453*/          OPC_MoveParent,
/* 25454*/          OPC_MoveChild, 10,
/* 25456*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25459*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25461*/          OPC_CheckType, MVT::i32,
/* 25463*/          OPC_MoveParent,
/* 25464*/          OPC_MoveChild, 11,
/* 25466*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25469*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25471*/          OPC_CheckType, MVT::i32,
/* 25473*/          OPC_MoveParent,
/* 25474*/          OPC_MoveChild, 12,
/* 25476*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25479*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25481*/          OPC_CheckType, MVT::i32,
/* 25483*/          OPC_MoveParent,
/* 25484*/          OPC_MoveChild, 13,
/* 25486*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25489*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25491*/          OPC_CheckType, MVT::i32,
/* 25493*/          OPC_MoveParent,
/* 25494*/          OPC_MoveChild, 14,
/* 25496*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25499*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25501*/          OPC_CheckType, MVT::i32,
/* 25503*/          OPC_MoveParent,
/* 25504*/          OPC_MoveChild, 15,
/* 25506*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25509*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 25511*/          OPC_CheckType, MVT::i32,
/* 25513*/          OPC_MoveParent,
/* 25514*/          OPC_MoveParent,
/* 25515*/          OPC_RecordChild1, // #0 = $wt
/* 25516*/          OPC_CheckType, MVT::v16i8,
/* 25518*/          OPC_MoveParent,
/* 25519*/          OPC_MoveParent,
/* 25520*/          OPC_MoveParent,
/* 25521*/          OPC_RecordChild1, // #1 = $ws
/* 25522*/          OPC_CheckType, MVT::v16i8,
/* 25524*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25526*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v16i8] } (xor:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_immAllOnesV>>, (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)
/* 25534*/        0, /*End of Scope*/
/* 25535*/      0, // EndSwitchOpcode
/* 25536*/    /*Scope*/ 63|128,3/*447*/, /*->25985*/
/* 25538*/      OPC_RecordChild0, // #0 = $ws
/* 25539*/      OPC_MoveChild1,
/* 25540*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 25543*/      OPC_MoveChild0,
/* 25544*/      OPC_SwitchOpcode /*2 cases */, 91|128,1/*219*/, TARGET_VAL(ISD::SHL),// ->25768
/* 25549*/        OPC_MoveChild0,
/* 25550*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25553*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 25555*/        OPC_MoveParent,
/* 25556*/        OPC_MoveChild1,
/* 25557*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 25560*/        OPC_Scope, 102, /*->25664*/ // 2 children in Scope
/* 25562*/          OPC_RecordChild0, // #1 = $wt
/* 25563*/          OPC_MoveChild1,
/* 25564*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25567*/          OPC_MoveChild0,
/* 25568*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25571*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25573*/          OPC_CheckType, MVT::i32,
/* 25575*/          OPC_MoveParent,
/* 25576*/          OPC_MoveChild1,
/* 25577*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25580*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25582*/          OPC_CheckType, MVT::i32,
/* 25584*/          OPC_MoveParent,
/* 25585*/          OPC_MoveChild2,
/* 25586*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25589*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25591*/          OPC_CheckType, MVT::i32,
/* 25593*/          OPC_MoveParent,
/* 25594*/          OPC_MoveChild3,
/* 25595*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25598*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25600*/          OPC_CheckType, MVT::i32,
/* 25602*/          OPC_MoveParent,
/* 25603*/          OPC_MoveChild4,
/* 25604*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25607*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25609*/          OPC_CheckType, MVT::i32,
/* 25611*/          OPC_MoveParent,
/* 25612*/          OPC_MoveChild5,
/* 25613*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25616*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25618*/          OPC_CheckType, MVT::i32,
/* 25620*/          OPC_MoveParent,
/* 25621*/          OPC_MoveChild6,
/* 25622*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25625*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25627*/          OPC_CheckType, MVT::i32,
/* 25629*/          OPC_MoveParent,
/* 25630*/          OPC_MoveChild7,
/* 25631*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25634*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25636*/          OPC_CheckType, MVT::i32,
/* 25638*/          OPC_MoveParent,
/* 25639*/          OPC_MoveParent,
/* 25640*/          OPC_CheckType, MVT::v8i16,
/* 25642*/          OPC_MoveParent,
/* 25643*/          OPC_MoveParent,
/* 25644*/          OPC_MoveChild1,
/* 25645*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25648*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 25650*/          OPC_MoveParent,
/* 25651*/          OPC_MoveParent,
/* 25652*/          OPC_CheckType, MVT::v8i16,
/* 25654*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25656*/          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>>))), (build_vector:{ *:[v8i16] })<<P:Predicate_immAllOnesV>>)) - Complexity = 55
                    // Dst: (BCLR_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 25664*/        /*Scope*/ 102, /*->25767*/
/* 25665*/          OPC_MoveChild0,
/* 25666*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25669*/          OPC_MoveChild0,
/* 25670*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25673*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25675*/          OPC_CheckType, MVT::i32,
/* 25677*/          OPC_MoveParent,
/* 25678*/          OPC_MoveChild1,
/* 25679*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25682*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25684*/          OPC_CheckType, MVT::i32,
/* 25686*/          OPC_MoveParent,
/* 25687*/          OPC_MoveChild2,
/* 25688*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25691*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25693*/          OPC_CheckType, MVT::i32,
/* 25695*/          OPC_MoveParent,
/* 25696*/          OPC_MoveChild3,
/* 25697*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25700*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25702*/          OPC_CheckType, MVT::i32,
/* 25704*/          OPC_MoveParent,
/* 25705*/          OPC_MoveChild4,
/* 25706*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25709*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25711*/          OPC_CheckType, MVT::i32,
/* 25713*/          OPC_MoveParent,
/* 25714*/          OPC_MoveChild5,
/* 25715*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25718*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25720*/          OPC_CheckType, MVT::i32,
/* 25722*/          OPC_MoveParent,
/* 25723*/          OPC_MoveChild6,
/* 25724*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25727*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25729*/          OPC_CheckType, MVT::i32,
/* 25731*/          OPC_MoveParent,
/* 25732*/          OPC_MoveChild7,
/* 25733*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25736*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25738*/          OPC_CheckType, MVT::i32,
/* 25740*/          OPC_MoveParent,
/* 25741*/          OPC_MoveParent,
/* 25742*/          OPC_RecordChild1, // #1 = $wt
/* 25743*/          OPC_CheckType, MVT::v8i16,
/* 25745*/          OPC_MoveParent,
/* 25746*/          OPC_MoveParent,
/* 25747*/          OPC_MoveChild1,
/* 25748*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25751*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 25753*/          OPC_MoveParent,
/* 25754*/          OPC_MoveParent,
/* 25755*/          OPC_CheckType, MVT::v8i16,
/* 25757*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25759*/          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)), (build_vector:{ *:[v8i16] })<<P:Predicate_immAllOnesV>>)) - Complexity = 55
                    // Dst: (BCLR_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 25767*/        0, /*End of Scope*/
/* 25768*/      /*SwitchOpcode*/ 84|128,1/*212*/, TARGET_VAL(ISD::BUILD_VECTOR),// ->25984
/* 25772*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 25774*/        OPC_MoveParent,
/* 25775*/        OPC_MoveChild1,
/* 25776*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 25779*/        OPC_MoveChild0,
/* 25780*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25783*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 25785*/        OPC_MoveParent,
/* 25786*/        OPC_MoveChild1,
/* 25787*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 25790*/        OPC_Scope, 95, /*->25887*/ // 2 children in Scope
/* 25792*/          OPC_RecordChild0, // #1 = $wt
/* 25793*/          OPC_MoveChild1,
/* 25794*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25797*/          OPC_MoveChild0,
/* 25798*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25801*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25803*/          OPC_CheckType, MVT::i32,
/* 25805*/          OPC_MoveParent,
/* 25806*/          OPC_MoveChild1,
/* 25807*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25810*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25812*/          OPC_CheckType, MVT::i32,
/* 25814*/          OPC_MoveParent,
/* 25815*/          OPC_MoveChild2,
/* 25816*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25819*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25821*/          OPC_CheckType, MVT::i32,
/* 25823*/          OPC_MoveParent,
/* 25824*/          OPC_MoveChild3,
/* 25825*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25828*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25830*/          OPC_CheckType, MVT::i32,
/* 25832*/          OPC_MoveParent,
/* 25833*/          OPC_MoveChild4,
/* 25834*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25837*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25839*/          OPC_CheckType, MVT::i32,
/* 25841*/          OPC_MoveParent,
/* 25842*/          OPC_MoveChild5,
/* 25843*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25846*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25848*/          OPC_CheckType, MVT::i32,
/* 25850*/          OPC_MoveParent,
/* 25851*/          OPC_MoveChild6,
/* 25852*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25855*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25857*/          OPC_CheckType, MVT::i32,
/* 25859*/          OPC_MoveParent,
/* 25860*/          OPC_MoveChild7,
/* 25861*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25864*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25866*/          OPC_CheckType, MVT::i32,
/* 25868*/          OPC_MoveParent,
/* 25869*/          OPC_MoveParent,
/* 25870*/          OPC_CheckType, MVT::v8i16,
/* 25872*/          OPC_MoveParent,
/* 25873*/          OPC_MoveParent,
/* 25874*/          OPC_MoveParent,
/* 25875*/          OPC_CheckType, MVT::v8i16,
/* 25877*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25879*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (xor:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_immAllOnesV>>, (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)
/* 25887*/        /*Scope*/ 95, /*->25983*/
/* 25888*/          OPC_MoveChild0,
/* 25889*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 25892*/          OPC_MoveChild0,
/* 25893*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25896*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25898*/          OPC_CheckType, MVT::i32,
/* 25900*/          OPC_MoveParent,
/* 25901*/          OPC_MoveChild1,
/* 25902*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25905*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25907*/          OPC_CheckType, MVT::i32,
/* 25909*/          OPC_MoveParent,
/* 25910*/          OPC_MoveChild2,
/* 25911*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25914*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25916*/          OPC_CheckType, MVT::i32,
/* 25918*/          OPC_MoveParent,
/* 25919*/          OPC_MoveChild3,
/* 25920*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25923*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25925*/          OPC_CheckType, MVT::i32,
/* 25927*/          OPC_MoveParent,
/* 25928*/          OPC_MoveChild4,
/* 25929*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25932*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25934*/          OPC_CheckType, MVT::i32,
/* 25936*/          OPC_MoveParent,
/* 25937*/          OPC_MoveChild5,
/* 25938*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25941*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25943*/          OPC_CheckType, MVT::i32,
/* 25945*/          OPC_MoveParent,
/* 25946*/          OPC_MoveChild6,
/* 25947*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25950*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25952*/          OPC_CheckType, MVT::i32,
/* 25954*/          OPC_MoveParent,
/* 25955*/          OPC_MoveChild7,
/* 25956*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 25959*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 25961*/          OPC_CheckType, MVT::i32,
/* 25963*/          OPC_MoveParent,
/* 25964*/          OPC_MoveParent,
/* 25965*/          OPC_RecordChild1, // #1 = $wt
/* 25966*/          OPC_CheckType, MVT::v8i16,
/* 25968*/          OPC_MoveParent,
/* 25969*/          OPC_MoveParent,
/* 25970*/          OPC_MoveParent,
/* 25971*/          OPC_CheckType, MVT::v8i16,
/* 25973*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 25975*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, (xor:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_immAllOnesV>>, (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)
/* 25983*/        0, /*End of Scope*/
/* 25984*/      0, // EndSwitchOpcode
/* 25985*/    /*Scope*/ 66|128,3/*450*/, /*->26437*/
/* 25987*/      OPC_MoveChild0,
/* 25988*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 25991*/      OPC_MoveChild0,
/* 25992*/      OPC_SwitchOpcode /*2 cases */, 93|128,1/*221*/, TARGET_VAL(ISD::SHL),// ->26218
/* 25997*/        OPC_MoveChild0,
/* 25998*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26001*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 26003*/        OPC_MoveParent,
/* 26004*/        OPC_MoveChild1,
/* 26005*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 26008*/        OPC_Scope, 103, /*->26113*/ // 2 children in Scope
/* 26010*/          OPC_RecordChild0, // #0 = $wt
/* 26011*/          OPC_MoveChild1,
/* 26012*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26015*/          OPC_MoveChild0,
/* 26016*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26019*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26021*/          OPC_CheckType, MVT::i32,
/* 26023*/          OPC_MoveParent,
/* 26024*/          OPC_MoveChild1,
/* 26025*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26028*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26030*/          OPC_CheckType, MVT::i32,
/* 26032*/          OPC_MoveParent,
/* 26033*/          OPC_MoveChild2,
/* 26034*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26037*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26039*/          OPC_CheckType, MVT::i32,
/* 26041*/          OPC_MoveParent,
/* 26042*/          OPC_MoveChild3,
/* 26043*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26046*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26048*/          OPC_CheckType, MVT::i32,
/* 26050*/          OPC_MoveParent,
/* 26051*/          OPC_MoveChild4,
/* 26052*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26055*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26057*/          OPC_CheckType, MVT::i32,
/* 26059*/          OPC_MoveParent,
/* 26060*/          OPC_MoveChild5,
/* 26061*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26064*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26066*/          OPC_CheckType, MVT::i32,
/* 26068*/          OPC_MoveParent,
/* 26069*/          OPC_MoveChild6,
/* 26070*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26073*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26075*/          OPC_CheckType, MVT::i32,
/* 26077*/          OPC_MoveParent,
/* 26078*/          OPC_MoveChild7,
/* 26079*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26082*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26084*/          OPC_CheckType, MVT::i32,
/* 26086*/          OPC_MoveParent,
/* 26087*/          OPC_MoveParent,
/* 26088*/          OPC_CheckType, MVT::v8i16,
/* 26090*/          OPC_MoveParent,
/* 26091*/          OPC_MoveParent,
/* 26092*/          OPC_MoveChild1,
/* 26093*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26096*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 26098*/          OPC_MoveParent,
/* 26099*/          OPC_MoveParent,
/* 26100*/          OPC_RecordChild1, // #1 = $ws
/* 26101*/          OPC_CheckType, MVT::v8i16,
/* 26103*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26105*/          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>>))), (build_vector:{ *:[v8i16] })<<P:Predicate_immAllOnesV>>), v8i16:{ *:[v8i16] }:$ws) - Complexity = 55
                    // Dst: (BCLR_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 26113*/        /*Scope*/ 103, /*->26217*/
/* 26114*/          OPC_MoveChild0,
/* 26115*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26118*/          OPC_MoveChild0,
/* 26119*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26122*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26124*/          OPC_CheckType, MVT::i32,
/* 26126*/          OPC_MoveParent,
/* 26127*/          OPC_MoveChild1,
/* 26128*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26131*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26133*/          OPC_CheckType, MVT::i32,
/* 26135*/          OPC_MoveParent,
/* 26136*/          OPC_MoveChild2,
/* 26137*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26140*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26142*/          OPC_CheckType, MVT::i32,
/* 26144*/          OPC_MoveParent,
/* 26145*/          OPC_MoveChild3,
/* 26146*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26149*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26151*/          OPC_CheckType, MVT::i32,
/* 26153*/          OPC_MoveParent,
/* 26154*/          OPC_MoveChild4,
/* 26155*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26158*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26160*/          OPC_CheckType, MVT::i32,
/* 26162*/          OPC_MoveParent,
/* 26163*/          OPC_MoveChild5,
/* 26164*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26167*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26169*/          OPC_CheckType, MVT::i32,
/* 26171*/          OPC_MoveParent,
/* 26172*/          OPC_MoveChild6,
/* 26173*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26176*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26178*/          OPC_CheckType, MVT::i32,
/* 26180*/          OPC_MoveParent,
/* 26181*/          OPC_MoveChild7,
/* 26182*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26185*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26187*/          OPC_CheckType, MVT::i32,
/* 26189*/          OPC_MoveParent,
/* 26190*/          OPC_MoveParent,
/* 26191*/          OPC_RecordChild1, // #0 = $wt
/* 26192*/          OPC_CheckType, MVT::v8i16,
/* 26194*/          OPC_MoveParent,
/* 26195*/          OPC_MoveParent,
/* 26196*/          OPC_MoveChild1,
/* 26197*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26200*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 26202*/          OPC_MoveParent,
/* 26203*/          OPC_MoveParent,
/* 26204*/          OPC_RecordChild1, // #1 = $ws
/* 26205*/          OPC_CheckType, MVT::v8i16,
/* 26207*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26209*/          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)), (build_vector:{ *:[v8i16] })<<P:Predicate_immAllOnesV>>), v8i16:{ *:[v8i16] }:$ws) - Complexity = 55
                    // Dst: (BCLR_H:{ *:[v8i16] } v8i16:{ *:[v8i16] }:$ws, v8i16:{ *:[v8i16] }:$wt)
/* 26217*/        0, /*End of Scope*/
/* 26218*/      /*SwitchOpcode*/ 86|128,1/*214*/, TARGET_VAL(ISD::BUILD_VECTOR),// ->26436
/* 26222*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 26224*/        OPC_MoveParent,
/* 26225*/        OPC_MoveChild1,
/* 26226*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 26229*/        OPC_MoveChild0,
/* 26230*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26233*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 26235*/        OPC_MoveParent,
/* 26236*/        OPC_MoveChild1,
/* 26237*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 26240*/        OPC_Scope, 96, /*->26338*/ // 2 children in Scope
/* 26242*/          OPC_RecordChild0, // #0 = $wt
/* 26243*/          OPC_MoveChild1,
/* 26244*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26247*/          OPC_MoveChild0,
/* 26248*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26251*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26253*/          OPC_CheckType, MVT::i32,
/* 26255*/          OPC_MoveParent,
/* 26256*/          OPC_MoveChild1,
/* 26257*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26260*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26262*/          OPC_CheckType, MVT::i32,
/* 26264*/          OPC_MoveParent,
/* 26265*/          OPC_MoveChild2,
/* 26266*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26269*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26271*/          OPC_CheckType, MVT::i32,
/* 26273*/          OPC_MoveParent,
/* 26274*/          OPC_MoveChild3,
/* 26275*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26278*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26280*/          OPC_CheckType, MVT::i32,
/* 26282*/          OPC_MoveParent,
/* 26283*/          OPC_MoveChild4,
/* 26284*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26287*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26289*/          OPC_CheckType, MVT::i32,
/* 26291*/          OPC_MoveParent,
/* 26292*/          OPC_MoveChild5,
/* 26293*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26296*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26298*/          OPC_CheckType, MVT::i32,
/* 26300*/          OPC_MoveParent,
/* 26301*/          OPC_MoveChild6,
/* 26302*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26305*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26307*/          OPC_CheckType, MVT::i32,
/* 26309*/          OPC_MoveParent,
/* 26310*/          OPC_MoveChild7,
/* 26311*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26314*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26316*/          OPC_CheckType, MVT::i32,
/* 26318*/          OPC_MoveParent,
/* 26319*/          OPC_MoveParent,
/* 26320*/          OPC_CheckType, MVT::v8i16,
/* 26322*/          OPC_MoveParent,
/* 26323*/          OPC_MoveParent,
/* 26324*/          OPC_MoveParent,
/* 26325*/          OPC_RecordChild1, // #1 = $ws
/* 26326*/          OPC_CheckType, MVT::v8i16,
/* 26328*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26330*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v8i16] } (xor:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_immAllOnesV>>, (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)
/* 26338*/        /*Scope*/ 96, /*->26435*/
/* 26339*/          OPC_MoveChild0,
/* 26340*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26343*/          OPC_MoveChild0,
/* 26344*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26347*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26349*/          OPC_CheckType, MVT::i32,
/* 26351*/          OPC_MoveParent,
/* 26352*/          OPC_MoveChild1,
/* 26353*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26356*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26358*/          OPC_CheckType, MVT::i32,
/* 26360*/          OPC_MoveParent,
/* 26361*/          OPC_MoveChild2,
/* 26362*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26365*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26367*/          OPC_CheckType, MVT::i32,
/* 26369*/          OPC_MoveParent,
/* 26370*/          OPC_MoveChild3,
/* 26371*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26374*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26376*/          OPC_CheckType, MVT::i32,
/* 26378*/          OPC_MoveParent,
/* 26379*/          OPC_MoveChild4,
/* 26380*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26383*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26385*/          OPC_CheckType, MVT::i32,
/* 26387*/          OPC_MoveParent,
/* 26388*/          OPC_MoveChild5,
/* 26389*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26392*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26394*/          OPC_CheckType, MVT::i32,
/* 26396*/          OPC_MoveParent,
/* 26397*/          OPC_MoveChild6,
/* 26398*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26401*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26403*/          OPC_CheckType, MVT::i32,
/* 26405*/          OPC_MoveParent,
/* 26406*/          OPC_MoveChild7,
/* 26407*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26410*/          OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 26412*/          OPC_CheckType, MVT::i32,
/* 26414*/          OPC_MoveParent,
/* 26415*/          OPC_MoveParent,
/* 26416*/          OPC_RecordChild1, // #0 = $wt
/* 26417*/          OPC_CheckType, MVT::v8i16,
/* 26419*/          OPC_MoveParent,
/* 26420*/          OPC_MoveParent,
/* 26421*/          OPC_MoveParent,
/* 26422*/          OPC_RecordChild1, // #1 = $ws
/* 26423*/          OPC_CheckType, MVT::v8i16,
/* 26425*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26427*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v8i16] } (xor:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_immAllOnesV>>, (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)
/* 26435*/        0, /*End of Scope*/
/* 26436*/      0, // EndSwitchOpcode
/* 26437*/    /*Scope*/ 47|128,2/*303*/, /*->26742*/
/* 26439*/      OPC_RecordChild0, // #0 = $ws
/* 26440*/      OPC_MoveChild1,
/* 26441*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 26444*/      OPC_MoveChild0,
/* 26445*/      OPC_SwitchOpcode /*2 cases */, 19|128,1/*147*/, TARGET_VAL(ISD::SHL),// ->26597
/* 26450*/        OPC_MoveChild0,
/* 26451*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26454*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 26456*/        OPC_MoveParent,
/* 26457*/        OPC_MoveChild1,
/* 26458*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 26461*/        OPC_Scope, 66, /*->26529*/ // 2 children in Scope
/* 26463*/          OPC_RecordChild0, // #1 = $wt
/* 26464*/          OPC_MoveChild1,
/* 26465*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26468*/          OPC_MoveChild0,
/* 26469*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26472*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26474*/          OPC_CheckType, MVT::i32,
/* 26476*/          OPC_MoveParent,
/* 26477*/          OPC_MoveChild1,
/* 26478*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26481*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26483*/          OPC_CheckType, MVT::i32,
/* 26485*/          OPC_MoveParent,
/* 26486*/          OPC_MoveChild2,
/* 26487*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26490*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26492*/          OPC_CheckType, MVT::i32,
/* 26494*/          OPC_MoveParent,
/* 26495*/          OPC_MoveChild3,
/* 26496*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26499*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26501*/          OPC_CheckType, MVT::i32,
/* 26503*/          OPC_MoveParent,
/* 26504*/          OPC_MoveParent,
/* 26505*/          OPC_CheckType, MVT::v4i32,
/* 26507*/          OPC_MoveParent,
/* 26508*/          OPC_MoveParent,
/* 26509*/          OPC_MoveChild1,
/* 26510*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26513*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 26515*/          OPC_MoveParent,
/* 26516*/          OPC_MoveParent,
/* 26517*/          OPC_CheckType, MVT::v4i32,
/* 26519*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26521*/          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>>))), (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>)) - Complexity = 39
                    // Dst: (BCLR_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 26529*/        /*Scope*/ 66, /*->26596*/
/* 26530*/          OPC_MoveChild0,
/* 26531*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26534*/          OPC_MoveChild0,
/* 26535*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26538*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26540*/          OPC_CheckType, MVT::i32,
/* 26542*/          OPC_MoveParent,
/* 26543*/          OPC_MoveChild1,
/* 26544*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26547*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26549*/          OPC_CheckType, MVT::i32,
/* 26551*/          OPC_MoveParent,
/* 26552*/          OPC_MoveChild2,
/* 26553*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26556*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26558*/          OPC_CheckType, MVT::i32,
/* 26560*/          OPC_MoveParent,
/* 26561*/          OPC_MoveChild3,
/* 26562*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26565*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26567*/          OPC_CheckType, MVT::i32,
/* 26569*/          OPC_MoveParent,
/* 26570*/          OPC_MoveParent,
/* 26571*/          OPC_RecordChild1, // #1 = $wt
/* 26572*/          OPC_CheckType, MVT::v4i32,
/* 26574*/          OPC_MoveParent,
/* 26575*/          OPC_MoveParent,
/* 26576*/          OPC_MoveChild1,
/* 26577*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26580*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 26582*/          OPC_MoveParent,
/* 26583*/          OPC_MoveParent,
/* 26584*/          OPC_CheckType, MVT::v4i32,
/* 26586*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26588*/          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)), (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>)) - Complexity = 39
                    // Dst: (BCLR_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 26596*/        0, /*End of Scope*/
/* 26597*/      /*SwitchOpcode*/ 12|128,1/*140*/, TARGET_VAL(ISD::BUILD_VECTOR),// ->26741
/* 26601*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 26603*/        OPC_MoveParent,
/* 26604*/        OPC_MoveChild1,
/* 26605*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 26608*/        OPC_MoveChild0,
/* 26609*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26612*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 26614*/        OPC_MoveParent,
/* 26615*/        OPC_MoveChild1,
/* 26616*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 26619*/        OPC_Scope, 59, /*->26680*/ // 2 children in Scope
/* 26621*/          OPC_RecordChild0, // #1 = $wt
/* 26622*/          OPC_MoveChild1,
/* 26623*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26626*/          OPC_MoveChild0,
/* 26627*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26630*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26632*/          OPC_CheckType, MVT::i32,
/* 26634*/          OPC_MoveParent,
/* 26635*/          OPC_MoveChild1,
/* 26636*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26639*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26641*/          OPC_CheckType, MVT::i32,
/* 26643*/          OPC_MoveParent,
/* 26644*/          OPC_MoveChild2,
/* 26645*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26648*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26650*/          OPC_CheckType, MVT::i32,
/* 26652*/          OPC_MoveParent,
/* 26653*/          OPC_MoveChild3,
/* 26654*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26657*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26659*/          OPC_CheckType, MVT::i32,
/* 26661*/          OPC_MoveParent,
/* 26662*/          OPC_MoveParent,
/* 26663*/          OPC_CheckType, MVT::v4i32,
/* 26665*/          OPC_MoveParent,
/* 26666*/          OPC_MoveParent,
/* 26667*/          OPC_MoveParent,
/* 26668*/          OPC_CheckType, MVT::v4i32,
/* 26670*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26672*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (xor:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>, (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)
/* 26680*/        /*Scope*/ 59, /*->26740*/
/* 26681*/          OPC_MoveChild0,
/* 26682*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26685*/          OPC_MoveChild0,
/* 26686*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26689*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26691*/          OPC_CheckType, MVT::i32,
/* 26693*/          OPC_MoveParent,
/* 26694*/          OPC_MoveChild1,
/* 26695*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26698*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26700*/          OPC_CheckType, MVT::i32,
/* 26702*/          OPC_MoveParent,
/* 26703*/          OPC_MoveChild2,
/* 26704*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26707*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26709*/          OPC_CheckType, MVT::i32,
/* 26711*/          OPC_MoveParent,
/* 26712*/          OPC_MoveChild3,
/* 26713*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26716*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26718*/          OPC_CheckType, MVT::i32,
/* 26720*/          OPC_MoveParent,
/* 26721*/          OPC_MoveParent,
/* 26722*/          OPC_RecordChild1, // #1 = $wt
/* 26723*/          OPC_CheckType, MVT::v4i32,
/* 26725*/          OPC_MoveParent,
/* 26726*/          OPC_MoveParent,
/* 26727*/          OPC_MoveParent,
/* 26728*/          OPC_CheckType, MVT::v4i32,
/* 26730*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26732*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, (xor:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>, (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)
/* 26740*/        0, /*End of Scope*/
/* 26741*/      0, // EndSwitchOpcode
/* 26742*/    /*Scope*/ 50|128,2/*306*/, /*->27050*/
/* 26744*/      OPC_MoveChild0,
/* 26745*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 26748*/      OPC_MoveChild0,
/* 26749*/      OPC_SwitchOpcode /*2 cases */, 21|128,1/*149*/, TARGET_VAL(ISD::SHL),// ->26903
/* 26754*/        OPC_MoveChild0,
/* 26755*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26758*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 26760*/        OPC_MoveParent,
/* 26761*/        OPC_MoveChild1,
/* 26762*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 26765*/        OPC_Scope, 67, /*->26834*/ // 2 children in Scope
/* 26767*/          OPC_RecordChild0, // #0 = $wt
/* 26768*/          OPC_MoveChild1,
/* 26769*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26772*/          OPC_MoveChild0,
/* 26773*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26776*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26778*/          OPC_CheckType, MVT::i32,
/* 26780*/          OPC_MoveParent,
/* 26781*/          OPC_MoveChild1,
/* 26782*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26785*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26787*/          OPC_CheckType, MVT::i32,
/* 26789*/          OPC_MoveParent,
/* 26790*/          OPC_MoveChild2,
/* 26791*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26794*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26796*/          OPC_CheckType, MVT::i32,
/* 26798*/          OPC_MoveParent,
/* 26799*/          OPC_MoveChild3,
/* 26800*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26803*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26805*/          OPC_CheckType, MVT::i32,
/* 26807*/          OPC_MoveParent,
/* 26808*/          OPC_MoveParent,
/* 26809*/          OPC_CheckType, MVT::v4i32,
/* 26811*/          OPC_MoveParent,
/* 26812*/          OPC_MoveParent,
/* 26813*/          OPC_MoveChild1,
/* 26814*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26817*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 26819*/          OPC_MoveParent,
/* 26820*/          OPC_MoveParent,
/* 26821*/          OPC_RecordChild1, // #1 = $ws
/* 26822*/          OPC_CheckType, MVT::v4i32,
/* 26824*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26826*/          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>>))), (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>), v4i32:{ *:[v4i32] }:$ws) - Complexity = 39
                    // Dst: (BCLR_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 26834*/        /*Scope*/ 67, /*->26902*/
/* 26835*/          OPC_MoveChild0,
/* 26836*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26839*/          OPC_MoveChild0,
/* 26840*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26843*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26845*/          OPC_CheckType, MVT::i32,
/* 26847*/          OPC_MoveParent,
/* 26848*/          OPC_MoveChild1,
/* 26849*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26852*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26854*/          OPC_CheckType, MVT::i32,
/* 26856*/          OPC_MoveParent,
/* 26857*/          OPC_MoveChild2,
/* 26858*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26861*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26863*/          OPC_CheckType, MVT::i32,
/* 26865*/          OPC_MoveParent,
/* 26866*/          OPC_MoveChild3,
/* 26867*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26870*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26872*/          OPC_CheckType, MVT::i32,
/* 26874*/          OPC_MoveParent,
/* 26875*/          OPC_MoveParent,
/* 26876*/          OPC_RecordChild1, // #0 = $wt
/* 26877*/          OPC_CheckType, MVT::v4i32,
/* 26879*/          OPC_MoveParent,
/* 26880*/          OPC_MoveParent,
/* 26881*/          OPC_MoveChild1,
/* 26882*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26885*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 26887*/          OPC_MoveParent,
/* 26888*/          OPC_MoveParent,
/* 26889*/          OPC_RecordChild1, // #1 = $ws
/* 26890*/          OPC_CheckType, MVT::v4i32,
/* 26892*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26894*/          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)), (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>), v4i32:{ *:[v4i32] }:$ws) - Complexity = 39
                    // Dst: (BCLR_W:{ *:[v4i32] } v4i32:{ *:[v4i32] }:$ws, v4i32:{ *:[v4i32] }:$wt)
/* 26902*/        0, /*End of Scope*/
/* 26903*/      /*SwitchOpcode*/ 14|128,1/*142*/, TARGET_VAL(ISD::BUILD_VECTOR),// ->27049
/* 26907*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 26909*/        OPC_MoveParent,
/* 26910*/        OPC_MoveChild1,
/* 26911*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 26914*/        OPC_MoveChild0,
/* 26915*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26918*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 26920*/        OPC_MoveParent,
/* 26921*/        OPC_MoveChild1,
/* 26922*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 26925*/        OPC_Scope, 60, /*->26987*/ // 2 children in Scope
/* 26927*/          OPC_RecordChild0, // #0 = $wt
/* 26928*/          OPC_MoveChild1,
/* 26929*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26932*/          OPC_MoveChild0,
/* 26933*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26936*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26938*/          OPC_CheckType, MVT::i32,
/* 26940*/          OPC_MoveParent,
/* 26941*/          OPC_MoveChild1,
/* 26942*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26945*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26947*/          OPC_CheckType, MVT::i32,
/* 26949*/          OPC_MoveParent,
/* 26950*/          OPC_MoveChild2,
/* 26951*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26954*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26956*/          OPC_CheckType, MVT::i32,
/* 26958*/          OPC_MoveParent,
/* 26959*/          OPC_MoveChild3,
/* 26960*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26963*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26965*/          OPC_CheckType, MVT::i32,
/* 26967*/          OPC_MoveParent,
/* 26968*/          OPC_MoveParent,
/* 26969*/          OPC_CheckType, MVT::v4i32,
/* 26971*/          OPC_MoveParent,
/* 26972*/          OPC_MoveParent,
/* 26973*/          OPC_MoveParent,
/* 26974*/          OPC_RecordChild1, // #1 = $ws
/* 26975*/          OPC_CheckType, MVT::v4i32,
/* 26977*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 26979*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v4i32] } (xor:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>, (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)
/* 26987*/        /*Scope*/ 60, /*->27048*/
/* 26988*/          OPC_MoveChild0,
/* 26989*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 26992*/          OPC_MoveChild0,
/* 26993*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 26996*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 26998*/          OPC_CheckType, MVT::i32,
/* 27000*/          OPC_MoveParent,
/* 27001*/          OPC_MoveChild1,
/* 27002*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 27005*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 27007*/          OPC_CheckType, MVT::i32,
/* 27009*/          OPC_MoveParent,
/* 27010*/          OPC_MoveChild2,
/* 27011*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 27014*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 27016*/          OPC_CheckType, MVT::i32,
/* 27018*/          OPC_MoveParent,
/* 27019*/          OPC_MoveChild3,
/* 27020*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 27023*/          OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 27025*/          OPC_CheckType, MVT::i32,
/* 27027*/          OPC_MoveParent,
/* 27028*/          OPC_MoveParent,
/* 27029*/          OPC_RecordChild1, // #0 = $wt
/* 27030*/          OPC_CheckType, MVT::v4i32,
/* 27032*/          OPC_MoveParent,
/* 27033*/          OPC_MoveParent,
/* 27034*/          OPC_MoveParent,
/* 27035*/          OPC_RecordChild1, // #1 = $ws
/* 27036*/          OPC_CheckType, MVT::v4i32,
/* 27038*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 27040*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v4i32] } (xor:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>, (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)
/* 27048*/        0, /*End of Scope*/
/* 27049*/      0, // EndSwitchOpcode
/* 27050*/    /*Scope*/ 100|128,1/*228*/, /*->27280*/
/* 27052*/      OPC_RecordChild0, // #0 = $ws
/* 27053*/      OPC_MoveChild1,
/* 27054*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 27057*/      OPC_MoveChild0,
/* 27058*/      OPC_SwitchOpcode /*2 cases */, 114, TARGET_VAL(ISD::SHL),// ->27176
/* 27062*/        OPC_MoveChild0,
/* 27063*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27066*/        OPC_MoveChild0,
/* 27067*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27070*/        OPC_CheckType, MVT::v4i32,
/* 27072*/        OPC_MoveParent,
/* 27073*/        OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 27075*/        OPC_MoveParent,
/* 27076*/        OPC_MoveChild1,
/* 27077*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 27080*/        OPC_Scope, 46, /*->27128*/ // 2 children in Scope
/* 27082*/          OPC_RecordChild0, // #1 = $wt
/* 27083*/          OPC_MoveChild1,
/* 27084*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27087*/          OPC_MoveChild0,
/* 27088*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27091*/          OPC_CheckType, MVT::v4i32,
/* 27093*/          OPC_MoveParent,
/* 27094*/          OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 27096*/          OPC_MoveParent,
/* 27097*/          OPC_CheckType, MVT::v2i64,
/* 27099*/          OPC_MoveParent,
/* 27100*/          OPC_MoveParent,
/* 27101*/          OPC_MoveChild1,
/* 27102*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27105*/          OPC_MoveChild0,
/* 27106*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27109*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27111*/          OPC_CheckType, MVT::v4i32,
/* 27113*/          OPC_MoveParent,
/* 27114*/          OPC_MoveParent,
/* 27115*/          OPC_MoveParent,
/* 27116*/          OPC_CheckType, MVT::v2i64,
/* 27118*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 27120*/          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] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>))) - Complexity = 33
                    // Dst: (BCLR_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 27128*/        /*Scope*/ 46, /*->27175*/
/* 27129*/          OPC_MoveChild0,
/* 27130*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27133*/          OPC_MoveChild0,
/* 27134*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27137*/          OPC_CheckType, MVT::v4i32,
/* 27139*/          OPC_MoveParent,
/* 27140*/          OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 27142*/          OPC_MoveParent,
/* 27143*/          OPC_RecordChild1, // #1 = $wt
/* 27144*/          OPC_CheckType, MVT::v2i64,
/* 27146*/          OPC_MoveParent,
/* 27147*/          OPC_MoveParent,
/* 27148*/          OPC_MoveChild1,
/* 27149*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27152*/          OPC_MoveChild0,
/* 27153*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27156*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27158*/          OPC_CheckType, MVT::v4i32,
/* 27160*/          OPC_MoveParent,
/* 27161*/          OPC_MoveParent,
/* 27162*/          OPC_MoveParent,
/* 27163*/          OPC_CheckType, MVT::v2i64,
/* 27165*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 27167*/          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] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>))) - Complexity = 33
                    // Dst: (BCLR_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 27175*/        0, /*End of Scope*/
/* 27176*/      /*SwitchOpcode*/ 100, TARGET_VAL(ISD::BITCAST),// ->27279
/* 27179*/        OPC_MoveChild0,
/* 27180*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27183*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27185*/        OPC_CheckType, MVT::v4i32,
/* 27187*/        OPC_MoveParent,
/* 27188*/        OPC_MoveParent,
/* 27189*/        OPC_MoveChild1,
/* 27190*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27193*/        OPC_MoveChild0,
/* 27194*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27197*/        OPC_MoveChild0,
/* 27198*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27201*/        OPC_CheckType, MVT::v4i32,
/* 27203*/        OPC_MoveParent,
/* 27204*/        OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 27206*/        OPC_MoveParent,
/* 27207*/        OPC_MoveChild1,
/* 27208*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 27211*/        OPC_Scope, 32, /*->27245*/ // 2 children in Scope
/* 27213*/          OPC_RecordChild0, // #1 = $wt
/* 27214*/          OPC_MoveChild1,
/* 27215*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27218*/          OPC_MoveChild0,
/* 27219*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27222*/          OPC_CheckType, MVT::v4i32,
/* 27224*/          OPC_MoveParent,
/* 27225*/          OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 27227*/          OPC_MoveParent,
/* 27228*/          OPC_CheckType, MVT::v2i64,
/* 27230*/          OPC_MoveParent,
/* 27231*/          OPC_MoveParent,
/* 27232*/          OPC_MoveParent,
/* 27233*/          OPC_CheckType, MVT::v2i64,
/* 27235*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 27237*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (xor:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>), (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)
/* 27245*/        /*Scope*/ 32, /*->27278*/
/* 27246*/          OPC_MoveChild0,
/* 27247*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27250*/          OPC_MoveChild0,
/* 27251*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27254*/          OPC_CheckType, MVT::v4i32,
/* 27256*/          OPC_MoveParent,
/* 27257*/          OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 27259*/          OPC_MoveParent,
/* 27260*/          OPC_RecordChild1, // #1 = $wt
/* 27261*/          OPC_CheckType, MVT::v2i64,
/* 27263*/          OPC_MoveParent,
/* 27264*/          OPC_MoveParent,
/* 27265*/          OPC_MoveParent,
/* 27266*/          OPC_CheckType, MVT::v2i64,
/* 27268*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 27270*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (and:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, (xor:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>), (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)
/* 27278*/        0, /*End of Scope*/
/* 27279*/      0, // EndSwitchOpcode
/* 27280*/    /*Scope*/ 103|128,1/*231*/, /*->27513*/
/* 27282*/      OPC_MoveChild0,
/* 27283*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 27286*/      OPC_MoveChild0,
/* 27287*/      OPC_SwitchOpcode /*2 cases */, 116, TARGET_VAL(ISD::SHL),// ->27407
/* 27291*/        OPC_MoveChild0,
/* 27292*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27295*/        OPC_MoveChild0,
/* 27296*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27299*/        OPC_CheckType, MVT::v4i32,
/* 27301*/        OPC_MoveParent,
/* 27302*/        OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 27304*/        OPC_MoveParent,
/* 27305*/        OPC_MoveChild1,
/* 27306*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 27309*/        OPC_Scope, 47, /*->27358*/ // 2 children in Scope
/* 27311*/          OPC_RecordChild0, // #0 = $wt
/* 27312*/          OPC_MoveChild1,
/* 27313*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27316*/          OPC_MoveChild0,
/* 27317*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27320*/          OPC_CheckType, MVT::v4i32,
/* 27322*/          OPC_MoveParent,
/* 27323*/          OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 27325*/          OPC_MoveParent,
/* 27326*/          OPC_CheckType, MVT::v2i64,
/* 27328*/          OPC_MoveParent,
/* 27329*/          OPC_MoveParent,
/* 27330*/          OPC_MoveChild1,
/* 27331*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27334*/          OPC_MoveChild0,
/* 27335*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27338*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27340*/          OPC_CheckType, MVT::v4i32,
/* 27342*/          OPC_MoveParent,
/* 27343*/          OPC_MoveParent,
/* 27344*/          OPC_MoveParent,
/* 27345*/          OPC_RecordChild1, // #1 = $ws
/* 27346*/          OPC_CheckType, MVT::v2i64,
/* 27348*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 27350*/          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] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>)), v2i64:{ *:[v2i64] }:$ws) - Complexity = 33
                    // Dst: (BCLR_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 27358*/        /*Scope*/ 47, /*->27406*/
/* 27359*/          OPC_MoveChild0,
/* 27360*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27363*/          OPC_MoveChild0,
/* 27364*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27367*/          OPC_CheckType, MVT::v4i32,
/* 27369*/          OPC_MoveParent,
/* 27370*/          OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 27372*/          OPC_MoveParent,
/* 27373*/          OPC_RecordChild1, // #0 = $wt
/* 27374*/          OPC_CheckType, MVT::v2i64,
/* 27376*/          OPC_MoveParent,
/* 27377*/          OPC_MoveParent,
/* 27378*/          OPC_MoveChild1,
/* 27379*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27382*/          OPC_MoveChild0,
/* 27383*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27386*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27388*/          OPC_CheckType, MVT::v4i32,
/* 27390*/          OPC_MoveParent,
/* 27391*/          OPC_MoveParent,
/* 27392*/          OPC_MoveParent,
/* 27393*/          OPC_RecordChild1, // #1 = $ws
/* 27394*/          OPC_CheckType, MVT::v2i64,
/* 27396*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 27398*/          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] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>)), v2i64:{ *:[v2i64] }:$ws) - Complexity = 33
                    // Dst: (BCLR_D:{ *:[v2i64] } v2i64:{ *:[v2i64] }:$ws, v2i64:{ *:[v2i64] }:$wt)
/* 27406*/        0, /*End of Scope*/
/* 27407*/      /*SwitchOpcode*/ 102, TARGET_VAL(ISD::BITCAST),// ->27512
/* 27410*/        OPC_MoveChild0,
/* 27411*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27414*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27416*/        OPC_CheckType, MVT::v4i32,
/* 27418*/        OPC_MoveParent,
/* 27419*/        OPC_MoveParent,
/* 27420*/        OPC_MoveChild1,
/* 27421*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27424*/        OPC_MoveChild0,
/* 27425*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27428*/        OPC_MoveChild0,
/* 27429*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27432*/        OPC_CheckType, MVT::v4i32,
/* 27434*/        OPC_MoveParent,
/* 27435*/        OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 27437*/        OPC_MoveParent,
/* 27438*/        OPC_MoveChild1,
/* 27439*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 27442*/        OPC_Scope, 33, /*->27477*/ // 2 children in Scope
/* 27444*/          OPC_RecordChild0, // #0 = $wt
/* 27445*/          OPC_MoveChild1,
/* 27446*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27449*/          OPC_MoveChild0,
/* 27450*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27453*/          OPC_CheckType, MVT::v4i32,
/* 27455*/          OPC_MoveParent,
/* 27456*/          OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 27458*/          OPC_MoveParent,
/* 27459*/          OPC_CheckType, MVT::v2i64,
/* 27461*/          OPC_MoveParent,
/* 27462*/          OPC_MoveParent,
/* 27463*/          OPC_MoveParent,
/* 27464*/          OPC_RecordChild1, // #1 = $ws
/* 27465*/          OPC_CheckType, MVT::v2i64,
/* 27467*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 27469*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v2i64] } (xor:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>), (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)
/* 27477*/        /*Scope*/ 33, /*->27511*/
/* 27478*/          OPC_MoveChild0,
/* 27479*/          OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27482*/          OPC_MoveChild0,
/* 27483*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27486*/          OPC_CheckType, MVT::v4i32,
/* 27488*/          OPC_MoveParent,
/* 27489*/          OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 27491*/          OPC_MoveParent,
/* 27492*/          OPC_RecordChild1, // #0 = $wt
/* 27493*/          OPC_CheckType, MVT::v2i64,
/* 27495*/          OPC_MoveParent,
/* 27496*/          OPC_MoveParent,
/* 27497*/          OPC_MoveParent,
/* 27498*/          OPC_RecordChild1, // #1 = $ws
/* 27499*/          OPC_CheckType, MVT::v2i64,
/* 27501*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 27503*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                        MVT::v2i64, 2/*#Ops*/, 1, 0, 
                    // Src: (and:{ *:[v2i64] } (xor:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>), (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)
/* 27511*/        0, /*End of Scope*/
/* 27512*/      0, // EndSwitchOpcode
/* 27513*/    /*Scope*/ 104, /*->27618*/
/* 27514*/      OPC_RecordChild0, // #0 = $ws
/* 27515*/      OPC_MoveChild1,
/* 27516*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 27519*/      OPC_MoveChild0,
/* 27520*/      OPC_SwitchOpcode /*2 cases */, 45, TARGET_VAL(ISD::SHL),// ->27569
/* 27524*/        OPC_MoveChild0,
/* 27525*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27528*/        OPC_MoveChild0,
/* 27529*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27532*/        OPC_CheckType, MVT::v4i32,
/* 27534*/        OPC_MoveParent,
/* 27535*/        OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 27537*/        OPC_MoveParent,
/* 27538*/        OPC_RecordChild1, // #1 = $wt
/* 27539*/        OPC_CheckChild1Type, MVT::v2i64,
/* 27541*/        OPC_MoveParent,
/* 27542*/        OPC_MoveChild1,
/* 27543*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27546*/        OPC_MoveChild0,
/* 27547*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27550*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27552*/        OPC_CheckType, MVT::v4i32,
/* 27554*/        OPC_MoveParent,
/* 27555*/        OPC_MoveParent,
/* 27556*/        OPC_MoveParent,
/* 27557*/        OPC_CheckType, MVT::v2i64,
/* 27559*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27561*/        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] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>))) - Complexity = 23
                  // Dst: (BCLR_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 27569*/      /*SwitchOpcode*/ 45, TARGET_VAL(ISD::BITCAST),// ->27617
/* 27572*/        OPC_MoveChild0,
/* 27573*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27576*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27578*/        OPC_CheckType, MVT::v4i32,
/* 27580*/        OPC_MoveParent,
/* 27581*/        OPC_MoveParent,
/* 27582*/        OPC_MoveChild1,
/* 27583*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27586*/        OPC_MoveChild0,
/* 27587*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27590*/        OPC_MoveChild0,
/* 27591*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27594*/        OPC_CheckType, MVT::v4i32,
/* 27596*/        OPC_MoveParent,
/* 27597*/        OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 27599*/        OPC_MoveParent,
/* 27600*/        OPC_RecordChild1, // #1 = $wt
/* 27601*/        OPC_CheckChild1Type, MVT::v2i64,
/* 27603*/        OPC_MoveParent,
/* 27604*/        OPC_MoveParent,
/* 27605*/        OPC_CheckType, MVT::v2i64,
/* 27607*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27609*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1, 
                  // Src: (and:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, (xor:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>), (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)
/* 27617*/      0, // EndSwitchOpcode
/* 27618*/    /*Scope*/ 105, /*->27724*/
/* 27619*/      OPC_MoveChild0,
/* 27620*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 27623*/      OPC_MoveChild0,
/* 27624*/      OPC_SwitchOpcode /*2 cases */, 46, TARGET_VAL(ISD::SHL),// ->27674
/* 27628*/        OPC_MoveChild0,
/* 27629*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27632*/        OPC_MoveChild0,
/* 27633*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27636*/        OPC_CheckType, MVT::v4i32,
/* 27638*/        OPC_MoveParent,
/* 27639*/        OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 27641*/        OPC_MoveParent,
/* 27642*/        OPC_RecordChild1, // #0 = $wt
/* 27643*/        OPC_CheckChild1Type, MVT::v2i64,
/* 27645*/        OPC_MoveParent,
/* 27646*/        OPC_MoveChild1,
/* 27647*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27650*/        OPC_MoveChild0,
/* 27651*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27654*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27656*/        OPC_CheckType, MVT::v4i32,
/* 27658*/        OPC_MoveParent,
/* 27659*/        OPC_MoveParent,
/* 27660*/        OPC_MoveParent,
/* 27661*/        OPC_RecordChild1, // #1 = $ws
/* 27662*/        OPC_CheckType, MVT::v2i64,
/* 27664*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27666*/        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] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>)), MSA128DOpnd:{ *:[v2i64] }:$ws) - Complexity = 23
                  // Dst: (BCLR_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$ws, MSA128DOpnd:{ *:[v2i64] }:$wt)
/* 27674*/      /*SwitchOpcode*/ 46, TARGET_VAL(ISD::BITCAST),// ->27723
/* 27677*/        OPC_MoveChild0,
/* 27678*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27681*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27683*/        OPC_CheckType, MVT::v4i32,
/* 27685*/        OPC_MoveParent,
/* 27686*/        OPC_MoveParent,
/* 27687*/        OPC_MoveChild1,
/* 27688*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27691*/        OPC_MoveChild0,
/* 27692*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 27695*/        OPC_MoveChild0,
/* 27696*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27699*/        OPC_CheckType, MVT::v4i32,
/* 27701*/        OPC_MoveParent,
/* 27702*/        OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 27704*/        OPC_MoveParent,
/* 27705*/        OPC_RecordChild1, // #0 = $wt
/* 27706*/        OPC_CheckChild1Type, MVT::v2i64,
/* 27708*/        OPC_MoveParent,
/* 27709*/        OPC_MoveParent,
/* 27710*/        OPC_RecordChild1, // #1 = $ws
/* 27711*/        OPC_CheckType, MVT::v2i64,
/* 27713*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27715*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 1, 0, 
                  // Src: (and:{ *:[v2i64] } (xor:{ *:[v2i64] } (bitconvert:{ *:[v2i64] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>), (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)
/* 27723*/      0, // EndSwitchOpcode
/* 27724*/    /*Scope*/ 127, /*->27852*/
/* 27725*/      OPC_RecordChild0, // #0 = $ws
/* 27726*/      OPC_MoveChild1,
/* 27727*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 27730*/      OPC_MoveChild0,
/* 27731*/      OPC_SwitchOpcode /*2 cases */, 82, TARGET_VAL(ISD::SHL),// ->27817
/* 27735*/        OPC_MoveChild0,
/* 27736*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27739*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 27741*/        OPC_MoveParent,
/* 27742*/        OPC_RecordChild1, // #1 = $wt
/* 27743*/        OPC_Scope, 23, /*->27768*/ // 3 children in Scope
/* 27745*/          OPC_CheckChild1Type, MVT::v16i8,
/* 27747*/          OPC_MoveParent,
/* 27748*/          OPC_MoveChild1,
/* 27749*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27752*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27754*/          OPC_MoveParent,
/* 27755*/          OPC_MoveParent,
/* 27756*/          OPC_CheckType, MVT::v16i8,
/* 27758*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27760*/          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), (build_vector:{ *:[v16i8] })<<P:Predicate_immAllOnesV>>)) - Complexity = 17
                    // Dst: (BCLR_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 27768*/        /*Scope*/ 23, /*->27792*/
/* 27769*/          OPC_CheckChild1Type, MVT::v8i16,
/* 27771*/          OPC_MoveParent,
/* 27772*/          OPC_MoveChild1,
/* 27773*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27776*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27778*/          OPC_MoveParent,
/* 27779*/          OPC_MoveParent,
/* 27780*/          OPC_CheckType, MVT::v8i16,
/* 27782*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27784*/          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), (build_vector:{ *:[v8i16] })<<P:Predicate_immAllOnesV>>)) - Complexity = 17
                    // Dst: (BCLR_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 27792*/        /*Scope*/ 23, /*->27816*/
/* 27793*/          OPC_CheckChild1Type, MVT::v4i32,
/* 27795*/          OPC_MoveParent,
/* 27796*/          OPC_MoveChild1,
/* 27797*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27800*/          OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27802*/          OPC_MoveParent,
/* 27803*/          OPC_MoveParent,
/* 27804*/          OPC_CheckType, MVT::v4i32,
/* 27806*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27808*/          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), (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>)) - Complexity = 17
                    // Dst: (BCLR_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 27816*/        0, /*End of Scope*/
/* 27817*/      /*SwitchOpcode*/ 31, TARGET_VAL(ISD::BUILD_VECTOR),// ->27851
/* 27820*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27822*/        OPC_MoveParent,
/* 27823*/        OPC_MoveChild1,
/* 27824*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27827*/        OPC_MoveChild0,
/* 27828*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27831*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 27833*/        OPC_MoveParent,
/* 27834*/        OPC_RecordChild1, // #1 = $wt
/* 27835*/        OPC_CheckChild1Type, MVT::v16i8,
/* 27837*/        OPC_MoveParent,
/* 27838*/        OPC_MoveParent,
/* 27839*/        OPC_CheckType, MVT::v16i8,
/* 27841*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27843*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1, 
                  // Src: (and:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, (xor:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_immAllOnesV>>, (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)
/* 27851*/      0, // EndSwitchOpcode
/* 27852*/    /*Scope*/ 77, /*->27930*/
/* 27853*/      OPC_MoveChild0,
/* 27854*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 27857*/      OPC_MoveChild0,
/* 27858*/      OPC_SwitchOpcode /*2 cases */, 32, TARGET_VAL(ISD::SHL),// ->27894
/* 27862*/        OPC_MoveChild0,
/* 27863*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27866*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 27868*/        OPC_MoveParent,
/* 27869*/        OPC_RecordChild1, // #0 = $wt
/* 27870*/        OPC_CheckChild1Type, MVT::v16i8,
/* 27872*/        OPC_MoveParent,
/* 27873*/        OPC_MoveChild1,
/* 27874*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27877*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27879*/        OPC_MoveParent,
/* 27880*/        OPC_MoveParent,
/* 27881*/        OPC_RecordChild1, // #1 = $ws
/* 27882*/        OPC_CheckType, MVT::v16i8,
/* 27884*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27886*/        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), (build_vector:{ *:[v16i8] })<<P:Predicate_immAllOnesV>>), MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 17
                  // Dst: (BCLR_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, MSA128BOpnd:{ *:[v16i8] }:$wt)
/* 27894*/      /*SwitchOpcode*/ 32, TARGET_VAL(ISD::BUILD_VECTOR),// ->27929
/* 27897*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27899*/        OPC_MoveParent,
/* 27900*/        OPC_MoveChild1,
/* 27901*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27904*/        OPC_MoveChild0,
/* 27905*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27908*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 27910*/        OPC_MoveParent,
/* 27911*/        OPC_RecordChild1, // #0 = $wt
/* 27912*/        OPC_CheckChild1Type, MVT::v16i8,
/* 27914*/        OPC_MoveParent,
/* 27915*/        OPC_MoveParent,
/* 27916*/        OPC_RecordChild1, // #1 = $ws
/* 27917*/        OPC_CheckType, MVT::v16i8,
/* 27919*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27921*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 1, 0, 
                  // Src: (and:{ *:[v16i8] } (xor:{ *:[v16i8] } (build_vector:{ *:[v16i8] })<<P:Predicate_immAllOnesV>>, (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)
/* 27929*/      0, // EndSwitchOpcode
/* 27930*/    /*Scope*/ 40, /*->27971*/
/* 27931*/      OPC_RecordChild0, // #0 = $ws
/* 27932*/      OPC_MoveChild1,
/* 27933*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 27936*/      OPC_MoveChild0,
/* 27937*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27940*/      OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27942*/      OPC_MoveParent,
/* 27943*/      OPC_MoveChild1,
/* 27944*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 27947*/      OPC_MoveChild0,
/* 27948*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27951*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 27953*/      OPC_MoveParent,
/* 27954*/      OPC_RecordChild1, // #1 = $wt
/* 27955*/      OPC_CheckChild1Type, MVT::v8i16,
/* 27957*/      OPC_MoveParent,
/* 27958*/      OPC_MoveParent,
/* 27959*/      OPC_CheckType, MVT::v8i16,
/* 27961*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 27963*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 0, 1, 
                // Src: (and:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, (xor:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_immAllOnesV>>, (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)
/* 27971*/    /*Scope*/ 77, /*->28049*/
/* 27972*/      OPC_MoveChild0,
/* 27973*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 27976*/      OPC_MoveChild0,
/* 27977*/      OPC_SwitchOpcode /*2 cases */, 32, TARGET_VAL(ISD::SHL),// ->28013
/* 27981*/        OPC_MoveChild0,
/* 27982*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27985*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 27987*/        OPC_MoveParent,
/* 27988*/        OPC_RecordChild1, // #0 = $wt
/* 27989*/        OPC_CheckChild1Type, MVT::v8i16,
/* 27991*/        OPC_MoveParent,
/* 27992*/        OPC_MoveChild1,
/* 27993*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 27996*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 27998*/        OPC_MoveParent,
/* 27999*/        OPC_MoveParent,
/* 28000*/        OPC_RecordChild1, // #1 = $ws
/* 28001*/        OPC_CheckType, MVT::v8i16,
/* 28003*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 28005*/        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), (build_vector:{ *:[v8i16] })<<P:Predicate_immAllOnesV>>), MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 17
                  // Dst: (BCLR_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, MSA128HOpnd:{ *:[v8i16] }:$wt)
/* 28013*/      /*SwitchOpcode*/ 32, TARGET_VAL(ISD::BUILD_VECTOR),// ->28048
/* 28016*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 28018*/        OPC_MoveParent,
/* 28019*/        OPC_MoveChild1,
/* 28020*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 28023*/        OPC_MoveChild0,
/* 28024*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 28027*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 28029*/        OPC_MoveParent,
/* 28030*/        OPC_RecordChild1, // #0 = $wt
/* 28031*/        OPC_CheckChild1Type, MVT::v8i16,
/* 28033*/        OPC_MoveParent,
/* 28034*/        OPC_MoveParent,
/* 28035*/        OPC_RecordChild1, // #1 = $ws
/* 28036*/        OPC_CheckType, MVT::v8i16,
/* 28038*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 28040*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 1, 0, 
                  // Src: (and:{ *:[v8i16] } (xor:{ *:[v8i16] } (build_vector:{ *:[v8i16] })<<P:Predicate_immAllOnesV>>, (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)
/* 28048*/      0, // EndSwitchOpcode
/* 28049*/    /*Scope*/ 40, /*->28090*/
/* 28050*/      OPC_RecordChild0, // #0 = $ws
/* 28051*/      OPC_MoveChild1,
/* 28052*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 28055*/      OPC_MoveChild0,
/* 28056*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 28059*/      OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 28061*/      OPC_MoveParent,
/* 28062*/      OPC_MoveChild1,
/* 28063*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 28066*/      OPC_MoveChild0,
/* 28067*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 28070*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 28072*/      OPC_MoveParent,
/* 28073*/      OPC_RecordChild1, // #1 = $wt
/* 28074*/      OPC_CheckChild1Type, MVT::v4i32,
/* 28076*/      OPC_MoveParent,
/* 28077*/      OPC_MoveParent,
/* 28078*/      OPC_CheckType, MVT::v4i32,
/* 28080*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 28082*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 0, 1, 
                // Src: (and:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (xor:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>, (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)
/* 28090*/    /*Scope*/ 77, /*->28168*/
/* 28091*/      OPC_MoveChild0,
/* 28092*/      OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
/* 28095*/      OPC_MoveChild0,
/* 28096*/      OPC_SwitchOpcode /*2 cases */, 32, TARGET_VAL(ISD::SHL),// ->28132
/* 28100*/        OPC_MoveChild0,
/* 28101*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 28104*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 28106*/        OPC_MoveParent,
/* 28107*/        OPC_RecordChild1, // #0 = $wt
/* 28108*/        OPC_CheckChild1Type, MVT::v4i32,
/* 28110*/        OPC_MoveParent,
/* 28111*/        OPC_MoveChild1,
/* 28112*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 28115*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 28117*/        OPC_MoveParent,
/* 28118*/        OPC_MoveParent,
/* 28119*/        OPC_RecordChild1, // #1 = $ws
/* 28120*/        OPC_CheckType, MVT::v4i32,
/* 28122*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 28124*/        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), (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>), MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 17
                  // Dst: (BCLR_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, MSA128WOpnd:{ *:[v4i32] }:$wt)
/* 28132*/      /*SwitchOpcode*/ 32, TARGET_VAL(ISD::BUILD_VECTOR),// ->28167
/* 28135*/        OPC_CheckPredicate, 48, // Predicate_immAllOnesV
/* 28137*/        OPC_MoveParent,
/* 28138*/        OPC_MoveChild1,
/* 28139*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 28142*/        OPC_MoveChild0,
/* 28143*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 28146*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 28148*/        OPC_MoveParent,
/* 28149*/        OPC_RecordChild1, // #0 = $wt
/* 28150*/        OPC_CheckChild1Type, MVT::v4i32,
/* 28152*/        OPC_MoveParent,
/* 28153*/        OPC_MoveParent,
/* 28154*/        OPC_RecordChild1, // #1 = $ws
/* 28155*/        OPC_CheckType, MVT::v4i32,
/* 28157*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 28159*/        OPC_MorphNodeTo1, TARGET_VAL(Mips::BCLR_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 1, 0, 
                  // Src: (and:{ *:[v4i32] } (xor:{ *:[v4i32] } (build_vector:{ *:[v4i32] })<<P:Predicate_immAllOnesV>>, (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)
/* 28167*/      0, // EndSwitchOpcode
/* 28168*/    /*Scope*/ 56|128,1/*184*/, /*->28354*/
/* 28170*/      OPC_RecordChild0, // #0 = $ws
/* 28171*/      OPC_RecordChild1, // #1 = $u8
/* 28172*/      OPC_SwitchType /*4 cases */, 61, MVT::v16i8,// ->28236
/* 28175*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 28177*/        OPC_Scope, 11, /*->28190*/ // 5 children in Scope
/* 28179*/          OPC_CheckComplexPat, /*CP*/14, /*#*/1, // selectVSplatUimm8:$u8 #2
/* 28182*/          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)
/* 28190*/        /*Scope*/ 11, /*->28202*/
/* 28191*/          OPC_CheckComplexPat, /*CP*/15, /*#*/1, // selectVSplatUimmInvPow2:$m #2
/* 28194*/          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)
/* 28202*/        /*Scope*/ 11, /*->28214*/
/* 28203*/          OPC_CheckComplexPat, /*CP*/14, /*#*/0, // selectVSplatUimm8:$u8 #2
/* 28206*/          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)
/* 28214*/        /*Scope*/ 11, /*->28226*/
/* 28215*/          OPC_CheckComplexPat, /*CP*/15, /*#*/0, // selectVSplatUimmInvPow2:$m #2
/* 28218*/          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)
/* 28226*/        /*Scope*/ 8, /*->28235*/
/* 28227*/          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)
/* 28235*/        0, /*End of Scope*/
/* 28236*/      /*SwitchType*/ 37, MVT::v8i16,// ->28275
/* 28238*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 28240*/        OPC_Scope, 11, /*->28253*/ // 3 children in Scope
/* 28242*/          OPC_CheckComplexPat, /*CP*/15, /*#*/1, // selectVSplatUimmInvPow2:$m #2
/* 28245*/          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)
/* 28253*/        /*Scope*/ 11, /*->28265*/
/* 28254*/          OPC_CheckComplexPat, /*CP*/15, /*#*/0, // selectVSplatUimmInvPow2:$m #2
/* 28257*/          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)
/* 28265*/        /*Scope*/ 8, /*->28274*/
/* 28266*/          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)
/* 28274*/        0, /*End of Scope*/
/* 28275*/      /*SwitchType*/ 37, MVT::v4i32,// ->28314
/* 28277*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 28279*/        OPC_Scope, 11, /*->28292*/ // 3 children in Scope
/* 28281*/          OPC_CheckComplexPat, /*CP*/15, /*#*/1, // selectVSplatUimmInvPow2:$m #2
/* 28284*/          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)
/* 28292*/        /*Scope*/ 11, /*->28304*/
/* 28293*/          OPC_CheckComplexPat, /*CP*/15, /*#*/0, // selectVSplatUimmInvPow2:$m #2
/* 28296*/          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)
/* 28304*/        /*Scope*/ 8, /*->28313*/
/* 28305*/          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)
/* 28313*/        0, /*End of Scope*/
/* 28314*/      /*SwitchType*/ 37, MVT::v2i64,// ->28353
/* 28316*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 28318*/        OPC_Scope, 11, /*->28331*/ // 3 children in Scope
/* 28320*/          OPC_CheckComplexPat, /*CP*/15, /*#*/1, // selectVSplatUimmInvPow2:$m #2
/* 28323*/          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)
/* 28331*/        /*Scope*/ 11, /*->28343*/
/* 28332*/          OPC_CheckComplexPat, /*CP*/15, /*#*/0, // selectVSplatUimmInvPow2:$m #2
/* 28335*/          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)
/* 28343*/        /*Scope*/ 8, /*->28352*/
/* 28344*/          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)
/* 28352*/        0, /*End of Scope*/
/* 28353*/      0, // EndSwitchType
/* 28354*/    0, /*End of Scope*/
/* 28355*/  /*SwitchOpcode*/ 89, TARGET_VAL(MipsISD::CIns),// ->28447
/* 28358*/    OPC_RecordChild0, // #0 = $rs
/* 28359*/    OPC_RecordChild1, // #1 = $pos
/* 28360*/    OPC_MoveChild1,
/* 28361*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 28364*/    OPC_Scope, 26, /*->28392*/ // 3 children in Scope
/* 28366*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 28368*/      OPC_MoveParent,
/* 28369*/      OPC_RecordChild2, // #2 = $lenm1
/* 28370*/      OPC_MoveChild2,
/* 28371*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 28374*/      OPC_MoveParent,
/* 28375*/      OPC_CheckType, MVT::i64,
/* 28377*/      OPC_CheckPatternPredicate, 55, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (!Subtarget->inMicroMipsMode())
/* 28379*/      OPC_EmitConvertToTarget, 1,
/* 28381*/      OPC_EmitConvertToTarget, 2,
/* 28383*/      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)
/* 28392*/    /*Scope*/ 26, /*->28419*/
/* 28393*/      OPC_CheckPredicate, 46, // Predicate_immZExt5Plus32
/* 28395*/      OPC_MoveParent,
/* 28396*/      OPC_RecordChild2, // #2 = $lenm1
/* 28397*/      OPC_MoveChild2,
/* 28398*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 28401*/      OPC_MoveParent,
/* 28402*/      OPC_CheckType, MVT::i64,
/* 28404*/      OPC_CheckPatternPredicate, 55, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (!Subtarget->inMicroMipsMode())
/* 28406*/      OPC_EmitConvertToTarget, 1,
/* 28408*/      OPC_EmitConvertToTarget, 2,
/* 28410*/      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)
/* 28419*/    /*Scope*/ 26, /*->28446*/
/* 28420*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 28422*/      OPC_MoveParent,
/* 28423*/      OPC_RecordChild2, // #2 = $lenm1
/* 28424*/      OPC_MoveChild2,
/* 28425*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 28428*/      OPC_MoveParent,
/* 28429*/      OPC_CheckType, MVT::i32,
/* 28431*/      OPC_CheckPatternPredicate, 55, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (!Subtarget->inMicroMipsMode())
/* 28433*/      OPC_EmitConvertToTarget, 1,
/* 28435*/      OPC_EmitConvertToTarget, 2,
/* 28437*/      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)
/* 28446*/    0, /*End of Scope*/
/* 28447*/  /*SwitchOpcode*/ 55|128,1/*183*/, TARGET_VAL(ISD::ZERO_EXTEND),// ->28634
/* 28451*/    OPC_Scope, 6|128,1/*134*/, /*->28588*/ // 2 children in Scope
/* 28454*/      OPC_MoveChild0,
/* 28455*/      OPC_SwitchOpcode /*2 cases */, 93, TARGET_VAL(ISD::SETCC),// ->28552
/* 28459*/        OPC_RecordChild0, // #0 = $rs
/* 28460*/        OPC_CheckChild0Type, MVT::i64,
/* 28462*/        OPC_RecordChild1, // #1 = $imm10
/* 28463*/        OPC_Scope, 48, /*->28513*/ // 2 children in Scope
/* 28465*/          OPC_MoveChild1,
/* 28466*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 28469*/          OPC_CheckPredicate, 49, // Predicate_immSExt10_64
/* 28471*/          OPC_MoveParent,
/* 28472*/          OPC_MoveChild2,
/* 28473*/          OPC_Scope, 18, /*->28493*/ // 2 children in Scope
/* 28475*/            OPC_CheckCondCode, ISD::SETEQ,
/* 28477*/            OPC_MoveParent,
/* 28478*/            OPC_MoveParent,
/* 28479*/            OPC_CheckType, MVT::i64,
/* 28481*/            OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 28483*/            OPC_EmitConvertToTarget, 1,
/* 28485*/            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)
/* 28493*/          /*Scope*/ 18, /*->28512*/
/* 28494*/            OPC_CheckCondCode, ISD::SETNE,
/* 28496*/            OPC_MoveParent,
/* 28497*/            OPC_MoveParent,
/* 28498*/            OPC_CheckType, MVT::i64,
/* 28500*/            OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 28502*/            OPC_EmitConvertToTarget, 1,
/* 28504*/            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)
/* 28512*/          0, /*End of Scope*/
/* 28513*/        /*Scope*/ 37, /*->28551*/
/* 28514*/          OPC_MoveChild2,
/* 28515*/          OPC_Scope, 16, /*->28533*/ // 2 children in Scope
/* 28517*/            OPC_CheckCondCode, ISD::SETEQ,
/* 28519*/            OPC_MoveParent,
/* 28520*/            OPC_MoveParent,
/* 28521*/            OPC_CheckType, MVT::i64,
/* 28523*/            OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 28525*/            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)
/* 28533*/          /*Scope*/ 16, /*->28550*/
/* 28534*/            OPC_CheckCondCode, ISD::SETNE,
/* 28536*/            OPC_MoveParent,
/* 28537*/            OPC_MoveParent,
/* 28538*/            OPC_CheckType, MVT::i64,
/* 28540*/            OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 28542*/            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)
/* 28550*/          0, /*End of Scope*/
/* 28551*/        0, /*End of Scope*/
/* 28552*/      /*SwitchOpcode*/ 32, TARGET_VAL(ISD::SHL),// ->28587
/* 28555*/        OPC_RecordChild0, // #0 = $rt
/* 28556*/        OPC_RecordChild1, // #1 = $imm
/* 28557*/        OPC_MoveChild1,
/* 28558*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 28561*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 28563*/        OPC_CheckType, MVT::i32,
/* 28565*/        OPC_MoveParent,
/* 28566*/        OPC_MoveParent,
/* 28567*/        OPC_CheckType, MVT::i64,
/* 28569*/        OPC_CheckPatternPredicate, 56, // (Subtarget->hasCnMips()) && (Subtarget->hasMips64()) && (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 28571*/        OPC_EmitConvertToTarget, 1,
/* 28573*/        OPC_EmitConvertToTarget, 1,
/* 28575*/        OPC_EmitNodeXForm, 4, 3, // immZExt5To31
/* 28578*/        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))
/* 28587*/      0, // EndSwitchOpcode
/* 28588*/    /*Scope*/ 44, /*->28633*/
/* 28589*/      OPC_RecordChild0, // #0 = $src
/* 28590*/      OPC_CheckType, MVT::i64,
/* 28592*/      OPC_Scope, 17, /*->28611*/ // 2 children in Scope
/* 28594*/        OPC_CheckPatternPredicate, 57, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 28596*/        OPC_EmitInteger, MVT::i32, 0, 
/* 28599*/        OPC_EmitInteger, MVT::i32, 32, 
/* 28602*/        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] })
/* 28611*/      /*Scope*/ 20, /*->28632*/
/* 28612*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 28614*/        OPC_EmitNode1, TARGET_VAL(Mips::DSLL64_32), 0,
                      MVT::i64, 1/*#Ops*/, 0,  // Results = #1
/* 28621*/        OPC_EmitInteger, MVT::i32, 32, 
/* 28624*/        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] })
/* 28632*/      0, /*End of Scope*/
/* 28633*/    0, /*End of Scope*/
/* 28634*/  /*SwitchOpcode*/ 4|128,13/*1668*/, TARGET_VAL(ISD::ADD),// ->30306
/* 28638*/    OPC_Scope, 49, /*->28689*/ // 7 children in Scope
/* 28640*/      OPC_RecordChild0, // #0 = $rt
/* 28641*/      OPC_MoveChild1,
/* 28642*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 28645*/      OPC_RecordChild0, // #1 = $rs
/* 28646*/      OPC_RecordChild1, // #2 = $sa
/* 28647*/      OPC_MoveChild1,
/* 28648*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 28651*/      OPC_CheckPredicate, 50, // Predicate_immZExt2Lsa
/* 28653*/      OPC_CheckType, MVT::i32,
/* 28655*/      OPC_MoveParent,
/* 28656*/      OPC_MoveParent,
/* 28657*/      OPC_SwitchType /*2 cases */, 13, MVT::i32,// ->28673
/* 28660*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 28662*/        OPC_EmitConvertToTarget, 2,
/* 28664*/        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)
/* 28673*/      /*SwitchType*/ 13, MVT::i64,// ->28688
/* 28675*/        OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 28677*/        OPC_EmitConvertToTarget, 2,
/* 28679*/        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)
/* 28688*/      0, // EndSwitchType
/* 28689*/    /*Scope*/ 49, /*->28739*/
/* 28690*/      OPC_MoveChild0,
/* 28691*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 28694*/      OPC_RecordChild0, // #0 = $rs
/* 28695*/      OPC_RecordChild1, // #1 = $sa
/* 28696*/      OPC_MoveChild1,
/* 28697*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 28700*/      OPC_CheckPredicate, 50, // Predicate_immZExt2Lsa
/* 28702*/      OPC_CheckType, MVT::i32,
/* 28704*/      OPC_MoveParent,
/* 28705*/      OPC_MoveParent,
/* 28706*/      OPC_RecordChild1, // #2 = $rt
/* 28707*/      OPC_SwitchType /*2 cases */, 13, MVT::i32,// ->28723
/* 28710*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 28712*/        OPC_EmitConvertToTarget, 1,
/* 28714*/        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)
/* 28723*/      /*SwitchType*/ 13, MVT::i64,// ->28738
/* 28725*/        OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 28727*/        OPC_EmitConvertToTarget, 1,
/* 28729*/        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)
/* 28738*/      0, // EndSwitchType
/* 28739*/    /*Scope*/ 111|128,3/*495*/, /*->29236*/
/* 28741*/      OPC_RecordChild0, // #0 = $hi
/* 28742*/      OPC_MoveChild1,
/* 28743*/      OPC_SwitchOpcode /*4 cases */, 112|128,1/*240*/, TARGET_VAL(MipsISD::Lo),// ->28988
/* 28748*/        OPC_RecordChild0, // #1 = $lo
/* 28749*/        OPC_MoveChild0,
/* 28750*/        OPC_SwitchOpcode /*5 cases */, 53, TARGET_VAL(ISD::TargetGlobalAddress),// ->28807
/* 28754*/          OPC_MoveParent,
/* 28755*/          OPC_MoveParent,
/* 28756*/          OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->28794
/* 28759*/            OPC_Scope, 10, /*->28771*/ // 3 children in Scope
/* 28761*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28763*/              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)
/* 28771*/            /*Scope*/ 10, /*->28782*/
/* 28772*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 28774*/              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)
/* 28782*/            /*Scope*/ 10, /*->28793*/
/* 28783*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28785*/              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)
/* 28793*/            0, /*End of Scope*/
/* 28794*/          /*SwitchType*/ 10, MVT::i64,// ->28806
/* 28796*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 28798*/            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)
/* 28806*/          0, // EndSwitchType
/* 28807*/        /*SwitchOpcode*/ 42, TARGET_VAL(ISD::TargetBlockAddress),// ->28852
/* 28810*/          OPC_MoveParent,
/* 28811*/          OPC_MoveParent,
/* 28812*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28839
/* 28815*/            OPC_Scope, 10, /*->28827*/ // 2 children in Scope
/* 28817*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28819*/              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)
/* 28827*/            /*Scope*/ 10, /*->28838*/
/* 28828*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28830*/              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)
/* 28838*/            0, /*End of Scope*/
/* 28839*/          /*SwitchType*/ 10, MVT::i64,// ->28851
/* 28841*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 28843*/            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)
/* 28851*/          0, // EndSwitchType
/* 28852*/        /*SwitchOpcode*/ 42, TARGET_VAL(ISD::TargetJumpTable),// ->28897
/* 28855*/          OPC_MoveParent,
/* 28856*/          OPC_MoveParent,
/* 28857*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28884
/* 28860*/            OPC_Scope, 10, /*->28872*/ // 2 children in Scope
/* 28862*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28864*/              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)
/* 28872*/            /*Scope*/ 10, /*->28883*/
/* 28873*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28875*/              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)
/* 28883*/            0, /*End of Scope*/
/* 28884*/          /*SwitchType*/ 10, MVT::i64,// ->28896
/* 28886*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 28888*/            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)
/* 28896*/          0, // EndSwitchType
/* 28897*/        /*SwitchOpcode*/ 42, TARGET_VAL(ISD::TargetConstantPool),// ->28942
/* 28900*/          OPC_MoveParent,
/* 28901*/          OPC_MoveParent,
/* 28902*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28929
/* 28905*/            OPC_Scope, 10, /*->28917*/ // 2 children in Scope
/* 28907*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28909*/              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)
/* 28917*/            /*Scope*/ 10, /*->28928*/
/* 28918*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28920*/              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)
/* 28928*/            0, /*End of Scope*/
/* 28929*/          /*SwitchType*/ 10, MVT::i64,// ->28941
/* 28931*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 28933*/            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)
/* 28941*/          0, // EndSwitchType
/* 28942*/        /*SwitchOpcode*/ 42, TARGET_VAL(ISD::TargetGlobalTLSAddress),// ->28987
/* 28945*/          OPC_MoveParent,
/* 28946*/          OPC_MoveParent,
/* 28947*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->28974
/* 28950*/            OPC_Scope, 10, /*->28962*/ // 2 children in Scope
/* 28952*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 28954*/              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)
/* 28962*/            /*Scope*/ 10, /*->28973*/
/* 28963*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 28965*/              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)
/* 28973*/            0, /*End of Scope*/
/* 28974*/          /*SwitchType*/ 10, MVT::i64,// ->28986
/* 28976*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 28978*/            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)
/* 28986*/          0, // EndSwitchType
/* 28987*/        0, // EndSwitchOpcode
/* 28988*/      /*SwitchOpcode*/ 94, TARGET_VAL(MipsISD::GPRel),// ->29085
/* 28991*/        OPC_RecordChild0, // #1 = $in
/* 28992*/        OPC_MoveChild0,
/* 28993*/        OPC_SwitchOpcode /*2 cases */, 42, TARGET_VAL(ISD::TargetGlobalAddress),// ->29039
/* 28997*/          OPC_MoveParent,
/* 28998*/          OPC_MoveParent,
/* 28999*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->29026
/* 29002*/            OPC_Scope, 10, /*->29014*/ // 2 children in Scope
/* 29004*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29006*/              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)
/* 29014*/            /*Scope*/ 10, /*->29025*/
/* 29015*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 29017*/              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)
/* 29025*/            0, /*End of Scope*/
/* 29026*/          /*SwitchType*/ 10, MVT::i64,// ->29038
/* 29028*/            OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64())
/* 29030*/            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)
/* 29038*/          0, // EndSwitchType
/* 29039*/        /*SwitchOpcode*/ 42, TARGET_VAL(ISD::TargetConstantPool),// ->29084
/* 29042*/          OPC_MoveParent,
/* 29043*/          OPC_MoveParent,
/* 29044*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->29071
/* 29047*/            OPC_Scope, 10, /*->29059*/ // 2 children in Scope
/* 29049*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29051*/              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)
/* 29059*/            /*Scope*/ 10, /*->29070*/
/* 29060*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 29062*/              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)
/* 29070*/            0, /*End of Scope*/
/* 29071*/          /*SwitchType*/ 10, MVT::i64,// ->29083
/* 29073*/            OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64())
/* 29075*/            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)
/* 29083*/          0, // EndSwitchType
/* 29084*/        0, // EndSwitchOpcode
/* 29085*/      /*SwitchOpcode*/ 72, TARGET_VAL(MipsISD::Higher),// ->29160
/* 29088*/        OPC_RecordChild0, // #1 = $lo
/* 29089*/        OPC_MoveChild0,
/* 29090*/        OPC_SwitchOpcode /*4 cases */, 14, TARGET_VAL(ISD::TargetGlobalAddress),// ->29108
/* 29094*/          OPC_MoveParent,
/* 29095*/          OPC_MoveParent,
/* 29096*/          OPC_CheckType, MVT::i64,
/* 29098*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29100*/          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)
/* 29108*/        /*SwitchOpcode*/ 14, TARGET_VAL(ISD::TargetBlockAddress),// ->29125
/* 29111*/          OPC_MoveParent,
/* 29112*/          OPC_MoveParent,
/* 29113*/          OPC_CheckType, MVT::i64,
/* 29115*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29117*/          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)
/* 29125*/        /*SwitchOpcode*/ 14, TARGET_VAL(ISD::TargetJumpTable),// ->29142
/* 29128*/          OPC_MoveParent,
/* 29129*/          OPC_MoveParent,
/* 29130*/          OPC_CheckType, MVT::i64,
/* 29132*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29134*/          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)
/* 29142*/        /*SwitchOpcode*/ 14, TARGET_VAL(ISD::TargetConstantPool),// ->29159
/* 29145*/          OPC_MoveParent,
/* 29146*/          OPC_MoveParent,
/* 29147*/          OPC_CheckType, MVT::i64,
/* 29149*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29151*/          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)
/* 29159*/        0, // EndSwitchOpcode
/* 29160*/      /*SwitchOpcode*/ 72, TARGET_VAL(MipsISD::Hi),// ->29235
/* 29163*/        OPC_RecordChild0, // #1 = $lo
/* 29164*/        OPC_MoveChild0,
/* 29165*/        OPC_SwitchOpcode /*4 cases */, 14, TARGET_VAL(ISD::TargetGlobalAddress),// ->29183
/* 29169*/          OPC_MoveParent,
/* 29170*/          OPC_MoveParent,
/* 29171*/          OPC_CheckType, MVT::i64,
/* 29173*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29175*/          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)
/* 29183*/        /*SwitchOpcode*/ 14, TARGET_VAL(ISD::TargetBlockAddress),// ->29200
/* 29186*/          OPC_MoveParent,
/* 29187*/          OPC_MoveParent,
/* 29188*/          OPC_CheckType, MVT::i64,
/* 29190*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29192*/          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)
/* 29200*/        /*SwitchOpcode*/ 14, TARGET_VAL(ISD::TargetJumpTable),// ->29217
/* 29203*/          OPC_MoveParent,
/* 29204*/          OPC_MoveParent,
/* 29205*/          OPC_CheckType, MVT::i64,
/* 29207*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29209*/          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)
/* 29217*/        /*SwitchOpcode*/ 14, TARGET_VAL(ISD::TargetConstantPool),// ->29234
/* 29220*/          OPC_MoveParent,
/* 29221*/          OPC_MoveParent,
/* 29222*/          OPC_CheckType, MVT::i64,
/* 29224*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29226*/          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)
/* 29234*/        0, // EndSwitchOpcode
/* 29235*/      0, // EndSwitchOpcode
/* 29236*/    /*Scope*/ 125|128,3/*509*/, /*->29747*/
/* 29238*/      OPC_MoveChild0,
/* 29239*/      OPC_SwitchOpcode /*4 cases */, 117|128,1/*245*/, TARGET_VAL(MipsISD::Lo),// ->29489
/* 29244*/        OPC_RecordChild0, // #0 = $lo
/* 29245*/        OPC_MoveChild0,
/* 29246*/        OPC_SwitchOpcode /*5 cases */, 54, TARGET_VAL(ISD::TargetGlobalAddress),// ->29304
/* 29250*/          OPC_MoveParent,
/* 29251*/          OPC_MoveParent,
/* 29252*/          OPC_RecordChild1, // #1 = $hi
/* 29253*/          OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->29291
/* 29256*/            OPC_Scope, 10, /*->29268*/ // 3 children in Scope
/* 29258*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29260*/              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)
/* 29268*/            /*Scope*/ 10, /*->29279*/
/* 29269*/              OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 29271*/              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)
/* 29279*/            /*Scope*/ 10, /*->29290*/
/* 29280*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 29282*/              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)
/* 29290*/            0, /*End of Scope*/
/* 29291*/          /*SwitchType*/ 10, MVT::i64,// ->29303
/* 29293*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29295*/            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)
/* 29303*/          0, // EndSwitchType
/* 29304*/        /*SwitchOpcode*/ 43, TARGET_VAL(ISD::TargetBlockAddress),// ->29350
/* 29307*/          OPC_MoveParent,
/* 29308*/          OPC_MoveParent,
/* 29309*/          OPC_RecordChild1, // #1 = $hi
/* 29310*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->29337
/* 29313*/            OPC_Scope, 10, /*->29325*/ // 2 children in Scope
/* 29315*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29317*/              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)
/* 29325*/            /*Scope*/ 10, /*->29336*/
/* 29326*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 29328*/              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)
/* 29336*/            0, /*End of Scope*/
/* 29337*/          /*SwitchType*/ 10, MVT::i64,// ->29349
/* 29339*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29341*/            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)
/* 29349*/          0, // EndSwitchType
/* 29350*/        /*SwitchOpcode*/ 43, TARGET_VAL(ISD::TargetJumpTable),// ->29396
/* 29353*/          OPC_MoveParent,
/* 29354*/          OPC_MoveParent,
/* 29355*/          OPC_RecordChild1, // #1 = $hi
/* 29356*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->29383
/* 29359*/            OPC_Scope, 10, /*->29371*/ // 2 children in Scope
/* 29361*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29363*/              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)
/* 29371*/            /*Scope*/ 10, /*->29382*/
/* 29372*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 29374*/              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)
/* 29382*/            0, /*End of Scope*/
/* 29383*/          /*SwitchType*/ 10, MVT::i64,// ->29395
/* 29385*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29387*/            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)
/* 29395*/          0, // EndSwitchType
/* 29396*/        /*SwitchOpcode*/ 43, TARGET_VAL(ISD::TargetConstantPool),// ->29442
/* 29399*/          OPC_MoveParent,
/* 29400*/          OPC_MoveParent,
/* 29401*/          OPC_RecordChild1, // #1 = $hi
/* 29402*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->29429
/* 29405*/            OPC_Scope, 10, /*->29417*/ // 2 children in Scope
/* 29407*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29409*/              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)
/* 29417*/            /*Scope*/ 10, /*->29428*/
/* 29418*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 29420*/              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)
/* 29428*/            0, /*End of Scope*/
/* 29429*/          /*SwitchType*/ 10, MVT::i64,// ->29441
/* 29431*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29433*/            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)
/* 29441*/          0, // EndSwitchType
/* 29442*/        /*SwitchOpcode*/ 43, TARGET_VAL(ISD::TargetGlobalTLSAddress),// ->29488
/* 29445*/          OPC_MoveParent,
/* 29446*/          OPC_MoveParent,
/* 29447*/          OPC_RecordChild1, // #1 = $hi
/* 29448*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->29475
/* 29451*/            OPC_Scope, 10, /*->29463*/ // 2 children in Scope
/* 29453*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29455*/              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)
/* 29463*/            /*Scope*/ 10, /*->29474*/
/* 29464*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 29466*/              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)
/* 29474*/            0, /*End of Scope*/
/* 29475*/          /*SwitchType*/ 10, MVT::i64,// ->29487
/* 29477*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29479*/            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)
/* 29487*/          0, // EndSwitchType
/* 29488*/        0, // EndSwitchOpcode
/* 29489*/      /*SwitchOpcode*/ 96, TARGET_VAL(MipsISD::GPRel),// ->29588
/* 29492*/        OPC_RecordChild0, // #0 = $in
/* 29493*/        OPC_MoveChild0,
/* 29494*/        OPC_SwitchOpcode /*2 cases */, 43, TARGET_VAL(ISD::TargetGlobalAddress),// ->29541
/* 29498*/          OPC_MoveParent,
/* 29499*/          OPC_MoveParent,
/* 29500*/          OPC_RecordChild1, // #1 = $gp
/* 29501*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->29528
/* 29504*/            OPC_Scope, 10, /*->29516*/ // 2 children in Scope
/* 29506*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29508*/              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)
/* 29516*/            /*Scope*/ 10, /*->29527*/
/* 29517*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 29519*/              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)
/* 29527*/            0, /*End of Scope*/
/* 29528*/          /*SwitchType*/ 10, MVT::i64,// ->29540
/* 29530*/            OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64())
/* 29532*/            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)
/* 29540*/          0, // EndSwitchType
/* 29541*/        /*SwitchOpcode*/ 43, TARGET_VAL(ISD::TargetConstantPool),// ->29587
/* 29544*/          OPC_MoveParent,
/* 29545*/          OPC_MoveParent,
/* 29546*/          OPC_RecordChild1, // #1 = $gp
/* 29547*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->29574
/* 29550*/            OPC_Scope, 10, /*->29562*/ // 2 children in Scope
/* 29552*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29554*/              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)
/* 29562*/            /*Scope*/ 10, /*->29573*/
/* 29563*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 29565*/              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)
/* 29573*/            0, /*End of Scope*/
/* 29574*/          /*SwitchType*/ 10, MVT::i64,// ->29586
/* 29576*/            OPC_CheckPatternPredicate, 60, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64())
/* 29578*/            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)
/* 29586*/          0, // EndSwitchType
/* 29587*/        0, // EndSwitchOpcode
/* 29588*/      /*SwitchOpcode*/ 76, TARGET_VAL(MipsISD::Higher),// ->29667
/* 29591*/        OPC_RecordChild0, // #0 = $lo
/* 29592*/        OPC_MoveChild0,
/* 29593*/        OPC_SwitchOpcode /*4 cases */, 15, TARGET_VAL(ISD::TargetGlobalAddress),// ->29612
/* 29597*/          OPC_MoveParent,
/* 29598*/          OPC_MoveParent,
/* 29599*/          OPC_RecordChild1, // #1 = $hi
/* 29600*/          OPC_CheckType, MVT::i64,
/* 29602*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29604*/          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)
/* 29612*/        /*SwitchOpcode*/ 15, TARGET_VAL(ISD::TargetBlockAddress),// ->29630
/* 29615*/          OPC_MoveParent,
/* 29616*/          OPC_MoveParent,
/* 29617*/          OPC_RecordChild1, // #1 = $hi
/* 29618*/          OPC_CheckType, MVT::i64,
/* 29620*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29622*/          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)
/* 29630*/        /*SwitchOpcode*/ 15, TARGET_VAL(ISD::TargetJumpTable),// ->29648
/* 29633*/          OPC_MoveParent,
/* 29634*/          OPC_MoveParent,
/* 29635*/          OPC_RecordChild1, // #1 = $hi
/* 29636*/          OPC_CheckType, MVT::i64,
/* 29638*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29640*/          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)
/* 29648*/        /*SwitchOpcode*/ 15, TARGET_VAL(ISD::TargetConstantPool),// ->29666
/* 29651*/          OPC_MoveParent,
/* 29652*/          OPC_MoveParent,
/* 29653*/          OPC_RecordChild1, // #1 = $hi
/* 29654*/          OPC_CheckType, MVT::i64,
/* 29656*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29658*/          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)
/* 29666*/        0, // EndSwitchOpcode
/* 29667*/      /*SwitchOpcode*/ 76, TARGET_VAL(MipsISD::Hi),// ->29746
/* 29670*/        OPC_RecordChild0, // #0 = $lo
/* 29671*/        OPC_MoveChild0,
/* 29672*/        OPC_SwitchOpcode /*4 cases */, 15, TARGET_VAL(ISD::TargetGlobalAddress),// ->29691
/* 29676*/          OPC_MoveParent,
/* 29677*/          OPC_MoveParent,
/* 29678*/          OPC_RecordChild1, // #1 = $hi
/* 29679*/          OPC_CheckType, MVT::i64,
/* 29681*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29683*/          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)
/* 29691*/        /*SwitchOpcode*/ 15, TARGET_VAL(ISD::TargetBlockAddress),// ->29709
/* 29694*/          OPC_MoveParent,
/* 29695*/          OPC_MoveParent,
/* 29696*/          OPC_RecordChild1, // #1 = $hi
/* 29697*/          OPC_CheckType, MVT::i64,
/* 29699*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29701*/          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)
/* 29709*/        /*SwitchOpcode*/ 15, TARGET_VAL(ISD::TargetJumpTable),// ->29727
/* 29712*/          OPC_MoveParent,
/* 29713*/          OPC_MoveParent,
/* 29714*/          OPC_RecordChild1, // #1 = $hi
/* 29715*/          OPC_CheckType, MVT::i64,
/* 29717*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29719*/          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)
/* 29727*/        /*SwitchOpcode*/ 15, TARGET_VAL(ISD::TargetConstantPool),// ->29745
/* 29730*/          OPC_MoveParent,
/* 29731*/          OPC_MoveParent,
/* 29732*/          OPC_RecordChild1, // #1 = $hi
/* 29733*/          OPC_CheckType, MVT::i64,
/* 29735*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 29737*/          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)
/* 29745*/        0, // EndSwitchOpcode
/* 29746*/      0, // EndSwitchOpcode
/* 29747*/    /*Scope*/ 32|128,3/*416*/, /*->30165*/
/* 29749*/      OPC_RecordChild0, // #0 = $rs
/* 29750*/      OPC_Scope, 93|128,2/*349*/, /*->30102*/ // 2 children in Scope
/* 29753*/        OPC_RecordChild1, // #1 = $imm16
/* 29754*/        OPC_Scope, 18|128,1/*146*/, /*->29903*/ // 7 children in Scope
/* 29757*/          OPC_MoveChild1,
/* 29758*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 29761*/          OPC_Scope, 33, /*->29796*/ // 6 children in Scope
/* 29763*/            OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 29765*/            OPC_MoveParent,
/* 29766*/            OPC_SwitchType /*2 cases */, 12, MVT::i32,// ->29781
/* 29769*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29771*/              OPC_EmitConvertToTarget, 1,
/* 29773*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ADDiu), 0,
                            MVT::i32, 2/*#Ops*/, 0, 2, 
                        // Src: (add:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] })<<P:Predicate_immSExt16>>:$imm16) - Complexity = 7
                        // Dst: (ADDiu:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (imm:{ *:[i32] }):$imm16)
/* 29781*/            /*SwitchType*/ 12, MVT::i64,// ->29795
/* 29783*/              OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29785*/              OPC_EmitConvertToTarget, 1,
/* 29787*/              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)
/* 29795*/            0, // EndSwitchType
/* 29796*/          /*Scope*/ 17, /*->29814*/
/* 29797*/            OPC_CheckPredicate, 51, // Predicate_immSExt8
/* 29799*/            OPC_MoveParent,
/* 29800*/            OPC_CheckType, MVT::i32,
/* 29802*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 29804*/            OPC_EmitConvertToTarget, 1,
/* 29806*/            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)
/* 29814*/          /*Scope*/ 17, /*->29832*/
/* 29815*/            OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 29817*/            OPC_MoveParent,
/* 29818*/            OPC_CheckType, MVT::i32,
/* 29820*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 29822*/            OPC_EmitConvertToTarget, 1,
/* 29824*/            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)
/* 29832*/          /*Scope*/ 17, /*->29850*/
/* 29833*/            OPC_CheckPredicate, 52, // Predicate_immSExtAddiur2
/* 29835*/            OPC_MoveParent,
/* 29836*/            OPC_CheckType, MVT::i32,
/* 29838*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 29840*/            OPC_EmitConvertToTarget, 1,
/* 29842*/            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)
/* 29850*/          /*Scope*/ 17, /*->29868*/
/* 29851*/            OPC_CheckPredicate, 53, // Predicate_immSExtAddius5
/* 29853*/            OPC_MoveParent,
/* 29854*/            OPC_CheckType, MVT::i32,
/* 29856*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 29858*/            OPC_EmitConvertToTarget, 1,
/* 29860*/            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)
/* 29868*/          /*Scope*/ 33, /*->29902*/
/* 29869*/            OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 29871*/            OPC_MoveParent,
/* 29872*/            OPC_CheckType, MVT::i32,
/* 29874*/            OPC_Scope, 12, /*->29888*/ // 2 children in Scope
/* 29876*/              OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 29878*/              OPC_EmitConvertToTarget, 1,
/* 29880*/              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)
/* 29888*/            /*Scope*/ 12, /*->29901*/
/* 29889*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 29891*/              OPC_EmitConvertToTarget, 1,
/* 29893*/              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)
/* 29901*/            0, /*End of Scope*/
/* 29902*/          0, /*End of Scope*/
/* 29903*/        /*Scope*/ 60, /*->29964*/
/* 29904*/          OPC_CheckType, MVT::i32,
/* 29906*/          OPC_Scope, 10, /*->29918*/ // 4 children in Scope
/* 29908*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 29910*/            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)
/* 29918*/          /*Scope*/ 10, /*->29929*/
/* 29919*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29921*/            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)
/* 29929*/          /*Scope*/ 10, /*->29940*/
/* 29930*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 29932*/            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)
/* 29940*/          /*Scope*/ 22, /*->29963*/
/* 29941*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 29943*/            OPC_Scope, 8, /*->29953*/ // 2 children in Scope
/* 29945*/              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)
/* 29953*/            /*Scope*/ 8, /*->29962*/
/* 29954*/              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)
/* 29962*/            0, /*End of Scope*/
/* 29963*/          0, /*End of Scope*/
/* 29964*/        /*Scope*/ 12, /*->29977*/
/* 29965*/          OPC_CheckType, MVT::i64,
/* 29967*/          OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 29969*/          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)
/* 29977*/        /*Scope*/ 30, /*->30008*/
/* 29978*/          OPC_CheckType, MVT::v16i8,
/* 29980*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 29982*/          OPC_Scope, 11, /*->29995*/ // 2 children in Scope
/* 29984*/            OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 29987*/            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)
/* 29995*/          /*Scope*/ 11, /*->30007*/
/* 29996*/            OPC_CheckComplexPat, /*CP*/16, /*#*/0, // selectVSplatUimm5:$imm #2
/* 29999*/            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)
/* 30007*/          0, /*End of Scope*/
/* 30008*/        /*Scope*/ 30, /*->30039*/
/* 30009*/          OPC_CheckType, MVT::v8i16,
/* 30011*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 30013*/          OPC_Scope, 11, /*->30026*/ // 2 children in Scope
/* 30015*/            OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 30018*/            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)
/* 30026*/          /*Scope*/ 11, /*->30038*/
/* 30027*/            OPC_CheckComplexPat, /*CP*/17, /*#*/0, // selectVSplatUimm5:$imm #2
/* 30030*/            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)
/* 30038*/          0, /*End of Scope*/
/* 30039*/        /*Scope*/ 30, /*->30070*/
/* 30040*/          OPC_CheckType, MVT::v4i32,
/* 30042*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 30044*/          OPC_Scope, 11, /*->30057*/ // 2 children in Scope
/* 30046*/            OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 30049*/            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)
/* 30057*/          /*Scope*/ 11, /*->30069*/
/* 30058*/            OPC_CheckComplexPat, /*CP*/18, /*#*/0, // selectVSplatUimm5:$imm #2
/* 30061*/            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)
/* 30069*/          0, /*End of Scope*/
/* 30070*/        /*Scope*/ 30, /*->30101*/
/* 30071*/          OPC_CheckType, MVT::v2i64,
/* 30073*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 30075*/          OPC_Scope, 11, /*->30088*/ // 2 children in Scope
/* 30077*/            OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 30080*/            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)
/* 30088*/          /*Scope*/ 11, /*->30100*/
/* 30089*/            OPC_CheckComplexPat, /*CP*/19, /*#*/0, // selectVSplatUimm5:$imm #2
/* 30092*/            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)
/* 30100*/          0, /*End of Scope*/
/* 30101*/        0, /*End of Scope*/
/* 30102*/      /*Scope*/ 61, /*->30164*/
/* 30103*/        OPC_MoveChild1,
/* 30104*/        OPC_CheckOpcode, TARGET_VAL(ISD::MUL),
/* 30107*/        OPC_RecordChild0, // #1 = $ws
/* 30108*/        OPC_RecordChild1, // #2 = $wt
/* 30109*/        OPC_MoveParent,
/* 30110*/        OPC_SwitchType /*4 cases */, 11, MVT::v16i8,// ->30124
/* 30113*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 30115*/          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)
/* 30124*/        /*SwitchType*/ 11, MVT::v8i16,// ->30137
/* 30126*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 30128*/          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)
/* 30137*/        /*SwitchType*/ 11, MVT::v4i32,// ->30150
/* 30139*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 30141*/          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)
/* 30150*/        /*SwitchType*/ 11, MVT::v2i64,// ->30163
/* 30152*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 30154*/          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)
/* 30163*/        0, // EndSwitchType
/* 30164*/      0, /*End of Scope*/
/* 30165*/    /*Scope*/ 62, /*->30228*/
/* 30166*/      OPC_MoveChild0,
/* 30167*/      OPC_CheckOpcode, TARGET_VAL(ISD::MUL),
/* 30170*/      OPC_RecordChild0, // #0 = $ws
/* 30171*/      OPC_RecordChild1, // #1 = $wt
/* 30172*/      OPC_MoveParent,
/* 30173*/      OPC_RecordChild1, // #2 = $wd_in
/* 30174*/      OPC_SwitchType /*4 cases */, 11, MVT::v16i8,// ->30188
/* 30177*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 30179*/        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)
/* 30188*/      /*SwitchType*/ 11, MVT::v8i16,// ->30201
/* 30190*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 30192*/        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)
/* 30201*/      /*SwitchType*/ 11, MVT::v4i32,// ->30214
/* 30203*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 30205*/        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)
/* 30214*/      /*SwitchType*/ 11, MVT::v2i64,// ->30227
/* 30216*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 30218*/        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)
/* 30227*/      0, // EndSwitchType
/* 30228*/    /*Scope*/ 76, /*->30305*/
/* 30229*/      OPC_RecordChild0, // #0 = $a
/* 30230*/      OPC_RecordChild1, // #1 = $b
/* 30231*/      OPC_SwitchType /*6 cases */, 10, MVT::v2i16,// ->30244
/* 30234*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 30236*/        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)
/* 30244*/      /*SwitchType*/ 10, MVT::v4i8,// ->30256
/* 30246*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 30248*/        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)
/* 30256*/      /*SwitchType*/ 10, MVT::v16i8,// ->30268
/* 30258*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 30260*/        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)
/* 30268*/      /*SwitchType*/ 10, MVT::v8i16,// ->30280
/* 30270*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 30272*/        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)
/* 30280*/      /*SwitchType*/ 10, MVT::v4i32,// ->30292
/* 30282*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 30284*/        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)
/* 30292*/      /*SwitchType*/ 10, MVT::v2i64,// ->30304
/* 30294*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 30296*/        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)
/* 30304*/      0, // EndSwitchType
/* 30305*/    0, /*End of Scope*/
/* 30306*/  /*SwitchOpcode*/ 101|128,4/*613*/, TARGET_VAL(ISD::SIGN_EXTEND),// ->30923
/* 30310*/    OPC_Scope, 84|128,4/*596*/, /*->30909*/ // 2 children in Scope
/* 30313*/      OPC_MoveChild0,
/* 30314*/      OPC_SwitchOpcode /*12 cases */, 73, TARGET_VAL(ISD::ADD),// ->30391
/* 30318*/        OPC_RecordChild0, // #0 = $src
/* 30319*/        OPC_RecordChild1, // #1 = $imm16
/* 30320*/        OPC_Scope, 38, /*->30360*/ // 2 children in Scope
/* 30322*/          OPC_MoveChild1,
/* 30323*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 30326*/          OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 30328*/          OPC_MoveParent,
/* 30329*/          OPC_MoveParent,
/* 30330*/          OPC_CheckType, MVT::i64,
/* 30332*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30338*/          OPC_EmitConvertToTarget, 1,
/* 30340*/          OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 3,  // Results = #4
/* 30348*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30351*/          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] })
/* 30360*/        /*Scope*/ 29, /*->30390*/
/* 30361*/          OPC_MoveParent,
/* 30362*/          OPC_CheckType, MVT::i64,
/* 30364*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30370*/          OPC_EmitNode1, TARGET_VAL(Mips::ADDu), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30378*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30381*/          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] })
/* 30390*/        0, /*End of Scope*/
/* 30391*/      /*SwitchOpcode*/ 77, TARGET_VAL(ISD::SHL),// ->30471
/* 30394*/        OPC_RecordChild0, // #0 = $src
/* 30395*/        OPC_RecordChild1, // #1 = $imm5
/* 30396*/        OPC_Scope, 40, /*->30438*/ // 2 children in Scope
/* 30398*/          OPC_MoveChild1,
/* 30399*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 30402*/          OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 30404*/          OPC_CheckType, MVT::i32,
/* 30406*/          OPC_MoveParent,
/* 30407*/          OPC_MoveParent,
/* 30408*/          OPC_CheckType, MVT::i64,
/* 30410*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30416*/          OPC_EmitConvertToTarget, 1,
/* 30418*/          OPC_EmitNode1, TARGET_VAL(Mips::SLL), 0,
                        MVT::i32, 2/*#Ops*/, 0, 3,  // Results = #4
/* 30426*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30429*/          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] })
/* 30438*/        /*Scope*/ 31, /*->30470*/
/* 30439*/          OPC_CheckChild1Type, MVT::i32,
/* 30441*/          OPC_MoveParent,
/* 30442*/          OPC_CheckType, MVT::i64,
/* 30444*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30450*/          OPC_EmitNode1, TARGET_VAL(Mips::SLLV), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30458*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30461*/          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] })
/* 30470*/        0, /*End of Scope*/
/* 30471*/      /*SwitchOpcode*/ 77, TARGET_VAL(ISD::SRL),// ->30551
/* 30474*/        OPC_RecordChild0, // #0 = $src
/* 30475*/        OPC_RecordChild1, // #1 = $imm5
/* 30476*/        OPC_Scope, 40, /*->30518*/ // 2 children in Scope
/* 30478*/          OPC_MoveChild1,
/* 30479*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 30482*/          OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 30484*/          OPC_CheckType, MVT::i32,
/* 30486*/          OPC_MoveParent,
/* 30487*/          OPC_MoveParent,
/* 30488*/          OPC_CheckType, MVT::i64,
/* 30490*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30496*/          OPC_EmitConvertToTarget, 1,
/* 30498*/          OPC_EmitNode1, TARGET_VAL(Mips::SRL), 0,
                        MVT::i32, 2/*#Ops*/, 0, 3,  // Results = #4
/* 30506*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30509*/          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] })
/* 30518*/        /*Scope*/ 31, /*->30550*/
/* 30519*/          OPC_CheckChild1Type, MVT::i32,
/* 30521*/          OPC_MoveParent,
/* 30522*/          OPC_CheckType, MVT::i64,
/* 30524*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30530*/          OPC_EmitNode1, TARGET_VAL(Mips::SRLV), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30538*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30541*/          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] })
/* 30550*/        0, /*End of Scope*/
/* 30551*/      /*SwitchOpcode*/ 77, TARGET_VAL(ISD::SRA),// ->30631
/* 30554*/        OPC_RecordChild0, // #0 = $src
/* 30555*/        OPC_RecordChild1, // #1 = $imm5
/* 30556*/        OPC_Scope, 40, /*->30598*/ // 2 children in Scope
/* 30558*/          OPC_MoveChild1,
/* 30559*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 30562*/          OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 30564*/          OPC_CheckType, MVT::i32,
/* 30566*/          OPC_MoveParent,
/* 30567*/          OPC_MoveParent,
/* 30568*/          OPC_CheckType, MVT::i64,
/* 30570*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30576*/          OPC_EmitConvertToTarget, 1,
/* 30578*/          OPC_EmitNode1, TARGET_VAL(Mips::SRA), 0,
                        MVT::i32, 2/*#Ops*/, 0, 3,  // Results = #4
/* 30586*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30589*/          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] })
/* 30598*/        /*Scope*/ 31, /*->30630*/
/* 30599*/          OPC_CheckChild1Type, MVT::i32,
/* 30601*/          OPC_MoveParent,
/* 30602*/          OPC_CheckType, MVT::i64,
/* 30604*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30610*/          OPC_EmitNode1, TARGET_VAL(Mips::SRAV), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30618*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30621*/          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] })
/* 30630*/        0, /*End of Scope*/
/* 30631*/      /*SwitchOpcode*/ 31, TARGET_VAL(ISD::SUB),// ->30665
/* 30634*/        OPC_RecordChild0, // #0 = $src
/* 30635*/        OPC_RecordChild1, // #1 = $src2
/* 30636*/        OPC_MoveParent,
/* 30637*/        OPC_CheckType, MVT::i64,
/* 30639*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30645*/        OPC_EmitNode1, TARGET_VAL(Mips::SUBu), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30653*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30656*/        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] })
/* 30665*/      /*SwitchOpcode*/ 32, TARGET_VAL(ISD::MUL),// ->30700
/* 30668*/        OPC_RecordChild0, // #0 = $src
/* 30669*/        OPC_RecordChild1, // #1 = $src2
/* 30670*/        OPC_MoveParent,
/* 30671*/        OPC_CheckType, MVT::i64,
/* 30673*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30679*/        OPC_EmitNode2, TARGET_VAL(Mips::MUL), 0,
                      MVT::i32, MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3 #4
/* 30688*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30691*/        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] })
/* 30700*/      /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::MFHI),// ->30732
/* 30703*/        OPC_RecordChild0, // #0 = $src
/* 30704*/        OPC_MoveParent,
/* 30705*/        OPC_CheckType, MVT::i64,
/* 30707*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #1
/* 30713*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoMFHI), 0,
                      MVT::i32, 1/*#Ops*/, 0,  // Results = #2
/* 30720*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30723*/        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] })
/* 30732*/      /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::MFLO),// ->30764
/* 30735*/        OPC_RecordChild0, // #0 = $src
/* 30736*/        OPC_MoveParent,
/* 30737*/        OPC_CheckType, MVT::i64,
/* 30739*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #1
/* 30745*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoMFLO), 0,
                      MVT::i32, 1/*#Ops*/, 0,  // Results = #2
/* 30752*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30755*/        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] })
/* 30764*/      /*SwitchOpcode*/ 33, TARGET_VAL(ISD::SDIV),// ->30800
/* 30767*/        OPC_RecordChild0, // #0 = $src
/* 30768*/        OPC_RecordChild1, // #1 = $src2
/* 30769*/        OPC_MoveParent,
/* 30770*/        OPC_CheckType, MVT::i64,
/* 30772*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 30774*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30780*/        OPC_EmitNode1, TARGET_VAL(Mips::DIV), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30788*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30791*/        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] })
/* 30800*/      /*SwitchOpcode*/ 33, TARGET_VAL(ISD::UDIV),// ->30836
/* 30803*/        OPC_RecordChild0, // #0 = $src
/* 30804*/        OPC_RecordChild1, // #1 = $src2
/* 30805*/        OPC_MoveParent,
/* 30806*/        OPC_CheckType, MVT::i64,
/* 30808*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 30810*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30816*/        OPC_EmitNode1, TARGET_VAL(Mips::DIVU), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30824*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30827*/        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] })
/* 30836*/      /*SwitchOpcode*/ 33, TARGET_VAL(ISD::SREM),// ->30872
/* 30839*/        OPC_RecordChild0, // #0 = $src
/* 30840*/        OPC_RecordChild1, // #1 = $src2
/* 30841*/        OPC_MoveParent,
/* 30842*/        OPC_CheckType, MVT::i64,
/* 30844*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 30846*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30852*/        OPC_EmitNode1, TARGET_VAL(Mips::MOD), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30860*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30863*/        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] })
/* 30872*/      /*SwitchOpcode*/ 33, TARGET_VAL(ISD::UREM),// ->30908
/* 30875*/        OPC_RecordChild0, // #0 = $src
/* 30876*/        OPC_RecordChild1, // #1 = $src2
/* 30877*/        OPC_MoveParent,
/* 30878*/        OPC_CheckType, MVT::i64,
/* 30880*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 30882*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30888*/        OPC_EmitNode1, TARGET_VAL(Mips::MODU), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30896*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30899*/        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] })
/* 30908*/      0, // EndSwitchOpcode
/* 30909*/    /*Scope*/ 12, /*->30922*/
/* 30910*/      OPC_RecordChild0, // #0 = $src
/* 30911*/      OPC_CheckType, MVT::i64,
/* 30913*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 30915*/      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)
/* 30922*/    0, /*End of Scope*/
/* 30923*/  /*SwitchOpcode*/ 21, TARGET_VAL(ISD::CALLSEQ_START),// ->30947
/* 30926*/    OPC_RecordNode, // #0 = 'callseq_start' chained node
/* 30927*/    OPC_RecordChild1, // #1 = $amt1
/* 30928*/    OPC_MoveChild1,
/* 30929*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 30932*/    OPC_MoveParent,
/* 30933*/    OPC_RecordChild2, // #2 = $amt2
/* 30934*/    OPC_MoveChild2,
/* 30935*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 30938*/    OPC_MoveParent,
/* 30939*/    OPC_EmitMergeInputChains1_0,
/* 30940*/    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)
/* 30947*/  /*SwitchOpcode*/ 22, TARGET_VAL(ISD::CALLSEQ_END),// ->30972
/* 30950*/    OPC_RecordNode, // #0 = 'callseq_end' chained node
/* 30951*/    OPC_CaptureGlueInput,
/* 30952*/    OPC_RecordChild1, // #1 = $amt1
/* 30953*/    OPC_MoveChild1,
/* 30954*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 30957*/    OPC_MoveParent,
/* 30958*/    OPC_RecordChild2, // #2 = $amt2
/* 30959*/    OPC_MoveChild2,
/* 30960*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 30963*/    OPC_MoveParent,
/* 30964*/    OPC_EmitMergeInputChains1_0,
/* 30965*/    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)
/* 30972*/  /*SwitchOpcode*/ 64, TARGET_VAL(ISD::FrameIndex),// ->31039
/* 30975*/    OPC_RecordNode, // #0 = $addr
/* 30976*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->31023
/* 30979*/      OPC_Scope, 13, /*->30994*/ // 3 children in Scope
/* 30981*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 30983*/        OPC_CheckComplexPat, /*CP*/1, /*#*/0, // selectIntAddr:$addr #1 #2
/* 30986*/        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)
/* 30994*/      /*Scope*/ 13, /*->31008*/
/* 30995*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 30997*/        OPC_CheckComplexPat, /*CP*/4, /*#*/0, // selectAddr16SP:$addr #1 #2
/* 31000*/        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)
/* 31008*/      /*Scope*/ 13, /*->31022*/
/* 31009*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31011*/        OPC_CheckComplexPat, /*CP*/1, /*#*/0, // selectIntAddr:$addr #1 #2
/* 31014*/        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)
/* 31022*/      0, /*End of Scope*/
/* 31023*/    /*SwitchType*/ 13, MVT::i64,// ->31038
/* 31025*/      OPC_CheckPatternPredicate, 61, // (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode())
/* 31027*/      OPC_CheckComplexPat, /*CP*/1, /*#*/0, // selectIntAddr:$addr #1 #2
/* 31030*/      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)
/* 31038*/    0, // EndSwitchType
/* 31039*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::Ins),// ->31074
/* 31042*/    OPC_RecordChild0, // #0 = $rs
/* 31043*/    OPC_RecordChild1, // #1 = $pos
/* 31044*/    OPC_MoveChild1,
/* 31045*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 31048*/    OPC_MoveParent,
/* 31049*/    OPC_RecordChild2, // #2 = $size
/* 31050*/    OPC_MoveChild2,
/* 31051*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 31054*/    OPC_MoveParent,
/* 31055*/    OPC_RecordChild3, // #3 = $src
/* 31056*/    OPC_CheckType, MVT::i32,
/* 31058*/    OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 31060*/    OPC_EmitConvertToTarget, 1,
/* 31062*/    OPC_EmitConvertToTarget, 2,
/* 31064*/    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)
/* 31074*/  /*SwitchOpcode*/ 92|128,29/*3804*/, TARGET_VAL(ISD::SETCC),// ->34882
/* 31078*/    OPC_RecordChild0, // #0 = $lhs
/* 31079*/    OPC_Scope, 98|128,8/*1122*/, /*->32204*/ // 10 children in Scope
/* 31082*/      OPC_CheckChild0Type, MVT::i32,
/* 31084*/      OPC_Scope, 100, /*->31186*/ // 3 children in Scope
/* 31086*/        OPC_CheckChild1Integer, 0, 
/* 31088*/        OPC_MoveChild2,
/* 31089*/        OPC_Scope, 18, /*->31109*/ // 5 children in Scope
/* 31091*/          OPC_CheckCondCode, ISD::SETEQ,
/* 31093*/          OPC_MoveParent,
/* 31094*/          OPC_CheckType, MVT::i32,
/* 31096*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31098*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31101*/          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] })
/* 31109*/        /*Scope*/ 18, /*->31128*/
/* 31110*/          OPC_CheckCondCode, ISD::SETNE,
/* 31112*/          OPC_MoveParent,
/* 31113*/          OPC_CheckType, MVT::i32,
/* 31115*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31117*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 31120*/          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)
/* 31128*/        /*Scope*/ 18, /*->31147*/
/* 31129*/          OPC_CheckCondCode, ISD::SETEQ,
/* 31131*/          OPC_MoveParent,
/* 31132*/          OPC_CheckType, MVT::i32,
/* 31134*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31136*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31139*/          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] })
/* 31147*/        /*Scope*/ 18, /*->31166*/
/* 31148*/          OPC_CheckCondCode, ISD::SETNE,
/* 31150*/          OPC_MoveParent,
/* 31151*/          OPC_CheckType, MVT::i32,
/* 31153*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31155*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 31158*/          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)
/* 31166*/        /*Scope*/ 18, /*->31185*/
/* 31167*/          OPC_CheckCondCode, ISD::SETEQ,
/* 31169*/          OPC_MoveParent,
/* 31170*/          OPC_CheckType, MVT::i32,
/* 31172*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31174*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31177*/          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] })
/* 31185*/        0, /*End of Scope*/
/* 31186*/      /*Scope*/ 57, /*->31244*/
/* 31187*/        OPC_CheckChild1Integer, 127|128,127|128,125|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709518847*/, 
/* 31198*/        OPC_MoveChild2,
/* 31199*/        OPC_CheckCondCode, ISD::SETGT,
/* 31201*/        OPC_MoveParent,
/* 31202*/        OPC_CheckType, MVT::i32,
/* 31204*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31206*/        OPC_EmitInteger, MVT::i32, 0|128,0|128,126|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709518848*/, 
/* 31218*/        OPC_EmitNode1, TARGET_VAL(Mips::SltiCCRxImmX16), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31226*/        OPC_EmitInteger, MVT::i32, 1, 
/* 31229*/        OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                      MVT::i32, 1/*#Ops*/, 3,  // Results = #4
/* 31236*/        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] }))
/* 31244*/      /*Scope*/ 61|128,7/*957*/, /*->32203*/
/* 31246*/        OPC_RecordChild1, // #1 = $imm16
/* 31247*/        OPC_Scope, 106|128,1/*234*/, /*->31484*/ // 2 children in Scope
/* 31250*/          OPC_MoveChild1,
/* 31251*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 31254*/          OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 31256*/          OPC_MoveParent,
/* 31257*/          OPC_MoveChild2,
/* 31258*/          OPC_Scope, 17, /*->31277*/ // 10 children in Scope
/* 31260*/            OPC_CheckCondCode, ISD::SETLT,
/* 31262*/            OPC_MoveParent,
/* 31263*/            OPC_CheckType, MVT::i32,
/* 31265*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31267*/            OPC_EmitConvertToTarget, 1,
/* 31269*/            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)
/* 31277*/          /*Scope*/ 17, /*->31295*/
/* 31278*/            OPC_CheckCondCode, ISD::SETULT,
/* 31280*/            OPC_MoveParent,
/* 31281*/            OPC_CheckType, MVT::i32,
/* 31283*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31285*/            OPC_EmitConvertToTarget, 1,
/* 31287*/            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)
/* 31295*/          /*Scope*/ 17, /*->31313*/
/* 31296*/            OPC_CheckCondCode, ISD::SETLT,
/* 31298*/            OPC_MoveParent,
/* 31299*/            OPC_CheckType, MVT::i32,
/* 31301*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31303*/            OPC_EmitConvertToTarget, 1,
/* 31305*/            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)
/* 31313*/          /*Scope*/ 17, /*->31331*/
/* 31314*/            OPC_CheckCondCode, ISD::SETULT,
/* 31316*/            OPC_MoveParent,
/* 31317*/            OPC_CheckType, MVT::i32,
/* 31319*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31321*/            OPC_EmitConvertToTarget, 1,
/* 31323*/            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)
/* 31331*/          /*Scope*/ 28, /*->31360*/
/* 31332*/            OPC_CheckCondCode, ISD::SETGE,
/* 31334*/            OPC_MoveParent,
/* 31335*/            OPC_CheckType, MVT::i32,
/* 31337*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31339*/            OPC_EmitConvertToTarget, 1,
/* 31341*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 31349*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31352*/            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] })
/* 31360*/          /*Scope*/ 28, /*->31389*/
/* 31361*/            OPC_CheckCondCode, ISD::SETUGE,
/* 31363*/            OPC_MoveParent,
/* 31364*/            OPC_CheckType, MVT::i32,
/* 31366*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31368*/            OPC_EmitConvertToTarget, 1,
/* 31370*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 31378*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31381*/            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] })
/* 31389*/          /*Scope*/ 28, /*->31418*/
/* 31390*/            OPC_CheckCondCode, ISD::SETGE,
/* 31392*/            OPC_MoveParent,
/* 31393*/            OPC_CheckType, MVT::i32,
/* 31395*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31397*/            OPC_EmitConvertToTarget, 1,
/* 31399*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 31407*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31410*/            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] })
/* 31418*/          /*Scope*/ 28, /*->31447*/
/* 31419*/            OPC_CheckCondCode, ISD::SETUGE,
/* 31421*/            OPC_MoveParent,
/* 31422*/            OPC_CheckType, MVT::i32,
/* 31424*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31426*/            OPC_EmitConvertToTarget, 1,
/* 31428*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 31436*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31439*/            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] })
/* 31447*/          /*Scope*/ 17, /*->31465*/
/* 31448*/            OPC_CheckCondCode, ISD::SETLT,
/* 31450*/            OPC_MoveParent,
/* 31451*/            OPC_CheckType, MVT::i32,
/* 31453*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31455*/            OPC_EmitConvertToTarget, 1,
/* 31457*/            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)
/* 31465*/          /*Scope*/ 17, /*->31483*/
/* 31466*/            OPC_CheckCondCode, ISD::SETULT,
/* 31468*/            OPC_MoveParent,
/* 31469*/            OPC_CheckType, MVT::i32,
/* 31471*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31473*/            OPC_EmitConvertToTarget, 1,
/* 31475*/            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)
/* 31483*/          0, /*End of Scope*/
/* 31484*/        /*Scope*/ 76|128,5/*716*/, /*->32202*/
/* 31486*/          OPC_MoveChild2,
/* 31487*/          OPC_Scope, 15, /*->31504*/ // 30 children in Scope
/* 31489*/            OPC_CheckCondCode, ISD::SETLT,
/* 31491*/            OPC_MoveParent,
/* 31492*/            OPC_CheckType, MVT::i32,
/* 31494*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31496*/            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)
/* 31504*/          /*Scope*/ 15, /*->31520*/
/* 31505*/            OPC_CheckCondCode, ISD::SETULT,
/* 31507*/            OPC_MoveParent,
/* 31508*/            OPC_CheckType, MVT::i32,
/* 31510*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31512*/            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)
/* 31520*/          /*Scope*/ 15, /*->31536*/
/* 31521*/            OPC_CheckCondCode, ISD::SETGT,
/* 31523*/            OPC_MoveParent,
/* 31524*/            OPC_CheckType, MVT::i32,
/* 31526*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31528*/            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)
/* 31536*/          /*Scope*/ 15, /*->31552*/
/* 31537*/            OPC_CheckCondCode, ISD::SETUGT,
/* 31539*/            OPC_MoveParent,
/* 31540*/            OPC_CheckType, MVT::i32,
/* 31542*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31544*/            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)
/* 31552*/          /*Scope*/ 15, /*->31568*/
/* 31553*/            OPC_CheckCondCode, ISD::SETLT,
/* 31555*/            OPC_MoveParent,
/* 31556*/            OPC_CheckType, MVT::i32,
/* 31558*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31560*/            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)
/* 31568*/          /*Scope*/ 15, /*->31584*/
/* 31569*/            OPC_CheckCondCode, ISD::SETULT,
/* 31571*/            OPC_MoveParent,
/* 31572*/            OPC_CheckType, MVT::i32,
/* 31574*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31576*/            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)
/* 31584*/          /*Scope*/ 15, /*->31600*/
/* 31585*/            OPC_CheckCondCode, ISD::SETGT,
/* 31587*/            OPC_MoveParent,
/* 31588*/            OPC_CheckType, MVT::i32,
/* 31590*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31592*/            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)
/* 31600*/          /*Scope*/ 15, /*->31616*/
/* 31601*/            OPC_CheckCondCode, ISD::SETUGT,
/* 31603*/            OPC_MoveParent,
/* 31604*/            OPC_CheckType, MVT::i32,
/* 31606*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31608*/            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)
/* 31616*/          /*Scope*/ 26, /*->31643*/
/* 31617*/            OPC_CheckCondCode, ISD::SETEQ,
/* 31619*/            OPC_MoveParent,
/* 31620*/            OPC_CheckType, MVT::i32,
/* 31622*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31624*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31632*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31635*/            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] })
/* 31643*/          /*Scope*/ 26, /*->31670*/
/* 31644*/            OPC_CheckCondCode, ISD::SETNE,
/* 31646*/            OPC_MoveParent,
/* 31647*/            OPC_CheckType, MVT::i32,
/* 31649*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31651*/            OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 31654*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 31662*/            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))
/* 31670*/          /*Scope*/ 26, /*->31697*/
/* 31671*/            OPC_CheckCondCode, ISD::SETLE,
/* 31673*/            OPC_MoveParent,
/* 31674*/            OPC_CheckType, MVT::i32,
/* 31676*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31678*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31686*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31689*/            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] })
/* 31697*/          /*Scope*/ 26, /*->31724*/
/* 31698*/            OPC_CheckCondCode, ISD::SETULE,
/* 31700*/            OPC_MoveParent,
/* 31701*/            OPC_CheckType, MVT::i32,
/* 31703*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31705*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31713*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31716*/            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] })
/* 31724*/          /*Scope*/ 26, /*->31751*/
/* 31725*/            OPC_CheckCondCode, ISD::SETGE,
/* 31727*/            OPC_MoveParent,
/* 31728*/            OPC_CheckType, MVT::i32,
/* 31730*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31732*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31740*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31743*/            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] })
/* 31751*/          /*Scope*/ 26, /*->31778*/
/* 31752*/            OPC_CheckCondCode, ISD::SETUGE,
/* 31754*/            OPC_MoveParent,
/* 31755*/            OPC_CheckType, MVT::i32,
/* 31757*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31759*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31767*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31770*/            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] })
/* 31778*/          /*Scope*/ 26, /*->31805*/
/* 31779*/            OPC_CheckCondCode, ISD::SETEQ,
/* 31781*/            OPC_MoveParent,
/* 31782*/            OPC_CheckType, MVT::i32,
/* 31784*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31786*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31794*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31797*/            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] })
/* 31805*/          /*Scope*/ 26, /*->31832*/
/* 31806*/            OPC_CheckCondCode, ISD::SETNE,
/* 31808*/            OPC_MoveParent,
/* 31809*/            OPC_CheckType, MVT::i32,
/* 31811*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31813*/            OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 31816*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 31824*/            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))
/* 31832*/          /*Scope*/ 26, /*->31859*/
/* 31833*/            OPC_CheckCondCode, ISD::SETLE,
/* 31835*/            OPC_MoveParent,
/* 31836*/            OPC_CheckType, MVT::i32,
/* 31838*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31840*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31848*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31851*/            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] })
/* 31859*/          /*Scope*/ 26, /*->31886*/
/* 31860*/            OPC_CheckCondCode, ISD::SETULE,
/* 31862*/            OPC_MoveParent,
/* 31863*/            OPC_CheckType, MVT::i32,
/* 31865*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31867*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31875*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31878*/            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] })
/* 31886*/          /*Scope*/ 26, /*->31913*/
/* 31887*/            OPC_CheckCondCode, ISD::SETGE,
/* 31889*/            OPC_MoveParent,
/* 31890*/            OPC_CheckType, MVT::i32,
/* 31892*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31894*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31902*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31905*/            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] })
/* 31913*/          /*Scope*/ 26, /*->31940*/
/* 31914*/            OPC_CheckCondCode, ISD::SETUGE,
/* 31916*/            OPC_MoveParent,
/* 31917*/            OPC_CheckType, MVT::i32,
/* 31919*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31921*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31929*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31932*/            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] })
/* 31940*/          /*Scope*/ 15, /*->31956*/
/* 31941*/            OPC_CheckCondCode, ISD::SETGT,
/* 31943*/            OPC_MoveParent,
/* 31944*/            OPC_CheckType, MVT::i32,
/* 31946*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31948*/            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)
/* 31956*/          /*Scope*/ 15, /*->31972*/
/* 31957*/            OPC_CheckCondCode, ISD::SETLT,
/* 31959*/            OPC_MoveParent,
/* 31960*/            OPC_CheckType, MVT::i32,
/* 31962*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31964*/            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)
/* 31972*/          /*Scope*/ 15, /*->31988*/
/* 31973*/            OPC_CheckCondCode, ISD::SETUGT,
/* 31975*/            OPC_MoveParent,
/* 31976*/            OPC_CheckType, MVT::i32,
/* 31978*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31980*/            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)
/* 31988*/          /*Scope*/ 15, /*->32004*/
/* 31989*/            OPC_CheckCondCode, ISD::SETULT,
/* 31991*/            OPC_MoveParent,
/* 31992*/            OPC_CheckType, MVT::i32,
/* 31994*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31996*/            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)
/* 32004*/          /*Scope*/ 26, /*->32031*/
/* 32005*/            OPC_CheckCondCode, ISD::SETEQ,
/* 32007*/            OPC_MoveParent,
/* 32008*/            OPC_CheckType, MVT::i32,
/* 32010*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 32012*/            OPC_EmitNode1, TARGET_VAL(Mips::XorRxRxRy16), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32020*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32023*/            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] })
/* 32031*/          /*Scope*/ 33, /*->32065*/
/* 32032*/            OPC_CheckCondCode, ISD::SETGE,
/* 32034*/            OPC_MoveParent,
/* 32035*/            OPC_CheckType, MVT::i32,
/* 32037*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 32039*/            OPC_EmitNode1, TARGET_VAL(Mips::SltCCRxRy16), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32047*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32050*/            OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                          MVT::i32, 1/*#Ops*/, 3,  // Results = #4
/* 32057*/            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] }))
/* 32065*/          /*Scope*/ 33, /*->32099*/
/* 32066*/            OPC_CheckCondCode, ISD::SETLE,
/* 32068*/            OPC_MoveParent,
/* 32069*/            OPC_CheckType, MVT::i32,
/* 32071*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 32073*/            OPC_EmitNode1, TARGET_VAL(Mips::SltCCRxRy16), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 32081*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32084*/            OPC_EmitNode1, TARGET_VAL(Mips::LiRxImm16), 0,
                          MVT::i32, 1/*#Ops*/, 3,  // Results = #4
/* 32091*/            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] }))
/* 32099*/          /*Scope*/ 33, /*->32133*/
/* 32100*/            OPC_CheckCondCode, ISD::SETNE,
/* 32102*/            OPC_MoveParent,
/* 32103*/            OPC_CheckType, MVT::i32,
/* 32105*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 32107*/            OPC_EmitInteger, MVT::i32, 0, 
/* 32110*/            OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                          MVT::i32, 1/*#Ops*/, 2,  // Results = #3
/* 32117*/            OPC_EmitNode1, TARGET_VAL(Mips::XorRxRxRy16), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 32125*/            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))
/* 32133*/          /*Scope*/ 33, /*->32167*/
/* 32134*/            OPC_CheckCondCode, ISD::SETUGE,
/* 32136*/            OPC_MoveParent,
/* 32137*/            OPC_CheckType, MVT::i32,
/* 32139*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 32141*/            OPC_EmitNode1, TARGET_VAL(Mips::SltuCCRxRy16), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32149*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32152*/            OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                          MVT::i32, 1/*#Ops*/, 3,  // Results = #4
/* 32159*/            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] }))
/* 32167*/          /*Scope*/ 33, /*->32201*/
/* 32168*/            OPC_CheckCondCode, ISD::SETULE,
/* 32170*/            OPC_MoveParent,
/* 32171*/            OPC_CheckType, MVT::i32,
/* 32173*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 32175*/            OPC_EmitNode1, TARGET_VAL(Mips::SltuCCRxRy16), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 32183*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32186*/            OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                          MVT::i32, 1/*#Ops*/, 3,  // Results = #4
/* 32193*/            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] }))
/* 32201*/          0, /*End of Scope*/
/* 32202*/        0, /*End of Scope*/
/* 32203*/      0, /*End of Scope*/
/* 32204*/    /*Scope*/ 7|128,3/*391*/, /*->32597*/
/* 32206*/      OPC_CheckChild0Type, MVT::i64,
/* 32208*/      OPC_Scope, 44, /*->32254*/ // 2 children in Scope
/* 32210*/        OPC_CheckChild1Integer, 0, 
/* 32212*/        OPC_MoveChild2,
/* 32213*/        OPC_Scope, 18, /*->32233*/ // 2 children in Scope
/* 32215*/          OPC_CheckCondCode, ISD::SETEQ,
/* 32217*/          OPC_MoveParent,
/* 32218*/          OPC_CheckType, MVT::i32,
/* 32220*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32222*/          OPC_EmitInteger, MVT::i64, 1, 
/* 32225*/          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] })
/* 32233*/        /*Scope*/ 19, /*->32253*/
/* 32234*/          OPC_CheckCondCode, ISD::SETNE,
/* 32236*/          OPC_MoveParent,
/* 32237*/          OPC_CheckType, MVT::i32,
/* 32239*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32241*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 32245*/          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)
/* 32253*/        0, /*End of Scope*/
/* 32254*/      /*Scope*/ 84|128,2/*340*/, /*->32596*/
/* 32256*/        OPC_RecordChild1, // #1 = $imm16
/* 32257*/        OPC_Scope, 104, /*->32363*/ // 2 children in Scope
/* 32259*/          OPC_MoveChild1,
/* 32260*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 32263*/          OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 32265*/          OPC_MoveParent,
/* 32266*/          OPC_MoveChild2,
/* 32267*/          OPC_Scope, 17, /*->32286*/ // 4 children in Scope
/* 32269*/            OPC_CheckCondCode, ISD::SETLT,
/* 32271*/            OPC_MoveParent,
/* 32272*/            OPC_CheckType, MVT::i32,
/* 32274*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 32276*/            OPC_EmitConvertToTarget, 1,
/* 32278*/            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)
/* 32286*/          /*Scope*/ 17, /*->32304*/
/* 32287*/            OPC_CheckCondCode, ISD::SETULT,
/* 32289*/            OPC_MoveParent,
/* 32290*/            OPC_CheckType, MVT::i32,
/* 32292*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 32294*/            OPC_EmitConvertToTarget, 1,
/* 32296*/            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)
/* 32304*/          /*Scope*/ 28, /*->32333*/
/* 32305*/            OPC_CheckCondCode, ISD::SETGE,
/* 32307*/            OPC_MoveParent,
/* 32308*/            OPC_CheckType, MVT::i32,
/* 32310*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32312*/            OPC_EmitConvertToTarget, 1,
/* 32314*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 32322*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32325*/            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] })
/* 32333*/          /*Scope*/ 28, /*->32362*/
/* 32334*/            OPC_CheckCondCode, ISD::SETUGE,
/* 32336*/            OPC_MoveParent,
/* 32337*/            OPC_CheckType, MVT::i32,
/* 32339*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32341*/            OPC_EmitConvertToTarget, 1,
/* 32343*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 32351*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32354*/            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] })
/* 32362*/          0, /*End of Scope*/
/* 32363*/        /*Scope*/ 102|128,1/*230*/, /*->32595*/
/* 32365*/          OPC_MoveChild2,
/* 32366*/          OPC_Scope, 15, /*->32383*/ // 10 children in Scope
/* 32368*/            OPC_CheckCondCode, ISD::SETLT,
/* 32370*/            OPC_MoveParent,
/* 32371*/            OPC_CheckType, MVT::i32,
/* 32373*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 32375*/            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)
/* 32383*/          /*Scope*/ 15, /*->32399*/
/* 32384*/            OPC_CheckCondCode, ISD::SETULT,
/* 32386*/            OPC_MoveParent,
/* 32387*/            OPC_CheckType, MVT::i32,
/* 32389*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 32391*/            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)
/* 32399*/          /*Scope*/ 15, /*->32415*/
/* 32400*/            OPC_CheckCondCode, ISD::SETGT,
/* 32402*/            OPC_MoveParent,
/* 32403*/            OPC_CheckType, MVT::i32,
/* 32405*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32407*/            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)
/* 32415*/          /*Scope*/ 15, /*->32431*/
/* 32416*/            OPC_CheckCondCode, ISD::SETUGT,
/* 32418*/            OPC_MoveParent,
/* 32419*/            OPC_CheckType, MVT::i32,
/* 32421*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32423*/            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)
/* 32431*/          /*Scope*/ 26, /*->32458*/
/* 32432*/            OPC_CheckCondCode, ISD::SETEQ,
/* 32434*/            OPC_MoveParent,
/* 32435*/            OPC_CheckType, MVT::i32,
/* 32437*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32439*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32447*/            OPC_EmitInteger, MVT::i64, 1, 
/* 32450*/            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] })
/* 32458*/          /*Scope*/ 27, /*->32486*/
/* 32459*/            OPC_CheckCondCode, ISD::SETNE,
/* 32461*/            OPC_MoveParent,
/* 32462*/            OPC_CheckType, MVT::i32,
/* 32464*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32466*/            OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 32470*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #3
/* 32478*/            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))
/* 32486*/          /*Scope*/ 26, /*->32513*/
/* 32487*/            OPC_CheckCondCode, ISD::SETLE,
/* 32489*/            OPC_MoveParent,
/* 32490*/            OPC_CheckType, MVT::i32,
/* 32492*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32494*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 32502*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32505*/            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] })
/* 32513*/          /*Scope*/ 26, /*->32540*/
/* 32514*/            OPC_CheckCondCode, ISD::SETULE,
/* 32516*/            OPC_MoveParent,
/* 32517*/            OPC_CheckType, MVT::i32,
/* 32519*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32521*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 32529*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32532*/            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] })
/* 32540*/          /*Scope*/ 26, /*->32567*/
/* 32541*/            OPC_CheckCondCode, ISD::SETGE,
/* 32543*/            OPC_MoveParent,
/* 32544*/            OPC_CheckType, MVT::i32,
/* 32546*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32548*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32556*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32559*/            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] })
/* 32567*/          /*Scope*/ 26, /*->32594*/
/* 32568*/            OPC_CheckCondCode, ISD::SETUGE,
/* 32570*/            OPC_MoveParent,
/* 32571*/            OPC_CheckType, MVT::i32,
/* 32573*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32575*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32583*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32586*/            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] })
/* 32594*/          0, /*End of Scope*/
/* 32595*/        0, /*End of Scope*/
/* 32596*/      0, /*End of Scope*/
/* 32597*/    /*Scope*/ 94|128,4/*606*/, /*->33205*/
/* 32599*/      OPC_CheckChild0Type, MVT::f32,
/* 32601*/      OPC_RecordChild1, // #1 = $ft
/* 32602*/      OPC_MoveChild2,
/* 32603*/      OPC_Scope, 15, /*->32620*/ // 32 children in Scope
/* 32605*/        OPC_CheckCondCode, ISD::SETUO,
/* 32607*/        OPC_MoveParent,
/* 32608*/        OPC_CheckType, MVT::i32,
/* 32610*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32612*/        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)
/* 32620*/      /*Scope*/ 15, /*->32636*/
/* 32621*/        OPC_CheckCondCode, ISD::SETOEQ,
/* 32623*/        OPC_MoveParent,
/* 32624*/        OPC_CheckType, MVT::i32,
/* 32626*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32628*/        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)
/* 32636*/      /*Scope*/ 15, /*->32652*/
/* 32637*/        OPC_CheckCondCode, ISD::SETUEQ,
/* 32639*/        OPC_MoveParent,
/* 32640*/        OPC_CheckType, MVT::i32,
/* 32642*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32644*/        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)
/* 32652*/      /*Scope*/ 15, /*->32668*/
/* 32653*/        OPC_CheckCondCode, ISD::SETOLT,
/* 32655*/        OPC_MoveParent,
/* 32656*/        OPC_CheckType, MVT::i32,
/* 32658*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32660*/        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)
/* 32668*/      /*Scope*/ 15, /*->32684*/
/* 32669*/        OPC_CheckCondCode, ISD::SETULT,
/* 32671*/        OPC_MoveParent,
/* 32672*/        OPC_CheckType, MVT::i32,
/* 32674*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32676*/        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)
/* 32684*/      /*Scope*/ 15, /*->32700*/
/* 32685*/        OPC_CheckCondCode, ISD::SETOLE,
/* 32687*/        OPC_MoveParent,
/* 32688*/        OPC_CheckType, MVT::i32,
/* 32690*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32692*/        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)
/* 32700*/      /*Scope*/ 15, /*->32716*/
/* 32701*/        OPC_CheckCondCode, ISD::SETULE,
/* 32703*/        OPC_MoveParent,
/* 32704*/        OPC_CheckType, MVT::i32,
/* 32706*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32708*/        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)
/* 32716*/      /*Scope*/ 15, /*->32732*/
/* 32717*/        OPC_CheckCondCode, ISD::SETEQ,
/* 32719*/        OPC_MoveParent,
/* 32720*/        OPC_CheckType, MVT::i32,
/* 32722*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32724*/        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)
/* 32732*/      /*Scope*/ 15, /*->32748*/
/* 32733*/        OPC_CheckCondCode, ISD::SETGT,
/* 32735*/        OPC_MoveParent,
/* 32736*/        OPC_CheckType, MVT::i32,
/* 32738*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32740*/        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)
/* 32748*/      /*Scope*/ 15, /*->32764*/
/* 32749*/        OPC_CheckCondCode, ISD::SETGE,
/* 32751*/        OPC_MoveParent,
/* 32752*/        OPC_CheckType, MVT::i32,
/* 32754*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32756*/        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)
/* 32764*/      /*Scope*/ 15, /*->32780*/
/* 32765*/        OPC_CheckCondCode, ISD::SETLT,
/* 32767*/        OPC_MoveParent,
/* 32768*/        OPC_CheckType, MVT::i32,
/* 32770*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32772*/        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)
/* 32780*/      /*Scope*/ 15, /*->32796*/
/* 32781*/        OPC_CheckCondCode, ISD::SETLE,
/* 32783*/        OPC_MoveParent,
/* 32784*/        OPC_CheckType, MVT::i32,
/* 32786*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32788*/        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)
/* 32796*/      /*Scope*/ 15, /*->32812*/
/* 32797*/        OPC_CheckCondCode, ISD::SETUO,
/* 32799*/        OPC_MoveParent,
/* 32800*/        OPC_CheckType, MVT::i32,
/* 32802*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32804*/        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)
/* 32812*/      /*Scope*/ 15, /*->32828*/
/* 32813*/        OPC_CheckCondCode, ISD::SETOEQ,
/* 32815*/        OPC_MoveParent,
/* 32816*/        OPC_CheckType, MVT::i32,
/* 32818*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32820*/        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)
/* 32828*/      /*Scope*/ 15, /*->32844*/
/* 32829*/        OPC_CheckCondCode, ISD::SETUEQ,
/* 32831*/        OPC_MoveParent,
/* 32832*/        OPC_CheckType, MVT::i32,
/* 32834*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32836*/        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)
/* 32844*/      /*Scope*/ 15, /*->32860*/
/* 32845*/        OPC_CheckCondCode, ISD::SETOLT,
/* 32847*/        OPC_MoveParent,
/* 32848*/        OPC_CheckType, MVT::i32,
/* 32850*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32852*/        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)
/* 32860*/      /*Scope*/ 15, /*->32876*/
/* 32861*/        OPC_CheckCondCode, ISD::SETULT,
/* 32863*/        OPC_MoveParent,
/* 32864*/        OPC_CheckType, MVT::i32,
/* 32866*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32868*/        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)
/* 32876*/      /*Scope*/ 15, /*->32892*/
/* 32877*/        OPC_CheckCondCode, ISD::SETOLE,
/* 32879*/        OPC_MoveParent,
/* 32880*/        OPC_CheckType, MVT::i32,
/* 32882*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32884*/        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)
/* 32892*/      /*Scope*/ 15, /*->32908*/
/* 32893*/        OPC_CheckCondCode, ISD::SETULE,
/* 32895*/        OPC_MoveParent,
/* 32896*/        OPC_CheckType, MVT::i32,
/* 32898*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32900*/        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)
/* 32908*/      /*Scope*/ 15, /*->32924*/
/* 32909*/        OPC_CheckCondCode, ISD::SETEQ,
/* 32911*/        OPC_MoveParent,
/* 32912*/        OPC_CheckType, MVT::i32,
/* 32914*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32916*/        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)
/* 32924*/      /*Scope*/ 15, /*->32940*/
/* 32925*/        OPC_CheckCondCode, ISD::SETGT,
/* 32927*/        OPC_MoveParent,
/* 32928*/        OPC_CheckType, MVT::i32,
/* 32930*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32932*/        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)
/* 32940*/      /*Scope*/ 15, /*->32956*/
/* 32941*/        OPC_CheckCondCode, ISD::SETGE,
/* 32943*/        OPC_MoveParent,
/* 32944*/        OPC_CheckType, MVT::i32,
/* 32946*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32948*/        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)
/* 32956*/      /*Scope*/ 15, /*->32972*/
/* 32957*/        OPC_CheckCondCode, ISD::SETLT,
/* 32959*/        OPC_MoveParent,
/* 32960*/        OPC_CheckType, MVT::i32,
/* 32962*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32964*/        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)
/* 32972*/      /*Scope*/ 15, /*->32988*/
/* 32973*/        OPC_CheckCondCode, ISD::SETLE,
/* 32975*/        OPC_MoveParent,
/* 32976*/        OPC_CheckType, MVT::i32,
/* 32978*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32980*/        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)
/* 32988*/      /*Scope*/ 26, /*->33015*/
/* 32989*/        OPC_CheckCondCode, ISD::SETONE,
/* 32991*/        OPC_MoveParent,
/* 32992*/        OPC_CheckType, MVT::i32,
/* 32994*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32996*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UEQ_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33004*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33007*/        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] })
/* 33015*/      /*Scope*/ 26, /*->33042*/
/* 33016*/        OPC_CheckCondCode, ISD::SETO,
/* 33018*/        OPC_MoveParent,
/* 33019*/        OPC_CheckType, MVT::i32,
/* 33021*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33023*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UN_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33031*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33034*/        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] })
/* 33042*/      /*Scope*/ 26, /*->33069*/
/* 33043*/        OPC_CheckCondCode, ISD::SETUNE,
/* 33045*/        OPC_MoveParent,
/* 33046*/        OPC_CheckType, MVT::i32,
/* 33048*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33050*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33058*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33061*/        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] })
/* 33069*/      /*Scope*/ 26, /*->33096*/
/* 33070*/        OPC_CheckCondCode, ISD::SETNE,
/* 33072*/        OPC_MoveParent,
/* 33073*/        OPC_CheckType, MVT::i32,
/* 33075*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33077*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33085*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33088*/        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] })
/* 33096*/      /*Scope*/ 26, /*->33123*/
/* 33097*/        OPC_CheckCondCode, ISD::SETONE,
/* 33099*/        OPC_MoveParent,
/* 33100*/        OPC_CheckType, MVT::i32,
/* 33102*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33104*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UEQ_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33112*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33115*/        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] })
/* 33123*/      /*Scope*/ 26, /*->33150*/
/* 33124*/        OPC_CheckCondCode, ISD::SETO,
/* 33126*/        OPC_MoveParent,
/* 33127*/        OPC_CheckType, MVT::i32,
/* 33129*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33131*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UN_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33139*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33142*/        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] })
/* 33150*/      /*Scope*/ 26, /*->33177*/
/* 33151*/        OPC_CheckCondCode, ISD::SETUNE,
/* 33153*/        OPC_MoveParent,
/* 33154*/        OPC_CheckType, MVT::i32,
/* 33156*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33158*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33166*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33169*/        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] })
/* 33177*/      /*Scope*/ 26, /*->33204*/
/* 33178*/        OPC_CheckCondCode, ISD::SETNE,
/* 33180*/        OPC_MoveParent,
/* 33181*/        OPC_CheckType, MVT::i32,
/* 33183*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33185*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33193*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33196*/        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] })
/* 33204*/      0, /*End of Scope*/
/* 33205*/    /*Scope*/ 94|128,4/*606*/, /*->33813*/
/* 33207*/      OPC_CheckChild0Type, MVT::f64,
/* 33209*/      OPC_RecordChild1, // #1 = $ft
/* 33210*/      OPC_MoveChild2,
/* 33211*/      OPC_Scope, 15, /*->33228*/ // 32 children in Scope
/* 33213*/        OPC_CheckCondCode, ISD::SETUO,
/* 33215*/        OPC_MoveParent,
/* 33216*/        OPC_CheckType, MVT::i32,
/* 33218*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 33220*/        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)
/* 33228*/      /*Scope*/ 15, /*->33244*/
/* 33229*/        OPC_CheckCondCode, ISD::SETOEQ,
/* 33231*/        OPC_MoveParent,
/* 33232*/        OPC_CheckType, MVT::i32,
/* 33234*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 33236*/        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)
/* 33244*/      /*Scope*/ 15, /*->33260*/
/* 33245*/        OPC_CheckCondCode, ISD::SETUEQ,
/* 33247*/        OPC_MoveParent,
/* 33248*/        OPC_CheckType, MVT::i32,
/* 33250*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 33252*/        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)
/* 33260*/      /*Scope*/ 15, /*->33276*/
/* 33261*/        OPC_CheckCondCode, ISD::SETOLT,
/* 33263*/        OPC_MoveParent,
/* 33264*/        OPC_CheckType, MVT::i32,
/* 33266*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 33268*/        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)
/* 33276*/      /*Scope*/ 15, /*->33292*/
/* 33277*/        OPC_CheckCondCode, ISD::SETULT,
/* 33279*/        OPC_MoveParent,
/* 33280*/        OPC_CheckType, MVT::i32,
/* 33282*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 33284*/        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)
/* 33292*/      /*Scope*/ 15, /*->33308*/
/* 33293*/        OPC_CheckCondCode, ISD::SETOLE,
/* 33295*/        OPC_MoveParent,
/* 33296*/        OPC_CheckType, MVT::i32,
/* 33298*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 33300*/        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)
/* 33308*/      /*Scope*/ 15, /*->33324*/
/* 33309*/        OPC_CheckCondCode, ISD::SETULE,
/* 33311*/        OPC_MoveParent,
/* 33312*/        OPC_CheckType, MVT::i32,
/* 33314*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 33316*/        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)
/* 33324*/      /*Scope*/ 15, /*->33340*/
/* 33325*/        OPC_CheckCondCode, ISD::SETEQ,
/* 33327*/        OPC_MoveParent,
/* 33328*/        OPC_CheckType, MVT::i32,
/* 33330*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33332*/        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)
/* 33340*/      /*Scope*/ 15, /*->33356*/
/* 33341*/        OPC_CheckCondCode, ISD::SETGT,
/* 33343*/        OPC_MoveParent,
/* 33344*/        OPC_CheckType, MVT::i32,
/* 33346*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33348*/        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)
/* 33356*/      /*Scope*/ 15, /*->33372*/
/* 33357*/        OPC_CheckCondCode, ISD::SETGE,
/* 33359*/        OPC_MoveParent,
/* 33360*/        OPC_CheckType, MVT::i32,
/* 33362*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33364*/        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)
/* 33372*/      /*Scope*/ 15, /*->33388*/
/* 33373*/        OPC_CheckCondCode, ISD::SETLT,
/* 33375*/        OPC_MoveParent,
/* 33376*/        OPC_CheckType, MVT::i32,
/* 33378*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33380*/        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)
/* 33388*/      /*Scope*/ 15, /*->33404*/
/* 33389*/        OPC_CheckCondCode, ISD::SETLE,
/* 33391*/        OPC_MoveParent,
/* 33392*/        OPC_CheckType, MVT::i32,
/* 33394*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33396*/        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)
/* 33404*/      /*Scope*/ 15, /*->33420*/
/* 33405*/        OPC_CheckCondCode, ISD::SETUO,
/* 33407*/        OPC_MoveParent,
/* 33408*/        OPC_CheckType, MVT::i32,
/* 33410*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 33412*/        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)
/* 33420*/      /*Scope*/ 15, /*->33436*/
/* 33421*/        OPC_CheckCondCode, ISD::SETOEQ,
/* 33423*/        OPC_MoveParent,
/* 33424*/        OPC_CheckType, MVT::i32,
/* 33426*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 33428*/        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)
/* 33436*/      /*Scope*/ 15, /*->33452*/
/* 33437*/        OPC_CheckCondCode, ISD::SETUEQ,
/* 33439*/        OPC_MoveParent,
/* 33440*/        OPC_CheckType, MVT::i32,
/* 33442*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 33444*/        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)
/* 33452*/      /*Scope*/ 15, /*->33468*/
/* 33453*/        OPC_CheckCondCode, ISD::SETOLT,
/* 33455*/        OPC_MoveParent,
/* 33456*/        OPC_CheckType, MVT::i32,
/* 33458*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 33460*/        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)
/* 33468*/      /*Scope*/ 15, /*->33484*/
/* 33469*/        OPC_CheckCondCode, ISD::SETULT,
/* 33471*/        OPC_MoveParent,
/* 33472*/        OPC_CheckType, MVT::i32,
/* 33474*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 33476*/        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)
/* 33484*/      /*Scope*/ 15, /*->33500*/
/* 33485*/        OPC_CheckCondCode, ISD::SETOLE,
/* 33487*/        OPC_MoveParent,
/* 33488*/        OPC_CheckType, MVT::i32,
/* 33490*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 33492*/        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)
/* 33500*/      /*Scope*/ 15, /*->33516*/
/* 33501*/        OPC_CheckCondCode, ISD::SETULE,
/* 33503*/        OPC_MoveParent,
/* 33504*/        OPC_CheckType, MVT::i32,
/* 33506*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 33508*/        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)
/* 33516*/      /*Scope*/ 15, /*->33532*/
/* 33517*/        OPC_CheckCondCode, ISD::SETEQ,
/* 33519*/        OPC_MoveParent,
/* 33520*/        OPC_CheckType, MVT::i32,
/* 33522*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33524*/        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)
/* 33532*/      /*Scope*/ 15, /*->33548*/
/* 33533*/        OPC_CheckCondCode, ISD::SETGT,
/* 33535*/        OPC_MoveParent,
/* 33536*/        OPC_CheckType, MVT::i32,
/* 33538*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33540*/        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)
/* 33548*/      /*Scope*/ 15, /*->33564*/
/* 33549*/        OPC_CheckCondCode, ISD::SETGE,
/* 33551*/        OPC_MoveParent,
/* 33552*/        OPC_CheckType, MVT::i32,
/* 33554*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33556*/        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)
/* 33564*/      /*Scope*/ 15, /*->33580*/
/* 33565*/        OPC_CheckCondCode, ISD::SETLT,
/* 33567*/        OPC_MoveParent,
/* 33568*/        OPC_CheckType, MVT::i32,
/* 33570*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33572*/        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)
/* 33580*/      /*Scope*/ 15, /*->33596*/
/* 33581*/        OPC_CheckCondCode, ISD::SETLE,
/* 33583*/        OPC_MoveParent,
/* 33584*/        OPC_CheckType, MVT::i32,
/* 33586*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33588*/        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)
/* 33596*/      /*Scope*/ 26, /*->33623*/
/* 33597*/        OPC_CheckCondCode, ISD::SETONE,
/* 33599*/        OPC_MoveParent,
/* 33600*/        OPC_CheckType, MVT::i32,
/* 33602*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33604*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UEQ_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33612*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33615*/        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] })
/* 33623*/      /*Scope*/ 26, /*->33650*/
/* 33624*/        OPC_CheckCondCode, ISD::SETO,
/* 33626*/        OPC_MoveParent,
/* 33627*/        OPC_CheckType, MVT::i32,
/* 33629*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33631*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UN_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33639*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33642*/        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] })
/* 33650*/      /*Scope*/ 26, /*->33677*/
/* 33651*/        OPC_CheckCondCode, ISD::SETUNE,
/* 33653*/        OPC_MoveParent,
/* 33654*/        OPC_CheckType, MVT::i32,
/* 33656*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33658*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33666*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33669*/        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] })
/* 33677*/      /*Scope*/ 26, /*->33704*/
/* 33678*/        OPC_CheckCondCode, ISD::SETNE,
/* 33680*/        OPC_MoveParent,
/* 33681*/        OPC_CheckType, MVT::i32,
/* 33683*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33685*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33693*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33696*/        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] })
/* 33704*/      /*Scope*/ 26, /*->33731*/
/* 33705*/        OPC_CheckCondCode, ISD::SETONE,
/* 33707*/        OPC_MoveParent,
/* 33708*/        OPC_CheckType, MVT::i32,
/* 33710*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33712*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UEQ_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33720*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33723*/        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] })
/* 33731*/      /*Scope*/ 26, /*->33758*/
/* 33732*/        OPC_CheckCondCode, ISD::SETO,
/* 33734*/        OPC_MoveParent,
/* 33735*/        OPC_CheckType, MVT::i32,
/* 33737*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33739*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UN_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33747*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33750*/        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] })
/* 33758*/      /*Scope*/ 26, /*->33785*/
/* 33759*/        OPC_CheckCondCode, ISD::SETUNE,
/* 33761*/        OPC_MoveParent,
/* 33762*/        OPC_CheckType, MVT::i32,
/* 33764*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33766*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33774*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33777*/        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] })
/* 33785*/      /*Scope*/ 26, /*->33812*/
/* 33786*/        OPC_CheckCondCode, ISD::SETNE,
/* 33788*/        OPC_MoveParent,
/* 33789*/        OPC_CheckType, MVT::i32,
/* 33791*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33793*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33801*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33804*/        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] })
/* 33812*/      0, /*End of Scope*/
/* 33813*/    /*Scope*/ 53|128,1/*181*/, /*->33996*/
/* 33815*/      OPC_CheckChild0Type, MVT::v16i8,
/* 33817*/      OPC_RecordChild1, // #1 = $imm
/* 33818*/      OPC_MoveChild2,
/* 33819*/      OPC_Scope, 18, /*->33839*/ // 10 children in Scope
/* 33821*/        OPC_CheckCondCode, ISD::SETEQ,
/* 33823*/        OPC_MoveParent,
/* 33824*/        OPC_CheckType, MVT::v16i8,
/* 33826*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33828*/        OPC_CheckComplexPat, /*CP*/20, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33831*/        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)
/* 33839*/      /*Scope*/ 18, /*->33858*/
/* 33840*/        OPC_CheckCondCode, ISD::SETLE,
/* 33842*/        OPC_MoveParent,
/* 33843*/        OPC_CheckType, MVT::v16i8,
/* 33845*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33847*/        OPC_CheckComplexPat, /*CP*/20, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33850*/        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)
/* 33858*/      /*Scope*/ 18, /*->33877*/
/* 33859*/        OPC_CheckCondCode, ISD::SETULE,
/* 33861*/        OPC_MoveParent,
/* 33862*/        OPC_CheckType, MVT::v16i8,
/* 33864*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33866*/        OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 33869*/        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)
/* 33877*/      /*Scope*/ 18, /*->33896*/
/* 33878*/        OPC_CheckCondCode, ISD::SETLT,
/* 33880*/        OPC_MoveParent,
/* 33881*/        OPC_CheckType, MVT::v16i8,
/* 33883*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33885*/        OPC_CheckComplexPat, /*CP*/20, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33888*/        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)
/* 33896*/      /*Scope*/ 18, /*->33915*/
/* 33897*/        OPC_CheckCondCode, ISD::SETULT,
/* 33899*/        OPC_MoveParent,
/* 33900*/        OPC_CheckType, MVT::v16i8,
/* 33902*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33904*/        OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 33907*/        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)
/* 33915*/      /*Scope*/ 15, /*->33931*/
/* 33916*/        OPC_CheckCondCode, ISD::SETEQ,
/* 33918*/        OPC_MoveParent,
/* 33919*/        OPC_CheckType, MVT::v16i8,
/* 33921*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33923*/        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)
/* 33931*/      /*Scope*/ 15, /*->33947*/
/* 33932*/        OPC_CheckCondCode, ISD::SETLE,
/* 33934*/        OPC_MoveParent,
/* 33935*/        OPC_CheckType, MVT::v16i8,
/* 33937*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33939*/        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)
/* 33947*/      /*Scope*/ 15, /*->33963*/
/* 33948*/        OPC_CheckCondCode, ISD::SETULE,
/* 33950*/        OPC_MoveParent,
/* 33951*/        OPC_CheckType, MVT::v16i8,
/* 33953*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33955*/        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)
/* 33963*/      /*Scope*/ 15, /*->33979*/
/* 33964*/        OPC_CheckCondCode, ISD::SETLT,
/* 33966*/        OPC_MoveParent,
/* 33967*/        OPC_CheckType, MVT::v16i8,
/* 33969*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33971*/        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)
/* 33979*/      /*Scope*/ 15, /*->33995*/
/* 33980*/        OPC_CheckCondCode, ISD::SETULT,
/* 33982*/        OPC_MoveParent,
/* 33983*/        OPC_CheckType, MVT::v16i8,
/* 33985*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33987*/        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)
/* 33995*/      0, /*End of Scope*/
/* 33996*/    /*Scope*/ 53|128,1/*181*/, /*->34179*/
/* 33998*/      OPC_CheckChild0Type, MVT::v8i16,
/* 34000*/      OPC_RecordChild1, // #1 = $imm
/* 34001*/      OPC_MoveChild2,
/* 34002*/      OPC_Scope, 18, /*->34022*/ // 10 children in Scope
/* 34004*/        OPC_CheckCondCode, ISD::SETEQ,
/* 34006*/        OPC_MoveParent,
/* 34007*/        OPC_CheckType, MVT::v8i16,
/* 34009*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34011*/        OPC_CheckComplexPat, /*CP*/21, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34014*/        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)
/* 34022*/      /*Scope*/ 18, /*->34041*/
/* 34023*/        OPC_CheckCondCode, ISD::SETLE,
/* 34025*/        OPC_MoveParent,
/* 34026*/        OPC_CheckType, MVT::v8i16,
/* 34028*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34030*/        OPC_CheckComplexPat, /*CP*/21, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34033*/        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)
/* 34041*/      /*Scope*/ 18, /*->34060*/
/* 34042*/        OPC_CheckCondCode, ISD::SETULE,
/* 34044*/        OPC_MoveParent,
/* 34045*/        OPC_CheckType, MVT::v8i16,
/* 34047*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34049*/        OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34052*/        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)
/* 34060*/      /*Scope*/ 18, /*->34079*/
/* 34061*/        OPC_CheckCondCode, ISD::SETLT,
/* 34063*/        OPC_MoveParent,
/* 34064*/        OPC_CheckType, MVT::v8i16,
/* 34066*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34068*/        OPC_CheckComplexPat, /*CP*/21, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34071*/        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)
/* 34079*/      /*Scope*/ 18, /*->34098*/
/* 34080*/        OPC_CheckCondCode, ISD::SETULT,
/* 34082*/        OPC_MoveParent,
/* 34083*/        OPC_CheckType, MVT::v8i16,
/* 34085*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34087*/        OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34090*/        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)
/* 34098*/      /*Scope*/ 15, /*->34114*/
/* 34099*/        OPC_CheckCondCode, ISD::SETEQ,
/* 34101*/        OPC_MoveParent,
/* 34102*/        OPC_CheckType, MVT::v8i16,
/* 34104*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34106*/        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)
/* 34114*/      /*Scope*/ 15, /*->34130*/
/* 34115*/        OPC_CheckCondCode, ISD::SETLE,
/* 34117*/        OPC_MoveParent,
/* 34118*/        OPC_CheckType, MVT::v8i16,
/* 34120*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34122*/        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)
/* 34130*/      /*Scope*/ 15, /*->34146*/
/* 34131*/        OPC_CheckCondCode, ISD::SETULE,
/* 34133*/        OPC_MoveParent,
/* 34134*/        OPC_CheckType, MVT::v8i16,
/* 34136*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34138*/        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)
/* 34146*/      /*Scope*/ 15, /*->34162*/
/* 34147*/        OPC_CheckCondCode, ISD::SETLT,
/* 34149*/        OPC_MoveParent,
/* 34150*/        OPC_CheckType, MVT::v8i16,
/* 34152*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34154*/        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)
/* 34162*/      /*Scope*/ 15, /*->34178*/
/* 34163*/        OPC_CheckCondCode, ISD::SETULT,
/* 34165*/        OPC_MoveParent,
/* 34166*/        OPC_CheckType, MVT::v8i16,
/* 34168*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34170*/        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)
/* 34178*/      0, /*End of Scope*/
/* 34179*/    /*Scope*/ 53|128,1/*181*/, /*->34362*/
/* 34181*/      OPC_CheckChild0Type, MVT::v4i32,
/* 34183*/      OPC_RecordChild1, // #1 = $imm
/* 34184*/      OPC_MoveChild2,
/* 34185*/      OPC_Scope, 18, /*->34205*/ // 10 children in Scope
/* 34187*/        OPC_CheckCondCode, ISD::SETEQ,
/* 34189*/        OPC_MoveParent,
/* 34190*/        OPC_CheckType, MVT::v4i32,
/* 34192*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34194*/        OPC_CheckComplexPat, /*CP*/22, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34197*/        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)
/* 34205*/      /*Scope*/ 18, /*->34224*/
/* 34206*/        OPC_CheckCondCode, ISD::SETLE,
/* 34208*/        OPC_MoveParent,
/* 34209*/        OPC_CheckType, MVT::v4i32,
/* 34211*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34213*/        OPC_CheckComplexPat, /*CP*/22, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34216*/        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)
/* 34224*/      /*Scope*/ 18, /*->34243*/
/* 34225*/        OPC_CheckCondCode, ISD::SETULE,
/* 34227*/        OPC_MoveParent,
/* 34228*/        OPC_CheckType, MVT::v4i32,
/* 34230*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34232*/        OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34235*/        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)
/* 34243*/      /*Scope*/ 18, /*->34262*/
/* 34244*/        OPC_CheckCondCode, ISD::SETLT,
/* 34246*/        OPC_MoveParent,
/* 34247*/        OPC_CheckType, MVT::v4i32,
/* 34249*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34251*/        OPC_CheckComplexPat, /*CP*/22, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34254*/        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)
/* 34262*/      /*Scope*/ 18, /*->34281*/
/* 34263*/        OPC_CheckCondCode, ISD::SETULT,
/* 34265*/        OPC_MoveParent,
/* 34266*/        OPC_CheckType, MVT::v4i32,
/* 34268*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34270*/        OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34273*/        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)
/* 34281*/      /*Scope*/ 15, /*->34297*/
/* 34282*/        OPC_CheckCondCode, ISD::SETEQ,
/* 34284*/        OPC_MoveParent,
/* 34285*/        OPC_CheckType, MVT::v4i32,
/* 34287*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34289*/        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)
/* 34297*/      /*Scope*/ 15, /*->34313*/
/* 34298*/        OPC_CheckCondCode, ISD::SETLE,
/* 34300*/        OPC_MoveParent,
/* 34301*/        OPC_CheckType, MVT::v4i32,
/* 34303*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34305*/        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)
/* 34313*/      /*Scope*/ 15, /*->34329*/
/* 34314*/        OPC_CheckCondCode, ISD::SETULE,
/* 34316*/        OPC_MoveParent,
/* 34317*/        OPC_CheckType, MVT::v4i32,
/* 34319*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34321*/        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)
/* 34329*/      /*Scope*/ 15, /*->34345*/
/* 34330*/        OPC_CheckCondCode, ISD::SETLT,
/* 34332*/        OPC_MoveParent,
/* 34333*/        OPC_CheckType, MVT::v4i32,
/* 34335*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34337*/        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)
/* 34345*/      /*Scope*/ 15, /*->34361*/
/* 34346*/        OPC_CheckCondCode, ISD::SETULT,
/* 34348*/        OPC_MoveParent,
/* 34349*/        OPC_CheckType, MVT::v4i32,
/* 34351*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34353*/        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)
/* 34361*/      0, /*End of Scope*/
/* 34362*/    /*Scope*/ 53|128,1/*181*/, /*->34545*/
/* 34364*/      OPC_CheckChild0Type, MVT::v2i64,
/* 34366*/      OPC_RecordChild1, // #1 = $imm
/* 34367*/      OPC_MoveChild2,
/* 34368*/      OPC_Scope, 18, /*->34388*/ // 10 children in Scope
/* 34370*/        OPC_CheckCondCode, ISD::SETEQ,
/* 34372*/        OPC_MoveParent,
/* 34373*/        OPC_CheckType, MVT::v2i64,
/* 34375*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34377*/        OPC_CheckComplexPat, /*CP*/23, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34380*/        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)
/* 34388*/      /*Scope*/ 18, /*->34407*/
/* 34389*/        OPC_CheckCondCode, ISD::SETLE,
/* 34391*/        OPC_MoveParent,
/* 34392*/        OPC_CheckType, MVT::v2i64,
/* 34394*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34396*/        OPC_CheckComplexPat, /*CP*/23, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34399*/        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)
/* 34407*/      /*Scope*/ 18, /*->34426*/
/* 34408*/        OPC_CheckCondCode, ISD::SETULE,
/* 34410*/        OPC_MoveParent,
/* 34411*/        OPC_CheckType, MVT::v2i64,
/* 34413*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34415*/        OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34418*/        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)
/* 34426*/      /*Scope*/ 18, /*->34445*/
/* 34427*/        OPC_CheckCondCode, ISD::SETLT,
/* 34429*/        OPC_MoveParent,
/* 34430*/        OPC_CheckType, MVT::v2i64,
/* 34432*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34434*/        OPC_CheckComplexPat, /*CP*/23, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34437*/        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)
/* 34445*/      /*Scope*/ 18, /*->34464*/
/* 34446*/        OPC_CheckCondCode, ISD::SETULT,
/* 34448*/        OPC_MoveParent,
/* 34449*/        OPC_CheckType, MVT::v2i64,
/* 34451*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34453*/        OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34456*/        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)
/* 34464*/      /*Scope*/ 15, /*->34480*/
/* 34465*/        OPC_CheckCondCode, ISD::SETEQ,
/* 34467*/        OPC_MoveParent,
/* 34468*/        OPC_CheckType, MVT::v2i64,
/* 34470*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34472*/        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)
/* 34480*/      /*Scope*/ 15, /*->34496*/
/* 34481*/        OPC_CheckCondCode, ISD::SETLE,
/* 34483*/        OPC_MoveParent,
/* 34484*/        OPC_CheckType, MVT::v2i64,
/* 34486*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34488*/        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)
/* 34496*/      /*Scope*/ 15, /*->34512*/
/* 34497*/        OPC_CheckCondCode, ISD::SETULE,
/* 34499*/        OPC_MoveParent,
/* 34500*/        OPC_CheckType, MVT::v2i64,
/* 34502*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34504*/        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)
/* 34512*/      /*Scope*/ 15, /*->34528*/
/* 34513*/        OPC_CheckCondCode, ISD::SETLT,
/* 34515*/        OPC_MoveParent,
/* 34516*/        OPC_CheckType, MVT::v2i64,
/* 34518*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34520*/        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)
/* 34528*/      /*Scope*/ 15, /*->34544*/
/* 34529*/        OPC_CheckCondCode, ISD::SETULT,
/* 34531*/        OPC_MoveParent,
/* 34532*/        OPC_CheckType, MVT::v2i64,
/* 34534*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34536*/        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)
/* 34544*/      0, /*End of Scope*/
/* 34545*/    /*Scope*/ 38|128,1/*166*/, /*->34713*/
/* 34547*/      OPC_CheckChild0Type, MVT::v4f32,
/* 34549*/      OPC_RecordChild1, // #1 = $wt
/* 34550*/      OPC_MoveChild2,
/* 34551*/      OPC_Scope, 15, /*->34568*/ // 10 children in Scope
/* 34553*/        OPC_CheckCondCode, ISD::SETOEQ,
/* 34555*/        OPC_MoveParent,
/* 34556*/        OPC_CheckType, MVT::v4i32,
/* 34558*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34560*/        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)
/* 34568*/      /*Scope*/ 15, /*->34584*/
/* 34569*/        OPC_CheckCondCode, ISD::SETOLE,
/* 34571*/        OPC_MoveParent,
/* 34572*/        OPC_CheckType, MVT::v4i32,
/* 34574*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34576*/        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)
/* 34584*/      /*Scope*/ 15, /*->34600*/
/* 34585*/        OPC_CheckCondCode, ISD::SETOLT,
/* 34587*/        OPC_MoveParent,
/* 34588*/        OPC_CheckType, MVT::v4i32,
/* 34590*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34592*/        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)
/* 34600*/      /*Scope*/ 15, /*->34616*/
/* 34601*/        OPC_CheckCondCode, ISD::SETONE,
/* 34603*/        OPC_MoveParent,
/* 34604*/        OPC_CheckType, MVT::v4i32,
/* 34606*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34608*/        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)
/* 34616*/      /*Scope*/ 15, /*->34632*/
/* 34617*/        OPC_CheckCondCode, ISD::SETO,
/* 34619*/        OPC_MoveParent,
/* 34620*/        OPC_CheckType, MVT::v4i32,
/* 34622*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34624*/        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)
/* 34632*/      /*Scope*/ 15, /*->34648*/
/* 34633*/        OPC_CheckCondCode, ISD::SETUEQ,
/* 34635*/        OPC_MoveParent,
/* 34636*/        OPC_CheckType, MVT::v4i32,
/* 34638*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34640*/        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)
/* 34648*/      /*Scope*/ 15, /*->34664*/
/* 34649*/        OPC_CheckCondCode, ISD::SETULE,
/* 34651*/        OPC_MoveParent,
/* 34652*/        OPC_CheckType, MVT::v4i32,
/* 34654*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34656*/        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)
/* 34664*/      /*Scope*/ 15, /*->34680*/
/* 34665*/        OPC_CheckCondCode, ISD::SETULT,
/* 34667*/        OPC_MoveParent,
/* 34668*/        OPC_CheckType, MVT::v4i32,
/* 34670*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34672*/        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)
/* 34680*/      /*Scope*/ 15, /*->34696*/
/* 34681*/        OPC_CheckCondCode, ISD::SETUO,
/* 34683*/        OPC_MoveParent,
/* 34684*/        OPC_CheckType, MVT::v4i32,
/* 34686*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34688*/        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)
/* 34696*/      /*Scope*/ 15, /*->34712*/
/* 34697*/        OPC_CheckCondCode, ISD::SETUNE,
/* 34699*/        OPC_MoveParent,
/* 34700*/        OPC_CheckType, MVT::v4i32,
/* 34702*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34704*/        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)
/* 34712*/      0, /*End of Scope*/
/* 34713*/    /*Scope*/ 38|128,1/*166*/, /*->34881*/
/* 34715*/      OPC_CheckChild0Type, MVT::v2f64,
/* 34717*/      OPC_RecordChild1, // #1 = $wt
/* 34718*/      OPC_MoveChild2,
/* 34719*/      OPC_Scope, 15, /*->34736*/ // 10 children in Scope
/* 34721*/        OPC_CheckCondCode, ISD::SETOEQ,
/* 34723*/        OPC_MoveParent,
/* 34724*/        OPC_CheckType, MVT::v2i64,
/* 34726*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34728*/        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)
/* 34736*/      /*Scope*/ 15, /*->34752*/
/* 34737*/        OPC_CheckCondCode, ISD::SETOLE,
/* 34739*/        OPC_MoveParent,
/* 34740*/        OPC_CheckType, MVT::v2i64,
/* 34742*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34744*/        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)
/* 34752*/      /*Scope*/ 15, /*->34768*/
/* 34753*/        OPC_CheckCondCode, ISD::SETOLT,
/* 34755*/        OPC_MoveParent,
/* 34756*/        OPC_CheckType, MVT::v2i64,
/* 34758*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34760*/        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)
/* 34768*/      /*Scope*/ 15, /*->34784*/
/* 34769*/        OPC_CheckCondCode, ISD::SETONE,
/* 34771*/        OPC_MoveParent,
/* 34772*/        OPC_CheckType, MVT::v2i64,
/* 34774*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34776*/        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)
/* 34784*/      /*Scope*/ 15, /*->34800*/
/* 34785*/        OPC_CheckCondCode, ISD::SETO,
/* 34787*/        OPC_MoveParent,
/* 34788*/        OPC_CheckType, MVT::v2i64,
/* 34790*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34792*/        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)
/* 34800*/      /*Scope*/ 15, /*->34816*/
/* 34801*/        OPC_CheckCondCode, ISD::SETUEQ,
/* 34803*/        OPC_MoveParent,
/* 34804*/        OPC_CheckType, MVT::v2i64,
/* 34806*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34808*/        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)
/* 34816*/      /*Scope*/ 15, /*->34832*/
/* 34817*/        OPC_CheckCondCode, ISD::SETULE,
/* 34819*/        OPC_MoveParent,
/* 34820*/        OPC_CheckType, MVT::v2i64,
/* 34822*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34824*/        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)
/* 34832*/      /*Scope*/ 15, /*->34848*/
/* 34833*/        OPC_CheckCondCode, ISD::SETULT,
/* 34835*/        OPC_MoveParent,
/* 34836*/        OPC_CheckType, MVT::v2i64,
/* 34838*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34840*/        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)
/* 34848*/      /*Scope*/ 15, /*->34864*/
/* 34849*/        OPC_CheckCondCode, ISD::SETUO,
/* 34851*/        OPC_MoveParent,
/* 34852*/        OPC_CheckType, MVT::v2i64,
/* 34854*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34856*/        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)
/* 34864*/      /*Scope*/ 15, /*->34880*/
/* 34865*/        OPC_CheckCondCode, ISD::SETUNE,
/* 34867*/        OPC_MoveParent,
/* 34868*/        OPC_CheckType, MVT::v2i64,
/* 34870*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34872*/        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)
/* 34880*/      0, /*End of Scope*/
/* 34881*/    0, /*End of Scope*/
/* 34882*/  /*SwitchOpcode*/ 76, TARGET_VAL(MipsISD::FPBrcond),// ->34961
/* 34885*/    OPC_RecordNode, // #0 = 'MipsFPBrcond' chained node
/* 34886*/    OPC_CaptureGlueInput,
/* 34887*/    OPC_Scope, 35, /*->34924*/ // 2 children in Scope
/* 34889*/      OPC_CheckChild1Integer, 0, 
/* 34891*/      OPC_CheckChild1Type, MVT::i32,
/* 34893*/      OPC_RecordChild2, // #1 = $fcc
/* 34894*/      OPC_RecordChild3, // #2 = $offset
/* 34895*/      OPC_MoveChild3,
/* 34896*/      OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 34899*/      OPC_MoveParent,
/* 34900*/      OPC_Scope, 10, /*->34912*/ // 2 children in Scope
/* 34902*/        OPC_CheckPatternPredicate, 63, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 34904*/        OPC_EmitMergeInputChains1_0,
/* 34905*/        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)
/* 34912*/      /*Scope*/ 10, /*->34923*/
/* 34913*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 34915*/        OPC_EmitMergeInputChains1_0,
/* 34916*/        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)
/* 34923*/      0, /*End of Scope*/
/* 34924*/    /*Scope*/ 35, /*->34960*/
/* 34925*/      OPC_CheckChild1Integer, 1, 
/* 34927*/      OPC_CheckChild1Type, MVT::i32,
/* 34929*/      OPC_RecordChild2, // #1 = $fcc
/* 34930*/      OPC_RecordChild3, // #2 = $offset
/* 34931*/      OPC_MoveChild3,
/* 34932*/      OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 34935*/      OPC_MoveParent,
/* 34936*/      OPC_Scope, 10, /*->34948*/ // 2 children in Scope
/* 34938*/        OPC_CheckPatternPredicate, 63, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 34940*/        OPC_EmitMergeInputChains1_0,
/* 34941*/        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)
/* 34948*/      /*Scope*/ 10, /*->34959*/
/* 34949*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 34951*/        OPC_EmitMergeInputChains1_0,
/* 34952*/        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)
/* 34959*/      0, /*End of Scope*/
/* 34960*/    0, /*End of Scope*/
/* 34961*/  /*SwitchOpcode*/ 41|128,2/*297*/, TARGET_VAL(ISD::SUB),// ->35262
/* 34965*/    OPC_Scope, 14, /*->34981*/ // 2 children in Scope
/* 34967*/      OPC_CheckChild0Integer, 0, 
/* 34969*/      OPC_RecordChild1, // #0 = $r
/* 34970*/      OPC_CheckType, MVT::i32,
/* 34972*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 34974*/      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)
/* 34981*/    /*Scope*/ 22|128,2/*278*/, /*->35261*/
/* 34983*/      OPC_RecordChild0, // #0 = $rs
/* 34984*/      OPC_Scope, 7|128,1/*135*/, /*->35122*/ // 3 children in Scope
/* 34987*/        OPC_RecordChild1, // #1 = $rt
/* 34988*/        OPC_SwitchType /*6 cases */, 58, MVT::i32,// ->35049
/* 34991*/          OPC_Scope, 10, /*->35003*/ // 4 children in Scope
/* 34993*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 34995*/            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)
/* 35003*/          /*Scope*/ 10, /*->35014*/
/* 35004*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 35006*/            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)
/* 35014*/          /*Scope*/ 10, /*->35025*/
/* 35015*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 35017*/            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)
/* 35025*/          /*Scope*/ 22, /*->35048*/
/* 35026*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 35028*/            OPC_Scope, 8, /*->35038*/ // 2 children in Scope
/* 35030*/              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)
/* 35038*/            /*Scope*/ 8, /*->35047*/
/* 35039*/              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)
/* 35047*/            0, /*End of Scope*/
/* 35048*/          0, /*End of Scope*/
/* 35049*/        /*SwitchType*/ 10, MVT::i64,// ->35061
/* 35051*/          OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 35053*/          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)
/* 35061*/        /*SwitchType*/ 13, MVT::v16i8,// ->35076
/* 35063*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35065*/          OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 35068*/          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)
/* 35076*/        /*SwitchType*/ 13, MVT::v8i16,// ->35091
/* 35078*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35080*/          OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 35083*/          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)
/* 35091*/        /*SwitchType*/ 13, MVT::v4i32,// ->35106
/* 35093*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35095*/          OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 35098*/          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)
/* 35106*/        /*SwitchType*/ 13, MVT::v2i64,// ->35121
/* 35108*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35110*/          OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 35113*/          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)
/* 35121*/        0, // EndSwitchType
/* 35122*/      /*Scope*/ 61, /*->35184*/
/* 35123*/        OPC_MoveChild1,
/* 35124*/        OPC_CheckOpcode, TARGET_VAL(ISD::MUL),
/* 35127*/        OPC_RecordChild0, // #1 = $ws
/* 35128*/        OPC_RecordChild1, // #2 = $wt
/* 35129*/        OPC_MoveParent,
/* 35130*/        OPC_SwitchType /*4 cases */, 11, MVT::v16i8,// ->35144
/* 35133*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35135*/          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)
/* 35144*/        /*SwitchType*/ 11, MVT::v8i16,// ->35157
/* 35146*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35148*/          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)
/* 35157*/        /*SwitchType*/ 11, MVT::v4i32,// ->35170
/* 35159*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35161*/          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)
/* 35170*/        /*SwitchType*/ 11, MVT::v2i64,// ->35183
/* 35172*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35174*/          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)
/* 35183*/        0, // EndSwitchType
/* 35184*/      /*Scope*/ 75, /*->35260*/
/* 35185*/        OPC_RecordChild1, // #1 = $b
/* 35186*/        OPC_SwitchType /*6 cases */, 10, MVT::v2i16,// ->35199
/* 35189*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 35191*/          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)
/* 35199*/        /*SwitchType*/ 10, MVT::v4i8,// ->35211
/* 35201*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 35203*/          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)
/* 35211*/        /*SwitchType*/ 10, MVT::v16i8,// ->35223
/* 35213*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35215*/          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)
/* 35223*/        /*SwitchType*/ 10, MVT::v8i16,// ->35235
/* 35225*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35227*/          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)
/* 35235*/        /*SwitchType*/ 10, MVT::v4i32,// ->35247
/* 35237*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35239*/          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)
/* 35247*/        /*SwitchType*/ 10, MVT::v2i64,// ->35259
/* 35249*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35251*/          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)
/* 35259*/        0, // EndSwitchType
/* 35260*/      0, /*End of Scope*/
/* 35261*/    0, /*End of Scope*/
/* 35262*/  /*SwitchOpcode*/ 0|128,17/*2176*/, TARGET_VAL(ISD::OR),// ->37442
/* 35266*/    OPC_Scope, 20|128,4/*532*/, /*->35801*/ // 13 children in Scope
/* 35269*/      OPC_RecordChild0, // #0 = $rs
/* 35270*/      OPC_Scope, 28|128,1/*156*/, /*->35429*/ // 2 children in Scope
/* 35273*/        OPC_RecordChild1, // #1 = $imm16
/* 35274*/        OPC_Scope, 78, /*->35354*/ // 3 children in Scope
/* 35276*/          OPC_MoveChild1,
/* 35277*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35280*/          OPC_CheckPredicate, 21, // Predicate_immZExt16
/* 35282*/          OPC_MoveParent,
/* 35283*/          OPC_SwitchType /*2 cases */, 50, MVT::i32,// ->35336
/* 35286*/            OPC_Scope, 15, /*->35303*/ // 3 children in Scope
/* 35288*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 35290*/              OPC_EmitConvertToTarget, 1,
/* 35292*/              OPC_EmitNodeXForm, 3, 2, // LO16
/* 35295*/              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))
/* 35303*/            /*Scope*/ 15, /*->35319*/
/* 35304*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 35306*/              OPC_EmitConvertToTarget, 1,
/* 35308*/              OPC_EmitNodeXForm, 3, 2, // LO16
/* 35311*/              OPC_MorphNodeTo1, TARGET_VAL(Mips::ORi), 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:{ *:[i32] } GPR32Opnd:{ *:[i32] }:$rs, (LO16:{ *:[i32] } (imm:{ *:[i32] }):$imm16))
/* 35319*/            /*Scope*/ 15, /*->35335*/
/* 35320*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 35322*/              OPC_EmitConvertToTarget, 1,
/* 35324*/              OPC_EmitNodeXForm, 3, 2, // LO16
/* 35327*/              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))
/* 35335*/            0, /*End of Scope*/
/* 35336*/          /*SwitchType*/ 15, MVT::i64,// ->35353
/* 35338*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 35340*/            OPC_EmitConvertToTarget, 1,
/* 35342*/            OPC_EmitNodeXForm, 3, 2, // LO16
/* 35345*/            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))
/* 35353*/          0, // EndSwitchType
/* 35354*/        /*Scope*/ 60, /*->35415*/
/* 35355*/          OPC_CheckType, MVT::i32,
/* 35357*/          OPC_Scope, 10, /*->35369*/ // 4 children in Scope
/* 35359*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 35361*/            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)
/* 35369*/          /*Scope*/ 10, /*->35380*/
/* 35370*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 35372*/            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)
/* 35380*/          /*Scope*/ 22, /*->35403*/
/* 35381*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 35383*/            OPC_Scope, 8, /*->35393*/ // 2 children in Scope
/* 35385*/              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)
/* 35393*/            /*Scope*/ 8, /*->35402*/
/* 35394*/              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)
/* 35402*/            0, /*End of Scope*/
/* 35403*/          /*Scope*/ 10, /*->35414*/
/* 35404*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 35406*/            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)
/* 35414*/          0, /*End of Scope*/
/* 35415*/        /*Scope*/ 12, /*->35428*/
/* 35416*/          OPC_CheckType, MVT::i64,
/* 35418*/          OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 35420*/          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)
/* 35428*/        0, /*End of Scope*/
/* 35429*/      /*Scope*/ 113|128,2/*369*/, /*->35800*/
/* 35431*/        OPC_MoveChild1,
/* 35432*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 35435*/        OPC_MoveChild0,
/* 35436*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35439*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 35441*/        OPC_MoveParent,
/* 35442*/        OPC_MoveChild1,
/* 35443*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 35446*/        OPC_Scope, 46|128,1/*174*/, /*->35623*/ // 2 children in Scope
/* 35449*/          OPC_RecordChild0, // #1 = $wt
/* 35450*/          OPC_MoveChild1,
/* 35451*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35454*/          OPC_MoveChild0,
/* 35455*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35458*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35460*/          OPC_CheckType, MVT::i32,
/* 35462*/          OPC_MoveParent,
/* 35463*/          OPC_MoveChild1,
/* 35464*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35467*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35469*/          OPC_CheckType, MVT::i32,
/* 35471*/          OPC_MoveParent,
/* 35472*/          OPC_MoveChild2,
/* 35473*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35476*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35478*/          OPC_CheckType, MVT::i32,
/* 35480*/          OPC_MoveParent,
/* 35481*/          OPC_MoveChild3,
/* 35482*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35485*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35487*/          OPC_CheckType, MVT::i32,
/* 35489*/          OPC_MoveParent,
/* 35490*/          OPC_MoveChild4,
/* 35491*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35494*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35496*/          OPC_CheckType, MVT::i32,
/* 35498*/          OPC_MoveParent,
/* 35499*/          OPC_MoveChild5,
/* 35500*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35503*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35505*/          OPC_CheckType, MVT::i32,
/* 35507*/          OPC_MoveParent,
/* 35508*/          OPC_MoveChild6,
/* 35509*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35512*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35514*/          OPC_CheckType, MVT::i32,
/* 35516*/          OPC_MoveParent,
/* 35517*/          OPC_MoveChild7,
/* 35518*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35521*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35523*/          OPC_CheckType, MVT::i32,
/* 35525*/          OPC_MoveParent,
/* 35526*/          OPC_MoveChild, 8,
/* 35528*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35531*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35533*/          OPC_CheckType, MVT::i32,
/* 35535*/          OPC_MoveParent,
/* 35536*/          OPC_MoveChild, 9,
/* 35538*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35541*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35543*/          OPC_CheckType, MVT::i32,
/* 35545*/          OPC_MoveParent,
/* 35546*/          OPC_MoveChild, 10,
/* 35548*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35551*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35553*/          OPC_CheckType, MVT::i32,
/* 35555*/          OPC_MoveParent,
/* 35556*/          OPC_MoveChild, 11,
/* 35558*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35561*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35563*/          OPC_CheckType, MVT::i32,
/* 35565*/          OPC_MoveParent,
/* 35566*/          OPC_MoveChild, 12,
/* 35568*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35571*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35573*/          OPC_CheckType, MVT::i32,
/* 35575*/          OPC_MoveParent,
/* 35576*/          OPC_MoveChild, 13,
/* 35578*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35581*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35583*/          OPC_CheckType, MVT::i32,
/* 35585*/          OPC_MoveParent,
/* 35586*/          OPC_MoveChild, 14,
/* 35588*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35591*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35593*/          OPC_CheckType, MVT::i32,
/* 35595*/          OPC_MoveParent,
/* 35596*/          OPC_MoveChild, 15,
/* 35598*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35601*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35603*/          OPC_CheckType, MVT::i32,
/* 35605*/          OPC_MoveParent,
/* 35606*/          OPC_MoveParent,
/* 35607*/          OPC_CheckType, MVT::v16i8,
/* 35609*/          OPC_MoveParent,
/* 35610*/          OPC_MoveParent,
/* 35611*/          OPC_CheckType, MVT::v16i8,
/* 35613*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 35615*/          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)
/* 35623*/        /*Scope*/ 46|128,1/*174*/, /*->35799*/
/* 35625*/          OPC_MoveChild0,
/* 35626*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35629*/          OPC_MoveChild0,
/* 35630*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35633*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35635*/          OPC_CheckType, MVT::i32,
/* 35637*/          OPC_MoveParent,
/* 35638*/          OPC_MoveChild1,
/* 35639*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35642*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35644*/          OPC_CheckType, MVT::i32,
/* 35646*/          OPC_MoveParent,
/* 35647*/          OPC_MoveChild2,
/* 35648*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35651*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35653*/          OPC_CheckType, MVT::i32,
/* 35655*/          OPC_MoveParent,
/* 35656*/          OPC_MoveChild3,
/* 35657*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35660*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35662*/          OPC_CheckType, MVT::i32,
/* 35664*/          OPC_MoveParent,
/* 35665*/          OPC_MoveChild4,
/* 35666*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35669*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35671*/          OPC_CheckType, MVT::i32,
/* 35673*/          OPC_MoveParent,
/* 35674*/          OPC_MoveChild5,
/* 35675*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35678*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35680*/          OPC_CheckType, MVT::i32,
/* 35682*/          OPC_MoveParent,
/* 35683*/          OPC_MoveChild6,
/* 35684*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35687*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35689*/          OPC_CheckType, MVT::i32,
/* 35691*/          OPC_MoveParent,
/* 35692*/          OPC_MoveChild7,
/* 35693*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35696*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35698*/          OPC_CheckType, MVT::i32,
/* 35700*/          OPC_MoveParent,
/* 35701*/          OPC_MoveChild, 8,
/* 35703*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35706*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35708*/          OPC_CheckType, MVT::i32,
/* 35710*/          OPC_MoveParent,
/* 35711*/          OPC_MoveChild, 9,
/* 35713*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35716*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35718*/          OPC_CheckType, MVT::i32,
/* 35720*/          OPC_MoveParent,
/* 35721*/          OPC_MoveChild, 10,
/* 35723*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35726*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35728*/          OPC_CheckType, MVT::i32,
/* 35730*/          OPC_MoveParent,
/* 35731*/          OPC_MoveChild, 11,
/* 35733*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35736*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35738*/          OPC_CheckType, MVT::i32,
/* 35740*/          OPC_MoveParent,
/* 35741*/          OPC_MoveChild, 12,
/* 35743*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35746*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35748*/          OPC_CheckType, MVT::i32,
/* 35750*/          OPC_MoveParent,
/* 35751*/          OPC_MoveChild, 13,
/* 35753*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35756*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35758*/          OPC_CheckType, MVT::i32,
/* 35760*/          OPC_MoveParent,
/* 35761*/          OPC_MoveChild, 14,
/* 35763*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35766*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35768*/          OPC_CheckType, MVT::i32,
/* 35770*/          OPC_MoveParent,
/* 35771*/          OPC_MoveChild, 15,
/* 35773*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35776*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35778*/          OPC_CheckType, MVT::i32,
/* 35780*/          OPC_MoveParent,
/* 35781*/          OPC_MoveParent,
/* 35782*/          OPC_RecordChild1, // #1 = $wt
/* 35783*/          OPC_CheckType, MVT::v16i8,
/* 35785*/          OPC_MoveParent,
/* 35786*/          OPC_MoveParent,
/* 35787*/          OPC_CheckType, MVT::v16i8,
/* 35789*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 35791*/          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)
/* 35799*/        0, /*End of Scope*/
/* 35800*/      0, /*End of Scope*/
/* 35801*/    /*Scope*/ 115|128,2/*371*/, /*->36174*/
/* 35803*/      OPC_MoveChild0,
/* 35804*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 35807*/      OPC_MoveChild0,
/* 35808*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35811*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 35813*/      OPC_MoveParent,
/* 35814*/      OPC_MoveChild1,
/* 35815*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 35818*/      OPC_Scope, 47|128,1/*175*/, /*->35996*/ // 2 children in Scope
/* 35821*/        OPC_RecordChild0, // #0 = $wt
/* 35822*/        OPC_MoveChild1,
/* 35823*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35826*/        OPC_MoveChild0,
/* 35827*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35830*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35832*/        OPC_CheckType, MVT::i32,
/* 35834*/        OPC_MoveParent,
/* 35835*/        OPC_MoveChild1,
/* 35836*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35839*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35841*/        OPC_CheckType, MVT::i32,
/* 35843*/        OPC_MoveParent,
/* 35844*/        OPC_MoveChild2,
/* 35845*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35848*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35850*/        OPC_CheckType, MVT::i32,
/* 35852*/        OPC_MoveParent,
/* 35853*/        OPC_MoveChild3,
/* 35854*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35857*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35859*/        OPC_CheckType, MVT::i32,
/* 35861*/        OPC_MoveParent,
/* 35862*/        OPC_MoveChild4,
/* 35863*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35866*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35868*/        OPC_CheckType, MVT::i32,
/* 35870*/        OPC_MoveParent,
/* 35871*/        OPC_MoveChild5,
/* 35872*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35875*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35877*/        OPC_CheckType, MVT::i32,
/* 35879*/        OPC_MoveParent,
/* 35880*/        OPC_MoveChild6,
/* 35881*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35884*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35886*/        OPC_CheckType, MVT::i32,
/* 35888*/        OPC_MoveParent,
/* 35889*/        OPC_MoveChild7,
/* 35890*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35893*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35895*/        OPC_CheckType, MVT::i32,
/* 35897*/        OPC_MoveParent,
/* 35898*/        OPC_MoveChild, 8,
/* 35900*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35903*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35905*/        OPC_CheckType, MVT::i32,
/* 35907*/        OPC_MoveParent,
/* 35908*/        OPC_MoveChild, 9,
/* 35910*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35913*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35915*/        OPC_CheckType, MVT::i32,
/* 35917*/        OPC_MoveParent,
/* 35918*/        OPC_MoveChild, 10,
/* 35920*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35923*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35925*/        OPC_CheckType, MVT::i32,
/* 35927*/        OPC_MoveParent,
/* 35928*/        OPC_MoveChild, 11,
/* 35930*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35933*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35935*/        OPC_CheckType, MVT::i32,
/* 35937*/        OPC_MoveParent,
/* 35938*/        OPC_MoveChild, 12,
/* 35940*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35943*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35945*/        OPC_CheckType, MVT::i32,
/* 35947*/        OPC_MoveParent,
/* 35948*/        OPC_MoveChild, 13,
/* 35950*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35953*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35955*/        OPC_CheckType, MVT::i32,
/* 35957*/        OPC_MoveParent,
/* 35958*/        OPC_MoveChild, 14,
/* 35960*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35963*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35965*/        OPC_CheckType, MVT::i32,
/* 35967*/        OPC_MoveParent,
/* 35968*/        OPC_MoveChild, 15,
/* 35970*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35973*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35975*/        OPC_CheckType, MVT::i32,
/* 35977*/        OPC_MoveParent,
/* 35978*/        OPC_MoveParent,
/* 35979*/        OPC_CheckType, MVT::v16i8,
/* 35981*/        OPC_MoveParent,
/* 35982*/        OPC_MoveParent,
/* 35983*/        OPC_RecordChild1, // #1 = $ws
/* 35984*/        OPC_CheckType, MVT::v16i8,
/* 35986*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 35988*/        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)
/* 35996*/      /*Scope*/ 47|128,1/*175*/, /*->36173*/
/* 35998*/        OPC_MoveChild0,
/* 35999*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36002*/        OPC_MoveChild0,
/* 36003*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36006*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36008*/        OPC_CheckType, MVT::i32,
/* 36010*/        OPC_MoveParent,
/* 36011*/        OPC_MoveChild1,
/* 36012*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36015*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36017*/        OPC_CheckType, MVT::i32,
/* 36019*/        OPC_MoveParent,
/* 36020*/        OPC_MoveChild2,
/* 36021*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36024*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36026*/        OPC_CheckType, MVT::i32,
/* 36028*/        OPC_MoveParent,
/* 36029*/        OPC_MoveChild3,
/* 36030*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36033*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36035*/        OPC_CheckType, MVT::i32,
/* 36037*/        OPC_MoveParent,
/* 36038*/        OPC_MoveChild4,
/* 36039*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36042*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36044*/        OPC_CheckType, MVT::i32,
/* 36046*/        OPC_MoveParent,
/* 36047*/        OPC_MoveChild5,
/* 36048*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36051*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36053*/        OPC_CheckType, MVT::i32,
/* 36055*/        OPC_MoveParent,
/* 36056*/        OPC_MoveChild6,
/* 36057*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36060*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36062*/        OPC_CheckType, MVT::i32,
/* 36064*/        OPC_MoveParent,
/* 36065*/        OPC_MoveChild7,
/* 36066*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36069*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36071*/        OPC_CheckType, MVT::i32,
/* 36073*/        OPC_MoveParent,
/* 36074*/        OPC_MoveChild, 8,
/* 36076*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36079*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36081*/        OPC_CheckType, MVT::i32,
/* 36083*/        OPC_MoveParent,
/* 36084*/        OPC_MoveChild, 9,
/* 36086*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36089*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36091*/        OPC_CheckType, MVT::i32,
/* 36093*/        OPC_MoveParent,
/* 36094*/        OPC_MoveChild, 10,
/* 36096*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36099*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36101*/        OPC_CheckType, MVT::i32,
/* 36103*/        OPC_MoveParent,
/* 36104*/        OPC_MoveChild, 11,
/* 36106*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36109*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36111*/        OPC_CheckType, MVT::i32,
/* 36113*/        OPC_MoveParent,
/* 36114*/        OPC_MoveChild, 12,
/* 36116*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36119*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36121*/        OPC_CheckType, MVT::i32,
/* 36123*/        OPC_MoveParent,
/* 36124*/        OPC_MoveChild, 13,
/* 36126*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36129*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36131*/        OPC_CheckType, MVT::i32,
/* 36133*/        OPC_MoveParent,
/* 36134*/        OPC_MoveChild, 14,
/* 36136*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36139*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36141*/        OPC_CheckType, MVT::i32,
/* 36143*/        OPC_MoveParent,
/* 36144*/        OPC_MoveChild, 15,
/* 36146*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36149*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36151*/        OPC_CheckType, MVT::i32,
/* 36153*/        OPC_MoveParent,
/* 36154*/        OPC_MoveParent,
/* 36155*/        OPC_RecordChild1, // #0 = $wt
/* 36156*/        OPC_CheckType, MVT::v16i8,
/* 36158*/        OPC_MoveParent,
/* 36159*/        OPC_MoveParent,
/* 36160*/        OPC_RecordChild1, // #1 = $ws
/* 36161*/        OPC_CheckType, MVT::v16i8,
/* 36163*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36165*/        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)
/* 36173*/      0, /*End of Scope*/
/* 36174*/    /*Scope*/ 80|128,1/*208*/, /*->36384*/
/* 36176*/      OPC_RecordChild0, // #0 = $ws
/* 36177*/      OPC_MoveChild1,
/* 36178*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36181*/      OPC_MoveChild0,
/* 36182*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36185*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 36187*/      OPC_MoveParent,
/* 36188*/      OPC_MoveChild1,
/* 36189*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 36192*/      OPC_Scope, 94, /*->36288*/ // 2 children in Scope
/* 36194*/        OPC_RecordChild0, // #1 = $wt
/* 36195*/        OPC_MoveChild1,
/* 36196*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36199*/        OPC_MoveChild0,
/* 36200*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36203*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36205*/        OPC_CheckType, MVT::i32,
/* 36207*/        OPC_MoveParent,
/* 36208*/        OPC_MoveChild1,
/* 36209*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36212*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36214*/        OPC_CheckType, MVT::i32,
/* 36216*/        OPC_MoveParent,
/* 36217*/        OPC_MoveChild2,
/* 36218*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36221*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36223*/        OPC_CheckType, MVT::i32,
/* 36225*/        OPC_MoveParent,
/* 36226*/        OPC_MoveChild3,
/* 36227*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36230*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36232*/        OPC_CheckType, MVT::i32,
/* 36234*/        OPC_MoveParent,
/* 36235*/        OPC_MoveChild4,
/* 36236*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36239*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36241*/        OPC_CheckType, MVT::i32,
/* 36243*/        OPC_MoveParent,
/* 36244*/        OPC_MoveChild5,
/* 36245*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36248*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36250*/        OPC_CheckType, MVT::i32,
/* 36252*/        OPC_MoveParent,
/* 36253*/        OPC_MoveChild6,
/* 36254*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36257*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36259*/        OPC_CheckType, MVT::i32,
/* 36261*/        OPC_MoveParent,
/* 36262*/        OPC_MoveChild7,
/* 36263*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36266*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36268*/        OPC_CheckType, MVT::i32,
/* 36270*/        OPC_MoveParent,
/* 36271*/        OPC_MoveParent,
/* 36272*/        OPC_CheckType, MVT::v8i16,
/* 36274*/        OPC_MoveParent,
/* 36275*/        OPC_MoveParent,
/* 36276*/        OPC_CheckType, MVT::v8i16,
/* 36278*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36280*/        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)
/* 36288*/      /*Scope*/ 94, /*->36383*/
/* 36289*/        OPC_MoveChild0,
/* 36290*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36293*/        OPC_MoveChild0,
/* 36294*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36297*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36299*/        OPC_CheckType, MVT::i32,
/* 36301*/        OPC_MoveParent,
/* 36302*/        OPC_MoveChild1,
/* 36303*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36306*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36308*/        OPC_CheckType, MVT::i32,
/* 36310*/        OPC_MoveParent,
/* 36311*/        OPC_MoveChild2,
/* 36312*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36315*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36317*/        OPC_CheckType, MVT::i32,
/* 36319*/        OPC_MoveParent,
/* 36320*/        OPC_MoveChild3,
/* 36321*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36324*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36326*/        OPC_CheckType, MVT::i32,
/* 36328*/        OPC_MoveParent,
/* 36329*/        OPC_MoveChild4,
/* 36330*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36333*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36335*/        OPC_CheckType, MVT::i32,
/* 36337*/        OPC_MoveParent,
/* 36338*/        OPC_MoveChild5,
/* 36339*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36342*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36344*/        OPC_CheckType, MVT::i32,
/* 36346*/        OPC_MoveParent,
/* 36347*/        OPC_MoveChild6,
/* 36348*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36351*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36353*/        OPC_CheckType, MVT::i32,
/* 36355*/        OPC_MoveParent,
/* 36356*/        OPC_MoveChild7,
/* 36357*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36360*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36362*/        OPC_CheckType, MVT::i32,
/* 36364*/        OPC_MoveParent,
/* 36365*/        OPC_MoveParent,
/* 36366*/        OPC_RecordChild1, // #1 = $wt
/* 36367*/        OPC_CheckType, MVT::v8i16,
/* 36369*/        OPC_MoveParent,
/* 36370*/        OPC_MoveParent,
/* 36371*/        OPC_CheckType, MVT::v8i16,
/* 36373*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36375*/        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)
/* 36383*/      0, /*End of Scope*/
/* 36384*/    /*Scope*/ 81|128,1/*209*/, /*->36595*/
/* 36386*/      OPC_MoveChild0,
/* 36387*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36390*/      OPC_MoveChild0,
/* 36391*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36394*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 36396*/      OPC_MoveParent,
/* 36397*/      OPC_MoveChild1,
/* 36398*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 36401*/      OPC_Scope, 95, /*->36498*/ // 2 children in Scope
/* 36403*/        OPC_RecordChild0, // #0 = $wt
/* 36404*/        OPC_MoveChild1,
/* 36405*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36408*/        OPC_MoveChild0,
/* 36409*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36412*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36414*/        OPC_CheckType, MVT::i32,
/* 36416*/        OPC_MoveParent,
/* 36417*/        OPC_MoveChild1,
/* 36418*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36421*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36423*/        OPC_CheckType, MVT::i32,
/* 36425*/        OPC_MoveParent,
/* 36426*/        OPC_MoveChild2,
/* 36427*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36430*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36432*/        OPC_CheckType, MVT::i32,
/* 36434*/        OPC_MoveParent,
/* 36435*/        OPC_MoveChild3,
/* 36436*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36439*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36441*/        OPC_CheckType, MVT::i32,
/* 36443*/        OPC_MoveParent,
/* 36444*/        OPC_MoveChild4,
/* 36445*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36448*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36450*/        OPC_CheckType, MVT::i32,
/* 36452*/        OPC_MoveParent,
/* 36453*/        OPC_MoveChild5,
/* 36454*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36457*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36459*/        OPC_CheckType, MVT::i32,
/* 36461*/        OPC_MoveParent,
/* 36462*/        OPC_MoveChild6,
/* 36463*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36466*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36468*/        OPC_CheckType, MVT::i32,
/* 36470*/        OPC_MoveParent,
/* 36471*/        OPC_MoveChild7,
/* 36472*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36475*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36477*/        OPC_CheckType, MVT::i32,
/* 36479*/        OPC_MoveParent,
/* 36480*/        OPC_MoveParent,
/* 36481*/        OPC_CheckType, MVT::v8i16,
/* 36483*/        OPC_MoveParent,
/* 36484*/        OPC_MoveParent,
/* 36485*/        OPC_RecordChild1, // #1 = $ws
/* 36486*/        OPC_CheckType, MVT::v8i16,
/* 36488*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36490*/        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)
/* 36498*/      /*Scope*/ 95, /*->36594*/
/* 36499*/        OPC_MoveChild0,
/* 36500*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36503*/        OPC_MoveChild0,
/* 36504*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36507*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36509*/        OPC_CheckType, MVT::i32,
/* 36511*/        OPC_MoveParent,
/* 36512*/        OPC_MoveChild1,
/* 36513*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36516*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36518*/        OPC_CheckType, MVT::i32,
/* 36520*/        OPC_MoveParent,
/* 36521*/        OPC_MoveChild2,
/* 36522*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36525*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36527*/        OPC_CheckType, MVT::i32,
/* 36529*/        OPC_MoveParent,
/* 36530*/        OPC_MoveChild3,
/* 36531*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36534*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36536*/        OPC_CheckType, MVT::i32,
/* 36538*/        OPC_MoveParent,
/* 36539*/        OPC_MoveChild4,
/* 36540*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36543*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36545*/        OPC_CheckType, MVT::i32,
/* 36547*/        OPC_MoveParent,
/* 36548*/        OPC_MoveChild5,
/* 36549*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36552*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36554*/        OPC_CheckType, MVT::i32,
/* 36556*/        OPC_MoveParent,
/* 36557*/        OPC_MoveChild6,
/* 36558*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36561*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36563*/        OPC_CheckType, MVT::i32,
/* 36565*/        OPC_MoveParent,
/* 36566*/        OPC_MoveChild7,
/* 36567*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36570*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36572*/        OPC_CheckType, MVT::i32,
/* 36574*/        OPC_MoveParent,
/* 36575*/        OPC_MoveParent,
/* 36576*/        OPC_RecordChild1, // #0 = $wt
/* 36577*/        OPC_CheckType, MVT::v8i16,
/* 36579*/        OPC_MoveParent,
/* 36580*/        OPC_MoveParent,
/* 36581*/        OPC_RecordChild1, // #1 = $ws
/* 36582*/        OPC_CheckType, MVT::v8i16,
/* 36584*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36586*/        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)
/* 36594*/      0, /*End of Scope*/
/* 36595*/    /*Scope*/ 8|128,1/*136*/, /*->36733*/
/* 36597*/      OPC_RecordChild0, // #0 = $ws
/* 36598*/      OPC_MoveChild1,
/* 36599*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36602*/      OPC_MoveChild0,
/* 36603*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36606*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 36608*/      OPC_MoveParent,
/* 36609*/      OPC_MoveChild1,
/* 36610*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 36613*/      OPC_Scope, 58, /*->36673*/ // 2 children in Scope
/* 36615*/        OPC_RecordChild0, // #1 = $wt
/* 36616*/        OPC_MoveChild1,
/* 36617*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36620*/        OPC_MoveChild0,
/* 36621*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36624*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36626*/        OPC_CheckType, MVT::i32,
/* 36628*/        OPC_MoveParent,
/* 36629*/        OPC_MoveChild1,
/* 36630*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36633*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36635*/        OPC_CheckType, MVT::i32,
/* 36637*/        OPC_MoveParent,
/* 36638*/        OPC_MoveChild2,
/* 36639*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36642*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36644*/        OPC_CheckType, MVT::i32,
/* 36646*/        OPC_MoveParent,
/* 36647*/        OPC_MoveChild3,
/* 36648*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36651*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36653*/        OPC_CheckType, MVT::i32,
/* 36655*/        OPC_MoveParent,
/* 36656*/        OPC_MoveParent,
/* 36657*/        OPC_CheckType, MVT::v4i32,
/* 36659*/        OPC_MoveParent,
/* 36660*/        OPC_MoveParent,
/* 36661*/        OPC_CheckType, MVT::v4i32,
/* 36663*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36665*/        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)
/* 36673*/      /*Scope*/ 58, /*->36732*/
/* 36674*/        OPC_MoveChild0,
/* 36675*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36678*/        OPC_MoveChild0,
/* 36679*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36682*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36684*/        OPC_CheckType, MVT::i32,
/* 36686*/        OPC_MoveParent,
/* 36687*/        OPC_MoveChild1,
/* 36688*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36691*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36693*/        OPC_CheckType, MVT::i32,
/* 36695*/        OPC_MoveParent,
/* 36696*/        OPC_MoveChild2,
/* 36697*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36700*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36702*/        OPC_CheckType, MVT::i32,
/* 36704*/        OPC_MoveParent,
/* 36705*/        OPC_MoveChild3,
/* 36706*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36709*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36711*/        OPC_CheckType, MVT::i32,
/* 36713*/        OPC_MoveParent,
/* 36714*/        OPC_MoveParent,
/* 36715*/        OPC_RecordChild1, // #1 = $wt
/* 36716*/        OPC_CheckType, MVT::v4i32,
/* 36718*/        OPC_MoveParent,
/* 36719*/        OPC_MoveParent,
/* 36720*/        OPC_CheckType, MVT::v4i32,
/* 36722*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36724*/        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)
/* 36732*/      0, /*End of Scope*/
/* 36733*/    /*Scope*/ 9|128,1/*137*/, /*->36872*/
/* 36735*/      OPC_MoveChild0,
/* 36736*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36739*/      OPC_MoveChild0,
/* 36740*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36743*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 36745*/      OPC_MoveParent,
/* 36746*/      OPC_MoveChild1,
/* 36747*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 36750*/      OPC_Scope, 59, /*->36811*/ // 2 children in Scope
/* 36752*/        OPC_RecordChild0, // #0 = $wt
/* 36753*/        OPC_MoveChild1,
/* 36754*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36757*/        OPC_MoveChild0,
/* 36758*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36761*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36763*/        OPC_CheckType, MVT::i32,
/* 36765*/        OPC_MoveParent,
/* 36766*/        OPC_MoveChild1,
/* 36767*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36770*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36772*/        OPC_CheckType, MVT::i32,
/* 36774*/        OPC_MoveParent,
/* 36775*/        OPC_MoveChild2,
/* 36776*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36779*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36781*/        OPC_CheckType, MVT::i32,
/* 36783*/        OPC_MoveParent,
/* 36784*/        OPC_MoveChild3,
/* 36785*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36788*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36790*/        OPC_CheckType, MVT::i32,
/* 36792*/        OPC_MoveParent,
/* 36793*/        OPC_MoveParent,
/* 36794*/        OPC_CheckType, MVT::v4i32,
/* 36796*/        OPC_MoveParent,
/* 36797*/        OPC_MoveParent,
/* 36798*/        OPC_RecordChild1, // #1 = $ws
/* 36799*/        OPC_CheckType, MVT::v4i32,
/* 36801*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36803*/        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)
/* 36811*/      /*Scope*/ 59, /*->36871*/
/* 36812*/        OPC_MoveChild0,
/* 36813*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36816*/        OPC_MoveChild0,
/* 36817*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36820*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36822*/        OPC_CheckType, MVT::i32,
/* 36824*/        OPC_MoveParent,
/* 36825*/        OPC_MoveChild1,
/* 36826*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36829*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36831*/        OPC_CheckType, MVT::i32,
/* 36833*/        OPC_MoveParent,
/* 36834*/        OPC_MoveChild2,
/* 36835*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36838*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36840*/        OPC_CheckType, MVT::i32,
/* 36842*/        OPC_MoveParent,
/* 36843*/        OPC_MoveChild3,
/* 36844*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36847*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36849*/        OPC_CheckType, MVT::i32,
/* 36851*/        OPC_MoveParent,
/* 36852*/        OPC_MoveParent,
/* 36853*/        OPC_RecordChild1, // #0 = $wt
/* 36854*/        OPC_CheckType, MVT::v4i32,
/* 36856*/        OPC_MoveParent,
/* 36857*/        OPC_MoveParent,
/* 36858*/        OPC_RecordChild1, // #1 = $ws
/* 36859*/        OPC_CheckType, MVT::v4i32,
/* 36861*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36863*/        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)
/* 36871*/      0, /*End of Scope*/
/* 36872*/    /*Scope*/ 89, /*->36962*/
/* 36873*/      OPC_RecordChild0, // #0 = $ws
/* 36874*/      OPC_MoveChild1,
/* 36875*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36878*/      OPC_MoveChild0,
/* 36879*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36882*/      OPC_MoveChild0,
/* 36883*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36886*/      OPC_CheckType, MVT::v4i32,
/* 36888*/      OPC_MoveParent,
/* 36889*/      OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 36891*/      OPC_MoveParent,
/* 36892*/      OPC_MoveChild1,
/* 36893*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 36896*/      OPC_Scope, 31, /*->36929*/ // 2 children in Scope
/* 36898*/        OPC_RecordChild0, // #1 = $wt
/* 36899*/        OPC_MoveChild1,
/* 36900*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36903*/        OPC_MoveChild0,
/* 36904*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36907*/        OPC_CheckType, MVT::v4i32,
/* 36909*/        OPC_MoveParent,
/* 36910*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 36912*/        OPC_MoveParent,
/* 36913*/        OPC_CheckType, MVT::v2i64,
/* 36915*/        OPC_MoveParent,
/* 36916*/        OPC_MoveParent,
/* 36917*/        OPC_CheckType, MVT::v2i64,
/* 36919*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36921*/        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)
/* 36929*/      /*Scope*/ 31, /*->36961*/
/* 36930*/        OPC_MoveChild0,
/* 36931*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36934*/        OPC_MoveChild0,
/* 36935*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36938*/        OPC_CheckType, MVT::v4i32,
/* 36940*/        OPC_MoveParent,
/* 36941*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 36943*/        OPC_MoveParent,
/* 36944*/        OPC_RecordChild1, // #1 = $wt
/* 36945*/        OPC_CheckType, MVT::v2i64,
/* 36947*/        OPC_MoveParent,
/* 36948*/        OPC_MoveParent,
/* 36949*/        OPC_CheckType, MVT::v2i64,
/* 36951*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36953*/        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)
/* 36961*/      0, /*End of Scope*/
/* 36962*/    /*Scope*/ 90, /*->37053*/
/* 36963*/      OPC_MoveChild0,
/* 36964*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36967*/      OPC_MoveChild0,
/* 36968*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36971*/      OPC_MoveChild0,
/* 36972*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36975*/      OPC_CheckType, MVT::v4i32,
/* 36977*/      OPC_MoveParent,
/* 36978*/      OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 36980*/      OPC_MoveParent,
/* 36981*/      OPC_MoveChild1,
/* 36982*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 36985*/      OPC_Scope, 32, /*->37019*/ // 2 children in Scope
/* 36987*/        OPC_RecordChild0, // #0 = $wt
/* 36988*/        OPC_MoveChild1,
/* 36989*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36992*/        OPC_MoveChild0,
/* 36993*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36996*/        OPC_CheckType, MVT::v4i32,
/* 36998*/        OPC_MoveParent,
/* 36999*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 37001*/        OPC_MoveParent,
/* 37002*/        OPC_CheckType, MVT::v2i64,
/* 37004*/        OPC_MoveParent,
/* 37005*/        OPC_MoveParent,
/* 37006*/        OPC_RecordChild1, // #1 = $ws
/* 37007*/        OPC_CheckType, MVT::v2i64,
/* 37009*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 37011*/        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)
/* 37019*/      /*Scope*/ 32, /*->37052*/
/* 37020*/        OPC_MoveChild0,
/* 37021*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 37024*/        OPC_MoveChild0,
/* 37025*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37028*/        OPC_CheckType, MVT::v4i32,
/* 37030*/        OPC_MoveParent,
/* 37031*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 37033*/        OPC_MoveParent,
/* 37034*/        OPC_RecordChild1, // #0 = $wt
/* 37035*/        OPC_CheckType, MVT::v2i64,
/* 37037*/        OPC_MoveParent,
/* 37038*/        OPC_MoveParent,
/* 37039*/        OPC_RecordChild1, // #1 = $ws
/* 37040*/        OPC_CheckType, MVT::v2i64,
/* 37042*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 37044*/        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)
/* 37052*/      0, /*End of Scope*/
/* 37053*/    /*Scope*/ 35, /*->37089*/
/* 37054*/      OPC_RecordChild0, // #0 = $ws
/* 37055*/      OPC_MoveChild1,
/* 37056*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 37059*/      OPC_MoveChild0,
/* 37060*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 37063*/      OPC_MoveChild0,
/* 37064*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37067*/      OPC_CheckType, MVT::v4i32,
/* 37069*/      OPC_MoveParent,
/* 37070*/      OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 37072*/      OPC_MoveParent,
/* 37073*/      OPC_RecordChild1, // #1 = $wt
/* 37074*/      OPC_CheckChild1Type, MVT::v2i64,
/* 37076*/      OPC_MoveParent,
/* 37077*/      OPC_CheckType, MVT::v2i64,
/* 37079*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37081*/      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)
/* 37089*/    /*Scope*/ 35, /*->37125*/
/* 37090*/      OPC_MoveChild0,
/* 37091*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 37094*/      OPC_MoveChild0,
/* 37095*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 37098*/      OPC_MoveChild0,
/* 37099*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37102*/      OPC_CheckType, MVT::v4i32,
/* 37104*/      OPC_MoveParent,
/* 37105*/      OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 37107*/      OPC_MoveParent,
/* 37108*/      OPC_RecordChild1, // #0 = $wt
/* 37109*/      OPC_CheckChild1Type, MVT::v2i64,
/* 37111*/      OPC_MoveParent,
/* 37112*/      OPC_RecordChild1, // #1 = $ws
/* 37113*/      OPC_CheckType, MVT::v2i64,
/* 37115*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37117*/      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)
/* 37125*/    /*Scope*/ 63, /*->37189*/
/* 37126*/      OPC_RecordChild0, // #0 = $ws
/* 37127*/      OPC_MoveChild1,
/* 37128*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 37131*/      OPC_MoveChild0,
/* 37132*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37135*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 37137*/      OPC_MoveParent,
/* 37138*/      OPC_RecordChild1, // #1 = $wt
/* 37139*/      OPC_Scope, 15, /*->37156*/ // 3 children in Scope
/* 37141*/        OPC_CheckChild1Type, MVT::v16i8,
/* 37143*/        OPC_MoveParent,
/* 37144*/        OPC_CheckType, MVT::v16i8,
/* 37146*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37148*/        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)
/* 37156*/      /*Scope*/ 15, /*->37172*/
/* 37157*/        OPC_CheckChild1Type, MVT::v8i16,
/* 37159*/        OPC_MoveParent,
/* 37160*/        OPC_CheckType, MVT::v8i16,
/* 37162*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37164*/        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)
/* 37172*/      /*Scope*/ 15, /*->37188*/
/* 37173*/        OPC_CheckChild1Type, MVT::v4i32,
/* 37175*/        OPC_MoveParent,
/* 37176*/        OPC_CheckType, MVT::v4i32,
/* 37178*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37180*/        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)
/* 37188*/      0, /*End of Scope*/
/* 37189*/    /*Scope*/ 65, /*->37255*/
/* 37190*/      OPC_MoveChild0,
/* 37191*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 37194*/      OPC_MoveChild0,
/* 37195*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37198*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 37200*/      OPC_MoveParent,
/* 37201*/      OPC_RecordChild1, // #0 = $wt
/* 37202*/      OPC_Scope, 16, /*->37220*/ // 3 children in Scope
/* 37204*/        OPC_CheckChild1Type, MVT::v16i8,
/* 37206*/        OPC_MoveParent,
/* 37207*/        OPC_RecordChild1, // #1 = $ws
/* 37208*/        OPC_CheckType, MVT::v16i8,
/* 37210*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37212*/        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)
/* 37220*/      /*Scope*/ 16, /*->37237*/
/* 37221*/        OPC_CheckChild1Type, MVT::v8i16,
/* 37223*/        OPC_MoveParent,
/* 37224*/        OPC_RecordChild1, // #1 = $ws
/* 37225*/        OPC_CheckType, MVT::v8i16,
/* 37227*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37229*/        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)
/* 37237*/      /*Scope*/ 16, /*->37254*/
/* 37238*/        OPC_CheckChild1Type, MVT::v4i32,
/* 37240*/        OPC_MoveParent,
/* 37241*/        OPC_RecordChild1, // #1 = $ws
/* 37242*/        OPC_CheckType, MVT::v4i32,
/* 37244*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37246*/        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)
/* 37254*/      0, /*End of Scope*/
/* 37255*/    /*Scope*/ 56|128,1/*184*/, /*->37441*/
/* 37257*/      OPC_RecordChild0, // #0 = $ws
/* 37258*/      OPC_RecordChild1, // #1 = $m
/* 37259*/      OPC_SwitchType /*4 cases */, 61, MVT::v16i8,// ->37323
/* 37262*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37264*/        OPC_Scope, 11, /*->37277*/ // 5 children in Scope
/* 37266*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 37269*/          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)
/* 37277*/        /*Scope*/ 11, /*->37289*/
/* 37278*/          OPC_CheckComplexPat, /*CP*/14, /*#*/1, // selectVSplatUimm8:$u8 #2
/* 37281*/          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)
/* 37289*/        /*Scope*/ 11, /*->37301*/
/* 37290*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 37293*/          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)
/* 37301*/        /*Scope*/ 11, /*->37313*/
/* 37302*/          OPC_CheckComplexPat, /*CP*/14, /*#*/0, // selectVSplatUimm8:$u8 #2
/* 37305*/          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)
/* 37313*/        /*Scope*/ 8, /*->37322*/
/* 37314*/          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)
/* 37322*/        0, /*End of Scope*/
/* 37323*/      /*SwitchType*/ 37, MVT::v8i16,// ->37362
/* 37325*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37327*/        OPC_Scope, 11, /*->37340*/ // 3 children in Scope
/* 37329*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 37332*/          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)
/* 37340*/        /*Scope*/ 11, /*->37352*/
/* 37341*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 37344*/          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)
/* 37352*/        /*Scope*/ 8, /*->37361*/
/* 37353*/          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)
/* 37361*/        0, /*End of Scope*/
/* 37362*/      /*SwitchType*/ 37, MVT::v4i32,// ->37401
/* 37364*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37366*/        OPC_Scope, 11, /*->37379*/ // 3 children in Scope
/* 37368*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 37371*/          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)
/* 37379*/        /*Scope*/ 11, /*->37391*/
/* 37380*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 37383*/          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)
/* 37391*/        /*Scope*/ 8, /*->37400*/
/* 37392*/          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)
/* 37400*/        0, /*End of Scope*/
/* 37401*/      /*SwitchType*/ 37, MVT::v2i64,// ->37440
/* 37403*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37405*/        OPC_Scope, 11, /*->37418*/ // 3 children in Scope
/* 37407*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 37410*/          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)
/* 37418*/        /*Scope*/ 11, /*->37430*/
/* 37419*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 37422*/          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)
/* 37430*/        /*Scope*/ 8, /*->37439*/
/* 37431*/          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)
/* 37439*/        0, /*End of Scope*/
/* 37440*/      0, // EndSwitchType
/* 37441*/    0, /*End of Scope*/
/* 37442*/  /*SwitchOpcode*/ 10|128,8/*1034*/, TARGET_VAL(ISD::SHL),// ->38480
/* 37446*/    OPC_RecordChild0, // #0 = $rt
/* 37447*/    OPC_Scope, 99, /*->37548*/ // 5 children in Scope
/* 37449*/      OPC_RecordChild1, // #1 = $shamt
/* 37450*/      OPC_MoveChild1,
/* 37451*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37454*/      OPC_CheckType, MVT::i32,
/* 37456*/      OPC_Scope, 17, /*->37475*/ // 5 children in Scope
/* 37458*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 37460*/        OPC_MoveParent,
/* 37461*/        OPC_CheckType, MVT::i32,
/* 37463*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 37465*/        OPC_EmitConvertToTarget, 1,
/* 37467*/        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)
/* 37475*/      /*Scope*/ 17, /*->37493*/
/* 37476*/        OPC_CheckPredicate, 36, // Predicate_immZExt6
/* 37478*/        OPC_MoveParent,
/* 37479*/        OPC_CheckType, MVT::i64,
/* 37481*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 37483*/        OPC_EmitConvertToTarget, 1,
/* 37485*/        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)
/* 37493*/      /*Scope*/ 17, /*->37511*/
/* 37494*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 37496*/        OPC_MoveParent,
/* 37497*/        OPC_CheckType, MVT::i32,
/* 37499*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 37501*/        OPC_EmitConvertToTarget, 1,
/* 37503*/        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)
/* 37511*/      /*Scope*/ 17, /*->37529*/
/* 37512*/        OPC_CheckPredicate, 54, // Predicate_immZExt2Shift
/* 37514*/        OPC_MoveParent,
/* 37515*/        OPC_CheckType, MVT::i32,
/* 37517*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 37519*/        OPC_EmitConvertToTarget, 1,
/* 37521*/        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)
/* 37529*/      /*Scope*/ 17, /*->37547*/
/* 37530*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 37532*/        OPC_MoveParent,
/* 37533*/        OPC_CheckType, MVT::i32,
/* 37535*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 37537*/        OPC_EmitConvertToTarget, 1,
/* 37539*/        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)
/* 37547*/      0, /*End of Scope*/
/* 37548*/    /*Scope*/ 31, /*->37580*/
/* 37549*/      OPC_MoveChild1,
/* 37550*/      OPC_CheckOpcode, TARGET_VAL(ISD::TRUNCATE),
/* 37553*/      OPC_RecordChild0, // #1 = $rs
/* 37554*/      OPC_CheckType, MVT::i32,
/* 37556*/      OPC_MoveParent,
/* 37557*/      OPC_CheckType, MVT::i64,
/* 37559*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 37561*/      OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 37564*/      OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 37572*/      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] }))
/* 37580*/    /*Scope*/ 54, /*->37635*/
/* 37581*/      OPC_RecordChild1, // #1 = $rs
/* 37582*/      OPC_CheckChild1Type, MVT::i32,
/* 37584*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->37622
/* 37587*/        OPC_Scope, 10, /*->37599*/ // 3 children in Scope
/* 37589*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 37591*/          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)
/* 37599*/        /*Scope*/ 10, /*->37610*/
/* 37600*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 37602*/          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)
/* 37610*/        /*Scope*/ 10, /*->37621*/
/* 37611*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 37613*/          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)
/* 37621*/        0, /*End of Scope*/
/* 37622*/      /*SwitchType*/ 10, MVT::i64,// ->37634
/* 37624*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 37626*/        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)
/* 37634*/      0, // EndSwitchType
/* 37635*/    /*Scope*/ 82|128,5/*722*/, /*->38359*/
/* 37637*/      OPC_MoveChild1,
/* 37638*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 37641*/      OPC_Scope, 45|128,1/*173*/, /*->37817*/ // 8 children in Scope
/* 37644*/        OPC_RecordChild0, // #1 = $wt
/* 37645*/        OPC_MoveChild1,
/* 37646*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37649*/        OPC_MoveChild0,
/* 37650*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37653*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37655*/        OPC_CheckType, MVT::i32,
/* 37657*/        OPC_MoveParent,
/* 37658*/        OPC_MoveChild1,
/* 37659*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37662*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37664*/        OPC_CheckType, MVT::i32,
/* 37666*/        OPC_MoveParent,
/* 37667*/        OPC_MoveChild2,
/* 37668*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37671*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37673*/        OPC_CheckType, MVT::i32,
/* 37675*/        OPC_MoveParent,
/* 37676*/        OPC_MoveChild3,
/* 37677*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37680*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37682*/        OPC_CheckType, MVT::i32,
/* 37684*/        OPC_MoveParent,
/* 37685*/        OPC_MoveChild4,
/* 37686*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37689*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37691*/        OPC_CheckType, MVT::i32,
/* 37693*/        OPC_MoveParent,
/* 37694*/        OPC_MoveChild5,
/* 37695*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37698*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37700*/        OPC_CheckType, MVT::i32,
/* 37702*/        OPC_MoveParent,
/* 37703*/        OPC_MoveChild6,
/* 37704*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37707*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37709*/        OPC_CheckType, MVT::i32,
/* 37711*/        OPC_MoveParent,
/* 37712*/        OPC_MoveChild7,
/* 37713*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37716*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37718*/        OPC_CheckType, MVT::i32,
/* 37720*/        OPC_MoveParent,
/* 37721*/        OPC_MoveChild, 8,
/* 37723*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37726*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37728*/        OPC_CheckType, MVT::i32,
/* 37730*/        OPC_MoveParent,
/* 37731*/        OPC_MoveChild, 9,
/* 37733*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37736*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37738*/        OPC_CheckType, MVT::i32,
/* 37740*/        OPC_MoveParent,
/* 37741*/        OPC_MoveChild, 10,
/* 37743*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37746*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37748*/        OPC_CheckType, MVT::i32,
/* 37750*/        OPC_MoveParent,
/* 37751*/        OPC_MoveChild, 11,
/* 37753*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37756*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37758*/        OPC_CheckType, MVT::i32,
/* 37760*/        OPC_MoveParent,
/* 37761*/        OPC_MoveChild, 12,
/* 37763*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37766*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37768*/        OPC_CheckType, MVT::i32,
/* 37770*/        OPC_MoveParent,
/* 37771*/        OPC_MoveChild, 13,
/* 37773*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37776*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37778*/        OPC_CheckType, MVT::i32,
/* 37780*/        OPC_MoveParent,
/* 37781*/        OPC_MoveChild, 14,
/* 37783*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37786*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37788*/        OPC_CheckType, MVT::i32,
/* 37790*/        OPC_MoveParent,
/* 37791*/        OPC_MoveChild, 15,
/* 37793*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37796*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37798*/        OPC_CheckType, MVT::i32,
/* 37800*/        OPC_MoveParent,
/* 37801*/        OPC_MoveParent,
/* 37802*/        OPC_CheckType, MVT::v16i8,
/* 37804*/        OPC_MoveParent,
/* 37805*/        OPC_CheckType, MVT::v16i8,
/* 37807*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 37809*/        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)
/* 37817*/      /*Scope*/ 45|128,1/*173*/, /*->37992*/
/* 37819*/        OPC_MoveChild0,
/* 37820*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37823*/        OPC_MoveChild0,
/* 37824*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37827*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37829*/        OPC_CheckType, MVT::i32,
/* 37831*/        OPC_MoveParent,
/* 37832*/        OPC_MoveChild1,
/* 37833*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37836*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37838*/        OPC_CheckType, MVT::i32,
/* 37840*/        OPC_MoveParent,
/* 37841*/        OPC_MoveChild2,
/* 37842*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37845*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37847*/        OPC_CheckType, MVT::i32,
/* 37849*/        OPC_MoveParent,
/* 37850*/        OPC_MoveChild3,
/* 37851*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37854*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37856*/        OPC_CheckType, MVT::i32,
/* 37858*/        OPC_MoveParent,
/* 37859*/        OPC_MoveChild4,
/* 37860*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37863*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37865*/        OPC_CheckType, MVT::i32,
/* 37867*/        OPC_MoveParent,
/* 37868*/        OPC_MoveChild5,
/* 37869*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37872*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37874*/        OPC_CheckType, MVT::i32,
/* 37876*/        OPC_MoveParent,
/* 37877*/        OPC_MoveChild6,
/* 37878*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37881*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37883*/        OPC_CheckType, MVT::i32,
/* 37885*/        OPC_MoveParent,
/* 37886*/        OPC_MoveChild7,
/* 37887*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37890*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37892*/        OPC_CheckType, MVT::i32,
/* 37894*/        OPC_MoveParent,
/* 37895*/        OPC_MoveChild, 8,
/* 37897*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37900*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37902*/        OPC_CheckType, MVT::i32,
/* 37904*/        OPC_MoveParent,
/* 37905*/        OPC_MoveChild, 9,
/* 37907*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37910*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37912*/        OPC_CheckType, MVT::i32,
/* 37914*/        OPC_MoveParent,
/* 37915*/        OPC_MoveChild, 10,
/* 37917*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37920*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37922*/        OPC_CheckType, MVT::i32,
/* 37924*/        OPC_MoveParent,
/* 37925*/        OPC_MoveChild, 11,
/* 37927*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37930*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37932*/        OPC_CheckType, MVT::i32,
/* 37934*/        OPC_MoveParent,
/* 37935*/        OPC_MoveChild, 12,
/* 37937*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37940*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37942*/        OPC_CheckType, MVT::i32,
/* 37944*/        OPC_MoveParent,
/* 37945*/        OPC_MoveChild, 13,
/* 37947*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37950*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37952*/        OPC_CheckType, MVT::i32,
/* 37954*/        OPC_MoveParent,
/* 37955*/        OPC_MoveChild, 14,
/* 37957*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37960*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37962*/        OPC_CheckType, MVT::i32,
/* 37964*/        OPC_MoveParent,
/* 37965*/        OPC_MoveChild, 15,
/* 37967*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37970*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37972*/        OPC_CheckType, MVT::i32,
/* 37974*/        OPC_MoveParent,
/* 37975*/        OPC_MoveParent,
/* 37976*/        OPC_RecordChild1, // #1 = $wt
/* 37977*/        OPC_CheckType, MVT::v16i8,
/* 37979*/        OPC_MoveParent,
/* 37980*/        OPC_CheckType, MVT::v16i8,
/* 37982*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 37984*/        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)
/* 37992*/      /*Scope*/ 93, /*->38086*/
/* 37993*/        OPC_RecordChild0, // #1 = $wt
/* 37994*/        OPC_MoveChild1,
/* 37995*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37998*/        OPC_MoveChild0,
/* 37999*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38002*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38004*/        OPC_CheckType, MVT::i32,
/* 38006*/        OPC_MoveParent,
/* 38007*/        OPC_MoveChild1,
/* 38008*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38011*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38013*/        OPC_CheckType, MVT::i32,
/* 38015*/        OPC_MoveParent,
/* 38016*/        OPC_MoveChild2,
/* 38017*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38020*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38022*/        OPC_CheckType, MVT::i32,
/* 38024*/        OPC_MoveParent,
/* 38025*/        OPC_MoveChild3,
/* 38026*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38029*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38031*/        OPC_CheckType, MVT::i32,
/* 38033*/        OPC_MoveParent,
/* 38034*/        OPC_MoveChild4,
/* 38035*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38038*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38040*/        OPC_CheckType, MVT::i32,
/* 38042*/        OPC_MoveParent,
/* 38043*/        OPC_MoveChild5,
/* 38044*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38047*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38049*/        OPC_CheckType, MVT::i32,
/* 38051*/        OPC_MoveParent,
/* 38052*/        OPC_MoveChild6,
/* 38053*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38056*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38058*/        OPC_CheckType, MVT::i32,
/* 38060*/        OPC_MoveParent,
/* 38061*/        OPC_MoveChild7,
/* 38062*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38065*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38067*/        OPC_CheckType, MVT::i32,
/* 38069*/        OPC_MoveParent,
/* 38070*/        OPC_MoveParent,
/* 38071*/        OPC_CheckType, MVT::v8i16,
/* 38073*/        OPC_MoveParent,
/* 38074*/        OPC_CheckType, MVT::v8i16,
/* 38076*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38078*/        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)
/* 38086*/      /*Scope*/ 93, /*->38180*/
/* 38087*/        OPC_MoveChild0,
/* 38088*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38091*/        OPC_MoveChild0,
/* 38092*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38095*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38097*/        OPC_CheckType, MVT::i32,
/* 38099*/        OPC_MoveParent,
/* 38100*/        OPC_MoveChild1,
/* 38101*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38104*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38106*/        OPC_CheckType, MVT::i32,
/* 38108*/        OPC_MoveParent,
/* 38109*/        OPC_MoveChild2,
/* 38110*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38113*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38115*/        OPC_CheckType, MVT::i32,
/* 38117*/        OPC_MoveParent,
/* 38118*/        OPC_MoveChild3,
/* 38119*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38122*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38124*/        OPC_CheckType, MVT::i32,
/* 38126*/        OPC_MoveParent,
/* 38127*/        OPC_MoveChild4,
/* 38128*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38131*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38133*/        OPC_CheckType, MVT::i32,
/* 38135*/        OPC_MoveParent,
/* 38136*/        OPC_MoveChild5,
/* 38137*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38140*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38142*/        OPC_CheckType, MVT::i32,
/* 38144*/        OPC_MoveParent,
/* 38145*/        OPC_MoveChild6,
/* 38146*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38149*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38151*/        OPC_CheckType, MVT::i32,
/* 38153*/        OPC_MoveParent,
/* 38154*/        OPC_MoveChild7,
/* 38155*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38158*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38160*/        OPC_CheckType, MVT::i32,
/* 38162*/        OPC_MoveParent,
/* 38163*/        OPC_MoveParent,
/* 38164*/        OPC_RecordChild1, // #1 = $wt
/* 38165*/        OPC_CheckType, MVT::v8i16,
/* 38167*/        OPC_MoveParent,
/* 38168*/        OPC_CheckType, MVT::v8i16,
/* 38170*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38172*/        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)
/* 38180*/      /*Scope*/ 57, /*->38238*/
/* 38181*/        OPC_RecordChild0, // #1 = $wt
/* 38182*/        OPC_MoveChild1,
/* 38183*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38186*/        OPC_MoveChild0,
/* 38187*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38190*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38192*/        OPC_CheckType, MVT::i32,
/* 38194*/        OPC_MoveParent,
/* 38195*/        OPC_MoveChild1,
/* 38196*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38199*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38201*/        OPC_CheckType, MVT::i32,
/* 38203*/        OPC_MoveParent,
/* 38204*/        OPC_MoveChild2,
/* 38205*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38208*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38210*/        OPC_CheckType, MVT::i32,
/* 38212*/        OPC_MoveParent,
/* 38213*/        OPC_MoveChild3,
/* 38214*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38217*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38219*/        OPC_CheckType, MVT::i32,
/* 38221*/        OPC_MoveParent,
/* 38222*/        OPC_MoveParent,
/* 38223*/        OPC_CheckType, MVT::v4i32,
/* 38225*/        OPC_MoveParent,
/* 38226*/        OPC_CheckType, MVT::v4i32,
/* 38228*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38230*/        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)
/* 38238*/      /*Scope*/ 57, /*->38296*/
/* 38239*/        OPC_MoveChild0,
/* 38240*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38243*/        OPC_MoveChild0,
/* 38244*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38247*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38249*/        OPC_CheckType, MVT::i32,
/* 38251*/        OPC_MoveParent,
/* 38252*/        OPC_MoveChild1,
/* 38253*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38256*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38258*/        OPC_CheckType, MVT::i32,
/* 38260*/        OPC_MoveParent,
/* 38261*/        OPC_MoveChild2,
/* 38262*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38265*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38267*/        OPC_CheckType, MVT::i32,
/* 38269*/        OPC_MoveParent,
/* 38270*/        OPC_MoveChild3,
/* 38271*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38274*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38276*/        OPC_CheckType, MVT::i32,
/* 38278*/        OPC_MoveParent,
/* 38279*/        OPC_MoveParent,
/* 38280*/        OPC_RecordChild1, // #1 = $wt
/* 38281*/        OPC_CheckType, MVT::v4i32,
/* 38283*/        OPC_MoveParent,
/* 38284*/        OPC_CheckType, MVT::v4i32,
/* 38286*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38288*/        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)
/* 38296*/      /*Scope*/ 30, /*->38327*/
/* 38297*/        OPC_RecordChild0, // #1 = $wt
/* 38298*/        OPC_MoveChild1,
/* 38299*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 38302*/        OPC_MoveChild0,
/* 38303*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38306*/        OPC_CheckType, MVT::v4i32,
/* 38308*/        OPC_MoveParent,
/* 38309*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 38311*/        OPC_MoveParent,
/* 38312*/        OPC_CheckType, MVT::v2i64,
/* 38314*/        OPC_MoveParent,
/* 38315*/        OPC_CheckType, MVT::v2i64,
/* 38317*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38319*/        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)
/* 38327*/      /*Scope*/ 30, /*->38358*/
/* 38328*/        OPC_MoveChild0,
/* 38329*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 38332*/        OPC_MoveChild0,
/* 38333*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38336*/        OPC_CheckType, MVT::v4i32,
/* 38338*/        OPC_MoveParent,
/* 38339*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 38341*/        OPC_MoveParent,
/* 38342*/        OPC_RecordChild1, // #1 = $wt
/* 38343*/        OPC_CheckType, MVT::v2i64,
/* 38345*/        OPC_MoveParent,
/* 38346*/        OPC_CheckType, MVT::v2i64,
/* 38348*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38350*/        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)
/* 38358*/      0, /*End of Scope*/
/* 38359*/    /*Scope*/ 119, /*->38479*/
/* 38360*/      OPC_RecordChild1, // #1 = $m
/* 38361*/      OPC_SwitchType /*4 cases */, 27, MVT::v16i8,// ->38391
/* 38364*/        OPC_CheckChild1Type, MVT::v16i8,
/* 38366*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 38368*/        OPC_Scope, 11, /*->38381*/ // 2 children in Scope
/* 38370*/          OPC_CheckComplexPat, /*CP*/24, /*#*/1, // selectVSplatUimm3:$m #2
/* 38373*/          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)
/* 38381*/        /*Scope*/ 8, /*->38390*/
/* 38382*/          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)
/* 38390*/        0, /*End of Scope*/
/* 38391*/      /*SwitchType*/ 27, MVT::v8i16,// ->38420
/* 38393*/        OPC_CheckChild1Type, MVT::v8i16,
/* 38395*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 38397*/        OPC_Scope, 11, /*->38410*/ // 2 children in Scope
/* 38399*/          OPC_CheckComplexPat, /*CP*/25, /*#*/1, // selectVSplatUimm4:$m #2
/* 38402*/          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)
/* 38410*/        /*Scope*/ 8, /*->38419*/
/* 38411*/          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)
/* 38419*/        0, /*End of Scope*/
/* 38420*/      /*SwitchType*/ 27, MVT::v4i32,// ->38449
/* 38422*/        OPC_CheckChild1Type, MVT::v4i32,
/* 38424*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 38426*/        OPC_Scope, 11, /*->38439*/ // 2 children in Scope
/* 38428*/          OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$m #2
/* 38431*/          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)
/* 38439*/        /*Scope*/ 8, /*->38448*/
/* 38440*/          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)
/* 38448*/        0, /*End of Scope*/
/* 38449*/      /*SwitchType*/ 27, MVT::v2i64,// ->38478
/* 38451*/        OPC_CheckChild1Type, MVT::v2i64,
/* 38453*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 38455*/        OPC_Scope, 11, /*->38468*/ // 2 children in Scope
/* 38457*/          OPC_CheckComplexPat, /*CP*/26, /*#*/1, // selectVSplatUimm6:$m #2
/* 38460*/          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)
/* 38468*/        /*Scope*/ 8, /*->38477*/
/* 38469*/          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)
/* 38477*/        0, /*End of Scope*/
/* 38478*/      0, // EndSwitchType
/* 38479*/    0, /*End of Scope*/
/* 38480*/  /*SwitchOpcode*/ 10|128,8/*1034*/, TARGET_VAL(ISD::SRL),// ->39518
/* 38484*/    OPC_RecordChild0, // #0 = $rt
/* 38485*/    OPC_Scope, 99, /*->38586*/ // 5 children in Scope
/* 38487*/      OPC_RecordChild1, // #1 = $shamt
/* 38488*/      OPC_MoveChild1,
/* 38489*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38492*/      OPC_CheckType, MVT::i32,
/* 38494*/      OPC_Scope, 17, /*->38513*/ // 5 children in Scope
/* 38496*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 38498*/        OPC_MoveParent,
/* 38499*/        OPC_CheckType, MVT::i32,
/* 38501*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 38503*/        OPC_EmitConvertToTarget, 1,
/* 38505*/        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)
/* 38513*/      /*Scope*/ 17, /*->38531*/
/* 38514*/        OPC_CheckPredicate, 36, // Predicate_immZExt6
/* 38516*/        OPC_MoveParent,
/* 38517*/        OPC_CheckType, MVT::i64,
/* 38519*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 38521*/        OPC_EmitConvertToTarget, 1,
/* 38523*/        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)
/* 38531*/      /*Scope*/ 17, /*->38549*/
/* 38532*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 38534*/        OPC_MoveParent,
/* 38535*/        OPC_CheckType, MVT::i32,
/* 38537*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 38539*/        OPC_EmitConvertToTarget, 1,
/* 38541*/        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)
/* 38549*/      /*Scope*/ 17, /*->38567*/
/* 38550*/        OPC_CheckPredicate, 54, // Predicate_immZExt2Shift
/* 38552*/        OPC_MoveParent,
/* 38553*/        OPC_CheckType, MVT::i32,
/* 38555*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 38557*/        OPC_EmitConvertToTarget, 1,
/* 38559*/        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)
/* 38567*/      /*Scope*/ 17, /*->38585*/
/* 38568*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 38570*/        OPC_MoveParent,
/* 38571*/        OPC_CheckType, MVT::i32,
/* 38573*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 38575*/        OPC_EmitConvertToTarget, 1,
/* 38577*/        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)
/* 38585*/      0, /*End of Scope*/
/* 38586*/    /*Scope*/ 31, /*->38618*/
/* 38587*/      OPC_MoveChild1,
/* 38588*/      OPC_CheckOpcode, TARGET_VAL(ISD::TRUNCATE),
/* 38591*/      OPC_RecordChild0, // #1 = $rs
/* 38592*/      OPC_CheckType, MVT::i32,
/* 38594*/      OPC_MoveParent,
/* 38595*/      OPC_CheckType, MVT::i64,
/* 38597*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 38599*/      OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 38602*/      OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 38610*/      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] }))
/* 38618*/    /*Scope*/ 54, /*->38673*/
/* 38619*/      OPC_RecordChild1, // #1 = $rs
/* 38620*/      OPC_CheckChild1Type, MVT::i32,
/* 38622*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->38660
/* 38625*/        OPC_Scope, 10, /*->38637*/ // 3 children in Scope
/* 38627*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 38629*/          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)
/* 38637*/        /*Scope*/ 10, /*->38648*/
/* 38638*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 38640*/          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)
/* 38648*/        /*Scope*/ 10, /*->38659*/
/* 38649*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 38651*/          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)
/* 38659*/        0, /*End of Scope*/
/* 38660*/      /*SwitchType*/ 10, MVT::i64,// ->38672
/* 38662*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 38664*/        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)
/* 38672*/      0, // EndSwitchType
/* 38673*/    /*Scope*/ 82|128,5/*722*/, /*->39397*/
/* 38675*/      OPC_MoveChild1,
/* 38676*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 38679*/      OPC_Scope, 45|128,1/*173*/, /*->38855*/ // 8 children in Scope
/* 38682*/        OPC_RecordChild0, // #1 = $wt
/* 38683*/        OPC_MoveChild1,
/* 38684*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38687*/        OPC_MoveChild0,
/* 38688*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38691*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38693*/        OPC_CheckType, MVT::i32,
/* 38695*/        OPC_MoveParent,
/* 38696*/        OPC_MoveChild1,
/* 38697*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38700*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38702*/        OPC_CheckType, MVT::i32,
/* 38704*/        OPC_MoveParent,
/* 38705*/        OPC_MoveChild2,
/* 38706*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38709*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38711*/        OPC_CheckType, MVT::i32,
/* 38713*/        OPC_MoveParent,
/* 38714*/        OPC_MoveChild3,
/* 38715*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38718*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38720*/        OPC_CheckType, MVT::i32,
/* 38722*/        OPC_MoveParent,
/* 38723*/        OPC_MoveChild4,
/* 38724*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38727*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38729*/        OPC_CheckType, MVT::i32,
/* 38731*/        OPC_MoveParent,
/* 38732*/        OPC_MoveChild5,
/* 38733*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38736*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38738*/        OPC_CheckType, MVT::i32,
/* 38740*/        OPC_MoveParent,
/* 38741*/        OPC_MoveChild6,
/* 38742*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38745*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38747*/        OPC_CheckType, MVT::i32,
/* 38749*/        OPC_MoveParent,
/* 38750*/        OPC_MoveChild7,
/* 38751*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38754*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38756*/        OPC_CheckType, MVT::i32,
/* 38758*/        OPC_MoveParent,
/* 38759*/        OPC_MoveChild, 8,
/* 38761*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38764*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38766*/        OPC_CheckType, MVT::i32,
/* 38768*/        OPC_MoveParent,
/* 38769*/        OPC_MoveChild, 9,
/* 38771*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38774*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38776*/        OPC_CheckType, MVT::i32,
/* 38778*/        OPC_MoveParent,
/* 38779*/        OPC_MoveChild, 10,
/* 38781*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38784*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38786*/        OPC_CheckType, MVT::i32,
/* 38788*/        OPC_MoveParent,
/* 38789*/        OPC_MoveChild, 11,
/* 38791*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38794*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38796*/        OPC_CheckType, MVT::i32,
/* 38798*/        OPC_MoveParent,
/* 38799*/        OPC_MoveChild, 12,
/* 38801*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38804*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38806*/        OPC_CheckType, MVT::i32,
/* 38808*/        OPC_MoveParent,
/* 38809*/        OPC_MoveChild, 13,
/* 38811*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38814*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38816*/        OPC_CheckType, MVT::i32,
/* 38818*/        OPC_MoveParent,
/* 38819*/        OPC_MoveChild, 14,
/* 38821*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38824*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38826*/        OPC_CheckType, MVT::i32,
/* 38828*/        OPC_MoveParent,
/* 38829*/        OPC_MoveChild, 15,
/* 38831*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38834*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38836*/        OPC_CheckType, MVT::i32,
/* 38838*/        OPC_MoveParent,
/* 38839*/        OPC_MoveParent,
/* 38840*/        OPC_CheckType, MVT::v16i8,
/* 38842*/        OPC_MoveParent,
/* 38843*/        OPC_CheckType, MVT::v16i8,
/* 38845*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38847*/        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)
/* 38855*/      /*Scope*/ 45|128,1/*173*/, /*->39030*/
/* 38857*/        OPC_MoveChild0,
/* 38858*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38861*/        OPC_MoveChild0,
/* 38862*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38865*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38867*/        OPC_CheckType, MVT::i32,
/* 38869*/        OPC_MoveParent,
/* 38870*/        OPC_MoveChild1,
/* 38871*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38874*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38876*/        OPC_CheckType, MVT::i32,
/* 38878*/        OPC_MoveParent,
/* 38879*/        OPC_MoveChild2,
/* 38880*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38883*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38885*/        OPC_CheckType, MVT::i32,
/* 38887*/        OPC_MoveParent,
/* 38888*/        OPC_MoveChild3,
/* 38889*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38892*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38894*/        OPC_CheckType, MVT::i32,
/* 38896*/        OPC_MoveParent,
/* 38897*/        OPC_MoveChild4,
/* 38898*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38901*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38903*/        OPC_CheckType, MVT::i32,
/* 38905*/        OPC_MoveParent,
/* 38906*/        OPC_MoveChild5,
/* 38907*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38910*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38912*/        OPC_CheckType, MVT::i32,
/* 38914*/        OPC_MoveParent,
/* 38915*/        OPC_MoveChild6,
/* 38916*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38919*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38921*/        OPC_CheckType, MVT::i32,
/* 38923*/        OPC_MoveParent,
/* 38924*/        OPC_MoveChild7,
/* 38925*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38928*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38930*/        OPC_CheckType, MVT::i32,
/* 38932*/        OPC_MoveParent,
/* 38933*/        OPC_MoveChild, 8,
/* 38935*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38938*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38940*/        OPC_CheckType, MVT::i32,
/* 38942*/        OPC_MoveParent,
/* 38943*/        OPC_MoveChild, 9,
/* 38945*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38948*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38950*/        OPC_CheckType, MVT::i32,
/* 38952*/        OPC_MoveParent,
/* 38953*/        OPC_MoveChild, 10,
/* 38955*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38958*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38960*/        OPC_CheckType, MVT::i32,
/* 38962*/        OPC_MoveParent,
/* 38963*/        OPC_MoveChild, 11,
/* 38965*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38968*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38970*/        OPC_CheckType, MVT::i32,
/* 38972*/        OPC_MoveParent,
/* 38973*/        OPC_MoveChild, 12,
/* 38975*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38978*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38980*/        OPC_CheckType, MVT::i32,
/* 38982*/        OPC_MoveParent,
/* 38983*/        OPC_MoveChild, 13,
/* 38985*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38988*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38990*/        OPC_CheckType, MVT::i32,
/* 38992*/        OPC_MoveParent,
/* 38993*/        OPC_MoveChild, 14,
/* 38995*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38998*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39000*/        OPC_CheckType, MVT::i32,
/* 39002*/        OPC_MoveParent,
/* 39003*/        OPC_MoveChild, 15,
/* 39005*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39008*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39010*/        OPC_CheckType, MVT::i32,
/* 39012*/        OPC_MoveParent,
/* 39013*/        OPC_MoveParent,
/* 39014*/        OPC_RecordChild1, // #1 = $wt
/* 39015*/        OPC_CheckType, MVT::v16i8,
/* 39017*/        OPC_MoveParent,
/* 39018*/        OPC_CheckType, MVT::v16i8,
/* 39020*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39022*/        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)
/* 39030*/      /*Scope*/ 93, /*->39124*/
/* 39031*/        OPC_RecordChild0, // #1 = $wt
/* 39032*/        OPC_MoveChild1,
/* 39033*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39036*/        OPC_MoveChild0,
/* 39037*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39040*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39042*/        OPC_CheckType, MVT::i32,
/* 39044*/        OPC_MoveParent,
/* 39045*/        OPC_MoveChild1,
/* 39046*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39049*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39051*/        OPC_CheckType, MVT::i32,
/* 39053*/        OPC_MoveParent,
/* 39054*/        OPC_MoveChild2,
/* 39055*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39058*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39060*/        OPC_CheckType, MVT::i32,
/* 39062*/        OPC_MoveParent,
/* 39063*/        OPC_MoveChild3,
/* 39064*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39067*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39069*/        OPC_CheckType, MVT::i32,
/* 39071*/        OPC_MoveParent,
/* 39072*/        OPC_MoveChild4,
/* 39073*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39076*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39078*/        OPC_CheckType, MVT::i32,
/* 39080*/        OPC_MoveParent,
/* 39081*/        OPC_MoveChild5,
/* 39082*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39085*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39087*/        OPC_CheckType, MVT::i32,
/* 39089*/        OPC_MoveParent,
/* 39090*/        OPC_MoveChild6,
/* 39091*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39094*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39096*/        OPC_CheckType, MVT::i32,
/* 39098*/        OPC_MoveParent,
/* 39099*/        OPC_MoveChild7,
/* 39100*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39103*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39105*/        OPC_CheckType, MVT::i32,
/* 39107*/        OPC_MoveParent,
/* 39108*/        OPC_MoveParent,
/* 39109*/        OPC_CheckType, MVT::v8i16,
/* 39111*/        OPC_MoveParent,
/* 39112*/        OPC_CheckType, MVT::v8i16,
/* 39114*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39116*/        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)
/* 39124*/      /*Scope*/ 93, /*->39218*/
/* 39125*/        OPC_MoveChild0,
/* 39126*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39129*/        OPC_MoveChild0,
/* 39130*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39133*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39135*/        OPC_CheckType, MVT::i32,
/* 39137*/        OPC_MoveParent,
/* 39138*/        OPC_MoveChild1,
/* 39139*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39142*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39144*/        OPC_CheckType, MVT::i32,
/* 39146*/        OPC_MoveParent,
/* 39147*/        OPC_MoveChild2,
/* 39148*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39151*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39153*/        OPC_CheckType, MVT::i32,
/* 39155*/        OPC_MoveParent,
/* 39156*/        OPC_MoveChild3,
/* 39157*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39160*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39162*/        OPC_CheckType, MVT::i32,
/* 39164*/        OPC_MoveParent,
/* 39165*/        OPC_MoveChild4,
/* 39166*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39169*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39171*/        OPC_CheckType, MVT::i32,
/* 39173*/        OPC_MoveParent,
/* 39174*/        OPC_MoveChild5,
/* 39175*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39178*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39180*/        OPC_CheckType, MVT::i32,
/* 39182*/        OPC_MoveParent,
/* 39183*/        OPC_MoveChild6,
/* 39184*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39187*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39189*/        OPC_CheckType, MVT::i32,
/* 39191*/        OPC_MoveParent,
/* 39192*/        OPC_MoveChild7,
/* 39193*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39196*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39198*/        OPC_CheckType, MVT::i32,
/* 39200*/        OPC_MoveParent,
/* 39201*/        OPC_MoveParent,
/* 39202*/        OPC_RecordChild1, // #1 = $wt
/* 39203*/        OPC_CheckType, MVT::v8i16,
/* 39205*/        OPC_MoveParent,
/* 39206*/        OPC_CheckType, MVT::v8i16,
/* 39208*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39210*/        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)
/* 39218*/      /*Scope*/ 57, /*->39276*/
/* 39219*/        OPC_RecordChild0, // #1 = $wt
/* 39220*/        OPC_MoveChild1,
/* 39221*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39224*/        OPC_MoveChild0,
/* 39225*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39228*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39230*/        OPC_CheckType, MVT::i32,
/* 39232*/        OPC_MoveParent,
/* 39233*/        OPC_MoveChild1,
/* 39234*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39237*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39239*/        OPC_CheckType, MVT::i32,
/* 39241*/        OPC_MoveParent,
/* 39242*/        OPC_MoveChild2,
/* 39243*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39246*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39248*/        OPC_CheckType, MVT::i32,
/* 39250*/        OPC_MoveParent,
/* 39251*/        OPC_MoveChild3,
/* 39252*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39255*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39257*/        OPC_CheckType, MVT::i32,
/* 39259*/        OPC_MoveParent,
/* 39260*/        OPC_MoveParent,
/* 39261*/        OPC_CheckType, MVT::v4i32,
/* 39263*/        OPC_MoveParent,
/* 39264*/        OPC_CheckType, MVT::v4i32,
/* 39266*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39268*/        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)
/* 39276*/      /*Scope*/ 57, /*->39334*/
/* 39277*/        OPC_MoveChild0,
/* 39278*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39281*/        OPC_MoveChild0,
/* 39282*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39285*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39287*/        OPC_CheckType, MVT::i32,
/* 39289*/        OPC_MoveParent,
/* 39290*/        OPC_MoveChild1,
/* 39291*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39294*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39296*/        OPC_CheckType, MVT::i32,
/* 39298*/        OPC_MoveParent,
/* 39299*/        OPC_MoveChild2,
/* 39300*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39303*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39305*/        OPC_CheckType, MVT::i32,
/* 39307*/        OPC_MoveParent,
/* 39308*/        OPC_MoveChild3,
/* 39309*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39312*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39314*/        OPC_CheckType, MVT::i32,
/* 39316*/        OPC_MoveParent,
/* 39317*/        OPC_MoveParent,
/* 39318*/        OPC_RecordChild1, // #1 = $wt
/* 39319*/        OPC_CheckType, MVT::v4i32,
/* 39321*/        OPC_MoveParent,
/* 39322*/        OPC_CheckType, MVT::v4i32,
/* 39324*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39326*/        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)
/* 39334*/      /*Scope*/ 30, /*->39365*/
/* 39335*/        OPC_RecordChild0, // #1 = $wt
/* 39336*/        OPC_MoveChild1,
/* 39337*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 39340*/        OPC_MoveChild0,
/* 39341*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39344*/        OPC_CheckType, MVT::v4i32,
/* 39346*/        OPC_MoveParent,
/* 39347*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 39349*/        OPC_MoveParent,
/* 39350*/        OPC_CheckType, MVT::v2i64,
/* 39352*/        OPC_MoveParent,
/* 39353*/        OPC_CheckType, MVT::v2i64,
/* 39355*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39357*/        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)
/* 39365*/      /*Scope*/ 30, /*->39396*/
/* 39366*/        OPC_MoveChild0,
/* 39367*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 39370*/        OPC_MoveChild0,
/* 39371*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39374*/        OPC_CheckType, MVT::v4i32,
/* 39376*/        OPC_MoveParent,
/* 39377*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 39379*/        OPC_MoveParent,
/* 39380*/        OPC_RecordChild1, // #1 = $wt
/* 39381*/        OPC_CheckType, MVT::v2i64,
/* 39383*/        OPC_MoveParent,
/* 39384*/        OPC_CheckType, MVT::v2i64,
/* 39386*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39388*/        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)
/* 39396*/      0, /*End of Scope*/
/* 39397*/    /*Scope*/ 119, /*->39517*/
/* 39398*/      OPC_RecordChild1, // #1 = $m
/* 39399*/      OPC_SwitchType /*4 cases */, 27, MVT::v16i8,// ->39429
/* 39402*/        OPC_CheckChild1Type, MVT::v16i8,
/* 39404*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 39406*/        OPC_Scope, 11, /*->39419*/ // 2 children in Scope
/* 39408*/          OPC_CheckComplexPat, /*CP*/24, /*#*/1, // selectVSplatUimm3:$m #2
/* 39411*/          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)
/* 39419*/        /*Scope*/ 8, /*->39428*/
/* 39420*/          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)
/* 39428*/        0, /*End of Scope*/
/* 39429*/      /*SwitchType*/ 27, MVT::v8i16,// ->39458
/* 39431*/        OPC_CheckChild1Type, MVT::v8i16,
/* 39433*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 39435*/        OPC_Scope, 11, /*->39448*/ // 2 children in Scope
/* 39437*/          OPC_CheckComplexPat, /*CP*/25, /*#*/1, // selectVSplatUimm4:$m #2
/* 39440*/          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)
/* 39448*/        /*Scope*/ 8, /*->39457*/
/* 39449*/          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)
/* 39457*/        0, /*End of Scope*/
/* 39458*/      /*SwitchType*/ 27, MVT::v4i32,// ->39487
/* 39460*/        OPC_CheckChild1Type, MVT::v4i32,
/* 39462*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 39464*/        OPC_Scope, 11, /*->39477*/ // 2 children in Scope
/* 39466*/          OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$m #2
/* 39469*/          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)
/* 39477*/        /*Scope*/ 8, /*->39486*/
/* 39478*/          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)
/* 39486*/        0, /*End of Scope*/
/* 39487*/      /*SwitchType*/ 27, MVT::v2i64,// ->39516
/* 39489*/        OPC_CheckChild1Type, MVT::v2i64,
/* 39491*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 39493*/        OPC_Scope, 11, /*->39506*/ // 2 children in Scope
/* 39495*/          OPC_CheckComplexPat, /*CP*/26, /*#*/1, // selectVSplatUimm6:$m #2
/* 39498*/          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)
/* 39506*/        /*Scope*/ 8, /*->39515*/
/* 39507*/          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)
/* 39515*/        0, /*End of Scope*/
/* 39516*/      0, // EndSwitchType
/* 39517*/    0, /*End of Scope*/
/* 39518*/  /*SwitchOpcode*/ 118|128,7/*1014*/, TARGET_VAL(ISD::SRA),// ->40536
/* 39522*/    OPC_RecordChild0, // #0 = $rt
/* 39523*/    OPC_Scope, 79, /*->39604*/ // 5 children in Scope
/* 39525*/      OPC_RecordChild1, // #1 = $shamt
/* 39526*/      OPC_MoveChild1,
/* 39527*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39530*/      OPC_CheckType, MVT::i32,
/* 39532*/      OPC_Scope, 17, /*->39551*/ // 3 children in Scope
/* 39534*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 39536*/        OPC_MoveParent,
/* 39537*/        OPC_CheckType, MVT::i32,
/* 39539*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 39541*/        OPC_EmitConvertToTarget, 1,
/* 39543*/        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)
/* 39551*/      /*Scope*/ 17, /*->39569*/
/* 39552*/        OPC_CheckPredicate, 36, // Predicate_immZExt6
/* 39554*/        OPC_MoveParent,
/* 39555*/        OPC_CheckType, MVT::i64,
/* 39557*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 39559*/        OPC_EmitConvertToTarget, 1,
/* 39561*/        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)
/* 39569*/      /*Scope*/ 33, /*->39603*/
/* 39570*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 39572*/        OPC_MoveParent,
/* 39573*/        OPC_CheckType, MVT::i32,
/* 39575*/        OPC_Scope, 12, /*->39589*/ // 2 children in Scope
/* 39577*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 39579*/          OPC_EmitConvertToTarget, 1,
/* 39581*/          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)
/* 39589*/        /*Scope*/ 12, /*->39602*/
/* 39590*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 39592*/          OPC_EmitConvertToTarget, 1,
/* 39594*/          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)
/* 39602*/        0, /*End of Scope*/
/* 39603*/      0, /*End of Scope*/
/* 39604*/    /*Scope*/ 31, /*->39636*/
/* 39605*/      OPC_MoveChild1,
/* 39606*/      OPC_CheckOpcode, TARGET_VAL(ISD::TRUNCATE),
/* 39609*/      OPC_RecordChild0, // #1 = $rs
/* 39610*/      OPC_CheckType, MVT::i32,
/* 39612*/      OPC_MoveParent,
/* 39613*/      OPC_CheckType, MVT::i64,
/* 39615*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 39617*/      OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 39620*/      OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 39628*/      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] }))
/* 39636*/    /*Scope*/ 54, /*->39691*/
/* 39637*/      OPC_RecordChild1, // #1 = $rs
/* 39638*/      OPC_CheckChild1Type, MVT::i32,
/* 39640*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->39678
/* 39643*/        OPC_Scope, 10, /*->39655*/ // 3 children in Scope
/* 39645*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 39647*/          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)
/* 39655*/        /*Scope*/ 10, /*->39666*/
/* 39656*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 39658*/          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)
/* 39666*/        /*Scope*/ 10, /*->39677*/
/* 39667*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 39669*/          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)
/* 39677*/        0, /*End of Scope*/
/* 39678*/      /*SwitchType*/ 10, MVT::i64,// ->39690
/* 39680*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 39682*/        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)
/* 39690*/      0, // EndSwitchType
/* 39691*/    /*Scope*/ 82|128,5/*722*/, /*->40415*/
/* 39693*/      OPC_MoveChild1,
/* 39694*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 39697*/      OPC_Scope, 45|128,1/*173*/, /*->39873*/ // 8 children in Scope
/* 39700*/        OPC_RecordChild0, // #1 = $wt
/* 39701*/        OPC_MoveChild1,
/* 39702*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39705*/        OPC_MoveChild0,
/* 39706*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39709*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39711*/        OPC_CheckType, MVT::i32,
/* 39713*/        OPC_MoveParent,
/* 39714*/        OPC_MoveChild1,
/* 39715*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39718*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39720*/        OPC_CheckType, MVT::i32,
/* 39722*/        OPC_MoveParent,
/* 39723*/        OPC_MoveChild2,
/* 39724*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39727*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39729*/        OPC_CheckType, MVT::i32,
/* 39731*/        OPC_MoveParent,
/* 39732*/        OPC_MoveChild3,
/* 39733*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39736*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39738*/        OPC_CheckType, MVT::i32,
/* 39740*/        OPC_MoveParent,
/* 39741*/        OPC_MoveChild4,
/* 39742*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39745*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39747*/        OPC_CheckType, MVT::i32,
/* 39749*/        OPC_MoveParent,
/* 39750*/        OPC_MoveChild5,
/* 39751*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39754*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39756*/        OPC_CheckType, MVT::i32,
/* 39758*/        OPC_MoveParent,
/* 39759*/        OPC_MoveChild6,
/* 39760*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39763*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39765*/        OPC_CheckType, MVT::i32,
/* 39767*/        OPC_MoveParent,
/* 39768*/        OPC_MoveChild7,
/* 39769*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39772*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39774*/        OPC_CheckType, MVT::i32,
/* 39776*/        OPC_MoveParent,
/* 39777*/        OPC_MoveChild, 8,
/* 39779*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39782*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39784*/        OPC_CheckType, MVT::i32,
/* 39786*/        OPC_MoveParent,
/* 39787*/        OPC_MoveChild, 9,
/* 39789*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39792*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39794*/        OPC_CheckType, MVT::i32,
/* 39796*/        OPC_MoveParent,
/* 39797*/        OPC_MoveChild, 10,
/* 39799*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39802*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39804*/        OPC_CheckType, MVT::i32,
/* 39806*/        OPC_MoveParent,
/* 39807*/        OPC_MoveChild, 11,
/* 39809*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39812*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39814*/        OPC_CheckType, MVT::i32,
/* 39816*/        OPC_MoveParent,
/* 39817*/        OPC_MoveChild, 12,
/* 39819*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39822*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39824*/        OPC_CheckType, MVT::i32,
/* 39826*/        OPC_MoveParent,
/* 39827*/        OPC_MoveChild, 13,
/* 39829*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39832*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39834*/        OPC_CheckType, MVT::i32,
/* 39836*/        OPC_MoveParent,
/* 39837*/        OPC_MoveChild, 14,
/* 39839*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39842*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39844*/        OPC_CheckType, MVT::i32,
/* 39846*/        OPC_MoveParent,
/* 39847*/        OPC_MoveChild, 15,
/* 39849*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39852*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39854*/        OPC_CheckType, MVT::i32,
/* 39856*/        OPC_MoveParent,
/* 39857*/        OPC_MoveParent,
/* 39858*/        OPC_CheckType, MVT::v16i8,
/* 39860*/        OPC_MoveParent,
/* 39861*/        OPC_CheckType, MVT::v16i8,
/* 39863*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39865*/        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)
/* 39873*/      /*Scope*/ 45|128,1/*173*/, /*->40048*/
/* 39875*/        OPC_MoveChild0,
/* 39876*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39879*/        OPC_MoveChild0,
/* 39880*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39883*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39885*/        OPC_CheckType, MVT::i32,
/* 39887*/        OPC_MoveParent,
/* 39888*/        OPC_MoveChild1,
/* 39889*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39892*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39894*/        OPC_CheckType, MVT::i32,
/* 39896*/        OPC_MoveParent,
/* 39897*/        OPC_MoveChild2,
/* 39898*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39901*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39903*/        OPC_CheckType, MVT::i32,
/* 39905*/        OPC_MoveParent,
/* 39906*/        OPC_MoveChild3,
/* 39907*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39910*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39912*/        OPC_CheckType, MVT::i32,
/* 39914*/        OPC_MoveParent,
/* 39915*/        OPC_MoveChild4,
/* 39916*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39919*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39921*/        OPC_CheckType, MVT::i32,
/* 39923*/        OPC_MoveParent,
/* 39924*/        OPC_MoveChild5,
/* 39925*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39928*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39930*/        OPC_CheckType, MVT::i32,
/* 39932*/        OPC_MoveParent,
/* 39933*/        OPC_MoveChild6,
/* 39934*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39937*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39939*/        OPC_CheckType, MVT::i32,
/* 39941*/        OPC_MoveParent,
/* 39942*/        OPC_MoveChild7,
/* 39943*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39946*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39948*/        OPC_CheckType, MVT::i32,
/* 39950*/        OPC_MoveParent,
/* 39951*/        OPC_MoveChild, 8,
/* 39953*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39956*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39958*/        OPC_CheckType, MVT::i32,
/* 39960*/        OPC_MoveParent,
/* 39961*/        OPC_MoveChild, 9,
/* 39963*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39966*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39968*/        OPC_CheckType, MVT::i32,
/* 39970*/        OPC_MoveParent,
/* 39971*/        OPC_MoveChild, 10,
/* 39973*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39976*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39978*/        OPC_CheckType, MVT::i32,
/* 39980*/        OPC_MoveParent,
/* 39981*/        OPC_MoveChild, 11,
/* 39983*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39986*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39988*/        OPC_CheckType, MVT::i32,
/* 39990*/        OPC_MoveParent,
/* 39991*/        OPC_MoveChild, 12,
/* 39993*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39996*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39998*/        OPC_CheckType, MVT::i32,
/* 40000*/        OPC_MoveParent,
/* 40001*/        OPC_MoveChild, 13,
/* 40003*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40006*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 40008*/        OPC_CheckType, MVT::i32,
/* 40010*/        OPC_MoveParent,
/* 40011*/        OPC_MoveChild, 14,
/* 40013*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40016*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 40018*/        OPC_CheckType, MVT::i32,
/* 40020*/        OPC_MoveParent,
/* 40021*/        OPC_MoveChild, 15,
/* 40023*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40026*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 40028*/        OPC_CheckType, MVT::i32,
/* 40030*/        OPC_MoveParent,
/* 40031*/        OPC_MoveParent,
/* 40032*/        OPC_RecordChild1, // #1 = $wt
/* 40033*/        OPC_CheckType, MVT::v16i8,
/* 40035*/        OPC_MoveParent,
/* 40036*/        OPC_CheckType, MVT::v16i8,
/* 40038*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40040*/        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)
/* 40048*/      /*Scope*/ 93, /*->40142*/
/* 40049*/        OPC_RecordChild0, // #1 = $wt
/* 40050*/        OPC_MoveChild1,
/* 40051*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 40054*/        OPC_MoveChild0,
/* 40055*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40058*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40060*/        OPC_CheckType, MVT::i32,
/* 40062*/        OPC_MoveParent,
/* 40063*/        OPC_MoveChild1,
/* 40064*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40067*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40069*/        OPC_CheckType, MVT::i32,
/* 40071*/        OPC_MoveParent,
/* 40072*/        OPC_MoveChild2,
/* 40073*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40076*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40078*/        OPC_CheckType, MVT::i32,
/* 40080*/        OPC_MoveParent,
/* 40081*/        OPC_MoveChild3,
/* 40082*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40085*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40087*/        OPC_CheckType, MVT::i32,
/* 40089*/        OPC_MoveParent,
/* 40090*/        OPC_MoveChild4,
/* 40091*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40094*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40096*/        OPC_CheckType, MVT::i32,
/* 40098*/        OPC_MoveParent,
/* 40099*/        OPC_MoveChild5,
/* 40100*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40103*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40105*/        OPC_CheckType, MVT::i32,
/* 40107*/        OPC_MoveParent,
/* 40108*/        OPC_MoveChild6,
/* 40109*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40112*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40114*/        OPC_CheckType, MVT::i32,
/* 40116*/        OPC_MoveParent,
/* 40117*/        OPC_MoveChild7,
/* 40118*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40121*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40123*/        OPC_CheckType, MVT::i32,
/* 40125*/        OPC_MoveParent,
/* 40126*/        OPC_MoveParent,
/* 40127*/        OPC_CheckType, MVT::v8i16,
/* 40129*/        OPC_MoveParent,
/* 40130*/        OPC_CheckType, MVT::v8i16,
/* 40132*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40134*/        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)
/* 40142*/      /*Scope*/ 93, /*->40236*/
/* 40143*/        OPC_MoveChild0,
/* 40144*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 40147*/        OPC_MoveChild0,
/* 40148*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40151*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40153*/        OPC_CheckType, MVT::i32,
/* 40155*/        OPC_MoveParent,
/* 40156*/        OPC_MoveChild1,
/* 40157*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40160*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40162*/        OPC_CheckType, MVT::i32,
/* 40164*/        OPC_MoveParent,
/* 40165*/        OPC_MoveChild2,
/* 40166*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40169*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40171*/        OPC_CheckType, MVT::i32,
/* 40173*/        OPC_MoveParent,
/* 40174*/        OPC_MoveChild3,
/* 40175*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40178*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40180*/        OPC_CheckType, MVT::i32,
/* 40182*/        OPC_MoveParent,
/* 40183*/        OPC_MoveChild4,
/* 40184*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40187*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40189*/        OPC_CheckType, MVT::i32,
/* 40191*/        OPC_MoveParent,
/* 40192*/        OPC_MoveChild5,
/* 40193*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40196*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40198*/        OPC_CheckType, MVT::i32,
/* 40200*/        OPC_MoveParent,
/* 40201*/        OPC_MoveChild6,
/* 40202*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40205*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40207*/        OPC_CheckType, MVT::i32,
/* 40209*/        OPC_MoveParent,
/* 40210*/        OPC_MoveChild7,
/* 40211*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40214*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40216*/        OPC_CheckType, MVT::i32,
/* 40218*/        OPC_MoveParent,
/* 40219*/        OPC_MoveParent,
/* 40220*/        OPC_RecordChild1, // #1 = $wt
/* 40221*/        OPC_CheckType, MVT::v8i16,
/* 40223*/        OPC_MoveParent,
/* 40224*/        OPC_CheckType, MVT::v8i16,
/* 40226*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40228*/        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)
/* 40236*/      /*Scope*/ 57, /*->40294*/
/* 40237*/        OPC_RecordChild0, // #1 = $wt
/* 40238*/        OPC_MoveChild1,
/* 40239*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 40242*/        OPC_MoveChild0,
/* 40243*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40246*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40248*/        OPC_CheckType, MVT::i32,
/* 40250*/        OPC_MoveParent,
/* 40251*/        OPC_MoveChild1,
/* 40252*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40255*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40257*/        OPC_CheckType, MVT::i32,
/* 40259*/        OPC_MoveParent,
/* 40260*/        OPC_MoveChild2,
/* 40261*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40264*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40266*/        OPC_CheckType, MVT::i32,
/* 40268*/        OPC_MoveParent,
/* 40269*/        OPC_MoveChild3,
/* 40270*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40273*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40275*/        OPC_CheckType, MVT::i32,
/* 40277*/        OPC_MoveParent,
/* 40278*/        OPC_MoveParent,
/* 40279*/        OPC_CheckType, MVT::v4i32,
/* 40281*/        OPC_MoveParent,
/* 40282*/        OPC_CheckType, MVT::v4i32,
/* 40284*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40286*/        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)
/* 40294*/      /*Scope*/ 57, /*->40352*/
/* 40295*/        OPC_MoveChild0,
/* 40296*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 40299*/        OPC_MoveChild0,
/* 40300*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40303*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40305*/        OPC_CheckType, MVT::i32,
/* 40307*/        OPC_MoveParent,
/* 40308*/        OPC_MoveChild1,
/* 40309*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40312*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40314*/        OPC_CheckType, MVT::i32,
/* 40316*/        OPC_MoveParent,
/* 40317*/        OPC_MoveChild2,
/* 40318*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40321*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40323*/        OPC_CheckType, MVT::i32,
/* 40325*/        OPC_MoveParent,
/* 40326*/        OPC_MoveChild3,
/* 40327*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40330*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40332*/        OPC_CheckType, MVT::i32,
/* 40334*/        OPC_MoveParent,
/* 40335*/        OPC_MoveParent,
/* 40336*/        OPC_RecordChild1, // #1 = $wt
/* 40337*/        OPC_CheckType, MVT::v4i32,
/* 40339*/        OPC_MoveParent,
/* 40340*/        OPC_CheckType, MVT::v4i32,
/* 40342*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40344*/        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)
/* 40352*/      /*Scope*/ 30, /*->40383*/
/* 40353*/        OPC_RecordChild0, // #1 = $wt
/* 40354*/        OPC_MoveChild1,
/* 40355*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 40358*/        OPC_MoveChild0,
/* 40359*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 40362*/        OPC_CheckType, MVT::v4i32,
/* 40364*/        OPC_MoveParent,
/* 40365*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 40367*/        OPC_MoveParent,
/* 40368*/        OPC_CheckType, MVT::v2i64,
/* 40370*/        OPC_MoveParent,
/* 40371*/        OPC_CheckType, MVT::v2i64,
/* 40373*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40375*/        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)
/* 40383*/      /*Scope*/ 30, /*->40414*/
/* 40384*/        OPC_MoveChild0,
/* 40385*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 40388*/        OPC_MoveChild0,
/* 40389*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 40392*/        OPC_CheckType, MVT::v4i32,
/* 40394*/        OPC_MoveParent,
/* 40395*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 40397*/        OPC_MoveParent,
/* 40398*/        OPC_RecordChild1, // #1 = $wt
/* 40399*/        OPC_CheckType, MVT::v2i64,
/* 40401*/        OPC_MoveParent,
/* 40402*/        OPC_CheckType, MVT::v2i64,
/* 40404*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40406*/        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)
/* 40414*/      0, /*End of Scope*/
/* 40415*/    /*Scope*/ 119, /*->40535*/
/* 40416*/      OPC_RecordChild1, // #1 = $m
/* 40417*/      OPC_SwitchType /*4 cases */, 27, MVT::v16i8,// ->40447
/* 40420*/        OPC_CheckChild1Type, MVT::v16i8,
/* 40422*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 40424*/        OPC_Scope, 11, /*->40437*/ // 2 children in Scope
/* 40426*/          OPC_CheckComplexPat, /*CP*/24, /*#*/1, // selectVSplatUimm3:$m #2
/* 40429*/          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)
/* 40437*/        /*Scope*/ 8, /*->40446*/
/* 40438*/          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)
/* 40446*/        0, /*End of Scope*/
/* 40447*/      /*SwitchType*/ 27, MVT::v8i16,// ->40476
/* 40449*/        OPC_CheckChild1Type, MVT::v8i16,
/* 40451*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 40453*/        OPC_Scope, 11, /*->40466*/ // 2 children in Scope
/* 40455*/          OPC_CheckComplexPat, /*CP*/25, /*#*/1, // selectVSplatUimm4:$m #2
/* 40458*/          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)
/* 40466*/        /*Scope*/ 8, /*->40475*/
/* 40467*/          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)
/* 40475*/        0, /*End of Scope*/
/* 40476*/      /*SwitchType*/ 27, MVT::v4i32,// ->40505
/* 40478*/        OPC_CheckChild1Type, MVT::v4i32,
/* 40480*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 40482*/        OPC_Scope, 11, /*->40495*/ // 2 children in Scope
/* 40484*/          OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$m #2
/* 40487*/          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)
/* 40495*/        /*Scope*/ 8, /*->40504*/
/* 40496*/          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)
/* 40504*/        0, /*End of Scope*/
/* 40505*/      /*SwitchType*/ 27, MVT::v2i64,// ->40534
/* 40507*/        OPC_CheckChild1Type, MVT::v2i64,
/* 40509*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 40511*/        OPC_Scope, 11, /*->40524*/ // 2 children in Scope
/* 40513*/          OPC_CheckComplexPat, /*CP*/26, /*#*/1, // selectVSplatUimm6:$m #2
/* 40516*/          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)
/* 40524*/        /*Scope*/ 8, /*->40533*/
/* 40525*/          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)
/* 40533*/        0, /*End of Scope*/
/* 40534*/      0, // EndSwitchType
/* 40535*/    0, /*End of Scope*/
/* 40536*/  /*SwitchOpcode*/ 15|128,1/*143*/, TARGET_VAL(ISD::ROTR),// ->40683
/* 40540*/    OPC_RecordChild0, // #0 = $rt
/* 40541*/    OPC_Scope, 63, /*->40606*/ // 3 children in Scope
/* 40543*/      OPC_RecordChild1, // #1 = $shamt
/* 40544*/      OPC_MoveChild1,
/* 40545*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40548*/      OPC_CheckType, MVT::i32,
/* 40550*/      OPC_Scope, 17, /*->40569*/ // 3 children in Scope
/* 40552*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 40554*/        OPC_MoveParent,
/* 40555*/        OPC_CheckType, MVT::i32,
/* 40557*/        OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 40559*/        OPC_EmitConvertToTarget, 1,
/* 40561*/        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)
/* 40569*/      /*Scope*/ 17, /*->40587*/
/* 40570*/        OPC_CheckPredicate, 36, // Predicate_immZExt6
/* 40572*/        OPC_MoveParent,
/* 40573*/        OPC_CheckType, MVT::i64,
/* 40575*/        OPC_CheckPatternPredicate, 54, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 40577*/        OPC_EmitConvertToTarget, 1,
/* 40579*/        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)
/* 40587*/      /*Scope*/ 17, /*->40605*/
/* 40588*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 40590*/        OPC_MoveParent,
/* 40591*/        OPC_CheckType, MVT::i32,
/* 40593*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 40595*/        OPC_EmitConvertToTarget, 1,
/* 40597*/        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)
/* 40605*/      0, /*End of Scope*/
/* 40606*/    /*Scope*/ 31, /*->40638*/
/* 40607*/      OPC_MoveChild1,
/* 40608*/      OPC_CheckOpcode, TARGET_VAL(ISD::TRUNCATE),
/* 40611*/      OPC_RecordChild0, // #1 = $rs
/* 40612*/      OPC_CheckType, MVT::i32,
/* 40614*/      OPC_MoveParent,
/* 40615*/      OPC_CheckType, MVT::i64,
/* 40617*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 40619*/      OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 40622*/      OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 40630*/      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] }))
/* 40638*/    /*Scope*/ 43, /*->40682*/
/* 40639*/      OPC_RecordChild1, // #1 = $rs
/* 40640*/      OPC_CheckChild1Type, MVT::i32,
/* 40642*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->40669
/* 40645*/        OPC_Scope, 10, /*->40657*/ // 2 children in Scope
/* 40647*/          OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 40649*/          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)
/* 40657*/        /*Scope*/ 10, /*->40668*/
/* 40658*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 40660*/          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)
/* 40668*/        0, /*End of Scope*/
/* 40669*/      /*SwitchType*/ 10, MVT::i64,// ->40681
/* 40671*/        OPC_CheckPatternPredicate, 54, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 40673*/        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)
/* 40681*/      0, // EndSwitchType
/* 40682*/    0, /*End of Scope*/
/* 40683*/  /*SwitchOpcode*/ 78, TARGET_VAL(MipsISD::Sync),// ->40764
/* 40686*/    OPC_RecordNode, // #0 = 'MipsSync' chained node
/* 40687*/    OPC_Scope, 19, /*->40708*/ // 3 children in Scope
/* 40689*/      OPC_RecordChild1, // #1 = $stype
/* 40690*/      OPC_MoveChild1,
/* 40691*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40694*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 40696*/      OPC_MoveParent,
/* 40697*/      OPC_CheckPatternPredicate, 64, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 40699*/      OPC_EmitMergeInputChains1_0,
/* 40700*/      OPC_EmitConvertToTarget, 1,
/* 40702*/      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)
/* 40708*/    /*Scope*/ 19, /*->40728*/
/* 40709*/      OPC_MoveChild1,
/* 40710*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40713*/      OPC_CheckPredicate, 22, // Predicate_immz
/* 40715*/      OPC_MoveParent,
/* 40716*/      OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding())
/* 40718*/      OPC_EmitMergeInputChains1_0,
/* 40719*/      OPC_EmitInteger, MVT::i32, 0, 
/* 40722*/      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] })
/* 40728*/    /*Scope*/ 34, /*->40763*/
/* 40729*/      OPC_RecordChild1, // #1 = $stype
/* 40730*/      OPC_MoveChild1,
/* 40731*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40734*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 40736*/      OPC_MoveParent,
/* 40737*/      OPC_Scope, 11, /*->40750*/ // 2 children in Scope
/* 40739*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 40741*/        OPC_EmitMergeInputChains1_0,
/* 40742*/        OPC_EmitConvertToTarget, 1,
/* 40744*/        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)
/* 40750*/      /*Scope*/ 11, /*->40762*/
/* 40751*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 40753*/        OPC_EmitMergeInputChains1_0,
/* 40754*/        OPC_EmitConvertToTarget, 1,
/* 40756*/        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)
/* 40762*/      0, /*End of Scope*/
/* 40763*/    0, /*End of Scope*/
/* 40764*/  /*SwitchOpcode*/ 82, TARGET_VAL(ISD::ADDC),// ->40849
/* 40767*/    OPC_RecordChild0, // #0 = $src
/* 40768*/    OPC_RecordChild1, // #1 = $imm
/* 40769*/    OPC_Scope, 37, /*->40808*/ // 3 children in Scope
/* 40771*/      OPC_MoveChild1,
/* 40772*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40775*/      OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 40777*/      OPC_MoveParent,
/* 40778*/      OPC_SwitchType /*2 cases */, 12, MVT::i32,// ->40793
/* 40781*/        OPC_CheckPatternPredicate, 66, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP())
/* 40783*/        OPC_EmitConvertToTarget, 1,
/* 40785*/        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)
/* 40793*/      /*SwitchType*/ 12, MVT::i64,// ->40807
/* 40795*/        OPC_CheckPatternPredicate, 67, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasDSP()) && (!Subtarget->inMicroMipsMode())
/* 40797*/        OPC_EmitConvertToTarget, 1,
/* 40799*/        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)
/* 40807*/      0, // EndSwitchType
/* 40808*/    /*Scope*/ 26, /*->40835*/
/* 40809*/      OPC_CheckType, MVT::i32,
/* 40811*/      OPC_Scope, 10, /*->40823*/ // 2 children in Scope
/* 40813*/        OPC_CheckPatternPredicate, 66, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP())
/* 40815*/        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)
/* 40823*/      /*Scope*/ 10, /*->40834*/
/* 40824*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40826*/        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)
/* 40834*/      0, /*End of Scope*/
/* 40835*/    /*Scope*/ 12, /*->40848*/
/* 40836*/      OPC_CheckType, MVT::i64,
/* 40838*/      OPC_CheckPatternPredicate, 67, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasDSP()) && (!Subtarget->inMicroMipsMode())
/* 40840*/      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)
/* 40848*/    0, /*End of Scope*/
/* 40849*/  /*SwitchOpcode*/ 76, TARGET_VAL(ISD::TRUNCATE),// ->40928
/* 40852*/    OPC_Scope, 45, /*->40899*/ // 2 children in Scope
/* 40854*/      OPC_MoveChild0,
/* 40855*/      OPC_SwitchOpcode /*2 cases */, 19, TARGET_VAL(ISD::AssertZext),// ->40878
/* 40859*/        OPC_RecordChild0, // #0 = $src
/* 40860*/        OPC_CheckPredicate, 55, // Predicate_assertzext_lt_i32
/* 40862*/        OPC_MoveParent,
/* 40863*/        OPC_CheckType, MVT::i32,
/* 40865*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 40867*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 40870*/        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] })
/* 40878*/      /*SwitchOpcode*/ 17, TARGET_VAL(ISD::AssertSext),// ->40898
/* 40881*/        OPC_RecordChild0, // #0 = $src
/* 40882*/        OPC_MoveParent,
/* 40883*/        OPC_CheckType, MVT::i32,
/* 40885*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 40887*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 40890*/        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] })
/* 40898*/      0, // EndSwitchOpcode
/* 40899*/    /*Scope*/ 27, /*->40927*/
/* 40900*/      OPC_RecordChild0, // #0 = $src
/* 40901*/      OPC_CheckType, MVT::i32,
/* 40903*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 40905*/      OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 40908*/      OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                    MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 40916*/      OPC_EmitInteger, MVT::i32, 0, 
/* 40919*/      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] })
/* 40927*/    0, /*End of Scope*/
/* 40928*/  /*SwitchOpcode*/ 66, TARGET_VAL(MipsISD::SHILO),// ->40997
/* 40931*/    OPC_RecordChild0, // #0 = $shift
/* 40932*/    OPC_Scope, 36, /*->40970*/ // 2 children in Scope
/* 40934*/      OPC_MoveChild0,
/* 40935*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40938*/      OPC_CheckPredicate, 56, // Predicate_immSExt6
/* 40940*/      OPC_MoveParent,
/* 40941*/      OPC_RecordChild1, // #1 = $acin
/* 40942*/      OPC_Scope, 12, /*->40956*/ // 2 children in Scope
/* 40944*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40946*/        OPC_EmitConvertToTarget, 0,
/* 40948*/        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)
/* 40956*/      /*Scope*/ 12, /*->40969*/
/* 40957*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 40959*/        OPC_EmitConvertToTarget, 0,
/* 40961*/        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)
/* 40969*/      0, /*End of Scope*/
/* 40970*/    /*Scope*/ 25, /*->40996*/
/* 40971*/      OPC_RecordChild1, // #1 = $acin
/* 40972*/      OPC_Scope, 10, /*->40984*/ // 2 children in Scope
/* 40974*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40976*/        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)
/* 40984*/      /*Scope*/ 10, /*->40995*/
/* 40985*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 40987*/        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)
/* 40995*/      0, /*End of Scope*/
/* 40996*/    0, /*End of Scope*/
/* 40997*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTP),// ->41039
/* 41000*/    OPC_RecordNode, // #0 = 'MipsEXTP' chained node
/* 41001*/    OPC_RecordChild1, // #1 = $shift
/* 41002*/    OPC_Scope, 21, /*->41025*/ // 2 children in Scope
/* 41004*/      OPC_MoveChild1,
/* 41005*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41008*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 41010*/      OPC_MoveParent,
/* 41011*/      OPC_RecordChild2, // #2 = $ac
/* 41012*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41014*/      OPC_EmitMergeInputChains1_0,
/* 41015*/      OPC_EmitConvertToTarget, 1,
/* 41017*/      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)
/* 41025*/    /*Scope*/ 12, /*->41038*/
/* 41026*/      OPC_RecordChild2, // #2 = $ac
/* 41027*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41029*/      OPC_EmitMergeInputChains1_0,
/* 41030*/      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)
/* 41038*/    0, /*End of Scope*/
/* 41039*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTPDP),// ->41081
/* 41042*/    OPC_RecordNode, // #0 = 'MipsEXTPDP' chained node
/* 41043*/    OPC_RecordChild1, // #1 = $shift
/* 41044*/    OPC_Scope, 21, /*->41067*/ // 2 children in Scope
/* 41046*/      OPC_MoveChild1,
/* 41047*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41050*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 41052*/      OPC_MoveParent,
/* 41053*/      OPC_RecordChild2, // #2 = $ac
/* 41054*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41056*/      OPC_EmitMergeInputChains1_0,
/* 41057*/      OPC_EmitConvertToTarget, 1,
/* 41059*/      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)
/* 41067*/    /*Scope*/ 12, /*->41080*/
/* 41068*/      OPC_RecordChild2, // #2 = $ac
/* 41069*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41071*/      OPC_EmitMergeInputChains1_0,
/* 41072*/      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)
/* 41080*/    0, /*End of Scope*/
/* 41081*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTR_W),// ->41123
/* 41084*/    OPC_RecordNode, // #0 = 'MipsEXTR_W' chained node
/* 41085*/    OPC_RecordChild1, // #1 = $shift
/* 41086*/    OPC_Scope, 21, /*->41109*/ // 2 children in Scope
/* 41088*/      OPC_MoveChild1,
/* 41089*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41092*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 41094*/      OPC_MoveParent,
/* 41095*/      OPC_RecordChild2, // #2 = $ac
/* 41096*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41098*/      OPC_EmitMergeInputChains1_0,
/* 41099*/      OPC_EmitConvertToTarget, 1,
/* 41101*/      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)
/* 41109*/    /*Scope*/ 12, /*->41122*/
/* 41110*/      OPC_RecordChild2, // #2 = $ac
/* 41111*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41113*/      OPC_EmitMergeInputChains1_0,
/* 41114*/      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)
/* 41122*/    0, /*End of Scope*/
/* 41123*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTR_R_W),// ->41165
/* 41126*/    OPC_RecordNode, // #0 = 'MipsEXTR_R_W' chained node
/* 41127*/    OPC_RecordChild1, // #1 = $shift
/* 41128*/    OPC_Scope, 21, /*->41151*/ // 2 children in Scope
/* 41130*/      OPC_MoveChild1,
/* 41131*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41134*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 41136*/      OPC_MoveParent,
/* 41137*/      OPC_RecordChild2, // #2 = $ac
/* 41138*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41140*/      OPC_EmitMergeInputChains1_0,
/* 41141*/      OPC_EmitConvertToTarget, 1,
/* 41143*/      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)
/* 41151*/    /*Scope*/ 12, /*->41164*/
/* 41152*/      OPC_RecordChild2, // #2 = $ac
/* 41153*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41155*/      OPC_EmitMergeInputChains1_0,
/* 41156*/      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)
/* 41164*/    0, /*End of Scope*/
/* 41165*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTR_RS_W),// ->41207
/* 41168*/    OPC_RecordNode, // #0 = 'MipsEXTR_RS_W' chained node
/* 41169*/    OPC_RecordChild1, // #1 = $shift
/* 41170*/    OPC_Scope, 21, /*->41193*/ // 2 children in Scope
/* 41172*/      OPC_MoveChild1,
/* 41173*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41176*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 41178*/      OPC_MoveParent,
/* 41179*/      OPC_RecordChild2, // #2 = $ac
/* 41180*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41182*/      OPC_EmitMergeInputChains1_0,
/* 41183*/      OPC_EmitConvertToTarget, 1,
/* 41185*/      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)
/* 41193*/    /*Scope*/ 12, /*->41206*/
/* 41194*/      OPC_RecordChild2, // #2 = $ac
/* 41195*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41197*/      OPC_EmitMergeInputChains1_0,
/* 41198*/      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)
/* 41206*/    0, /*End of Scope*/
/* 41207*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTR_S_H),// ->41249
/* 41210*/    OPC_RecordNode, // #0 = 'MipsEXTR_S_H' chained node
/* 41211*/    OPC_RecordChild1, // #1 = $shift
/* 41212*/    OPC_Scope, 21, /*->41235*/ // 2 children in Scope
/* 41214*/      OPC_MoveChild1,
/* 41215*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41218*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 41220*/      OPC_MoveParent,
/* 41221*/      OPC_RecordChild2, // #2 = $ac
/* 41222*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41224*/      OPC_EmitMergeInputChains1_0,
/* 41225*/      OPC_EmitConvertToTarget, 1,
/* 41227*/      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)
/* 41235*/    /*Scope*/ 12, /*->41248*/
/* 41236*/      OPC_RecordChild2, // #2 = $ac
/* 41237*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41239*/      OPC_EmitMergeInputChains1_0,
/* 41240*/      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)
/* 41248*/    0, /*End of Scope*/
/* 41249*/  /*SwitchOpcode*/ 83|128,4/*595*/, TARGET_VAL(MipsISD::VEXTRACT_SEXT_ELT),// ->41848
/* 41253*/    OPC_RecordChild0, // #0 = $ws
/* 41254*/    OPC_Scope, 29|128,1/*157*/, /*->41414*/ // 4 children in Scope
/* 41257*/      OPC_CheckChild0Type, MVT::v16i8,
/* 41259*/      OPC_RecordChild1, // #1 = $n
/* 41260*/      OPC_Scope, 25, /*->41287*/ // 3 children in Scope
/* 41262*/        OPC_MoveChild1,
/* 41263*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41266*/        OPC_CheckPredicate, 31, // Predicate_immZExt4Ptr
/* 41268*/        OPC_MoveParent,
/* 41269*/        OPC_MoveChild2,
/* 41270*/        OPC_CheckValueType, MVT::i8,
/* 41272*/        OPC_MoveParent,
/* 41273*/        OPC_CheckType, MVT::i32,
/* 41275*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 41277*/        OPC_EmitConvertToTarget, 1,
/* 41279*/        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)
/* 41287*/      /*Scope*/ 51, /*->41339*/
/* 41288*/        OPC_CheckChild1Type, MVT::i32,
/* 41290*/        OPC_MoveChild2,
/* 41291*/        OPC_CheckValueType, MVT::i8,
/* 41293*/        OPC_MoveParent,
/* 41294*/        OPC_CheckType, MVT::i32,
/* 41296*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41298*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41306*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41309*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 41317*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41320*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 41328*/        OPC_EmitInteger, MVT::i32, 24, 
/* 41331*/        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] })
/* 41339*/      /*Scope*/ 73, /*->41413*/
/* 41340*/        OPC_CheckChild1Type, MVT::i64,
/* 41342*/        OPC_MoveChild2,
/* 41343*/        OPC_CheckValueType, MVT::i8,
/* 41345*/        OPC_MoveParent,
/* 41346*/        OPC_CheckType, MVT::i32,
/* 41348*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41350*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41353*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41361*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41364*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 41372*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 5,  // Results = #6
/* 41380*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41383*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 41391*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41394*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 8, 9,  // Results = #10
/* 41402*/        OPC_EmitInteger, MVT::i32, 24, 
/* 41405*/        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] })
/* 41413*/      0, /*End of Scope*/
/* 41414*/    /*Scope*/ 29|128,1/*157*/, /*->41573*/
/* 41416*/      OPC_CheckChild0Type, MVT::v8i16,
/* 41418*/      OPC_RecordChild1, // #1 = $n
/* 41419*/      OPC_Scope, 25, /*->41446*/ // 3 children in Scope
/* 41421*/        OPC_MoveChild1,
/* 41422*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41425*/        OPC_CheckPredicate, 32, // Predicate_immZExt3Ptr
/* 41427*/        OPC_MoveParent,
/* 41428*/        OPC_MoveChild2,
/* 41429*/        OPC_CheckValueType, MVT::i16,
/* 41431*/        OPC_MoveParent,
/* 41432*/        OPC_CheckType, MVT::i32,
/* 41434*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 41436*/        OPC_EmitConvertToTarget, 1,
/* 41438*/        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)
/* 41446*/      /*Scope*/ 51, /*->41498*/
/* 41447*/        OPC_CheckChild1Type, MVT::i32,
/* 41449*/        OPC_MoveChild2,
/* 41450*/        OPC_CheckValueType, MVT::i16,
/* 41452*/        OPC_MoveParent,
/* 41453*/        OPC_CheckType, MVT::i32,
/* 41455*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41457*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41465*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41468*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 41476*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41479*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 41487*/        OPC_EmitInteger, MVT::i32, 16, 
/* 41490*/        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] })
/* 41498*/      /*Scope*/ 73, /*->41572*/
/* 41499*/        OPC_CheckChild1Type, MVT::i64,
/* 41501*/        OPC_MoveChild2,
/* 41502*/        OPC_CheckValueType, MVT::i16,
/* 41504*/        OPC_MoveParent,
/* 41505*/        OPC_CheckType, MVT::i32,
/* 41507*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41509*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41512*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41520*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41523*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 41531*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 5,  // Results = #6
/* 41539*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41542*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 41550*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41553*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 8, 9,  // Results = #10
/* 41561*/        OPC_EmitInteger, MVT::i32, 16, 
/* 41564*/        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] })
/* 41572*/      0, /*End of Scope*/
/* 41573*/    /*Scope*/ 7|128,1/*135*/, /*->41710*/
/* 41575*/      OPC_CheckChild0Type, MVT::v4i32,
/* 41577*/      OPC_RecordChild1, // #1 = $n
/* 41578*/      OPC_Scope, 25, /*->41605*/ // 3 children in Scope
/* 41580*/        OPC_MoveChild1,
/* 41581*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41584*/        OPC_CheckPredicate, 33, // Predicate_immZExt2Ptr
/* 41586*/        OPC_MoveParent,
/* 41587*/        OPC_MoveChild2,
/* 41588*/        OPC_CheckValueType, MVT::i32,
/* 41590*/        OPC_MoveParent,
/* 41591*/        OPC_CheckType, MVT::i32,
/* 41593*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 41595*/        OPC_EmitConvertToTarget, 1,
/* 41597*/        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)
/* 41605*/      /*Scope*/ 40, /*->41646*/
/* 41606*/        OPC_CheckChild1Type, MVT::i32,
/* 41608*/        OPC_MoveChild2,
/* 41609*/        OPC_CheckValueType, MVT::i32,
/* 41611*/        OPC_MoveParent,
/* 41612*/        OPC_CheckType, MVT::i32,
/* 41614*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41616*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41624*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41627*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 41635*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41638*/        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] })
/* 41646*/      /*Scope*/ 62, /*->41709*/
/* 41647*/        OPC_CheckChild1Type, MVT::i64,
/* 41649*/        OPC_MoveChild2,
/* 41650*/        OPC_CheckValueType, MVT::i32,
/* 41652*/        OPC_MoveParent,
/* 41653*/        OPC_CheckType, MVT::i32,
/* 41655*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41657*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41660*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41668*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41671*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 41679*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 41687*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41690*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 41698*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41701*/        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] })
/* 41709*/      0, /*End of Scope*/
/* 41710*/    /*Scope*/ 7|128,1/*135*/, /*->41847*/
/* 41712*/      OPC_CheckChild0Type, MVT::v2i64,
/* 41714*/      OPC_RecordChild1, // #1 = $n
/* 41715*/      OPC_Scope, 25, /*->41742*/ // 3 children in Scope
/* 41717*/        OPC_MoveChild1,
/* 41718*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41721*/        OPC_CheckPredicate, 37, // Predicate_immZExt1Ptr
/* 41723*/        OPC_MoveParent,
/* 41724*/        OPC_MoveChild2,
/* 41725*/        OPC_CheckValueType, MVT::i64,
/* 41727*/        OPC_MoveParent,
/* 41728*/        OPC_CheckType, MVT::i64,
/* 41730*/        OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 41732*/        OPC_EmitConvertToTarget, 1,
/* 41734*/        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)
/* 41742*/      /*Scope*/ 40, /*->41783*/
/* 41743*/        OPC_CheckChild1Type, MVT::i32,
/* 41745*/        OPC_MoveChild2,
/* 41746*/        OPC_CheckValueType, MVT::i64,
/* 41748*/        OPC_MoveParent,
/* 41749*/        OPC_CheckType, MVT::i64,
/* 41751*/        OPC_CheckPatternPredicate, 68, // (Subtarget->hasMSA()) && (Subtarget->isGP64bit())
/* 41753*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41761*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 41764*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i64, 2/*#Ops*/, 2, 3,  // Results = #4
/* 41772*/        OPC_EmitInteger, MVT::i32, Mips::GPR64RegClassID,
/* 41775*/        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] })
/* 41783*/      /*Scope*/ 62, /*->41846*/
/* 41784*/        OPC_CheckChild1Type, MVT::i64,
/* 41786*/        OPC_MoveChild2,
/* 41787*/        OPC_CheckValueType, MVT::i64,
/* 41789*/        OPC_MoveParent,
/* 41790*/        OPC_CheckType, MVT::i64,
/* 41792*/        OPC_CheckPatternPredicate, 68, // (Subtarget->hasMSA()) && (Subtarget->isGP64bit())
/* 41794*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41797*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41805*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41808*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 41816*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 5,  // Results = #6
/* 41824*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 41827*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i64, 2/*#Ops*/, 6, 7,  // Results = #8
/* 41835*/        OPC_EmitInteger, MVT::i32, Mips::GPR64RegClassID,
/* 41838*/        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] })
/* 41846*/      0, /*End of Scope*/
/* 41847*/    0, /*End of Scope*/
/* 41848*/  /*SwitchOpcode*/ 29|128,5/*669*/, TARGET_VAL(MipsISD::VEXTRACT_ZEXT_ELT),// ->42521
/* 41852*/    OPC_RecordChild0, // #0 = $ws
/* 41853*/    OPC_Scope, 29|128,1/*157*/, /*->42013*/ // 6 children in Scope
/* 41856*/      OPC_CheckChild0Type, MVT::v16i8,
/* 41858*/      OPC_RecordChild1, // #1 = $n
/* 41859*/      OPC_Scope, 25, /*->41886*/ // 3 children in Scope
/* 41861*/        OPC_MoveChild1,
/* 41862*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41865*/        OPC_CheckPredicate, 31, // Predicate_immZExt4Ptr
/* 41867*/        OPC_MoveParent,
/* 41868*/        OPC_MoveChild2,
/* 41869*/        OPC_CheckValueType, MVT::i8,
/* 41871*/        OPC_MoveParent,
/* 41872*/        OPC_CheckType, MVT::i32,
/* 41874*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 41876*/        OPC_EmitConvertToTarget, 1,
/* 41878*/        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)
/* 41886*/      /*Scope*/ 51, /*->41938*/
/* 41887*/        OPC_CheckChild1Type, MVT::i32,
/* 41889*/        OPC_MoveChild2,
/* 41890*/        OPC_CheckValueType, MVT::i8,
/* 41892*/        OPC_MoveParent,
/* 41893*/        OPC_CheckType, MVT::i32,
/* 41895*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41897*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41905*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41908*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 41916*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41919*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 41927*/        OPC_EmitInteger, MVT::i32, 24, 
/* 41930*/        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] })
/* 41938*/      /*Scope*/ 73, /*->42012*/
/* 41939*/        OPC_CheckChild1Type, MVT::i64,
/* 41941*/        OPC_MoveChild2,
/* 41942*/        OPC_CheckValueType, MVT::i8,
/* 41944*/        OPC_MoveParent,
/* 41945*/        OPC_CheckType, MVT::i32,
/* 41947*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41949*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41952*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41960*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41963*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 41971*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 5,  // Results = #6
/* 41979*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41982*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 41990*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41993*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 8, 9,  // Results = #10
/* 42001*/        OPC_EmitInteger, MVT::i32, 24, 
/* 42004*/        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] })
/* 42012*/      0, /*End of Scope*/
/* 42013*/    /*Scope*/ 29|128,1/*157*/, /*->42172*/
/* 42015*/      OPC_CheckChild0Type, MVT::v8i16,
/* 42017*/      OPC_RecordChild1, // #1 = $n
/* 42018*/      OPC_Scope, 25, /*->42045*/ // 3 children in Scope
/* 42020*/        OPC_MoveChild1,
/* 42021*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42024*/        OPC_CheckPredicate, 32, // Predicate_immZExt3Ptr
/* 42026*/        OPC_MoveParent,
/* 42027*/        OPC_MoveChild2,
/* 42028*/        OPC_CheckValueType, MVT::i16,
/* 42030*/        OPC_MoveParent,
/* 42031*/        OPC_CheckType, MVT::i32,
/* 42033*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 42035*/        OPC_EmitConvertToTarget, 1,
/* 42037*/        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)
/* 42045*/      /*Scope*/ 51, /*->42097*/
/* 42046*/        OPC_CheckChild1Type, MVT::i32,
/* 42048*/        OPC_MoveChild2,
/* 42049*/        OPC_CheckValueType, MVT::i16,
/* 42051*/        OPC_MoveParent,
/* 42052*/        OPC_CheckType, MVT::i32,
/* 42054*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42056*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 42064*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 42067*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 42075*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42078*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 42086*/        OPC_EmitInteger, MVT::i32, 16, 
/* 42089*/        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] })
/* 42097*/      /*Scope*/ 73, /*->42171*/
/* 42098*/        OPC_CheckChild1Type, MVT::i64,
/* 42100*/        OPC_MoveChild2,
/* 42101*/        OPC_CheckValueType, MVT::i16,
/* 42103*/        OPC_MoveParent,
/* 42104*/        OPC_CheckType, MVT::i32,
/* 42106*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42108*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 42111*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 42119*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42122*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 42130*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 5,  // Results = #6
/* 42138*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 42141*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 42149*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42152*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 8, 9,  // Results = #10
/* 42160*/        OPC_EmitInteger, MVT::i32, 16, 
/* 42163*/        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] })
/* 42171*/      0, /*End of Scope*/
/* 42172*/    /*Scope*/ 23|128,1/*151*/, /*->42325*/
/* 42174*/      OPC_CheckChild0Type, MVT::v4i32,
/* 42176*/      OPC_RecordChild1, // #1 = $n
/* 42177*/      OPC_Scope, 41, /*->42220*/ // 3 children in Scope
/* 42179*/        OPC_MoveChild1,
/* 42180*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42183*/        OPC_CheckPredicate, 33, // Predicate_immZExt2Ptr
/* 42185*/        OPC_MoveParent,
/* 42186*/        OPC_MoveChild2,
/* 42187*/        OPC_CheckValueType, MVT::i32,
/* 42189*/        OPC_MoveParent,
/* 42190*/        OPC_CheckType, MVT::i32,
/* 42192*/        OPC_Scope, 12, /*->42206*/ // 2 children in Scope
/* 42194*/          OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 42196*/          OPC_EmitConvertToTarget, 1,
/* 42198*/          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)
/* 42206*/        /*Scope*/ 12, /*->42219*/
/* 42207*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42209*/          OPC_EmitConvertToTarget, 1,
/* 42211*/          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)
/* 42219*/        0, /*End of Scope*/
/* 42220*/      /*Scope*/ 40, /*->42261*/
/* 42221*/        OPC_CheckChild1Type, MVT::i32,
/* 42223*/        OPC_MoveChild2,
/* 42224*/        OPC_CheckValueType, MVT::i32,
/* 42226*/        OPC_MoveParent,
/* 42227*/        OPC_CheckType, MVT::i32,
/* 42229*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42231*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 42239*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 42242*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 42250*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42253*/        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] })
/* 42261*/      /*Scope*/ 62, /*->42324*/
/* 42262*/        OPC_CheckChild1Type, MVT::i64,
/* 42264*/        OPC_MoveChild2,
/* 42265*/        OPC_CheckValueType, MVT::i32,
/* 42267*/        OPC_MoveParent,
/* 42268*/        OPC_CheckType, MVT::i32,
/* 42270*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42272*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 42275*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 42283*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42286*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 42294*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 42302*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 42305*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 42313*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42316*/        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] })
/* 42324*/      0, /*End of Scope*/
/* 42325*/    /*Scope*/ 28, /*->42354*/
/* 42326*/      OPC_CheckChild0Type, MVT::v4f32,
/* 42328*/      OPC_RecordChild1, // #1 = $idx
/* 42329*/      OPC_MoveChild1,
/* 42330*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42333*/      OPC_CheckPredicate, 33, // Predicate_immZExt2Ptr
/* 42335*/      OPC_MoveParent,
/* 42336*/      OPC_MoveChild2,
/* 42337*/      OPC_CheckValueType, MVT::i32,
/* 42339*/      OPC_MoveParent,
/* 42340*/      OPC_CheckType, MVT::i32,
/* 42342*/      OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42344*/      OPC_EmitConvertToTarget, 1,
/* 42346*/      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)
/* 42354*/    /*Scope*/ 7|128,1/*135*/, /*->42491*/
/* 42356*/      OPC_CheckChild0Type, MVT::v2i64,
/* 42358*/      OPC_RecordChild1, // #1 = $idx
/* 42359*/      OPC_Scope, 25, /*->42386*/ // 3 children in Scope
/* 42361*/        OPC_MoveChild1,
/* 42362*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42365*/        OPC_CheckPredicate, 37, // Predicate_immZExt1Ptr
/* 42367*/        OPC_MoveParent,
/* 42368*/        OPC_MoveChild2,
/* 42369*/        OPC_CheckValueType, MVT::i64,
/* 42371*/        OPC_MoveParent,
/* 42372*/        OPC_CheckType, MVT::i64,
/* 42374*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42376*/        OPC_EmitConvertToTarget, 1,
/* 42378*/        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)
/* 42386*/      /*Scope*/ 40, /*->42427*/
/* 42387*/        OPC_CheckChild1Type, MVT::i32,
/* 42389*/        OPC_MoveChild2,
/* 42390*/        OPC_CheckValueType, MVT::i64,
/* 42392*/        OPC_MoveParent,
/* 42393*/        OPC_CheckType, MVT::i64,
/* 42395*/        OPC_CheckPatternPredicate, 68, // (Subtarget->hasMSA()) && (Subtarget->isGP64bit())
/* 42397*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1,  // Results = #2
/* 42405*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 42408*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i64, 2/*#Ops*/, 2, 3,  // Results = #4
/* 42416*/        OPC_EmitInteger, MVT::i32, Mips::GPR64RegClassID,
/* 42419*/        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] })
/* 42427*/      /*Scope*/ 62, /*->42490*/
/* 42428*/        OPC_CheckChild1Type, MVT::i64,
/* 42430*/        OPC_MoveChild2,
/* 42431*/        OPC_CheckValueType, MVT::i64,
/* 42433*/        OPC_MoveParent,
/* 42434*/        OPC_CheckType, MVT::i64,
/* 42436*/        OPC_CheckPatternPredicate, 68, // (Subtarget->hasMSA()) && (Subtarget->isGP64bit())
/* 42438*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 42441*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 42449*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42452*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 42460*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 5,  // Results = #6
/* 42468*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 42471*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i64, 2/*#Ops*/, 6, 7,  // Results = #8
/* 42479*/        OPC_EmitInteger, MVT::i32, Mips::GPR64RegClassID,
/* 42482*/        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] })
/* 42490*/      0, /*End of Scope*/
/* 42491*/    /*Scope*/ 28, /*->42520*/
/* 42492*/      OPC_CheckChild0Type, MVT::v2f64,
/* 42494*/      OPC_RecordChild1, // #1 = $idx
/* 42495*/      OPC_MoveChild1,
/* 42496*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42499*/      OPC_CheckPredicate, 37, // Predicate_immZExt1Ptr
/* 42501*/      OPC_MoveParent,
/* 42502*/      OPC_MoveChild2,
/* 42503*/      OPC_CheckValueType, MVT::i64,
/* 42505*/      OPC_MoveParent,
/* 42506*/      OPC_CheckType, MVT::i64,
/* 42508*/      OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42510*/      OPC_EmitConvertToTarget, 1,
/* 42512*/      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)
/* 42520*/    0, /*End of Scope*/
/* 42521*/  /*SwitchOpcode*/ 104|128,1/*232*/, TARGET_VAL(ISD::EXTRACT_VECTOR_ELT),// ->42757
/* 42525*/    OPC_RecordChild0, // #0 = $ws
/* 42526*/    OPC_Scope, 24, /*->42552*/ // 3 children in Scope
/* 42528*/      OPC_RecordChild1, // #1 = $idx
/* 42529*/      OPC_MoveChild1,
/* 42530*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42533*/      OPC_CheckPredicate, 31, // Predicate_immZExt4
/* 42535*/      OPC_CheckType, MVT::i32,
/* 42537*/      OPC_MoveParent,
/* 42538*/      OPC_CheckType, MVT::i32,
/* 42540*/      OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42542*/      OPC_EmitConvertToTarget, 1,
/* 42544*/      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)
/* 42552*/    /*Scope*/ 101, /*->42654*/
/* 42553*/      OPC_CheckChild0Type, MVT::v4f32,
/* 42555*/      OPC_RecordChild1, // #1 = $n
/* 42556*/      OPC_Scope, 21, /*->42579*/ // 3 children in Scope
/* 42558*/        OPC_MoveChild1,
/* 42559*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42562*/        OPC_CheckPredicate, 33, // Predicate_immZExt2Ptr
/* 42564*/        OPC_MoveParent,
/* 42565*/        OPC_CheckType, MVT::f32,
/* 42567*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 42569*/        OPC_EmitConvertToTarget, 1,
/* 42571*/        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)
/* 42579*/      /*Scope*/ 25, /*->42605*/
/* 42580*/        OPC_CheckChild1Type, MVT::i32,
/* 42582*/        OPC_CheckType, MVT::f32,
/* 42584*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42586*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 42594*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 42597*/        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] })
/* 42605*/      /*Scope*/ 47, /*->42653*/
/* 42606*/        OPC_CheckChild1Type, MVT::i64,
/* 42608*/        OPC_CheckType, MVT::f32,
/* 42610*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42612*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 42615*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 42623*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42626*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 42634*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 42642*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 42645*/        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] })
/* 42653*/      0, /*End of Scope*/
/* 42654*/    /*Scope*/ 101, /*->42756*/
/* 42655*/      OPC_CheckChild0Type, MVT::v2f64,
/* 42657*/      OPC_RecordChild1, // #1 = $n
/* 42658*/      OPC_Scope, 21, /*->42681*/ // 3 children in Scope
/* 42660*/        OPC_MoveChild1,
/* 42661*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42664*/        OPC_CheckPredicate, 37, // Predicate_immZExt1Ptr
/* 42666*/        OPC_MoveParent,
/* 42667*/        OPC_CheckType, MVT::f64,
/* 42669*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 42671*/        OPC_EmitConvertToTarget, 1,
/* 42673*/        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)
/* 42681*/      /*Scope*/ 25, /*->42707*/
/* 42682*/        OPC_CheckChild1Type, MVT::i32,
/* 42684*/        OPC_CheckType, MVT::f64,
/* 42686*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42688*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1,  // Results = #2
/* 42696*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 42699*/        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] })
/* 42707*/      /*Scope*/ 47, /*->42755*/
/* 42708*/        OPC_CheckChild1Type, MVT::i64,
/* 42710*/        OPC_CheckType, MVT::f64,
/* 42712*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42714*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 42717*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 42725*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42728*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 42736*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 5,  // Results = #6
/* 42744*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 42747*/        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] })
/* 42755*/      0, /*End of Scope*/
/* 42756*/    0, /*End of Scope*/
/* 42757*/  /*SwitchOpcode*/ 66|128,1/*194*/, TARGET_VAL(MipsISD::JmpLink),// ->42955
/* 42761*/    OPC_RecordNode, // #0 = 'MipsJmpLink' chained node
/* 42762*/    OPC_CaptureGlueInput,
/* 42763*/    OPC_RecordChild1, // #1 = $target
/* 42764*/    OPC_Scope, 108, /*->42874*/ // 3 children in Scope
/* 42766*/      OPC_MoveChild1,
/* 42767*/      OPC_SwitchOpcode /*2 cases */, 60, TARGET_VAL(ISD::TargetGlobalAddress),// ->42831
/* 42771*/        OPC_Scope, 23, /*->42796*/ // 3 children in Scope
/* 42773*/          OPC_MoveParent,
/* 42774*/          OPC_Scope, 9, /*->42785*/ // 2 children in Scope
/* 42776*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 42778*/            OPC_EmitMergeInputChains1_0,
/* 42779*/            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)
/* 42785*/          /*Scope*/ 9, /*->42795*/
/* 42786*/            OPC_CheckPatternPredicate, 49, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 42788*/            OPC_EmitMergeInputChains1_0,
/* 42789*/            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)
/* 42795*/          0, /*End of Scope*/
/* 42796*/        /*Scope*/ 12, /*->42809*/
/* 42797*/          OPC_CheckType, MVT::i32,
/* 42799*/          OPC_MoveParent,
/* 42800*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 42802*/          OPC_EmitMergeInputChains1_0,
/* 42803*/          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)
/* 42809*/        /*Scope*/ 20, /*->42830*/
/* 42810*/          OPC_MoveParent,
/* 42811*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 42813*/          OPC_EmitMergeInputChains1_0,
/* 42814*/          OPC_Scope, 6, /*->42822*/ // 2 children in Scope
/* 42816*/            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)
/* 42822*/          /*Scope*/ 6, /*->42829*/
/* 42823*/            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)
/* 42829*/          0, /*End of Scope*/
/* 42830*/        0, /*End of Scope*/
/* 42831*/      /*SwitchOpcode*/ 39, TARGET_VAL(ISD::TargetExternalSymbol),// ->42873
/* 42834*/        OPC_SwitchType /*2 cases */, 23, MVT::i32,// ->42860
/* 42837*/          OPC_MoveParent,
/* 42838*/          OPC_Scope, 9, /*->42849*/ // 2 children in Scope
/* 42840*/            OPC_CheckPatternPredicate, 69, // (Subtarget->hasStandardEncoding())
/* 42842*/            OPC_EmitMergeInputChains1_0,
/* 42843*/            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)
/* 42849*/          /*Scope*/ 9, /*->42859*/
/* 42850*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 42852*/            OPC_EmitMergeInputChains1_0,
/* 42853*/            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)
/* 42859*/          0, /*End of Scope*/
/* 42860*/        /*SwitchType*/ 10, MVT::i64,// ->42872
/* 42862*/          OPC_MoveParent,
/* 42863*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 42865*/          OPC_EmitMergeInputChains1_0,
/* 42866*/          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)
/* 42872*/        0, // EndSwitchType
/* 42873*/      0, // EndSwitchOpcode
/* 42874*/    /*Scope*/ 54, /*->42929*/
/* 42875*/      OPC_CheckChild1Type, MVT::i32,
/* 42877*/      OPC_Scope, 9, /*->42888*/ // 5 children in Scope
/* 42879*/        OPC_CheckPatternPredicate, 70, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode())
/* 42881*/        OPC_EmitMergeInputChains1_0,
/* 42882*/        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)
/* 42888*/      /*Scope*/ 9, /*->42898*/
/* 42889*/        OPC_CheckPatternPredicate, 71, // (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 42891*/        OPC_EmitMergeInputChains1_0,
/* 42892*/        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)
/* 42898*/      /*Scope*/ 9, /*->42908*/
/* 42899*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 42901*/        OPC_EmitMergeInputChains1_0,
/* 42902*/        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)
/* 42908*/      /*Scope*/ 9, /*->42918*/
/* 42909*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 42911*/        OPC_EmitMergeInputChains1_0,
/* 42912*/        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)
/* 42918*/      /*Scope*/ 9, /*->42928*/
/* 42919*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 42921*/        OPC_EmitMergeInputChains1_0,
/* 42922*/        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)
/* 42928*/      0, /*End of Scope*/
/* 42929*/    /*Scope*/ 24, /*->42954*/
/* 42930*/      OPC_CheckChild1Type, MVT::i64,
/* 42932*/      OPC_Scope, 9, /*->42943*/ // 2 children in Scope
/* 42934*/        OPC_CheckPatternPredicate, 72, // (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMips16Mode())
/* 42936*/        OPC_EmitMergeInputChains1_0,
/* 42937*/        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)
/* 42943*/      /*Scope*/ 9, /*->42953*/
/* 42944*/        OPC_CheckPatternPredicate, 73, // (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 42946*/        OPC_EmitMergeInputChains1_0,
/* 42947*/        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)
/* 42953*/      0, /*End of Scope*/
/* 42954*/    0, /*End of Scope*/
/* 42955*/  /*SwitchOpcode*/ 63|128,1/*191*/, TARGET_VAL(MipsISD::TailCall),// ->43150
/* 42959*/    OPC_RecordNode, // #0 = 'MipsTailCall' chained node
/* 42960*/    OPC_CaptureGlueInput,
/* 42961*/    OPC_RecordChild1, // #1 = $dst
/* 42962*/    OPC_Scope, 75, /*->43039*/ // 3 children in Scope
/* 42964*/      OPC_MoveChild1,
/* 42965*/      OPC_SwitchOpcode /*2 cases */, 33, TARGET_VAL(ISD::TargetGlobalAddress),// ->43002
/* 42969*/        OPC_MoveParent,
/* 42970*/        OPC_Scope, 9, /*->42981*/ // 3 children in Scope
/* 42972*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 42974*/          OPC_EmitMergeInputChains1_0,
/* 42975*/          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)
/* 42981*/        /*Scope*/ 9, /*->42991*/
/* 42982*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 42984*/          OPC_EmitMergeInputChains1_0,
/* 42985*/          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)
/* 42991*/        /*Scope*/ 9, /*->43001*/
/* 42992*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 42994*/          OPC_EmitMergeInputChains1_0,
/* 42995*/          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)
/* 43001*/        0, /*End of Scope*/
/* 43002*/      /*SwitchOpcode*/ 33, TARGET_VAL(ISD::TargetExternalSymbol),// ->43038
/* 43005*/        OPC_MoveParent,
/* 43006*/        OPC_Scope, 9, /*->43017*/ // 3 children in Scope
/* 43008*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43010*/          OPC_EmitMergeInputChains1_0,
/* 43011*/          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)
/* 43017*/        /*Scope*/ 9, /*->43027*/
/* 43018*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 43020*/          OPC_EmitMergeInputChains1_0,
/* 43021*/          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)
/* 43027*/        /*Scope*/ 9, /*->43037*/
/* 43028*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 43030*/          OPC_EmitMergeInputChains1_0,
/* 43031*/          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)
/* 43037*/        0, /*End of Scope*/
/* 43038*/      0, // EndSwitchOpcode
/* 43039*/    /*Scope*/ 64, /*->43104*/
/* 43040*/      OPC_CheckChild1Type, MVT::i32,
/* 43042*/      OPC_Scope, 9, /*->43053*/ // 6 children in Scope
/* 43044*/        OPC_CheckPatternPredicate, 74, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 43046*/        OPC_EmitMergeInputChains1_0,
/* 43047*/        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)
/* 43053*/      /*Scope*/ 9, /*->43063*/
/* 43054*/        OPC_CheckPatternPredicate, 75, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard())
/* 43056*/        OPC_EmitMergeInputChains1_0,
/* 43057*/        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)
/* 43063*/      /*Scope*/ 9, /*->43073*/
/* 43064*/        OPC_CheckPatternPredicate, 76, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode())
/* 43066*/        OPC_EmitMergeInputChains1_0,
/* 43067*/        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)
/* 43073*/      /*Scope*/ 9, /*->43083*/
/* 43074*/        OPC_CheckPatternPredicate, 77, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 43076*/        OPC_EmitMergeInputChains1_0,
/* 43077*/        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)
/* 43083*/      /*Scope*/ 9, /*->43093*/
/* 43084*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 43086*/        OPC_EmitMergeInputChains1_0,
/* 43087*/        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)
/* 43093*/      /*Scope*/ 9, /*->43103*/
/* 43094*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 43096*/        OPC_EmitMergeInputChains1_0,
/* 43097*/        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)
/* 43103*/      0, /*End of Scope*/
/* 43104*/    /*Scope*/ 44, /*->43149*/
/* 43105*/      OPC_CheckChild1Type, MVT::i64,
/* 43107*/      OPC_Scope, 9, /*->43118*/ // 4 children in Scope
/* 43109*/        OPC_CheckPatternPredicate, 78, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 43111*/        OPC_EmitMergeInputChains1_0,
/* 43112*/        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)
/* 43118*/      /*Scope*/ 9, /*->43128*/
/* 43119*/        OPC_CheckPatternPredicate, 79, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard())
/* 43121*/        OPC_EmitMergeInputChains1_0,
/* 43122*/        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)
/* 43128*/      /*Scope*/ 9, /*->43138*/
/* 43129*/        OPC_CheckPatternPredicate, 80, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode())
/* 43131*/        OPC_EmitMergeInputChains1_0,
/* 43132*/        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)
/* 43138*/      /*Scope*/ 9, /*->43148*/
/* 43139*/        OPC_CheckPatternPredicate, 81, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 43141*/        OPC_EmitMergeInputChains1_0,
/* 43142*/        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)
/* 43148*/      0, /*End of Scope*/
/* 43149*/    0, /*End of Scope*/
/* 43150*/  /*SwitchOpcode*/ 16|128,2/*272*/, TARGET_VAL(MipsISD::Hi),// ->43426
/* 43154*/    OPC_RecordChild0, // #0 = $in
/* 43155*/    OPC_MoveChild0,
/* 43156*/    OPC_SwitchOpcode /*5 cases */, 59, TARGET_VAL(ISD::TargetGlobalAddress),// ->43219
/* 43160*/      OPC_MoveParent,
/* 43161*/      OPC_SwitchType /*2 cases */, 43, MVT::i32,// ->43207
/* 43164*/        OPC_Scope, 9, /*->43175*/ // 3 children in Scope
/* 43166*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43168*/          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)
/* 43175*/        /*Scope*/ 9, /*->43185*/
/* 43176*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43178*/          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)
/* 43185*/        /*Scope*/ 20, /*->43206*/
/* 43186*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 43188*/          OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                        MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 43195*/          OPC_EmitInteger, MVT::i32, 16, 
/* 43198*/          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] })
/* 43206*/        0, /*End of Scope*/
/* 43207*/      /*SwitchType*/ 9, MVT::i64,// ->43218
/* 43209*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43211*/        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)
/* 43218*/      0, // EndSwitchType
/* 43219*/    /*SwitchOpcode*/ 59, TARGET_VAL(ISD::TargetBlockAddress),// ->43281
/* 43222*/      OPC_MoveParent,
/* 43223*/      OPC_SwitchType /*2 cases */, 43, MVT::i32,// ->43269
/* 43226*/        OPC_Scope, 9, /*->43237*/ // 3 children in Scope
/* 43228*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43230*/          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)
/* 43237*/        /*Scope*/ 9, /*->43247*/
/* 43238*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43240*/          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)
/* 43247*/        /*Scope*/ 20, /*->43268*/
/* 43248*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 43250*/          OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                        MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 43257*/          OPC_EmitInteger, MVT::i32, 16, 
/* 43260*/          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] })
/* 43268*/        0, /*End of Scope*/
/* 43269*/      /*SwitchType*/ 9, MVT::i64,// ->43280
/* 43271*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43273*/        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)
/* 43280*/      0, // EndSwitchType
/* 43281*/    /*SwitchOpcode*/ 59, TARGET_VAL(ISD::TargetJumpTable),// ->43343
/* 43284*/      OPC_MoveParent,
/* 43285*/      OPC_SwitchType /*2 cases */, 43, MVT::i32,// ->43331
/* 43288*/        OPC_Scope, 9, /*->43299*/ // 3 children in Scope
/* 43290*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43292*/          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)
/* 43299*/        /*Scope*/ 9, /*->43309*/
/* 43300*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43302*/          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)
/* 43309*/        /*Scope*/ 20, /*->43330*/
/* 43310*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 43312*/          OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                        MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 43319*/          OPC_EmitInteger, MVT::i32, 16, 
/* 43322*/          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] })
/* 43330*/        0, /*End of Scope*/
/* 43331*/      /*SwitchType*/ 9, MVT::i64,// ->43342
/* 43333*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43335*/        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)
/* 43342*/      0, // EndSwitchType
/* 43343*/    /*SwitchOpcode*/ 38, TARGET_VAL(ISD::TargetConstantPool),// ->43384
/* 43346*/      OPC_MoveParent,
/* 43347*/      OPC_SwitchType /*2 cases */, 22, MVT::i32,// ->43372
/* 43350*/        OPC_Scope, 9, /*->43361*/ // 2 children in Scope
/* 43352*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43354*/          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)
/* 43361*/        /*Scope*/ 9, /*->43371*/
/* 43362*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43364*/          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)
/* 43371*/        0, /*End of Scope*/
/* 43372*/      /*SwitchType*/ 9, MVT::i64,// ->43383
/* 43374*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43376*/        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)
/* 43383*/      0, // EndSwitchType
/* 43384*/    /*SwitchOpcode*/ 38, TARGET_VAL(ISD::TargetExternalSymbol),// ->43425
/* 43387*/      OPC_MoveParent,
/* 43388*/      OPC_SwitchType /*2 cases */, 22, MVT::i32,// ->43413
/* 43391*/        OPC_Scope, 9, /*->43402*/ // 2 children in Scope
/* 43393*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43395*/          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)
/* 43402*/        /*Scope*/ 9, /*->43412*/
/* 43403*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43405*/          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)
/* 43412*/        0, /*End of Scope*/
/* 43413*/      /*SwitchType*/ 9, MVT::i64,// ->43424
/* 43415*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43417*/        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)
/* 43424*/      0, // EndSwitchType
/* 43425*/    0, // EndSwitchOpcode
/* 43426*/  /*SwitchOpcode*/ 82|128,2/*338*/, TARGET_VAL(MipsISD::Lo),// ->43768
/* 43430*/    OPC_RecordChild0, // #0 = $in
/* 43431*/    OPC_MoveChild0,
/* 43432*/    OPC_SwitchOpcode /*6 cases */, 51, TARGET_VAL(ISD::TargetGlobalAddress),// ->43487
/* 43436*/      OPC_MoveParent,
/* 43437*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->43470
/* 43440*/        OPC_Scope, 13, /*->43455*/ // 2 children in Scope
/* 43442*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43444*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43447*/          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)
/* 43455*/        /*Scope*/ 13, /*->43469*/
/* 43456*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43458*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43461*/          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)
/* 43469*/        0, /*End of Scope*/
/* 43470*/      /*SwitchType*/ 14, MVT::i64,// ->43486
/* 43472*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43474*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43478*/        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)
/* 43486*/      0, // EndSwitchType
/* 43487*/    /*SwitchOpcode*/ 61, TARGET_VAL(ISD::TargetBlockAddress),// ->43551
/* 43490*/      OPC_MoveParent,
/* 43491*/      OPC_SwitchType /*2 cases */, 40, MVT::i32,// ->43534
/* 43494*/        OPC_Scope, 13, /*->43509*/ // 3 children in Scope
/* 43496*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43498*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43501*/          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)
/* 43509*/        /*Scope*/ 9, /*->43519*/
/* 43510*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 43512*/          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)
/* 43519*/        /*Scope*/ 13, /*->43533*/
/* 43520*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43522*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43525*/          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)
/* 43533*/        0, /*End of Scope*/
/* 43534*/      /*SwitchType*/ 14, MVT::i64,// ->43550
/* 43536*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43538*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43542*/        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)
/* 43550*/      0, // EndSwitchType
/* 43551*/    /*SwitchOpcode*/ 51, TARGET_VAL(ISD::TargetJumpTable),// ->43605
/* 43554*/      OPC_MoveParent,
/* 43555*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->43588
/* 43558*/        OPC_Scope, 13, /*->43573*/ // 2 children in Scope
/* 43560*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43562*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43565*/          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)
/* 43573*/        /*Scope*/ 13, /*->43587*/
/* 43574*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43576*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43579*/          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)
/* 43587*/        0, /*End of Scope*/
/* 43588*/      /*SwitchType*/ 14, MVT::i64,// ->43604
/* 43590*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43592*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43596*/        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)
/* 43604*/      0, // EndSwitchType
/* 43605*/    /*SwitchOpcode*/ 51, TARGET_VAL(ISD::TargetConstantPool),// ->43659
/* 43608*/      OPC_MoveParent,
/* 43609*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->43642
/* 43612*/        OPC_Scope, 13, /*->43627*/ // 2 children in Scope
/* 43614*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43616*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43619*/          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)
/* 43627*/        /*Scope*/ 13, /*->43641*/
/* 43628*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43630*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43633*/          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)
/* 43641*/        0, /*End of Scope*/
/* 43642*/      /*SwitchType*/ 14, MVT::i64,// ->43658
/* 43644*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43646*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43650*/        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)
/* 43658*/      0, // EndSwitchType
/* 43659*/    /*SwitchOpcode*/ 51, TARGET_VAL(ISD::TargetGlobalTLSAddress),// ->43713
/* 43662*/      OPC_MoveParent,
/* 43663*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->43696
/* 43666*/        OPC_Scope, 13, /*->43681*/ // 2 children in Scope
/* 43668*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43670*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43673*/          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)
/* 43681*/        /*Scope*/ 13, /*->43695*/
/* 43682*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43684*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43687*/          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)
/* 43695*/        0, /*End of Scope*/
/* 43696*/      /*SwitchType*/ 14, MVT::i64,// ->43712
/* 43698*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43700*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43704*/        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)
/* 43712*/      0, // EndSwitchType
/* 43713*/    /*SwitchOpcode*/ 51, TARGET_VAL(ISD::TargetExternalSymbol),// ->43767
/* 43716*/      OPC_MoveParent,
/* 43717*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->43750
/* 43720*/        OPC_Scope, 13, /*->43735*/ // 2 children in Scope
/* 43722*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43724*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43727*/          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)
/* 43735*/        /*Scope*/ 13, /*->43749*/
/* 43736*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43738*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43741*/          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)
/* 43749*/        0, /*End of Scope*/
/* 43750*/      /*SwitchType*/ 14, MVT::i64,// ->43766
/* 43752*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43754*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43758*/        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)
/* 43766*/      0, // EndSwitchType
/* 43767*/    0, // EndSwitchOpcode
/* 43768*/  /*SwitchOpcode*/ 86, TARGET_VAL(MipsISD::GotHi),// ->43857
/* 43771*/    OPC_RecordChild0, // #0 = $in
/* 43772*/    OPC_MoveChild0,
/* 43773*/    OPC_SwitchOpcode /*2 cases */, 38, TARGET_VAL(ISD::TargetGlobalAddress),// ->43815
/* 43777*/      OPC_MoveParent,
/* 43778*/      OPC_SwitchType /*2 cases */, 22, MVT::i32,// ->43803
/* 43781*/        OPC_Scope, 9, /*->43792*/ // 2 children in Scope
/* 43783*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43785*/          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)
/* 43792*/        /*Scope*/ 9, /*->43802*/
/* 43793*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43795*/          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)
/* 43802*/        0, /*End of Scope*/
/* 43803*/      /*SwitchType*/ 9, MVT::i64,// ->43814
/* 43805*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43807*/        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)
/* 43814*/      0, // EndSwitchType
/* 43815*/    /*SwitchOpcode*/ 38, TARGET_VAL(ISD::TargetExternalSymbol),// ->43856
/* 43818*/      OPC_MoveParent,
/* 43819*/      OPC_SwitchType /*2 cases */, 22, MVT::i32,// ->43844
/* 43822*/        OPC_Scope, 9, /*->43833*/ // 2 children in Scope
/* 43824*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43826*/          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)
/* 43833*/        /*Scope*/ 9, /*->43843*/
/* 43834*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43836*/          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)
/* 43843*/        0, /*End of Scope*/
/* 43844*/      /*SwitchType*/ 9, MVT::i64,// ->43855
/* 43846*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43848*/        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)
/* 43855*/      0, // EndSwitchType
/* 43856*/    0, // EndSwitchOpcode
/* 43857*/  /*SwitchOpcode*/ 64, TARGET_VAL(MipsISD::TlsHi),// ->43924
/* 43860*/    OPC_RecordChild0, // #0 = $in
/* 43861*/    OPC_MoveChild0,
/* 43862*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetGlobalTLSAddress),
/* 43865*/    OPC_MoveParent,
/* 43866*/    OPC_SwitchType /*2 cases */, 43, MVT::i32,// ->43912
/* 43869*/      OPC_Scope, 9, /*->43880*/ // 3 children in Scope
/* 43871*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43873*/        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)
/* 43880*/      /*Scope*/ 9, /*->43890*/
/* 43881*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43883*/        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)
/* 43890*/      /*Scope*/ 20, /*->43911*/
/* 43891*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 43893*/        OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                      MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 43900*/        OPC_EmitInteger, MVT::i32, 16, 
/* 43903*/        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] })
/* 43911*/      0, /*End of Scope*/
/* 43912*/    /*SwitchType*/ 9, MVT::i64,// ->43923
/* 43914*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43916*/      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)
/* 43923*/    0, // EndSwitchType
/* 43924*/  /*SwitchOpcode*/ 35|128,2/*291*/, TARGET_VAL(MipsISD::Wrapper),// ->44219
/* 43928*/    OPC_RecordChild0, // #0 = $gp
/* 43929*/    OPC_RecordChild1, // #1 = $in
/* 43930*/    OPC_MoveChild1,
/* 43931*/    OPC_SwitchOpcode /*6 cases */, 52, TARGET_VAL(ISD::TargetGlobalAddress),// ->43987
/* 43935*/      OPC_MoveParent,
/* 43936*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->43974
/* 43939*/        OPC_Scope, 10, /*->43951*/ // 3 children in Scope
/* 43941*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43943*/          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)
/* 43951*/        /*Scope*/ 10, /*->43962*/
/* 43952*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 43954*/          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)
/* 43962*/        /*Scope*/ 10, /*->43973*/
/* 43963*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43965*/          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)
/* 43973*/        0, /*End of Scope*/
/* 43974*/      /*SwitchType*/ 10, MVT::i64,// ->43986
/* 43976*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43978*/        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)
/* 43986*/      0, // EndSwitchType
/* 43987*/    /*SwitchOpcode*/ 41, TARGET_VAL(ISD::TargetConstantPool),// ->44031
/* 43990*/      OPC_MoveParent,
/* 43991*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->44018
/* 43994*/        OPC_Scope, 10, /*->44006*/ // 2 children in Scope
/* 43996*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43998*/          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)
/* 44006*/        /*Scope*/ 10, /*->44017*/
/* 44007*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44009*/          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)
/* 44017*/        0, /*End of Scope*/
/* 44018*/      /*SwitchType*/ 10, MVT::i64,// ->44030
/* 44020*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44022*/        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)
/* 44030*/      0, // EndSwitchType
/* 44031*/    /*SwitchOpcode*/ 41, TARGET_VAL(ISD::TargetExternalSymbol),// ->44075
/* 44034*/      OPC_MoveParent,
/* 44035*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->44062
/* 44038*/        OPC_Scope, 10, /*->44050*/ // 2 children in Scope
/* 44040*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44042*/          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)
/* 44050*/        /*Scope*/ 10, /*->44061*/
/* 44051*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44053*/          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)
/* 44061*/        0, /*End of Scope*/
/* 44062*/      /*SwitchType*/ 10, MVT::i64,// ->44074
/* 44064*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44066*/        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)
/* 44074*/      0, // EndSwitchType
/* 44075*/    /*SwitchOpcode*/ 41, TARGET_VAL(ISD::TargetBlockAddress),// ->44119
/* 44078*/      OPC_MoveParent,
/* 44079*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->44106
/* 44082*/        OPC_Scope, 10, /*->44094*/ // 2 children in Scope
/* 44084*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44086*/          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)
/* 44094*/        /*Scope*/ 10, /*->44105*/
/* 44095*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44097*/          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)
/* 44105*/        0, /*End of Scope*/
/* 44106*/      /*SwitchType*/ 10, MVT::i64,// ->44118
/* 44108*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44110*/        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)
/* 44118*/      0, // EndSwitchType
/* 44119*/    /*SwitchOpcode*/ 41, TARGET_VAL(ISD::TargetJumpTable),// ->44163
/* 44122*/      OPC_MoveParent,
/* 44123*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->44150
/* 44126*/        OPC_Scope, 10, /*->44138*/ // 2 children in Scope
/* 44128*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44130*/          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)
/* 44138*/        /*Scope*/ 10, /*->44149*/
/* 44139*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44141*/          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)
/* 44149*/        0, /*End of Scope*/
/* 44150*/      /*SwitchType*/ 10, MVT::i64,// ->44162
/* 44152*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44154*/        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)
/* 44162*/      0, // EndSwitchType
/* 44163*/    /*SwitchOpcode*/ 52, TARGET_VAL(ISD::TargetGlobalTLSAddress),// ->44218
/* 44166*/      OPC_MoveParent,
/* 44167*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->44205
/* 44170*/        OPC_Scope, 10, /*->44182*/ // 3 children in Scope
/* 44172*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44174*/          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)
/* 44182*/        /*Scope*/ 10, /*->44193*/
/* 44183*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 44185*/          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)
/* 44193*/        /*Scope*/ 10, /*->44204*/
/* 44194*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44196*/          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)
/* 44204*/        0, /*End of Scope*/
/* 44205*/      /*SwitchType*/ 10, MVT::i64,// ->44217
/* 44207*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44209*/        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)
/* 44217*/      0, // EndSwitchType
/* 44218*/    0, // EndSwitchOpcode
/* 44219*/  /*SwitchOpcode*/ 6|128,1/*134*/, TARGET_VAL(MipsISD::FPCmp),// ->44357
/* 44223*/    OPC_RecordChild0, // #0 = $fs
/* 44224*/    OPC_Scope, 39, /*->44265*/ // 3 children in Scope
/* 44226*/      OPC_CheckChild0Type, MVT::f32,
/* 44228*/      OPC_RecordChild1, // #1 = $ft
/* 44229*/      OPC_RecordChild2, // #2 = $cond
/* 44230*/      OPC_MoveChild2,
/* 44231*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 44234*/      OPC_MoveParent,
/* 44235*/      OPC_Scope, 13, /*->44250*/ // 2 children in Scope
/* 44237*/        OPC_CheckPatternPredicate, 63, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 44239*/        OPC_EmitConvertToTarget, 2,
/* 44241*/        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)
/* 44250*/      /*Scope*/ 13, /*->44264*/
/* 44251*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 44253*/        OPC_EmitConvertToTarget, 2,
/* 44255*/        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)
/* 44264*/      0, /*End of Scope*/
/* 44265*/    /*Scope*/ 53, /*->44319*/
/* 44266*/      OPC_CheckChild0Type, MVT::f64,
/* 44268*/      OPC_RecordChild1, // #1 = $ft
/* 44269*/      OPC_RecordChild2, // #2 = $cond
/* 44270*/      OPC_MoveChild2,
/* 44271*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 44274*/      OPC_MoveParent,
/* 44275*/      OPC_Scope, 13, /*->44290*/ // 3 children in Scope
/* 44277*/        OPC_CheckPatternPredicate, 82, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 44279*/        OPC_EmitConvertToTarget, 2,
/* 44281*/        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)
/* 44290*/      /*Scope*/ 13, /*->44304*/
/* 44291*/        OPC_CheckPatternPredicate, 83, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 44293*/        OPC_EmitConvertToTarget, 2,
/* 44295*/        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)
/* 44304*/      /*Scope*/ 13, /*->44318*/
/* 44305*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 44307*/        OPC_EmitConvertToTarget, 2,
/* 44309*/        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)
/* 44318*/      0, /*End of Scope*/
/* 44319*/    /*Scope*/ 36, /*->44356*/
/* 44320*/      OPC_CheckChild0Type, MVT::f16,
/* 44322*/      OPC_RecordChild1, // #1 = $wt
/* 44323*/      OPC_RecordChild2, // #2 = $cond
/* 44324*/      OPC_MoveChild2,
/* 44325*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 44328*/      OPC_MoveParent,
/* 44329*/      OPC_CheckPatternPredicate, 84, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 44331*/      OPC_EmitNode1, TARGET_VAL(Mips::MSA_FP_EXTEND_W_PSEUDO), 0,
                    MVT::f32, 1/*#Ops*/, 0,  // Results = #3
/* 44338*/      OPC_EmitNode1, TARGET_VAL(Mips::MSA_FP_EXTEND_W_PSEUDO), 0,
                    MVT::f32, 1/*#Ops*/, 1,  // Results = #4
/* 44345*/      OPC_EmitConvertToTarget, 2,
/* 44347*/      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)
/* 44356*/    0, /*End of Scope*/
/* 44357*/  /*SwitchOpcode*/ 35, TARGET_VAL(MipsISD::ExtractElementF64),// ->44395
/* 44360*/    OPC_RecordChild0, // #0 = $src
/* 44361*/    OPC_RecordChild1, // #1 = $n
/* 44362*/    OPC_MoveChild1,
/* 44363*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 44366*/    OPC_MoveParent,
/* 44367*/    OPC_Scope, 12, /*->44381*/ // 2 children in Scope
/* 44369*/      OPC_CheckPatternPredicate, 85, // (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMips16Mode())
/* 44371*/      OPC_EmitConvertToTarget, 1,
/* 44373*/      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)
/* 44381*/    /*Scope*/ 12, /*->44394*/
/* 44382*/      OPC_CheckPatternPredicate, 86, // (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMips16Mode())
/* 44384*/      OPC_EmitConvertToTarget, 1,
/* 44386*/      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)
/* 44394*/    0, /*End of Scope*/
/* 44395*/  /*SwitchOpcode*/ 79, TARGET_VAL(MipsISD::Highest),// ->44477
/* 44398*/    OPC_RecordChild0, // #0 = $in
/* 44399*/    OPC_MoveChild0,
/* 44400*/    OPC_SwitchOpcode /*5 cases */, 12, TARGET_VAL(ISD::TargetGlobalAddress),// ->44416
/* 44404*/      OPC_MoveParent,
/* 44405*/      OPC_CheckType, MVT::i64,
/* 44407*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44409*/      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)
/* 44416*/    /*SwitchOpcode*/ 12, TARGET_VAL(ISD::TargetBlockAddress),// ->44431
/* 44419*/      OPC_MoveParent,
/* 44420*/      OPC_CheckType, MVT::i64,
/* 44422*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44424*/      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)
/* 44431*/    /*SwitchOpcode*/ 12, TARGET_VAL(ISD::TargetJumpTable),// ->44446
/* 44434*/      OPC_MoveParent,
/* 44435*/      OPC_CheckType, MVT::i64,
/* 44437*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44439*/      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)
/* 44446*/    /*SwitchOpcode*/ 12, TARGET_VAL(ISD::TargetConstantPool),// ->44461
/* 44449*/      OPC_MoveParent,
/* 44450*/      OPC_CheckType, MVT::i64,
/* 44452*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44454*/      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)
/* 44461*/    /*SwitchOpcode*/ 12, TARGET_VAL(ISD::TargetExternalSymbol),// ->44476
/* 44464*/      OPC_MoveParent,
/* 44465*/      OPC_CheckType, MVT::i64,
/* 44467*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44469*/      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)
/* 44476*/    0, // EndSwitchOpcode
/* 44477*/  /*SwitchOpcode*/ 104, TARGET_VAL(MipsISD::Higher),// ->44584
/* 44480*/    OPC_RecordChild0, // #0 = $in
/* 44481*/    OPC_MoveChild0,
/* 44482*/    OPC_SwitchOpcode /*5 cases */, 17, TARGET_VAL(ISD::TargetGlobalAddress),// ->44503
/* 44486*/      OPC_MoveParent,
/* 44487*/      OPC_CheckType, MVT::i64,
/* 44489*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44491*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44495*/      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)
/* 44503*/    /*SwitchOpcode*/ 17, TARGET_VAL(ISD::TargetBlockAddress),// ->44523
/* 44506*/      OPC_MoveParent,
/* 44507*/      OPC_CheckType, MVT::i64,
/* 44509*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44511*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44515*/      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)
/* 44523*/    /*SwitchOpcode*/ 17, TARGET_VAL(ISD::TargetJumpTable),// ->44543
/* 44526*/      OPC_MoveParent,
/* 44527*/      OPC_CheckType, MVT::i64,
/* 44529*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44531*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44535*/      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)
/* 44543*/    /*SwitchOpcode*/ 17, TARGET_VAL(ISD::TargetConstantPool),// ->44563
/* 44546*/      OPC_MoveParent,
/* 44547*/      OPC_CheckType, MVT::i64,
/* 44549*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44551*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44555*/      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)
/* 44563*/    /*SwitchOpcode*/ 17, TARGET_VAL(ISD::TargetExternalSymbol),// ->44583
/* 44566*/      OPC_MoveParent,
/* 44567*/      OPC_CheckType, MVT::i64,
/* 44569*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44571*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44575*/      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)
/* 44583*/    0, // EndSwitchOpcode
/* 44584*/  /*SwitchOpcode*/ 88|128,3/*472*/, TARGET_VAL(ISD::Constant),// ->45060
/* 44588*/    OPC_RecordNode, // #0 = $imm
/* 44589*/    OPC_Scope, 18, /*->44609*/ // 18 children in Scope
/* 44591*/      OPC_CheckPredicate, 57, // Predicate_LUiPred
/* 44593*/      OPC_CheckType, MVT::i32,
/* 44595*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44597*/      OPC_EmitConvertToTarget, 0,
/* 44599*/      OPC_EmitNodeXForm, 5, 1, // HI16
/* 44602*/      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))
/* 44609*/    /*Scope*/ 19, /*->44629*/
/* 44610*/      OPC_CheckPredicate, 58, // Predicate_ORiPred
/* 44612*/      OPC_CheckType, MVT::i32,
/* 44614*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44616*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44619*/      OPC_EmitConvertToTarget, 0,
/* 44621*/      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)
/* 44629*/    /*Scope*/ 19, /*->44649*/
/* 44630*/      OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 44632*/      OPC_CheckType, MVT::i32,
/* 44634*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44636*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44639*/      OPC_EmitConvertToTarget, 0,
/* 44641*/      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)
/* 44649*/    /*Scope*/ 18, /*->44668*/
/* 44650*/      OPC_CheckPredicate, 57, // Predicate_LUiPred
/* 44652*/      OPC_CheckType, MVT::i64,
/* 44654*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44656*/      OPC_EmitConvertToTarget, 0,
/* 44658*/      OPC_EmitNodeXForm, 5, 1, // HI16
/* 44661*/      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))
/* 44668*/    /*Scope*/ 20, /*->44689*/
/* 44669*/      OPC_CheckPredicate, 58, // Predicate_ORiPred
/* 44671*/      OPC_CheckType, MVT::i64,
/* 44673*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44675*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44679*/      OPC_EmitConvertToTarget, 0,
/* 44681*/      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)
/* 44689*/    /*Scope*/ 20, /*->44710*/
/* 44690*/      OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 44692*/      OPC_CheckType, MVT::i64,
/* 44694*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44696*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44700*/      OPC_EmitConvertToTarget, 0,
/* 44702*/      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)
/* 44710*/    /*Scope*/ 18, /*->44729*/
/* 44711*/      OPC_CheckPredicate, 21, // Predicate_immZExt16
/* 44713*/      OPC_CheckType, MVT::i32,
/* 44715*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 44717*/      OPC_EmitConvertToTarget, 0,
/* 44719*/      OPC_EmitNodeXForm, 3, 1, // LO16
/* 44722*/      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))
/* 44729*/    /*Scope*/ 15, /*->44745*/
/* 44730*/      OPC_CheckPredicate, 59, // Predicate_immLi16
/* 44732*/      OPC_CheckType, MVT::i32,
/* 44734*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44736*/      OPC_EmitConvertToTarget, 0,
/* 44738*/      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)
/* 44745*/    /*Scope*/ 18, /*->44764*/
/* 44746*/      OPC_CheckPredicate, 57, // Predicate_LUiPred
/* 44748*/      OPC_CheckType, MVT::i32,
/* 44750*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44752*/      OPC_EmitConvertToTarget, 0,
/* 44754*/      OPC_EmitNodeXForm, 5, 1, // HI16
/* 44757*/      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))
/* 44764*/    /*Scope*/ 19, /*->44784*/
/* 44765*/      OPC_CheckPredicate, 58, // Predicate_ORiPred
/* 44767*/      OPC_CheckType, MVT::i32,
/* 44769*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44771*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44774*/      OPC_EmitConvertToTarget, 0,
/* 44776*/      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)
/* 44784*/    /*Scope*/ 19, /*->44804*/
/* 44785*/      OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 44787*/      OPC_CheckType, MVT::i32,
/* 44789*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44791*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44794*/      OPC_EmitConvertToTarget, 0,
/* 44796*/      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)
/* 44804*/    /*Scope*/ 22, /*->44827*/
/* 44805*/      OPC_CheckPredicate, 21, // Predicate_immZExt16
/* 44807*/      OPC_CheckType, MVT::i32,
/* 44809*/      OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 44811*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44814*/      OPC_EmitConvertToTarget, 0,
/* 44816*/      OPC_EmitNodeXForm, 3, 2, // LO16
/* 44819*/      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))
/* 44827*/    /*Scope*/ 62, /*->44890*/
/* 44828*/      OPC_CheckPredicate, 60, // Predicate_LUiORiPred
/* 44830*/      OPC_SwitchType /*2 cases */, 27, MVT::i32,// ->44860
/* 44833*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44835*/        OPC_EmitConvertToTarget, 0,
/* 44837*/        OPC_EmitNodeXForm, 5, 1, // HI16
/* 44840*/        OPC_EmitNode1, TARGET_VAL(Mips::LUi), 0,
                      MVT::i32, 1/*#Ops*/, 2,  // Results = #3
/* 44847*/        OPC_EmitConvertToTarget, 0,
/* 44849*/        OPC_EmitNodeXForm, 3, 4, // LO16
/* 44852*/        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))
/* 44860*/      /*SwitchType*/ 27, MVT::i64,// ->44889
/* 44862*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44864*/        OPC_EmitConvertToTarget, 0,
/* 44866*/        OPC_EmitNodeXForm, 5, 1, // HI16
/* 44869*/        OPC_EmitNode1, TARGET_VAL(Mips::LUi64), 0,
                      MVT::i64, 1/*#Ops*/, 2,  // Results = #3
/* 44876*/        OPC_EmitConvertToTarget, 0,
/* 44878*/        OPC_EmitNodeXForm, 3, 4, // LO16
/* 44881*/        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))
/* 44889*/      0, // EndSwitchType
/* 44890*/    /*Scope*/ 34, /*->44925*/
/* 44891*/      OPC_CheckPredicate, 61, // Predicate_immZExt32Low16Zero
/* 44893*/      OPC_CheckType, MVT::i64,
/* 44895*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44897*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44901*/      OPC_EmitConvertToTarget, 0,
/* 44903*/      OPC_EmitNodeXForm, 5, 2, // HI16
/* 44906*/      OPC_EmitNode1, TARGET_VAL(Mips::ORi64), 0,
                    MVT::i64, 2/*#Ops*/, 1, 3,  // Results = #4
/* 44914*/      OPC_EmitInteger, MVT::i32, 16, 
/* 44917*/      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] })
/* 44925*/    /*Scope*/ 26, /*->44952*/
/* 44926*/      OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 44928*/      OPC_CheckType, MVT::i32,
/* 44930*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 44932*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44935*/      OPC_EmitNode1, TARGET_VAL(Mips::MoveR3216), 0,
                    MVT::i32, 1/*#Ops*/, 1,  // Results = #2
/* 44942*/      OPC_EmitConvertToTarget, 0,
/* 44944*/      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)
/* 44952*/    /*Scope*/ 31, /*->44984*/
/* 44953*/      OPC_CheckPredicate, 60, // Predicate_LUiORiPred
/* 44955*/      OPC_CheckType, MVT::i32,
/* 44957*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44959*/      OPC_EmitConvertToTarget, 0,
/* 44961*/      OPC_EmitNodeXForm, 5, 1, // HI16
/* 44964*/      OPC_EmitNode1, TARGET_VAL(Mips::LUi_MM), 0,
                    MVT::i32, 1/*#Ops*/, 2,  // Results = #3
/* 44971*/      OPC_EmitConvertToTarget, 0,
/* 44973*/      OPC_EmitNodeXForm, 3, 4, // LO16
/* 44976*/      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))
/* 44984*/    /*Scope*/ 47, /*->45032*/
/* 44985*/      OPC_CheckPredicate, 62, // Predicate_immZExt32
/* 44987*/      OPC_CheckType, MVT::i64,
/* 44989*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44991*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44995*/      OPC_EmitConvertToTarget, 0,
/* 44997*/      OPC_EmitNodeXForm, 5, 2, // HI16
/* 45000*/      OPC_EmitNode1, TARGET_VAL(Mips::ORi64), 0,
                    MVT::i64, 2/*#Ops*/, 1, 3,  // Results = #4
/* 45008*/      OPC_EmitInteger, MVT::i32, 16, 
/* 45011*/      OPC_EmitNode1, TARGET_VAL(Mips::DSLL), 0,
                    MVT::i64, 2/*#Ops*/, 4, 5,  // Results = #6
/* 45019*/      OPC_EmitConvertToTarget, 0,
/* 45021*/      OPC_EmitNodeXForm, 3, 7, // LO16
/* 45024*/      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))
/* 45032*/    /*Scope*/ 26, /*->45059*/
/* 45033*/      OPC_CheckType, MVT::i32,
/* 45035*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 45037*/      OPC_EmitConvertToTarget, 0,
/* 45039*/      OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 45051*/      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] })
/* 45059*/    0, /*End of Scope*/
/* 45060*/  /*SwitchOpcode*/ 124, TARGET_VAL(ISD::BRIND),// ->45187
/* 45063*/    OPC_RecordNode, // #0 = 'brind' chained node
/* 45064*/    OPC_RecordChild1, // #1 = $rs
/* 45065*/    OPC_Scope, 74, /*->45141*/ // 2 children in Scope
/* 45067*/      OPC_CheckChild1Type, MVT::i32,
/* 45069*/      OPC_Scope, 9, /*->45080*/ // 7 children in Scope
/* 45071*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 45073*/        OPC_EmitMergeInputChains1_0,
/* 45074*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::JrcRx16), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind CPU16Regs:{ *:[i32] }:$rs) - Complexity = 4
                  // Dst: (JrcRx16 CPU16Regs:{ *:[i32] }:$rs)
/* 45080*/      /*Scope*/ 9, /*->45090*/
/* 45081*/        OPC_CheckPatternPredicate, 74, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 45083*/        OPC_EmitMergeInputChains1_0,
/* 45084*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectBranch), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectBranch GPR32Opnd:{ *:[i32] }:$rs)
/* 45090*/      /*Scope*/ 9, /*->45100*/
/* 45091*/        OPC_CheckPatternPredicate, 87, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard())
/* 45093*/        OPC_EmitMergeInputChains1_0,
/* 45094*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectHazardBranch), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectHazardBranch GPR32Opnd:{ *:[i32] }:$rs)
/* 45100*/      /*Scope*/ 9, /*->45110*/
/* 45101*/        OPC_CheckPatternPredicate, 76, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode())
/* 45103*/        OPC_EmitMergeInputChains1_0,
/* 45104*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectBranchR6), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectBranchR6 GPR32Opnd:{ *:[i32] }:$rs)
/* 45110*/      /*Scope*/ 9, /*->45120*/
/* 45111*/        OPC_CheckPatternPredicate, 77, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 45113*/        OPC_EmitMergeInputChains1_0,
/* 45114*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndrectHazardBranchR6), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndrectHazardBranchR6 GPR32Opnd:{ *:[i32] }:$rs)
/* 45120*/      /*Scope*/ 9, /*->45130*/
/* 45121*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 45123*/        OPC_EmitMergeInputChains1_0,
/* 45124*/        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)
/* 45130*/      /*Scope*/ 9, /*->45140*/
/* 45131*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 45133*/        OPC_EmitMergeInputChains1_0,
/* 45134*/        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)
/* 45140*/      0, /*End of Scope*/
/* 45141*/    /*Scope*/ 44, /*->45186*/
/* 45142*/      OPC_CheckChild1Type, MVT::i64,
/* 45144*/      OPC_Scope, 9, /*->45155*/ // 4 children in Scope
/* 45146*/        OPC_CheckPatternPredicate, 88, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 45148*/        OPC_EmitMergeInputChains1_0,
/* 45149*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectBranch64), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectBranch64 GPR64Opnd:{ *:[i64] }:$rs)
/* 45155*/      /*Scope*/ 9, /*->45165*/
/* 45156*/        OPC_CheckPatternPredicate, 87, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard())
/* 45158*/        OPC_EmitMergeInputChains1_0,
/* 45159*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectHazardBranch64), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectHazardBranch64 GPR64Opnd:{ *:[i64] }:$rs)
/* 45165*/      /*Scope*/ 9, /*->45175*/
/* 45166*/        OPC_CheckPatternPredicate, 80, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode())
/* 45168*/        OPC_EmitMergeInputChains1_0,
/* 45169*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectBranch64R6), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectBranch64R6 GPR64Opnd:{ *:[i64] }:$rs)
/* 45175*/      /*Scope*/ 9, /*->45185*/
/* 45176*/        OPC_CheckPatternPredicate, 81, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 45178*/        OPC_EmitMergeInputChains1_0,
/* 45179*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndrectHazardBranch64R6), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndrectHazardBranch64R6 GPR64Opnd:{ *:[i64] }:$rs)
/* 45185*/      0, /*End of Scope*/
/* 45186*/    0, /*End of Scope*/
/* 45187*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_ADD),// ->45257
/* 45190*/    OPC_RecordMemRef,
/* 45191*/    OPC_RecordNode, // #0 = 'atomic_load_add' chained node
/* 45192*/    OPC_RecordChild1, // #1 = $ptr
/* 45193*/    OPC_RecordChild2, // #2 = $incr
/* 45194*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45241
/* 45197*/      OPC_Scope, 13, /*->45212*/ // 3 children in Scope
/* 45199*/        OPC_CheckPredicate, 24, // Predicate_atomic_load_add_8
/* 45201*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45203*/        OPC_EmitMergeInputChains1_0,
/* 45204*/        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)
/* 45212*/      /*Scope*/ 13, /*->45226*/
/* 45213*/        OPC_CheckPredicate, 25, // Predicate_atomic_load_add_16
/* 45215*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45217*/        OPC_EmitMergeInputChains1_0,
/* 45218*/        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)
/* 45226*/      /*Scope*/ 13, /*->45240*/
/* 45227*/        OPC_CheckPredicate, 26, // Predicate_atomic_load_add_32
/* 45229*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45231*/        OPC_EmitMergeInputChains1_0,
/* 45232*/        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)
/* 45240*/      0, /*End of Scope*/
/* 45241*/    /*SwitchType*/ 13, MVT::i64,// ->45256
/* 45243*/      OPC_CheckPredicate, 27, // Predicate_atomic_load_add_64
/* 45245*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45247*/      OPC_EmitMergeInputChains1_0,
/* 45248*/      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)
/* 45256*/    0, // EndSwitchType
/* 45257*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_SUB),// ->45327
/* 45260*/    OPC_RecordMemRef,
/* 45261*/    OPC_RecordNode, // #0 = 'atomic_load_sub' chained node
/* 45262*/    OPC_RecordChild1, // #1 = $ptr
/* 45263*/    OPC_RecordChild2, // #2 = $incr
/* 45264*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45311
/* 45267*/      OPC_Scope, 13, /*->45282*/ // 3 children in Scope
/* 45269*/        OPC_CheckPredicate, 24, // Predicate_atomic_load_sub_8
/* 45271*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45273*/        OPC_EmitMergeInputChains1_0,
/* 45274*/        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)
/* 45282*/      /*Scope*/ 13, /*->45296*/
/* 45283*/        OPC_CheckPredicate, 25, // Predicate_atomic_load_sub_16
/* 45285*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45287*/        OPC_EmitMergeInputChains1_0,
/* 45288*/        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)
/* 45296*/      /*Scope*/ 13, /*->45310*/
/* 45297*/        OPC_CheckPredicate, 26, // Predicate_atomic_load_sub_32
/* 45299*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45301*/        OPC_EmitMergeInputChains1_0,
/* 45302*/        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)
/* 45310*/      0, /*End of Scope*/
/* 45311*/    /*SwitchType*/ 13, MVT::i64,// ->45326
/* 45313*/      OPC_CheckPredicate, 27, // Predicate_atomic_load_sub_64
/* 45315*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45317*/      OPC_EmitMergeInputChains1_0,
/* 45318*/      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)
/* 45326*/    0, // EndSwitchType
/* 45327*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_AND),// ->45397
/* 45330*/    OPC_RecordMemRef,
/* 45331*/    OPC_RecordNode, // #0 = 'atomic_load_and' chained node
/* 45332*/    OPC_RecordChild1, // #1 = $ptr
/* 45333*/    OPC_RecordChild2, // #2 = $incr
/* 45334*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45381
/* 45337*/      OPC_Scope, 13, /*->45352*/ // 3 children in Scope
/* 45339*/        OPC_CheckPredicate, 24, // Predicate_atomic_load_and_8
/* 45341*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45343*/        OPC_EmitMergeInputChains1_0,
/* 45344*/        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)
/* 45352*/      /*Scope*/ 13, /*->45366*/
/* 45353*/        OPC_CheckPredicate, 25, // Predicate_atomic_load_and_16
/* 45355*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45357*/        OPC_EmitMergeInputChains1_0,
/* 45358*/        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)
/* 45366*/      /*Scope*/ 13, /*->45380*/
/* 45367*/        OPC_CheckPredicate, 26, // Predicate_atomic_load_and_32
/* 45369*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45371*/        OPC_EmitMergeInputChains1_0,
/* 45372*/        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)
/* 45380*/      0, /*End of Scope*/
/* 45381*/    /*SwitchType*/ 13, MVT::i64,// ->45396
/* 45383*/      OPC_CheckPredicate, 27, // Predicate_atomic_load_and_64
/* 45385*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45387*/      OPC_EmitMergeInputChains1_0,
/* 45388*/      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)
/* 45396*/    0, // EndSwitchType
/* 45397*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_OR),// ->45467
/* 45400*/    OPC_RecordMemRef,
/* 45401*/    OPC_RecordNode, // #0 = 'atomic_load_or' chained node
/* 45402*/    OPC_RecordChild1, // #1 = $ptr
/* 45403*/    OPC_RecordChild2, // #2 = $incr
/* 45404*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45451
/* 45407*/      OPC_Scope, 13, /*->45422*/ // 3 children in Scope
/* 45409*/        OPC_CheckPredicate, 24, // Predicate_atomic_load_or_8
/* 45411*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45413*/        OPC_EmitMergeInputChains1_0,
/* 45414*/        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)
/* 45422*/      /*Scope*/ 13, /*->45436*/
/* 45423*/        OPC_CheckPredicate, 25, // Predicate_atomic_load_or_16
/* 45425*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45427*/        OPC_EmitMergeInputChains1_0,
/* 45428*/        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)
/* 45436*/      /*Scope*/ 13, /*->45450*/
/* 45437*/        OPC_CheckPredicate, 26, // Predicate_atomic_load_or_32
/* 45439*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45441*/        OPC_EmitMergeInputChains1_0,
/* 45442*/        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)
/* 45450*/      0, /*End of Scope*/
/* 45451*/    /*SwitchType*/ 13, MVT::i64,// ->45466
/* 45453*/      OPC_CheckPredicate, 27, // Predicate_atomic_load_or_64
/* 45455*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45457*/      OPC_EmitMergeInputChains1_0,
/* 45458*/      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)
/* 45466*/    0, // EndSwitchType
/* 45467*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_XOR),// ->45537
/* 45470*/    OPC_RecordMemRef,
/* 45471*/    OPC_RecordNode, // #0 = 'atomic_load_xor' chained node
/* 45472*/    OPC_RecordChild1, // #1 = $ptr
/* 45473*/    OPC_RecordChild2, // #2 = $incr
/* 45474*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45521
/* 45477*/      OPC_Scope, 13, /*->45492*/ // 3 children in Scope
/* 45479*/        OPC_CheckPredicate, 24, // Predicate_atomic_load_xor_8
/* 45481*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45483*/        OPC_EmitMergeInputChains1_0,
/* 45484*/        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)
/* 45492*/      /*Scope*/ 13, /*->45506*/
/* 45493*/        OPC_CheckPredicate, 25, // Predicate_atomic_load_xor_16
/* 45495*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45497*/        OPC_EmitMergeInputChains1_0,
/* 45498*/        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)
/* 45506*/      /*Scope*/ 13, /*->45520*/
/* 45507*/        OPC_CheckPredicate, 26, // Predicate_atomic_load_xor_32
/* 45509*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45511*/        OPC_EmitMergeInputChains1_0,
/* 45512*/        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)
/* 45520*/      0, /*End of Scope*/
/* 45521*/    /*SwitchType*/ 13, MVT::i64,// ->45536
/* 45523*/      OPC_CheckPredicate, 27, // Predicate_atomic_load_xor_64
/* 45525*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45527*/      OPC_EmitMergeInputChains1_0,
/* 45528*/      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)
/* 45536*/    0, // EndSwitchType
/* 45537*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_NAND),// ->45607
/* 45540*/    OPC_RecordMemRef,
/* 45541*/    OPC_RecordNode, // #0 = 'atomic_load_nand' chained node
/* 45542*/    OPC_RecordChild1, // #1 = $ptr
/* 45543*/    OPC_RecordChild2, // #2 = $incr
/* 45544*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45591
/* 45547*/      OPC_Scope, 13, /*->45562*/ // 3 children in Scope
/* 45549*/        OPC_CheckPredicate, 24, // Predicate_atomic_load_nand_8
/* 45551*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45553*/        OPC_EmitMergeInputChains1_0,
/* 45554*/        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)
/* 45562*/      /*Scope*/ 13, /*->45576*/
/* 45563*/        OPC_CheckPredicate, 25, // Predicate_atomic_load_nand_16
/* 45565*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45567*/        OPC_EmitMergeInputChains1_0,
/* 45568*/        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)
/* 45576*/      /*Scope*/ 13, /*->45590*/
/* 45577*/        OPC_CheckPredicate, 26, // Predicate_atomic_load_nand_32
/* 45579*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45581*/        OPC_EmitMergeInputChains1_0,
/* 45582*/        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)
/* 45590*/      0, /*End of Scope*/
/* 45591*/    /*SwitchType*/ 13, MVT::i64,// ->45606
/* 45593*/      OPC_CheckPredicate, 27, // Predicate_atomic_load_nand_64
/* 45595*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45597*/      OPC_EmitMergeInputChains1_0,
/* 45598*/      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)
/* 45606*/    0, // EndSwitchType
/* 45607*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_SWAP),// ->45677
/* 45610*/    OPC_RecordMemRef,
/* 45611*/    OPC_RecordNode, // #0 = 'atomic_swap' chained node
/* 45612*/    OPC_RecordChild1, // #1 = $ptr
/* 45613*/    OPC_RecordChild2, // #2 = $incr
/* 45614*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45661
/* 45617*/      OPC_Scope, 13, /*->45632*/ // 3 children in Scope
/* 45619*/        OPC_CheckPredicate, 24, // Predicate_atomic_swap_8
/* 45621*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45623*/        OPC_EmitMergeInputChains1_0,
/* 45624*/        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)
/* 45632*/      /*Scope*/ 13, /*->45646*/
/* 45633*/        OPC_CheckPredicate, 25, // Predicate_atomic_swap_16
/* 45635*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45637*/        OPC_EmitMergeInputChains1_0,
/* 45638*/        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)
/* 45646*/      /*Scope*/ 13, /*->45660*/
/* 45647*/        OPC_CheckPredicate, 26, // Predicate_atomic_swap_32
/* 45649*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45651*/        OPC_EmitMergeInputChains1_0,
/* 45652*/        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)
/* 45660*/      0, /*End of Scope*/
/* 45661*/    /*SwitchType*/ 13, MVT::i64,// ->45676
/* 45663*/      OPC_CheckPredicate, 27, // Predicate_atomic_swap_64
/* 45665*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45667*/      OPC_EmitMergeInputChains1_0,
/* 45668*/      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)
/* 45676*/    0, // EndSwitchType
/* 45677*/  /*SwitchOpcode*/ 72, TARGET_VAL(ISD::ATOMIC_CMP_SWAP),// ->45752
/* 45680*/    OPC_RecordMemRef,
/* 45681*/    OPC_RecordNode, // #0 = 'atomic_cmp_swap' chained node
/* 45682*/    OPC_RecordChild1, // #1 = $ptr
/* 45683*/    OPC_RecordChild2, // #2 = $cmp
/* 45684*/    OPC_RecordChild3, // #3 = $swap
/* 45685*/    OPC_SwitchType /*2 cases */, 47, MVT::i32,// ->45735
/* 45688*/      OPC_Scope, 14, /*->45704*/ // 3 children in Scope
/* 45690*/        OPC_CheckPredicate, 24, // Predicate_atomic_cmp_swap_8
/* 45692*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45694*/        OPC_EmitMergeInputChains1_0,
/* 45695*/        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)
/* 45704*/      /*Scope*/ 14, /*->45719*/
/* 45705*/        OPC_CheckPredicate, 25, // Predicate_atomic_cmp_swap_16
/* 45707*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45709*/        OPC_EmitMergeInputChains1_0,
/* 45710*/        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)
/* 45719*/      /*Scope*/ 14, /*->45734*/
/* 45720*/        OPC_CheckPredicate, 26, // Predicate_atomic_cmp_swap_32
/* 45722*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45724*/        OPC_EmitMergeInputChains1_0,
/* 45725*/        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)
/* 45734*/      0, /*End of Scope*/
/* 45735*/    /*SwitchType*/ 14, MVT::i64,// ->45751
/* 45737*/      OPC_CheckPredicate, 27, // Predicate_atomic_cmp_swap_64
/* 45739*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45741*/      OPC_EmitMergeInputChains1_0,
/* 45742*/      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)
/* 45751*/    0, // EndSwitchType
/* 45752*/  /*SwitchOpcode*/ 22, TARGET_VAL(MipsISD::Ret),// ->45777
/* 45755*/    OPC_RecordNode, // #0 = 'MipsRet' chained node
/* 45756*/    OPC_CaptureGlueInput,
/* 45757*/    OPC_Scope, 8, /*->45767*/ // 2 children in Scope
/* 45759*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45761*/      OPC_EmitMergeInputChains1_0,
/* 45762*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::RetRA), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic0,
                    0/*#Ops*/, 
                // Src: (MipsRet) - Complexity = 3
                // Dst: (RetRA)
/* 45767*/    /*Scope*/ 8, /*->45776*/
/* 45768*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 45770*/      OPC_EmitMergeInputChains1_0,
/* 45771*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::RetRA16), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic0,
                    0/*#Ops*/, 
                // Src: (MipsRet) - Complexity = 3
                // Dst: (RetRA16)
/* 45776*/    0, /*End of Scope*/
/* 45777*/  /*SwitchOpcode*/ 10, TARGET_VAL(MipsISD::ERet),// ->45790
/* 45780*/    OPC_RecordNode, // #0 = 'MipsERet' chained node
/* 45781*/    OPC_CaptureGlueInput,
/* 45782*/    OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45784*/    OPC_EmitMergeInputChains1_0,
/* 45785*/    OPC_MorphNodeTo0, TARGET_VAL(Mips::ERet), 0|OPFL_Chain|OPFL_GlueInput,
                  0/*#Ops*/, 
              // Src: (MipsERet) - Complexity = 3
              // Dst: (ERet)
/* 45790*/  /*SwitchOpcode*/ 43|128,1/*171*/, TARGET_VAL(ISD::MUL),// ->45965
/* 45794*/    OPC_RecordChild0, // #0 = $rs
/* 45795*/    OPC_RecordChild1, // #1 = $rt
/* 45796*/    OPC_SwitchType /*7 cases */, 78, MVT::i32,// ->45877
/* 45799*/      OPC_Scope, 11, /*->45812*/ // 6 children in Scope
/* 45801*/        OPC_CheckPatternPredicate, 49, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 45803*/        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)
/* 45812*/      /*Scope*/ 10, /*->45823*/
/* 45813*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 45815*/        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)
/* 45823*/      /*Scope*/ 11, /*->45835*/
/* 45824*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 45826*/        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)
/* 45835*/      /*Scope*/ 11, /*->45847*/
/* 45836*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 45838*/        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)
/* 45847*/      /*Scope*/ 10, /*->45858*/
/* 45848*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 45850*/        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)
/* 45858*/      /*Scope*/ 17, /*->45876*/
/* 45859*/        OPC_CheckPatternPredicate, 90, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 45861*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoMULT), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1,  // Results = #2
/* 45869*/        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))
/* 45876*/      0, /*End of Scope*/
/* 45877*/    /*SwitchType*/ 25, MVT::i64,// ->45904
/* 45879*/      OPC_Scope, 11, /*->45892*/ // 2 children in Scope
/* 45881*/        OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 45883*/        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)
/* 45892*/      /*Scope*/ 10, /*->45903*/
/* 45893*/        OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 45895*/        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)
/* 45903*/      0, /*End of Scope*/
/* 45904*/    /*SwitchType*/ 10, MVT::v2i16,// ->45916
/* 45906*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 45908*/      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)
/* 45916*/    /*SwitchType*/ 10, MVT::v16i8,// ->45928
/* 45918*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 45920*/      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)
/* 45928*/    /*SwitchType*/ 10, MVT::v8i16,// ->45940
/* 45930*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 45932*/      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)
/* 45940*/    /*SwitchType*/ 10, MVT::v4i32,// ->45952
/* 45942*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 45944*/      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)
/* 45952*/    /*SwitchType*/ 10, MVT::v2i64,// ->45964
/* 45954*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 45956*/      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)
/* 45964*/    0, // EndSwitchType
/* 45965*/  /*SwitchOpcode*/ 30, TARGET_VAL(ISD::TRAP),// ->45998
/* 45968*/    OPC_RecordNode, // #0 = 'trap' chained node
/* 45969*/    OPC_Scope, 8, /*->45979*/ // 3 children in Scope
/* 45971*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 45973*/      OPC_EmitMergeInputChains1_0,
/* 45974*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::TRAP), 0|OPFL_Chain,
                    0/*#Ops*/, 
                // Src: (trap) - Complexity = 3
                // Dst: (TRAP)
/* 45979*/    /*Scope*/ 8, /*->45988*/
/* 45980*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 45982*/      OPC_EmitMergeInputChains1_0,
/* 45983*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::Break16), 0|OPFL_Chain,
                    0/*#Ops*/, 
                // Src: (trap) - Complexity = 3
                // Dst: (Break16)
/* 45988*/    /*Scope*/ 8, /*->45997*/
/* 45989*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 45991*/      OPC_EmitMergeInputChains1_0,
/* 45992*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::TRAP_MM), 0|OPFL_Chain,
                    0/*#Ops*/, 
                // Src: (trap) - Complexity = 3
                // Dst: (TRAP_MM)
/* 45997*/    0, /*End of Scope*/
/* 45998*/  /*SwitchOpcode*/ 69, TARGET_VAL(ISD::BR),// ->46070
/* 46001*/    OPC_RecordNode, // #0 = 'br' chained node
/* 46002*/    OPC_RecordChild1, // #1 = $target
/* 46003*/    OPC_MoveChild1,
/* 46004*/    OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 46007*/    OPC_MoveParent,
/* 46008*/    OPC_Scope, 9, /*->46019*/ // 6 children in Scope
/* 46010*/      OPC_CheckPatternPredicate, 91, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!TM.isPositionIndependent())
/* 46012*/      OPC_EmitMergeInputChains1_0,
/* 46013*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::J), 0|OPFL_Chain,
                    1/*#Ops*/, 1, 
                // Src: (br (bb:{ *:[Other] }):$target) - Complexity = 3
                // Dst: (J (bb:{ *:[Other] }):$target)
/* 46019*/    /*Scope*/ 9, /*->46029*/
/* 46020*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 46022*/      OPC_EmitMergeInputChains1_0,
/* 46023*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::B), 0|OPFL_Chain,
                    1/*#Ops*/, 1, 
                // Src: (br (bb:{ *:[Other] }):$offset) - Complexity = 3
                // Dst: (B (bb:{ *:[Other] }):$offset)
/* 46029*/    /*Scope*/ 9, /*->46039*/
/* 46030*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 46032*/      OPC_EmitMergeInputChains1_0,
/* 46033*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::Bimm16), 0|OPFL_Chain,
                    1/*#Ops*/, 1, 
                // Src: (br (bb:{ *:[Other] }):$imm16) - Complexity = 3
                // Dst: (Bimm16 (bb:{ *:[Other] }):$imm16)
/* 46039*/    /*Scope*/ 9, /*->46049*/
/* 46040*/      OPC_CheckPatternPredicate, 92, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!TM.isPositionIndependent())
/* 46042*/      OPC_EmitMergeInputChains1_0,
/* 46043*/      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)
/* 46049*/    /*Scope*/ 9, /*->46059*/
/* 46050*/      OPC_CheckPatternPredicate, 93, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (TM.isPositionIndependent())
/* 46052*/      OPC_EmitMergeInputChains1_0,
/* 46053*/      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)
/* 46059*/    /*Scope*/ 9, /*->46069*/
/* 46060*/      OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 46062*/      OPC_EmitMergeInputChains1_0,
/* 46063*/      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)
/* 46069*/    0, /*End of Scope*/
/* 46070*/  /*SwitchOpcode*/ 33, TARGET_VAL(MipsISD::EH_RETURN),// ->46106
/* 46073*/    OPC_RecordNode, // #0 = 'MIPSehret' chained node
/* 46074*/    OPC_CaptureGlueInput,
/* 46075*/    OPC_RecordChild1, // #1 = $spoff
/* 46076*/    OPC_Scope, 13, /*->46091*/ // 2 children in Scope
/* 46078*/      OPC_CheckChild1Type, MVT::i32,
/* 46080*/      OPC_RecordChild2, // #2 = $dst
/* 46081*/      OPC_CheckChild2Type, MVT::i32,
/* 46083*/      OPC_EmitMergeInputChains1_0,
/* 46084*/      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)
/* 46091*/    /*Scope*/ 13, /*->46105*/
/* 46092*/      OPC_CheckChild1Type, MVT::i64,
/* 46094*/      OPC_RecordChild2, // #2 = $dst
/* 46095*/      OPC_CheckChild2Type, MVT::i64,
/* 46097*/      OPC_EmitMergeInputChains1_0,
/* 46098*/      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)
/* 46105*/    0, /*End of Scope*/
/* 46106*/  /*SwitchOpcode*/ 119, TARGET_VAL(ISD::SIGN_EXTEND_INREG),// ->46228
/* 46109*/    OPC_RecordChild0, // #0 = $rt
/* 46110*/    OPC_MoveChild1,
/* 46111*/    OPC_Scope, 50, /*->46163*/ // 3 children in Scope
/* 46113*/      OPC_CheckValueType, MVT::i8,
/* 46115*/      OPC_MoveParent,
/* 46116*/      OPC_SwitchType /*2 cases */, 32, MVT::i32,// ->46151
/* 46119*/        OPC_Scope, 9, /*->46130*/ // 3 children in Scope
/* 46121*/          OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 46123*/          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)
/* 46130*/        /*Scope*/ 9, /*->46140*/
/* 46131*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 46133*/          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)
/* 46140*/        /*Scope*/ 9, /*->46150*/
/* 46141*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 46143*/          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)
/* 46150*/        0, /*End of Scope*/
/* 46151*/      /*SwitchType*/ 9, MVT::i64,// ->46162
/* 46153*/        OPC_CheckPatternPredicate, 94, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding())
/* 46155*/        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)
/* 46162*/      0, // EndSwitchType
/* 46163*/    /*Scope*/ 50, /*->46214*/
/* 46164*/      OPC_CheckValueType, MVT::i16,
/* 46166*/      OPC_MoveParent,
/* 46167*/      OPC_SwitchType /*2 cases */, 32, MVT::i32,// ->46202
/* 46170*/        OPC_Scope, 9, /*->46181*/ // 3 children in Scope
/* 46172*/          OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 46174*/          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)
/* 46181*/        /*Scope*/ 9, /*->46191*/
/* 46182*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 46184*/          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)
/* 46191*/        /*Scope*/ 9, /*->46201*/
/* 46192*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 46194*/          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)
/* 46201*/        0, /*End of Scope*/
/* 46202*/      /*SwitchType*/ 9, MVT::i64,// ->46213
/* 46204*/        OPC_CheckPatternPredicate, 94, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding())
/* 46206*/        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)
/* 46213*/      0, // EndSwitchType
/* 46214*/    /*Scope*/ 12, /*->46227*/
/* 46215*/      OPC_CheckValueType, MVT::i32,
/* 46217*/      OPC_MoveParent,
/* 46218*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 46220*/      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)
/* 46227*/    0, /*End of Scope*/
/* 46228*/  /*SwitchOpcode*/ 56, TARGET_VAL(MipsISD::Mult),// ->46287
/* 46231*/    OPC_RecordChild0, // #0 = $rs
/* 46232*/    OPC_Scope, 38, /*->46272*/ // 2 children in Scope
/* 46234*/      OPC_CheckChild0Type, MVT::i32,
/* 46236*/      OPC_RecordChild1, // #1 = $rt
/* 46237*/      OPC_Scope, 10, /*->46249*/ // 3 children in Scope
/* 46239*/        OPC_CheckPatternPredicate, 95, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46241*/        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)
/* 46249*/      /*Scope*/ 10, /*->46260*/
/* 46250*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46252*/        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)
/* 46260*/      /*Scope*/ 10, /*->46271*/
/* 46261*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46263*/        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)
/* 46271*/      0, /*End of Scope*/
/* 46272*/    /*Scope*/ 13, /*->46286*/
/* 46273*/      OPC_CheckChild0Type, MVT::i64,
/* 46275*/      OPC_RecordChild1, // #1 = $rt
/* 46276*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46278*/      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)
/* 46286*/    0, /*End of Scope*/
/* 46287*/  /*SwitchOpcode*/ 56, TARGET_VAL(MipsISD::Multu),// ->46346
/* 46290*/    OPC_RecordChild0, // #0 = $rs
/* 46291*/    OPC_Scope, 38, /*->46331*/ // 2 children in Scope
/* 46293*/      OPC_CheckChild0Type, MVT::i32,
/* 46295*/      OPC_RecordChild1, // #1 = $rt
/* 46296*/      OPC_Scope, 10, /*->46308*/ // 3 children in Scope
/* 46298*/        OPC_CheckPatternPredicate, 95, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46300*/        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)
/* 46308*/      /*Scope*/ 10, /*->46319*/
/* 46309*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46311*/        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)
/* 46319*/      /*Scope*/ 10, /*->46330*/
/* 46320*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46322*/        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)
/* 46330*/      0, /*End of Scope*/
/* 46331*/    /*Scope*/ 13, /*->46345*/
/* 46332*/      OPC_CheckChild0Type, MVT::i64,
/* 46334*/      OPC_RecordChild1, // #1 = $rt
/* 46335*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46337*/      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)
/* 46345*/    0, /*End of Scope*/
/* 46346*/  /*SwitchOpcode*/ 48, TARGET_VAL(MipsISD::MFHI),// ->46397
/* 46349*/    OPC_RecordChild0, // #0 = $hilo
/* 46350*/    OPC_SwitchType /*2 cases */, 32, MVT::i32,// ->46385
/* 46353*/      OPC_Scope, 9, /*->46364*/ // 3 children in Scope
/* 46355*/        OPC_CheckPatternPredicate, 95, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46357*/        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)
/* 46364*/      /*Scope*/ 9, /*->46374*/
/* 46365*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46367*/        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)
/* 46374*/      /*Scope*/ 9, /*->46384*/
/* 46375*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46377*/        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)
/* 46384*/      0, /*End of Scope*/
/* 46385*/    /*SwitchType*/ 9, MVT::i64,// ->46396
/* 46387*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46389*/      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)
/* 46396*/    0, // EndSwitchType
/* 46397*/  /*SwitchOpcode*/ 48, TARGET_VAL(MipsISD::MFLO),// ->46448
/* 46400*/    OPC_RecordChild0, // #0 = $hilo
/* 46401*/    OPC_SwitchType /*2 cases */, 32, MVT::i32,// ->46436
/* 46404*/      OPC_Scope, 9, /*->46415*/ // 3 children in Scope
/* 46406*/        OPC_CheckPatternPredicate, 95, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46408*/        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)
/* 46415*/      /*Scope*/ 9, /*->46425*/
/* 46416*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46418*/        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)
/* 46425*/      /*Scope*/ 9, /*->46435*/
/* 46426*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46428*/        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)
/* 46435*/      0, /*End of Scope*/
/* 46436*/    /*SwitchType*/ 9, MVT::i64,// ->46447
/* 46438*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46440*/      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)
/* 46447*/    0, // EndSwitchType
/* 46448*/  /*SwitchOpcode*/ 45, TARGET_VAL(MipsISD::MTLOHI),// ->46496
/* 46451*/    OPC_RecordChild0, // #0 = $lo
/* 46452*/    OPC_Scope, 27, /*->46481*/ // 2 children in Scope
/* 46454*/      OPC_CheckChild0Type, MVT::i32,
/* 46456*/      OPC_RecordChild1, // #1 = $hi
/* 46457*/      OPC_Scope, 10, /*->46469*/ // 2 children in Scope
/* 46459*/        OPC_CheckPatternPredicate, 95, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46461*/        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)
/* 46469*/      /*Scope*/ 10, /*->46480*/
/* 46470*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 46472*/        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)
/* 46480*/      0, /*End of Scope*/
/* 46481*/    /*Scope*/ 13, /*->46495*/
/* 46482*/      OPC_CheckChild0Type, MVT::i64,
/* 46484*/      OPC_RecordChild1, // #1 = $hi
/* 46485*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46487*/      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)
/* 46495*/    0, /*End of Scope*/
/* 46496*/  /*SwitchOpcode*/ 41, TARGET_VAL(MipsISD::MAdd),// ->46540
/* 46499*/    OPC_RecordChild0, // #0 = $rs
/* 46500*/    OPC_RecordChild1, // #1 = $rt
/* 46501*/    OPC_RecordChild2, // #2 = $acin
/* 46502*/    OPC_Scope, 11, /*->46515*/ // 3 children in Scope
/* 46504*/      OPC_CheckPatternPredicate, 96, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46506*/      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)
/* 46515*/    /*Scope*/ 11, /*->46527*/
/* 46516*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46518*/      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)
/* 46527*/    /*Scope*/ 11, /*->46539*/
/* 46528*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46530*/      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)
/* 46539*/    0, /*End of Scope*/
/* 46540*/  /*SwitchOpcode*/ 41, TARGET_VAL(MipsISD::MAddu),// ->46584
/* 46543*/    OPC_RecordChild0, // #0 = $rs
/* 46544*/    OPC_RecordChild1, // #1 = $rt
/* 46545*/    OPC_RecordChild2, // #2 = $acin
/* 46546*/    OPC_Scope, 11, /*->46559*/ // 3 children in Scope
/* 46548*/      OPC_CheckPatternPredicate, 96, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46550*/      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)
/* 46559*/    /*Scope*/ 11, /*->46571*/
/* 46560*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46562*/      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)
/* 46571*/    /*Scope*/ 11, /*->46583*/
/* 46572*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46574*/      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)
/* 46583*/    0, /*End of Scope*/
/* 46584*/  /*SwitchOpcode*/ 41, TARGET_VAL(MipsISD::MSub),// ->46628
/* 46587*/    OPC_RecordChild0, // #0 = $rs
/* 46588*/    OPC_RecordChild1, // #1 = $rt
/* 46589*/    OPC_RecordChild2, // #2 = $acin
/* 46590*/    OPC_Scope, 11, /*->46603*/ // 3 children in Scope
/* 46592*/      OPC_CheckPatternPredicate, 96, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46594*/      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)
/* 46603*/    /*Scope*/ 11, /*->46615*/
/* 46604*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46606*/      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)
/* 46615*/    /*Scope*/ 11, /*->46627*/
/* 46616*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46618*/      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)
/* 46627*/    0, /*End of Scope*/
/* 46628*/  /*SwitchOpcode*/ 41, TARGET_VAL(MipsISD::MSubu),// ->46672
/* 46631*/    OPC_RecordChild0, // #0 = $rs
/* 46632*/    OPC_RecordChild1, // #1 = $rt
/* 46633*/    OPC_RecordChild2, // #2 = $acin
/* 46634*/    OPC_Scope, 11, /*->46647*/ // 3 children in Scope
/* 46636*/      OPC_CheckPatternPredicate, 96, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46638*/      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)
/* 46647*/    /*Scope*/ 11, /*->46659*/
/* 46648*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46650*/      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)
/* 46659*/    /*Scope*/ 11, /*->46671*/
/* 46660*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46662*/      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)
/* 46671*/    0, /*End of Scope*/
/* 46672*/  /*SwitchOpcode*/ 53, TARGET_VAL(ISD::SUBC),// ->46728
/* 46675*/    OPC_RecordChild0, // #0 = $lhs
/* 46676*/    OPC_RecordChild1, // #1 = $rhs
/* 46677*/    OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->46715
/* 46680*/      OPC_Scope, 10, /*->46692*/ // 3 children in Scope
/* 46682*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 46684*/        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)
/* 46692*/      /*Scope*/ 10, /*->46703*/
/* 46693*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 46695*/        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)
/* 46703*/      /*Scope*/ 10, /*->46714*/
/* 46704*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 46706*/        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)
/* 46714*/      0, /*End of Scope*/
/* 46715*/    /*SwitchType*/ 10, MVT::i64,// ->46727
/* 46717*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 46719*/      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)
/* 46727*/    0, // EndSwitchType
/* 46728*/  /*SwitchOpcode*/ 38|128,18/*2342*/, TARGET_VAL(ISD::BITCAST),// ->49074
/* 46732*/    OPC_RecordChild0, // #0 = $fs
/* 46733*/    OPC_Scope, 68, /*->46803*/ // 13 children in Scope
/* 46735*/      OPC_CheckChild0Type, MVT::f32,
/* 46737*/      OPC_SwitchType /*3 cases */, 32, MVT::i32,// ->46772
/* 46740*/        OPC_Scope, 9, /*->46751*/ // 3 children in Scope
/* 46742*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 46744*/          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)
/* 46751*/        /*Scope*/ 9, /*->46761*/
/* 46752*/          OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 46754*/          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)
/* 46761*/        /*Scope*/ 9, /*->46771*/
/* 46762*/          OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 46764*/          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)
/* 46771*/        0, /*End of Scope*/
/* 46772*/      /*SwitchType*/ 13, MVT::v2i16,// ->46787
/* 46774*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46776*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 46779*/        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] })
/* 46787*/      /*SwitchType*/ 13, MVT::v4i8,// ->46802
/* 46789*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46791*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 46794*/        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] })
/* 46802*/      0, // EndSwitchType
/* 46803*/    /*Scope*/ 13, /*->46817*/
/* 46804*/      OPC_CheckChild0Type, MVT::f64,
/* 46806*/      OPC_CheckType, MVT::i64,
/* 46808*/      OPC_CheckPatternPredicate, 97, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 46810*/      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)
/* 46817*/    /*Scope*/ 34, /*->46852*/
/* 46818*/      OPC_CheckChild0Type, MVT::v2i16,
/* 46820*/      OPC_SwitchType /*2 cases */, 13, MVT::i32,// ->46836
/* 46823*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46825*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 46828*/        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] })
/* 46836*/      /*SwitchType*/ 13, MVT::f32,// ->46851
/* 46838*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46840*/        OPC_EmitInteger, MVT::i32, Mips::FGR32RegClassID,
/* 46843*/        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] })
/* 46851*/      0, // EndSwitchType
/* 46852*/    /*Scope*/ 34, /*->46887*/
/* 46853*/      OPC_CheckChild0Type, MVT::v4i8,
/* 46855*/      OPC_SwitchType /*2 cases */, 13, MVT::i32,// ->46871
/* 46858*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46860*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 46863*/        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] })
/* 46871*/      /*SwitchType*/ 13, MVT::f32,// ->46886
/* 46873*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46875*/        OPC_EmitInteger, MVT::i32, Mips::FGR32RegClassID,
/* 46878*/        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] })
/* 46886*/      0, // EndSwitchType
/* 46887*/    /*Scope*/ 68, /*->46956*/
/* 46888*/      OPC_CheckChild0Type, MVT::i32,
/* 46890*/      OPC_SwitchType /*3 cases */, 32, MVT::f32,// ->46925
/* 46893*/        OPC_Scope, 9, /*->46904*/ // 3 children in Scope
/* 46895*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 46897*/          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)
/* 46904*/        /*Scope*/ 9, /*->46914*/
/* 46905*/          OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 46907*/          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)
/* 46914*/        /*Scope*/ 9, /*->46924*/
/* 46915*/          OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 46917*/          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)
/* 46924*/        0, /*End of Scope*/
/* 46925*/      /*SwitchType*/ 13, MVT::v2i16,// ->46940
/* 46927*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46929*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 46932*/        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] })
/* 46940*/      /*SwitchType*/ 13, MVT::v4i8,// ->46955
/* 46942*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46944*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 46947*/        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] })
/* 46955*/      0, // EndSwitchType
/* 46956*/    /*Scope*/ 13, /*->46970*/
/* 46957*/      OPC_CheckChild0Type, MVT::i64,
/* 46959*/      OPC_CheckType, MVT::f64,
/* 46961*/      OPC_CheckPatternPredicate, 97, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 46963*/      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)
/* 46970*/    /*Scope*/ 36|128,2/*292*/, /*->47264*/
/* 46972*/      OPC_CheckChild0Type, MVT::v8f16,
/* 46974*/      OPC_SwitchType /*6 cases */, 13, MVT::v8i16,// ->46990
/* 46977*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 46979*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 46982*/        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] })
/* 46990*/      /*SwitchType*/ 53, MVT::v16i8,// ->47045
/* 46992*/        OPC_Scope, 13, /*->47007*/ // 2 children in Scope
/* 46994*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 46996*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 46999*/          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] })
/* 47007*/        /*Scope*/ 36, /*->47044*/
/* 47008*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47010*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47013*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47021*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47025*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47033*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47036*/          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] })
/* 47044*/        0, /*End of Scope*/
/* 47045*/      /*SwitchType*/ 53, MVT::v4i32,// ->47100
/* 47047*/        OPC_Scope, 13, /*->47062*/ // 2 children in Scope
/* 47049*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47051*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47054*/          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] })
/* 47062*/        /*Scope*/ 36, /*->47099*/
/* 47063*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47065*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47068*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47076*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47080*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47088*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47091*/          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] })
/* 47099*/        0, /*End of Scope*/
/* 47100*/      /*SwitchType*/ 52, MVT::v2i64,// ->47154
/* 47102*/        OPC_Scope, 13, /*->47117*/ // 2 children in Scope
/* 47104*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47106*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47109*/          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] })
/* 47117*/        /*Scope*/ 35, /*->47153*/
/* 47118*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47120*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47123*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47131*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47134*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47142*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47145*/          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] })
/* 47153*/        0, /*End of Scope*/
/* 47154*/      /*SwitchType*/ 53, MVT::v4f32,// ->47209
/* 47156*/        OPC_Scope, 13, /*->47171*/ // 2 children in Scope
/* 47158*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47160*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47163*/          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] })
/* 47171*/        /*Scope*/ 36, /*->47208*/
/* 47172*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47174*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47177*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47185*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47189*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47197*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47200*/          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] })
/* 47208*/        0, /*End of Scope*/
/* 47209*/      /*SwitchType*/ 52, MVT::v2f64,// ->47263
/* 47211*/        OPC_Scope, 13, /*->47226*/ // 2 children in Scope
/* 47213*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47215*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47218*/          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] })
/* 47226*/        /*Scope*/ 35, /*->47262*/
/* 47227*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47229*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47232*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47240*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47243*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47251*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47254*/          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] })
/* 47262*/        0, /*End of Scope*/
/* 47263*/      0, // EndSwitchType
/* 47264*/    /*Scope*/ 20|128,2/*276*/, /*->47542*/
/* 47266*/      OPC_CheckChild0Type, MVT::v4f32,
/* 47268*/      OPC_SwitchType /*6 cases */, 13, MVT::v4i32,// ->47284
/* 47271*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 47273*/        OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47276*/        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] })
/* 47284*/      /*SwitchType*/ 52, MVT::v16i8,// ->47338
/* 47286*/        OPC_Scope, 13, /*->47301*/ // 2 children in Scope
/* 47288*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47290*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47293*/          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] })
/* 47301*/        /*Scope*/ 35, /*->47337*/
/* 47302*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47304*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47307*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47315*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47318*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47326*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47329*/          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] })
/* 47337*/        0, /*End of Scope*/
/* 47338*/      /*SwitchType*/ 53, MVT::v8i16,// ->47393
/* 47340*/        OPC_Scope, 13, /*->47355*/ // 2 children in Scope
/* 47342*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47344*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47347*/          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] })
/* 47355*/        /*Scope*/ 36, /*->47392*/
/* 47356*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47358*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47361*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47369*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47373*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47381*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47384*/          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] })
/* 47392*/        0, /*End of Scope*/
/* 47393*/      /*SwitchType*/ 53, MVT::v2i64,// ->47448
/* 47395*/        OPC_Scope, 13, /*->47410*/ // 2 children in Scope
/* 47397*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47399*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47402*/          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] })
/* 47410*/        /*Scope*/ 36, /*->47447*/
/* 47411*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47413*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47416*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47424*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47428*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47436*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47439*/          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] })
/* 47447*/        0, /*End of Scope*/
/* 47448*/      /*SwitchType*/ 53, MVT::v2f64,// ->47503
/* 47450*/        OPC_Scope, 13, /*->47465*/ // 2 children in Scope
/* 47452*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47454*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47457*/          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] })
/* 47465*/        /*Scope*/ 36, /*->47502*/
/* 47466*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47468*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47471*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47479*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47483*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47491*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47494*/          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] })
/* 47502*/        0, /*End of Scope*/
/* 47503*/      /*SwitchType*/ 36, MVT::v8f16,// ->47541
/* 47505*/        OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47507*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47510*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47518*/        OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47522*/        OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47530*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47533*/        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] })
/* 47541*/      0, // EndSwitchType
/* 47542*/    /*Scope*/ 41|128,2/*297*/, /*->47841*/
/* 47544*/      OPC_CheckChild0Type, MVT::v2f64,
/* 47546*/      OPC_SwitchType /*6 cases */, 13, MVT::v2i64,// ->47562
/* 47549*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 47551*/        OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47554*/        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] })
/* 47562*/      /*SwitchType*/ 75, MVT::v16i8,// ->47639
/* 47564*/        OPC_Scope, 13, /*->47579*/ // 2 children in Scope
/* 47566*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47568*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47571*/          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] })
/* 47579*/        /*Scope*/ 58, /*->47638*/
/* 47580*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47582*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47585*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47593*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47596*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47604*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47607*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 47615*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47619*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 47627*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47630*/          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] })
/* 47638*/        0, /*End of Scope*/
/* 47639*/      /*SwitchType*/ 52, MVT::v8i16,// ->47693
/* 47641*/        OPC_Scope, 13, /*->47656*/ // 2 children in Scope
/* 47643*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47645*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47648*/          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] })
/* 47656*/        /*Scope*/ 35, /*->47692*/
/* 47657*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47659*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47662*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47670*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47673*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47681*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47684*/          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] })
/* 47692*/        0, /*End of Scope*/
/* 47693*/      /*SwitchType*/ 53, MVT::v4i32,// ->47748
/* 47695*/        OPC_Scope, 13, /*->47710*/ // 2 children in Scope
/* 47697*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47699*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47702*/          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] })
/* 47710*/        /*Scope*/ 36, /*->47747*/
/* 47711*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47713*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47716*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47724*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47728*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47736*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47739*/          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] })
/* 47747*/        0, /*End of Scope*/
/* 47748*/      /*SwitchType*/ 53, MVT::v4f32,// ->47803
/* 47750*/        OPC_Scope, 13, /*->47765*/ // 2 children in Scope
/* 47752*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47754*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47757*/          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] })
/* 47765*/        /*Scope*/ 36, /*->47802*/
/* 47766*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47768*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47771*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47779*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47783*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47791*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47794*/          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] })
/* 47802*/        0, /*End of Scope*/
/* 47803*/      /*SwitchType*/ 35, MVT::v8f16,// ->47840
/* 47805*/        OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47807*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47810*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47818*/        OPC_EmitInteger, MVT::i32, 27, 
/* 47821*/        OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47829*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47832*/        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] })
/* 47840*/      0, // EndSwitchType
/* 47841*/    /*Scope*/ 36|128,2/*292*/, /*->48135*/
/* 47843*/      OPC_CheckChild0Type, MVT::v8i16,
/* 47845*/      OPC_SwitchType /*6 cases */, 53, MVT::v16i8,// ->47901
/* 47848*/        OPC_Scope, 13, /*->47863*/ // 2 children in Scope
/* 47850*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47852*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47855*/          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] })
/* 47863*/        /*Scope*/ 36, /*->47900*/
/* 47864*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47866*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47869*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47877*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47881*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47889*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47892*/          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] })
/* 47900*/        0, /*End of Scope*/
/* 47901*/      /*SwitchType*/ 53, MVT::v4i32,// ->47956
/* 47903*/        OPC_Scope, 13, /*->47918*/ // 2 children in Scope
/* 47905*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47907*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47910*/          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] })
/* 47918*/        /*Scope*/ 36, /*->47955*/
/* 47919*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47921*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47924*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47932*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47936*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47944*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47947*/          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] })
/* 47955*/        0, /*End of Scope*/
/* 47956*/      /*SwitchType*/ 52, MVT::v2i64,// ->48010
/* 47958*/        OPC_Scope, 13, /*->47973*/ // 2 children in Scope
/* 47960*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47962*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47965*/          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] })
/* 47973*/        /*Scope*/ 35, /*->48009*/
/* 47974*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47976*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47979*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47987*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47990*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47998*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48001*/          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] })
/* 48009*/        0, /*End of Scope*/
/* 48010*/      /*SwitchType*/ 13, MVT::v8f16,// ->48025
/* 48012*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 48014*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48017*/        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] })
/* 48025*/      /*SwitchType*/ 53, MVT::v4f32,// ->48080
/* 48027*/        OPC_Scope, 13, /*->48042*/ // 2 children in Scope
/* 48029*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48031*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48034*/          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] })
/* 48042*/        /*Scope*/ 36, /*->48079*/
/* 48043*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48045*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48048*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48056*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48060*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48068*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48071*/          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] })
/* 48079*/        0, /*End of Scope*/
/* 48080*/      /*SwitchType*/ 52, MVT::v2f64,// ->48134
/* 48082*/        OPC_Scope, 13, /*->48097*/ // 2 children in Scope
/* 48084*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48086*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48089*/          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] })
/* 48097*/        /*Scope*/ 35, /*->48133*/
/* 48098*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48100*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48103*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48111*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48114*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48122*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48125*/          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] })
/* 48133*/        0, /*End of Scope*/
/* 48134*/      0, // EndSwitchType
/* 48135*/    /*Scope*/ 20|128,2/*276*/, /*->48413*/
/* 48137*/      OPC_CheckChild0Type, MVT::v4i32,
/* 48139*/      OPC_SwitchType /*6 cases */, 52, MVT::v16i8,// ->48194
/* 48142*/        OPC_Scope, 13, /*->48157*/ // 2 children in Scope
/* 48144*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48146*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48149*/          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] })
/* 48157*/        /*Scope*/ 35, /*->48193*/
/* 48158*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48160*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48163*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48171*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48174*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48182*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48185*/          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] })
/* 48193*/        0, /*End of Scope*/
/* 48194*/      /*SwitchType*/ 53, MVT::v8i16,// ->48249
/* 48196*/        OPC_Scope, 13, /*->48211*/ // 2 children in Scope
/* 48198*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48200*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48203*/          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] })
/* 48211*/        /*Scope*/ 36, /*->48248*/
/* 48212*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48214*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48217*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48225*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48229*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48237*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48240*/          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] })
/* 48248*/        0, /*End of Scope*/
/* 48249*/      /*SwitchType*/ 53, MVT::v2i64,// ->48304
/* 48251*/        OPC_Scope, 13, /*->48266*/ // 2 children in Scope
/* 48253*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48255*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48258*/          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] })
/* 48266*/        /*Scope*/ 36, /*->48303*/
/* 48267*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48269*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48272*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48280*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48284*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48292*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48295*/          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] })
/* 48303*/        0, /*End of Scope*/
/* 48304*/      /*SwitchType*/ 13, MVT::v4f32,// ->48319
/* 48306*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 48308*/        OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48311*/        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] })
/* 48319*/      /*SwitchType*/ 53, MVT::v2f64,// ->48374
/* 48321*/        OPC_Scope, 13, /*->48336*/ // 2 children in Scope
/* 48323*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48325*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48328*/          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] })
/* 48336*/        /*Scope*/ 36, /*->48373*/
/* 48337*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48339*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48342*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48350*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48354*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48362*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48365*/          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] })
/* 48373*/        0, /*End of Scope*/
/* 48374*/      /*SwitchType*/ 36, MVT::v8f16,// ->48412
/* 48376*/        OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48378*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48381*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48389*/        OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48393*/        OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48401*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48404*/        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] })
/* 48412*/      0, // EndSwitchType
/* 48413*/    /*Scope*/ 41|128,2/*297*/, /*->48712*/
/* 48415*/      OPC_CheckChild0Type, MVT::v2i64,
/* 48417*/      OPC_SwitchType /*6 cases */, 75, MVT::v16i8,// ->48495
/* 48420*/        OPC_Scope, 13, /*->48435*/ // 2 children in Scope
/* 48422*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48424*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48427*/          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] })
/* 48435*/        /*Scope*/ 58, /*->48494*/
/* 48436*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48438*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48441*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48449*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48452*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48460*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48463*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 48471*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48475*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 48483*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48486*/          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] })
/* 48494*/        0, /*End of Scope*/
/* 48495*/      /*SwitchType*/ 52, MVT::v8i16,// ->48549
/* 48497*/        OPC_Scope, 13, /*->48512*/ // 2 children in Scope
/* 48499*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48501*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48504*/          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] })
/* 48512*/        /*Scope*/ 35, /*->48548*/
/* 48513*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48515*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48518*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48526*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48529*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48537*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48540*/          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] })
/* 48548*/        0, /*End of Scope*/
/* 48549*/      /*SwitchType*/ 53, MVT::v4i32,// ->48604
/* 48551*/        OPC_Scope, 13, /*->48566*/ // 2 children in Scope
/* 48553*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48555*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48558*/          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] })
/* 48566*/        /*Scope*/ 36, /*->48603*/
/* 48567*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48569*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48572*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48580*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48584*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48592*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48595*/          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] })
/* 48603*/        0, /*End of Scope*/
/* 48604*/      /*SwitchType*/ 13, MVT::v2f64,// ->48619
/* 48606*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 48608*/        OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48611*/        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] })
/* 48619*/      /*SwitchType*/ 53, MVT::v4f32,// ->48674
/* 48621*/        OPC_Scope, 13, /*->48636*/ // 2 children in Scope
/* 48623*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48625*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48628*/          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] })
/* 48636*/        /*Scope*/ 36, /*->48673*/
/* 48637*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48639*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48642*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48650*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48654*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48662*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48665*/          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] })
/* 48673*/        0, /*End of Scope*/
/* 48674*/      /*SwitchType*/ 35, MVT::v8f16,// ->48711
/* 48676*/        OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48678*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48681*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48689*/        OPC_EmitInteger, MVT::i32, 27, 
/* 48692*/        OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48700*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48703*/        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] })
/* 48711*/      0, // EndSwitchType
/* 48712*/    /*Scope*/ 103|128,2/*359*/, /*->49073*/
/* 48714*/      OPC_CheckChild0Type, MVT::v16i8,
/* 48716*/      OPC_SwitchType /*6 cases */, 53, MVT::v8i16,// ->48772
/* 48719*/        OPC_Scope, 13, /*->48734*/ // 2 children in Scope
/* 48721*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48723*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48726*/          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] })
/* 48734*/        /*Scope*/ 36, /*->48771*/
/* 48735*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48737*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48740*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48748*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48752*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48760*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48763*/          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] })
/* 48771*/        0, /*End of Scope*/
/* 48772*/      /*SwitchType*/ 52, MVT::v4i32,// ->48826
/* 48774*/        OPC_Scope, 13, /*->48789*/ // 2 children in Scope
/* 48776*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48778*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48781*/          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] })
/* 48789*/        /*Scope*/ 35, /*->48825*/
/* 48790*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48792*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48795*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48803*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48806*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48814*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48817*/          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] })
/* 48825*/        0, /*End of Scope*/
/* 48826*/      /*SwitchType*/ 75, MVT::v2i64,// ->48903
/* 48828*/        OPC_Scope, 13, /*->48843*/ // 2 children in Scope
/* 48830*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48832*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48835*/          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] })
/* 48843*/        /*Scope*/ 58, /*->48902*/
/* 48844*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48846*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48849*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48857*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48860*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48868*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48871*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 48879*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48883*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 48891*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48894*/          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] })
/* 48902*/        0, /*End of Scope*/
/* 48903*/      /*SwitchType*/ 52, MVT::v4f32,// ->48957
/* 48905*/        OPC_Scope, 13, /*->48920*/ // 2 children in Scope
/* 48907*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48909*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48912*/          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] })
/* 48920*/        /*Scope*/ 35, /*->48956*/
/* 48921*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48923*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48926*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48934*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48937*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48945*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48948*/          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] })
/* 48956*/        0, /*End of Scope*/
/* 48957*/      /*SwitchType*/ 75, MVT::v2f64,// ->49034
/* 48959*/        OPC_Scope, 13, /*->48974*/ // 2 children in Scope
/* 48961*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48963*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48966*/          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] })
/* 48974*/        /*Scope*/ 58, /*->49033*/
/* 48975*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48977*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48980*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48988*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48991*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48999*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 49002*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 49010*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 49014*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 49022*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 49025*/          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] })
/* 49033*/        0, /*End of Scope*/
/* 49034*/      /*SwitchType*/ 36, MVT::v8f16,// ->49072
/* 49036*/        OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 49038*/        OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 49041*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 49049*/        OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 49053*/        OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 49061*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 49064*/        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] })
/* 49072*/      0, // EndSwitchType
/* 49073*/    0, /*End of Scope*/
/* 49074*/  /*SwitchOpcode*/ 69, TARGET_VAL(ISD::CTPOP),// ->49146
/* 49077*/    OPC_RecordChild0, // #0 = $rs
/* 49078*/    OPC_SwitchType /*6 cases */, 9, MVT::i32,// ->49090
/* 49081*/      OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 49083*/      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)
/* 49090*/    /*SwitchType*/ 9, MVT::i64,// ->49101
/* 49092*/      OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 49094*/      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)
/* 49101*/    /*SwitchType*/ 9, MVT::v16i8,// ->49112
/* 49103*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 49105*/      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)
/* 49112*/    /*SwitchType*/ 9, MVT::v8i16,// ->49123
/* 49114*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 49116*/      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)
/* 49123*/    /*SwitchType*/ 9, MVT::v4i32,// ->49134
/* 49125*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 49127*/      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)
/* 49134*/    /*SwitchType*/ 9, MVT::v2i64,// ->49145
/* 49136*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 49138*/      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)
/* 49145*/    0, // EndSwitchType
/* 49146*/  /*SwitchOpcode*/ 50|128,1/*178*/, TARGET_VAL(MipsISD::CMovFP_T),// ->49328
/* 49150*/    OPC_CaptureGlueInput,
/* 49151*/    OPC_RecordChild0, // #0 = $rs
/* 49152*/    OPC_RecordChild1, // #1 = $fcc
/* 49153*/    OPC_RecordChild2, // #2 = $F
/* 49154*/    OPC_SwitchType /*4 cases */, 38, MVT::i32,// ->49195
/* 49157*/      OPC_Scope, 11, /*->49170*/ // 3 children in Scope
/* 49159*/        OPC_CheckPatternPredicate, 100, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49161*/        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)
/* 49170*/      /*Scope*/ 11, /*->49182*/
/* 49171*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 49173*/        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)
/* 49182*/      /*Scope*/ 11, /*->49194*/
/* 49183*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49185*/        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)
/* 49194*/      0, /*End of Scope*/
/* 49195*/    /*SwitchType*/ 26, MVT::i64,// ->49223
/* 49197*/      OPC_Scope, 11, /*->49210*/ // 2 children in Scope
/* 49199*/        OPC_CheckPatternPredicate, 101, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49201*/        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)
/* 49210*/      /*Scope*/ 11, /*->49222*/
/* 49211*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49213*/        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)
/* 49222*/      0, /*End of Scope*/
/* 49223*/    /*SwitchType*/ 38, MVT::f32,// ->49263
/* 49225*/      OPC_Scope, 11, /*->49238*/ // 3 children in Scope
/* 49227*/        OPC_CheckPatternPredicate, 100, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49229*/        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)
/* 49238*/      /*Scope*/ 11, /*->49250*/
/* 49239*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 49241*/        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)
/* 49250*/      /*Scope*/ 11, /*->49262*/
/* 49251*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49253*/        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)
/* 49262*/      0, /*End of Scope*/
/* 49263*/    /*SwitchType*/ 62, MVT::f64,// ->49327
/* 49265*/      OPC_Scope, 11, /*->49278*/ // 5 children in Scope
/* 49267*/        OPC_CheckPatternPredicate, 102, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49269*/        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)
/* 49278*/      /*Scope*/ 11, /*->49290*/
/* 49279*/        OPC_CheckPatternPredicate, 103, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49281*/        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)
/* 49290*/      /*Scope*/ 11, /*->49302*/
/* 49291*/        OPC_CheckPatternPredicate, 104, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 49293*/        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)
/* 49302*/      /*Scope*/ 11, /*->49314*/
/* 49303*/        OPC_CheckPatternPredicate, 41, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 49305*/        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)
/* 49314*/      /*Scope*/ 11, /*->49326*/
/* 49315*/        OPC_CheckPatternPredicate, 42, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 49317*/        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)
/* 49326*/      0, /*End of Scope*/
/* 49327*/    0, // EndSwitchType
/* 49328*/  /*SwitchOpcode*/ 50|128,1/*178*/, TARGET_VAL(MipsISD::CMovFP_F),// ->49510
/* 49332*/    OPC_CaptureGlueInput,
/* 49333*/    OPC_RecordChild0, // #0 = $rs
/* 49334*/    OPC_RecordChild1, // #1 = $fcc
/* 49335*/    OPC_RecordChild2, // #2 = $F
/* 49336*/    OPC_SwitchType /*4 cases */, 38, MVT::i32,// ->49377
/* 49339*/      OPC_Scope, 11, /*->49352*/ // 3 children in Scope
/* 49341*/        OPC_CheckPatternPredicate, 100, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49343*/        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)
/* 49352*/      /*Scope*/ 11, /*->49364*/
/* 49353*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 49355*/        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)
/* 49364*/      /*Scope*/ 11, /*->49376*/
/* 49365*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49367*/        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)
/* 49376*/      0, /*End of Scope*/
/* 49377*/    /*SwitchType*/ 26, MVT::i64,// ->49405
/* 49379*/      OPC_Scope, 11, /*->49392*/ // 2 children in Scope
/* 49381*/        OPC_CheckPatternPredicate, 101, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49383*/        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)
/* 49392*/      /*Scope*/ 11, /*->49404*/
/* 49393*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49395*/        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)
/* 49404*/      0, /*End of Scope*/
/* 49405*/    /*SwitchType*/ 38, MVT::f32,// ->49445
/* 49407*/      OPC_Scope, 11, /*->49420*/ // 3 children in Scope
/* 49409*/        OPC_CheckPatternPredicate, 100, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49411*/        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)
/* 49420*/      /*Scope*/ 11, /*->49432*/
/* 49421*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 49423*/        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)
/* 49432*/      /*Scope*/ 11, /*->49444*/
/* 49433*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49435*/        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)
/* 49444*/      0, /*End of Scope*/
/* 49445*/    /*SwitchType*/ 62, MVT::f64,// ->49509
/* 49447*/      OPC_Scope, 11, /*->49460*/ // 5 children in Scope
/* 49449*/        OPC_CheckPatternPredicate, 102, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49451*/        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)
/* 49460*/      /*Scope*/ 11, /*->49472*/
/* 49461*/        OPC_CheckPatternPredicate, 103, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49463*/        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)
/* 49472*/      /*Scope*/ 11, /*->49484*/
/* 49473*/        OPC_CheckPatternPredicate, 104, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 49475*/        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)
/* 49484*/      /*Scope*/ 11, /*->49496*/
/* 49485*/        OPC_CheckPatternPredicate, 41, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 49487*/        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)
/* 49496*/      /*Scope*/ 11, /*->49508*/
/* 49497*/        OPC_CheckPatternPredicate, 42, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 49499*/        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)
/* 49508*/      0, /*End of Scope*/
/* 49509*/    0, // EndSwitchType
/* 49510*/  /*SwitchOpcode*/ 42, TARGET_VAL(ISD::MULHS),// ->49555
/* 49513*/    OPC_RecordChild0, // #0 = $rs
/* 49514*/    OPC_RecordChild1, // #1 = $rt
/* 49515*/    OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->49542
/* 49518*/      OPC_Scope, 10, /*->49530*/ // 2 children in Scope
/* 49520*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 49522*/        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)
/* 49530*/      /*Scope*/ 10, /*->49541*/
/* 49531*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 49533*/        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)
/* 49541*/      0, /*End of Scope*/
/* 49542*/    /*SwitchType*/ 10, MVT::i64,// ->49554
/* 49544*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 49546*/      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)
/* 49554*/    0, // EndSwitchType
/* 49555*/  /*SwitchOpcode*/ 42, TARGET_VAL(ISD::MULHU),// ->49600
/* 49558*/    OPC_RecordChild0, // #0 = $rs
/* 49559*/    OPC_RecordChild1, // #1 = $rt
/* 49560*/    OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->49587
/* 49563*/      OPC_Scope, 10, /*->49575*/ // 2 children in Scope
/* 49565*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 49567*/        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)
/* 49575*/      /*Scope*/ 10, /*->49586*/
/* 49576*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 49578*/        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)
/* 49586*/      0, /*End of Scope*/
/* 49587*/    /*SwitchType*/ 10, MVT::i64,// ->49599
/* 49589*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 49591*/      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)
/* 49599*/    0, // EndSwitchType
/* 49600*/  /*SwitchOpcode*/ 14, TARGET_VAL(MipsISD::DivRem16),// ->49617
/* 49603*/    OPC_RecordChild0, // #0 = $rx
/* 49604*/    OPC_CheckChild0Type, MVT::i32,
/* 49606*/    OPC_RecordChild1, // #1 = $ry
/* 49607*/    OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 49609*/    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)
/* 49617*/  /*SwitchOpcode*/ 14, TARGET_VAL(MipsISD::DivRemU16),// ->49634
/* 49620*/    OPC_RecordChild0, // #0 = $rx
/* 49621*/    OPC_CheckChild0Type, MVT::i32,
/* 49623*/    OPC_RecordChild1, // #1 = $ry
/* 49624*/    OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 49626*/    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)
/* 49634*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::MULSAQ_S_W_PH),// ->49669
/* 49637*/    OPC_RecordNode, // #0 = 'MipsMULSAQ_S_W_PH' chained node
/* 49638*/    OPC_RecordChild1, // #1 = $rs
/* 49639*/    OPC_RecordChild2, // #2 = $rt
/* 49640*/    OPC_RecordChild3, // #3 = $acin
/* 49641*/    OPC_Scope, 12, /*->49655*/ // 2 children in Scope
/* 49643*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49645*/      OPC_EmitMergeInputChains1_0,
/* 49646*/      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)
/* 49655*/    /*Scope*/ 12, /*->49668*/
/* 49656*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49658*/      OPC_EmitMergeInputChains1_0,
/* 49659*/      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)
/* 49668*/    0, /*End of Scope*/
/* 49669*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::MAQ_S_W_PHL),// ->49704
/* 49672*/    OPC_RecordNode, // #0 = 'MipsMAQ_S_W_PHL' chained node
/* 49673*/    OPC_RecordChild1, // #1 = $rs
/* 49674*/    OPC_RecordChild2, // #2 = $rt
/* 49675*/    OPC_RecordChild3, // #3 = $acin
/* 49676*/    OPC_Scope, 12, /*->49690*/ // 2 children in Scope
/* 49678*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49680*/      OPC_EmitMergeInputChains1_0,
/* 49681*/      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)
/* 49690*/    /*Scope*/ 12, /*->49703*/
/* 49691*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49693*/      OPC_EmitMergeInputChains1_0,
/* 49694*/      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)
/* 49703*/    0, /*End of Scope*/
/* 49704*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::MAQ_S_W_PHR),// ->49739
/* 49707*/    OPC_RecordNode, // #0 = 'MipsMAQ_S_W_PHR' chained node
/* 49708*/    OPC_RecordChild1, // #1 = $rs
/* 49709*/    OPC_RecordChild2, // #2 = $rt
/* 49710*/    OPC_RecordChild3, // #3 = $acin
/* 49711*/    OPC_Scope, 12, /*->49725*/ // 2 children in Scope
/* 49713*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49715*/      OPC_EmitMergeInputChains1_0,
/* 49716*/      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)
/* 49725*/    /*Scope*/ 12, /*->49738*/
/* 49726*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49728*/      OPC_EmitMergeInputChains1_0,
/* 49729*/      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)
/* 49738*/    0, /*End of Scope*/
/* 49739*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::MAQ_SA_W_PHL),// ->49774
/* 49742*/    OPC_RecordNode, // #0 = 'MipsMAQ_SA_W_PHL' chained node
/* 49743*/    OPC_RecordChild1, // #1 = $rs
/* 49744*/    OPC_RecordChild2, // #2 = $rt
/* 49745*/    OPC_RecordChild3, // #3 = $acin
/* 49746*/    OPC_Scope, 12, /*->49760*/ // 2 children in Scope
/* 49748*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49750*/      OPC_EmitMergeInputChains1_0,
/* 49751*/      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)
/* 49760*/    /*Scope*/ 12, /*->49773*/
/* 49761*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49763*/      OPC_EmitMergeInputChains1_0,
/* 49764*/      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)
/* 49773*/    0, /*End of Scope*/
/* 49774*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::MAQ_SA_W_PHR),// ->49809
/* 49777*/    OPC_RecordNode, // #0 = 'MipsMAQ_SA_W_PHR' chained node
/* 49778*/    OPC_RecordChild1, // #1 = $rs
/* 49779*/    OPC_RecordChild2, // #2 = $rt
/* 49780*/    OPC_RecordChild3, // #3 = $acin
/* 49781*/    OPC_Scope, 12, /*->49795*/ // 2 children in Scope
/* 49783*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49785*/      OPC_EmitMergeInputChains1_0,
/* 49786*/      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)
/* 49795*/    /*Scope*/ 12, /*->49808*/
/* 49796*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49798*/      OPC_EmitMergeInputChains1_0,
/* 49799*/      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)
/* 49808*/    0, /*End of Scope*/
/* 49809*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPAU_H_QBL),// ->49841
/* 49812*/    OPC_RecordChild0, // #0 = $rs
/* 49813*/    OPC_RecordChild1, // #1 = $rt
/* 49814*/    OPC_RecordChild2, // #2 = $acin
/* 49815*/    OPC_Scope, 11, /*->49828*/ // 2 children in Scope
/* 49817*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49819*/      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)
/* 49828*/    /*Scope*/ 11, /*->49840*/
/* 49829*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49831*/      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)
/* 49840*/    0, /*End of Scope*/
/* 49841*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPAU_H_QBR),// ->49873
/* 49844*/    OPC_RecordChild0, // #0 = $rs
/* 49845*/    OPC_RecordChild1, // #1 = $rt
/* 49846*/    OPC_RecordChild2, // #2 = $acin
/* 49847*/    OPC_Scope, 11, /*->49860*/ // 2 children in Scope
/* 49849*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49851*/      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)
/* 49860*/    /*Scope*/ 11, /*->49872*/
/* 49861*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49863*/      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)
/* 49872*/    0, /*End of Scope*/
/* 49873*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPSU_H_QBL),// ->49905
/* 49876*/    OPC_RecordChild0, // #0 = $rs
/* 49877*/    OPC_RecordChild1, // #1 = $rt
/* 49878*/    OPC_RecordChild2, // #2 = $acin
/* 49879*/    OPC_Scope, 11, /*->49892*/ // 2 children in Scope
/* 49881*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49883*/      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)
/* 49892*/    /*Scope*/ 11, /*->49904*/
/* 49893*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49895*/      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)
/* 49904*/    0, /*End of Scope*/
/* 49905*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPSU_H_QBR),// ->49937
/* 49908*/    OPC_RecordChild0, // #0 = $rs
/* 49909*/    OPC_RecordChild1, // #1 = $rt
/* 49910*/    OPC_RecordChild2, // #2 = $acin
/* 49911*/    OPC_Scope, 11, /*->49924*/ // 2 children in Scope
/* 49913*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49915*/      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)
/* 49924*/    /*Scope*/ 11, /*->49936*/
/* 49925*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49927*/      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)
/* 49936*/    0, /*End of Scope*/
/* 49937*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPAQ_S_W_PH),// ->49972
/* 49940*/    OPC_RecordNode, // #0 = 'MipsDPAQ_S_W_PH' chained node
/* 49941*/    OPC_RecordChild1, // #1 = $rs
/* 49942*/    OPC_RecordChild2, // #2 = $rt
/* 49943*/    OPC_RecordChild3, // #3 = $acin
/* 49944*/    OPC_Scope, 12, /*->49958*/ // 2 children in Scope
/* 49946*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49948*/      OPC_EmitMergeInputChains1_0,
/* 49949*/      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)
/* 49958*/    /*Scope*/ 12, /*->49971*/
/* 49959*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49961*/      OPC_EmitMergeInputChains1_0,
/* 49962*/      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)
/* 49971*/    0, /*End of Scope*/
/* 49972*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPSQ_S_W_PH),// ->50007
/* 49975*/    OPC_RecordNode, // #0 = 'MipsDPSQ_S_W_PH' chained node
/* 49976*/    OPC_RecordChild1, // #1 = $rs
/* 49977*/    OPC_RecordChild2, // #2 = $rt
/* 49978*/    OPC_RecordChild3, // #3 = $acin
/* 49979*/    OPC_Scope, 12, /*->49993*/ // 2 children in Scope
/* 49981*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49983*/      OPC_EmitMergeInputChains1_0,
/* 49984*/      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)
/* 49993*/    /*Scope*/ 12, /*->50006*/
/* 49994*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49996*/      OPC_EmitMergeInputChains1_0,
/* 49997*/      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)
/* 50006*/    0, /*End of Scope*/
/* 50007*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPAQ_SA_L_W),// ->50042
/* 50010*/    OPC_RecordNode, // #0 = 'MipsDPAQ_SA_L_W' chained node
/* 50011*/    OPC_RecordChild1, // #1 = $rs
/* 50012*/    OPC_RecordChild2, // #2 = $rt
/* 50013*/    OPC_RecordChild3, // #3 = $acin
/* 50014*/    OPC_Scope, 12, /*->50028*/ // 2 children in Scope
/* 50016*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 50018*/      OPC_EmitMergeInputChains1_0,
/* 50019*/      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)
/* 50028*/    /*Scope*/ 12, /*->50041*/
/* 50029*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 50031*/      OPC_EmitMergeInputChains1_0,
/* 50032*/      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)
/* 50041*/    0, /*End of Scope*/
/* 50042*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPSQ_SA_L_W),// ->50077
/* 50045*/    OPC_RecordNode, // #0 = 'MipsDPSQ_SA_L_W' chained node
/* 50046*/    OPC_RecordChild1, // #1 = $rs
/* 50047*/    OPC_RecordChild2, // #2 = $rt
/* 50048*/    OPC_RecordChild3, // #3 = $acin
/* 50049*/    OPC_Scope, 12, /*->50063*/ // 2 children in Scope
/* 50051*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 50053*/      OPC_EmitMergeInputChains1_0,
/* 50054*/      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)
/* 50063*/    /*Scope*/ 12, /*->50076*/
/* 50064*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 50066*/      OPC_EmitMergeInputChains1_0,
/* 50067*/      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)
/* 50076*/    0, /*End of Scope*/
/* 50077*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::MTHLIP),// ->50109
/* 50080*/    OPC_RecordNode, // #0 = 'MipsMTHLIP' chained node
/* 50081*/    OPC_RecordChild1, // #1 = $rs
/* 50082*/    OPC_RecordChild2, // #2 = $acin
/* 50083*/    OPC_Scope, 11, /*->50096*/ // 2 children in Scope
/* 50085*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 50087*/      OPC_EmitMergeInputChains1_0,
/* 50088*/      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)
/* 50096*/    /*Scope*/ 11, /*->50108*/
/* 50097*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 50099*/      OPC_EmitMergeInputChains1_0,
/* 50100*/      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)
/* 50108*/    0, /*End of Scope*/
/* 50109*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPA_W_PH),// ->50141
/* 50112*/    OPC_RecordChild0, // #0 = $rs
/* 50113*/    OPC_RecordChild1, // #1 = $rt
/* 50114*/    OPC_RecordChild2, // #2 = $acin
/* 50115*/    OPC_Scope, 11, /*->50128*/ // 2 children in Scope
/* 50117*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50119*/      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)
/* 50128*/    /*Scope*/ 11, /*->50140*/
/* 50129*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50131*/      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)
/* 50140*/    0, /*End of Scope*/
/* 50141*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPS_W_PH),// ->50173
/* 50144*/    OPC_RecordChild0, // #0 = $rs
/* 50145*/    OPC_RecordChild1, // #1 = $rt
/* 50146*/    OPC_RecordChild2, // #2 = $acin
/* 50147*/    OPC_Scope, 11, /*->50160*/ // 2 children in Scope
/* 50149*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50151*/      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)
/* 50160*/    /*Scope*/ 11, /*->50172*/
/* 50161*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50163*/      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)
/* 50172*/    0, /*End of Scope*/
/* 50173*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPAQX_S_W_PH),// ->50208
/* 50176*/    OPC_RecordNode, // #0 = 'MipsDPAQX_S_W_PH' chained node
/* 50177*/    OPC_RecordChild1, // #1 = $rs
/* 50178*/    OPC_RecordChild2, // #2 = $rt
/* 50179*/    OPC_RecordChild3, // #3 = $acin
/* 50180*/    OPC_Scope, 12, /*->50194*/ // 2 children in Scope
/* 50182*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50184*/      OPC_EmitMergeInputChains1_0,
/* 50185*/      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)
/* 50194*/    /*Scope*/ 12, /*->50207*/
/* 50195*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50197*/      OPC_EmitMergeInputChains1_0,
/* 50198*/      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)
/* 50207*/    0, /*End of Scope*/
/* 50208*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPAQX_SA_W_PH),// ->50243
/* 50211*/    OPC_RecordNode, // #0 = 'MipsDPAQX_SA_W_PH' chained node
/* 50212*/    OPC_RecordChild1, // #1 = $rs
/* 50213*/    OPC_RecordChild2, // #2 = $rt
/* 50214*/    OPC_RecordChild3, // #3 = $acin
/* 50215*/    OPC_Scope, 12, /*->50229*/ // 2 children in Scope
/* 50217*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50219*/      OPC_EmitMergeInputChains1_0,
/* 50220*/      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)
/* 50229*/    /*Scope*/ 12, /*->50242*/
/* 50230*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50232*/      OPC_EmitMergeInputChains1_0,
/* 50233*/      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)
/* 50242*/    0, /*End of Scope*/
/* 50243*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPAX_W_PH),// ->50275
/* 50246*/    OPC_RecordChild0, // #0 = $rs
/* 50247*/    OPC_RecordChild1, // #1 = $rt
/* 50248*/    OPC_RecordChild2, // #2 = $acin
/* 50249*/    OPC_Scope, 11, /*->50262*/ // 2 children in Scope
/* 50251*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50253*/      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)
/* 50262*/    /*Scope*/ 11, /*->50274*/
/* 50263*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50265*/      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)
/* 50274*/    0, /*End of Scope*/
/* 50275*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPSX_W_PH),// ->50307
/* 50278*/    OPC_RecordChild0, // #0 = $rs
/* 50279*/    OPC_RecordChild1, // #1 = $rt
/* 50280*/    OPC_RecordChild2, // #2 = $acin
/* 50281*/    OPC_Scope, 11, /*->50294*/ // 2 children in Scope
/* 50283*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50285*/      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)
/* 50294*/    /*Scope*/ 11, /*->50306*/
/* 50295*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50297*/      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)
/* 50306*/    0, /*End of Scope*/
/* 50307*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPSQX_S_W_PH),// ->50342
/* 50310*/    OPC_RecordNode, // #0 = 'MipsDPSQX_S_W_PH' chained node
/* 50311*/    OPC_RecordChild1, // #1 = $rs
/* 50312*/    OPC_RecordChild2, // #2 = $rt
/* 50313*/    OPC_RecordChild3, // #3 = $acin
/* 50314*/    OPC_Scope, 12, /*->50328*/ // 2 children in Scope
/* 50316*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50318*/      OPC_EmitMergeInputChains1_0,
/* 50319*/      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)
/* 50328*/    /*Scope*/ 12, /*->50341*/
/* 50329*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50331*/      OPC_EmitMergeInputChains1_0,
/* 50332*/      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)
/* 50341*/    0, /*End of Scope*/
/* 50342*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPSQX_SA_W_PH),// ->50377
/* 50345*/    OPC_RecordNode, // #0 = 'MipsDPSQX_SA_W_PH' chained node
/* 50346*/    OPC_RecordChild1, // #1 = $rs
/* 50347*/    OPC_RecordChild2, // #2 = $rt
/* 50348*/    OPC_RecordChild3, // #3 = $acin
/* 50349*/    OPC_Scope, 12, /*->50363*/ // 2 children in Scope
/* 50351*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50353*/      OPC_EmitMergeInputChains1_0,
/* 50354*/      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)
/* 50363*/    /*Scope*/ 12, /*->50376*/
/* 50364*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50366*/      OPC_EmitMergeInputChains1_0,
/* 50367*/      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)
/* 50376*/    0, /*End of Scope*/
/* 50377*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::MULSA_W_PH),// ->50409
/* 50380*/    OPC_RecordChild0, // #0 = $rs
/* 50381*/    OPC_RecordChild1, // #1 = $rt
/* 50382*/    OPC_RecordChild2, // #2 = $acin
/* 50383*/    OPC_Scope, 11, /*->50396*/ // 2 children in Scope
/* 50385*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50387*/      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)
/* 50396*/    /*Scope*/ 11, /*->50408*/
/* 50397*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50399*/      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)
/* 50408*/    0, /*End of Scope*/
/* 50409*/  /*SwitchOpcode*/ 15, TARGET_VAL(ISD::ADDE),// ->50427
/* 50412*/    OPC_CaptureGlueInput,
/* 50413*/    OPC_RecordChild0, // #0 = $a
/* 50414*/    OPC_RecordChild1, // #1 = $b
/* 50415*/    OPC_CheckType, MVT::i32,
/* 50417*/    OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 50419*/    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)
/* 50427*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::BSWAP),// ->50497
/* 50430*/    OPC_RecordChild0, // #0 = $rt
/* 50431*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->50478
/* 50434*/      OPC_Scope, 20, /*->50456*/ // 2 children in Scope
/* 50436*/        OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50438*/        OPC_EmitNode1, TARGET_VAL(Mips::WSBH), 0,
                      MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 50445*/        OPC_EmitInteger, MVT::i32, 16, 
/* 50448*/        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] })
/* 50456*/      /*Scope*/ 20, /*->50477*/
/* 50457*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 50459*/        OPC_EmitNode1, TARGET_VAL(Mips::WSBH_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 50466*/        OPC_EmitInteger, MVT::i32, 16, 
/* 50469*/        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] })
/* 50477*/      0, /*End of Scope*/
/* 50478*/    /*SwitchType*/ 16, MVT::i64,// ->50496
/* 50480*/      OPC_CheckPatternPredicate, 105, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding())
/* 50482*/      OPC_EmitNode1, TARGET_VAL(Mips::DSBH), 0,
                    MVT::i64, 1/*#Ops*/, 0,  // Results = #1
/* 50489*/      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))
/* 50496*/    0, // EndSwitchType
/* 50497*/  /*SwitchOpcode*/ 23, TARGET_VAL(ISD::ANY_EXTEND),// ->50523
/* 50500*/    OPC_RecordChild0, // #0 = $src
/* 50501*/    OPC_CheckType, MVT::i64,
/* 50503*/    OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 50505*/    OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                  MVT::i64, 0/*#Ops*/,  // Results = #1
/* 50511*/    OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 50514*/    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] })
/* 50523*/  /*SwitchOpcode*/ 45, TARGET_VAL(MipsISD::DivRem),// ->50571
/* 50526*/    OPC_RecordChild0, // #0 = $rs
/* 50527*/    OPC_Scope, 27, /*->50556*/ // 2 children in Scope
/* 50529*/      OPC_CheckChild0Type, MVT::i32,
/* 50531*/      OPC_RecordChild1, // #1 = $rt
/* 50532*/      OPC_Scope, 10, /*->50544*/ // 2 children in Scope
/* 50534*/        OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50536*/        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)
/* 50544*/      /*Scope*/ 10, /*->50555*/
/* 50545*/        OPC_CheckPatternPredicate, 106, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50547*/        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)
/* 50555*/      0, /*End of Scope*/
/* 50556*/    /*Scope*/ 13, /*->50570*/
/* 50557*/      OPC_CheckChild0Type, MVT::i64,
/* 50559*/      OPC_RecordChild1, // #1 = $rt
/* 50560*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50562*/      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)
/* 50570*/    0, /*End of Scope*/
/* 50571*/  /*SwitchOpcode*/ 45, TARGET_VAL(MipsISD::DivRemU),// ->50619
/* 50574*/    OPC_RecordChild0, // #0 = $rs
/* 50575*/    OPC_Scope, 27, /*->50604*/ // 2 children in Scope
/* 50577*/      OPC_CheckChild0Type, MVT::i32,
/* 50579*/      OPC_RecordChild1, // #1 = $rt
/* 50580*/      OPC_Scope, 10, /*->50592*/ // 2 children in Scope
/* 50582*/        OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50584*/        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)
/* 50592*/      /*Scope*/ 10, /*->50603*/
/* 50593*/        OPC_CheckPatternPredicate, 106, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50595*/        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)
/* 50603*/      0, /*End of Scope*/
/* 50604*/    /*Scope*/ 13, /*->50618*/
/* 50605*/      OPC_CheckChild0Type, MVT::i64,
/* 50607*/      OPC_RecordChild1, // #1 = $rt
/* 50608*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50610*/      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)
/* 50618*/    0, /*End of Scope*/
/* 50619*/  /*SwitchOpcode*/ 90, TARGET_VAL(ISD::SDIV),// ->50712
/* 50622*/    OPC_RecordChild0, // #0 = $rs
/* 50623*/    OPC_RecordChild1, // #1 = $rt
/* 50624*/    OPC_SwitchType /*6 cases */, 24, MVT::i32,// ->50651
/* 50627*/      OPC_Scope, 10, /*->50639*/ // 2 children in Scope
/* 50629*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50631*/        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)
/* 50639*/      /*Scope*/ 10, /*->50650*/
/* 50640*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 50642*/        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)
/* 50650*/      0, /*End of Scope*/
/* 50651*/    /*SwitchType*/ 10, MVT::i64,// ->50663
/* 50653*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50655*/      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)
/* 50663*/    /*SwitchType*/ 10, MVT::v16i8,// ->50675
/* 50665*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50667*/      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)
/* 50675*/    /*SwitchType*/ 10, MVT::v8i16,// ->50687
/* 50677*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50679*/      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)
/* 50687*/    /*SwitchType*/ 10, MVT::v4i32,// ->50699
/* 50689*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50691*/      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)
/* 50699*/    /*SwitchType*/ 10, MVT::v2i64,// ->50711
/* 50701*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50703*/      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)
/* 50711*/    0, // EndSwitchType
/* 50712*/  /*SwitchOpcode*/ 90, TARGET_VAL(ISD::UDIV),// ->50805
/* 50715*/    OPC_RecordChild0, // #0 = $rs
/* 50716*/    OPC_RecordChild1, // #1 = $rt
/* 50717*/    OPC_SwitchType /*6 cases */, 24, MVT::i32,// ->50744
/* 50720*/      OPC_Scope, 10, /*->50732*/ // 2 children in Scope
/* 50722*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50724*/        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)
/* 50732*/      /*Scope*/ 10, /*->50743*/
/* 50733*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 50735*/        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)
/* 50743*/      0, /*End of Scope*/
/* 50744*/    /*SwitchType*/ 10, MVT::i64,// ->50756
/* 50746*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50748*/      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)
/* 50756*/    /*SwitchType*/ 10, MVT::v16i8,// ->50768
/* 50758*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50760*/      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)
/* 50768*/    /*SwitchType*/ 10, MVT::v8i16,// ->50780
/* 50770*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50772*/      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)
/* 50780*/    /*SwitchType*/ 10, MVT::v4i32,// ->50792
/* 50782*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50784*/      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)
/* 50792*/    /*SwitchType*/ 10, MVT::v2i64,// ->50804
/* 50794*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50796*/      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)
/* 50804*/    0, // EndSwitchType
/* 50805*/  /*SwitchOpcode*/ 90, TARGET_VAL(ISD::SREM),// ->50898
/* 50808*/    OPC_RecordChild0, // #0 = $rs
/* 50809*/    OPC_RecordChild1, // #1 = $rt
/* 50810*/    OPC_SwitchType /*6 cases */, 24, MVT::i32,// ->50837
/* 50813*/      OPC_Scope, 10, /*->50825*/ // 2 children in Scope
/* 50815*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50817*/        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)
/* 50825*/      /*Scope*/ 10, /*->50836*/
/* 50826*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 50828*/        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)
/* 50836*/      0, /*End of Scope*/
/* 50837*/    /*SwitchType*/ 10, MVT::i64,// ->50849
/* 50839*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50841*/      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)
/* 50849*/    /*SwitchType*/ 10, MVT::v16i8,// ->50861
/* 50851*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50853*/      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)
/* 50861*/    /*SwitchType*/ 10, MVT::v8i16,// ->50873
/* 50863*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50865*/      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)
/* 50873*/    /*SwitchType*/ 10, MVT::v4i32,// ->50885
/* 50875*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50877*/      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)
/* 50885*/    /*SwitchType*/ 10, MVT::v2i64,// ->50897
/* 50887*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50889*/      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)
/* 50897*/    0, // EndSwitchType
/* 50898*/  /*SwitchOpcode*/ 90, TARGET_VAL(ISD::UREM),// ->50991
/* 50901*/    OPC_RecordChild0, // #0 = $rs
/* 50902*/    OPC_RecordChild1, // #1 = $rt
/* 50903*/    OPC_SwitchType /*6 cases */, 24, MVT::i32,// ->50930
/* 50906*/      OPC_Scope, 10, /*->50918*/ // 2 children in Scope
/* 50908*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50910*/        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)
/* 50918*/      /*Scope*/ 10, /*->50929*/
/* 50919*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 50921*/        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)
/* 50929*/      0, /*End of Scope*/
/* 50930*/    /*SwitchType*/ 10, MVT::i64,// ->50942
/* 50932*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50934*/      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)
/* 50942*/    /*SwitchType*/ 10, MVT::v16i8,// ->50954
/* 50944*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50946*/      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)
/* 50954*/    /*SwitchType*/ 10, MVT::v8i16,// ->50966
/* 50956*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50958*/      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)
/* 50966*/    /*SwitchType*/ 10, MVT::v4i32,// ->50978
/* 50968*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50970*/      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)
/* 50978*/    /*SwitchType*/ 10, MVT::v2i64,// ->50990
/* 50980*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50982*/      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)
/* 50990*/    0, // EndSwitchType
/* 50991*/  /*SwitchOpcode*/ 45, TARGET_VAL(MipsISD::VALL_NONZERO),// ->51039
/* 50994*/    OPC_RecordChild0, // #0 = $ws
/* 50995*/    OPC_CheckType, MVT::i32,
/* 50997*/    OPC_Scope, 9, /*->51008*/ // 4 children in Scope
/* 50999*/      OPC_CheckChild0Type, MVT::v16i8,
/* 51001*/      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)
/* 51008*/    /*Scope*/ 9, /*->51018*/
/* 51009*/      OPC_CheckChild0Type, MVT::v8i16,
/* 51011*/      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)
/* 51018*/    /*Scope*/ 9, /*->51028*/
/* 51019*/      OPC_CheckChild0Type, MVT::v4i32,
/* 51021*/      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)
/* 51028*/    /*Scope*/ 9, /*->51038*/
/* 51029*/      OPC_CheckChild0Type, MVT::v2i64,
/* 51031*/      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)
/* 51038*/    0, /*End of Scope*/
/* 51039*/  /*SwitchOpcode*/ 12, TARGET_VAL(MipsISD::VANY_NONZERO),// ->51054
/* 51042*/    OPC_RecordChild0, // #0 = $ws
/* 51043*/    OPC_CheckChild0Type, MVT::v16i8,
/* 51045*/    OPC_CheckType, MVT::i32,
/* 51047*/    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)
/* 51054*/  /*SwitchOpcode*/ 45, TARGET_VAL(MipsISD::VALL_ZERO),// ->51102
/* 51057*/    OPC_RecordChild0, // #0 = $ws
/* 51058*/    OPC_CheckType, MVT::i32,
/* 51060*/    OPC_Scope, 9, /*->51071*/ // 4 children in Scope
/* 51062*/      OPC_CheckChild0Type, MVT::v16i8,
/* 51064*/      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)
/* 51071*/    /*Scope*/ 9, /*->51081*/
/* 51072*/      OPC_CheckChild0Type, MVT::v8i16,
/* 51074*/      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)
/* 51081*/    /*Scope*/ 9, /*->51091*/
/* 51082*/      OPC_CheckChild0Type, MVT::v4i32,
/* 51084*/      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)
/* 51091*/    /*Scope*/ 9, /*->51101*/
/* 51092*/      OPC_CheckChild0Type, MVT::v2i64,
/* 51094*/      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)
/* 51101*/    0, /*End of Scope*/
/* 51102*/  /*SwitchOpcode*/ 12, TARGET_VAL(MipsISD::VANY_ZERO),// ->51117
/* 51105*/    OPC_RecordChild0, // #0 = $ws
/* 51106*/    OPC_CheckChild0Type, MVT::v16i8,
/* 51108*/    OPC_CheckType, MVT::i32,
/* 51110*/    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)
/* 51117*/  /*SwitchOpcode*/ 7|128,3/*391*/, TARGET_VAL(ISD::FSUB),// ->51512
/* 51121*/    OPC_Scope, 101|128,1/*229*/, /*->51353*/ // 2 children in Scope
/* 51124*/      OPC_MoveChild0,
/* 51125*/      OPC_SwitchOpcode /*2 cases */, 44|128,1/*172*/, TARGET_VAL(ISD::ConstantFP),// ->51302
/* 51130*/        OPC_CheckPredicate, 63, // Predicate_fpimm0
/* 51132*/        OPC_MoveParent,
/* 51133*/        OPC_MoveChild1,
/* 51134*/        OPC_SwitchOpcode /*2 cases */, 108, TARGET_VAL(ISD::FADD),// ->51246
/* 51138*/          OPC_Scope, 52, /*->51192*/ // 2 children in Scope
/* 51140*/            OPC_MoveChild0,
/* 51141*/            OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51144*/            OPC_RecordChild0, // #0 = $fs
/* 51145*/            OPC_RecordChild1, // #1 = $ft
/* 51146*/            OPC_MoveParent,
/* 51147*/            OPC_RecordChild1, // #2 = $fr
/* 51148*/            OPC_MoveParent,
/* 51149*/            OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51163
/* 51152*/              OPC_CheckPatternPredicate, 107, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51154*/              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)
/* 51163*/            /*SwitchType*/ 26, MVT::f64,// ->51191
/* 51165*/              OPC_Scope, 11, /*->51178*/ // 2 children in Scope
/* 51167*/                OPC_CheckPatternPredicate, 108, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51169*/                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)
/* 51178*/              /*Scope*/ 11, /*->51190*/
/* 51179*/                OPC_CheckPatternPredicate, 109, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51181*/                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)
/* 51190*/              0, /*End of Scope*/
/* 51191*/            0, // EndSwitchType
/* 51192*/          /*Scope*/ 52, /*->51245*/
/* 51193*/            OPC_RecordChild0, // #0 = $fr
/* 51194*/            OPC_MoveChild1,
/* 51195*/            OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51198*/            OPC_RecordChild0, // #1 = $fs
/* 51199*/            OPC_RecordChild1, // #2 = $ft
/* 51200*/            OPC_MoveParent,
/* 51201*/            OPC_MoveParent,
/* 51202*/            OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51216
/* 51205*/              OPC_CheckPatternPredicate, 107, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51207*/              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)
/* 51216*/            /*SwitchType*/ 26, MVT::f64,// ->51244
/* 51218*/              OPC_Scope, 11, /*->51231*/ // 2 children in Scope
/* 51220*/                OPC_CheckPatternPredicate, 108, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51222*/                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)
/* 51231*/              /*Scope*/ 11, /*->51243*/
/* 51232*/                OPC_CheckPatternPredicate, 109, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51234*/                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)
/* 51243*/              0, /*End of Scope*/
/* 51244*/            0, // EndSwitchType
/* 51245*/          0, /*End of Scope*/
/* 51246*/        /*SwitchOpcode*/ 52, TARGET_VAL(ISD::FSUB),// ->51301
/* 51249*/          OPC_MoveChild0,
/* 51250*/          OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51253*/          OPC_RecordChild0, // #0 = $fs
/* 51254*/          OPC_RecordChild1, // #1 = $ft
/* 51255*/          OPC_MoveParent,
/* 51256*/          OPC_RecordChild1, // #2 = $fr
/* 51257*/          OPC_MoveParent,
/* 51258*/          OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51272
/* 51261*/            OPC_CheckPatternPredicate, 107, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51263*/            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)
/* 51272*/          /*SwitchType*/ 26, MVT::f64,// ->51300
/* 51274*/            OPC_Scope, 11, /*->51287*/ // 2 children in Scope
/* 51276*/              OPC_CheckPatternPredicate, 108, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51278*/              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)
/* 51287*/            /*Scope*/ 11, /*->51299*/
/* 51288*/              OPC_CheckPatternPredicate, 109, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51290*/              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)
/* 51299*/            0, /*End of Scope*/
/* 51300*/          0, // EndSwitchType
/* 51301*/        0, // EndSwitchOpcode
/* 51302*/      /*SwitchOpcode*/ 47, TARGET_VAL(ISD::FMUL),// ->51352
/* 51305*/        OPC_RecordChild0, // #0 = $fs
/* 51306*/        OPC_RecordChild1, // #1 = $ft
/* 51307*/        OPC_MoveParent,
/* 51308*/        OPC_RecordChild1, // #2 = $fr
/* 51309*/        OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51323
/* 51312*/          OPC_CheckPatternPredicate, 110, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51314*/          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)
/* 51323*/        /*SwitchType*/ 26, MVT::f64,// ->51351
/* 51325*/          OPC_Scope, 11, /*->51338*/ // 2 children in Scope
/* 51327*/            OPC_CheckPatternPredicate, 111, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51329*/            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)
/* 51338*/          /*Scope*/ 11, /*->51350*/
/* 51339*/            OPC_CheckPatternPredicate, 112, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51341*/            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)
/* 51350*/          0, /*End of Scope*/
/* 51351*/        0, // EndSwitchType
/* 51352*/      0, // EndSwitchOpcode
/* 51353*/    /*Scope*/ 28|128,1/*156*/, /*->51511*/
/* 51355*/      OPC_RecordChild0, // #0 = $fs
/* 51356*/      OPC_Scope, 88, /*->51446*/ // 3 children in Scope
/* 51358*/        OPC_RecordChild1, // #1 = $ft
/* 51359*/        OPC_SwitchType /*2 cases */, 35, MVT::f32,// ->51397
/* 51362*/          OPC_Scope, 10, /*->51374*/ // 3 children in Scope
/* 51364*/            OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 51366*/            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)
/* 51374*/          /*Scope*/ 10, /*->51385*/
/* 51375*/            OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51377*/            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)
/* 51385*/          /*Scope*/ 10, /*->51396*/
/* 51386*/            OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51388*/            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)
/* 51396*/          0, /*End of Scope*/
/* 51397*/        /*SwitchType*/ 46, MVT::f64,// ->51445
/* 51399*/          OPC_Scope, 10, /*->51411*/ // 4 children in Scope
/* 51401*/            OPC_CheckPatternPredicate, 113, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 51403*/            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)
/* 51411*/          /*Scope*/ 10, /*->51422*/
/* 51412*/            OPC_CheckPatternPredicate, 114, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 51414*/            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)
/* 51422*/          /*Scope*/ 10, /*->51433*/
/* 51423*/            OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 51425*/            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)
/* 51433*/          /*Scope*/ 10, /*->51444*/
/* 51434*/            OPC_CheckPatternPredicate, 115, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 51436*/            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)
/* 51444*/          0, /*End of Scope*/
/* 51445*/        0, // EndSwitchType
/* 51446*/      /*Scope*/ 35, /*->51482*/
/* 51447*/        OPC_MoveChild1,
/* 51448*/        OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51451*/        OPC_RecordChild0, // #1 = $ws
/* 51452*/        OPC_RecordChild1, // #2 = $wt
/* 51453*/        OPC_MoveParent,
/* 51454*/        OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->51468
/* 51457*/          OPC_CheckPatternPredicate, 116, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51459*/          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)
/* 51468*/        /*SwitchType*/ 11, MVT::v2f64,// ->51481
/* 51470*/          OPC_CheckPatternPredicate, 116, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51472*/          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)
/* 51481*/        0, // EndSwitchType
/* 51482*/      /*Scope*/ 27, /*->51510*/
/* 51483*/        OPC_RecordChild1, // #1 = $wt
/* 51484*/        OPC_SwitchType /*2 cases */, 10, MVT::v4f32,// ->51497
/* 51487*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51489*/          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)
/* 51497*/        /*SwitchType*/ 10, MVT::v2f64,// ->51509
/* 51499*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51501*/          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)
/* 51509*/        0, // EndSwitchType
/* 51510*/      0, /*End of Scope*/
/* 51511*/    0, /*End of Scope*/
/* 51512*/  /*SwitchOpcode*/ 81|128,2/*337*/, TARGET_VAL(ISD::FNEG),// ->51853
/* 51516*/    OPC_Scope, 123|128,1/*251*/, /*->51770*/ // 2 children in Scope
/* 51519*/      OPC_MoveChild0,
/* 51520*/      OPC_SwitchOpcode /*2 cases */, 34|128,1/*162*/, TARGET_VAL(ISD::FADD),// ->51687
/* 51525*/        OPC_Scope, 79, /*->51606*/ // 2 children in Scope
/* 51527*/          OPC_MoveChild0,
/* 51528*/          OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51531*/          OPC_RecordChild0, // #0 = $fs
/* 51532*/          OPC_RecordChild1, // #1 = $ft
/* 51533*/          OPC_MoveParent,
/* 51534*/          OPC_RecordChild1, // #2 = $fr
/* 51535*/          OPC_MoveParent,
/* 51536*/          OPC_SwitchType /*2 cases */, 26, MVT::f32,// ->51565
/* 51539*/            OPC_Scope, 11, /*->51552*/ // 2 children in Scope
/* 51541*/              OPC_CheckPatternPredicate, 117, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51543*/              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)
/* 51552*/            /*Scope*/ 11, /*->51564*/
/* 51553*/              OPC_CheckPatternPredicate, 118, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51555*/              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)
/* 51564*/            0, /*End of Scope*/
/* 51565*/          /*SwitchType*/ 38, MVT::f64,// ->51605
/* 51567*/            OPC_Scope, 11, /*->51580*/ // 3 children in Scope
/* 51569*/              OPC_CheckPatternPredicate, 119, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51571*/              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)
/* 51580*/            /*Scope*/ 11, /*->51592*/
/* 51581*/              OPC_CheckPatternPredicate, 120, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51583*/              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)
/* 51592*/            /*Scope*/ 11, /*->51604*/
/* 51593*/              OPC_CheckPatternPredicate, 121, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51595*/              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)
/* 51604*/            0, /*End of Scope*/
/* 51605*/          0, // EndSwitchType
/* 51606*/        /*Scope*/ 79, /*->51686*/
/* 51607*/          OPC_RecordChild0, // #0 = $fr
/* 51608*/          OPC_MoveChild1,
/* 51609*/          OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51612*/          OPC_RecordChild0, // #1 = $fs
/* 51613*/          OPC_RecordChild1, // #2 = $ft
/* 51614*/          OPC_MoveParent,
/* 51615*/          OPC_MoveParent,
/* 51616*/          OPC_SwitchType /*2 cases */, 26, MVT::f32,// ->51645
/* 51619*/            OPC_Scope, 11, /*->51632*/ // 2 children in Scope
/* 51621*/              OPC_CheckPatternPredicate, 117, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51623*/              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)
/* 51632*/            /*Scope*/ 11, /*->51644*/
/* 51633*/              OPC_CheckPatternPredicate, 118, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51635*/              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)
/* 51644*/            0, /*End of Scope*/
/* 51645*/          /*SwitchType*/ 38, MVT::f64,// ->51685
/* 51647*/            OPC_Scope, 11, /*->51660*/ // 3 children in Scope
/* 51649*/              OPC_CheckPatternPredicate, 119, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51651*/              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)
/* 51660*/            /*Scope*/ 11, /*->51672*/
/* 51661*/              OPC_CheckPatternPredicate, 120, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51663*/              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)
/* 51672*/            /*Scope*/ 11, /*->51684*/
/* 51673*/              OPC_CheckPatternPredicate, 121, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51675*/              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)
/* 51684*/            0, /*End of Scope*/
/* 51685*/          0, // EndSwitchType
/* 51686*/        0, /*End of Scope*/
/* 51687*/      /*SwitchOpcode*/ 79, TARGET_VAL(ISD::FSUB),// ->51769
/* 51690*/        OPC_MoveChild0,
/* 51691*/        OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51694*/        OPC_RecordChild0, // #0 = $fs
/* 51695*/        OPC_RecordChild1, // #1 = $ft
/* 51696*/        OPC_MoveParent,
/* 51697*/        OPC_RecordChild1, // #2 = $fr
/* 51698*/        OPC_MoveParent,
/* 51699*/        OPC_SwitchType /*2 cases */, 26, MVT::f32,// ->51728
/* 51702*/          OPC_Scope, 11, /*->51715*/ // 2 children in Scope
/* 51704*/            OPC_CheckPatternPredicate, 117, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51706*/            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)
/* 51715*/          /*Scope*/ 11, /*->51727*/
/* 51716*/            OPC_CheckPatternPredicate, 118, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51718*/            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)
/* 51727*/          0, /*End of Scope*/
/* 51728*/        /*SwitchType*/ 38, MVT::f64,// ->51768
/* 51730*/          OPC_Scope, 11, /*->51743*/ // 3 children in Scope
/* 51732*/            OPC_CheckPatternPredicate, 119, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51734*/            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)
/* 51743*/          /*Scope*/ 11, /*->51755*/
/* 51744*/            OPC_CheckPatternPredicate, 120, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51746*/            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)
/* 51755*/          /*Scope*/ 11, /*->51767*/
/* 51756*/            OPC_CheckPatternPredicate, 121, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51758*/            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)
/* 51767*/          0, /*End of Scope*/
/* 51768*/        0, // EndSwitchType
/* 51769*/      0, // EndSwitchOpcode
/* 51770*/    /*Scope*/ 81, /*->51852*/
/* 51771*/      OPC_RecordChild0, // #0 = $fs
/* 51772*/      OPC_SwitchType /*2 cases */, 32, MVT::f32,// ->51807
/* 51775*/        OPC_Scope, 9, /*->51786*/ // 3 children in Scope
/* 51777*/          OPC_CheckPatternPredicate, 122, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat())
/* 51779*/          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)
/* 51786*/        /*Scope*/ 9, /*->51796*/
/* 51787*/          OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51789*/          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)
/* 51796*/        /*Scope*/ 9, /*->51806*/
/* 51797*/          OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51799*/          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)
/* 51806*/        0, /*End of Scope*/
/* 51807*/      /*SwitchType*/ 42, MVT::f64,// ->51851
/* 51809*/        OPC_Scope, 9, /*->51820*/ // 4 children in Scope
/* 51811*/          OPC_CheckPatternPredicate, 113, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 51813*/          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)
/* 51820*/        /*Scope*/ 9, /*->51830*/
/* 51821*/          OPC_CheckPatternPredicate, 114, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 51823*/          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)
/* 51830*/        /*Scope*/ 9, /*->51840*/
/* 51831*/          OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 51833*/          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)
/* 51840*/        /*Scope*/ 9, /*->51850*/
/* 51841*/          OPC_CheckPatternPredicate, 115, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 51843*/          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)
/* 51850*/        0, /*End of Scope*/
/* 51851*/      0, // EndSwitchType
/* 51852*/    0, /*End of Scope*/
/* 51853*/  /*SwitchOpcode*/ 45|128,2/*301*/, TARGET_VAL(ISD::FADD),// ->52158
/* 51857*/    OPC_Scope, 51, /*->51910*/ // 4 children in Scope
/* 51859*/      OPC_MoveChild0,
/* 51860*/      OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51863*/      OPC_RecordChild0, // #0 = $fs
/* 51864*/      OPC_RecordChild1, // #1 = $ft
/* 51865*/      OPC_MoveParent,
/* 51866*/      OPC_RecordChild1, // #2 = $fr
/* 51867*/      OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51881
/* 51870*/        OPC_CheckPatternPredicate, 110, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51872*/        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)
/* 51881*/      /*SwitchType*/ 26, MVT::f64,// ->51909
/* 51883*/        OPC_Scope, 11, /*->51896*/ // 2 children in Scope
/* 51885*/          OPC_CheckPatternPredicate, 111, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51887*/          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)
/* 51896*/        /*Scope*/ 11, /*->51908*/
/* 51897*/          OPC_CheckPatternPredicate, 112, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51899*/          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)
/* 51908*/        0, /*End of Scope*/
/* 51909*/      0, // EndSwitchType
/* 51910*/    /*Scope*/ 51|128,1/*179*/, /*->52091*/
/* 51912*/      OPC_RecordChild0, // #0 = $fr
/* 51913*/      OPC_Scope, 50, /*->51965*/ // 3 children in Scope
/* 51915*/        OPC_MoveChild1,
/* 51916*/        OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51919*/        OPC_RecordChild0, // #1 = $fs
/* 51920*/        OPC_RecordChild1, // #2 = $ft
/* 51921*/        OPC_MoveParent,
/* 51922*/        OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51936
/* 51925*/          OPC_CheckPatternPredicate, 110, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51927*/          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)
/* 51936*/        /*SwitchType*/ 26, MVT::f64,// ->51964
/* 51938*/          OPC_Scope, 11, /*->51951*/ // 2 children in Scope
/* 51940*/            OPC_CheckPatternPredicate, 111, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51942*/            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)
/* 51951*/          /*Scope*/ 11, /*->51963*/
/* 51952*/            OPC_CheckPatternPredicate, 112, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51954*/            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)
/* 51963*/          0, /*End of Scope*/
/* 51964*/        0, // EndSwitchType
/* 51965*/      /*Scope*/ 88, /*->52054*/
/* 51966*/        OPC_RecordChild1, // #1 = $ft
/* 51967*/        OPC_SwitchType /*2 cases */, 35, MVT::f32,// ->52005
/* 51970*/          OPC_Scope, 10, /*->51982*/ // 3 children in Scope
/* 51972*/            OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 51974*/            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)
/* 51982*/          /*Scope*/ 10, /*->51993*/
/* 51983*/            OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51985*/            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)
/* 51993*/          /*Scope*/ 10, /*->52004*/
/* 51994*/            OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51996*/            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)
/* 52004*/          0, /*End of Scope*/
/* 52005*/        /*SwitchType*/ 46, MVT::f64,// ->52053
/* 52007*/          OPC_Scope, 10, /*->52019*/ // 4 children in Scope
/* 52009*/            OPC_CheckPatternPredicate, 113, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52011*/            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)
/* 52019*/          /*Scope*/ 10, /*->52030*/
/* 52020*/            OPC_CheckPatternPredicate, 114, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52022*/            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)
/* 52030*/          /*Scope*/ 10, /*->52041*/
/* 52031*/            OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 52033*/            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)
/* 52041*/          /*Scope*/ 10, /*->52052*/
/* 52042*/            OPC_CheckPatternPredicate, 115, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 52044*/            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)
/* 52052*/          0, /*End of Scope*/
/* 52053*/        0, // EndSwitchType
/* 52054*/      /*Scope*/ 35, /*->52090*/
/* 52055*/        OPC_MoveChild1,
/* 52056*/        OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 52059*/        OPC_RecordChild0, // #1 = $ws
/* 52060*/        OPC_RecordChild1, // #2 = $wt
/* 52061*/        OPC_MoveParent,
/* 52062*/        OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->52076
/* 52065*/          OPC_CheckPatternPredicate, 116, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52067*/          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)
/* 52076*/        /*SwitchType*/ 11, MVT::v2f64,// ->52089
/* 52078*/          OPC_CheckPatternPredicate, 116, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52080*/          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)
/* 52089*/        0, // EndSwitchType
/* 52090*/      0, /*End of Scope*/
/* 52091*/    /*Scope*/ 36, /*->52128*/
/* 52092*/      OPC_MoveChild0,
/* 52093*/      OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 52096*/      OPC_RecordChild0, // #0 = $ws
/* 52097*/      OPC_RecordChild1, // #1 = $wt
/* 52098*/      OPC_MoveParent,
/* 52099*/      OPC_RecordChild1, // #2 = $wd
/* 52100*/      OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->52114
/* 52103*/        OPC_CheckPatternPredicate, 116, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52105*/        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)
/* 52114*/      /*SwitchType*/ 11, MVT::v2f64,// ->52127
/* 52116*/        OPC_CheckPatternPredicate, 116, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52118*/        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)
/* 52127*/      0, // EndSwitchType
/* 52128*/    /*Scope*/ 28, /*->52157*/
/* 52129*/      OPC_RecordChild0, // #0 = $ws
/* 52130*/      OPC_RecordChild1, // #1 = $wt
/* 52131*/      OPC_SwitchType /*2 cases */, 10, MVT::v4f32,// ->52144
/* 52134*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52136*/        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)
/* 52144*/      /*SwitchType*/ 10, MVT::v2f64,// ->52156
/* 52146*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52148*/        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)
/* 52156*/      0, // EndSwitchType
/* 52157*/    0, /*End of Scope*/
/* 52158*/  /*SwitchOpcode*/ 28|128,1/*156*/, TARGET_VAL(ISD::ConstantFP),// ->52318
/* 52162*/    OPC_Scope, 62, /*->52226*/ // 2 children in Scope
/* 52164*/      OPC_CheckPredicate, 63, // Predicate_fpimm0
/* 52166*/      OPC_SwitchType /*2 cases */, 41, MVT::f32,// ->52210
/* 52169*/        OPC_Scope, 12, /*->52183*/ // 3 children in Scope
/* 52171*/          OPC_CheckPatternPredicate, 69, // (Subtarget->hasStandardEncoding())
/* 52173*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 52176*/          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] })
/* 52183*/        /*Scope*/ 12, /*->52196*/
/* 52184*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 52186*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 52189*/          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] })
/* 52196*/        /*Scope*/ 12, /*->52209*/
/* 52197*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 52199*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 52202*/          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] })
/* 52209*/        0, /*End of Scope*/
/* 52210*/      /*SwitchType*/ 13, MVT::f64,// ->52225
/* 52212*/        OPC_CheckPatternPredicate, 123, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (Subtarget->isGP64bit())
/* 52214*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 52218*/        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] })
/* 52225*/      0, // EndSwitchType
/* 52226*/    /*Scope*/ 90, /*->52317*/
/* 52227*/      OPC_CheckPredicate, 64, // Predicate_fpimm0neg
/* 52229*/      OPC_SwitchType /*2 cases */, 62, MVT::f32,// ->52294
/* 52232*/        OPC_Scope, 19, /*->52253*/ // 3 children in Scope
/* 52234*/          OPC_CheckPatternPredicate, 69, // (Subtarget->hasStandardEncoding())
/* 52236*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 52239*/          OPC_EmitNode1, TARGET_VAL(Mips::MTC1), 0,
                        MVT::f32, 1/*#Ops*/, 0,  // Results = #1
/* 52246*/          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] }))
/* 52253*/        /*Scope*/ 19, /*->52273*/
/* 52254*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 52256*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 52259*/          OPC_EmitNode1, TARGET_VAL(Mips::MTC1_MM), 0,
                        MVT::f32, 1/*#Ops*/, 0,  // Results = #1
/* 52266*/          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] }))
/* 52273*/        /*Scope*/ 19, /*->52293*/
/* 52274*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 52276*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 52279*/          OPC_EmitNode1, TARGET_VAL(Mips::MTC1), 0,
                        MVT::f32, 1/*#Ops*/, 0,  // Results = #1
/* 52286*/          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:{ *:[f32] } ZERO:{ *:[i32] }))
/* 52293*/        0, /*End of Scope*/
/* 52294*/      /*SwitchType*/ 20, MVT::f64,// ->52316
/* 52296*/        OPC_CheckPatternPredicate, 123, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (Subtarget->isGP64bit())
/* 52298*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 52302*/        OPC_EmitNode1, TARGET_VAL(Mips::DMTC1), 0,
                      MVT::f64, 1/*#Ops*/, 0,  // Results = #1
/* 52309*/        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] }))
/* 52316*/      0, // EndSwitchType
/* 52317*/    0, /*End of Scope*/
/* 52318*/  /*SwitchOpcode*/ 93, TARGET_VAL(ISD::FABS),// ->52414
/* 52321*/    OPC_RecordChild0, // #0 = $fs
/* 52322*/    OPC_SwitchType /*4 cases */, 22, MVT::f32,// ->52347
/* 52325*/      OPC_Scope, 9, /*->52336*/ // 2 children in Scope
/* 52327*/        OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52329*/        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)
/* 52336*/      /*Scope*/ 9, /*->52346*/
/* 52337*/        OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52339*/        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)
/* 52346*/      0, /*End of Scope*/
/* 52347*/    /*SwitchType*/ 42, MVT::f64,// ->52391
/* 52349*/      OPC_Scope, 9, /*->52360*/ // 4 children in Scope
/* 52351*/        OPC_CheckPatternPredicate, 113, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52353*/        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)
/* 52360*/      /*Scope*/ 9, /*->52370*/
/* 52361*/        OPC_CheckPatternPredicate, 114, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52363*/        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)
/* 52370*/      /*Scope*/ 9, /*->52380*/
/* 52371*/        OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 52373*/        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)
/* 52380*/      /*Scope*/ 9, /*->52390*/
/* 52381*/        OPC_CheckPatternPredicate, 115, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 52383*/        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)
/* 52390*/      0, /*End of Scope*/
/* 52391*/    /*SwitchType*/ 9, MVT::v4f32,// ->52402
/* 52393*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52395*/      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)
/* 52402*/    /*SwitchType*/ 9, MVT::v2f64,// ->52413
/* 52404*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52406*/      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)
/* 52413*/    0, // EndSwitchType
/* 52414*/  /*SwitchOpcode*/ 93, TARGET_VAL(ISD::FSQRT),// ->52510
/* 52417*/    OPC_RecordChild0, // #0 = $fs
/* 52418*/    OPC_SwitchType /*4 cases */, 22, MVT::f32,// ->52443
/* 52421*/      OPC_Scope, 9, /*->52432*/ // 2 children in Scope
/* 52423*/        OPC_CheckPatternPredicate, 124, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52425*/        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)
/* 52432*/      /*Scope*/ 9, /*->52442*/
/* 52433*/        OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52435*/        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)
/* 52442*/      0, /*End of Scope*/
/* 52443*/    /*SwitchType*/ 42, MVT::f64,// ->52487
/* 52445*/      OPC_Scope, 9, /*->52456*/ // 4 children in Scope
/* 52447*/        OPC_CheckPatternPredicate, 19, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52449*/        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)
/* 52456*/      /*Scope*/ 9, /*->52466*/
/* 52457*/        OPC_CheckPatternPredicate, 18, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52459*/        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)
/* 52466*/      /*Scope*/ 9, /*->52476*/
/* 52467*/        OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 52469*/        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)
/* 52476*/      /*Scope*/ 9, /*->52486*/
/* 52477*/        OPC_CheckPatternPredicate, 115, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 52479*/        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)
/* 52486*/      0, /*End of Scope*/
/* 52487*/    /*SwitchType*/ 9, MVT::v4f32,// ->52498
/* 52489*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52491*/      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)
/* 52498*/    /*SwitchType*/ 9, MVT::v2f64,// ->52509
/* 52500*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52502*/      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)
/* 52509*/    0, // EndSwitchType
/* 52510*/  /*SwitchOpcode*/ 113, TARGET_VAL(ISD::FDIV),// ->52626
/* 52513*/    OPC_RecordChild0, // #0 = $fs
/* 52514*/    OPC_RecordChild1, // #1 = $ft
/* 52515*/    OPC_SwitchType /*4 cases */, 35, MVT::f32,// ->52553
/* 52518*/      OPC_Scope, 10, /*->52530*/ // 3 children in Scope
/* 52520*/        OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52522*/        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)
/* 52530*/      /*Scope*/ 10, /*->52541*/
/* 52531*/        OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52533*/        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)
/* 52541*/      /*Scope*/ 10, /*->52552*/
/* 52542*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52544*/        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)
/* 52552*/      0, /*End of Scope*/
/* 52553*/    /*SwitchType*/ 46, MVT::f64,// ->52601
/* 52555*/      OPC_Scope, 10, /*->52567*/ // 4 children in Scope
/* 52557*/        OPC_CheckPatternPredicate, 113, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52559*/        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)
/* 52567*/      /*Scope*/ 10, /*->52578*/
/* 52568*/        OPC_CheckPatternPredicate, 114, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52570*/        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)
/* 52578*/      /*Scope*/ 10, /*->52589*/
/* 52579*/        OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 52581*/        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)
/* 52589*/      /*Scope*/ 10, /*->52600*/
/* 52590*/        OPC_CheckPatternPredicate, 115, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 52592*/        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)
/* 52600*/      0, /*End of Scope*/
/* 52601*/    /*SwitchType*/ 10, MVT::v4f32,// ->52613
/* 52603*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52605*/      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)
/* 52613*/    /*SwitchType*/ 10, MVT::v2f64,// ->52625
/* 52615*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52617*/      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)
/* 52625*/    0, // EndSwitchType
/* 52626*/  /*SwitchOpcode*/ 63|128,1/*191*/, TARGET_VAL(ISD::FMUL),// ->52821
/* 52630*/    OPC_Scope, 125, /*->52757*/ // 3 children in Scope
/* 52632*/      OPC_RecordChild0, // #0 = $fs
/* 52633*/      OPC_Scope, 88, /*->52723*/ // 2 children in Scope
/* 52635*/        OPC_RecordChild1, // #1 = $ft
/* 52636*/        OPC_SwitchType /*2 cases */, 35, MVT::f32,// ->52674
/* 52639*/          OPC_Scope, 10, /*->52651*/ // 3 children in Scope
/* 52641*/            OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52643*/            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)
/* 52651*/          /*Scope*/ 10, /*->52662*/
/* 52652*/            OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52654*/            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)
/* 52662*/          /*Scope*/ 10, /*->52673*/
/* 52663*/            OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52665*/            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)
/* 52673*/          0, /*End of Scope*/
/* 52674*/        /*SwitchType*/ 46, MVT::f64,// ->52722
/* 52676*/          OPC_Scope, 10, /*->52688*/ // 4 children in Scope
/* 52678*/            OPC_CheckPatternPredicate, 113, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52680*/            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)
/* 52688*/          /*Scope*/ 10, /*->52699*/
/* 52689*/            OPC_CheckPatternPredicate, 114, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52691*/            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)
/* 52699*/          /*Scope*/ 10, /*->52710*/
/* 52700*/            OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 52702*/            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)
/* 52710*/          /*Scope*/ 10, /*->52721*/
/* 52711*/            OPC_CheckPatternPredicate, 115, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 52713*/            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)
/* 52721*/          0, /*End of Scope*/
/* 52722*/        0, // EndSwitchType
/* 52723*/      /*Scope*/ 32, /*->52756*/
/* 52724*/        OPC_MoveChild1,
/* 52725*/        OPC_CheckOpcode, TARGET_VAL(ISD::FEXP2),
/* 52728*/        OPC_RecordChild0, // #1 = $wt
/* 52729*/        OPC_MoveParent,
/* 52730*/        OPC_SwitchType /*2 cases */, 10, MVT::v4f32,// ->52743
/* 52733*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52735*/          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)
/* 52743*/        /*SwitchType*/ 10, MVT::v2f64,// ->52755
/* 52745*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52747*/          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)
/* 52755*/        0, // EndSwitchType
/* 52756*/      0, /*End of Scope*/
/* 52757*/    /*Scope*/ 33, /*->52791*/
/* 52758*/      OPC_MoveChild0,
/* 52759*/      OPC_CheckOpcode, TARGET_VAL(ISD::FEXP2),
/* 52762*/      OPC_RecordChild0, // #0 = $wt
/* 52763*/      OPC_MoveParent,
/* 52764*/      OPC_RecordChild1, // #1 = $ws
/* 52765*/      OPC_SwitchType /*2 cases */, 10, MVT::v4f32,// ->52778
/* 52768*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52770*/        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)
/* 52778*/      /*SwitchType*/ 10, MVT::v2f64,// ->52790
/* 52780*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52782*/        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)
/* 52790*/      0, // EndSwitchType
/* 52791*/    /*Scope*/ 28, /*->52820*/
/* 52792*/      OPC_RecordChild0, // #0 = $ws
/* 52793*/      OPC_RecordChild1, // #1 = $wt
/* 52794*/      OPC_SwitchType /*2 cases */, 10, MVT::v4f32,// ->52807
/* 52797*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52799*/        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)
/* 52807*/      /*SwitchType*/ 10, MVT::v2f64,// ->52819
/* 52809*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52811*/        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)
/* 52819*/      0, // EndSwitchType
/* 52820*/    0, /*End of Scope*/
/* 52821*/  /*SwitchOpcode*/ 26, TARGET_VAL(MipsISD::BuildPairF64),// ->52850
/* 52824*/    OPC_RecordChild0, // #0 = $lo
/* 52825*/    OPC_RecordChild1, // #1 = $hi
/* 52826*/    OPC_Scope, 10, /*->52838*/ // 2 children in Scope
/* 52828*/      OPC_CheckPatternPredicate, 85, // (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMips16Mode())
/* 52830*/      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)
/* 52838*/    /*Scope*/ 10, /*->52849*/
/* 52839*/      OPC_CheckPatternPredicate, 86, // (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMips16Mode())
/* 52841*/      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)
/* 52849*/    0, /*End of Scope*/
/* 52850*/  /*SwitchOpcode*/ 107, TARGET_VAL(ISD::SINT_TO_FP),// ->52960
/* 52853*/    OPC_RecordChild0, // #0 = $src
/* 52854*/    OPC_Scope, 37, /*->52893*/ // 4 children in Scope
/* 52856*/      OPC_CheckChild0Type, MVT::i32,
/* 52858*/      OPC_SwitchType /*2 cases */, 7, MVT::f32,// ->52868
/* 52861*/        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)
/* 52868*/      /*SwitchType*/ 22, MVT::f64,// ->52892
/* 52870*/        OPC_Scope, 9, /*->52881*/ // 2 children in Scope
/* 52872*/          OPC_CheckPatternPredicate, 125, // (!Subtarget->isFP64bit())
/* 52874*/          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)
/* 52881*/        /*Scope*/ 9, /*->52891*/
/* 52882*/          OPC_CheckPatternPredicate, 126, // (Subtarget->isFP64bit())
/* 52884*/          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)
/* 52891*/        0, /*End of Scope*/
/* 52892*/      0, // EndSwitchType
/* 52893*/    /*Scope*/ 37, /*->52931*/
/* 52894*/      OPC_CheckChild0Type, MVT::i64,
/* 52896*/      OPC_SwitchType /*2 cases */, 9, MVT::f64,// ->52908
/* 52899*/        OPC_CheckPatternPredicate, 126, // (Subtarget->isFP64bit())
/* 52901*/        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)
/* 52908*/      /*SwitchType*/ 20, MVT::f32,// ->52930
/* 52910*/        OPC_CheckPatternPredicate, 126, // (Subtarget->isFP64bit())
/* 52912*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCVT_S_L), 0,
                      MVT::f64, 1/*#Ops*/, 0,  // Results = #1
/* 52919*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 52922*/        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] })
/* 52930*/      0, // EndSwitchType
/* 52931*/    /*Scope*/ 13, /*->52945*/
/* 52932*/      OPC_CheckChild0Type, MVT::v4i32,
/* 52934*/      OPC_CheckType, MVT::v4f32,
/* 52936*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52938*/      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)
/* 52945*/    /*Scope*/ 13, /*->52959*/
/* 52946*/      OPC_CheckChild0Type, MVT::v2i64,
/* 52948*/      OPC_CheckType, MVT::v2f64,
/* 52950*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52952*/      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)
/* 52959*/    0, /*End of Scope*/
/* 52960*/  /*SwitchOpcode*/ 111, TARGET_VAL(MipsISD::TruncIntFP),// ->53074
/* 52963*/    OPC_RecordChild0, // #0 = $src
/* 52964*/    OPC_Scope, 26, /*->52992*/ // 3 children in Scope
/* 52966*/      OPC_CheckChild0Type, MVT::f32,
/* 52968*/      OPC_SwitchType /*2 cases */, 9, MVT::f32,// ->52980
/* 52971*/        OPC_CheckPatternPredicate, 69, // (Subtarget->hasStandardEncoding())
/* 52973*/        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)
/* 52980*/      /*SwitchType*/ 9, MVT::f64,// ->52991
/* 52982*/        OPC_CheckPatternPredicate, 127, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit())
/* 52984*/        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)
/* 52991*/      0, // EndSwitchType
/* 52992*/    /*Scope*/ 59, /*->53052*/
/* 52993*/      OPC_CheckChild0Type, MVT::f64,
/* 52995*/      OPC_SwitchType /*2 cases */, 42, MVT::f32,// ->53040
/* 52998*/        OPC_Scope, 9, /*->53009*/ // 4 children in Scope
/* 53000*/          OPC_CheckPatternPredicate, 128, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 53002*/          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)
/* 53009*/        /*Scope*/ 9, /*->53019*/
/* 53010*/          OPC_CheckPatternPredicate, 127, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit())
/* 53012*/          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)
/* 53019*/        /*Scope*/ 9, /*->53029*/
/* 53020*/          OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 53022*/          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)
/* 53029*/        /*Scope*/ 9, /*->53039*/
/* 53030*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 53032*/          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)
/* 53039*/        0, /*End of Scope*/
/* 53040*/      /*SwitchType*/ 9, MVT::f64,// ->53051
/* 53042*/        OPC_CheckPatternPredicate, 127, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit())
/* 53044*/        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)
/* 53051*/      0, // EndSwitchType
/* 53052*/    /*Scope*/ 20, /*->53073*/
/* 53053*/      OPC_CheckChild0Type, MVT::f16,
/* 53055*/      OPC_CheckType, MVT::f32,
/* 53057*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53059*/      OPC_EmitNode1, TARGET_VAL(Mips::MSA_FP_EXTEND_D_PSEUDO), 0,
                    MVT::f64, 1/*#Ops*/, 0,  // Results = #1
/* 53066*/      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))
/* 53073*/    0, /*End of Scope*/
/* 53074*/  /*SwitchOpcode*/ 10, TARGET_VAL(MipsISD::MTC1_D64),// ->53087
/* 53077*/    OPC_RecordChild0, // #0 = $src
/* 53078*/    OPC_CheckPatternPredicate, 129, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit())
/* 53080*/    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)
/* 53087*/  /*SwitchOpcode*/ 75, TARGET_VAL(ISD::FP_ROUND),// ->53165
/* 53090*/    OPC_RecordChild0, // #0 = $src
/* 53091*/    OPC_SwitchType /*2 cases */, 42, MVT::f32,// ->53136
/* 53094*/      OPC_Scope, 9, /*->53105*/ // 4 children in Scope
/* 53096*/        OPC_CheckPatternPredicate, 2, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 53098*/        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)
/* 53105*/      /*Scope*/ 9, /*->53115*/
/* 53106*/        OPC_CheckPatternPredicate, 1, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 53108*/        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)
/* 53115*/      /*Scope*/ 9, /*->53125*/
/* 53116*/        OPC_CheckPatternPredicate, 130, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit())
/* 53118*/        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)
/* 53125*/      /*Scope*/ 9, /*->53135*/
/* 53126*/        OPC_CheckPatternPredicate, 3, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit())
/* 53128*/        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)
/* 53135*/      0, /*End of Scope*/
/* 53136*/    /*SwitchType*/ 26, MVT::f16,// ->53164
/* 53138*/      OPC_Scope, 11, /*->53151*/ // 2 children in Scope
/* 53140*/        OPC_CheckChild0Type, MVT::f32,
/* 53142*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 53144*/        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)
/* 53151*/      /*Scope*/ 11, /*->53163*/
/* 53152*/        OPC_CheckChild0Type, MVT::f64,
/* 53154*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 53156*/        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)
/* 53163*/      0, /*End of Scope*/
/* 53164*/    0, // EndSwitchType
/* 53165*/  /*SwitchOpcode*/ 75, TARGET_VAL(ISD::FP_EXTEND),// ->53243
/* 53168*/    OPC_RecordChild0, // #0 = $src
/* 53169*/    OPC_SwitchType /*2 cases */, 59, MVT::f64,// ->53231
/* 53172*/      OPC_Scope, 44, /*->53218*/ // 2 children in Scope
/* 53174*/        OPC_CheckChild0Type, MVT::f32,
/* 53176*/        OPC_Scope, 9, /*->53187*/ // 4 children in Scope
/* 53178*/          OPC_CheckPatternPredicate, 2, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 53180*/          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)
/* 53187*/        /*Scope*/ 9, /*->53197*/
/* 53188*/          OPC_CheckPatternPredicate, 1, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 53190*/          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)
/* 53197*/        /*Scope*/ 9, /*->53207*/
/* 53198*/          OPC_CheckPatternPredicate, 130, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit())
/* 53200*/          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)
/* 53207*/        /*Scope*/ 9, /*->53217*/
/* 53208*/          OPC_CheckPatternPredicate, 3, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit())
/* 53210*/          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)
/* 53217*/        0, /*End of Scope*/
/* 53218*/      /*Scope*/ 11, /*->53230*/
/* 53219*/        OPC_CheckChild0Type, MVT::f16,
/* 53221*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 53223*/        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)
/* 53230*/      0, /*End of Scope*/
/* 53231*/    /*SwitchType*/ 9, MVT::f32,// ->53242
/* 53233*/      OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 53235*/      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)
/* 53242*/    0, // EndSwitchType
/* 53243*/  /*SwitchOpcode*/ 33, TARGET_VAL(MipsISD::FSELECT),// ->53279
/* 53246*/    OPC_RecordChild0, // #0 = $fd_in
/* 53247*/    OPC_CheckChild0Type, MVT::f64,
/* 53249*/    OPC_RecordChild1, // #1 = $ft
/* 53250*/    OPC_RecordChild2, // #2 = $fs
/* 53251*/    OPC_CheckType, MVT::f64,
/* 53253*/    OPC_Scope, 11, /*->53266*/ // 2 children in Scope
/* 53255*/      OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 53257*/      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)
/* 53266*/    /*Scope*/ 11, /*->53278*/
/* 53267*/      OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 53269*/      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)
/* 53278*/    0, /*End of Scope*/
/* 53279*/  /*SwitchOpcode*/ 124|128,2/*380*/, TARGET_VAL(MipsISD::VSHF),// ->53663
/* 53283*/    OPC_Scope, 88, /*->53373*/ // 4 children in Scope
/* 53285*/      OPC_MoveChild0,
/* 53286*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 53289*/      OPC_MoveChild0,
/* 53290*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 53293*/      OPC_MoveChild0,
/* 53294*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 53297*/      OPC_Scope, 36, /*->53335*/ // 2 children in Scope
/* 53299*/        OPC_RecordChild0, // #0 = $rt
/* 53300*/        OPC_CheckChild0Type, MVT::i32,
/* 53302*/        OPC_CheckChild1Same, 0,
/* 53304*/        OPC_CheckChild2Same, 0,
/* 53306*/        OPC_CheckChild3Same, 0,
/* 53308*/        OPC_MoveParent,
/* 53309*/        OPC_MoveChild1,
/* 53310*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 53313*/        OPC_MoveParent,
/* 53314*/        OPC_CheckType, MVT::v4i32,
/* 53316*/        OPC_MoveParent,
/* 53317*/        OPC_CheckType, MVT::v2i64,
/* 53319*/        OPC_MoveParent,
/* 53320*/        OPC_RecordChild1, // #1 = $ws
/* 53321*/        OPC_CheckChild2Same, 1,
/* 53323*/        OPC_CheckType, MVT::v2i64,
/* 53325*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53327*/        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)
/* 53335*/      /*Scope*/ 36, /*->53372*/
/* 53336*/        OPC_MoveParent,
/* 53337*/        OPC_MoveChild1,
/* 53338*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 53341*/        OPC_RecordChild0, // #0 = $rt
/* 53342*/        OPC_CheckChild0Type, MVT::i32,
/* 53344*/        OPC_CheckChild1Same, 0,
/* 53346*/        OPC_CheckChild2Same, 0,
/* 53348*/        OPC_CheckChild3Same, 0,
/* 53350*/        OPC_MoveParent,
/* 53351*/        OPC_CheckType, MVT::v4i32,
/* 53353*/        OPC_MoveParent,
/* 53354*/        OPC_CheckType, MVT::v2i64,
/* 53356*/        OPC_MoveParent,
/* 53357*/        OPC_RecordChild1, // #1 = $ws
/* 53358*/        OPC_CheckChild2Same, 1,
/* 53360*/        OPC_CheckType, MVT::v2i64,
/* 53362*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53364*/        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)
/* 53372*/      0, /*End of Scope*/
/* 53373*/    /*Scope*/ 83, /*->53457*/
/* 53374*/      OPC_RecordChild0, // #0 = $n
/* 53375*/      OPC_SwitchType /*4 cases */, 18, MVT::v16i8,// ->53396
/* 53378*/        OPC_CheckChild0Type, MVT::v16i8,
/* 53380*/        OPC_RecordChild1, // #1 = $ws
/* 53381*/        OPC_CheckChild2Same, 1,
/* 53383*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53385*/        OPC_CheckComplexPat, /*CP*/27, /*#*/0, // selectVSplatUimm4:$n #2
/* 53388*/        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)
/* 53396*/      /*SwitchType*/ 18, MVT::v8i16,// ->53416
/* 53398*/        OPC_CheckChild0Type, MVT::v8i16,
/* 53400*/        OPC_RecordChild1, // #1 = $ws
/* 53401*/        OPC_CheckChild2Same, 1,
/* 53403*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53405*/        OPC_CheckComplexPat, /*CP*/28, /*#*/0, // selectVSplatUimm3:$n #2
/* 53408*/        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)
/* 53416*/      /*SwitchType*/ 18, MVT::v4i32,// ->53436
/* 53418*/        OPC_CheckChild0Type, MVT::v4i32,
/* 53420*/        OPC_RecordChild1, // #1 = $ws
/* 53421*/        OPC_CheckChild2Same, 1,
/* 53423*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53425*/        OPC_CheckComplexPat, /*CP*/29, /*#*/0, // selectVSplatUimm2:$n #2
/* 53428*/        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)
/* 53436*/      /*SwitchType*/ 18, MVT::v2i64,// ->53456
/* 53438*/        OPC_CheckChild0Type, MVT::v2i64,
/* 53440*/        OPC_RecordChild1, // #1 = $ws
/* 53441*/        OPC_CheckChild2Same, 1,
/* 53443*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53445*/        OPC_CheckComplexPat, /*CP*/30, /*#*/0, // selectVSplatUimm1:$n #2
/* 53448*/        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)
/* 53456*/      0, // EndSwitchType
/* 53457*/    /*Scope*/ 3|128,1/*131*/, /*->53590*/
/* 53459*/      OPC_MoveChild0,
/* 53460*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 53463*/      OPC_RecordChild0, // #0 = $rt
/* 53464*/      OPC_CheckChild0Type, MVT::i32,
/* 53466*/      OPC_CheckChild1Same, 0,
/* 53468*/      OPC_CheckChild2Same, 0,
/* 53470*/      OPC_CheckChild3Same, 0,
/* 53472*/      OPC_Scope, 96, /*->53570*/ // 2 children in Scope
/* 53474*/        OPC_MoveChild4,
/* 53475*/        OPC_CheckSame, 0,
/* 53477*/        OPC_MoveParent,
/* 53478*/        OPC_MoveChild5,
/* 53479*/        OPC_CheckSame, 0,
/* 53481*/        OPC_MoveParent,
/* 53482*/        OPC_MoveChild6,
/* 53483*/        OPC_CheckSame, 0,
/* 53485*/        OPC_MoveParent,
/* 53486*/        OPC_MoveChild7,
/* 53487*/        OPC_CheckSame, 0,
/* 53489*/        OPC_MoveParent,
/* 53490*/        OPC_Scope, 58, /*->53550*/ // 2 children in Scope
/* 53492*/          OPC_MoveChild, 8,
/* 53494*/          OPC_CheckSame, 0,
/* 53496*/          OPC_MoveParent,
/* 53497*/          OPC_MoveChild, 9,
/* 53499*/          OPC_CheckSame, 0,
/* 53501*/          OPC_MoveParent,
/* 53502*/          OPC_MoveChild, 10,
/* 53504*/          OPC_CheckSame, 0,
/* 53506*/          OPC_MoveParent,
/* 53507*/          OPC_MoveChild, 11,
/* 53509*/          OPC_CheckSame, 0,
/* 53511*/          OPC_MoveParent,
/* 53512*/          OPC_MoveChild, 12,
/* 53514*/          OPC_CheckSame, 0,
/* 53516*/          OPC_MoveParent,
/* 53517*/          OPC_MoveChild, 13,
/* 53519*/          OPC_CheckSame, 0,
/* 53521*/          OPC_MoveParent,
/* 53522*/          OPC_MoveChild, 14,
/* 53524*/          OPC_CheckSame, 0,
/* 53526*/          OPC_MoveParent,
/* 53527*/          OPC_MoveChild, 15,
/* 53529*/          OPC_CheckSame, 0,
/* 53531*/          OPC_MoveParent,
/* 53532*/          OPC_CheckType, MVT::v16i8,
/* 53534*/          OPC_MoveParent,
/* 53535*/          OPC_RecordChild1, // #1 = $ws
/* 53536*/          OPC_CheckChild2Same, 1,
/* 53538*/          OPC_CheckType, MVT::v16i8,
/* 53540*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53542*/          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)
/* 53550*/        /*Scope*/ 18, /*->53569*/
/* 53551*/          OPC_CheckType, MVT::v8i16,
/* 53553*/          OPC_MoveParent,
/* 53554*/          OPC_RecordChild1, // #1 = $ws
/* 53555*/          OPC_CheckChild2Same, 1,
/* 53557*/          OPC_CheckType, MVT::v8i16,
/* 53559*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53561*/          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)
/* 53569*/        0, /*End of Scope*/
/* 53570*/      /*Scope*/ 18, /*->53589*/
/* 53571*/        OPC_CheckType, MVT::v4i32,
/* 53573*/        OPC_MoveParent,
/* 53574*/        OPC_RecordChild1, // #1 = $ws
/* 53575*/        OPC_CheckChild2Same, 1,
/* 53577*/        OPC_CheckType, MVT::v4i32,
/* 53579*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53581*/        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)
/* 53589*/      0, /*End of Scope*/
/* 53590*/    /*Scope*/ 71, /*->53662*/
/* 53591*/      OPC_RecordChild0, // #0 = $wd_in
/* 53592*/      OPC_SwitchType /*4 cases */, 15, MVT::v16i8,// ->53610
/* 53595*/        OPC_CheckChild0Type, MVT::v16i8,
/* 53597*/        OPC_RecordChild1, // #1 = $ws
/* 53598*/        OPC_RecordChild2, // #2 = $wt
/* 53599*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53601*/        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)
/* 53610*/      /*SwitchType*/ 15, MVT::v8i16,// ->53627
/* 53612*/        OPC_CheckChild0Type, MVT::v8i16,
/* 53614*/        OPC_RecordChild1, // #1 = $ws
/* 53615*/        OPC_RecordChild2, // #2 = $wt
/* 53616*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53618*/        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)
/* 53627*/      /*SwitchType*/ 15, MVT::v4i32,// ->53644
/* 53629*/        OPC_CheckChild0Type, MVT::v4i32,
/* 53631*/        OPC_RecordChild1, // #1 = $ws
/* 53632*/        OPC_RecordChild2, // #2 = $wt
/* 53633*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53635*/        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)
/* 53644*/      /*SwitchType*/ 15, MVT::v2i64,// ->53661
/* 53646*/        OPC_CheckChild0Type, MVT::v2i64,
/* 53648*/        OPC_RecordChild1, // #1 = $ws
/* 53649*/        OPC_RecordChild2, // #2 = $wt
/* 53650*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53652*/        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)
/* 53661*/      0, // EndSwitchType
/* 53662*/    0, /*End of Scope*/
/* 53663*/  /*SwitchOpcode*/ 4|128,1/*132*/, TARGET_VAL(MipsISD::INSVE),// ->53799
/* 53667*/    OPC_RecordChild0, // #0 = $wd_in
/* 53668*/    OPC_RecordChild1, // #1 = $n
/* 53669*/    OPC_MoveChild1,
/* 53670*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 53673*/    OPC_Scope, 30, /*->53705*/ // 4 children in Scope
/* 53675*/      OPC_CheckPredicate, 31, // Predicate_immZExt4
/* 53677*/      OPC_MoveParent,
/* 53678*/      OPC_RecordChild2, // #2 = $ws
/* 53679*/      OPC_RecordChild3, // #3 = $n2
/* 53680*/      OPC_MoveChild3,
/* 53681*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 53684*/      OPC_CheckPredicate, 22, // Predicate_immz
/* 53686*/      OPC_MoveParent,
/* 53687*/      OPC_CheckType, MVT::v16i8,
/* 53689*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53691*/      OPC_EmitConvertToTarget, 1,
/* 53693*/      OPC_EmitConvertToTarget, 3,
/* 53695*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::INSVE_B), 0,
                    MVT::v16i8, 4/*#Ops*/, 0, 4, 2, 5, 
                // Src: (MipsINSVE:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, (imm:{ *:[i32] })<<P:Predicate_immZExt4>>:$n, MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immz>>:$n2) - Complexity = 11
                // Dst: (INSVE_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$wd_in, (imm:{ *:[i32] }):$n, MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[i32] }):$n2)
/* 53705*/    /*Scope*/ 30, /*->53736*/
/* 53706*/      OPC_CheckPredicate, 32, // Predicate_immZExt3
/* 53708*/      OPC_MoveParent,
/* 53709*/      OPC_RecordChild2, // #2 = $ws
/* 53710*/      OPC_RecordChild3, // #3 = $n2
/* 53711*/      OPC_MoveChild3,
/* 53712*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 53715*/      OPC_CheckPredicate, 22, // Predicate_immz
/* 53717*/      OPC_MoveParent,
/* 53718*/      OPC_CheckType, MVT::v8i16,
/* 53720*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53722*/      OPC_EmitConvertToTarget, 1,
/* 53724*/      OPC_EmitConvertToTarget, 3,
/* 53726*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::INSVE_H), 0,
                    MVT::v8i16, 4/*#Ops*/, 0, 4, 2, 5, 
                // Src: (MipsINSVE:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, (imm:{ *:[i32] })<<P:Predicate_immZExt3>>:$n, MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immz>>:$n2) - Complexity = 11
                // Dst: (INSVE_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$wd_in, (imm:{ *:[i32] }):$n, MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[i32] }):$n2)
/* 53736*/    /*Scope*/ 30, /*->53767*/
/* 53737*/      OPC_CheckPredicate, 33, // Predicate_immZExt2
/* 53739*/      OPC_MoveParent,
/* 53740*/      OPC_RecordChild2, // #2 = $ws
/* 53741*/      OPC_RecordChild3, // #3 = $n2
/* 53742*/      OPC_MoveChild3,
/* 53743*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 53746*/      OPC_CheckPredicate, 22, // Predicate_immz
/* 53748*/      OPC_MoveParent,
/* 53749*/      OPC_CheckType, MVT::v4i32,
/* 53751*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53753*/      OPC_EmitConvertToTarget, 1,
/* 53755*/      OPC_EmitConvertToTarget, 3,
/* 53757*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::INSVE_W), 0,
                    MVT::v4i32, 4/*#Ops*/, 0, 4, 2, 5, 
                // Src: (MipsINSVE:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, (imm:{ *:[i32] })<<P:Predicate_immZExt2>>:$n, MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immz>>:$n2) - Complexity = 11
                // Dst: (INSVE_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$wd_in, (imm:{ *:[i32] }):$n, MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[i32] }):$n2)
/* 53767*/    /*Scope*/ 30, /*->53798*/
/* 53768*/      OPC_CheckPredicate, 37, // Predicate_immZExt1
/* 53770*/      OPC_MoveParent,
/* 53771*/      OPC_RecordChild2, // #2 = $ws
/* 53772*/      OPC_RecordChild3, // #3 = $n2
/* 53773*/      OPC_MoveChild3,
/* 53774*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 53777*/      OPC_CheckPredicate, 22, // Predicate_immz
/* 53779*/      OPC_MoveParent,
/* 53780*/      OPC_CheckType, MVT::v2i64,
/* 53782*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53784*/      OPC_EmitConvertToTarget, 1,
/* 53786*/      OPC_EmitConvertToTarget, 3,
/* 53788*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::INSVE_D), 0,
                    MVT::v2i64, 4/*#Ops*/, 0, 4, 2, 5, 
                // Src: (MipsINSVE:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, (imm:{ *:[i32] })<<P:Predicate_immZExt1>>:$n, MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[i32] })<<P:Predicate_immz>>:$n2) - Complexity = 11
                // Dst: (INSVE_D:{ *:[v2i64] } MSA128DOpnd:{ *:[v2i64] }:$wd_in, (imm:{ *:[i32] }):$n, MSA128DOpnd:{ *:[v2i64] }:$ws, (imm:{ *:[i32] }):$n2)
/* 53798*/    0, /*End of Scope*/
/* 53799*/  /*SwitchOpcode*/ 64|128,2/*320*/, TARGET_VAL(ISD::VSELECT),// ->54123
/* 53803*/    OPC_RecordChild0, // #0 = $m
/* 53804*/    OPC_Scope, 36, /*->53842*/ // 9 children in Scope
/* 53806*/      OPC_RecordChild1, // #1 = $ws
/* 53807*/      OPC_RecordChild2, // #2 = $wd_in
/* 53808*/      OPC_SwitchType /*2 cases */, 14, MVT::v16i8,// ->53825
/* 53811*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53813*/        OPC_CheckComplexPat, /*CP*/31, /*#*/0, // selectVSplatMaskL:$m #3
/* 53816*/        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)
/* 53825*/      /*SwitchType*/ 14, MVT::v8i16,// ->53841
/* 53827*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53829*/        OPC_CheckComplexPat, /*CP*/32, /*#*/0, // selectVSplatMaskL:$m #3
/* 53832*/        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)
/* 53841*/      0, // EndSwitchType
/* 53842*/    /*Scope*/ 20, /*->53863*/
/* 53843*/      OPC_CheckChild0Type, MVT::v4i32,
/* 53845*/      OPC_RecordChild1, // #1 = $ws
/* 53846*/      OPC_RecordChild2, // #2 = $wd_in
/* 53847*/      OPC_CheckType, MVT::v4i32,
/* 53849*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53851*/      OPC_CheckComplexPat, /*CP*/33, /*#*/0, // selectVSplatMaskL:$m #3
/* 53854*/      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)
/* 53863*/    /*Scope*/ 20, /*->53884*/
/* 53864*/      OPC_CheckChild0Type, MVT::v2i64,
/* 53866*/      OPC_RecordChild1, // #1 = $ws
/* 53867*/      OPC_RecordChild2, // #2 = $wd_in
/* 53868*/      OPC_CheckType, MVT::v2i64,
/* 53870*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53872*/      OPC_CheckComplexPat, /*CP*/34, /*#*/0, // selectVSplatMaskL:$m #3
/* 53875*/      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)
/* 53884*/    /*Scope*/ 36, /*->53921*/
/* 53885*/      OPC_RecordChild1, // #1 = $ws
/* 53886*/      OPC_RecordChild2, // #2 = $wd_in
/* 53887*/      OPC_SwitchType /*2 cases */, 14, MVT::v16i8,// ->53904
/* 53890*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53892*/        OPC_CheckComplexPat, /*CP*/35, /*#*/0, // selectVSplatMaskR:$m #3
/* 53895*/        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)
/* 53904*/      /*SwitchType*/ 14, MVT::v8i16,// ->53920
/* 53906*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53908*/        OPC_CheckComplexPat, /*CP*/36, /*#*/0, // selectVSplatMaskR:$m #3
/* 53911*/        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)
/* 53920*/      0, // EndSwitchType
/* 53921*/    /*Scope*/ 20, /*->53942*/
/* 53922*/      OPC_CheckChild0Type, MVT::v4i32,
/* 53924*/      OPC_RecordChild1, // #1 = $ws
/* 53925*/      OPC_RecordChild2, // #2 = $wd_in
/* 53926*/      OPC_CheckType, MVT::v4i32,
/* 53928*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53930*/      OPC_CheckComplexPat, /*CP*/37, /*#*/0, // selectVSplatMaskR:$m #3
/* 53933*/      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)
/* 53942*/    /*Scope*/ 20, /*->53963*/
/* 53943*/      OPC_CheckChild0Type, MVT::v2i64,
/* 53945*/      OPC_RecordChild1, // #1 = $ws
/* 53946*/      OPC_RecordChild2, // #2 = $wd_in
/* 53947*/      OPC_CheckType, MVT::v2i64,
/* 53949*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53951*/      OPC_CheckComplexPat, /*CP*/38, /*#*/0, // selectVSplatMaskR:$m #3
/* 53954*/      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)
/* 53963*/    /*Scope*/ 92, /*->54056*/
/* 53964*/      OPC_RecordChild1, // #1 = $ws
/* 53965*/      OPC_RecordChild2, // #2 = $wd_in
/* 53966*/      OPC_SwitchType /*2 cases */, 73, MVT::v16i8,// ->54042
/* 53969*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53971*/        OPC_Scope, 25, /*->53998*/ // 5 children in Scope
/* 53973*/          OPC_CheckComplexPat, /*CP*/14, /*#*/0, // selectVSplatUimm8:$u8 #3
/* 53976*/          OPC_Scope, 9, /*->53987*/ // 2 children in Scope
/* 53978*/            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)
/* 53987*/          /*Scope*/ 9, /*->53997*/
/* 53988*/            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)
/* 53997*/          0, /*End of Scope*/
/* 53998*/        /*Scope*/ 12, /*->54011*/
/* 53999*/          OPC_CheckComplexPat, /*CP*/14, /*#*/1, // selectVSplatUimm8:$u8 #3
/* 54002*/          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)
/* 54011*/        /*Scope*/ 9, /*->54021*/
/* 54012*/          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)
/* 54021*/        /*Scope*/ 9, /*->54031*/
/* 54022*/          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)
/* 54031*/        /*Scope*/ 9, /*->54041*/
/* 54032*/          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)
/* 54041*/        0, /*End of Scope*/
/* 54042*/      /*SwitchType*/ 11, MVT::v8i16,// ->54055
/* 54044*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54046*/        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)
/* 54055*/      0, // EndSwitchType
/* 54056*/    /*Scope*/ 32, /*->54089*/
/* 54057*/      OPC_CheckChild0Type, MVT::v4i32,
/* 54059*/      OPC_RecordChild1, // #1 = $wt
/* 54060*/      OPC_RecordChild2, // #2 = $ws
/* 54061*/      OPC_SwitchType /*2 cases */, 11, MVT::v4i32,// ->54075
/* 54064*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54066*/        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)
/* 54075*/      /*SwitchType*/ 11, MVT::v4f32,// ->54088
/* 54077*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54079*/        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)
/* 54088*/      0, // EndSwitchType
/* 54089*/    /*Scope*/ 32, /*->54122*/
/* 54090*/      OPC_CheckChild0Type, MVT::v2i64,
/* 54092*/      OPC_RecordChild1, // #1 = $wt
/* 54093*/      OPC_RecordChild2, // #2 = $ws
/* 54094*/      OPC_SwitchType /*2 cases */, 11, MVT::v2i64,// ->54108
/* 54097*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54099*/        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)
/* 54108*/      /*SwitchType*/ 11, MVT::v2f64,// ->54121
/* 54110*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54112*/        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)
/* 54121*/      0, // EndSwitchType
/* 54122*/    0, /*End of Scope*/
/* 54123*/  /*SwitchOpcode*/ 32|128,1/*160*/, TARGET_VAL(ISD::SMAX),// ->54287
/* 54127*/    OPC_RecordChild0, // #0 = $ws
/* 54128*/    OPC_RecordChild1, // #1 = $imm
/* 54129*/    OPC_SwitchType /*4 cases */, 37, MVT::v16i8,// ->54169
/* 54132*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54134*/      OPC_Scope, 11, /*->54147*/ // 3 children in Scope
/* 54136*/        OPC_CheckComplexPat, /*CP*/20, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54139*/        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)
/* 54147*/      /*Scope*/ 11, /*->54159*/
/* 54148*/        OPC_CheckComplexPat, /*CP*/20, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54151*/        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)
/* 54159*/      /*Scope*/ 8, /*->54168*/
/* 54160*/        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)
/* 54168*/      0, /*End of Scope*/
/* 54169*/    /*SwitchType*/ 37, MVT::v8i16,// ->54208
/* 54171*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54173*/      OPC_Scope, 11, /*->54186*/ // 3 children in Scope
/* 54175*/        OPC_CheckComplexPat, /*CP*/21, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54178*/        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)
/* 54186*/      /*Scope*/ 11, /*->54198*/
/* 54187*/        OPC_CheckComplexPat, /*CP*/21, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54190*/        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)
/* 54198*/      /*Scope*/ 8, /*->54207*/
/* 54199*/        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)
/* 54207*/      0, /*End of Scope*/
/* 54208*/    /*SwitchType*/ 37, MVT::v4i32,// ->54247
/* 54210*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54212*/      OPC_Scope, 11, /*->54225*/ // 3 children in Scope
/* 54214*/        OPC_CheckComplexPat, /*CP*/22, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54217*/        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)
/* 54225*/      /*Scope*/ 11, /*->54237*/
/* 54226*/        OPC_CheckComplexPat, /*CP*/22, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54229*/        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)
/* 54237*/      /*Scope*/ 8, /*->54246*/
/* 54238*/        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)
/* 54246*/      0, /*End of Scope*/
/* 54247*/    /*SwitchType*/ 37, MVT::v2i64,// ->54286
/* 54249*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54251*/      OPC_Scope, 11, /*->54264*/ // 3 children in Scope
/* 54253*/        OPC_CheckComplexPat, /*CP*/23, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54256*/        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)
/* 54264*/      /*Scope*/ 11, /*->54276*/
/* 54265*/        OPC_CheckComplexPat, /*CP*/23, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54268*/        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)
/* 54276*/      /*Scope*/ 8, /*->54285*/
/* 54277*/        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)
/* 54285*/      0, /*End of Scope*/
/* 54286*/    0, // EndSwitchType
/* 54287*/  /*SwitchOpcode*/ 32|128,1/*160*/, TARGET_VAL(ISD::UMAX),// ->54451
/* 54291*/    OPC_RecordChild0, // #0 = $ws
/* 54292*/    OPC_RecordChild1, // #1 = $imm
/* 54293*/    OPC_SwitchType /*4 cases */, 37, MVT::v16i8,// ->54333
/* 54296*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54298*/      OPC_Scope, 11, /*->54311*/ // 3 children in Scope
/* 54300*/        OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54303*/        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)
/* 54311*/      /*Scope*/ 11, /*->54323*/
/* 54312*/        OPC_CheckComplexPat, /*CP*/16, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54315*/        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)
/* 54323*/      /*Scope*/ 8, /*->54332*/
/* 54324*/        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)
/* 54332*/      0, /*End of Scope*/
/* 54333*/    /*SwitchType*/ 37, MVT::v8i16,// ->54372
/* 54335*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54337*/      OPC_Scope, 11, /*->54350*/ // 3 children in Scope
/* 54339*/        OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54342*/        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)
/* 54350*/      /*Scope*/ 11, /*->54362*/
/* 54351*/        OPC_CheckComplexPat, /*CP*/17, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54354*/        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)
/* 54362*/      /*Scope*/ 8, /*->54371*/
/* 54363*/        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)
/* 54371*/      0, /*End of Scope*/
/* 54372*/    /*SwitchType*/ 37, MVT::v4i32,// ->54411
/* 54374*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54376*/      OPC_Scope, 11, /*->54389*/ // 3 children in Scope
/* 54378*/        OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54381*/        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)
/* 54389*/      /*Scope*/ 11, /*->54401*/
/* 54390*/        OPC_CheckComplexPat, /*CP*/18, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54393*/        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)
/* 54401*/      /*Scope*/ 8, /*->54410*/
/* 54402*/        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)
/* 54410*/      0, /*End of Scope*/
/* 54411*/    /*SwitchType*/ 37, MVT::v2i64,// ->54450
/* 54413*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54415*/      OPC_Scope, 11, /*->54428*/ // 3 children in Scope
/* 54417*/        OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54420*/        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)
/* 54428*/      /*Scope*/ 11, /*->54440*/
/* 54429*/        OPC_CheckComplexPat, /*CP*/19, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54432*/        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)
/* 54440*/      /*Scope*/ 8, /*->54449*/
/* 54441*/        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)
/* 54449*/      0, /*End of Scope*/
/* 54450*/    0, // EndSwitchType
/* 54451*/  /*SwitchOpcode*/ 32|128,1/*160*/, TARGET_VAL(ISD::SMIN),// ->54615
/* 54455*/    OPC_RecordChild0, // #0 = $ws
/* 54456*/    OPC_RecordChild1, // #1 = $imm
/* 54457*/    OPC_SwitchType /*4 cases */, 37, MVT::v16i8,// ->54497
/* 54460*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54462*/      OPC_Scope, 11, /*->54475*/ // 3 children in Scope
/* 54464*/        OPC_CheckComplexPat, /*CP*/20, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54467*/        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)
/* 54475*/      /*Scope*/ 11, /*->54487*/
/* 54476*/        OPC_CheckComplexPat, /*CP*/20, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54479*/        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)
/* 54487*/      /*Scope*/ 8, /*->54496*/
/* 54488*/        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)
/* 54496*/      0, /*End of Scope*/
/* 54497*/    /*SwitchType*/ 37, MVT::v8i16,// ->54536
/* 54499*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54501*/      OPC_Scope, 11, /*->54514*/ // 3 children in Scope
/* 54503*/        OPC_CheckComplexPat, /*CP*/21, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54506*/        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)
/* 54514*/      /*Scope*/ 11, /*->54526*/
/* 54515*/        OPC_CheckComplexPat, /*CP*/21, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54518*/        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)
/* 54526*/      /*Scope*/ 8, /*->54535*/
/* 54527*/        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)
/* 54535*/      0, /*End of Scope*/
/* 54536*/    /*SwitchType*/ 37, MVT::v4i32,// ->54575
/* 54538*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54540*/      OPC_Scope, 11, /*->54553*/ // 3 children in Scope
/* 54542*/        OPC_CheckComplexPat, /*CP*/22, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54545*/        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)
/* 54553*/      /*Scope*/ 11, /*->54565*/
/* 54554*/        OPC_CheckComplexPat, /*CP*/22, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54557*/        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)
/* 54565*/      /*Scope*/ 8, /*->54574*/
/* 54566*/        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)
/* 54574*/      0, /*End of Scope*/
/* 54575*/    /*SwitchType*/ 37, MVT::v2i64,// ->54614
/* 54577*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54579*/      OPC_Scope, 11, /*->54592*/ // 3 children in Scope
/* 54581*/        OPC_CheckComplexPat, /*CP*/23, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54584*/        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)
/* 54592*/      /*Scope*/ 11, /*->54604*/
/* 54593*/        OPC_CheckComplexPat, /*CP*/23, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54596*/        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)
/* 54604*/      /*Scope*/ 8, /*->54613*/
/* 54605*/        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)
/* 54613*/      0, /*End of Scope*/
/* 54614*/    0, // EndSwitchType
/* 54615*/  /*SwitchOpcode*/ 32|128,1/*160*/, TARGET_VAL(ISD::UMIN),// ->54779
/* 54619*/    OPC_RecordChild0, // #0 = $ws
/* 54620*/    OPC_RecordChild1, // #1 = $imm
/* 54621*/    OPC_SwitchType /*4 cases */, 37, MVT::v16i8,// ->54661
/* 54624*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54626*/      OPC_Scope, 11, /*->54639*/ // 3 children in Scope
/* 54628*/        OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54631*/        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)
/* 54639*/      /*Scope*/ 11, /*->54651*/
/* 54640*/        OPC_CheckComplexPat, /*CP*/16, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54643*/        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)
/* 54651*/      /*Scope*/ 8, /*->54660*/
/* 54652*/        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)
/* 54660*/      0, /*End of Scope*/
/* 54661*/    /*SwitchType*/ 37, MVT::v8i16,// ->54700
/* 54663*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54665*/      OPC_Scope, 11, /*->54678*/ // 3 children in Scope
/* 54667*/        OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54670*/        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)
/* 54678*/      /*Scope*/ 11, /*->54690*/
/* 54679*/        OPC_CheckComplexPat, /*CP*/17, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54682*/        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)
/* 54690*/      /*Scope*/ 8, /*->54699*/
/* 54691*/        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)
/* 54699*/      0, /*End of Scope*/
/* 54700*/    /*SwitchType*/ 37, MVT::v4i32,// ->54739
/* 54702*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54704*/      OPC_Scope, 11, /*->54717*/ // 3 children in Scope
/* 54706*/        OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54709*/        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)
/* 54717*/      /*Scope*/ 11, /*->54729*/
/* 54718*/        OPC_CheckComplexPat, /*CP*/18, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54721*/        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)
/* 54729*/      /*Scope*/ 8, /*->54738*/
/* 54730*/        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)
/* 54738*/      0, /*End of Scope*/
/* 54739*/    /*SwitchType*/ 37, MVT::v2i64,// ->54778
/* 54741*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54743*/      OPC_Scope, 11, /*->54756*/ // 3 children in Scope
/* 54745*/        OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54748*/        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)
/* 54756*/      /*Scope*/ 11, /*->54768*/
/* 54757*/        OPC_CheckComplexPat, /*CP*/19, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54760*/        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)
/* 54768*/      /*Scope*/ 8, /*->54777*/
/* 54769*/        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)
/* 54777*/      0, /*End of Scope*/
/* 54778*/    0, // EndSwitchType
/* 54779*/  /*SwitchOpcode*/ 79, TARGET_VAL(MipsISD::VNOR),// ->54861
/* 54782*/    OPC_RecordChild0, // #0 = $ws
/* 54783*/    OPC_RecordChild1, // #1 = $u8
/* 54784*/    OPC_SwitchType /*4 cases */, 37, MVT::v16i8,// ->54824
/* 54787*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54789*/      OPC_Scope, 11, /*->54802*/ // 3 children in Scope
/* 54791*/        OPC_CheckComplexPat, /*CP*/14, /*#*/1, // selectVSplatUimm8:$u8 #2
/* 54794*/        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)
/* 54802*/      /*Scope*/ 11, /*->54814*/
/* 54803*/        OPC_CheckComplexPat, /*CP*/14, /*#*/0, // selectVSplatUimm8:$u8 #2
/* 54806*/        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)
/* 54814*/      /*Scope*/ 8, /*->54823*/
/* 54815*/        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)
/* 54823*/      0, /*End of Scope*/
/* 54824*/    /*SwitchType*/ 10, MVT::v8i16,// ->54836
/* 54826*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54828*/      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)
/* 54836*/    /*SwitchType*/ 10, MVT::v4i32,// ->54848
/* 54838*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54840*/      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)
/* 54848*/    /*SwitchType*/ 10, MVT::v2i64,// ->54860
/* 54850*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54852*/      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)
/* 54860*/    0, // EndSwitchType
/* 54861*/  /*SwitchOpcode*/ 90|128,2/*346*/, TARGET_VAL(ISD::INSERT_VECTOR_ELT),// ->55211
/* 54865*/    OPC_RecordChild0, // #0 = $wd_in
/* 54866*/    OPC_RecordChild1, // #1 = $rs
/* 54867*/    OPC_Scope, 29|128,1/*157*/, /*->55027*/ // 4 children in Scope
/* 54870*/      OPC_CheckChild1Type, MVT::i32,
/* 54872*/      OPC_RecordChild2, // #2 = $n
/* 54873*/      OPC_Scope, 63, /*->54938*/ // 3 children in Scope
/* 54875*/        OPC_MoveChild2,
/* 54876*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 54879*/        OPC_Scope, 18, /*->54899*/ // 3 children in Scope
/* 54881*/          OPC_CheckPredicate, 31, // Predicate_immZExt4Ptr
/* 54883*/          OPC_MoveParent,
/* 54884*/          OPC_CheckType, MVT::v16i8,
/* 54886*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54888*/          OPC_EmitConvertToTarget, 2,
/* 54890*/          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)
/* 54899*/        /*Scope*/ 18, /*->54918*/
/* 54900*/          OPC_CheckPredicate, 32, // Predicate_immZExt3Ptr
/* 54902*/          OPC_MoveParent,
/* 54903*/          OPC_CheckType, MVT::v8i16,
/* 54905*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54907*/          OPC_EmitConvertToTarget, 2,
/* 54909*/          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)
/* 54918*/        /*Scope*/ 18, /*->54937*/
/* 54919*/          OPC_CheckPredicate, 33, // Predicate_immZExt2Ptr
/* 54921*/          OPC_MoveParent,
/* 54922*/          OPC_CheckType, MVT::v4i32,
/* 54924*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54926*/          OPC_EmitConvertToTarget, 2,
/* 54928*/          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)
/* 54937*/        0, /*End of Scope*/
/* 54938*/      /*Scope*/ 43, /*->54982*/
/* 54939*/        OPC_CheckChild2Type, MVT::i32,
/* 54941*/        OPC_SwitchType /*3 cases */, 11, MVT::v16i8,// ->54955
/* 54944*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54946*/          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)
/* 54955*/        /*SwitchType*/ 11, MVT::v8i16,// ->54968
/* 54957*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54959*/          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)
/* 54968*/        /*SwitchType*/ 11, MVT::v4i32,// ->54981
/* 54970*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54972*/          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)
/* 54981*/        0, // EndSwitchType
/* 54982*/      /*Scope*/ 43, /*->55026*/
/* 54983*/        OPC_CheckChild2Type, MVT::i64,
/* 54985*/        OPC_SwitchType /*3 cases */, 11, MVT::v16i8,// ->54999
/* 54988*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54990*/          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)
/* 54999*/        /*SwitchType*/ 11, MVT::v8i16,// ->55012
/* 55001*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55003*/          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)
/* 55012*/        /*SwitchType*/ 11, MVT::v4i32,// ->55025
/* 55014*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55016*/          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)
/* 55025*/        0, // EndSwitchType
/* 55026*/      0, /*End of Scope*/
/* 55027*/    /*Scope*/ 60, /*->55088*/
/* 55028*/      OPC_CheckChild1Type, MVT::i64,
/* 55030*/      OPC_RecordChild2, // #2 = $n
/* 55031*/      OPC_Scope, 22, /*->55055*/ // 3 children in Scope
/* 55033*/        OPC_MoveChild2,
/* 55034*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55037*/        OPC_CheckPredicate, 37, // Predicate_immZExt1Ptr
/* 55039*/        OPC_MoveParent,
/* 55040*/        OPC_CheckType, MVT::v2i64,
/* 55042*/        OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 55044*/        OPC_EmitConvertToTarget, 2,
/* 55046*/        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)
/* 55055*/      /*Scope*/ 15, /*->55071*/
/* 55056*/        OPC_CheckChild2Type, MVT::i32,
/* 55058*/        OPC_CheckType, MVT::v2i64,
/* 55060*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55062*/        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)
/* 55071*/      /*Scope*/ 15, /*->55087*/
/* 55072*/        OPC_CheckChild2Type, MVT::i64,
/* 55074*/        OPC_CheckType, MVT::v2i64,
/* 55076*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55078*/        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)
/* 55087*/      0, /*End of Scope*/
/* 55088*/    /*Scope*/ 60, /*->55149*/
/* 55089*/      OPC_CheckChild1Type, MVT::f32,
/* 55091*/      OPC_RecordChild2, // #2 = $n
/* 55092*/      OPC_Scope, 22, /*->55116*/ // 3 children in Scope
/* 55094*/        OPC_MoveChild2,
/* 55095*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55098*/        OPC_CheckPredicate, 33, // Predicate_immZExt2Ptr
/* 55100*/        OPC_MoveParent,
/* 55101*/        OPC_CheckType, MVT::v4f32,
/* 55103*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55105*/        OPC_EmitConvertToTarget, 2,
/* 55107*/        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)
/* 55116*/      /*Scope*/ 15, /*->55132*/
/* 55117*/        OPC_CheckChild2Type, MVT::i32,
/* 55119*/        OPC_CheckType, MVT::v4f32,
/* 55121*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55123*/        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)
/* 55132*/      /*Scope*/ 15, /*->55148*/
/* 55133*/        OPC_CheckChild2Type, MVT::i64,
/* 55135*/        OPC_CheckType, MVT::v4f32,
/* 55137*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55139*/        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)
/* 55148*/      0, /*End of Scope*/
/* 55149*/    /*Scope*/ 60, /*->55210*/
/* 55150*/      OPC_CheckChild1Type, MVT::f64,
/* 55152*/      OPC_RecordChild2, // #2 = $n
/* 55153*/      OPC_Scope, 22, /*->55177*/ // 3 children in Scope
/* 55155*/        OPC_MoveChild2,
/* 55156*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55159*/        OPC_CheckPredicate, 37, // Predicate_immZExt1Ptr
/* 55161*/        OPC_MoveParent,
/* 55162*/        OPC_CheckType, MVT::v2f64,
/* 55164*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55166*/        OPC_EmitConvertToTarget, 2,
/* 55168*/        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)
/* 55177*/      /*Scope*/ 15, /*->55193*/
/* 55178*/        OPC_CheckChild2Type, MVT::i32,
/* 55180*/        OPC_CheckType, MVT::v2f64,
/* 55182*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55184*/        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)
/* 55193*/      /*Scope*/ 15, /*->55209*/
/* 55194*/        OPC_CheckChild2Type, MVT::i64,
/* 55196*/        OPC_CheckType, MVT::v2f64,
/* 55198*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55200*/        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)
/* 55209*/      0, /*End of Scope*/
/* 55210*/    0, /*End of Scope*/
/* 55211*/  /*SwitchOpcode*/ 53, TARGET_VAL(MipsISD::SHF),// ->55267
/* 55214*/    OPC_RecordChild0, // #0 = $u8
/* 55215*/    OPC_MoveChild0,
/* 55216*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55219*/    OPC_CheckPredicate, 34, // Predicate_immZExt8
/* 55221*/    OPC_MoveParent,
/* 55222*/    OPC_RecordChild1, // #1 = $ws
/* 55223*/    OPC_SwitchType /*3 cases */, 12, MVT::v16i8,// ->55238
/* 55226*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55228*/      OPC_EmitConvertToTarget, 0,
/* 55230*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SHF_B), 0,
                    MVT::v16i8, 2/*#Ops*/, 1, 2, 
                // Src: (MipsSHF:{ *:[v16i8] } (imm:{ *:[i32] })<<P:Predicate_immZExt8>>:$u8, MSA128BOpnd:{ *:[v16i8] }:$ws) - Complexity = 7
                // Dst: (SHF_B:{ *:[v16i8] } MSA128BOpnd:{ *:[v16i8] }:$ws, (imm:{ *:[i32] }):$u8)
/* 55238*/    /*SwitchType*/ 12, MVT::v8i16,// ->55252
/* 55240*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55242*/      OPC_EmitConvertToTarget, 0,
/* 55244*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SHF_H), 0,
                    MVT::v8i16, 2/*#Ops*/, 1, 2, 
                // Src: (MipsSHF:{ *:[v8i16] } (imm:{ *:[i32] })<<P:Predicate_immZExt8>>:$u8, MSA128HOpnd:{ *:[v8i16] }:$ws) - Complexity = 7
                // Dst: (SHF_H:{ *:[v8i16] } MSA128HOpnd:{ *:[v8i16] }:$ws, (imm:{ *:[i32] }):$u8)
/* 55252*/    /*SwitchType*/ 12, MVT::v4i32,// ->55266
/* 55254*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55256*/      OPC_EmitConvertToTarget, 0,
/* 55258*/      OPC_MorphNodeTo1, TARGET_VAL(Mips::SHF_W), 0,
                    MVT::v4i32, 2/*#Ops*/, 1, 2, 
                // Src: (MipsSHF:{ *:[v4i32] } (imm:{ *:[i32] })<<P:Predicate_immZExt8>>:$u8, MSA128WOpnd:{ *:[v4i32] }:$ws) - Complexity = 7
                // Dst: (SHF_W:{ *:[v4i32] } MSA128WOpnd:{ *:[v4i32] }:$ws, (imm:{ *:[i32] }):$u8)
/* 55266*/    0, // EndSwitchType
/* 55267*/  /*SwitchOpcode*/ 37, TARGET_VAL(MipsISD::SHLL_DSP),// ->55307
/* 55270*/    OPC_RecordChild0, // #0 = $a
/* 55271*/    OPC_RecordChild1, // #1 = $shamt
/* 55272*/    OPC_MoveChild1,
/* 55273*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55276*/    OPC_MoveParent,
/* 55277*/    OPC_SwitchType /*2 cases */, 12, MVT::v2i16,// ->55292
/* 55280*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55282*/      OPC_EmitConvertToTarget, 1,
/* 55284*/      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)
/* 55292*/    /*SwitchType*/ 12, MVT::v4i8,// ->55306
/* 55294*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55296*/      OPC_EmitConvertToTarget, 1,
/* 55298*/      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)
/* 55306*/    0, // EndSwitchType
/* 55307*/  /*SwitchOpcode*/ 37, TARGET_VAL(MipsISD::SHRA_DSP),// ->55347
/* 55310*/    OPC_RecordChild0, // #0 = $a
/* 55311*/    OPC_RecordChild1, // #1 = $shamt
/* 55312*/    OPC_MoveChild1,
/* 55313*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55316*/    OPC_MoveParent,
/* 55317*/    OPC_SwitchType /*2 cases */, 12, MVT::v2i16,// ->55332
/* 55320*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55322*/      OPC_EmitConvertToTarget, 1,
/* 55324*/      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)
/* 55332*/    /*SwitchType*/ 12, MVT::v4i8,// ->55346
/* 55334*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 55336*/      OPC_EmitConvertToTarget, 1,
/* 55338*/      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)
/* 55346*/    0, // EndSwitchType
/* 55347*/  /*SwitchOpcode*/ 37, TARGET_VAL(MipsISD::SHRL_DSP),// ->55387
/* 55350*/    OPC_RecordChild0, // #0 = $a
/* 55351*/    OPC_RecordChild1, // #1 = $shamt
/* 55352*/    OPC_MoveChild1,
/* 55353*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55356*/    OPC_MoveParent,
/* 55357*/    OPC_SwitchType /*2 cases */, 12, MVT::v2i16,// ->55372
/* 55360*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 55362*/      OPC_EmitConvertToTarget, 1,
/* 55364*/      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)
/* 55372*/    /*SwitchType*/ 12, MVT::v4i8,// ->55386
/* 55374*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55376*/      OPC_EmitConvertToTarget, 1,
/* 55378*/      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)
/* 55386*/    0, // EndSwitchType
/* 55387*/  /*SwitchOpcode*/ 33|128,1/*161*/, TARGET_VAL(ISD::BUILD_VECTOR),// ->55552
/* 55391*/    OPC_RecordChild0, // #0 = $rs
/* 55392*/    OPC_Scope, 105, /*->55499*/ // 4 children in Scope
/* 55394*/      OPC_CheckChild0Type, MVT::i32,
/* 55396*/      OPC_CheckChild1Same, 0,
/* 55398*/      OPC_CheckChild2Same, 0,
/* 55400*/      OPC_CheckChild3Same, 0,
/* 55402*/      OPC_Scope, 82, /*->55486*/ // 2 children in Scope
/* 55404*/        OPC_MoveChild4,
/* 55405*/        OPC_CheckSame, 0,
/* 55407*/        OPC_MoveParent,
/* 55408*/        OPC_MoveChild5,
/* 55409*/        OPC_CheckSame, 0,
/* 55411*/        OPC_MoveParent,
/* 55412*/        OPC_MoveChild6,
/* 55413*/        OPC_CheckSame, 0,
/* 55415*/        OPC_MoveParent,
/* 55416*/        OPC_MoveChild7,
/* 55417*/        OPC_CheckSame, 0,
/* 55419*/        OPC_MoveParent,
/* 55420*/        OPC_Scope, 51, /*->55473*/ // 2 children in Scope
/* 55422*/          OPC_MoveChild, 8,
/* 55424*/          OPC_CheckSame, 0,
/* 55426*/          OPC_MoveParent,
/* 55427*/          OPC_MoveChild, 9,
/* 55429*/          OPC_CheckSame, 0,
/* 55431*/          OPC_MoveParent,
/* 55432*/          OPC_MoveChild, 10,
/* 55434*/          OPC_CheckSame, 0,
/* 55436*/          OPC_MoveParent,
/* 55437*/          OPC_MoveChild, 11,
/* 55439*/          OPC_CheckSame, 0,
/* 55441*/          OPC_MoveParent,
/* 55442*/          OPC_MoveChild, 12,
/* 55444*/          OPC_CheckSame, 0,
/* 55446*/          OPC_MoveParent,
/* 55447*/          OPC_MoveChild, 13,
/* 55449*/          OPC_CheckSame, 0,
/* 55451*/          OPC_MoveParent,
/* 55452*/          OPC_MoveChild, 14,
/* 55454*/          OPC_CheckSame, 0,
/* 55456*/          OPC_MoveParent,
/* 55457*/          OPC_MoveChild, 15,
/* 55459*/          OPC_CheckSame, 0,
/* 55461*/          OPC_MoveParent,
/* 55462*/          OPC_CheckType, MVT::v16i8,
/* 55464*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55466*/          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)
/* 55473*/        /*Scope*/ 11, /*->55485*/
/* 55474*/          OPC_CheckType, MVT::v8i16,
/* 55476*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55478*/          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)
/* 55485*/        0, /*End of Scope*/
/* 55486*/      /*Scope*/ 11, /*->55498*/
/* 55487*/        OPC_CheckType, MVT::v4i32,
/* 55489*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55491*/        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)
/* 55498*/      0, /*End of Scope*/
/* 55499*/    /*Scope*/ 15, /*->55515*/
/* 55500*/      OPC_CheckChild0Type, MVT::i64,
/* 55502*/      OPC_CheckChild1Same, 0,
/* 55504*/      OPC_CheckType, MVT::v2i64,
/* 55506*/      OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 55508*/      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)
/* 55515*/    /*Scope*/ 19, /*->55535*/
/* 55516*/      OPC_CheckChild0Type, MVT::f32,
/* 55518*/      OPC_CheckChild1Same, 0,
/* 55520*/      OPC_CheckChild2Same, 0,
/* 55522*/      OPC_CheckChild3Same, 0,
/* 55524*/      OPC_CheckType, MVT::v4f32,
/* 55526*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55528*/      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)
/* 55535*/    /*Scope*/ 15, /*->55551*/
/* 55536*/      OPC_CheckChild0Type, MVT::f64,
/* 55538*/      OPC_CheckChild1Same, 0,
/* 55540*/      OPC_CheckType, MVT::v2f64,
/* 55542*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55544*/      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)
/* 55551*/    0, /*End of Scope*/
/* 55552*/  /*SwitchOpcode*/ 25, TARGET_VAL(ISD::FP_TO_SINT),// ->55580
/* 55555*/    OPC_RecordChild0, // #0 = $ws
/* 55556*/    OPC_SwitchType /*2 cases */, 9, MVT::v4i32,// ->55568
/* 55559*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55561*/      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)
/* 55568*/    /*SwitchType*/ 9, MVT::v2i64,// ->55579
/* 55570*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55572*/      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)
/* 55579*/    0, // EndSwitchType
/* 55580*/  /*SwitchOpcode*/ 25, TARGET_VAL(ISD::FP_TO_UINT),// ->55608
/* 55583*/    OPC_RecordChild0, // #0 = $ws
/* 55584*/    OPC_SwitchType /*2 cases */, 9, MVT::v4i32,// ->55596
/* 55587*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55589*/      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)
/* 55596*/    /*SwitchType*/ 9, MVT::v2i64,// ->55607
/* 55598*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55600*/      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)
/* 55607*/    0, // EndSwitchType
/* 55608*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::ILVEV),// ->55663
/* 55611*/    OPC_RecordChild0, // #0 = $ws
/* 55612*/    OPC_RecordChild1, // #1 = $wt
/* 55613*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55626
/* 55616*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55618*/      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)
/* 55626*/    /*SwitchType*/ 10, MVT::v8i16,// ->55638
/* 55628*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55630*/      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)
/* 55638*/    /*SwitchType*/ 10, MVT::v4i32,// ->55650
/* 55640*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55642*/      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)
/* 55650*/    /*SwitchType*/ 10, MVT::v2i64,// ->55662
/* 55652*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55654*/      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)
/* 55662*/    0, // EndSwitchType
/* 55663*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::ILVL),// ->55718
/* 55666*/    OPC_RecordChild0, // #0 = $ws
/* 55667*/    OPC_RecordChild1, // #1 = $wt
/* 55668*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55681
/* 55671*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55673*/      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)
/* 55681*/    /*SwitchType*/ 10, MVT::v8i16,// ->55693
/* 55683*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55685*/      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)
/* 55693*/    /*SwitchType*/ 10, MVT::v4i32,// ->55705
/* 55695*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55697*/      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)
/* 55705*/    /*SwitchType*/ 10, MVT::v2i64,// ->55717
/* 55707*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55709*/      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)
/* 55717*/    0, // EndSwitchType
/* 55718*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::ILVOD),// ->55773
/* 55721*/    OPC_RecordChild0, // #0 = $ws
/* 55722*/    OPC_RecordChild1, // #1 = $wt
/* 55723*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55736
/* 55726*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55728*/      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)
/* 55736*/    /*SwitchType*/ 10, MVT::v8i16,// ->55748
/* 55738*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55740*/      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)
/* 55748*/    /*SwitchType*/ 10, MVT::v4i32,// ->55760
/* 55750*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55752*/      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)
/* 55760*/    /*SwitchType*/ 10, MVT::v2i64,// ->55772
/* 55762*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55764*/      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)
/* 55772*/    0, // EndSwitchType
/* 55773*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::ILVR),// ->55828
/* 55776*/    OPC_RecordChild0, // #0 = $ws
/* 55777*/    OPC_RecordChild1, // #1 = $wt
/* 55778*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55791
/* 55781*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55783*/      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)
/* 55791*/    /*SwitchType*/ 10, MVT::v8i16,// ->55803
/* 55793*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55795*/      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)
/* 55803*/    /*SwitchType*/ 10, MVT::v4i32,// ->55815
/* 55805*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55807*/      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)
/* 55815*/    /*SwitchType*/ 10, MVT::v2i64,// ->55827
/* 55817*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55819*/      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)
/* 55827*/    0, // EndSwitchType
/* 55828*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::PCKEV),// ->55883
/* 55831*/    OPC_RecordChild0, // #0 = $ws
/* 55832*/    OPC_RecordChild1, // #1 = $wt
/* 55833*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55846
/* 55836*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55838*/      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)
/* 55846*/    /*SwitchType*/ 10, MVT::v8i16,// ->55858
/* 55848*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55850*/      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)
/* 55858*/    /*SwitchType*/ 10, MVT::v4i32,// ->55870
/* 55860*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55862*/      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)
/* 55870*/    /*SwitchType*/ 10, MVT::v2i64,// ->55882
/* 55872*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55874*/      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)
/* 55882*/    0, // EndSwitchType
/* 55883*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::PCKOD),// ->55938
/* 55886*/    OPC_RecordChild0, // #0 = $ws
/* 55887*/    OPC_RecordChild1, // #1 = $wt
/* 55888*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55901
/* 55891*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55893*/      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)
/* 55901*/    /*SwitchType*/ 10, MVT::v8i16,// ->55913
/* 55903*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55905*/      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)
/* 55913*/    /*SwitchType*/ 10, MVT::v4i32,// ->55925
/* 55915*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55917*/      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)
/* 55925*/    /*SwitchType*/ 10, MVT::v2i64,// ->55937
/* 55927*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55929*/      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)
/* 55937*/    0, // EndSwitchType
/* 55938*/  /*SwitchOpcode*/ 67|128,2/*323*/, TARGET_VAL(MipsISD::SELECT_CC_DSP),// ->56265
/* 55942*/    OPC_RecordChild0, // #0 = $a
/* 55943*/    OPC_Scope, 30|128,1/*158*/, /*->56104*/ // 2 children in Scope
/* 55946*/      OPC_CheckChild0Type, MVT::v2i16,
/* 55948*/      OPC_RecordChild1, // #1 = $b
/* 55949*/      OPC_RecordChild2, // #2 = $c
/* 55950*/      OPC_RecordChild3, // #3 = $d
/* 55951*/      OPC_MoveChild4,
/* 55952*/      OPC_Scope, 24, /*->55978*/ // 6 children in Scope
/* 55954*/        OPC_CheckCondCode, ISD::SETEQ,
/* 55956*/        OPC_MoveParent,
/* 55957*/        OPC_CheckType, MVT::v2i16,
/* 55959*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55961*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_EQ_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 55969*/        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)
/* 55978*/      /*Scope*/ 24, /*->56003*/
/* 55979*/        OPC_CheckCondCode, ISD::SETLT,
/* 55981*/        OPC_MoveParent,
/* 55982*/        OPC_CheckType, MVT::v2i16,
/* 55984*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55986*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LT_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 55994*/        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)
/* 56003*/      /*Scope*/ 24, /*->56028*/
/* 56004*/        OPC_CheckCondCode, ISD::SETLE,
/* 56006*/        OPC_MoveParent,
/* 56007*/        OPC_CheckType, MVT::v2i16,
/* 56009*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56011*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LE_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56019*/        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)
/* 56028*/      /*Scope*/ 24, /*->56053*/
/* 56029*/        OPC_CheckCondCode, ISD::SETNE,
/* 56031*/        OPC_MoveParent,
/* 56032*/        OPC_CheckType, MVT::v2i16,
/* 56034*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56036*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_EQ_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56044*/        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)
/* 56053*/      /*Scope*/ 24, /*->56078*/
/* 56054*/        OPC_CheckCondCode, ISD::SETGE,
/* 56056*/        OPC_MoveParent,
/* 56057*/        OPC_CheckType, MVT::v2i16,
/* 56059*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56061*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LT_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56069*/        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)
/* 56078*/      /*Scope*/ 24, /*->56103*/
/* 56079*/        OPC_CheckCondCode, ISD::SETGT,
/* 56081*/        OPC_MoveParent,
/* 56082*/        OPC_CheckType, MVT::v2i16,
/* 56084*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56086*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LE_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56094*/        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)
/* 56103*/      0, /*End of Scope*/
/* 56104*/    /*Scope*/ 30|128,1/*158*/, /*->56264*/
/* 56106*/      OPC_CheckChild0Type, MVT::v4i8,
/* 56108*/      OPC_RecordChild1, // #1 = $b
/* 56109*/      OPC_RecordChild2, // #2 = $c
/* 56110*/      OPC_RecordChild3, // #3 = $d
/* 56111*/      OPC_MoveChild4,
/* 56112*/      OPC_Scope, 24, /*->56138*/ // 6 children in Scope
/* 56114*/        OPC_CheckCondCode, ISD::SETEQ,
/* 56116*/        OPC_MoveParent,
/* 56117*/        OPC_CheckType, MVT::v4i8,
/* 56119*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56121*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_EQ_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56129*/        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)
/* 56138*/      /*Scope*/ 24, /*->56163*/
/* 56139*/        OPC_CheckCondCode, ISD::SETULT,
/* 56141*/        OPC_MoveParent,
/* 56142*/        OPC_CheckType, MVT::v4i8,
/* 56144*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56146*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LT_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56154*/        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)
/* 56163*/      /*Scope*/ 24, /*->56188*/
/* 56164*/        OPC_CheckCondCode, ISD::SETULE,
/* 56166*/        OPC_MoveParent,
/* 56167*/        OPC_CheckType, MVT::v4i8,
/* 56169*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56171*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LE_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56179*/        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)
/* 56188*/      /*Scope*/ 24, /*->56213*/
/* 56189*/        OPC_CheckCondCode, ISD::SETNE,
/* 56191*/        OPC_MoveParent,
/* 56192*/        OPC_CheckType, MVT::v4i8,
/* 56194*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56196*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_EQ_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56204*/        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)
/* 56213*/      /*Scope*/ 24, /*->56238*/
/* 56214*/        OPC_CheckCondCode, ISD::SETUGE,
/* 56216*/        OPC_MoveParent,
/* 56217*/        OPC_CheckType, MVT::v4i8,
/* 56219*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56221*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LT_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56229*/        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)
/* 56238*/      /*Scope*/ 24, /*->56263*/
/* 56239*/        OPC_CheckCondCode, ISD::SETUGT,
/* 56241*/        OPC_MoveParent,
/* 56242*/        OPC_CheckType, MVT::v4i8,
/* 56244*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56246*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LE_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56254*/        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)
/* 56263*/      0, /*End of Scope*/
/* 56264*/    0, /*End of Scope*/
/* 56265*/  /*SwitchOpcode*/ 123|128,5/*763*/, TARGET_VAL(MipsISD::SETCC_DSP),// ->57032
/* 56269*/    OPC_RecordChild0, // #0 = $a
/* 56270*/    OPC_Scope, 122|128,2/*378*/, /*->56651*/ // 2 children in Scope
/* 56273*/      OPC_CheckChild0Type, MVT::v2i16,
/* 56275*/      OPC_RecordChild1, // #1 = $b
/* 56276*/      OPC_MoveChild2,
/* 56277*/      OPC_Scope, 61, /*->56340*/ // 6 children in Scope
/* 56279*/        OPC_CheckCondCode, ISD::SETEQ,
/* 56281*/        OPC_MoveParent,
/* 56282*/        OPC_CheckType, MVT::v2i16,
/* 56284*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56286*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_EQ_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56294*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56297*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56309*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56317*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56320*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56328*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56331*/        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] })
/* 56340*/      /*Scope*/ 61, /*->56402*/
/* 56341*/        OPC_CheckCondCode, ISD::SETLT,
/* 56343*/        OPC_MoveParent,
/* 56344*/        OPC_CheckType, MVT::v2i16,
/* 56346*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56348*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LT_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56356*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56359*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56371*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56379*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56382*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56390*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56393*/        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] })
/* 56402*/      /*Scope*/ 61, /*->56464*/
/* 56403*/        OPC_CheckCondCode, ISD::SETLE,
/* 56405*/        OPC_MoveParent,
/* 56406*/        OPC_CheckType, MVT::v2i16,
/* 56408*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56410*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LE_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56418*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56421*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56433*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56441*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56444*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56452*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56455*/        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] })
/* 56464*/      /*Scope*/ 61, /*->56526*/
/* 56465*/        OPC_CheckCondCode, ISD::SETNE,
/* 56467*/        OPC_MoveParent,
/* 56468*/        OPC_CheckType, MVT::v2i16,
/* 56470*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56472*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_EQ_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56480*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56483*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56486*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56498*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56506*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56509*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56517*/        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] }))
/* 56526*/      /*Scope*/ 61, /*->56588*/
/* 56527*/        OPC_CheckCondCode, ISD::SETGE,
/* 56529*/        OPC_MoveParent,
/* 56530*/        OPC_CheckType, MVT::v2i16,
/* 56532*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56534*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LT_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56542*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56545*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56548*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56560*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56568*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56571*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56579*/        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] }))
/* 56588*/      /*Scope*/ 61, /*->56650*/
/* 56589*/        OPC_CheckCondCode, ISD::SETGT,
/* 56591*/        OPC_MoveParent,
/* 56592*/        OPC_CheckType, MVT::v2i16,
/* 56594*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56596*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LE_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56604*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56607*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56610*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56622*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56630*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56633*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56641*/        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] }))
/* 56650*/      0, /*End of Scope*/
/* 56651*/    /*Scope*/ 122|128,2/*378*/, /*->57031*/
/* 56653*/      OPC_CheckChild0Type, MVT::v4i8,
/* 56655*/      OPC_RecordChild1, // #1 = $b
/* 56656*/      OPC_MoveChild2,
/* 56657*/      OPC_Scope, 61, /*->56720*/ // 6 children in Scope
/* 56659*/        OPC_CheckCondCode, ISD::SETEQ,
/* 56661*/        OPC_MoveParent,
/* 56662*/        OPC_CheckType, MVT::v4i8,
/* 56664*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56666*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_EQ_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56674*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56677*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56689*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56697*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56700*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56708*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56711*/        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] })
/* 56720*/      /*Scope*/ 61, /*->56782*/
/* 56721*/        OPC_CheckCondCode, ISD::SETULT,
/* 56723*/        OPC_MoveParent,
/* 56724*/        OPC_CheckType, MVT::v4i8,
/* 56726*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56728*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LT_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 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*/, 3, 4,  // Results = #5
/* 56759*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56762*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56770*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56773*/        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] })
/* 56782*/      /*Scope*/ 61, /*->56844*/
/* 56783*/        OPC_CheckCondCode, ISD::SETULE,
/* 56785*/        OPC_MoveParent,
/* 56786*/        OPC_CheckType, MVT::v4i8,
/* 56788*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56790*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LE_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56798*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56801*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56813*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56821*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56824*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56832*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56835*/        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] })
/* 56844*/      /*Scope*/ 61, /*->56906*/
/* 56845*/        OPC_CheckCondCode, ISD::SETNE,
/* 56847*/        OPC_MoveParent,
/* 56848*/        OPC_CheckType, MVT::v4i8,
/* 56850*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56852*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_EQ_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56860*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56863*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56866*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56878*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56886*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56889*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56897*/        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] }))
/* 56906*/      /*Scope*/ 61, /*->56968*/
/* 56907*/        OPC_CheckCondCode, ISD::SETUGE,
/* 56909*/        OPC_MoveParent,
/* 56910*/        OPC_CheckType, MVT::v4i8,
/* 56912*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56914*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LT_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56922*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56925*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56928*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56940*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56948*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56951*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56959*/        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] }))
/* 56968*/      /*Scope*/ 61, /*->57030*/
/* 56969*/        OPC_CheckCondCode, ISD::SETUGT,
/* 56971*/        OPC_MoveParent,
/* 56972*/        OPC_CheckType, MVT::v4i8,
/* 56974*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56976*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LE_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56984*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56987*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56990*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 57002*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 57010*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 57013*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 6, 7,  // Results = #8
/* 57021*/        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] }))
/* 57030*/      0, /*End of Scope*/
/* 57031*/    0, /*End of Scope*/
/* 57032*/  /*SwitchOpcode*/ 29, TARGET_VAL(ISD::UINT_TO_FP),// ->57064
/* 57035*/    OPC_RecordChild0, // #0 = $ws
/* 57036*/    OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->57050
/* 57039*/      OPC_CheckChild0Type, MVT::v4i32,
/* 57041*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57043*/      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)
/* 57050*/    /*SwitchType*/ 11, MVT::v2f64,// ->57063
/* 57052*/      OPC_CheckChild0Type, MVT::v2i64,
/* 57054*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57056*/      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)
/* 57063*/    0, // EndSwitchType
/* 57064*/  /*SwitchOpcode*/ 25, TARGET_VAL(ISD::FLOG2),// ->57092
/* 57067*/    OPC_RecordChild0, // #0 = $ws
/* 57068*/    OPC_SwitchType /*2 cases */, 9, MVT::v4f32,// ->57080
/* 57071*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57073*/      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)
/* 57080*/    /*SwitchType*/ 9, MVT::v2f64,// ->57091
/* 57082*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57084*/      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)
/* 57091*/    0, // EndSwitchType
/* 57092*/  /*SwitchOpcode*/ 31, TARGET_VAL(ISD::FMA),// ->57126
/* 57095*/    OPC_RecordChild0, // #0 = $wd_in
/* 57096*/    OPC_RecordChild1, // #1 = $ws
/* 57097*/    OPC_RecordChild2, // #2 = $wt
/* 57098*/    OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->57112
/* 57101*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57103*/      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)
/* 57112*/    /*SwitchType*/ 11, MVT::v2f64,// ->57125
/* 57114*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57116*/      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)
/* 57125*/    0, // EndSwitchType
/* 57126*/  /*SwitchOpcode*/ 31, TARGET_VAL(MipsISD::FMS),// ->57160
/* 57129*/    OPC_RecordChild0, // #0 = $wd_in
/* 57130*/    OPC_RecordChild1, // #1 = $ws
/* 57131*/    OPC_RecordChild2, // #2 = $wt
/* 57132*/    OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->57146
/* 57135*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57137*/      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)
/* 57146*/    /*SwitchType*/ 11, MVT::v2f64,// ->57159
/* 57148*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57150*/      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)
/* 57159*/    0, // EndSwitchType
/* 57160*/  /*SwitchOpcode*/ 25, TARGET_VAL(ISD::FRINT),// ->57188
/* 57163*/    OPC_RecordChild0, // #0 = $ws
/* 57164*/    OPC_SwitchType /*2 cases */, 9, MVT::v4f32,// ->57176
/* 57167*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57169*/      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)
/* 57176*/    /*SwitchType*/ 9, MVT::v2f64,// ->57187
/* 57178*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57180*/      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)
/* 57187*/    0, // EndSwitchType
/* 57188*/  /*SwitchOpcode*/ 25, TARGET_VAL(ISD::FEXP2),// ->57216
/* 57191*/    OPC_RecordChild0, // #0 = $ws
/* 57192*/    OPC_SwitchType /*2 cases */, 9, MVT::v4f32,// ->57204
/* 57195*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57197*/      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)
/* 57204*/    /*SwitchType*/ 9, MVT::v2f64,// ->57215
/* 57206*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57208*/      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)
/* 57215*/    0, // EndSwitchType
/* 57216*/  0, // EndSwitchOpcode
    0
  }; // Total Array size is 57218 bytes

  // Opcode Histogram:
  // #OPC_Scope                                = 697
  // #OPC_RecordNode                           = 57
  // #OPC_RecordChild                          = 1892
  // #OPC_RecordMemRef                         = 20
  // #OPC_CaptureGlueInput                     = 10
  // #OPC_MoveChild                            = 1404
  // #OPC_MoveParent                           = 2435
  // #OPC_CheckSame                            = 24
  // #OPC_CheckChildSame                       = 26
  // #OPC_CheckPatternPredicate                = 2285
  // #OPC_CheckPredicate                       = 1151
  // #OPC_CheckOpcode                          = 1213
  // #OPC_SwitchOpcode                         = 39
  // #OPC_CheckType                            = 1842
  // #OPC_SwitchType                           = 181
  // #OPC_CheckChildType                       = 235
  // #OPC_CheckInteger                         = 0
  // #OPC_CheckChildInteger                    = 336
  // #OPC_CheckCondCode                        = 505
  // #OPC_CheckValueType                       = 29
  // #OPC_CheckComplexPat                      = 276
  // #OPC_CheckAndImm                          = 1
  // #OPC_CheckOrImm                           = 0
  // #OPC_CheckFoldableChainNode               = 0
  // #OPC_EmitInteger                          = 111
  // #OPC_EmitStringInteger                    = 224
  // #OPC_EmitRegister                         = 124
  // #OPC_EmitConvertToTarget                  = 343
  // #OPC_EmitMergeInputChains                 = 493
  // #OPC_EmitCopyToReg                        = 0
  // #OPC_EmitNode                             = 583
  // #OPC_EmitNodeXForm                        = 99
  // #OPC_CompleteMatch                        = 0
  // #OPC_MorphNodeTo                          = 2412

  #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->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->inMicroMipsMode());
  case 60: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64());
  case 61: return (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode());
  case 62: return (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat());
  case 63: return (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 64: return (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode());
  case 65: return (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding());
  case 66: return (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP());
  case 67: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasDSP()) && (!Subtarget->inMicroMipsMode());
  case 68: return (Subtarget->hasMSA()) && (Subtarget->isGP64bit());
  case 69: return (Subtarget->hasStandardEncoding());
  case 70: return (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode());
  case 71: return (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard());
  case 72: return (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMips16Mode());
  case 73: return (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard());
  case 74: return (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 75: return (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard());
  case 76: return (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode());
  case 77: return (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard());
  case 78: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 79: return (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard());
  case 80: return (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode());
  case 81: return (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard());
  case 82: return (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 83: return (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 84: return (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 85: return (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMips16Mode());
  case 86: return (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMips16Mode());
  case 87: return (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard());
  case 88: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 89: return (!Subtarget->inMips16Mode());
  case 90: return (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 91: return (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!TM.isPositionIndependent());
  case 92: return (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!TM.isPositionIndependent());
  case 93: return (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (TM.isPositionIndependent());
  case 94: return (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding());
  case 95: return (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 96: return (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 97: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode());
  case 98: return (Subtarget->hasMSA()) && (Subtarget->isLittle());
  case 99: return (Subtarget->hasMSA()) && (!Subtarget->isLittle());
  case 100: return (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 101: return (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 102: return (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 103: return (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 104: return (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6());
  case 105: return (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding());
  case 106: return (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 107: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 108: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 109: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 110: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 111: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 112: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 113: return (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode());
  case 114: return (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode());
  case 115: return (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat());
  case 116: return (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding());
  case 117: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 118: return (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6());
  case 119: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 120: return (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6());
  case 121: return (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6());
  case 122: return (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat());
  case 123: return (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (Subtarget->isGP64bit());
  case 124: return (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode());
  case 125: return (!Subtarget->isFP64bit());
  case 126: return (Subtarget->isFP64bit());
  case 127: return (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit());
  case 128: return (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode());
  case 129: return (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit());
  case 130: 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;
if (cast<StoreSDNode>(N)->getAddressingMode() != ISD::UNINDEXED) return false;
return true;

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

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

  }
  case 3: { 
    // Predicate_truncstorei8
    SDNode *N = Node;
if (cast<StoreSDNode>(N)->getMemoryVT() != MVT::i8) return false;
return true;

  }
  case 4: { 
    // Predicate_truncstorei16
    SDNode *N = Node;
if (cast<StoreSDNode>(N)->getMemoryVT() != MVT::i16) return false;
return true;

  }
  case 5: { 
    // Predicate_truncstorei32
    SDNode *N = Node;
if (cast<StoreSDNode>(N)->getMemoryVT() != MVT::i32) return false;
return true;

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

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

  }
  case 8: { 
    // Predicate_zextloadi8
    // Predicate_sextloadi8
    // Predicate_extloadi8
    SDNode *N = Node;
if (cast<LoadSDNode>(N)->getMemoryVT() != MVT::i8) return false;
return true;

  }
  case 9: { 
    // Predicate_zextloadi16
    // Predicate_sextloadi16
    // Predicate_extloadi16
    SDNode *N = Node;
if (cast<LoadSDNode>(N)->getMemoryVT() != MVT::i16) return false;
return true;

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

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

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

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

  }
  case 14: { 
    // Predicate_sextloadi32
    // Predicate_zextloadi32
    // Predicate_extloadi32
    SDNode *N = Node;
if (cast<LoadSDNode>(N)->getMemoryVT() != MVT::i32) return false;
return true;

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

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

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

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

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

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

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

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

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

  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 22: { 
    // Predicate_immz
    auto *N = cast<ConstantSDNode>(Node);
 return N->getSExtValue() == 0; 
  }
  case 23: { 
    // Predicate_immZExt16_64
    auto *N = cast<ConstantSDNode>(Node);
 return isUInt<16>(N->getZExtValue()); 
  }
  case 24: { 
    // 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
    SDNode *N = Node;
if (cast<AtomicSDNode>(N)->getMemoryVT() != MVT::i8) return false;
return true;

  }
  case 25: { 
    // 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
    SDNode *N = Node;
if (cast<AtomicSDNode>(N)->getMemoryVT() != MVT::i16) return false;
return true;

  }
  case 26: { 
    // 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
    SDNode *N = Node;
if (cast<AtomicSDNode>(N)->getMemoryVT() != MVT::i32) return false;
return true;

  }
  case 27: { 
    // 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
    SDNode *N = Node;
if (cast<AtomicSDNode>(N)->getMemoryVT() != MVT::i64) return false;
return true;

  }
  case 28: { 
    // Predicate_immZExt5
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return Imm == (Imm & 0x1f);
  }
  case 29: { 
    // Predicate_immZExt10
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<10>(Imm);
  }
  case 30: { 
    // Predicate_immZExt7
    auto *N = cast<ConstantSDNode>(Node);
 return isUInt<7>(N->getZExtValue()); 
  }
  case 31: { 
    // Predicate_immZExt4
    // Predicate_immZExt4Ptr
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<4>(Imm);
  }
  case 32: { 
    // Predicate_immZExt3
    // Predicate_immZExt3Ptr
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<3>(Imm);
  }
  case 33: { 
    // Predicate_immZExt2
    // Predicate_immZExt2Ptr
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<2>(Imm);
  }
  case 34: { 
    // Predicate_immZExt8
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<8>(Imm);
  }
  case 35: { 
    // Predicate_immSExt10
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isInt<10>(Imm);
  }
  case 36: { 
    // Predicate_immZExt6
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return Imm == (Imm & 0x3f);
  }
  case 37: { 
    // Predicate_immZExt1
    // Predicate_immZExt1Ptr
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<1>(Imm);
  }
  case 38: { 
    // Predicate_vsplat_imm_eq_1
    SDNode *N = Node;

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

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

  }
  case 39: { 
    // Predicate_immi32Cst7
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<32>(Imm) && Imm == 7;
  }
  case 40: { 
    // Predicate_immi32Cst15
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<32>(Imm) && Imm == 15;
  }
  case 41: { 
    // Predicate_immi32Cst31
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<32>(Imm) && Imm == 31;
  }
  case 42: { 
    // Predicate_vsplati64_imm_eq_1
    SDNode *N = Node;

  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 43: { 
    // Predicate_vsplati64_imm_eq_63
    SDNode *N = Node;

  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 44: { 
    // Predicate_immZExt5Plus1
    auto *N = cast<ConstantSDNode>(Node);

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

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

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

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

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

  }
  case 47: { 
    // 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 48: { 
    // Predicate_immAllOnesV
    SDNode *N = Node;

  return ISD::isBuildVectorAllOnes(N);

  }
  case 49: { 
    // Predicate_immSExt10_64
    auto *N = cast<ConstantSDNode>(Node);
 return isInt<10>(N->getSExtValue()); 
  }
  case 50: { 
    // Predicate_immZExt2Lsa
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<2>(Imm - 1);
  }
  case 51: { 
    // Predicate_immSExt8
    auto *N = cast<ConstantSDNode>(Node);
 return isInt<8>(N->getSExtValue()); 
  }
  case 52: { 
    // Predicate_immSExtAddiur2
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return Imm == 1 || Imm == -1 ||
                                           ((Imm % 4 == 0) &&
                                            Imm < 28 && Imm > 0);
  }
  case 53: { 
    // Predicate_immSExtAddius5
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return Imm >= -8 && Imm <= 7;
  }
  case 54: { 
    // Predicate_immZExt2Shift
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return Imm >= 1 && Imm <= 8;
  }
  case 55: { 
    // Predicate_assertzext_lt_i32
    SDNode *N = Node;

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

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

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

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

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

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

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

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

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

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

  return N->isExactlyValue(+0.0);

  }
  case 64: { 
    // Predicate_fpimm0neg
    auto *N = cast<ConstantFPSDNode>(Node);

  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
