/*===- 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*/ 7|128,5/*647*/, TARGET_VAL(ISD::SIGN_EXTEND),// ->30957
/* 30310*/    OPC_Scope, 118|128,4/*630*/, /*->30943*/ // 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*/ 66, TARGET_VAL(ISD::MUL),// ->30734
/* 30668*/        OPC_RecordChild0, // #0 = $src
/* 30669*/        OPC_RecordChild1, // #1 = $src2
/* 30670*/        OPC_MoveParent,
/* 30671*/        OPC_CheckType, MVT::i64,
/* 30673*/        OPC_Scope, 29, /*->30704*/ // 2 children in Scope
/* 30675*/          OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 30677*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30683*/          OPC_EmitNode2, TARGET_VAL(Mips::MUL), 0,
                        MVT::i32, MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3 #4
/* 30692*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30695*/          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] })
/* 30704*/        /*Scope*/ 28, /*->30733*/
/* 30705*/          OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 30707*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                        MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30713*/          OPC_EmitNode1, TARGET_VAL(Mips::MUL_R6), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30721*/          OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30724*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::INSERT_SUBREG), 0,
                        MVT::i64, 3/*#Ops*/, 2, 3, 4, 
                    // Src: (sext:{ *:[i64] } (mul:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2)) - Complexity = 6
                    // Dst: (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), (MUL_R6:{ *:[i32] } GPR32:{ *:[i32] }:$src, GPR32:{ *:[i32] }:$src2), sub_32:{ *:[i32] })
/* 30733*/        0, /*End of Scope*/
/* 30734*/      /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::MFHI),// ->30766
/* 30737*/        OPC_RecordChild0, // #0 = $src
/* 30738*/        OPC_MoveParent,
/* 30739*/        OPC_CheckType, MVT::i64,
/* 30741*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #1
/* 30747*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoMFHI), 0,
                      MVT::i32, 1/*#Ops*/, 0,  // Results = #2
/* 30754*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30757*/        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] })
/* 30766*/      /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::MFLO),// ->30798
/* 30769*/        OPC_RecordChild0, // #0 = $src
/* 30770*/        OPC_MoveParent,
/* 30771*/        OPC_CheckType, MVT::i64,
/* 30773*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #1
/* 30779*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoMFLO), 0,
                      MVT::i32, 1/*#Ops*/, 0,  // Results = #2
/* 30786*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30789*/        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] })
/* 30798*/      /*SwitchOpcode*/ 33, TARGET_VAL(ISD::SDIV),// ->30834
/* 30801*/        OPC_RecordChild0, // #0 = $src
/* 30802*/        OPC_RecordChild1, // #1 = $src2
/* 30803*/        OPC_MoveParent,
/* 30804*/        OPC_CheckType, MVT::i64,
/* 30806*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 30808*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30814*/        OPC_EmitNode1, TARGET_VAL(Mips::DIV), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30822*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30825*/        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] })
/* 30834*/      /*SwitchOpcode*/ 33, TARGET_VAL(ISD::UDIV),// ->30870
/* 30837*/        OPC_RecordChild0, // #0 = $src
/* 30838*/        OPC_RecordChild1, // #1 = $src2
/* 30839*/        OPC_MoveParent,
/* 30840*/        OPC_CheckType, MVT::i64,
/* 30842*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 30844*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30850*/        OPC_EmitNode1, TARGET_VAL(Mips::DIVU), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30858*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30861*/        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] })
/* 30870*/      /*SwitchOpcode*/ 33, TARGET_VAL(ISD::SREM),// ->30906
/* 30873*/        OPC_RecordChild0, // #0 = $src
/* 30874*/        OPC_RecordChild1, // #1 = $src2
/* 30875*/        OPC_MoveParent,
/* 30876*/        OPC_CheckType, MVT::i64,
/* 30878*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 30880*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30886*/        OPC_EmitNode1, TARGET_VAL(Mips::MOD), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30894*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30897*/        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] })
/* 30906*/      /*SwitchOpcode*/ 33, TARGET_VAL(ISD::UREM),// ->30942
/* 30909*/        OPC_RecordChild0, // #0 = $src
/* 30910*/        OPC_RecordChild1, // #1 = $src2
/* 30911*/        OPC_MoveParent,
/* 30912*/        OPC_CheckType, MVT::i64,
/* 30914*/        OPC_CheckPatternPredicate, 32, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding())
/* 30916*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                      MVT::i64, 0/*#Ops*/,  // Results = #2
/* 30922*/        OPC_EmitNode1, TARGET_VAL(Mips::MODU), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 30930*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 30933*/        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] })
/* 30942*/      0, // EndSwitchOpcode
/* 30943*/    /*Scope*/ 12, /*->30956*/
/* 30944*/      OPC_RecordChild0, // #0 = $src
/* 30945*/      OPC_CheckType, MVT::i64,
/* 30947*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 30949*/      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)
/* 30956*/    0, /*End of Scope*/
/* 30957*/  /*SwitchOpcode*/ 21, TARGET_VAL(ISD::CALLSEQ_START),// ->30981
/* 30960*/    OPC_RecordNode, // #0 = 'callseq_start' chained node
/* 30961*/    OPC_RecordChild1, // #1 = $amt1
/* 30962*/    OPC_MoveChild1,
/* 30963*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 30966*/    OPC_MoveParent,
/* 30967*/    OPC_RecordChild2, // #2 = $amt2
/* 30968*/    OPC_MoveChild2,
/* 30969*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 30972*/    OPC_MoveParent,
/* 30973*/    OPC_EmitMergeInputChains1_0,
/* 30974*/    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)
/* 30981*/  /*SwitchOpcode*/ 22, TARGET_VAL(ISD::CALLSEQ_END),// ->31006
/* 30984*/    OPC_RecordNode, // #0 = 'callseq_end' chained node
/* 30985*/    OPC_CaptureGlueInput,
/* 30986*/    OPC_RecordChild1, // #1 = $amt1
/* 30987*/    OPC_MoveChild1,
/* 30988*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 30991*/    OPC_MoveParent,
/* 30992*/    OPC_RecordChild2, // #2 = $amt2
/* 30993*/    OPC_MoveChild2,
/* 30994*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 30997*/    OPC_MoveParent,
/* 30998*/    OPC_EmitMergeInputChains1_0,
/* 30999*/    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)
/* 31006*/  /*SwitchOpcode*/ 64, TARGET_VAL(ISD::FrameIndex),// ->31073
/* 31009*/    OPC_RecordNode, // #0 = $addr
/* 31010*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->31057
/* 31013*/      OPC_Scope, 13, /*->31028*/ // 3 children in Scope
/* 31015*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31017*/        OPC_CheckComplexPat, /*CP*/1, /*#*/0, // selectIntAddr:$addr #1 #2
/* 31020*/        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)
/* 31028*/      /*Scope*/ 13, /*->31042*/
/* 31029*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31031*/        OPC_CheckComplexPat, /*CP*/4, /*#*/0, // selectAddr16SP:$addr #1 #2
/* 31034*/        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)
/* 31042*/      /*Scope*/ 13, /*->31056*/
/* 31043*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31045*/        OPC_CheckComplexPat, /*CP*/1, /*#*/0, // selectIntAddr:$addr #1 #2
/* 31048*/        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)
/* 31056*/      0, /*End of Scope*/
/* 31057*/    /*SwitchType*/ 13, MVT::i64,// ->31072
/* 31059*/      OPC_CheckPatternPredicate, 61, // (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode())
/* 31061*/      OPC_CheckComplexPat, /*CP*/1, /*#*/0, // selectIntAddr:$addr #1 #2
/* 31064*/      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)
/* 31072*/    0, // EndSwitchType
/* 31073*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::Ins),// ->31108
/* 31076*/    OPC_RecordChild0, // #0 = $rs
/* 31077*/    OPC_RecordChild1, // #1 = $pos
/* 31078*/    OPC_MoveChild1,
/* 31079*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 31082*/    OPC_MoveParent,
/* 31083*/    OPC_RecordChild2, // #2 = $size
/* 31084*/    OPC_MoveChild2,
/* 31085*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 31088*/    OPC_MoveParent,
/* 31089*/    OPC_RecordChild3, // #3 = $src
/* 31090*/    OPC_CheckType, MVT::i32,
/* 31092*/    OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 31094*/    OPC_EmitConvertToTarget, 1,
/* 31096*/    OPC_EmitConvertToTarget, 2,
/* 31098*/    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)
/* 31108*/  /*SwitchOpcode*/ 92|128,29/*3804*/, TARGET_VAL(ISD::SETCC),// ->34916
/* 31112*/    OPC_RecordChild0, // #0 = $lhs
/* 31113*/    OPC_Scope, 98|128,8/*1122*/, /*->32238*/ // 10 children in Scope
/* 31116*/      OPC_CheckChild0Type, MVT::i32,
/* 31118*/      OPC_Scope, 100, /*->31220*/ // 3 children in Scope
/* 31120*/        OPC_CheckChild1Integer, 0, 
/* 31122*/        OPC_MoveChild2,
/* 31123*/        OPC_Scope, 18, /*->31143*/ // 5 children in Scope
/* 31125*/          OPC_CheckCondCode, ISD::SETEQ,
/* 31127*/          OPC_MoveParent,
/* 31128*/          OPC_CheckType, MVT::i32,
/* 31130*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31132*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31135*/          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] })
/* 31143*/        /*Scope*/ 18, /*->31162*/
/* 31144*/          OPC_CheckCondCode, ISD::SETNE,
/* 31146*/          OPC_MoveParent,
/* 31147*/          OPC_CheckType, MVT::i32,
/* 31149*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31151*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 31154*/          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)
/* 31162*/        /*Scope*/ 18, /*->31181*/
/* 31163*/          OPC_CheckCondCode, ISD::SETEQ,
/* 31165*/          OPC_MoveParent,
/* 31166*/          OPC_CheckType, MVT::i32,
/* 31168*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31170*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31173*/          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] })
/* 31181*/        /*Scope*/ 18, /*->31200*/
/* 31182*/          OPC_CheckCondCode, ISD::SETNE,
/* 31184*/          OPC_MoveParent,
/* 31185*/          OPC_CheckType, MVT::i32,
/* 31187*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31189*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 31192*/          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)
/* 31200*/        /*Scope*/ 18, /*->31219*/
/* 31201*/          OPC_CheckCondCode, ISD::SETEQ,
/* 31203*/          OPC_MoveParent,
/* 31204*/          OPC_CheckType, MVT::i32,
/* 31206*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31208*/          OPC_EmitInteger, MVT::i32, 1, 
/* 31211*/          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] })
/* 31219*/        0, /*End of Scope*/
/* 31220*/      /*Scope*/ 57, /*->31278*/
/* 31221*/        OPC_CheckChild1Integer, 127|128,127|128,125|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709518847*/, 
/* 31232*/        OPC_MoveChild2,
/* 31233*/        OPC_CheckCondCode, ISD::SETGT,
/* 31235*/        OPC_MoveParent,
/* 31236*/        OPC_CheckType, MVT::i32,
/* 31238*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31240*/        OPC_EmitInteger, MVT::i32, 0|128,0|128,126|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709518848*/, 
/* 31252*/        OPC_EmitNode1, TARGET_VAL(Mips::SltiCCRxImmX16), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31260*/        OPC_EmitInteger, MVT::i32, 1, 
/* 31263*/        OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                      MVT::i32, 1/*#Ops*/, 3,  // Results = #4
/* 31270*/        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] }))
/* 31278*/      /*Scope*/ 61|128,7/*957*/, /*->32237*/
/* 31280*/        OPC_RecordChild1, // #1 = $imm16
/* 31281*/        OPC_Scope, 106|128,1/*234*/, /*->31518*/ // 2 children in Scope
/* 31284*/          OPC_MoveChild1,
/* 31285*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 31288*/          OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 31290*/          OPC_MoveParent,
/* 31291*/          OPC_MoveChild2,
/* 31292*/          OPC_Scope, 17, /*->31311*/ // 10 children in Scope
/* 31294*/            OPC_CheckCondCode, ISD::SETLT,
/* 31296*/            OPC_MoveParent,
/* 31297*/            OPC_CheckType, MVT::i32,
/* 31299*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31301*/            OPC_EmitConvertToTarget, 1,
/* 31303*/            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)
/* 31311*/          /*Scope*/ 17, /*->31329*/
/* 31312*/            OPC_CheckCondCode, ISD::SETULT,
/* 31314*/            OPC_MoveParent,
/* 31315*/            OPC_CheckType, MVT::i32,
/* 31317*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31319*/            OPC_EmitConvertToTarget, 1,
/* 31321*/            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)
/* 31329*/          /*Scope*/ 17, /*->31347*/
/* 31330*/            OPC_CheckCondCode, ISD::SETLT,
/* 31332*/            OPC_MoveParent,
/* 31333*/            OPC_CheckType, MVT::i32,
/* 31335*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31337*/            OPC_EmitConvertToTarget, 1,
/* 31339*/            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)
/* 31347*/          /*Scope*/ 17, /*->31365*/
/* 31348*/            OPC_CheckCondCode, ISD::SETULT,
/* 31350*/            OPC_MoveParent,
/* 31351*/            OPC_CheckType, MVT::i32,
/* 31353*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31355*/            OPC_EmitConvertToTarget, 1,
/* 31357*/            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)
/* 31365*/          /*Scope*/ 28, /*->31394*/
/* 31366*/            OPC_CheckCondCode, ISD::SETGE,
/* 31368*/            OPC_MoveParent,
/* 31369*/            OPC_CheckType, MVT::i32,
/* 31371*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31373*/            OPC_EmitConvertToTarget, 1,
/* 31375*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTi), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 31383*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31386*/            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] })
/* 31394*/          /*Scope*/ 28, /*->31423*/
/* 31395*/            OPC_CheckCondCode, ISD::SETUGE,
/* 31397*/            OPC_MoveParent,
/* 31398*/            OPC_CheckType, MVT::i32,
/* 31400*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31402*/            OPC_EmitConvertToTarget, 1,
/* 31404*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTiu), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 31412*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31415*/            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] })
/* 31423*/          /*Scope*/ 28, /*->31452*/
/* 31424*/            OPC_CheckCondCode, ISD::SETGE,
/* 31426*/            OPC_MoveParent,
/* 31427*/            OPC_CheckType, MVT::i32,
/* 31429*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31431*/            OPC_EmitConvertToTarget, 1,
/* 31433*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTi_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 31441*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31444*/            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] })
/* 31452*/          /*Scope*/ 28, /*->31481*/
/* 31453*/            OPC_CheckCondCode, ISD::SETUGE,
/* 31455*/            OPC_MoveParent,
/* 31456*/            OPC_CheckType, MVT::i32,
/* 31458*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31460*/            OPC_EmitConvertToTarget, 1,
/* 31462*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTiu_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 31470*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31473*/            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] })
/* 31481*/          /*Scope*/ 17, /*->31499*/
/* 31482*/            OPC_CheckCondCode, ISD::SETLT,
/* 31484*/            OPC_MoveParent,
/* 31485*/            OPC_CheckType, MVT::i32,
/* 31487*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31489*/            OPC_EmitConvertToTarget, 1,
/* 31491*/            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)
/* 31499*/          /*Scope*/ 17, /*->31517*/
/* 31500*/            OPC_CheckCondCode, ISD::SETULT,
/* 31502*/            OPC_MoveParent,
/* 31503*/            OPC_CheckType, MVT::i32,
/* 31505*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31507*/            OPC_EmitConvertToTarget, 1,
/* 31509*/            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)
/* 31517*/          0, /*End of Scope*/
/* 31518*/        /*Scope*/ 76|128,5/*716*/, /*->32236*/
/* 31520*/          OPC_MoveChild2,
/* 31521*/          OPC_Scope, 15, /*->31538*/ // 30 children in Scope
/* 31523*/            OPC_CheckCondCode, ISD::SETLT,
/* 31525*/            OPC_MoveParent,
/* 31526*/            OPC_CheckType, MVT::i32,
/* 31528*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31530*/            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)
/* 31538*/          /*Scope*/ 15, /*->31554*/
/* 31539*/            OPC_CheckCondCode, ISD::SETULT,
/* 31541*/            OPC_MoveParent,
/* 31542*/            OPC_CheckType, MVT::i32,
/* 31544*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31546*/            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)
/* 31554*/          /*Scope*/ 15, /*->31570*/
/* 31555*/            OPC_CheckCondCode, ISD::SETGT,
/* 31557*/            OPC_MoveParent,
/* 31558*/            OPC_CheckType, MVT::i32,
/* 31560*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31562*/            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)
/* 31570*/          /*Scope*/ 15, /*->31586*/
/* 31571*/            OPC_CheckCondCode, ISD::SETUGT,
/* 31573*/            OPC_MoveParent,
/* 31574*/            OPC_CheckType, MVT::i32,
/* 31576*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31578*/            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)
/* 31586*/          /*Scope*/ 15, /*->31602*/
/* 31587*/            OPC_CheckCondCode, ISD::SETLT,
/* 31589*/            OPC_MoveParent,
/* 31590*/            OPC_CheckType, MVT::i32,
/* 31592*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31594*/            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)
/* 31602*/          /*Scope*/ 15, /*->31618*/
/* 31603*/            OPC_CheckCondCode, ISD::SETULT,
/* 31605*/            OPC_MoveParent,
/* 31606*/            OPC_CheckType, MVT::i32,
/* 31608*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31610*/            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)
/* 31618*/          /*Scope*/ 15, /*->31634*/
/* 31619*/            OPC_CheckCondCode, ISD::SETGT,
/* 31621*/            OPC_MoveParent,
/* 31622*/            OPC_CheckType, MVT::i32,
/* 31624*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31626*/            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)
/* 31634*/          /*Scope*/ 15, /*->31650*/
/* 31635*/            OPC_CheckCondCode, ISD::SETUGT,
/* 31637*/            OPC_MoveParent,
/* 31638*/            OPC_CheckType, MVT::i32,
/* 31640*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31642*/            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)
/* 31650*/          /*Scope*/ 26, /*->31677*/
/* 31651*/            OPC_CheckCondCode, ISD::SETEQ,
/* 31653*/            OPC_MoveParent,
/* 31654*/            OPC_CheckType, MVT::i32,
/* 31656*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31658*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31666*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31669*/            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] })
/* 31677*/          /*Scope*/ 26, /*->31704*/
/* 31678*/            OPC_CheckCondCode, ISD::SETNE,
/* 31680*/            OPC_MoveParent,
/* 31681*/            OPC_CheckType, MVT::i32,
/* 31683*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31685*/            OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 31688*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 31696*/            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))
/* 31704*/          /*Scope*/ 26, /*->31731*/
/* 31705*/            OPC_CheckCondCode, ISD::SETLE,
/* 31707*/            OPC_MoveParent,
/* 31708*/            OPC_CheckType, MVT::i32,
/* 31710*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31712*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31720*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31723*/            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] })
/* 31731*/          /*Scope*/ 26, /*->31758*/
/* 31732*/            OPC_CheckCondCode, ISD::SETULE,
/* 31734*/            OPC_MoveParent,
/* 31735*/            OPC_CheckType, MVT::i32,
/* 31737*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31739*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31747*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31750*/            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] })
/* 31758*/          /*Scope*/ 26, /*->31785*/
/* 31759*/            OPC_CheckCondCode, ISD::SETGE,
/* 31761*/            OPC_MoveParent,
/* 31762*/            OPC_CheckType, MVT::i32,
/* 31764*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31766*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31774*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31777*/            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] })
/* 31785*/          /*Scope*/ 26, /*->31812*/
/* 31786*/            OPC_CheckCondCode, ISD::SETUGE,
/* 31788*/            OPC_MoveParent,
/* 31789*/            OPC_CheckType, MVT::i32,
/* 31791*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 31793*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31801*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31804*/            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] })
/* 31812*/          /*Scope*/ 26, /*->31839*/
/* 31813*/            OPC_CheckCondCode, ISD::SETEQ,
/* 31815*/            OPC_MoveParent,
/* 31816*/            OPC_CheckType, MVT::i32,
/* 31818*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31820*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31828*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31831*/            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] })
/* 31839*/          /*Scope*/ 26, /*->31866*/
/* 31840*/            OPC_CheckCondCode, ISD::SETNE,
/* 31842*/            OPC_MoveParent,
/* 31843*/            OPC_CheckType, MVT::i32,
/* 31845*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31847*/            OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 31850*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 31858*/            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))
/* 31866*/          /*Scope*/ 26, /*->31893*/
/* 31867*/            OPC_CheckCondCode, ISD::SETLE,
/* 31869*/            OPC_MoveParent,
/* 31870*/            OPC_CheckType, MVT::i32,
/* 31872*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31874*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31882*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31885*/            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] })
/* 31893*/          /*Scope*/ 26, /*->31920*/
/* 31894*/            OPC_CheckCondCode, ISD::SETULE,
/* 31896*/            OPC_MoveParent,
/* 31897*/            OPC_CheckType, MVT::i32,
/* 31899*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31901*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 31909*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31912*/            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] })
/* 31920*/          /*Scope*/ 26, /*->31947*/
/* 31921*/            OPC_CheckCondCode, ISD::SETGE,
/* 31923*/            OPC_MoveParent,
/* 31924*/            OPC_CheckType, MVT::i32,
/* 31926*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31928*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31936*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31939*/            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] })
/* 31947*/          /*Scope*/ 26, /*->31974*/
/* 31948*/            OPC_CheckCondCode, ISD::SETUGE,
/* 31950*/            OPC_MoveParent,
/* 31951*/            OPC_CheckType, MVT::i32,
/* 31953*/            OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 31955*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu_MM), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 31963*/            OPC_EmitInteger, MVT::i32, 1, 
/* 31966*/            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] })
/* 31974*/          /*Scope*/ 15, /*->31990*/
/* 31975*/            OPC_CheckCondCode, ISD::SETGT,
/* 31977*/            OPC_MoveParent,
/* 31978*/            OPC_CheckType, MVT::i32,
/* 31980*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31982*/            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)
/* 31990*/          /*Scope*/ 15, /*->32006*/
/* 31991*/            OPC_CheckCondCode, ISD::SETLT,
/* 31993*/            OPC_MoveParent,
/* 31994*/            OPC_CheckType, MVT::i32,
/* 31996*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 31998*/            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)
/* 32006*/          /*Scope*/ 15, /*->32022*/
/* 32007*/            OPC_CheckCondCode, ISD::SETUGT,
/* 32009*/            OPC_MoveParent,
/* 32010*/            OPC_CheckType, MVT::i32,
/* 32012*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 32014*/            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)
/* 32022*/          /*Scope*/ 15, /*->32038*/
/* 32023*/            OPC_CheckCondCode, ISD::SETULT,
/* 32025*/            OPC_MoveParent,
/* 32026*/            OPC_CheckType, MVT::i32,
/* 32028*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 32030*/            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)
/* 32038*/          /*Scope*/ 26, /*->32065*/
/* 32039*/            OPC_CheckCondCode, ISD::SETEQ,
/* 32041*/            OPC_MoveParent,
/* 32042*/            OPC_CheckType, MVT::i32,
/* 32044*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 32046*/            OPC_EmitNode1, TARGET_VAL(Mips::XorRxRxRy16), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32054*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32057*/            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] })
/* 32065*/          /*Scope*/ 33, /*->32099*/
/* 32066*/            OPC_CheckCondCode, ISD::SETGE,
/* 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*/, 0, 1,  // Results = #2
/* 32081*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32084*/            OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 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, SETGE:{ *:[Other] }) - Complexity = 3
                      // Dst: (XorRxRxRy16:{ *:[i32] } (SltCCRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, CPU16Regs:{ *:[i32] }:$rhs), (LiRxImmX16:{ *:[i32] } 1:{ *:[i32] }))
/* 32099*/          /*Scope*/ 33, /*->32133*/
/* 32100*/            OPC_CheckCondCode, ISD::SETLE,
/* 32102*/            OPC_MoveParent,
/* 32103*/            OPC_CheckType, MVT::i32,
/* 32105*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 32107*/            OPC_EmitNode1, TARGET_VAL(Mips::SltCCRxRy16), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 32115*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32118*/            OPC_EmitNode1, TARGET_VAL(Mips::LiRxImm16), 0,
                          MVT::i32, 1/*#Ops*/, 3,  // Results = #4
/* 32125*/            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] }))
/* 32133*/          /*Scope*/ 33, /*->32167*/
/* 32134*/            OPC_CheckCondCode, ISD::SETNE,
/* 32136*/            OPC_MoveParent,
/* 32137*/            OPC_CheckType, MVT::i32,
/* 32139*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 32141*/            OPC_EmitInteger, MVT::i32, 0, 
/* 32144*/            OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                          MVT::i32, 1/*#Ops*/, 2,  // Results = #3
/* 32151*/            OPC_EmitNode1, TARGET_VAL(Mips::XorRxRxRy16), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #4
/* 32159*/            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))
/* 32167*/          /*Scope*/ 33, /*->32201*/
/* 32168*/            OPC_CheckCondCode, ISD::SETUGE,
/* 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*/, 0, 1,  // 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, SETUGE:{ *:[Other] }) - Complexity = 3
                      // Dst: (XorRxRxRy16:{ *:[i32] } (SltuCCRxRy16:{ *:[i32] } CPU16Regs:{ *:[i32] }:$lhs, CPU16Regs:{ *:[i32] }:$rhs), (LiRxImmX16:{ *:[i32] } 1:{ *:[i32] }))
/* 32201*/          /*Scope*/ 33, /*->32235*/
/* 32202*/            OPC_CheckCondCode, ISD::SETULE,
/* 32204*/            OPC_MoveParent,
/* 32205*/            OPC_CheckType, MVT::i32,
/* 32207*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 32209*/            OPC_EmitNode1, TARGET_VAL(Mips::SltuCCRxRy16), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 32217*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32220*/            OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                          MVT::i32, 1/*#Ops*/, 3,  // Results = #4
/* 32227*/            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] }))
/* 32235*/          0, /*End of Scope*/
/* 32236*/        0, /*End of Scope*/
/* 32237*/      0, /*End of Scope*/
/* 32238*/    /*Scope*/ 7|128,3/*391*/, /*->32631*/
/* 32240*/      OPC_CheckChild0Type, MVT::i64,
/* 32242*/      OPC_Scope, 44, /*->32288*/ // 2 children in Scope
/* 32244*/        OPC_CheckChild1Integer, 0, 
/* 32246*/        OPC_MoveChild2,
/* 32247*/        OPC_Scope, 18, /*->32267*/ // 2 children in Scope
/* 32249*/          OPC_CheckCondCode, ISD::SETEQ,
/* 32251*/          OPC_MoveParent,
/* 32252*/          OPC_CheckType, MVT::i32,
/* 32254*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32256*/          OPC_EmitInteger, MVT::i64, 1, 
/* 32259*/          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] })
/* 32267*/        /*Scope*/ 19, /*->32287*/
/* 32268*/          OPC_CheckCondCode, ISD::SETNE,
/* 32270*/          OPC_MoveParent,
/* 32271*/          OPC_CheckType, MVT::i32,
/* 32273*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32275*/          OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 32279*/          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)
/* 32287*/        0, /*End of Scope*/
/* 32288*/      /*Scope*/ 84|128,2/*340*/, /*->32630*/
/* 32290*/        OPC_RecordChild1, // #1 = $imm16
/* 32291*/        OPC_Scope, 104, /*->32397*/ // 2 children in Scope
/* 32293*/          OPC_MoveChild1,
/* 32294*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 32297*/          OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 32299*/          OPC_MoveParent,
/* 32300*/          OPC_MoveChild2,
/* 32301*/          OPC_Scope, 17, /*->32320*/ // 4 children in Scope
/* 32303*/            OPC_CheckCondCode, ISD::SETLT,
/* 32305*/            OPC_MoveParent,
/* 32306*/            OPC_CheckType, MVT::i32,
/* 32308*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 32310*/            OPC_EmitConvertToTarget, 1,
/* 32312*/            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)
/* 32320*/          /*Scope*/ 17, /*->32338*/
/* 32321*/            OPC_CheckCondCode, ISD::SETULT,
/* 32323*/            OPC_MoveParent,
/* 32324*/            OPC_CheckType, MVT::i32,
/* 32326*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 32328*/            OPC_EmitConvertToTarget, 1,
/* 32330*/            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)
/* 32338*/          /*Scope*/ 28, /*->32367*/
/* 32339*/            OPC_CheckCondCode, ISD::SETGE,
/* 32341*/            OPC_MoveParent,
/* 32342*/            OPC_CheckType, MVT::i32,
/* 32344*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32346*/            OPC_EmitConvertToTarget, 1,
/* 32348*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTi64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 32356*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32359*/            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] })
/* 32367*/          /*Scope*/ 28, /*->32396*/
/* 32368*/            OPC_CheckCondCode, ISD::SETUGE,
/* 32370*/            OPC_MoveParent,
/* 32371*/            OPC_CheckType, MVT::i32,
/* 32373*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32375*/            OPC_EmitConvertToTarget, 1,
/* 32377*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTiu64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 32385*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32388*/            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] })
/* 32396*/          0, /*End of Scope*/
/* 32397*/        /*Scope*/ 102|128,1/*230*/, /*->32629*/
/* 32399*/          OPC_MoveChild2,
/* 32400*/          OPC_Scope, 15, /*->32417*/ // 10 children in Scope
/* 32402*/            OPC_CheckCondCode, ISD::SETLT,
/* 32404*/            OPC_MoveParent,
/* 32405*/            OPC_CheckType, MVT::i32,
/* 32407*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 32409*/            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)
/* 32417*/          /*Scope*/ 15, /*->32433*/
/* 32418*/            OPC_CheckCondCode, ISD::SETULT,
/* 32420*/            OPC_MoveParent,
/* 32421*/            OPC_CheckType, MVT::i32,
/* 32423*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 32425*/            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)
/* 32433*/          /*Scope*/ 15, /*->32449*/
/* 32434*/            OPC_CheckCondCode, ISD::SETGT,
/* 32436*/            OPC_MoveParent,
/* 32437*/            OPC_CheckType, MVT::i32,
/* 32439*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32441*/            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)
/* 32449*/          /*Scope*/ 15, /*->32465*/
/* 32450*/            OPC_CheckCondCode, ISD::SETUGT,
/* 32452*/            OPC_MoveParent,
/* 32453*/            OPC_CheckType, MVT::i32,
/* 32455*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32457*/            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)
/* 32465*/          /*Scope*/ 26, /*->32492*/
/* 32466*/            OPC_CheckCondCode, ISD::SETEQ,
/* 32468*/            OPC_MoveParent,
/* 32469*/            OPC_CheckType, MVT::i32,
/* 32471*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32473*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32481*/            OPC_EmitInteger, MVT::i64, 1, 
/* 32484*/            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] })
/* 32492*/          /*Scope*/ 27, /*->32520*/
/* 32493*/            OPC_CheckCondCode, ISD::SETNE,
/* 32495*/            OPC_MoveParent,
/* 32496*/            OPC_CheckType, MVT::i32,
/* 32498*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32500*/            OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 32504*/            OPC_EmitNode1, TARGET_VAL(Mips::XOR64), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #3
/* 32512*/            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))
/* 32520*/          /*Scope*/ 26, /*->32547*/
/* 32521*/            OPC_CheckCondCode, ISD::SETLE,
/* 32523*/            OPC_MoveParent,
/* 32524*/            OPC_CheckType, MVT::i32,
/* 32526*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32528*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 32536*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32539*/            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] })
/* 32547*/          /*Scope*/ 26, /*->32574*/
/* 32548*/            OPC_CheckCondCode, ISD::SETULE,
/* 32550*/            OPC_MoveParent,
/* 32551*/            OPC_CheckType, MVT::i32,
/* 32553*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32555*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 32563*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32566*/            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] })
/* 32574*/          /*Scope*/ 26, /*->32601*/
/* 32575*/            OPC_CheckCondCode, ISD::SETGE,
/* 32577*/            OPC_MoveParent,
/* 32578*/            OPC_CheckType, MVT::i32,
/* 32580*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32582*/            OPC_EmitNode1, TARGET_VAL(Mips::SLT64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32590*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32593*/            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] })
/* 32601*/          /*Scope*/ 26, /*->32628*/
/* 32602*/            OPC_CheckCondCode, ISD::SETUGE,
/* 32604*/            OPC_MoveParent,
/* 32605*/            OPC_CheckType, MVT::i32,
/* 32607*/            OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 32609*/            OPC_EmitNode1, TARGET_VAL(Mips::SLTu64), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 32617*/            OPC_EmitInteger, MVT::i32, 1, 
/* 32620*/            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] })
/* 32628*/          0, /*End of Scope*/
/* 32629*/        0, /*End of Scope*/
/* 32630*/      0, /*End of Scope*/
/* 32631*/    /*Scope*/ 94|128,4/*606*/, /*->33239*/
/* 32633*/      OPC_CheckChild0Type, MVT::f32,
/* 32635*/      OPC_RecordChild1, // #1 = $ft
/* 32636*/      OPC_MoveChild2,
/* 32637*/      OPC_Scope, 15, /*->32654*/ // 32 children in Scope
/* 32639*/        OPC_CheckCondCode, ISD::SETUO,
/* 32641*/        OPC_MoveParent,
/* 32642*/        OPC_CheckType, MVT::i32,
/* 32644*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32646*/        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)
/* 32654*/      /*Scope*/ 15, /*->32670*/
/* 32655*/        OPC_CheckCondCode, ISD::SETOEQ,
/* 32657*/        OPC_MoveParent,
/* 32658*/        OPC_CheckType, MVT::i32,
/* 32660*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32662*/        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)
/* 32670*/      /*Scope*/ 15, /*->32686*/
/* 32671*/        OPC_CheckCondCode, ISD::SETUEQ,
/* 32673*/        OPC_MoveParent,
/* 32674*/        OPC_CheckType, MVT::i32,
/* 32676*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32678*/        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)
/* 32686*/      /*Scope*/ 15, /*->32702*/
/* 32687*/        OPC_CheckCondCode, ISD::SETOLT,
/* 32689*/        OPC_MoveParent,
/* 32690*/        OPC_CheckType, MVT::i32,
/* 32692*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32694*/        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)
/* 32702*/      /*Scope*/ 15, /*->32718*/
/* 32703*/        OPC_CheckCondCode, ISD::SETULT,
/* 32705*/        OPC_MoveParent,
/* 32706*/        OPC_CheckType, MVT::i32,
/* 32708*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32710*/        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)
/* 32718*/      /*Scope*/ 15, /*->32734*/
/* 32719*/        OPC_CheckCondCode, ISD::SETOLE,
/* 32721*/        OPC_MoveParent,
/* 32722*/        OPC_CheckType, MVT::i32,
/* 32724*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32726*/        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)
/* 32734*/      /*Scope*/ 15, /*->32750*/
/* 32735*/        OPC_CheckCondCode, ISD::SETULE,
/* 32737*/        OPC_MoveParent,
/* 32738*/        OPC_CheckType, MVT::i32,
/* 32740*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 32742*/        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)
/* 32750*/      /*Scope*/ 15, /*->32766*/
/* 32751*/        OPC_CheckCondCode, ISD::SETEQ,
/* 32753*/        OPC_MoveParent,
/* 32754*/        OPC_CheckType, MVT::i32,
/* 32756*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32758*/        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)
/* 32766*/      /*Scope*/ 15, /*->32782*/
/* 32767*/        OPC_CheckCondCode, ISD::SETGT,
/* 32769*/        OPC_MoveParent,
/* 32770*/        OPC_CheckType, MVT::i32,
/* 32772*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32774*/        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)
/* 32782*/      /*Scope*/ 15, /*->32798*/
/* 32783*/        OPC_CheckCondCode, ISD::SETGE,
/* 32785*/        OPC_MoveParent,
/* 32786*/        OPC_CheckType, MVT::i32,
/* 32788*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32790*/        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)
/* 32798*/      /*Scope*/ 15, /*->32814*/
/* 32799*/        OPC_CheckCondCode, ISD::SETLT,
/* 32801*/        OPC_MoveParent,
/* 32802*/        OPC_CheckType, MVT::i32,
/* 32804*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32806*/        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)
/* 32814*/      /*Scope*/ 15, /*->32830*/
/* 32815*/        OPC_CheckCondCode, ISD::SETLE,
/* 32817*/        OPC_MoveParent,
/* 32818*/        OPC_CheckType, MVT::i32,
/* 32820*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 32822*/        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)
/* 32830*/      /*Scope*/ 15, /*->32846*/
/* 32831*/        OPC_CheckCondCode, ISD::SETUO,
/* 32833*/        OPC_MoveParent,
/* 32834*/        OPC_CheckType, MVT::i32,
/* 32836*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32838*/        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)
/* 32846*/      /*Scope*/ 15, /*->32862*/
/* 32847*/        OPC_CheckCondCode, ISD::SETOEQ,
/* 32849*/        OPC_MoveParent,
/* 32850*/        OPC_CheckType, MVT::i32,
/* 32852*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32854*/        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)
/* 32862*/      /*Scope*/ 15, /*->32878*/
/* 32863*/        OPC_CheckCondCode, ISD::SETUEQ,
/* 32865*/        OPC_MoveParent,
/* 32866*/        OPC_CheckType, MVT::i32,
/* 32868*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32870*/        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)
/* 32878*/      /*Scope*/ 15, /*->32894*/
/* 32879*/        OPC_CheckCondCode, ISD::SETOLT,
/* 32881*/        OPC_MoveParent,
/* 32882*/        OPC_CheckType, MVT::i32,
/* 32884*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32886*/        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)
/* 32894*/      /*Scope*/ 15, /*->32910*/
/* 32895*/        OPC_CheckCondCode, ISD::SETULT,
/* 32897*/        OPC_MoveParent,
/* 32898*/        OPC_CheckType, MVT::i32,
/* 32900*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32902*/        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)
/* 32910*/      /*Scope*/ 15, /*->32926*/
/* 32911*/        OPC_CheckCondCode, ISD::SETOLE,
/* 32913*/        OPC_MoveParent,
/* 32914*/        OPC_CheckType, MVT::i32,
/* 32916*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32918*/        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)
/* 32926*/      /*Scope*/ 15, /*->32942*/
/* 32927*/        OPC_CheckCondCode, ISD::SETULE,
/* 32929*/        OPC_MoveParent,
/* 32930*/        OPC_CheckType, MVT::i32,
/* 32932*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 32934*/        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)
/* 32942*/      /*Scope*/ 15, /*->32958*/
/* 32943*/        OPC_CheckCondCode, ISD::SETEQ,
/* 32945*/        OPC_MoveParent,
/* 32946*/        OPC_CheckType, MVT::i32,
/* 32948*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32950*/        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)
/* 32958*/      /*Scope*/ 15, /*->32974*/
/* 32959*/        OPC_CheckCondCode, ISD::SETGT,
/* 32961*/        OPC_MoveParent,
/* 32962*/        OPC_CheckType, MVT::i32,
/* 32964*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32966*/        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)
/* 32974*/      /*Scope*/ 15, /*->32990*/
/* 32975*/        OPC_CheckCondCode, ISD::SETGE,
/* 32977*/        OPC_MoveParent,
/* 32978*/        OPC_CheckType, MVT::i32,
/* 32980*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32982*/        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)
/* 32990*/      /*Scope*/ 15, /*->33006*/
/* 32991*/        OPC_CheckCondCode, ISD::SETLT,
/* 32993*/        OPC_MoveParent,
/* 32994*/        OPC_CheckType, MVT::i32,
/* 32996*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 32998*/        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)
/* 33006*/      /*Scope*/ 15, /*->33022*/
/* 33007*/        OPC_CheckCondCode, ISD::SETLE,
/* 33009*/        OPC_MoveParent,
/* 33010*/        OPC_CheckType, MVT::i32,
/* 33012*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33014*/        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)
/* 33022*/      /*Scope*/ 26, /*->33049*/
/* 33023*/        OPC_CheckCondCode, ISD::SETONE,
/* 33025*/        OPC_MoveParent,
/* 33026*/        OPC_CheckType, MVT::i32,
/* 33028*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33030*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UEQ_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33038*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33041*/        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] })
/* 33049*/      /*Scope*/ 26, /*->33076*/
/* 33050*/        OPC_CheckCondCode, ISD::SETO,
/* 33052*/        OPC_MoveParent,
/* 33053*/        OPC_CheckType, MVT::i32,
/* 33055*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33057*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UN_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33065*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33068*/        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] })
/* 33076*/      /*Scope*/ 26, /*->33103*/
/* 33077*/        OPC_CheckCondCode, ISD::SETUNE,
/* 33079*/        OPC_MoveParent,
/* 33080*/        OPC_CheckType, MVT::i32,
/* 33082*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33084*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33092*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33095*/        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] })
/* 33103*/      /*Scope*/ 26, /*->33130*/
/* 33104*/        OPC_CheckCondCode, ISD::SETNE,
/* 33106*/        OPC_MoveParent,
/* 33107*/        OPC_CheckType, MVT::i32,
/* 33109*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33111*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_S), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33119*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33122*/        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] })
/* 33130*/      /*Scope*/ 26, /*->33157*/
/* 33131*/        OPC_CheckCondCode, ISD::SETONE,
/* 33133*/        OPC_MoveParent,
/* 33134*/        OPC_CheckType, MVT::i32,
/* 33136*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33138*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UEQ_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33146*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33149*/        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] })
/* 33157*/      /*Scope*/ 26, /*->33184*/
/* 33158*/        OPC_CheckCondCode, ISD::SETO,
/* 33160*/        OPC_MoveParent,
/* 33161*/        OPC_CheckType, MVT::i32,
/* 33163*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33165*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UN_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33173*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33176*/        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] })
/* 33184*/      /*Scope*/ 26, /*->33211*/
/* 33185*/        OPC_CheckCondCode, ISD::SETUNE,
/* 33187*/        OPC_MoveParent,
/* 33188*/        OPC_CheckType, MVT::i32,
/* 33190*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33192*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33200*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33203*/        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] })
/* 33211*/      /*Scope*/ 26, /*->33238*/
/* 33212*/        OPC_CheckCondCode, ISD::SETNE,
/* 33214*/        OPC_MoveParent,
/* 33215*/        OPC_CheckType, MVT::i32,
/* 33217*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33219*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_S_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33227*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33230*/        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] })
/* 33238*/      0, /*End of Scope*/
/* 33239*/    /*Scope*/ 94|128,4/*606*/, /*->33847*/
/* 33241*/      OPC_CheckChild0Type, MVT::f64,
/* 33243*/      OPC_RecordChild1, // #1 = $ft
/* 33244*/      OPC_MoveChild2,
/* 33245*/      OPC_Scope, 15, /*->33262*/ // 32 children in Scope
/* 33247*/        OPC_CheckCondCode, ISD::SETUO,
/* 33249*/        OPC_MoveParent,
/* 33250*/        OPC_CheckType, MVT::i32,
/* 33252*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 33254*/        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)
/* 33262*/      /*Scope*/ 15, /*->33278*/
/* 33263*/        OPC_CheckCondCode, ISD::SETOEQ,
/* 33265*/        OPC_MoveParent,
/* 33266*/        OPC_CheckType, MVT::i32,
/* 33268*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 33270*/        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)
/* 33278*/      /*Scope*/ 15, /*->33294*/
/* 33279*/        OPC_CheckCondCode, ISD::SETUEQ,
/* 33281*/        OPC_MoveParent,
/* 33282*/        OPC_CheckType, MVT::i32,
/* 33284*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 33286*/        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)
/* 33294*/      /*Scope*/ 15, /*->33310*/
/* 33295*/        OPC_CheckCondCode, ISD::SETOLT,
/* 33297*/        OPC_MoveParent,
/* 33298*/        OPC_CheckType, MVT::i32,
/* 33300*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 33302*/        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)
/* 33310*/      /*Scope*/ 15, /*->33326*/
/* 33311*/        OPC_CheckCondCode, ISD::SETULT,
/* 33313*/        OPC_MoveParent,
/* 33314*/        OPC_CheckType, MVT::i32,
/* 33316*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 33318*/        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)
/* 33326*/      /*Scope*/ 15, /*->33342*/
/* 33327*/        OPC_CheckCondCode, ISD::SETOLE,
/* 33329*/        OPC_MoveParent,
/* 33330*/        OPC_CheckType, MVT::i32,
/* 33332*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 33334*/        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)
/* 33342*/      /*Scope*/ 15, /*->33358*/
/* 33343*/        OPC_CheckCondCode, ISD::SETULE,
/* 33345*/        OPC_MoveParent,
/* 33346*/        OPC_CheckType, MVT::i32,
/* 33348*/        OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 33350*/        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)
/* 33358*/      /*Scope*/ 15, /*->33374*/
/* 33359*/        OPC_CheckCondCode, ISD::SETEQ,
/* 33361*/        OPC_MoveParent,
/* 33362*/        OPC_CheckType, MVT::i32,
/* 33364*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33366*/        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)
/* 33374*/      /*Scope*/ 15, /*->33390*/
/* 33375*/        OPC_CheckCondCode, ISD::SETGT,
/* 33377*/        OPC_MoveParent,
/* 33378*/        OPC_CheckType, MVT::i32,
/* 33380*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33382*/        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)
/* 33390*/      /*Scope*/ 15, /*->33406*/
/* 33391*/        OPC_CheckCondCode, ISD::SETGE,
/* 33393*/        OPC_MoveParent,
/* 33394*/        OPC_CheckType, MVT::i32,
/* 33396*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33398*/        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)
/* 33406*/      /*Scope*/ 15, /*->33422*/
/* 33407*/        OPC_CheckCondCode, ISD::SETLT,
/* 33409*/        OPC_MoveParent,
/* 33410*/        OPC_CheckType, MVT::i32,
/* 33412*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33414*/        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)
/* 33422*/      /*Scope*/ 15, /*->33438*/
/* 33423*/        OPC_CheckCondCode, ISD::SETLE,
/* 33425*/        OPC_MoveParent,
/* 33426*/        OPC_CheckType, MVT::i32,
/* 33428*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33430*/        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)
/* 33438*/      /*Scope*/ 15, /*->33454*/
/* 33439*/        OPC_CheckCondCode, ISD::SETUO,
/* 33441*/        OPC_MoveParent,
/* 33442*/        OPC_CheckType, MVT::i32,
/* 33444*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 33446*/        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)
/* 33454*/      /*Scope*/ 15, /*->33470*/
/* 33455*/        OPC_CheckCondCode, ISD::SETOEQ,
/* 33457*/        OPC_MoveParent,
/* 33458*/        OPC_CheckType, MVT::i32,
/* 33460*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 33462*/        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)
/* 33470*/      /*Scope*/ 15, /*->33486*/
/* 33471*/        OPC_CheckCondCode, ISD::SETUEQ,
/* 33473*/        OPC_MoveParent,
/* 33474*/        OPC_CheckType, MVT::i32,
/* 33476*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 33478*/        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)
/* 33486*/      /*Scope*/ 15, /*->33502*/
/* 33487*/        OPC_CheckCondCode, ISD::SETOLT,
/* 33489*/        OPC_MoveParent,
/* 33490*/        OPC_CheckType, MVT::i32,
/* 33492*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 33494*/        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)
/* 33502*/      /*Scope*/ 15, /*->33518*/
/* 33503*/        OPC_CheckCondCode, ISD::SETULT,
/* 33505*/        OPC_MoveParent,
/* 33506*/        OPC_CheckType, MVT::i32,
/* 33508*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 33510*/        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)
/* 33518*/      /*Scope*/ 15, /*->33534*/
/* 33519*/        OPC_CheckCondCode, ISD::SETOLE,
/* 33521*/        OPC_MoveParent,
/* 33522*/        OPC_CheckType, MVT::i32,
/* 33524*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 33526*/        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)
/* 33534*/      /*Scope*/ 15, /*->33550*/
/* 33535*/        OPC_CheckCondCode, ISD::SETULE,
/* 33537*/        OPC_MoveParent,
/* 33538*/        OPC_CheckType, MVT::i32,
/* 33540*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 33542*/        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)
/* 33550*/      /*Scope*/ 15, /*->33566*/
/* 33551*/        OPC_CheckCondCode, ISD::SETEQ,
/* 33553*/        OPC_MoveParent,
/* 33554*/        OPC_CheckType, MVT::i32,
/* 33556*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33558*/        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)
/* 33566*/      /*Scope*/ 15, /*->33582*/
/* 33567*/        OPC_CheckCondCode, ISD::SETGT,
/* 33569*/        OPC_MoveParent,
/* 33570*/        OPC_CheckType, MVT::i32,
/* 33572*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33574*/        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)
/* 33582*/      /*Scope*/ 15, /*->33598*/
/* 33583*/        OPC_CheckCondCode, ISD::SETGE,
/* 33585*/        OPC_MoveParent,
/* 33586*/        OPC_CheckType, MVT::i32,
/* 33588*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33590*/        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)
/* 33598*/      /*Scope*/ 15, /*->33614*/
/* 33599*/        OPC_CheckCondCode, ISD::SETLT,
/* 33601*/        OPC_MoveParent,
/* 33602*/        OPC_CheckType, MVT::i32,
/* 33604*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33606*/        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)
/* 33614*/      /*Scope*/ 15, /*->33630*/
/* 33615*/        OPC_CheckCondCode, ISD::SETLE,
/* 33617*/        OPC_MoveParent,
/* 33618*/        OPC_CheckType, MVT::i32,
/* 33620*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33622*/        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)
/* 33630*/      /*Scope*/ 26, /*->33657*/
/* 33631*/        OPC_CheckCondCode, ISD::SETONE,
/* 33633*/        OPC_MoveParent,
/* 33634*/        OPC_CheckType, MVT::i32,
/* 33636*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33638*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UEQ_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33646*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33649*/        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] })
/* 33657*/      /*Scope*/ 26, /*->33684*/
/* 33658*/        OPC_CheckCondCode, ISD::SETO,
/* 33660*/        OPC_MoveParent,
/* 33661*/        OPC_CheckType, MVT::i32,
/* 33663*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33665*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UN_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33673*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33676*/        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] })
/* 33684*/      /*Scope*/ 26, /*->33711*/
/* 33685*/        OPC_CheckCondCode, ISD::SETUNE,
/* 33687*/        OPC_MoveParent,
/* 33688*/        OPC_CheckType, MVT::i32,
/* 33690*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33692*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33700*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33703*/        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] })
/* 33711*/      /*Scope*/ 26, /*->33738*/
/* 33712*/        OPC_CheckCondCode, ISD::SETNE,
/* 33714*/        OPC_MoveParent,
/* 33715*/        OPC_CheckType, MVT::i32,
/* 33717*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 33719*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_D), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33727*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33730*/        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] })
/* 33738*/      /*Scope*/ 26, /*->33765*/
/* 33739*/        OPC_CheckCondCode, ISD::SETONE,
/* 33741*/        OPC_MoveParent,
/* 33742*/        OPC_CheckType, MVT::i32,
/* 33744*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33746*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UEQ_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33754*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33757*/        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] })
/* 33765*/      /*Scope*/ 26, /*->33792*/
/* 33766*/        OPC_CheckCondCode, ISD::SETO,
/* 33768*/        OPC_MoveParent,
/* 33769*/        OPC_CheckType, MVT::i32,
/* 33771*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33773*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_UN_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33781*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33784*/        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] })
/* 33792*/      /*Scope*/ 26, /*->33819*/
/* 33793*/        OPC_CheckCondCode, ISD::SETUNE,
/* 33795*/        OPC_MoveParent,
/* 33796*/        OPC_CheckType, MVT::i32,
/* 33798*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33800*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33808*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33811*/        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] })
/* 33819*/      /*Scope*/ 26, /*->33846*/
/* 33820*/        OPC_CheckCondCode, ISD::SETNE,
/* 33822*/        OPC_MoveParent,
/* 33823*/        OPC_CheckType, MVT::i32,
/* 33825*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 33827*/        OPC_EmitNode1, TARGET_VAL(Mips::CMP_EQ_D_MMR6), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 33835*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 33838*/        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] })
/* 33846*/      0, /*End of Scope*/
/* 33847*/    /*Scope*/ 53|128,1/*181*/, /*->34030*/
/* 33849*/      OPC_CheckChild0Type, MVT::v16i8,
/* 33851*/      OPC_RecordChild1, // #1 = $imm
/* 33852*/      OPC_MoveChild2,
/* 33853*/      OPC_Scope, 18, /*->33873*/ // 10 children in Scope
/* 33855*/        OPC_CheckCondCode, ISD::SETEQ,
/* 33857*/        OPC_MoveParent,
/* 33858*/        OPC_CheckType, MVT::v16i8,
/* 33860*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33862*/        OPC_CheckComplexPat, /*CP*/20, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33865*/        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)
/* 33873*/      /*Scope*/ 18, /*->33892*/
/* 33874*/        OPC_CheckCondCode, ISD::SETLE,
/* 33876*/        OPC_MoveParent,
/* 33877*/        OPC_CheckType, MVT::v16i8,
/* 33879*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33881*/        OPC_CheckComplexPat, /*CP*/20, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33884*/        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)
/* 33892*/      /*Scope*/ 18, /*->33911*/
/* 33893*/        OPC_CheckCondCode, ISD::SETULE,
/* 33895*/        OPC_MoveParent,
/* 33896*/        OPC_CheckType, MVT::v16i8,
/* 33898*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33900*/        OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 33903*/        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)
/* 33911*/      /*Scope*/ 18, /*->33930*/
/* 33912*/        OPC_CheckCondCode, ISD::SETLT,
/* 33914*/        OPC_MoveParent,
/* 33915*/        OPC_CheckType, MVT::v16i8,
/* 33917*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33919*/        OPC_CheckComplexPat, /*CP*/20, /*#*/1, // selectVSplatSimm5:$imm #2
/* 33922*/        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)
/* 33930*/      /*Scope*/ 18, /*->33949*/
/* 33931*/        OPC_CheckCondCode, ISD::SETULT,
/* 33933*/        OPC_MoveParent,
/* 33934*/        OPC_CheckType, MVT::v16i8,
/* 33936*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33938*/        OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 33941*/        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)
/* 33949*/      /*Scope*/ 15, /*->33965*/
/* 33950*/        OPC_CheckCondCode, ISD::SETEQ,
/* 33952*/        OPC_MoveParent,
/* 33953*/        OPC_CheckType, MVT::v16i8,
/* 33955*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33957*/        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)
/* 33965*/      /*Scope*/ 15, /*->33981*/
/* 33966*/        OPC_CheckCondCode, ISD::SETLE,
/* 33968*/        OPC_MoveParent,
/* 33969*/        OPC_CheckType, MVT::v16i8,
/* 33971*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33973*/        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)
/* 33981*/      /*Scope*/ 15, /*->33997*/
/* 33982*/        OPC_CheckCondCode, ISD::SETULE,
/* 33984*/        OPC_MoveParent,
/* 33985*/        OPC_CheckType, MVT::v16i8,
/* 33987*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 33989*/        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)
/* 33997*/      /*Scope*/ 15, /*->34013*/
/* 33998*/        OPC_CheckCondCode, ISD::SETLT,
/* 34000*/        OPC_MoveParent,
/* 34001*/        OPC_CheckType, MVT::v16i8,
/* 34003*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34005*/        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)
/* 34013*/      /*Scope*/ 15, /*->34029*/
/* 34014*/        OPC_CheckCondCode, ISD::SETULT,
/* 34016*/        OPC_MoveParent,
/* 34017*/        OPC_CheckType, MVT::v16i8,
/* 34019*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34021*/        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)
/* 34029*/      0, /*End of Scope*/
/* 34030*/    /*Scope*/ 53|128,1/*181*/, /*->34213*/
/* 34032*/      OPC_CheckChild0Type, MVT::v8i16,
/* 34034*/      OPC_RecordChild1, // #1 = $imm
/* 34035*/      OPC_MoveChild2,
/* 34036*/      OPC_Scope, 18, /*->34056*/ // 10 children in Scope
/* 34038*/        OPC_CheckCondCode, ISD::SETEQ,
/* 34040*/        OPC_MoveParent,
/* 34041*/        OPC_CheckType, MVT::v8i16,
/* 34043*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34045*/        OPC_CheckComplexPat, /*CP*/21, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34048*/        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)
/* 34056*/      /*Scope*/ 18, /*->34075*/
/* 34057*/        OPC_CheckCondCode, ISD::SETLE,
/* 34059*/        OPC_MoveParent,
/* 34060*/        OPC_CheckType, MVT::v8i16,
/* 34062*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34064*/        OPC_CheckComplexPat, /*CP*/21, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34067*/        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)
/* 34075*/      /*Scope*/ 18, /*->34094*/
/* 34076*/        OPC_CheckCondCode, ISD::SETULE,
/* 34078*/        OPC_MoveParent,
/* 34079*/        OPC_CheckType, MVT::v8i16,
/* 34081*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34083*/        OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34086*/        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)
/* 34094*/      /*Scope*/ 18, /*->34113*/
/* 34095*/        OPC_CheckCondCode, ISD::SETLT,
/* 34097*/        OPC_MoveParent,
/* 34098*/        OPC_CheckType, MVT::v8i16,
/* 34100*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34102*/        OPC_CheckComplexPat, /*CP*/21, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34105*/        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)
/* 34113*/      /*Scope*/ 18, /*->34132*/
/* 34114*/        OPC_CheckCondCode, ISD::SETULT,
/* 34116*/        OPC_MoveParent,
/* 34117*/        OPC_CheckType, MVT::v8i16,
/* 34119*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34121*/        OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34124*/        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)
/* 34132*/      /*Scope*/ 15, /*->34148*/
/* 34133*/        OPC_CheckCondCode, ISD::SETEQ,
/* 34135*/        OPC_MoveParent,
/* 34136*/        OPC_CheckType, MVT::v8i16,
/* 34138*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34140*/        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)
/* 34148*/      /*Scope*/ 15, /*->34164*/
/* 34149*/        OPC_CheckCondCode, ISD::SETLE,
/* 34151*/        OPC_MoveParent,
/* 34152*/        OPC_CheckType, MVT::v8i16,
/* 34154*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34156*/        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)
/* 34164*/      /*Scope*/ 15, /*->34180*/
/* 34165*/        OPC_CheckCondCode, ISD::SETULE,
/* 34167*/        OPC_MoveParent,
/* 34168*/        OPC_CheckType, MVT::v8i16,
/* 34170*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34172*/        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)
/* 34180*/      /*Scope*/ 15, /*->34196*/
/* 34181*/        OPC_CheckCondCode, ISD::SETLT,
/* 34183*/        OPC_MoveParent,
/* 34184*/        OPC_CheckType, MVT::v8i16,
/* 34186*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34188*/        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)
/* 34196*/      /*Scope*/ 15, /*->34212*/
/* 34197*/        OPC_CheckCondCode, ISD::SETULT,
/* 34199*/        OPC_MoveParent,
/* 34200*/        OPC_CheckType, MVT::v8i16,
/* 34202*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34204*/        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)
/* 34212*/      0, /*End of Scope*/
/* 34213*/    /*Scope*/ 53|128,1/*181*/, /*->34396*/
/* 34215*/      OPC_CheckChild0Type, MVT::v4i32,
/* 34217*/      OPC_RecordChild1, // #1 = $imm
/* 34218*/      OPC_MoveChild2,
/* 34219*/      OPC_Scope, 18, /*->34239*/ // 10 children in Scope
/* 34221*/        OPC_CheckCondCode, ISD::SETEQ,
/* 34223*/        OPC_MoveParent,
/* 34224*/        OPC_CheckType, MVT::v4i32,
/* 34226*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34228*/        OPC_CheckComplexPat, /*CP*/22, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34231*/        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)
/* 34239*/      /*Scope*/ 18, /*->34258*/
/* 34240*/        OPC_CheckCondCode, ISD::SETLE,
/* 34242*/        OPC_MoveParent,
/* 34243*/        OPC_CheckType, MVT::v4i32,
/* 34245*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34247*/        OPC_CheckComplexPat, /*CP*/22, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34250*/        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)
/* 34258*/      /*Scope*/ 18, /*->34277*/
/* 34259*/        OPC_CheckCondCode, ISD::SETULE,
/* 34261*/        OPC_MoveParent,
/* 34262*/        OPC_CheckType, MVT::v4i32,
/* 34264*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34266*/        OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34269*/        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)
/* 34277*/      /*Scope*/ 18, /*->34296*/
/* 34278*/        OPC_CheckCondCode, ISD::SETLT,
/* 34280*/        OPC_MoveParent,
/* 34281*/        OPC_CheckType, MVT::v4i32,
/* 34283*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34285*/        OPC_CheckComplexPat, /*CP*/22, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34288*/        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)
/* 34296*/      /*Scope*/ 18, /*->34315*/
/* 34297*/        OPC_CheckCondCode, ISD::SETULT,
/* 34299*/        OPC_MoveParent,
/* 34300*/        OPC_CheckType, MVT::v4i32,
/* 34302*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34304*/        OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34307*/        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)
/* 34315*/      /*Scope*/ 15, /*->34331*/
/* 34316*/        OPC_CheckCondCode, ISD::SETEQ,
/* 34318*/        OPC_MoveParent,
/* 34319*/        OPC_CheckType, MVT::v4i32,
/* 34321*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34323*/        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)
/* 34331*/      /*Scope*/ 15, /*->34347*/
/* 34332*/        OPC_CheckCondCode, ISD::SETLE,
/* 34334*/        OPC_MoveParent,
/* 34335*/        OPC_CheckType, MVT::v4i32,
/* 34337*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34339*/        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)
/* 34347*/      /*Scope*/ 15, /*->34363*/
/* 34348*/        OPC_CheckCondCode, ISD::SETULE,
/* 34350*/        OPC_MoveParent,
/* 34351*/        OPC_CheckType, MVT::v4i32,
/* 34353*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34355*/        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)
/* 34363*/      /*Scope*/ 15, /*->34379*/
/* 34364*/        OPC_CheckCondCode, ISD::SETLT,
/* 34366*/        OPC_MoveParent,
/* 34367*/        OPC_CheckType, MVT::v4i32,
/* 34369*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34371*/        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)
/* 34379*/      /*Scope*/ 15, /*->34395*/
/* 34380*/        OPC_CheckCondCode, ISD::SETULT,
/* 34382*/        OPC_MoveParent,
/* 34383*/        OPC_CheckType, MVT::v4i32,
/* 34385*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34387*/        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)
/* 34395*/      0, /*End of Scope*/
/* 34396*/    /*Scope*/ 53|128,1/*181*/, /*->34579*/
/* 34398*/      OPC_CheckChild0Type, MVT::v2i64,
/* 34400*/      OPC_RecordChild1, // #1 = $imm
/* 34401*/      OPC_MoveChild2,
/* 34402*/      OPC_Scope, 18, /*->34422*/ // 10 children in Scope
/* 34404*/        OPC_CheckCondCode, ISD::SETEQ,
/* 34406*/        OPC_MoveParent,
/* 34407*/        OPC_CheckType, MVT::v2i64,
/* 34409*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34411*/        OPC_CheckComplexPat, /*CP*/23, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34414*/        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)
/* 34422*/      /*Scope*/ 18, /*->34441*/
/* 34423*/        OPC_CheckCondCode, ISD::SETLE,
/* 34425*/        OPC_MoveParent,
/* 34426*/        OPC_CheckType, MVT::v2i64,
/* 34428*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34430*/        OPC_CheckComplexPat, /*CP*/23, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34433*/        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)
/* 34441*/      /*Scope*/ 18, /*->34460*/
/* 34442*/        OPC_CheckCondCode, ISD::SETULE,
/* 34444*/        OPC_MoveParent,
/* 34445*/        OPC_CheckType, MVT::v2i64,
/* 34447*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34449*/        OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34452*/        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)
/* 34460*/      /*Scope*/ 18, /*->34479*/
/* 34461*/        OPC_CheckCondCode, ISD::SETLT,
/* 34463*/        OPC_MoveParent,
/* 34464*/        OPC_CheckType, MVT::v2i64,
/* 34466*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34468*/        OPC_CheckComplexPat, /*CP*/23, /*#*/1, // selectVSplatSimm5:$imm #2
/* 34471*/        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)
/* 34479*/      /*Scope*/ 18, /*->34498*/
/* 34480*/        OPC_CheckCondCode, ISD::SETULT,
/* 34482*/        OPC_MoveParent,
/* 34483*/        OPC_CheckType, MVT::v2i64,
/* 34485*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34487*/        OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 34490*/        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)
/* 34498*/      /*Scope*/ 15, /*->34514*/
/* 34499*/        OPC_CheckCondCode, ISD::SETEQ,
/* 34501*/        OPC_MoveParent,
/* 34502*/        OPC_CheckType, MVT::v2i64,
/* 34504*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34506*/        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)
/* 34514*/      /*Scope*/ 15, /*->34530*/
/* 34515*/        OPC_CheckCondCode, ISD::SETLE,
/* 34517*/        OPC_MoveParent,
/* 34518*/        OPC_CheckType, MVT::v2i64,
/* 34520*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34522*/        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)
/* 34530*/      /*Scope*/ 15, /*->34546*/
/* 34531*/        OPC_CheckCondCode, ISD::SETULE,
/* 34533*/        OPC_MoveParent,
/* 34534*/        OPC_CheckType, MVT::v2i64,
/* 34536*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34538*/        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)
/* 34546*/      /*Scope*/ 15, /*->34562*/
/* 34547*/        OPC_CheckCondCode, ISD::SETLT,
/* 34549*/        OPC_MoveParent,
/* 34550*/        OPC_CheckType, MVT::v2i64,
/* 34552*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34554*/        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)
/* 34562*/      /*Scope*/ 15, /*->34578*/
/* 34563*/        OPC_CheckCondCode, ISD::SETULT,
/* 34565*/        OPC_MoveParent,
/* 34566*/        OPC_CheckType, MVT::v2i64,
/* 34568*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34570*/        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)
/* 34578*/      0, /*End of Scope*/
/* 34579*/    /*Scope*/ 38|128,1/*166*/, /*->34747*/
/* 34581*/      OPC_CheckChild0Type, MVT::v4f32,
/* 34583*/      OPC_RecordChild1, // #1 = $wt
/* 34584*/      OPC_MoveChild2,
/* 34585*/      OPC_Scope, 15, /*->34602*/ // 10 children in Scope
/* 34587*/        OPC_CheckCondCode, ISD::SETOEQ,
/* 34589*/        OPC_MoveParent,
/* 34590*/        OPC_CheckType, MVT::v4i32,
/* 34592*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34594*/        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)
/* 34602*/      /*Scope*/ 15, /*->34618*/
/* 34603*/        OPC_CheckCondCode, ISD::SETOLE,
/* 34605*/        OPC_MoveParent,
/* 34606*/        OPC_CheckType, MVT::v4i32,
/* 34608*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34610*/        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)
/* 34618*/      /*Scope*/ 15, /*->34634*/
/* 34619*/        OPC_CheckCondCode, ISD::SETOLT,
/* 34621*/        OPC_MoveParent,
/* 34622*/        OPC_CheckType, MVT::v4i32,
/* 34624*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34626*/        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)
/* 34634*/      /*Scope*/ 15, /*->34650*/
/* 34635*/        OPC_CheckCondCode, ISD::SETONE,
/* 34637*/        OPC_MoveParent,
/* 34638*/        OPC_CheckType, MVT::v4i32,
/* 34640*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34642*/        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)
/* 34650*/      /*Scope*/ 15, /*->34666*/
/* 34651*/        OPC_CheckCondCode, ISD::SETO,
/* 34653*/        OPC_MoveParent,
/* 34654*/        OPC_CheckType, MVT::v4i32,
/* 34656*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34658*/        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)
/* 34666*/      /*Scope*/ 15, /*->34682*/
/* 34667*/        OPC_CheckCondCode, ISD::SETUEQ,
/* 34669*/        OPC_MoveParent,
/* 34670*/        OPC_CheckType, MVT::v4i32,
/* 34672*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34674*/        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)
/* 34682*/      /*Scope*/ 15, /*->34698*/
/* 34683*/        OPC_CheckCondCode, ISD::SETULE,
/* 34685*/        OPC_MoveParent,
/* 34686*/        OPC_CheckType, MVT::v4i32,
/* 34688*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34690*/        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)
/* 34698*/      /*Scope*/ 15, /*->34714*/
/* 34699*/        OPC_CheckCondCode, ISD::SETULT,
/* 34701*/        OPC_MoveParent,
/* 34702*/        OPC_CheckType, MVT::v4i32,
/* 34704*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34706*/        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)
/* 34714*/      /*Scope*/ 15, /*->34730*/
/* 34715*/        OPC_CheckCondCode, ISD::SETUO,
/* 34717*/        OPC_MoveParent,
/* 34718*/        OPC_CheckType, MVT::v4i32,
/* 34720*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34722*/        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)
/* 34730*/      /*Scope*/ 15, /*->34746*/
/* 34731*/        OPC_CheckCondCode, ISD::SETUNE,
/* 34733*/        OPC_MoveParent,
/* 34734*/        OPC_CheckType, MVT::v4i32,
/* 34736*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34738*/        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)
/* 34746*/      0, /*End of Scope*/
/* 34747*/    /*Scope*/ 38|128,1/*166*/, /*->34915*/
/* 34749*/      OPC_CheckChild0Type, MVT::v2f64,
/* 34751*/      OPC_RecordChild1, // #1 = $wt
/* 34752*/      OPC_MoveChild2,
/* 34753*/      OPC_Scope, 15, /*->34770*/ // 10 children in Scope
/* 34755*/        OPC_CheckCondCode, ISD::SETOEQ,
/* 34757*/        OPC_MoveParent,
/* 34758*/        OPC_CheckType, MVT::v2i64,
/* 34760*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34762*/        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)
/* 34770*/      /*Scope*/ 15, /*->34786*/
/* 34771*/        OPC_CheckCondCode, ISD::SETOLE,
/* 34773*/        OPC_MoveParent,
/* 34774*/        OPC_CheckType, MVT::v2i64,
/* 34776*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34778*/        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)
/* 34786*/      /*Scope*/ 15, /*->34802*/
/* 34787*/        OPC_CheckCondCode, ISD::SETOLT,
/* 34789*/        OPC_MoveParent,
/* 34790*/        OPC_CheckType, MVT::v2i64,
/* 34792*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34794*/        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)
/* 34802*/      /*Scope*/ 15, /*->34818*/
/* 34803*/        OPC_CheckCondCode, ISD::SETONE,
/* 34805*/        OPC_MoveParent,
/* 34806*/        OPC_CheckType, MVT::v2i64,
/* 34808*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34810*/        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)
/* 34818*/      /*Scope*/ 15, /*->34834*/
/* 34819*/        OPC_CheckCondCode, ISD::SETO,
/* 34821*/        OPC_MoveParent,
/* 34822*/        OPC_CheckType, MVT::v2i64,
/* 34824*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34826*/        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)
/* 34834*/      /*Scope*/ 15, /*->34850*/
/* 34835*/        OPC_CheckCondCode, ISD::SETUEQ,
/* 34837*/        OPC_MoveParent,
/* 34838*/        OPC_CheckType, MVT::v2i64,
/* 34840*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34842*/        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)
/* 34850*/      /*Scope*/ 15, /*->34866*/
/* 34851*/        OPC_CheckCondCode, ISD::SETULE,
/* 34853*/        OPC_MoveParent,
/* 34854*/        OPC_CheckType, MVT::v2i64,
/* 34856*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34858*/        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)
/* 34866*/      /*Scope*/ 15, /*->34882*/
/* 34867*/        OPC_CheckCondCode, ISD::SETULT,
/* 34869*/        OPC_MoveParent,
/* 34870*/        OPC_CheckType, MVT::v2i64,
/* 34872*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34874*/        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)
/* 34882*/      /*Scope*/ 15, /*->34898*/
/* 34883*/        OPC_CheckCondCode, ISD::SETUO,
/* 34885*/        OPC_MoveParent,
/* 34886*/        OPC_CheckType, MVT::v2i64,
/* 34888*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34890*/        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)
/* 34898*/      /*Scope*/ 15, /*->34914*/
/* 34899*/        OPC_CheckCondCode, ISD::SETUNE,
/* 34901*/        OPC_MoveParent,
/* 34902*/        OPC_CheckType, MVT::v2i64,
/* 34904*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 34906*/        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)
/* 34914*/      0, /*End of Scope*/
/* 34915*/    0, /*End of Scope*/
/* 34916*/  /*SwitchOpcode*/ 76, TARGET_VAL(MipsISD::FPBrcond),// ->34995
/* 34919*/    OPC_RecordNode, // #0 = 'MipsFPBrcond' chained node
/* 34920*/    OPC_CaptureGlueInput,
/* 34921*/    OPC_Scope, 35, /*->34958*/ // 2 children in Scope
/* 34923*/      OPC_CheckChild1Integer, 0, 
/* 34925*/      OPC_CheckChild1Type, MVT::i32,
/* 34927*/      OPC_RecordChild2, // #1 = $fcc
/* 34928*/      OPC_RecordChild3, // #2 = $offset
/* 34929*/      OPC_MoveChild3,
/* 34930*/      OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 34933*/      OPC_MoveParent,
/* 34934*/      OPC_Scope, 10, /*->34946*/ // 2 children in Scope
/* 34936*/        OPC_CheckPatternPredicate, 63, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 34938*/        OPC_EmitMergeInputChains1_0,
/* 34939*/        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)
/* 34946*/      /*Scope*/ 10, /*->34957*/
/* 34947*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 34949*/        OPC_EmitMergeInputChains1_0,
/* 34950*/        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)
/* 34957*/      0, /*End of Scope*/
/* 34958*/    /*Scope*/ 35, /*->34994*/
/* 34959*/      OPC_CheckChild1Integer, 1, 
/* 34961*/      OPC_CheckChild1Type, MVT::i32,
/* 34963*/      OPC_RecordChild2, // #1 = $fcc
/* 34964*/      OPC_RecordChild3, // #2 = $offset
/* 34965*/      OPC_MoveChild3,
/* 34966*/      OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 34969*/      OPC_MoveParent,
/* 34970*/      OPC_Scope, 10, /*->34982*/ // 2 children in Scope
/* 34972*/        OPC_CheckPatternPredicate, 63, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 34974*/        OPC_EmitMergeInputChains1_0,
/* 34975*/        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)
/* 34982*/      /*Scope*/ 10, /*->34993*/
/* 34983*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 34985*/        OPC_EmitMergeInputChains1_0,
/* 34986*/        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)
/* 34993*/      0, /*End of Scope*/
/* 34994*/    0, /*End of Scope*/
/* 34995*/  /*SwitchOpcode*/ 41|128,2/*297*/, TARGET_VAL(ISD::SUB),// ->35296
/* 34999*/    OPC_Scope, 14, /*->35015*/ // 2 children in Scope
/* 35001*/      OPC_CheckChild0Integer, 0, 
/* 35003*/      OPC_RecordChild1, // #0 = $r
/* 35004*/      OPC_CheckType, MVT::i32,
/* 35006*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 35008*/      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)
/* 35015*/    /*Scope*/ 22|128,2/*278*/, /*->35295*/
/* 35017*/      OPC_RecordChild0, // #0 = $rs
/* 35018*/      OPC_Scope, 7|128,1/*135*/, /*->35156*/ // 3 children in Scope
/* 35021*/        OPC_RecordChild1, // #1 = $rt
/* 35022*/        OPC_SwitchType /*6 cases */, 58, MVT::i32,// ->35083
/* 35025*/          OPC_Scope, 10, /*->35037*/ // 4 children in Scope
/* 35027*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 35029*/            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)
/* 35037*/          /*Scope*/ 10, /*->35048*/
/* 35038*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 35040*/            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)
/* 35048*/          /*Scope*/ 10, /*->35059*/
/* 35049*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 35051*/            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)
/* 35059*/          /*Scope*/ 22, /*->35082*/
/* 35060*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 35062*/            OPC_Scope, 8, /*->35072*/ // 2 children in Scope
/* 35064*/              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)
/* 35072*/            /*Scope*/ 8, /*->35081*/
/* 35073*/              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)
/* 35081*/            0, /*End of Scope*/
/* 35082*/          0, /*End of Scope*/
/* 35083*/        /*SwitchType*/ 10, MVT::i64,// ->35095
/* 35085*/          OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 35087*/          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)
/* 35095*/        /*SwitchType*/ 13, MVT::v16i8,// ->35110
/* 35097*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35099*/          OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 35102*/          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)
/* 35110*/        /*SwitchType*/ 13, MVT::v8i16,// ->35125
/* 35112*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35114*/          OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 35117*/          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)
/* 35125*/        /*SwitchType*/ 13, MVT::v4i32,// ->35140
/* 35127*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35129*/          OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 35132*/          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)
/* 35140*/        /*SwitchType*/ 13, MVT::v2i64,// ->35155
/* 35142*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35144*/          OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 35147*/          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)
/* 35155*/        0, // EndSwitchType
/* 35156*/      /*Scope*/ 61, /*->35218*/
/* 35157*/        OPC_MoveChild1,
/* 35158*/        OPC_CheckOpcode, TARGET_VAL(ISD::MUL),
/* 35161*/        OPC_RecordChild0, // #1 = $ws
/* 35162*/        OPC_RecordChild1, // #2 = $wt
/* 35163*/        OPC_MoveParent,
/* 35164*/        OPC_SwitchType /*4 cases */, 11, MVT::v16i8,// ->35178
/* 35167*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35169*/          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)
/* 35178*/        /*SwitchType*/ 11, MVT::v8i16,// ->35191
/* 35180*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35182*/          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)
/* 35191*/        /*SwitchType*/ 11, MVT::v4i32,// ->35204
/* 35193*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35195*/          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)
/* 35204*/        /*SwitchType*/ 11, MVT::v2i64,// ->35217
/* 35206*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35208*/          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)
/* 35217*/        0, // EndSwitchType
/* 35218*/      /*Scope*/ 75, /*->35294*/
/* 35219*/        OPC_RecordChild1, // #1 = $b
/* 35220*/        OPC_SwitchType /*6 cases */, 10, MVT::v2i16,// ->35233
/* 35223*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 35225*/          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)
/* 35233*/        /*SwitchType*/ 10, MVT::v4i8,// ->35245
/* 35235*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 35237*/          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)
/* 35245*/        /*SwitchType*/ 10, MVT::v16i8,// ->35257
/* 35247*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35249*/          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)
/* 35257*/        /*SwitchType*/ 10, MVT::v8i16,// ->35269
/* 35259*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35261*/          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)
/* 35269*/        /*SwitchType*/ 10, MVT::v4i32,// ->35281
/* 35271*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35273*/          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)
/* 35281*/        /*SwitchType*/ 10, MVT::v2i64,// ->35293
/* 35283*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 35285*/          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)
/* 35293*/        0, // EndSwitchType
/* 35294*/      0, /*End of Scope*/
/* 35295*/    0, /*End of Scope*/
/* 35296*/  /*SwitchOpcode*/ 0|128,17/*2176*/, TARGET_VAL(ISD::OR),// ->37476
/* 35300*/    OPC_Scope, 20|128,4/*532*/, /*->35835*/ // 13 children in Scope
/* 35303*/      OPC_RecordChild0, // #0 = $rs
/* 35304*/      OPC_Scope, 28|128,1/*156*/, /*->35463*/ // 2 children in Scope
/* 35307*/        OPC_RecordChild1, // #1 = $imm16
/* 35308*/        OPC_Scope, 78, /*->35388*/ // 3 children in Scope
/* 35310*/          OPC_MoveChild1,
/* 35311*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35314*/          OPC_CheckPredicate, 21, // Predicate_immZExt16
/* 35316*/          OPC_MoveParent,
/* 35317*/          OPC_SwitchType /*2 cases */, 50, MVT::i32,// ->35370
/* 35320*/            OPC_Scope, 15, /*->35337*/ // 3 children in Scope
/* 35322*/              OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 35324*/              OPC_EmitConvertToTarget, 1,
/* 35326*/              OPC_EmitNodeXForm, 3, 2, // LO16
/* 35329*/              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))
/* 35337*/            /*Scope*/ 15, /*->35353*/
/* 35338*/              OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 35340*/              OPC_EmitConvertToTarget, 1,
/* 35342*/              OPC_EmitNodeXForm, 3, 2, // LO16
/* 35345*/              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))
/* 35353*/            /*Scope*/ 15, /*->35369*/
/* 35354*/              OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 35356*/              OPC_EmitConvertToTarget, 1,
/* 35358*/              OPC_EmitNodeXForm, 3, 2, // LO16
/* 35361*/              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))
/* 35369*/            0, /*End of Scope*/
/* 35370*/          /*SwitchType*/ 15, MVT::i64,// ->35387
/* 35372*/            OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 35374*/            OPC_EmitConvertToTarget, 1,
/* 35376*/            OPC_EmitNodeXForm, 3, 2, // LO16
/* 35379*/            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))
/* 35387*/          0, // EndSwitchType
/* 35388*/        /*Scope*/ 60, /*->35449*/
/* 35389*/          OPC_CheckType, MVT::i32,
/* 35391*/          OPC_Scope, 10, /*->35403*/ // 4 children in Scope
/* 35393*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 35395*/            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)
/* 35403*/          /*Scope*/ 10, /*->35414*/
/* 35404*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 35406*/            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)
/* 35414*/          /*Scope*/ 22, /*->35437*/
/* 35415*/            OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 35417*/            OPC_Scope, 8, /*->35427*/ // 2 children in Scope
/* 35419*/              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)
/* 35427*/            /*Scope*/ 8, /*->35436*/
/* 35428*/              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)
/* 35436*/            0, /*End of Scope*/
/* 35437*/          /*Scope*/ 10, /*->35448*/
/* 35438*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 35440*/            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)
/* 35448*/          0, /*End of Scope*/
/* 35449*/        /*Scope*/ 12, /*->35462*/
/* 35450*/          OPC_CheckType, MVT::i64,
/* 35452*/          OPC_CheckPatternPredicate, 22, // (Subtarget->isGP64bit()) && (!Subtarget->inMips16Mode())
/* 35454*/          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)
/* 35462*/        0, /*End of Scope*/
/* 35463*/      /*Scope*/ 113|128,2/*369*/, /*->35834*/
/* 35465*/        OPC_MoveChild1,
/* 35466*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 35469*/        OPC_MoveChild0,
/* 35470*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35473*/        OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 35475*/        OPC_MoveParent,
/* 35476*/        OPC_MoveChild1,
/* 35477*/        OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 35480*/        OPC_Scope, 46|128,1/*174*/, /*->35657*/ // 2 children in Scope
/* 35483*/          OPC_RecordChild0, // #1 = $wt
/* 35484*/          OPC_MoveChild1,
/* 35485*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35488*/          OPC_MoveChild0,
/* 35489*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35492*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35494*/          OPC_CheckType, MVT::i32,
/* 35496*/          OPC_MoveParent,
/* 35497*/          OPC_MoveChild1,
/* 35498*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35501*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35503*/          OPC_CheckType, MVT::i32,
/* 35505*/          OPC_MoveParent,
/* 35506*/          OPC_MoveChild2,
/* 35507*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35510*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35512*/          OPC_CheckType, MVT::i32,
/* 35514*/          OPC_MoveParent,
/* 35515*/          OPC_MoveChild3,
/* 35516*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35519*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35521*/          OPC_CheckType, MVT::i32,
/* 35523*/          OPC_MoveParent,
/* 35524*/          OPC_MoveChild4,
/* 35525*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35528*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35530*/          OPC_CheckType, MVT::i32,
/* 35532*/          OPC_MoveParent,
/* 35533*/          OPC_MoveChild5,
/* 35534*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35537*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35539*/          OPC_CheckType, MVT::i32,
/* 35541*/          OPC_MoveParent,
/* 35542*/          OPC_MoveChild6,
/* 35543*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35546*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35548*/          OPC_CheckType, MVT::i32,
/* 35550*/          OPC_MoveParent,
/* 35551*/          OPC_MoveChild7,
/* 35552*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35555*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35557*/          OPC_CheckType, MVT::i32,
/* 35559*/          OPC_MoveParent,
/* 35560*/          OPC_MoveChild, 8,
/* 35562*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35565*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35567*/          OPC_CheckType, MVT::i32,
/* 35569*/          OPC_MoveParent,
/* 35570*/          OPC_MoveChild, 9,
/* 35572*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35575*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35577*/          OPC_CheckType, MVT::i32,
/* 35579*/          OPC_MoveParent,
/* 35580*/          OPC_MoveChild, 10,
/* 35582*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35585*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35587*/          OPC_CheckType, MVT::i32,
/* 35589*/          OPC_MoveParent,
/* 35590*/          OPC_MoveChild, 11,
/* 35592*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35595*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35597*/          OPC_CheckType, MVT::i32,
/* 35599*/          OPC_MoveParent,
/* 35600*/          OPC_MoveChild, 12,
/* 35602*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35605*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35607*/          OPC_CheckType, MVT::i32,
/* 35609*/          OPC_MoveParent,
/* 35610*/          OPC_MoveChild, 13,
/* 35612*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35615*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35617*/          OPC_CheckType, MVT::i32,
/* 35619*/          OPC_MoveParent,
/* 35620*/          OPC_MoveChild, 14,
/* 35622*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35625*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35627*/          OPC_CheckType, MVT::i32,
/* 35629*/          OPC_MoveParent,
/* 35630*/          OPC_MoveChild, 15,
/* 35632*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35635*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35637*/          OPC_CheckType, MVT::i32,
/* 35639*/          OPC_MoveParent,
/* 35640*/          OPC_MoveParent,
/* 35641*/          OPC_CheckType, MVT::v16i8,
/* 35643*/          OPC_MoveParent,
/* 35644*/          OPC_MoveParent,
/* 35645*/          OPC_CheckType, MVT::v16i8,
/* 35647*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 35649*/          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)
/* 35657*/        /*Scope*/ 46|128,1/*174*/, /*->35833*/
/* 35659*/          OPC_MoveChild0,
/* 35660*/          OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35663*/          OPC_MoveChild0,
/* 35664*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35667*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35669*/          OPC_CheckType, MVT::i32,
/* 35671*/          OPC_MoveParent,
/* 35672*/          OPC_MoveChild1,
/* 35673*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35676*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35678*/          OPC_CheckType, MVT::i32,
/* 35680*/          OPC_MoveParent,
/* 35681*/          OPC_MoveChild2,
/* 35682*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35685*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35687*/          OPC_CheckType, MVT::i32,
/* 35689*/          OPC_MoveParent,
/* 35690*/          OPC_MoveChild3,
/* 35691*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35694*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35696*/          OPC_CheckType, MVT::i32,
/* 35698*/          OPC_MoveParent,
/* 35699*/          OPC_MoveChild4,
/* 35700*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35703*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35705*/          OPC_CheckType, MVT::i32,
/* 35707*/          OPC_MoveParent,
/* 35708*/          OPC_MoveChild5,
/* 35709*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35712*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35714*/          OPC_CheckType, MVT::i32,
/* 35716*/          OPC_MoveParent,
/* 35717*/          OPC_MoveChild6,
/* 35718*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35721*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35723*/          OPC_CheckType, MVT::i32,
/* 35725*/          OPC_MoveParent,
/* 35726*/          OPC_MoveChild7,
/* 35727*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35730*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35732*/          OPC_CheckType, MVT::i32,
/* 35734*/          OPC_MoveParent,
/* 35735*/          OPC_MoveChild, 8,
/* 35737*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35740*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35742*/          OPC_CheckType, MVT::i32,
/* 35744*/          OPC_MoveParent,
/* 35745*/          OPC_MoveChild, 9,
/* 35747*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35750*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35752*/          OPC_CheckType, MVT::i32,
/* 35754*/          OPC_MoveParent,
/* 35755*/          OPC_MoveChild, 10,
/* 35757*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35760*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35762*/          OPC_CheckType, MVT::i32,
/* 35764*/          OPC_MoveParent,
/* 35765*/          OPC_MoveChild, 11,
/* 35767*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35770*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35772*/          OPC_CheckType, MVT::i32,
/* 35774*/          OPC_MoveParent,
/* 35775*/          OPC_MoveChild, 12,
/* 35777*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35780*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35782*/          OPC_CheckType, MVT::i32,
/* 35784*/          OPC_MoveParent,
/* 35785*/          OPC_MoveChild, 13,
/* 35787*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35790*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35792*/          OPC_CheckType, MVT::i32,
/* 35794*/          OPC_MoveParent,
/* 35795*/          OPC_MoveChild, 14,
/* 35797*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35800*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35802*/          OPC_CheckType, MVT::i32,
/* 35804*/          OPC_MoveParent,
/* 35805*/          OPC_MoveChild, 15,
/* 35807*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35810*/          OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35812*/          OPC_CheckType, MVT::i32,
/* 35814*/          OPC_MoveParent,
/* 35815*/          OPC_MoveParent,
/* 35816*/          OPC_RecordChild1, // #1 = $wt
/* 35817*/          OPC_CheckType, MVT::v16i8,
/* 35819*/          OPC_MoveParent,
/* 35820*/          OPC_MoveParent,
/* 35821*/          OPC_CheckType, MVT::v16i8,
/* 35823*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 35825*/          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)
/* 35833*/        0, /*End of Scope*/
/* 35834*/      0, /*End of Scope*/
/* 35835*/    /*Scope*/ 115|128,2/*371*/, /*->36208*/
/* 35837*/      OPC_MoveChild0,
/* 35838*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 35841*/      OPC_MoveChild0,
/* 35842*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35845*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 35847*/      OPC_MoveParent,
/* 35848*/      OPC_MoveChild1,
/* 35849*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 35852*/      OPC_Scope, 47|128,1/*175*/, /*->36030*/ // 2 children in Scope
/* 35855*/        OPC_RecordChild0, // #0 = $wt
/* 35856*/        OPC_MoveChild1,
/* 35857*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 35860*/        OPC_MoveChild0,
/* 35861*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35864*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35866*/        OPC_CheckType, MVT::i32,
/* 35868*/        OPC_MoveParent,
/* 35869*/        OPC_MoveChild1,
/* 35870*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35873*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35875*/        OPC_CheckType, MVT::i32,
/* 35877*/        OPC_MoveParent,
/* 35878*/        OPC_MoveChild2,
/* 35879*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35882*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35884*/        OPC_CheckType, MVT::i32,
/* 35886*/        OPC_MoveParent,
/* 35887*/        OPC_MoveChild3,
/* 35888*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35891*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35893*/        OPC_CheckType, MVT::i32,
/* 35895*/        OPC_MoveParent,
/* 35896*/        OPC_MoveChild4,
/* 35897*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35900*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35902*/        OPC_CheckType, MVT::i32,
/* 35904*/        OPC_MoveParent,
/* 35905*/        OPC_MoveChild5,
/* 35906*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35909*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35911*/        OPC_CheckType, MVT::i32,
/* 35913*/        OPC_MoveParent,
/* 35914*/        OPC_MoveChild6,
/* 35915*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35918*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35920*/        OPC_CheckType, MVT::i32,
/* 35922*/        OPC_MoveParent,
/* 35923*/        OPC_MoveChild7,
/* 35924*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35927*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35929*/        OPC_CheckType, MVT::i32,
/* 35931*/        OPC_MoveParent,
/* 35932*/        OPC_MoveChild, 8,
/* 35934*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35937*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35939*/        OPC_CheckType, MVT::i32,
/* 35941*/        OPC_MoveParent,
/* 35942*/        OPC_MoveChild, 9,
/* 35944*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35947*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35949*/        OPC_CheckType, MVT::i32,
/* 35951*/        OPC_MoveParent,
/* 35952*/        OPC_MoveChild, 10,
/* 35954*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35957*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35959*/        OPC_CheckType, MVT::i32,
/* 35961*/        OPC_MoveParent,
/* 35962*/        OPC_MoveChild, 11,
/* 35964*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35967*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35969*/        OPC_CheckType, MVT::i32,
/* 35971*/        OPC_MoveParent,
/* 35972*/        OPC_MoveChild, 12,
/* 35974*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35977*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35979*/        OPC_CheckType, MVT::i32,
/* 35981*/        OPC_MoveParent,
/* 35982*/        OPC_MoveChild, 13,
/* 35984*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35987*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35989*/        OPC_CheckType, MVT::i32,
/* 35991*/        OPC_MoveParent,
/* 35992*/        OPC_MoveChild, 14,
/* 35994*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 35997*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 35999*/        OPC_CheckType, MVT::i32,
/* 36001*/        OPC_MoveParent,
/* 36002*/        OPC_MoveChild, 15,
/* 36004*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36007*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36009*/        OPC_CheckType, MVT::i32,
/* 36011*/        OPC_MoveParent,
/* 36012*/        OPC_MoveParent,
/* 36013*/        OPC_CheckType, MVT::v16i8,
/* 36015*/        OPC_MoveParent,
/* 36016*/        OPC_MoveParent,
/* 36017*/        OPC_RecordChild1, // #1 = $ws
/* 36018*/        OPC_CheckType, MVT::v16i8,
/* 36020*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36022*/        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)
/* 36030*/      /*Scope*/ 47|128,1/*175*/, /*->36207*/
/* 36032*/        OPC_MoveChild0,
/* 36033*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36036*/        OPC_MoveChild0,
/* 36037*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36040*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36042*/        OPC_CheckType, MVT::i32,
/* 36044*/        OPC_MoveParent,
/* 36045*/        OPC_MoveChild1,
/* 36046*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36049*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36051*/        OPC_CheckType, MVT::i32,
/* 36053*/        OPC_MoveParent,
/* 36054*/        OPC_MoveChild2,
/* 36055*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36058*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36060*/        OPC_CheckType, MVT::i32,
/* 36062*/        OPC_MoveParent,
/* 36063*/        OPC_MoveChild3,
/* 36064*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36067*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36069*/        OPC_CheckType, MVT::i32,
/* 36071*/        OPC_MoveParent,
/* 36072*/        OPC_MoveChild4,
/* 36073*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36076*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36078*/        OPC_CheckType, MVT::i32,
/* 36080*/        OPC_MoveParent,
/* 36081*/        OPC_MoveChild5,
/* 36082*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36085*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36087*/        OPC_CheckType, MVT::i32,
/* 36089*/        OPC_MoveParent,
/* 36090*/        OPC_MoveChild6,
/* 36091*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36094*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36096*/        OPC_CheckType, MVT::i32,
/* 36098*/        OPC_MoveParent,
/* 36099*/        OPC_MoveChild7,
/* 36100*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36103*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36105*/        OPC_CheckType, MVT::i32,
/* 36107*/        OPC_MoveParent,
/* 36108*/        OPC_MoveChild, 8,
/* 36110*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36113*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36115*/        OPC_CheckType, MVT::i32,
/* 36117*/        OPC_MoveParent,
/* 36118*/        OPC_MoveChild, 9,
/* 36120*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36123*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36125*/        OPC_CheckType, MVT::i32,
/* 36127*/        OPC_MoveParent,
/* 36128*/        OPC_MoveChild, 10,
/* 36130*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36133*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36135*/        OPC_CheckType, MVT::i32,
/* 36137*/        OPC_MoveParent,
/* 36138*/        OPC_MoveChild, 11,
/* 36140*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36143*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36145*/        OPC_CheckType, MVT::i32,
/* 36147*/        OPC_MoveParent,
/* 36148*/        OPC_MoveChild, 12,
/* 36150*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36153*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36155*/        OPC_CheckType, MVT::i32,
/* 36157*/        OPC_MoveParent,
/* 36158*/        OPC_MoveChild, 13,
/* 36160*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36163*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36165*/        OPC_CheckType, MVT::i32,
/* 36167*/        OPC_MoveParent,
/* 36168*/        OPC_MoveChild, 14,
/* 36170*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36173*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36175*/        OPC_CheckType, MVT::i32,
/* 36177*/        OPC_MoveParent,
/* 36178*/        OPC_MoveChild, 15,
/* 36180*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36183*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 36185*/        OPC_CheckType, MVT::i32,
/* 36187*/        OPC_MoveParent,
/* 36188*/        OPC_MoveParent,
/* 36189*/        OPC_RecordChild1, // #0 = $wt
/* 36190*/        OPC_CheckType, MVT::v16i8,
/* 36192*/        OPC_MoveParent,
/* 36193*/        OPC_MoveParent,
/* 36194*/        OPC_RecordChild1, // #1 = $ws
/* 36195*/        OPC_CheckType, MVT::v16i8,
/* 36197*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36199*/        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)
/* 36207*/      0, /*End of Scope*/
/* 36208*/    /*Scope*/ 80|128,1/*208*/, /*->36418*/
/* 36210*/      OPC_RecordChild0, // #0 = $ws
/* 36211*/      OPC_MoveChild1,
/* 36212*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36215*/      OPC_MoveChild0,
/* 36216*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36219*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 36221*/      OPC_MoveParent,
/* 36222*/      OPC_MoveChild1,
/* 36223*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 36226*/      OPC_Scope, 94, /*->36322*/ // 2 children in Scope
/* 36228*/        OPC_RecordChild0, // #1 = $wt
/* 36229*/        OPC_MoveChild1,
/* 36230*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36233*/        OPC_MoveChild0,
/* 36234*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36237*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36239*/        OPC_CheckType, MVT::i32,
/* 36241*/        OPC_MoveParent,
/* 36242*/        OPC_MoveChild1,
/* 36243*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36246*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36248*/        OPC_CheckType, MVT::i32,
/* 36250*/        OPC_MoveParent,
/* 36251*/        OPC_MoveChild2,
/* 36252*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36255*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36257*/        OPC_CheckType, MVT::i32,
/* 36259*/        OPC_MoveParent,
/* 36260*/        OPC_MoveChild3,
/* 36261*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36264*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36266*/        OPC_CheckType, MVT::i32,
/* 36268*/        OPC_MoveParent,
/* 36269*/        OPC_MoveChild4,
/* 36270*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36273*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36275*/        OPC_CheckType, MVT::i32,
/* 36277*/        OPC_MoveParent,
/* 36278*/        OPC_MoveChild5,
/* 36279*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36282*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36284*/        OPC_CheckType, MVT::i32,
/* 36286*/        OPC_MoveParent,
/* 36287*/        OPC_MoveChild6,
/* 36288*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36291*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36293*/        OPC_CheckType, MVT::i32,
/* 36295*/        OPC_MoveParent,
/* 36296*/        OPC_MoveChild7,
/* 36297*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36300*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36302*/        OPC_CheckType, MVT::i32,
/* 36304*/        OPC_MoveParent,
/* 36305*/        OPC_MoveParent,
/* 36306*/        OPC_CheckType, MVT::v8i16,
/* 36308*/        OPC_MoveParent,
/* 36309*/        OPC_MoveParent,
/* 36310*/        OPC_CheckType, MVT::v8i16,
/* 36312*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36314*/        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)
/* 36322*/      /*Scope*/ 94, /*->36417*/
/* 36323*/        OPC_MoveChild0,
/* 36324*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36327*/        OPC_MoveChild0,
/* 36328*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36331*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36333*/        OPC_CheckType, MVT::i32,
/* 36335*/        OPC_MoveParent,
/* 36336*/        OPC_MoveChild1,
/* 36337*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36340*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36342*/        OPC_CheckType, MVT::i32,
/* 36344*/        OPC_MoveParent,
/* 36345*/        OPC_MoveChild2,
/* 36346*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36349*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36351*/        OPC_CheckType, MVT::i32,
/* 36353*/        OPC_MoveParent,
/* 36354*/        OPC_MoveChild3,
/* 36355*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36358*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36360*/        OPC_CheckType, MVT::i32,
/* 36362*/        OPC_MoveParent,
/* 36363*/        OPC_MoveChild4,
/* 36364*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36367*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36369*/        OPC_CheckType, MVT::i32,
/* 36371*/        OPC_MoveParent,
/* 36372*/        OPC_MoveChild5,
/* 36373*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36376*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36378*/        OPC_CheckType, MVT::i32,
/* 36380*/        OPC_MoveParent,
/* 36381*/        OPC_MoveChild6,
/* 36382*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36385*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36387*/        OPC_CheckType, MVT::i32,
/* 36389*/        OPC_MoveParent,
/* 36390*/        OPC_MoveChild7,
/* 36391*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36394*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36396*/        OPC_CheckType, MVT::i32,
/* 36398*/        OPC_MoveParent,
/* 36399*/        OPC_MoveParent,
/* 36400*/        OPC_RecordChild1, // #1 = $wt
/* 36401*/        OPC_CheckType, MVT::v8i16,
/* 36403*/        OPC_MoveParent,
/* 36404*/        OPC_MoveParent,
/* 36405*/        OPC_CheckType, MVT::v8i16,
/* 36407*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36409*/        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)
/* 36417*/      0, /*End of Scope*/
/* 36418*/    /*Scope*/ 81|128,1/*209*/, /*->36629*/
/* 36420*/      OPC_MoveChild0,
/* 36421*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36424*/      OPC_MoveChild0,
/* 36425*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36428*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 36430*/      OPC_MoveParent,
/* 36431*/      OPC_MoveChild1,
/* 36432*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 36435*/      OPC_Scope, 95, /*->36532*/ // 2 children in Scope
/* 36437*/        OPC_RecordChild0, // #0 = $wt
/* 36438*/        OPC_MoveChild1,
/* 36439*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36442*/        OPC_MoveChild0,
/* 36443*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36446*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36448*/        OPC_CheckType, MVT::i32,
/* 36450*/        OPC_MoveParent,
/* 36451*/        OPC_MoveChild1,
/* 36452*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36455*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36457*/        OPC_CheckType, MVT::i32,
/* 36459*/        OPC_MoveParent,
/* 36460*/        OPC_MoveChild2,
/* 36461*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36464*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36466*/        OPC_CheckType, MVT::i32,
/* 36468*/        OPC_MoveParent,
/* 36469*/        OPC_MoveChild3,
/* 36470*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36473*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36475*/        OPC_CheckType, MVT::i32,
/* 36477*/        OPC_MoveParent,
/* 36478*/        OPC_MoveChild4,
/* 36479*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36482*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36484*/        OPC_CheckType, MVT::i32,
/* 36486*/        OPC_MoveParent,
/* 36487*/        OPC_MoveChild5,
/* 36488*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36491*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36493*/        OPC_CheckType, MVT::i32,
/* 36495*/        OPC_MoveParent,
/* 36496*/        OPC_MoveChild6,
/* 36497*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36500*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36502*/        OPC_CheckType, MVT::i32,
/* 36504*/        OPC_MoveParent,
/* 36505*/        OPC_MoveChild7,
/* 36506*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36509*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36511*/        OPC_CheckType, MVT::i32,
/* 36513*/        OPC_MoveParent,
/* 36514*/        OPC_MoveParent,
/* 36515*/        OPC_CheckType, MVT::v8i16,
/* 36517*/        OPC_MoveParent,
/* 36518*/        OPC_MoveParent,
/* 36519*/        OPC_RecordChild1, // #1 = $ws
/* 36520*/        OPC_CheckType, MVT::v8i16,
/* 36522*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36524*/        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)
/* 36532*/      /*Scope*/ 95, /*->36628*/
/* 36533*/        OPC_MoveChild0,
/* 36534*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36537*/        OPC_MoveChild0,
/* 36538*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36541*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36543*/        OPC_CheckType, MVT::i32,
/* 36545*/        OPC_MoveParent,
/* 36546*/        OPC_MoveChild1,
/* 36547*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36550*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36552*/        OPC_CheckType, MVT::i32,
/* 36554*/        OPC_MoveParent,
/* 36555*/        OPC_MoveChild2,
/* 36556*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36559*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36561*/        OPC_CheckType, MVT::i32,
/* 36563*/        OPC_MoveParent,
/* 36564*/        OPC_MoveChild3,
/* 36565*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36568*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36570*/        OPC_CheckType, MVT::i32,
/* 36572*/        OPC_MoveParent,
/* 36573*/        OPC_MoveChild4,
/* 36574*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36577*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36579*/        OPC_CheckType, MVT::i32,
/* 36581*/        OPC_MoveParent,
/* 36582*/        OPC_MoveChild5,
/* 36583*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36586*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36588*/        OPC_CheckType, MVT::i32,
/* 36590*/        OPC_MoveParent,
/* 36591*/        OPC_MoveChild6,
/* 36592*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36595*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36597*/        OPC_CheckType, MVT::i32,
/* 36599*/        OPC_MoveParent,
/* 36600*/        OPC_MoveChild7,
/* 36601*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36604*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 36606*/        OPC_CheckType, MVT::i32,
/* 36608*/        OPC_MoveParent,
/* 36609*/        OPC_MoveParent,
/* 36610*/        OPC_RecordChild1, // #0 = $wt
/* 36611*/        OPC_CheckType, MVT::v8i16,
/* 36613*/        OPC_MoveParent,
/* 36614*/        OPC_MoveParent,
/* 36615*/        OPC_RecordChild1, // #1 = $ws
/* 36616*/        OPC_CheckType, MVT::v8i16,
/* 36618*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36620*/        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)
/* 36628*/      0, /*End of Scope*/
/* 36629*/    /*Scope*/ 8|128,1/*136*/, /*->36767*/
/* 36631*/      OPC_RecordChild0, // #0 = $ws
/* 36632*/      OPC_MoveChild1,
/* 36633*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36636*/      OPC_MoveChild0,
/* 36637*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36640*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 36642*/      OPC_MoveParent,
/* 36643*/      OPC_MoveChild1,
/* 36644*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 36647*/      OPC_Scope, 58, /*->36707*/ // 2 children in Scope
/* 36649*/        OPC_RecordChild0, // #1 = $wt
/* 36650*/        OPC_MoveChild1,
/* 36651*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36654*/        OPC_MoveChild0,
/* 36655*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36658*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36660*/        OPC_CheckType, MVT::i32,
/* 36662*/        OPC_MoveParent,
/* 36663*/        OPC_MoveChild1,
/* 36664*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36667*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36669*/        OPC_CheckType, MVT::i32,
/* 36671*/        OPC_MoveParent,
/* 36672*/        OPC_MoveChild2,
/* 36673*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36676*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36678*/        OPC_CheckType, MVT::i32,
/* 36680*/        OPC_MoveParent,
/* 36681*/        OPC_MoveChild3,
/* 36682*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36685*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36687*/        OPC_CheckType, MVT::i32,
/* 36689*/        OPC_MoveParent,
/* 36690*/        OPC_MoveParent,
/* 36691*/        OPC_CheckType, MVT::v4i32,
/* 36693*/        OPC_MoveParent,
/* 36694*/        OPC_MoveParent,
/* 36695*/        OPC_CheckType, MVT::v4i32,
/* 36697*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36699*/        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)
/* 36707*/      /*Scope*/ 58, /*->36766*/
/* 36708*/        OPC_MoveChild0,
/* 36709*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36712*/        OPC_MoveChild0,
/* 36713*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36716*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36718*/        OPC_CheckType, MVT::i32,
/* 36720*/        OPC_MoveParent,
/* 36721*/        OPC_MoveChild1,
/* 36722*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36725*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36727*/        OPC_CheckType, MVT::i32,
/* 36729*/        OPC_MoveParent,
/* 36730*/        OPC_MoveChild2,
/* 36731*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36734*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36736*/        OPC_CheckType, MVT::i32,
/* 36738*/        OPC_MoveParent,
/* 36739*/        OPC_MoveChild3,
/* 36740*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36743*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36745*/        OPC_CheckType, MVT::i32,
/* 36747*/        OPC_MoveParent,
/* 36748*/        OPC_MoveParent,
/* 36749*/        OPC_RecordChild1, // #1 = $wt
/* 36750*/        OPC_CheckType, MVT::v4i32,
/* 36752*/        OPC_MoveParent,
/* 36753*/        OPC_MoveParent,
/* 36754*/        OPC_CheckType, MVT::v4i32,
/* 36756*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36758*/        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)
/* 36766*/      0, /*End of Scope*/
/* 36767*/    /*Scope*/ 9|128,1/*137*/, /*->36906*/
/* 36769*/      OPC_MoveChild0,
/* 36770*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36773*/      OPC_MoveChild0,
/* 36774*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36777*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 36779*/      OPC_MoveParent,
/* 36780*/      OPC_MoveChild1,
/* 36781*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 36784*/      OPC_Scope, 59, /*->36845*/ // 2 children in Scope
/* 36786*/        OPC_RecordChild0, // #0 = $wt
/* 36787*/        OPC_MoveChild1,
/* 36788*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36791*/        OPC_MoveChild0,
/* 36792*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36795*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36797*/        OPC_CheckType, MVT::i32,
/* 36799*/        OPC_MoveParent,
/* 36800*/        OPC_MoveChild1,
/* 36801*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36804*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36806*/        OPC_CheckType, MVT::i32,
/* 36808*/        OPC_MoveParent,
/* 36809*/        OPC_MoveChild2,
/* 36810*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36813*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36815*/        OPC_CheckType, MVT::i32,
/* 36817*/        OPC_MoveParent,
/* 36818*/        OPC_MoveChild3,
/* 36819*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36822*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36824*/        OPC_CheckType, MVT::i32,
/* 36826*/        OPC_MoveParent,
/* 36827*/        OPC_MoveParent,
/* 36828*/        OPC_CheckType, MVT::v4i32,
/* 36830*/        OPC_MoveParent,
/* 36831*/        OPC_MoveParent,
/* 36832*/        OPC_RecordChild1, // #1 = $ws
/* 36833*/        OPC_CheckType, MVT::v4i32,
/* 36835*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36837*/        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)
/* 36845*/      /*Scope*/ 59, /*->36905*/
/* 36846*/        OPC_MoveChild0,
/* 36847*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36850*/        OPC_MoveChild0,
/* 36851*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36854*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36856*/        OPC_CheckType, MVT::i32,
/* 36858*/        OPC_MoveParent,
/* 36859*/        OPC_MoveChild1,
/* 36860*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36863*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36865*/        OPC_CheckType, MVT::i32,
/* 36867*/        OPC_MoveParent,
/* 36868*/        OPC_MoveChild2,
/* 36869*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36872*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36874*/        OPC_CheckType, MVT::i32,
/* 36876*/        OPC_MoveParent,
/* 36877*/        OPC_MoveChild3,
/* 36878*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 36881*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 36883*/        OPC_CheckType, MVT::i32,
/* 36885*/        OPC_MoveParent,
/* 36886*/        OPC_MoveParent,
/* 36887*/        OPC_RecordChild1, // #0 = $wt
/* 36888*/        OPC_CheckType, MVT::v4i32,
/* 36890*/        OPC_MoveParent,
/* 36891*/        OPC_MoveParent,
/* 36892*/        OPC_RecordChild1, // #1 = $ws
/* 36893*/        OPC_CheckType, MVT::v4i32,
/* 36895*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36897*/        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)
/* 36905*/      0, /*End of Scope*/
/* 36906*/    /*Scope*/ 89, /*->36996*/
/* 36907*/      OPC_RecordChild0, // #0 = $ws
/* 36908*/      OPC_MoveChild1,
/* 36909*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 36912*/      OPC_MoveChild0,
/* 36913*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36916*/      OPC_MoveChild0,
/* 36917*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36920*/      OPC_CheckType, MVT::v4i32,
/* 36922*/      OPC_MoveParent,
/* 36923*/      OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 36925*/      OPC_MoveParent,
/* 36926*/      OPC_MoveChild1,
/* 36927*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 36930*/      OPC_Scope, 31, /*->36963*/ // 2 children in Scope
/* 36932*/        OPC_RecordChild0, // #1 = $wt
/* 36933*/        OPC_MoveChild1,
/* 36934*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36937*/        OPC_MoveChild0,
/* 36938*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36941*/        OPC_CheckType, MVT::v4i32,
/* 36943*/        OPC_MoveParent,
/* 36944*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 36946*/        OPC_MoveParent,
/* 36947*/        OPC_CheckType, MVT::v2i64,
/* 36949*/        OPC_MoveParent,
/* 36950*/        OPC_MoveParent,
/* 36951*/        OPC_CheckType, MVT::v2i64,
/* 36953*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36955*/        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)
/* 36963*/      /*Scope*/ 31, /*->36995*/
/* 36964*/        OPC_MoveChild0,
/* 36965*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 36968*/        OPC_MoveChild0,
/* 36969*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 36972*/        OPC_CheckType, MVT::v4i32,
/* 36974*/        OPC_MoveParent,
/* 36975*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 36977*/        OPC_MoveParent,
/* 36978*/        OPC_RecordChild1, // #1 = $wt
/* 36979*/        OPC_CheckType, MVT::v2i64,
/* 36981*/        OPC_MoveParent,
/* 36982*/        OPC_MoveParent,
/* 36983*/        OPC_CheckType, MVT::v2i64,
/* 36985*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 36987*/        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)
/* 36995*/      0, /*End of Scope*/
/* 36996*/    /*Scope*/ 90, /*->37087*/
/* 36997*/      OPC_MoveChild0,
/* 36998*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 37001*/      OPC_MoveChild0,
/* 37002*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 37005*/      OPC_MoveChild0,
/* 37006*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37009*/      OPC_CheckType, MVT::v4i32,
/* 37011*/      OPC_MoveParent,
/* 37012*/      OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 37014*/      OPC_MoveParent,
/* 37015*/      OPC_MoveChild1,
/* 37016*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 37019*/      OPC_Scope, 32, /*->37053*/ // 2 children in Scope
/* 37021*/        OPC_RecordChild0, // #0 = $wt
/* 37022*/        OPC_MoveChild1,
/* 37023*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 37026*/        OPC_MoveChild0,
/* 37027*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37030*/        OPC_CheckType, MVT::v4i32,
/* 37032*/        OPC_MoveParent,
/* 37033*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 37035*/        OPC_MoveParent,
/* 37036*/        OPC_CheckType, MVT::v2i64,
/* 37038*/        OPC_MoveParent,
/* 37039*/        OPC_MoveParent,
/* 37040*/        OPC_RecordChild1, // #1 = $ws
/* 37041*/        OPC_CheckType, MVT::v2i64,
/* 37043*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 37045*/        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)
/* 37053*/      /*Scope*/ 32, /*->37086*/
/* 37054*/        OPC_MoveChild0,
/* 37055*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 37058*/        OPC_MoveChild0,
/* 37059*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37062*/        OPC_CheckType, MVT::v4i32,
/* 37064*/        OPC_MoveParent,
/* 37065*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 37067*/        OPC_MoveParent,
/* 37068*/        OPC_RecordChild1, // #0 = $wt
/* 37069*/        OPC_CheckType, MVT::v2i64,
/* 37071*/        OPC_MoveParent,
/* 37072*/        OPC_MoveParent,
/* 37073*/        OPC_RecordChild1, // #1 = $ws
/* 37074*/        OPC_CheckType, MVT::v2i64,
/* 37076*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 37078*/        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)
/* 37086*/      0, /*End of Scope*/
/* 37087*/    /*Scope*/ 35, /*->37123*/
/* 37088*/      OPC_RecordChild0, // #0 = $ws
/* 37089*/      OPC_MoveChild1,
/* 37090*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 37093*/      OPC_MoveChild0,
/* 37094*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 37097*/      OPC_MoveChild0,
/* 37098*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37101*/      OPC_CheckType, MVT::v4i32,
/* 37103*/      OPC_MoveParent,
/* 37104*/      OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 37106*/      OPC_MoveParent,
/* 37107*/      OPC_RecordChild1, // #1 = $wt
/* 37108*/      OPC_CheckChild1Type, MVT::v2i64,
/* 37110*/      OPC_MoveParent,
/* 37111*/      OPC_CheckType, MVT::v2i64,
/* 37113*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37115*/      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)
/* 37123*/    /*Scope*/ 35, /*->37159*/
/* 37124*/      OPC_MoveChild0,
/* 37125*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 37128*/      OPC_MoveChild0,
/* 37129*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 37132*/      OPC_MoveChild0,
/* 37133*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37136*/      OPC_CheckType, MVT::v4i32,
/* 37138*/      OPC_MoveParent,
/* 37139*/      OPC_CheckPredicate, 42, // Predicate_vsplati64_imm_eq_1
/* 37141*/      OPC_MoveParent,
/* 37142*/      OPC_RecordChild1, // #0 = $wt
/* 37143*/      OPC_CheckChild1Type, MVT::v2i64,
/* 37145*/      OPC_MoveParent,
/* 37146*/      OPC_RecordChild1, // #1 = $ws
/* 37147*/      OPC_CheckType, MVT::v2i64,
/* 37149*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37151*/      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)
/* 37159*/    /*Scope*/ 63, /*->37223*/
/* 37160*/      OPC_RecordChild0, // #0 = $ws
/* 37161*/      OPC_MoveChild1,
/* 37162*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 37165*/      OPC_MoveChild0,
/* 37166*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37169*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 37171*/      OPC_MoveParent,
/* 37172*/      OPC_RecordChild1, // #1 = $wt
/* 37173*/      OPC_Scope, 15, /*->37190*/ // 3 children in Scope
/* 37175*/        OPC_CheckChild1Type, MVT::v16i8,
/* 37177*/        OPC_MoveParent,
/* 37178*/        OPC_CheckType, MVT::v16i8,
/* 37180*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37182*/        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)
/* 37190*/      /*Scope*/ 15, /*->37206*/
/* 37191*/        OPC_CheckChild1Type, MVT::v8i16,
/* 37193*/        OPC_MoveParent,
/* 37194*/        OPC_CheckType, MVT::v8i16,
/* 37196*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37198*/        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)
/* 37206*/      /*Scope*/ 15, /*->37222*/
/* 37207*/        OPC_CheckChild1Type, MVT::v4i32,
/* 37209*/        OPC_MoveParent,
/* 37210*/        OPC_CheckType, MVT::v4i32,
/* 37212*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37214*/        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)
/* 37222*/      0, /*End of Scope*/
/* 37223*/    /*Scope*/ 65, /*->37289*/
/* 37224*/      OPC_MoveChild0,
/* 37225*/      OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 37228*/      OPC_MoveChild0,
/* 37229*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37232*/      OPC_CheckPredicate, 38, // Predicate_vsplat_imm_eq_1
/* 37234*/      OPC_MoveParent,
/* 37235*/      OPC_RecordChild1, // #0 = $wt
/* 37236*/      OPC_Scope, 16, /*->37254*/ // 3 children in Scope
/* 37238*/        OPC_CheckChild1Type, MVT::v16i8,
/* 37240*/        OPC_MoveParent,
/* 37241*/        OPC_RecordChild1, // #1 = $ws
/* 37242*/        OPC_CheckType, MVT::v16i8,
/* 37244*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37246*/        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)
/* 37254*/      /*Scope*/ 16, /*->37271*/
/* 37255*/        OPC_CheckChild1Type, MVT::v8i16,
/* 37257*/        OPC_MoveParent,
/* 37258*/        OPC_RecordChild1, // #1 = $ws
/* 37259*/        OPC_CheckType, MVT::v8i16,
/* 37261*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37263*/        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)
/* 37271*/      /*Scope*/ 16, /*->37288*/
/* 37272*/        OPC_CheckChild1Type, MVT::v4i32,
/* 37274*/        OPC_MoveParent,
/* 37275*/        OPC_RecordChild1, // #1 = $ws
/* 37276*/        OPC_CheckType, MVT::v4i32,
/* 37278*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37280*/        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)
/* 37288*/      0, /*End of Scope*/
/* 37289*/    /*Scope*/ 56|128,1/*184*/, /*->37475*/
/* 37291*/      OPC_RecordChild0, // #0 = $ws
/* 37292*/      OPC_RecordChild1, // #1 = $m
/* 37293*/      OPC_SwitchType /*4 cases */, 61, MVT::v16i8,// ->37357
/* 37296*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37298*/        OPC_Scope, 11, /*->37311*/ // 5 children in Scope
/* 37300*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 37303*/          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)
/* 37311*/        /*Scope*/ 11, /*->37323*/
/* 37312*/          OPC_CheckComplexPat, /*CP*/14, /*#*/1, // selectVSplatUimm8:$u8 #2
/* 37315*/          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)
/* 37323*/        /*Scope*/ 11, /*->37335*/
/* 37324*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 37327*/          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)
/* 37335*/        /*Scope*/ 11, /*->37347*/
/* 37336*/          OPC_CheckComplexPat, /*CP*/14, /*#*/0, // selectVSplatUimm8:$u8 #2
/* 37339*/          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)
/* 37347*/        /*Scope*/ 8, /*->37356*/
/* 37348*/          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)
/* 37356*/        0, /*End of Scope*/
/* 37357*/      /*SwitchType*/ 37, MVT::v8i16,// ->37396
/* 37359*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37361*/        OPC_Scope, 11, /*->37374*/ // 3 children in Scope
/* 37363*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 37366*/          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)
/* 37374*/        /*Scope*/ 11, /*->37386*/
/* 37375*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 37378*/          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)
/* 37386*/        /*Scope*/ 8, /*->37395*/
/* 37387*/          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)
/* 37395*/        0, /*End of Scope*/
/* 37396*/      /*SwitchType*/ 37, MVT::v4i32,// ->37435
/* 37398*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37400*/        OPC_Scope, 11, /*->37413*/ // 3 children in Scope
/* 37402*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 37405*/          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)
/* 37413*/        /*Scope*/ 11, /*->37425*/
/* 37414*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 37417*/          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)
/* 37425*/        /*Scope*/ 8, /*->37434*/
/* 37426*/          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)
/* 37434*/        0, /*End of Scope*/
/* 37435*/      /*SwitchType*/ 37, MVT::v2i64,// ->37474
/* 37437*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 37439*/        OPC_Scope, 11, /*->37452*/ // 3 children in Scope
/* 37441*/          OPC_CheckComplexPat, /*CP*/13, /*#*/1, // selectVSplatUimmPow2:$m #2
/* 37444*/          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)
/* 37452*/        /*Scope*/ 11, /*->37464*/
/* 37453*/          OPC_CheckComplexPat, /*CP*/13, /*#*/0, // selectVSplatUimmPow2:$m #2
/* 37456*/          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)
/* 37464*/        /*Scope*/ 8, /*->37473*/
/* 37465*/          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)
/* 37473*/        0, /*End of Scope*/
/* 37474*/      0, // EndSwitchType
/* 37475*/    0, /*End of Scope*/
/* 37476*/  /*SwitchOpcode*/ 10|128,8/*1034*/, TARGET_VAL(ISD::SHL),// ->38514
/* 37480*/    OPC_RecordChild0, // #0 = $rt
/* 37481*/    OPC_Scope, 99, /*->37582*/ // 5 children in Scope
/* 37483*/      OPC_RecordChild1, // #1 = $shamt
/* 37484*/      OPC_MoveChild1,
/* 37485*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37488*/      OPC_CheckType, MVT::i32,
/* 37490*/      OPC_Scope, 17, /*->37509*/ // 5 children in Scope
/* 37492*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 37494*/        OPC_MoveParent,
/* 37495*/        OPC_CheckType, MVT::i32,
/* 37497*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 37499*/        OPC_EmitConvertToTarget, 1,
/* 37501*/        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)
/* 37509*/      /*Scope*/ 17, /*->37527*/
/* 37510*/        OPC_CheckPredicate, 36, // Predicate_immZExt6
/* 37512*/        OPC_MoveParent,
/* 37513*/        OPC_CheckType, MVT::i64,
/* 37515*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 37517*/        OPC_EmitConvertToTarget, 1,
/* 37519*/        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)
/* 37527*/      /*Scope*/ 17, /*->37545*/
/* 37528*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 37530*/        OPC_MoveParent,
/* 37531*/        OPC_CheckType, MVT::i32,
/* 37533*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 37535*/        OPC_EmitConvertToTarget, 1,
/* 37537*/        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)
/* 37545*/      /*Scope*/ 17, /*->37563*/
/* 37546*/        OPC_CheckPredicate, 54, // Predicate_immZExt2Shift
/* 37548*/        OPC_MoveParent,
/* 37549*/        OPC_CheckType, MVT::i32,
/* 37551*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 37553*/        OPC_EmitConvertToTarget, 1,
/* 37555*/        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)
/* 37563*/      /*Scope*/ 17, /*->37581*/
/* 37564*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 37566*/        OPC_MoveParent,
/* 37567*/        OPC_CheckType, MVT::i32,
/* 37569*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 37571*/        OPC_EmitConvertToTarget, 1,
/* 37573*/        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)
/* 37581*/      0, /*End of Scope*/
/* 37582*/    /*Scope*/ 31, /*->37614*/
/* 37583*/      OPC_MoveChild1,
/* 37584*/      OPC_CheckOpcode, TARGET_VAL(ISD::TRUNCATE),
/* 37587*/      OPC_RecordChild0, // #1 = $rs
/* 37588*/      OPC_CheckType, MVT::i32,
/* 37590*/      OPC_MoveParent,
/* 37591*/      OPC_CheckType, MVT::i64,
/* 37593*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 37595*/      OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 37598*/      OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 37606*/      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] }))
/* 37614*/    /*Scope*/ 54, /*->37669*/
/* 37615*/      OPC_RecordChild1, // #1 = $rs
/* 37616*/      OPC_CheckChild1Type, MVT::i32,
/* 37618*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->37656
/* 37621*/        OPC_Scope, 10, /*->37633*/ // 3 children in Scope
/* 37623*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 37625*/          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)
/* 37633*/        /*Scope*/ 10, /*->37644*/
/* 37634*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 37636*/          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)
/* 37644*/        /*Scope*/ 10, /*->37655*/
/* 37645*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 37647*/          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)
/* 37655*/        0, /*End of Scope*/
/* 37656*/      /*SwitchType*/ 10, MVT::i64,// ->37668
/* 37658*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 37660*/        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)
/* 37668*/      0, // EndSwitchType
/* 37669*/    /*Scope*/ 82|128,5/*722*/, /*->38393*/
/* 37671*/      OPC_MoveChild1,
/* 37672*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 37675*/      OPC_Scope, 45|128,1/*173*/, /*->37851*/ // 8 children in Scope
/* 37678*/        OPC_RecordChild0, // #1 = $wt
/* 37679*/        OPC_MoveChild1,
/* 37680*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37683*/        OPC_MoveChild0,
/* 37684*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37687*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37689*/        OPC_CheckType, MVT::i32,
/* 37691*/        OPC_MoveParent,
/* 37692*/        OPC_MoveChild1,
/* 37693*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37696*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37698*/        OPC_CheckType, MVT::i32,
/* 37700*/        OPC_MoveParent,
/* 37701*/        OPC_MoveChild2,
/* 37702*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37705*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37707*/        OPC_CheckType, MVT::i32,
/* 37709*/        OPC_MoveParent,
/* 37710*/        OPC_MoveChild3,
/* 37711*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37714*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37716*/        OPC_CheckType, MVT::i32,
/* 37718*/        OPC_MoveParent,
/* 37719*/        OPC_MoveChild4,
/* 37720*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37723*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37725*/        OPC_CheckType, MVT::i32,
/* 37727*/        OPC_MoveParent,
/* 37728*/        OPC_MoveChild5,
/* 37729*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37732*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37734*/        OPC_CheckType, MVT::i32,
/* 37736*/        OPC_MoveParent,
/* 37737*/        OPC_MoveChild6,
/* 37738*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37741*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37743*/        OPC_CheckType, MVT::i32,
/* 37745*/        OPC_MoveParent,
/* 37746*/        OPC_MoveChild7,
/* 37747*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37750*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37752*/        OPC_CheckType, MVT::i32,
/* 37754*/        OPC_MoveParent,
/* 37755*/        OPC_MoveChild, 8,
/* 37757*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37760*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37762*/        OPC_CheckType, MVT::i32,
/* 37764*/        OPC_MoveParent,
/* 37765*/        OPC_MoveChild, 9,
/* 37767*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37770*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37772*/        OPC_CheckType, MVT::i32,
/* 37774*/        OPC_MoveParent,
/* 37775*/        OPC_MoveChild, 10,
/* 37777*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37780*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37782*/        OPC_CheckType, MVT::i32,
/* 37784*/        OPC_MoveParent,
/* 37785*/        OPC_MoveChild, 11,
/* 37787*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37790*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37792*/        OPC_CheckType, MVT::i32,
/* 37794*/        OPC_MoveParent,
/* 37795*/        OPC_MoveChild, 12,
/* 37797*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37800*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37802*/        OPC_CheckType, MVT::i32,
/* 37804*/        OPC_MoveParent,
/* 37805*/        OPC_MoveChild, 13,
/* 37807*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37810*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37812*/        OPC_CheckType, MVT::i32,
/* 37814*/        OPC_MoveParent,
/* 37815*/        OPC_MoveChild, 14,
/* 37817*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37820*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37822*/        OPC_CheckType, MVT::i32,
/* 37824*/        OPC_MoveParent,
/* 37825*/        OPC_MoveChild, 15,
/* 37827*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37830*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37832*/        OPC_CheckType, MVT::i32,
/* 37834*/        OPC_MoveParent,
/* 37835*/        OPC_MoveParent,
/* 37836*/        OPC_CheckType, MVT::v16i8,
/* 37838*/        OPC_MoveParent,
/* 37839*/        OPC_CheckType, MVT::v16i8,
/* 37841*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 37843*/        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)
/* 37851*/      /*Scope*/ 45|128,1/*173*/, /*->38026*/
/* 37853*/        OPC_MoveChild0,
/* 37854*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 37857*/        OPC_MoveChild0,
/* 37858*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37861*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37863*/        OPC_CheckType, MVT::i32,
/* 37865*/        OPC_MoveParent,
/* 37866*/        OPC_MoveChild1,
/* 37867*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37870*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37872*/        OPC_CheckType, MVT::i32,
/* 37874*/        OPC_MoveParent,
/* 37875*/        OPC_MoveChild2,
/* 37876*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37879*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37881*/        OPC_CheckType, MVT::i32,
/* 37883*/        OPC_MoveParent,
/* 37884*/        OPC_MoveChild3,
/* 37885*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37888*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37890*/        OPC_CheckType, MVT::i32,
/* 37892*/        OPC_MoveParent,
/* 37893*/        OPC_MoveChild4,
/* 37894*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37897*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37899*/        OPC_CheckType, MVT::i32,
/* 37901*/        OPC_MoveParent,
/* 37902*/        OPC_MoveChild5,
/* 37903*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37906*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37908*/        OPC_CheckType, MVT::i32,
/* 37910*/        OPC_MoveParent,
/* 37911*/        OPC_MoveChild6,
/* 37912*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37915*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37917*/        OPC_CheckType, MVT::i32,
/* 37919*/        OPC_MoveParent,
/* 37920*/        OPC_MoveChild7,
/* 37921*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37924*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37926*/        OPC_CheckType, MVT::i32,
/* 37928*/        OPC_MoveParent,
/* 37929*/        OPC_MoveChild, 8,
/* 37931*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37934*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37936*/        OPC_CheckType, MVT::i32,
/* 37938*/        OPC_MoveParent,
/* 37939*/        OPC_MoveChild, 9,
/* 37941*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37944*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37946*/        OPC_CheckType, MVT::i32,
/* 37948*/        OPC_MoveParent,
/* 37949*/        OPC_MoveChild, 10,
/* 37951*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37954*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37956*/        OPC_CheckType, MVT::i32,
/* 37958*/        OPC_MoveParent,
/* 37959*/        OPC_MoveChild, 11,
/* 37961*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37964*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37966*/        OPC_CheckType, MVT::i32,
/* 37968*/        OPC_MoveParent,
/* 37969*/        OPC_MoveChild, 12,
/* 37971*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37974*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37976*/        OPC_CheckType, MVT::i32,
/* 37978*/        OPC_MoveParent,
/* 37979*/        OPC_MoveChild, 13,
/* 37981*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37984*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37986*/        OPC_CheckType, MVT::i32,
/* 37988*/        OPC_MoveParent,
/* 37989*/        OPC_MoveChild, 14,
/* 37991*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 37994*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 37996*/        OPC_CheckType, MVT::i32,
/* 37998*/        OPC_MoveParent,
/* 37999*/        OPC_MoveChild, 15,
/* 38001*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38004*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38006*/        OPC_CheckType, MVT::i32,
/* 38008*/        OPC_MoveParent,
/* 38009*/        OPC_MoveParent,
/* 38010*/        OPC_RecordChild1, // #1 = $wt
/* 38011*/        OPC_CheckType, MVT::v16i8,
/* 38013*/        OPC_MoveParent,
/* 38014*/        OPC_CheckType, MVT::v16i8,
/* 38016*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38018*/        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)
/* 38026*/      /*Scope*/ 93, /*->38120*/
/* 38027*/        OPC_RecordChild0, // #1 = $wt
/* 38028*/        OPC_MoveChild1,
/* 38029*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38032*/        OPC_MoveChild0,
/* 38033*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38036*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38038*/        OPC_CheckType, MVT::i32,
/* 38040*/        OPC_MoveParent,
/* 38041*/        OPC_MoveChild1,
/* 38042*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38045*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38047*/        OPC_CheckType, MVT::i32,
/* 38049*/        OPC_MoveParent,
/* 38050*/        OPC_MoveChild2,
/* 38051*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38054*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38056*/        OPC_CheckType, MVT::i32,
/* 38058*/        OPC_MoveParent,
/* 38059*/        OPC_MoveChild3,
/* 38060*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38063*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38065*/        OPC_CheckType, MVT::i32,
/* 38067*/        OPC_MoveParent,
/* 38068*/        OPC_MoveChild4,
/* 38069*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38072*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38074*/        OPC_CheckType, MVT::i32,
/* 38076*/        OPC_MoveParent,
/* 38077*/        OPC_MoveChild5,
/* 38078*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38081*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38083*/        OPC_CheckType, MVT::i32,
/* 38085*/        OPC_MoveParent,
/* 38086*/        OPC_MoveChild6,
/* 38087*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38090*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38092*/        OPC_CheckType, MVT::i32,
/* 38094*/        OPC_MoveParent,
/* 38095*/        OPC_MoveChild7,
/* 38096*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38099*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38101*/        OPC_CheckType, MVT::i32,
/* 38103*/        OPC_MoveParent,
/* 38104*/        OPC_MoveParent,
/* 38105*/        OPC_CheckType, MVT::v8i16,
/* 38107*/        OPC_MoveParent,
/* 38108*/        OPC_CheckType, MVT::v8i16,
/* 38110*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38112*/        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)
/* 38120*/      /*Scope*/ 93, /*->38214*/
/* 38121*/        OPC_MoveChild0,
/* 38122*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38125*/        OPC_MoveChild0,
/* 38126*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38129*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38131*/        OPC_CheckType, MVT::i32,
/* 38133*/        OPC_MoveParent,
/* 38134*/        OPC_MoveChild1,
/* 38135*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38138*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38140*/        OPC_CheckType, MVT::i32,
/* 38142*/        OPC_MoveParent,
/* 38143*/        OPC_MoveChild2,
/* 38144*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38147*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38149*/        OPC_CheckType, MVT::i32,
/* 38151*/        OPC_MoveParent,
/* 38152*/        OPC_MoveChild3,
/* 38153*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38156*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38158*/        OPC_CheckType, MVT::i32,
/* 38160*/        OPC_MoveParent,
/* 38161*/        OPC_MoveChild4,
/* 38162*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38165*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38167*/        OPC_CheckType, MVT::i32,
/* 38169*/        OPC_MoveParent,
/* 38170*/        OPC_MoveChild5,
/* 38171*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38174*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38176*/        OPC_CheckType, MVT::i32,
/* 38178*/        OPC_MoveParent,
/* 38179*/        OPC_MoveChild6,
/* 38180*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38183*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38185*/        OPC_CheckType, MVT::i32,
/* 38187*/        OPC_MoveParent,
/* 38188*/        OPC_MoveChild7,
/* 38189*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38192*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 38194*/        OPC_CheckType, MVT::i32,
/* 38196*/        OPC_MoveParent,
/* 38197*/        OPC_MoveParent,
/* 38198*/        OPC_RecordChild1, // #1 = $wt
/* 38199*/        OPC_CheckType, MVT::v8i16,
/* 38201*/        OPC_MoveParent,
/* 38202*/        OPC_CheckType, MVT::v8i16,
/* 38204*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38206*/        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)
/* 38214*/      /*Scope*/ 57, /*->38272*/
/* 38215*/        OPC_RecordChild0, // #1 = $wt
/* 38216*/        OPC_MoveChild1,
/* 38217*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38220*/        OPC_MoveChild0,
/* 38221*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38224*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38226*/        OPC_CheckType, MVT::i32,
/* 38228*/        OPC_MoveParent,
/* 38229*/        OPC_MoveChild1,
/* 38230*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38233*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38235*/        OPC_CheckType, MVT::i32,
/* 38237*/        OPC_MoveParent,
/* 38238*/        OPC_MoveChild2,
/* 38239*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38242*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38244*/        OPC_CheckType, MVT::i32,
/* 38246*/        OPC_MoveParent,
/* 38247*/        OPC_MoveChild3,
/* 38248*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38251*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38253*/        OPC_CheckType, MVT::i32,
/* 38255*/        OPC_MoveParent,
/* 38256*/        OPC_MoveParent,
/* 38257*/        OPC_CheckType, MVT::v4i32,
/* 38259*/        OPC_MoveParent,
/* 38260*/        OPC_CheckType, MVT::v4i32,
/* 38262*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38264*/        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)
/* 38272*/      /*Scope*/ 57, /*->38330*/
/* 38273*/        OPC_MoveChild0,
/* 38274*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38277*/        OPC_MoveChild0,
/* 38278*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38281*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38283*/        OPC_CheckType, MVT::i32,
/* 38285*/        OPC_MoveParent,
/* 38286*/        OPC_MoveChild1,
/* 38287*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38290*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38292*/        OPC_CheckType, MVT::i32,
/* 38294*/        OPC_MoveParent,
/* 38295*/        OPC_MoveChild2,
/* 38296*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38299*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38301*/        OPC_CheckType, MVT::i32,
/* 38303*/        OPC_MoveParent,
/* 38304*/        OPC_MoveChild3,
/* 38305*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38308*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 38310*/        OPC_CheckType, MVT::i32,
/* 38312*/        OPC_MoveParent,
/* 38313*/        OPC_MoveParent,
/* 38314*/        OPC_RecordChild1, // #1 = $wt
/* 38315*/        OPC_CheckType, MVT::v4i32,
/* 38317*/        OPC_MoveParent,
/* 38318*/        OPC_CheckType, MVT::v4i32,
/* 38320*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38322*/        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)
/* 38330*/      /*Scope*/ 30, /*->38361*/
/* 38331*/        OPC_RecordChild0, // #1 = $wt
/* 38332*/        OPC_MoveChild1,
/* 38333*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 38336*/        OPC_MoveChild0,
/* 38337*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38340*/        OPC_CheckType, MVT::v4i32,
/* 38342*/        OPC_MoveParent,
/* 38343*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 38345*/        OPC_MoveParent,
/* 38346*/        OPC_CheckType, MVT::v2i64,
/* 38348*/        OPC_MoveParent,
/* 38349*/        OPC_CheckType, MVT::v2i64,
/* 38351*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38353*/        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)
/* 38361*/      /*Scope*/ 30, /*->38392*/
/* 38362*/        OPC_MoveChild0,
/* 38363*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 38366*/        OPC_MoveChild0,
/* 38367*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38370*/        OPC_CheckType, MVT::v4i32,
/* 38372*/        OPC_MoveParent,
/* 38373*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 38375*/        OPC_MoveParent,
/* 38376*/        OPC_RecordChild1, // #1 = $wt
/* 38377*/        OPC_CheckType, MVT::v2i64,
/* 38379*/        OPC_MoveParent,
/* 38380*/        OPC_CheckType, MVT::v2i64,
/* 38382*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38384*/        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)
/* 38392*/      0, /*End of Scope*/
/* 38393*/    /*Scope*/ 119, /*->38513*/
/* 38394*/      OPC_RecordChild1, // #1 = $m
/* 38395*/      OPC_SwitchType /*4 cases */, 27, MVT::v16i8,// ->38425
/* 38398*/        OPC_CheckChild1Type, MVT::v16i8,
/* 38400*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 38402*/        OPC_Scope, 11, /*->38415*/ // 2 children in Scope
/* 38404*/          OPC_CheckComplexPat, /*CP*/24, /*#*/1, // selectVSplatUimm3:$m #2
/* 38407*/          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)
/* 38415*/        /*Scope*/ 8, /*->38424*/
/* 38416*/          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)
/* 38424*/        0, /*End of Scope*/
/* 38425*/      /*SwitchType*/ 27, MVT::v8i16,// ->38454
/* 38427*/        OPC_CheckChild1Type, MVT::v8i16,
/* 38429*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 38431*/        OPC_Scope, 11, /*->38444*/ // 2 children in Scope
/* 38433*/          OPC_CheckComplexPat, /*CP*/25, /*#*/1, // selectVSplatUimm4:$m #2
/* 38436*/          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)
/* 38444*/        /*Scope*/ 8, /*->38453*/
/* 38445*/          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)
/* 38453*/        0, /*End of Scope*/
/* 38454*/      /*SwitchType*/ 27, MVT::v4i32,// ->38483
/* 38456*/        OPC_CheckChild1Type, MVT::v4i32,
/* 38458*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 38460*/        OPC_Scope, 11, /*->38473*/ // 2 children in Scope
/* 38462*/          OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$m #2
/* 38465*/          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)
/* 38473*/        /*Scope*/ 8, /*->38482*/
/* 38474*/          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)
/* 38482*/        0, /*End of Scope*/
/* 38483*/      /*SwitchType*/ 27, MVT::v2i64,// ->38512
/* 38485*/        OPC_CheckChild1Type, MVT::v2i64,
/* 38487*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 38489*/        OPC_Scope, 11, /*->38502*/ // 2 children in Scope
/* 38491*/          OPC_CheckComplexPat, /*CP*/26, /*#*/1, // selectVSplatUimm6:$m #2
/* 38494*/          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)
/* 38502*/        /*Scope*/ 8, /*->38511*/
/* 38503*/          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)
/* 38511*/        0, /*End of Scope*/
/* 38512*/      0, // EndSwitchType
/* 38513*/    0, /*End of Scope*/
/* 38514*/  /*SwitchOpcode*/ 10|128,8/*1034*/, TARGET_VAL(ISD::SRL),// ->39552
/* 38518*/    OPC_RecordChild0, // #0 = $rt
/* 38519*/    OPC_Scope, 99, /*->38620*/ // 5 children in Scope
/* 38521*/      OPC_RecordChild1, // #1 = $shamt
/* 38522*/      OPC_MoveChild1,
/* 38523*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38526*/      OPC_CheckType, MVT::i32,
/* 38528*/      OPC_Scope, 17, /*->38547*/ // 5 children in Scope
/* 38530*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 38532*/        OPC_MoveParent,
/* 38533*/        OPC_CheckType, MVT::i32,
/* 38535*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 38537*/        OPC_EmitConvertToTarget, 1,
/* 38539*/        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)
/* 38547*/      /*Scope*/ 17, /*->38565*/
/* 38548*/        OPC_CheckPredicate, 36, // Predicate_immZExt6
/* 38550*/        OPC_MoveParent,
/* 38551*/        OPC_CheckType, MVT::i64,
/* 38553*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 38555*/        OPC_EmitConvertToTarget, 1,
/* 38557*/        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)
/* 38565*/      /*Scope*/ 17, /*->38583*/
/* 38566*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 38568*/        OPC_MoveParent,
/* 38569*/        OPC_CheckType, MVT::i32,
/* 38571*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 38573*/        OPC_EmitConvertToTarget, 1,
/* 38575*/        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)
/* 38583*/      /*Scope*/ 17, /*->38601*/
/* 38584*/        OPC_CheckPredicate, 54, // Predicate_immZExt2Shift
/* 38586*/        OPC_MoveParent,
/* 38587*/        OPC_CheckType, MVT::i32,
/* 38589*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 38591*/        OPC_EmitConvertToTarget, 1,
/* 38593*/        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)
/* 38601*/      /*Scope*/ 17, /*->38619*/
/* 38602*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 38604*/        OPC_MoveParent,
/* 38605*/        OPC_CheckType, MVT::i32,
/* 38607*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 38609*/        OPC_EmitConvertToTarget, 1,
/* 38611*/        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)
/* 38619*/      0, /*End of Scope*/
/* 38620*/    /*Scope*/ 31, /*->38652*/
/* 38621*/      OPC_MoveChild1,
/* 38622*/      OPC_CheckOpcode, TARGET_VAL(ISD::TRUNCATE),
/* 38625*/      OPC_RecordChild0, // #1 = $rs
/* 38626*/      OPC_CheckType, MVT::i32,
/* 38628*/      OPC_MoveParent,
/* 38629*/      OPC_CheckType, MVT::i64,
/* 38631*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 38633*/      OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 38636*/      OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 38644*/      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] }))
/* 38652*/    /*Scope*/ 54, /*->38707*/
/* 38653*/      OPC_RecordChild1, // #1 = $rs
/* 38654*/      OPC_CheckChild1Type, MVT::i32,
/* 38656*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->38694
/* 38659*/        OPC_Scope, 10, /*->38671*/ // 3 children in Scope
/* 38661*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 38663*/          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)
/* 38671*/        /*Scope*/ 10, /*->38682*/
/* 38672*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 38674*/          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)
/* 38682*/        /*Scope*/ 10, /*->38693*/
/* 38683*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 38685*/          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)
/* 38693*/        0, /*End of Scope*/
/* 38694*/      /*SwitchType*/ 10, MVT::i64,// ->38706
/* 38696*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 38698*/        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)
/* 38706*/      0, // EndSwitchType
/* 38707*/    /*Scope*/ 82|128,5/*722*/, /*->39431*/
/* 38709*/      OPC_MoveChild1,
/* 38710*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 38713*/      OPC_Scope, 45|128,1/*173*/, /*->38889*/ // 8 children in Scope
/* 38716*/        OPC_RecordChild0, // #1 = $wt
/* 38717*/        OPC_MoveChild1,
/* 38718*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38721*/        OPC_MoveChild0,
/* 38722*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38725*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38727*/        OPC_CheckType, MVT::i32,
/* 38729*/        OPC_MoveParent,
/* 38730*/        OPC_MoveChild1,
/* 38731*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38734*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38736*/        OPC_CheckType, MVT::i32,
/* 38738*/        OPC_MoveParent,
/* 38739*/        OPC_MoveChild2,
/* 38740*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38743*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38745*/        OPC_CheckType, MVT::i32,
/* 38747*/        OPC_MoveParent,
/* 38748*/        OPC_MoveChild3,
/* 38749*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38752*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38754*/        OPC_CheckType, MVT::i32,
/* 38756*/        OPC_MoveParent,
/* 38757*/        OPC_MoveChild4,
/* 38758*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38761*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38763*/        OPC_CheckType, MVT::i32,
/* 38765*/        OPC_MoveParent,
/* 38766*/        OPC_MoveChild5,
/* 38767*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38770*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38772*/        OPC_CheckType, MVT::i32,
/* 38774*/        OPC_MoveParent,
/* 38775*/        OPC_MoveChild6,
/* 38776*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38779*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38781*/        OPC_CheckType, MVT::i32,
/* 38783*/        OPC_MoveParent,
/* 38784*/        OPC_MoveChild7,
/* 38785*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38788*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38790*/        OPC_CheckType, MVT::i32,
/* 38792*/        OPC_MoveParent,
/* 38793*/        OPC_MoveChild, 8,
/* 38795*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38798*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38800*/        OPC_CheckType, MVT::i32,
/* 38802*/        OPC_MoveParent,
/* 38803*/        OPC_MoveChild, 9,
/* 38805*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38808*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38810*/        OPC_CheckType, MVT::i32,
/* 38812*/        OPC_MoveParent,
/* 38813*/        OPC_MoveChild, 10,
/* 38815*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38818*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38820*/        OPC_CheckType, MVT::i32,
/* 38822*/        OPC_MoveParent,
/* 38823*/        OPC_MoveChild, 11,
/* 38825*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38828*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38830*/        OPC_CheckType, MVT::i32,
/* 38832*/        OPC_MoveParent,
/* 38833*/        OPC_MoveChild, 12,
/* 38835*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38838*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38840*/        OPC_CheckType, MVT::i32,
/* 38842*/        OPC_MoveParent,
/* 38843*/        OPC_MoveChild, 13,
/* 38845*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38848*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38850*/        OPC_CheckType, MVT::i32,
/* 38852*/        OPC_MoveParent,
/* 38853*/        OPC_MoveChild, 14,
/* 38855*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38858*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38860*/        OPC_CheckType, MVT::i32,
/* 38862*/        OPC_MoveParent,
/* 38863*/        OPC_MoveChild, 15,
/* 38865*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38868*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38870*/        OPC_CheckType, MVT::i32,
/* 38872*/        OPC_MoveParent,
/* 38873*/        OPC_MoveParent,
/* 38874*/        OPC_CheckType, MVT::v16i8,
/* 38876*/        OPC_MoveParent,
/* 38877*/        OPC_CheckType, MVT::v16i8,
/* 38879*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 38881*/        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)
/* 38889*/      /*Scope*/ 45|128,1/*173*/, /*->39064*/
/* 38891*/        OPC_MoveChild0,
/* 38892*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 38895*/        OPC_MoveChild0,
/* 38896*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38899*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38901*/        OPC_CheckType, MVT::i32,
/* 38903*/        OPC_MoveParent,
/* 38904*/        OPC_MoveChild1,
/* 38905*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38908*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38910*/        OPC_CheckType, MVT::i32,
/* 38912*/        OPC_MoveParent,
/* 38913*/        OPC_MoveChild2,
/* 38914*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38917*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38919*/        OPC_CheckType, MVT::i32,
/* 38921*/        OPC_MoveParent,
/* 38922*/        OPC_MoveChild3,
/* 38923*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38926*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38928*/        OPC_CheckType, MVT::i32,
/* 38930*/        OPC_MoveParent,
/* 38931*/        OPC_MoveChild4,
/* 38932*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38935*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38937*/        OPC_CheckType, MVT::i32,
/* 38939*/        OPC_MoveParent,
/* 38940*/        OPC_MoveChild5,
/* 38941*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38944*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38946*/        OPC_CheckType, MVT::i32,
/* 38948*/        OPC_MoveParent,
/* 38949*/        OPC_MoveChild6,
/* 38950*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38953*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38955*/        OPC_CheckType, MVT::i32,
/* 38957*/        OPC_MoveParent,
/* 38958*/        OPC_MoveChild7,
/* 38959*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38962*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38964*/        OPC_CheckType, MVT::i32,
/* 38966*/        OPC_MoveParent,
/* 38967*/        OPC_MoveChild, 8,
/* 38969*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38972*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38974*/        OPC_CheckType, MVT::i32,
/* 38976*/        OPC_MoveParent,
/* 38977*/        OPC_MoveChild, 9,
/* 38979*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38982*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38984*/        OPC_CheckType, MVT::i32,
/* 38986*/        OPC_MoveParent,
/* 38987*/        OPC_MoveChild, 10,
/* 38989*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 38992*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 38994*/        OPC_CheckType, MVT::i32,
/* 38996*/        OPC_MoveParent,
/* 38997*/        OPC_MoveChild, 11,
/* 38999*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39002*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39004*/        OPC_CheckType, MVT::i32,
/* 39006*/        OPC_MoveParent,
/* 39007*/        OPC_MoveChild, 12,
/* 39009*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39012*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39014*/        OPC_CheckType, MVT::i32,
/* 39016*/        OPC_MoveParent,
/* 39017*/        OPC_MoveChild, 13,
/* 39019*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39022*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39024*/        OPC_CheckType, MVT::i32,
/* 39026*/        OPC_MoveParent,
/* 39027*/        OPC_MoveChild, 14,
/* 39029*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39032*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39034*/        OPC_CheckType, MVT::i32,
/* 39036*/        OPC_MoveParent,
/* 39037*/        OPC_MoveChild, 15,
/* 39039*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39042*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39044*/        OPC_CheckType, MVT::i32,
/* 39046*/        OPC_MoveParent,
/* 39047*/        OPC_MoveParent,
/* 39048*/        OPC_RecordChild1, // #1 = $wt
/* 39049*/        OPC_CheckType, MVT::v16i8,
/* 39051*/        OPC_MoveParent,
/* 39052*/        OPC_CheckType, MVT::v16i8,
/* 39054*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39056*/        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)
/* 39064*/      /*Scope*/ 93, /*->39158*/
/* 39065*/        OPC_RecordChild0, // #1 = $wt
/* 39066*/        OPC_MoveChild1,
/* 39067*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39070*/        OPC_MoveChild0,
/* 39071*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39074*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39076*/        OPC_CheckType, MVT::i32,
/* 39078*/        OPC_MoveParent,
/* 39079*/        OPC_MoveChild1,
/* 39080*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39083*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39085*/        OPC_CheckType, MVT::i32,
/* 39087*/        OPC_MoveParent,
/* 39088*/        OPC_MoveChild2,
/* 39089*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39092*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39094*/        OPC_CheckType, MVT::i32,
/* 39096*/        OPC_MoveParent,
/* 39097*/        OPC_MoveChild3,
/* 39098*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39101*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39103*/        OPC_CheckType, MVT::i32,
/* 39105*/        OPC_MoveParent,
/* 39106*/        OPC_MoveChild4,
/* 39107*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39110*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39112*/        OPC_CheckType, MVT::i32,
/* 39114*/        OPC_MoveParent,
/* 39115*/        OPC_MoveChild5,
/* 39116*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39119*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39121*/        OPC_CheckType, MVT::i32,
/* 39123*/        OPC_MoveParent,
/* 39124*/        OPC_MoveChild6,
/* 39125*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39128*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39130*/        OPC_CheckType, MVT::i32,
/* 39132*/        OPC_MoveParent,
/* 39133*/        OPC_MoveChild7,
/* 39134*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39137*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39139*/        OPC_CheckType, MVT::i32,
/* 39141*/        OPC_MoveParent,
/* 39142*/        OPC_MoveParent,
/* 39143*/        OPC_CheckType, MVT::v8i16,
/* 39145*/        OPC_MoveParent,
/* 39146*/        OPC_CheckType, MVT::v8i16,
/* 39148*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39150*/        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)
/* 39158*/      /*Scope*/ 93, /*->39252*/
/* 39159*/        OPC_MoveChild0,
/* 39160*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39163*/        OPC_MoveChild0,
/* 39164*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39167*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39169*/        OPC_CheckType, MVT::i32,
/* 39171*/        OPC_MoveParent,
/* 39172*/        OPC_MoveChild1,
/* 39173*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39176*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39178*/        OPC_CheckType, MVT::i32,
/* 39180*/        OPC_MoveParent,
/* 39181*/        OPC_MoveChild2,
/* 39182*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39185*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39187*/        OPC_CheckType, MVT::i32,
/* 39189*/        OPC_MoveParent,
/* 39190*/        OPC_MoveChild3,
/* 39191*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39194*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39196*/        OPC_CheckType, MVT::i32,
/* 39198*/        OPC_MoveParent,
/* 39199*/        OPC_MoveChild4,
/* 39200*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39203*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39205*/        OPC_CheckType, MVT::i32,
/* 39207*/        OPC_MoveParent,
/* 39208*/        OPC_MoveChild5,
/* 39209*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39212*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39214*/        OPC_CheckType, MVT::i32,
/* 39216*/        OPC_MoveParent,
/* 39217*/        OPC_MoveChild6,
/* 39218*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39221*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39223*/        OPC_CheckType, MVT::i32,
/* 39225*/        OPC_MoveParent,
/* 39226*/        OPC_MoveChild7,
/* 39227*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39230*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 39232*/        OPC_CheckType, MVT::i32,
/* 39234*/        OPC_MoveParent,
/* 39235*/        OPC_MoveParent,
/* 39236*/        OPC_RecordChild1, // #1 = $wt
/* 39237*/        OPC_CheckType, MVT::v8i16,
/* 39239*/        OPC_MoveParent,
/* 39240*/        OPC_CheckType, MVT::v8i16,
/* 39242*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39244*/        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)
/* 39252*/      /*Scope*/ 57, /*->39310*/
/* 39253*/        OPC_RecordChild0, // #1 = $wt
/* 39254*/        OPC_MoveChild1,
/* 39255*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39258*/        OPC_MoveChild0,
/* 39259*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39262*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39264*/        OPC_CheckType, MVT::i32,
/* 39266*/        OPC_MoveParent,
/* 39267*/        OPC_MoveChild1,
/* 39268*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39271*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39273*/        OPC_CheckType, MVT::i32,
/* 39275*/        OPC_MoveParent,
/* 39276*/        OPC_MoveChild2,
/* 39277*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39280*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39282*/        OPC_CheckType, MVT::i32,
/* 39284*/        OPC_MoveParent,
/* 39285*/        OPC_MoveChild3,
/* 39286*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39289*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39291*/        OPC_CheckType, MVT::i32,
/* 39293*/        OPC_MoveParent,
/* 39294*/        OPC_MoveParent,
/* 39295*/        OPC_CheckType, MVT::v4i32,
/* 39297*/        OPC_MoveParent,
/* 39298*/        OPC_CheckType, MVT::v4i32,
/* 39300*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39302*/        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)
/* 39310*/      /*Scope*/ 57, /*->39368*/
/* 39311*/        OPC_MoveChild0,
/* 39312*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39315*/        OPC_MoveChild0,
/* 39316*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39319*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39321*/        OPC_CheckType, MVT::i32,
/* 39323*/        OPC_MoveParent,
/* 39324*/        OPC_MoveChild1,
/* 39325*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39328*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39330*/        OPC_CheckType, MVT::i32,
/* 39332*/        OPC_MoveParent,
/* 39333*/        OPC_MoveChild2,
/* 39334*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39337*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39339*/        OPC_CheckType, MVT::i32,
/* 39341*/        OPC_MoveParent,
/* 39342*/        OPC_MoveChild3,
/* 39343*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39346*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 39348*/        OPC_CheckType, MVT::i32,
/* 39350*/        OPC_MoveParent,
/* 39351*/        OPC_MoveParent,
/* 39352*/        OPC_RecordChild1, // #1 = $wt
/* 39353*/        OPC_CheckType, MVT::v4i32,
/* 39355*/        OPC_MoveParent,
/* 39356*/        OPC_CheckType, MVT::v4i32,
/* 39358*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39360*/        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)
/* 39368*/      /*Scope*/ 30, /*->39399*/
/* 39369*/        OPC_RecordChild0, // #1 = $wt
/* 39370*/        OPC_MoveChild1,
/* 39371*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 39374*/        OPC_MoveChild0,
/* 39375*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39378*/        OPC_CheckType, MVT::v4i32,
/* 39380*/        OPC_MoveParent,
/* 39381*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 39383*/        OPC_MoveParent,
/* 39384*/        OPC_CheckType, MVT::v2i64,
/* 39386*/        OPC_MoveParent,
/* 39387*/        OPC_CheckType, MVT::v2i64,
/* 39389*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39391*/        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)
/* 39399*/      /*Scope*/ 30, /*->39430*/
/* 39400*/        OPC_MoveChild0,
/* 39401*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 39404*/        OPC_MoveChild0,
/* 39405*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39408*/        OPC_CheckType, MVT::v4i32,
/* 39410*/        OPC_MoveParent,
/* 39411*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 39413*/        OPC_MoveParent,
/* 39414*/        OPC_RecordChild1, // #1 = $wt
/* 39415*/        OPC_CheckType, MVT::v2i64,
/* 39417*/        OPC_MoveParent,
/* 39418*/        OPC_CheckType, MVT::v2i64,
/* 39420*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39422*/        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)
/* 39430*/      0, /*End of Scope*/
/* 39431*/    /*Scope*/ 119, /*->39551*/
/* 39432*/      OPC_RecordChild1, // #1 = $m
/* 39433*/      OPC_SwitchType /*4 cases */, 27, MVT::v16i8,// ->39463
/* 39436*/        OPC_CheckChild1Type, MVT::v16i8,
/* 39438*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 39440*/        OPC_Scope, 11, /*->39453*/ // 2 children in Scope
/* 39442*/          OPC_CheckComplexPat, /*CP*/24, /*#*/1, // selectVSplatUimm3:$m #2
/* 39445*/          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)
/* 39453*/        /*Scope*/ 8, /*->39462*/
/* 39454*/          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)
/* 39462*/        0, /*End of Scope*/
/* 39463*/      /*SwitchType*/ 27, MVT::v8i16,// ->39492
/* 39465*/        OPC_CheckChild1Type, MVT::v8i16,
/* 39467*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 39469*/        OPC_Scope, 11, /*->39482*/ // 2 children in Scope
/* 39471*/          OPC_CheckComplexPat, /*CP*/25, /*#*/1, // selectVSplatUimm4:$m #2
/* 39474*/          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)
/* 39482*/        /*Scope*/ 8, /*->39491*/
/* 39483*/          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)
/* 39491*/        0, /*End of Scope*/
/* 39492*/      /*SwitchType*/ 27, MVT::v4i32,// ->39521
/* 39494*/        OPC_CheckChild1Type, MVT::v4i32,
/* 39496*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 39498*/        OPC_Scope, 11, /*->39511*/ // 2 children in Scope
/* 39500*/          OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$m #2
/* 39503*/          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)
/* 39511*/        /*Scope*/ 8, /*->39520*/
/* 39512*/          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)
/* 39520*/        0, /*End of Scope*/
/* 39521*/      /*SwitchType*/ 27, MVT::v2i64,// ->39550
/* 39523*/        OPC_CheckChild1Type, MVT::v2i64,
/* 39525*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 39527*/        OPC_Scope, 11, /*->39540*/ // 2 children in Scope
/* 39529*/          OPC_CheckComplexPat, /*CP*/26, /*#*/1, // selectVSplatUimm6:$m #2
/* 39532*/          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)
/* 39540*/        /*Scope*/ 8, /*->39549*/
/* 39541*/          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)
/* 39549*/        0, /*End of Scope*/
/* 39550*/      0, // EndSwitchType
/* 39551*/    0, /*End of Scope*/
/* 39552*/  /*SwitchOpcode*/ 118|128,7/*1014*/, TARGET_VAL(ISD::SRA),// ->40570
/* 39556*/    OPC_RecordChild0, // #0 = $rt
/* 39557*/    OPC_Scope, 79, /*->39638*/ // 5 children in Scope
/* 39559*/      OPC_RecordChild1, // #1 = $shamt
/* 39560*/      OPC_MoveChild1,
/* 39561*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39564*/      OPC_CheckType, MVT::i32,
/* 39566*/      OPC_Scope, 17, /*->39585*/ // 3 children in Scope
/* 39568*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 39570*/        OPC_MoveParent,
/* 39571*/        OPC_CheckType, MVT::i32,
/* 39573*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 39575*/        OPC_EmitConvertToTarget, 1,
/* 39577*/        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)
/* 39585*/      /*Scope*/ 17, /*->39603*/
/* 39586*/        OPC_CheckPredicate, 36, // Predicate_immZExt6
/* 39588*/        OPC_MoveParent,
/* 39589*/        OPC_CheckType, MVT::i64,
/* 39591*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 39593*/        OPC_EmitConvertToTarget, 1,
/* 39595*/        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)
/* 39603*/      /*Scope*/ 33, /*->39637*/
/* 39604*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 39606*/        OPC_MoveParent,
/* 39607*/        OPC_CheckType, MVT::i32,
/* 39609*/        OPC_Scope, 12, /*->39623*/ // 2 children in Scope
/* 39611*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 39613*/          OPC_EmitConvertToTarget, 1,
/* 39615*/          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)
/* 39623*/        /*Scope*/ 12, /*->39636*/
/* 39624*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 39626*/          OPC_EmitConvertToTarget, 1,
/* 39628*/          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)
/* 39636*/        0, /*End of Scope*/
/* 39637*/      0, /*End of Scope*/
/* 39638*/    /*Scope*/ 31, /*->39670*/
/* 39639*/      OPC_MoveChild1,
/* 39640*/      OPC_CheckOpcode, TARGET_VAL(ISD::TRUNCATE),
/* 39643*/      OPC_RecordChild0, // #1 = $rs
/* 39644*/      OPC_CheckType, MVT::i32,
/* 39646*/      OPC_MoveParent,
/* 39647*/      OPC_CheckType, MVT::i64,
/* 39649*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 39651*/      OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 39654*/      OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 39662*/      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] }))
/* 39670*/    /*Scope*/ 54, /*->39725*/
/* 39671*/      OPC_RecordChild1, // #1 = $rs
/* 39672*/      OPC_CheckChild1Type, MVT::i32,
/* 39674*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->39712
/* 39677*/        OPC_Scope, 10, /*->39689*/ // 3 children in Scope
/* 39679*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 39681*/          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)
/* 39689*/        /*Scope*/ 10, /*->39700*/
/* 39690*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 39692*/          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)
/* 39700*/        /*Scope*/ 10, /*->39711*/
/* 39701*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 39703*/          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)
/* 39711*/        0, /*End of Scope*/
/* 39712*/      /*SwitchType*/ 10, MVT::i64,// ->39724
/* 39714*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 39716*/        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)
/* 39724*/      0, // EndSwitchType
/* 39725*/    /*Scope*/ 82|128,5/*722*/, /*->40449*/
/* 39727*/      OPC_MoveChild1,
/* 39728*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 39731*/      OPC_Scope, 45|128,1/*173*/, /*->39907*/ // 8 children in Scope
/* 39734*/        OPC_RecordChild0, // #1 = $wt
/* 39735*/        OPC_MoveChild1,
/* 39736*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39739*/        OPC_MoveChild0,
/* 39740*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39743*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39745*/        OPC_CheckType, MVT::i32,
/* 39747*/        OPC_MoveParent,
/* 39748*/        OPC_MoveChild1,
/* 39749*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39752*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39754*/        OPC_CheckType, MVT::i32,
/* 39756*/        OPC_MoveParent,
/* 39757*/        OPC_MoveChild2,
/* 39758*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39761*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39763*/        OPC_CheckType, MVT::i32,
/* 39765*/        OPC_MoveParent,
/* 39766*/        OPC_MoveChild3,
/* 39767*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39770*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39772*/        OPC_CheckType, MVT::i32,
/* 39774*/        OPC_MoveParent,
/* 39775*/        OPC_MoveChild4,
/* 39776*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39779*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39781*/        OPC_CheckType, MVT::i32,
/* 39783*/        OPC_MoveParent,
/* 39784*/        OPC_MoveChild5,
/* 39785*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39788*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39790*/        OPC_CheckType, MVT::i32,
/* 39792*/        OPC_MoveParent,
/* 39793*/        OPC_MoveChild6,
/* 39794*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39797*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39799*/        OPC_CheckType, MVT::i32,
/* 39801*/        OPC_MoveParent,
/* 39802*/        OPC_MoveChild7,
/* 39803*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39806*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39808*/        OPC_CheckType, MVT::i32,
/* 39810*/        OPC_MoveParent,
/* 39811*/        OPC_MoveChild, 8,
/* 39813*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39816*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39818*/        OPC_CheckType, MVT::i32,
/* 39820*/        OPC_MoveParent,
/* 39821*/        OPC_MoveChild, 9,
/* 39823*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39826*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39828*/        OPC_CheckType, MVT::i32,
/* 39830*/        OPC_MoveParent,
/* 39831*/        OPC_MoveChild, 10,
/* 39833*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39836*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39838*/        OPC_CheckType, MVT::i32,
/* 39840*/        OPC_MoveParent,
/* 39841*/        OPC_MoveChild, 11,
/* 39843*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39846*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39848*/        OPC_CheckType, MVT::i32,
/* 39850*/        OPC_MoveParent,
/* 39851*/        OPC_MoveChild, 12,
/* 39853*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39856*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39858*/        OPC_CheckType, MVT::i32,
/* 39860*/        OPC_MoveParent,
/* 39861*/        OPC_MoveChild, 13,
/* 39863*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39866*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39868*/        OPC_CheckType, MVT::i32,
/* 39870*/        OPC_MoveParent,
/* 39871*/        OPC_MoveChild, 14,
/* 39873*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39876*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39878*/        OPC_CheckType, MVT::i32,
/* 39880*/        OPC_MoveParent,
/* 39881*/        OPC_MoveChild, 15,
/* 39883*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39886*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39888*/        OPC_CheckType, MVT::i32,
/* 39890*/        OPC_MoveParent,
/* 39891*/        OPC_MoveParent,
/* 39892*/        OPC_CheckType, MVT::v16i8,
/* 39894*/        OPC_MoveParent,
/* 39895*/        OPC_CheckType, MVT::v16i8,
/* 39897*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 39899*/        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)
/* 39907*/      /*Scope*/ 45|128,1/*173*/, /*->40082*/
/* 39909*/        OPC_MoveChild0,
/* 39910*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 39913*/        OPC_MoveChild0,
/* 39914*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39917*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39919*/        OPC_CheckType, MVT::i32,
/* 39921*/        OPC_MoveParent,
/* 39922*/        OPC_MoveChild1,
/* 39923*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39926*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39928*/        OPC_CheckType, MVT::i32,
/* 39930*/        OPC_MoveParent,
/* 39931*/        OPC_MoveChild2,
/* 39932*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39935*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39937*/        OPC_CheckType, MVT::i32,
/* 39939*/        OPC_MoveParent,
/* 39940*/        OPC_MoveChild3,
/* 39941*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39944*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39946*/        OPC_CheckType, MVT::i32,
/* 39948*/        OPC_MoveParent,
/* 39949*/        OPC_MoveChild4,
/* 39950*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39953*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39955*/        OPC_CheckType, MVT::i32,
/* 39957*/        OPC_MoveParent,
/* 39958*/        OPC_MoveChild5,
/* 39959*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39962*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39964*/        OPC_CheckType, MVT::i32,
/* 39966*/        OPC_MoveParent,
/* 39967*/        OPC_MoveChild6,
/* 39968*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39971*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39973*/        OPC_CheckType, MVT::i32,
/* 39975*/        OPC_MoveParent,
/* 39976*/        OPC_MoveChild7,
/* 39977*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39980*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39982*/        OPC_CheckType, MVT::i32,
/* 39984*/        OPC_MoveParent,
/* 39985*/        OPC_MoveChild, 8,
/* 39987*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 39990*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 39992*/        OPC_CheckType, MVT::i32,
/* 39994*/        OPC_MoveParent,
/* 39995*/        OPC_MoveChild, 9,
/* 39997*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40000*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 40002*/        OPC_CheckType, MVT::i32,
/* 40004*/        OPC_MoveParent,
/* 40005*/        OPC_MoveChild, 10,
/* 40007*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40010*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 40012*/        OPC_CheckType, MVT::i32,
/* 40014*/        OPC_MoveParent,
/* 40015*/        OPC_MoveChild, 11,
/* 40017*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40020*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 40022*/        OPC_CheckType, MVT::i32,
/* 40024*/        OPC_MoveParent,
/* 40025*/        OPC_MoveChild, 12,
/* 40027*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40030*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 40032*/        OPC_CheckType, MVT::i32,
/* 40034*/        OPC_MoveParent,
/* 40035*/        OPC_MoveChild, 13,
/* 40037*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40040*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 40042*/        OPC_CheckType, MVT::i32,
/* 40044*/        OPC_MoveParent,
/* 40045*/        OPC_MoveChild, 14,
/* 40047*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40050*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 40052*/        OPC_CheckType, MVT::i32,
/* 40054*/        OPC_MoveParent,
/* 40055*/        OPC_MoveChild, 15,
/* 40057*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40060*/        OPC_CheckPredicate, 39, // Predicate_immi32Cst7
/* 40062*/        OPC_CheckType, MVT::i32,
/* 40064*/        OPC_MoveParent,
/* 40065*/        OPC_MoveParent,
/* 40066*/        OPC_RecordChild1, // #1 = $wt
/* 40067*/        OPC_CheckType, MVT::v16i8,
/* 40069*/        OPC_MoveParent,
/* 40070*/        OPC_CheckType, MVT::v16i8,
/* 40072*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40074*/        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)
/* 40082*/      /*Scope*/ 93, /*->40176*/
/* 40083*/        OPC_RecordChild0, // #1 = $wt
/* 40084*/        OPC_MoveChild1,
/* 40085*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 40088*/        OPC_MoveChild0,
/* 40089*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40092*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40094*/        OPC_CheckType, MVT::i32,
/* 40096*/        OPC_MoveParent,
/* 40097*/        OPC_MoveChild1,
/* 40098*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40101*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40103*/        OPC_CheckType, MVT::i32,
/* 40105*/        OPC_MoveParent,
/* 40106*/        OPC_MoveChild2,
/* 40107*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40110*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40112*/        OPC_CheckType, MVT::i32,
/* 40114*/        OPC_MoveParent,
/* 40115*/        OPC_MoveChild3,
/* 40116*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40119*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40121*/        OPC_CheckType, MVT::i32,
/* 40123*/        OPC_MoveParent,
/* 40124*/        OPC_MoveChild4,
/* 40125*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40128*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40130*/        OPC_CheckType, MVT::i32,
/* 40132*/        OPC_MoveParent,
/* 40133*/        OPC_MoveChild5,
/* 40134*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40137*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40139*/        OPC_CheckType, MVT::i32,
/* 40141*/        OPC_MoveParent,
/* 40142*/        OPC_MoveChild6,
/* 40143*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40146*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40148*/        OPC_CheckType, MVT::i32,
/* 40150*/        OPC_MoveParent,
/* 40151*/        OPC_MoveChild7,
/* 40152*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40155*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40157*/        OPC_CheckType, MVT::i32,
/* 40159*/        OPC_MoveParent,
/* 40160*/        OPC_MoveParent,
/* 40161*/        OPC_CheckType, MVT::v8i16,
/* 40163*/        OPC_MoveParent,
/* 40164*/        OPC_CheckType, MVT::v8i16,
/* 40166*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40168*/        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)
/* 40176*/      /*Scope*/ 93, /*->40270*/
/* 40177*/        OPC_MoveChild0,
/* 40178*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 40181*/        OPC_MoveChild0,
/* 40182*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40185*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40187*/        OPC_CheckType, MVT::i32,
/* 40189*/        OPC_MoveParent,
/* 40190*/        OPC_MoveChild1,
/* 40191*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40194*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40196*/        OPC_CheckType, MVT::i32,
/* 40198*/        OPC_MoveParent,
/* 40199*/        OPC_MoveChild2,
/* 40200*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40203*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40205*/        OPC_CheckType, MVT::i32,
/* 40207*/        OPC_MoveParent,
/* 40208*/        OPC_MoveChild3,
/* 40209*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40212*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40214*/        OPC_CheckType, MVT::i32,
/* 40216*/        OPC_MoveParent,
/* 40217*/        OPC_MoveChild4,
/* 40218*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40221*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40223*/        OPC_CheckType, MVT::i32,
/* 40225*/        OPC_MoveParent,
/* 40226*/        OPC_MoveChild5,
/* 40227*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40230*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40232*/        OPC_CheckType, MVT::i32,
/* 40234*/        OPC_MoveParent,
/* 40235*/        OPC_MoveChild6,
/* 40236*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40239*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40241*/        OPC_CheckType, MVT::i32,
/* 40243*/        OPC_MoveParent,
/* 40244*/        OPC_MoveChild7,
/* 40245*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40248*/        OPC_CheckPredicate, 40, // Predicate_immi32Cst15
/* 40250*/        OPC_CheckType, MVT::i32,
/* 40252*/        OPC_MoveParent,
/* 40253*/        OPC_MoveParent,
/* 40254*/        OPC_RecordChild1, // #1 = $wt
/* 40255*/        OPC_CheckType, MVT::v8i16,
/* 40257*/        OPC_MoveParent,
/* 40258*/        OPC_CheckType, MVT::v8i16,
/* 40260*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40262*/        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)
/* 40270*/      /*Scope*/ 57, /*->40328*/
/* 40271*/        OPC_RecordChild0, // #1 = $wt
/* 40272*/        OPC_MoveChild1,
/* 40273*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 40276*/        OPC_MoveChild0,
/* 40277*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40280*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40282*/        OPC_CheckType, MVT::i32,
/* 40284*/        OPC_MoveParent,
/* 40285*/        OPC_MoveChild1,
/* 40286*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40289*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40291*/        OPC_CheckType, MVT::i32,
/* 40293*/        OPC_MoveParent,
/* 40294*/        OPC_MoveChild2,
/* 40295*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40298*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40300*/        OPC_CheckType, MVT::i32,
/* 40302*/        OPC_MoveParent,
/* 40303*/        OPC_MoveChild3,
/* 40304*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40307*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40309*/        OPC_CheckType, MVT::i32,
/* 40311*/        OPC_MoveParent,
/* 40312*/        OPC_MoveParent,
/* 40313*/        OPC_CheckType, MVT::v4i32,
/* 40315*/        OPC_MoveParent,
/* 40316*/        OPC_CheckType, MVT::v4i32,
/* 40318*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40320*/        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)
/* 40328*/      /*Scope*/ 57, /*->40386*/
/* 40329*/        OPC_MoveChild0,
/* 40330*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 40333*/        OPC_MoveChild0,
/* 40334*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40337*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40339*/        OPC_CheckType, MVT::i32,
/* 40341*/        OPC_MoveParent,
/* 40342*/        OPC_MoveChild1,
/* 40343*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40346*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40348*/        OPC_CheckType, MVT::i32,
/* 40350*/        OPC_MoveParent,
/* 40351*/        OPC_MoveChild2,
/* 40352*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40355*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40357*/        OPC_CheckType, MVT::i32,
/* 40359*/        OPC_MoveParent,
/* 40360*/        OPC_MoveChild3,
/* 40361*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40364*/        OPC_CheckPredicate, 41, // Predicate_immi32Cst31
/* 40366*/        OPC_CheckType, MVT::i32,
/* 40368*/        OPC_MoveParent,
/* 40369*/        OPC_MoveParent,
/* 40370*/        OPC_RecordChild1, // #1 = $wt
/* 40371*/        OPC_CheckType, MVT::v4i32,
/* 40373*/        OPC_MoveParent,
/* 40374*/        OPC_CheckType, MVT::v4i32,
/* 40376*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40378*/        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)
/* 40386*/      /*Scope*/ 30, /*->40417*/
/* 40387*/        OPC_RecordChild0, // #1 = $wt
/* 40388*/        OPC_MoveChild1,
/* 40389*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 40392*/        OPC_MoveChild0,
/* 40393*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 40396*/        OPC_CheckType, MVT::v4i32,
/* 40398*/        OPC_MoveParent,
/* 40399*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 40401*/        OPC_MoveParent,
/* 40402*/        OPC_CheckType, MVT::v2i64,
/* 40404*/        OPC_MoveParent,
/* 40405*/        OPC_CheckType, MVT::v2i64,
/* 40407*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40409*/        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)
/* 40417*/      /*Scope*/ 30, /*->40448*/
/* 40418*/        OPC_MoveChild0,
/* 40419*/        OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 40422*/        OPC_MoveChild0,
/* 40423*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 40426*/        OPC_CheckType, MVT::v4i32,
/* 40428*/        OPC_MoveParent,
/* 40429*/        OPC_CheckPredicate, 43, // Predicate_vsplati64_imm_eq_63
/* 40431*/        OPC_MoveParent,
/* 40432*/        OPC_RecordChild1, // #1 = $wt
/* 40433*/        OPC_CheckType, MVT::v2i64,
/* 40435*/        OPC_MoveParent,
/* 40436*/        OPC_CheckType, MVT::v2i64,
/* 40438*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 40440*/        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)
/* 40448*/      0, /*End of Scope*/
/* 40449*/    /*Scope*/ 119, /*->40569*/
/* 40450*/      OPC_RecordChild1, // #1 = $m
/* 40451*/      OPC_SwitchType /*4 cases */, 27, MVT::v16i8,// ->40481
/* 40454*/        OPC_CheckChild1Type, MVT::v16i8,
/* 40456*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 40458*/        OPC_Scope, 11, /*->40471*/ // 2 children in Scope
/* 40460*/          OPC_CheckComplexPat, /*CP*/24, /*#*/1, // selectVSplatUimm3:$m #2
/* 40463*/          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)
/* 40471*/        /*Scope*/ 8, /*->40480*/
/* 40472*/          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)
/* 40480*/        0, /*End of Scope*/
/* 40481*/      /*SwitchType*/ 27, MVT::v8i16,// ->40510
/* 40483*/        OPC_CheckChild1Type, MVT::v8i16,
/* 40485*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 40487*/        OPC_Scope, 11, /*->40500*/ // 2 children in Scope
/* 40489*/          OPC_CheckComplexPat, /*CP*/25, /*#*/1, // selectVSplatUimm4:$m #2
/* 40492*/          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)
/* 40500*/        /*Scope*/ 8, /*->40509*/
/* 40501*/          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)
/* 40509*/        0, /*End of Scope*/
/* 40510*/      /*SwitchType*/ 27, MVT::v4i32,// ->40539
/* 40512*/        OPC_CheckChild1Type, MVT::v4i32,
/* 40514*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 40516*/        OPC_Scope, 11, /*->40529*/ // 2 children in Scope
/* 40518*/          OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$m #2
/* 40521*/          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)
/* 40529*/        /*Scope*/ 8, /*->40538*/
/* 40530*/          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)
/* 40538*/        0, /*End of Scope*/
/* 40539*/      /*SwitchType*/ 27, MVT::v2i64,// ->40568
/* 40541*/        OPC_CheckChild1Type, MVT::v2i64,
/* 40543*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 40545*/        OPC_Scope, 11, /*->40558*/ // 2 children in Scope
/* 40547*/          OPC_CheckComplexPat, /*CP*/26, /*#*/1, // selectVSplatUimm6:$m #2
/* 40550*/          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)
/* 40558*/        /*Scope*/ 8, /*->40567*/
/* 40559*/          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)
/* 40567*/        0, /*End of Scope*/
/* 40568*/      0, // EndSwitchType
/* 40569*/    0, /*End of Scope*/
/* 40570*/  /*SwitchOpcode*/ 15|128,1/*143*/, TARGET_VAL(ISD::ROTR),// ->40717
/* 40574*/    OPC_RecordChild0, // #0 = $rt
/* 40575*/    OPC_Scope, 63, /*->40640*/ // 3 children in Scope
/* 40577*/      OPC_RecordChild1, // #1 = $shamt
/* 40578*/      OPC_MoveChild1,
/* 40579*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40582*/      OPC_CheckType, MVT::i32,
/* 40584*/      OPC_Scope, 17, /*->40603*/ // 3 children in Scope
/* 40586*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 40588*/        OPC_MoveParent,
/* 40589*/        OPC_CheckType, MVT::i32,
/* 40591*/        OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 40593*/        OPC_EmitConvertToTarget, 1,
/* 40595*/        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)
/* 40603*/      /*Scope*/ 17, /*->40621*/
/* 40604*/        OPC_CheckPredicate, 36, // Predicate_immZExt6
/* 40606*/        OPC_MoveParent,
/* 40607*/        OPC_CheckType, MVT::i64,
/* 40609*/        OPC_CheckPatternPredicate, 54, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 40611*/        OPC_EmitConvertToTarget, 1,
/* 40613*/        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)
/* 40621*/      /*Scope*/ 17, /*->40639*/
/* 40622*/        OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 40624*/        OPC_MoveParent,
/* 40625*/        OPC_CheckType, MVT::i32,
/* 40627*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 40629*/        OPC_EmitConvertToTarget, 1,
/* 40631*/        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)
/* 40639*/      0, /*End of Scope*/
/* 40640*/    /*Scope*/ 31, /*->40672*/
/* 40641*/      OPC_MoveChild1,
/* 40642*/      OPC_CheckOpcode, TARGET_VAL(ISD::TRUNCATE),
/* 40645*/      OPC_RecordChild0, // #1 = $rs
/* 40646*/      OPC_CheckType, MVT::i32,
/* 40648*/      OPC_MoveParent,
/* 40649*/      OPC_CheckType, MVT::i64,
/* 40651*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 40653*/      OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 40656*/      OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                    MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 40664*/      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] }))
/* 40672*/    /*Scope*/ 43, /*->40716*/
/* 40673*/      OPC_RecordChild1, // #1 = $rs
/* 40674*/      OPC_CheckChild1Type, MVT::i32,
/* 40676*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->40703
/* 40679*/        OPC_Scope, 10, /*->40691*/ // 2 children in Scope
/* 40681*/          OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 40683*/          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)
/* 40691*/        /*Scope*/ 10, /*->40702*/
/* 40692*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 40694*/          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)
/* 40702*/        0, /*End of Scope*/
/* 40703*/      /*SwitchType*/ 10, MVT::i64,// ->40715
/* 40705*/        OPC_CheckPatternPredicate, 54, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 40707*/        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)
/* 40715*/      0, // EndSwitchType
/* 40716*/    0, /*End of Scope*/
/* 40717*/  /*SwitchOpcode*/ 78, TARGET_VAL(MipsISD::Sync),// ->40798
/* 40720*/    OPC_RecordNode, // #0 = 'MipsSync' chained node
/* 40721*/    OPC_Scope, 19, /*->40742*/ // 3 children in Scope
/* 40723*/      OPC_RecordChild1, // #1 = $stype
/* 40724*/      OPC_MoveChild1,
/* 40725*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40728*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 40730*/      OPC_MoveParent,
/* 40731*/      OPC_CheckPatternPredicate, 64, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 40733*/      OPC_EmitMergeInputChains1_0,
/* 40734*/      OPC_EmitConvertToTarget, 1,
/* 40736*/      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)
/* 40742*/    /*Scope*/ 19, /*->40762*/
/* 40743*/      OPC_MoveChild1,
/* 40744*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40747*/      OPC_CheckPredicate, 22, // Predicate_immz
/* 40749*/      OPC_MoveParent,
/* 40750*/      OPC_CheckPatternPredicate, 65, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding())
/* 40752*/      OPC_EmitMergeInputChains1_0,
/* 40753*/      OPC_EmitInteger, MVT::i32, 0, 
/* 40756*/      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] })
/* 40762*/    /*Scope*/ 34, /*->40797*/
/* 40763*/      OPC_RecordChild1, // #1 = $stype
/* 40764*/      OPC_MoveChild1,
/* 40765*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40768*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 40770*/      OPC_MoveParent,
/* 40771*/      OPC_Scope, 11, /*->40784*/ // 2 children in Scope
/* 40773*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 40775*/        OPC_EmitMergeInputChains1_0,
/* 40776*/        OPC_EmitConvertToTarget, 1,
/* 40778*/        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)
/* 40784*/      /*Scope*/ 11, /*->40796*/
/* 40785*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 40787*/        OPC_EmitMergeInputChains1_0,
/* 40788*/        OPC_EmitConvertToTarget, 1,
/* 40790*/        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)
/* 40796*/      0, /*End of Scope*/
/* 40797*/    0, /*End of Scope*/
/* 40798*/  /*SwitchOpcode*/ 82, TARGET_VAL(ISD::ADDC),// ->40883
/* 40801*/    OPC_RecordChild0, // #0 = $src
/* 40802*/    OPC_RecordChild1, // #1 = $imm
/* 40803*/    OPC_Scope, 37, /*->40842*/ // 3 children in Scope
/* 40805*/      OPC_MoveChild1,
/* 40806*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40809*/      OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 40811*/      OPC_MoveParent,
/* 40812*/      OPC_SwitchType /*2 cases */, 12, MVT::i32,// ->40827
/* 40815*/        OPC_CheckPatternPredicate, 66, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP())
/* 40817*/        OPC_EmitConvertToTarget, 1,
/* 40819*/        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)
/* 40827*/      /*SwitchType*/ 12, MVT::i64,// ->40841
/* 40829*/        OPC_CheckPatternPredicate, 67, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasDSP()) && (!Subtarget->inMicroMipsMode())
/* 40831*/        OPC_EmitConvertToTarget, 1,
/* 40833*/        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)
/* 40841*/      0, // EndSwitchType
/* 40842*/    /*Scope*/ 26, /*->40869*/
/* 40843*/      OPC_CheckType, MVT::i32,
/* 40845*/      OPC_Scope, 10, /*->40857*/ // 2 children in Scope
/* 40847*/        OPC_CheckPatternPredicate, 66, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP())
/* 40849*/        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)
/* 40857*/      /*Scope*/ 10, /*->40868*/
/* 40858*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40860*/        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)
/* 40868*/      0, /*End of Scope*/
/* 40869*/    /*Scope*/ 12, /*->40882*/
/* 40870*/      OPC_CheckType, MVT::i64,
/* 40872*/      OPC_CheckPatternPredicate, 67, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->hasDSP()) && (!Subtarget->inMicroMipsMode())
/* 40874*/      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)
/* 40882*/    0, /*End of Scope*/
/* 40883*/  /*SwitchOpcode*/ 76, TARGET_VAL(ISD::TRUNCATE),// ->40962
/* 40886*/    OPC_Scope, 45, /*->40933*/ // 2 children in Scope
/* 40888*/      OPC_MoveChild0,
/* 40889*/      OPC_SwitchOpcode /*2 cases */, 19, TARGET_VAL(ISD::AssertZext),// ->40912
/* 40893*/        OPC_RecordChild0, // #0 = $src
/* 40894*/        OPC_CheckPredicate, 55, // Predicate_assertzext_lt_i32
/* 40896*/        OPC_MoveParent,
/* 40897*/        OPC_CheckType, MVT::i32,
/* 40899*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 40901*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 40904*/        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] })
/* 40912*/      /*SwitchOpcode*/ 17, TARGET_VAL(ISD::AssertSext),// ->40932
/* 40915*/        OPC_RecordChild0, // #0 = $src
/* 40916*/        OPC_MoveParent,
/* 40917*/        OPC_CheckType, MVT::i32,
/* 40919*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 40921*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 40924*/        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] })
/* 40932*/      0, // EndSwitchOpcode
/* 40933*/    /*Scope*/ 27, /*->40961*/
/* 40934*/      OPC_RecordChild0, // #0 = $src
/* 40935*/      OPC_CheckType, MVT::i32,
/* 40937*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 40939*/      OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 40942*/      OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                    MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 40950*/      OPC_EmitInteger, MVT::i32, 0, 
/* 40953*/      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] })
/* 40961*/    0, /*End of Scope*/
/* 40962*/  /*SwitchOpcode*/ 66, TARGET_VAL(MipsISD::SHILO),// ->41031
/* 40965*/    OPC_RecordChild0, // #0 = $shift
/* 40966*/    OPC_Scope, 36, /*->41004*/ // 2 children in Scope
/* 40968*/      OPC_MoveChild0,
/* 40969*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 40972*/      OPC_CheckPredicate, 56, // Predicate_immSExt6
/* 40974*/      OPC_MoveParent,
/* 40975*/      OPC_RecordChild1, // #1 = $acin
/* 40976*/      OPC_Scope, 12, /*->40990*/ // 2 children in Scope
/* 40978*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 40980*/        OPC_EmitConvertToTarget, 0,
/* 40982*/        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)
/* 40990*/      /*Scope*/ 12, /*->41003*/
/* 40991*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 40993*/        OPC_EmitConvertToTarget, 0,
/* 40995*/        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)
/* 41003*/      0, /*End of Scope*/
/* 41004*/    /*Scope*/ 25, /*->41030*/
/* 41005*/      OPC_RecordChild1, // #1 = $acin
/* 41006*/      OPC_Scope, 10, /*->41018*/ // 2 children in Scope
/* 41008*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41010*/        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)
/* 41018*/      /*Scope*/ 10, /*->41029*/
/* 41019*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 41021*/        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)
/* 41029*/      0, /*End of Scope*/
/* 41030*/    0, /*End of Scope*/
/* 41031*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTP),// ->41073
/* 41034*/    OPC_RecordNode, // #0 = 'MipsEXTP' chained node
/* 41035*/    OPC_RecordChild1, // #1 = $shift
/* 41036*/    OPC_Scope, 21, /*->41059*/ // 2 children in Scope
/* 41038*/      OPC_MoveChild1,
/* 41039*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41042*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 41044*/      OPC_MoveParent,
/* 41045*/      OPC_RecordChild2, // #2 = $ac
/* 41046*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41048*/      OPC_EmitMergeInputChains1_0,
/* 41049*/      OPC_EmitConvertToTarget, 1,
/* 41051*/      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)
/* 41059*/    /*Scope*/ 12, /*->41072*/
/* 41060*/      OPC_RecordChild2, // #2 = $ac
/* 41061*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41063*/      OPC_EmitMergeInputChains1_0,
/* 41064*/      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)
/* 41072*/    0, /*End of Scope*/
/* 41073*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTPDP),// ->41115
/* 41076*/    OPC_RecordNode, // #0 = 'MipsEXTPDP' chained node
/* 41077*/    OPC_RecordChild1, // #1 = $shift
/* 41078*/    OPC_Scope, 21, /*->41101*/ // 2 children in Scope
/* 41080*/      OPC_MoveChild1,
/* 41081*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41084*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 41086*/      OPC_MoveParent,
/* 41087*/      OPC_RecordChild2, // #2 = $ac
/* 41088*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41090*/      OPC_EmitMergeInputChains1_0,
/* 41091*/      OPC_EmitConvertToTarget, 1,
/* 41093*/      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)
/* 41101*/    /*Scope*/ 12, /*->41114*/
/* 41102*/      OPC_RecordChild2, // #2 = $ac
/* 41103*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41105*/      OPC_EmitMergeInputChains1_0,
/* 41106*/      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)
/* 41114*/    0, /*End of Scope*/
/* 41115*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTR_W),// ->41157
/* 41118*/    OPC_RecordNode, // #0 = 'MipsEXTR_W' chained node
/* 41119*/    OPC_RecordChild1, // #1 = $shift
/* 41120*/    OPC_Scope, 21, /*->41143*/ // 2 children in Scope
/* 41122*/      OPC_MoveChild1,
/* 41123*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41126*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 41128*/      OPC_MoveParent,
/* 41129*/      OPC_RecordChild2, // #2 = $ac
/* 41130*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41132*/      OPC_EmitMergeInputChains1_0,
/* 41133*/      OPC_EmitConvertToTarget, 1,
/* 41135*/      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)
/* 41143*/    /*Scope*/ 12, /*->41156*/
/* 41144*/      OPC_RecordChild2, // #2 = $ac
/* 41145*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41147*/      OPC_EmitMergeInputChains1_0,
/* 41148*/      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)
/* 41156*/    0, /*End of Scope*/
/* 41157*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTR_R_W),// ->41199
/* 41160*/    OPC_RecordNode, // #0 = 'MipsEXTR_R_W' chained node
/* 41161*/    OPC_RecordChild1, // #1 = $shift
/* 41162*/    OPC_Scope, 21, /*->41185*/ // 2 children in Scope
/* 41164*/      OPC_MoveChild1,
/* 41165*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41168*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 41170*/      OPC_MoveParent,
/* 41171*/      OPC_RecordChild2, // #2 = $ac
/* 41172*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41174*/      OPC_EmitMergeInputChains1_0,
/* 41175*/      OPC_EmitConvertToTarget, 1,
/* 41177*/      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)
/* 41185*/    /*Scope*/ 12, /*->41198*/
/* 41186*/      OPC_RecordChild2, // #2 = $ac
/* 41187*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41189*/      OPC_EmitMergeInputChains1_0,
/* 41190*/      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)
/* 41198*/    0, /*End of Scope*/
/* 41199*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTR_RS_W),// ->41241
/* 41202*/    OPC_RecordNode, // #0 = 'MipsEXTR_RS_W' chained node
/* 41203*/    OPC_RecordChild1, // #1 = $shift
/* 41204*/    OPC_Scope, 21, /*->41227*/ // 2 children in Scope
/* 41206*/      OPC_MoveChild1,
/* 41207*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41210*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 41212*/      OPC_MoveParent,
/* 41213*/      OPC_RecordChild2, // #2 = $ac
/* 41214*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41216*/      OPC_EmitMergeInputChains1_0,
/* 41217*/      OPC_EmitConvertToTarget, 1,
/* 41219*/      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)
/* 41227*/    /*Scope*/ 12, /*->41240*/
/* 41228*/      OPC_RecordChild2, // #2 = $ac
/* 41229*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41231*/      OPC_EmitMergeInputChains1_0,
/* 41232*/      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)
/* 41240*/    0, /*End of Scope*/
/* 41241*/  /*SwitchOpcode*/ 39, TARGET_VAL(MipsISD::EXTR_S_H),// ->41283
/* 41244*/    OPC_RecordNode, // #0 = 'MipsEXTR_S_H' chained node
/* 41245*/    OPC_RecordChild1, // #1 = $shift
/* 41246*/    OPC_Scope, 21, /*->41269*/ // 2 children in Scope
/* 41248*/      OPC_MoveChild1,
/* 41249*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41252*/      OPC_CheckPredicate, 28, // Predicate_immZExt5
/* 41254*/      OPC_MoveParent,
/* 41255*/      OPC_RecordChild2, // #2 = $ac
/* 41256*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41258*/      OPC_EmitMergeInputChains1_0,
/* 41259*/      OPC_EmitConvertToTarget, 1,
/* 41261*/      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)
/* 41269*/    /*Scope*/ 12, /*->41282*/
/* 41270*/      OPC_RecordChild2, // #2 = $ac
/* 41271*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 41273*/      OPC_EmitMergeInputChains1_0,
/* 41274*/      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)
/* 41282*/    0, /*End of Scope*/
/* 41283*/  /*SwitchOpcode*/ 83|128,4/*595*/, TARGET_VAL(MipsISD::VEXTRACT_SEXT_ELT),// ->41882
/* 41287*/    OPC_RecordChild0, // #0 = $ws
/* 41288*/    OPC_Scope, 29|128,1/*157*/, /*->41448*/ // 4 children in Scope
/* 41291*/      OPC_CheckChild0Type, MVT::v16i8,
/* 41293*/      OPC_RecordChild1, // #1 = $n
/* 41294*/      OPC_Scope, 25, /*->41321*/ // 3 children in Scope
/* 41296*/        OPC_MoveChild1,
/* 41297*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41300*/        OPC_CheckPredicate, 31, // Predicate_immZExt4Ptr
/* 41302*/        OPC_MoveParent,
/* 41303*/        OPC_MoveChild2,
/* 41304*/        OPC_CheckValueType, MVT::i8,
/* 41306*/        OPC_MoveParent,
/* 41307*/        OPC_CheckType, MVT::i32,
/* 41309*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 41311*/        OPC_EmitConvertToTarget, 1,
/* 41313*/        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)
/* 41321*/      /*Scope*/ 51, /*->41373*/
/* 41322*/        OPC_CheckChild1Type, MVT::i32,
/* 41324*/        OPC_MoveChild2,
/* 41325*/        OPC_CheckValueType, MVT::i8,
/* 41327*/        OPC_MoveParent,
/* 41328*/        OPC_CheckType, MVT::i32,
/* 41330*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41332*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41340*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41343*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 41351*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41354*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 41362*/        OPC_EmitInteger, MVT::i32, 24, 
/* 41365*/        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] })
/* 41373*/      /*Scope*/ 73, /*->41447*/
/* 41374*/        OPC_CheckChild1Type, MVT::i64,
/* 41376*/        OPC_MoveChild2,
/* 41377*/        OPC_CheckValueType, MVT::i8,
/* 41379*/        OPC_MoveParent,
/* 41380*/        OPC_CheckType, MVT::i32,
/* 41382*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41384*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41387*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41395*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41398*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 41406*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 5,  // Results = #6
/* 41414*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41417*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 41425*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41428*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 8, 9,  // Results = #10
/* 41436*/        OPC_EmitInteger, MVT::i32, 24, 
/* 41439*/        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] })
/* 41447*/      0, /*End of Scope*/
/* 41448*/    /*Scope*/ 29|128,1/*157*/, /*->41607*/
/* 41450*/      OPC_CheckChild0Type, MVT::v8i16,
/* 41452*/      OPC_RecordChild1, // #1 = $n
/* 41453*/      OPC_Scope, 25, /*->41480*/ // 3 children in Scope
/* 41455*/        OPC_MoveChild1,
/* 41456*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41459*/        OPC_CheckPredicate, 32, // Predicate_immZExt3Ptr
/* 41461*/        OPC_MoveParent,
/* 41462*/        OPC_MoveChild2,
/* 41463*/        OPC_CheckValueType, MVT::i16,
/* 41465*/        OPC_MoveParent,
/* 41466*/        OPC_CheckType, MVT::i32,
/* 41468*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 41470*/        OPC_EmitConvertToTarget, 1,
/* 41472*/        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)
/* 41480*/      /*Scope*/ 51, /*->41532*/
/* 41481*/        OPC_CheckChild1Type, MVT::i32,
/* 41483*/        OPC_MoveChild2,
/* 41484*/        OPC_CheckValueType, MVT::i16,
/* 41486*/        OPC_MoveParent,
/* 41487*/        OPC_CheckType, MVT::i32,
/* 41489*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41491*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41499*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41502*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 41510*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41513*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 41521*/        OPC_EmitInteger, MVT::i32, 16, 
/* 41524*/        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] })
/* 41532*/      /*Scope*/ 73, /*->41606*/
/* 41533*/        OPC_CheckChild1Type, MVT::i64,
/* 41535*/        OPC_MoveChild2,
/* 41536*/        OPC_CheckValueType, MVT::i16,
/* 41538*/        OPC_MoveParent,
/* 41539*/        OPC_CheckType, MVT::i32,
/* 41541*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41543*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41546*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41554*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41557*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 41565*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 5,  // Results = #6
/* 41573*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41576*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 41584*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41587*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 8, 9,  // Results = #10
/* 41595*/        OPC_EmitInteger, MVT::i32, 16, 
/* 41598*/        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] })
/* 41606*/      0, /*End of Scope*/
/* 41607*/    /*Scope*/ 7|128,1/*135*/, /*->41744*/
/* 41609*/      OPC_CheckChild0Type, MVT::v4i32,
/* 41611*/      OPC_RecordChild1, // #1 = $n
/* 41612*/      OPC_Scope, 25, /*->41639*/ // 3 children in Scope
/* 41614*/        OPC_MoveChild1,
/* 41615*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41618*/        OPC_CheckPredicate, 33, // Predicate_immZExt2Ptr
/* 41620*/        OPC_MoveParent,
/* 41621*/        OPC_MoveChild2,
/* 41622*/        OPC_CheckValueType, MVT::i32,
/* 41624*/        OPC_MoveParent,
/* 41625*/        OPC_CheckType, MVT::i32,
/* 41627*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 41629*/        OPC_EmitConvertToTarget, 1,
/* 41631*/        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)
/* 41639*/      /*Scope*/ 40, /*->41680*/
/* 41640*/        OPC_CheckChild1Type, MVT::i32,
/* 41642*/        OPC_MoveChild2,
/* 41643*/        OPC_CheckValueType, MVT::i32,
/* 41645*/        OPC_MoveParent,
/* 41646*/        OPC_CheckType, MVT::i32,
/* 41648*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41650*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41658*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41661*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 41669*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41672*/        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] })
/* 41680*/      /*Scope*/ 62, /*->41743*/
/* 41681*/        OPC_CheckChild1Type, MVT::i64,
/* 41683*/        OPC_MoveChild2,
/* 41684*/        OPC_CheckValueType, MVT::i32,
/* 41686*/        OPC_MoveParent,
/* 41687*/        OPC_CheckType, MVT::i32,
/* 41689*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41691*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41694*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41702*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41705*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 41713*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 41721*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41724*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 41732*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41735*/        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] })
/* 41743*/      0, /*End of Scope*/
/* 41744*/    /*Scope*/ 7|128,1/*135*/, /*->41881*/
/* 41746*/      OPC_CheckChild0Type, MVT::v2i64,
/* 41748*/      OPC_RecordChild1, // #1 = $n
/* 41749*/      OPC_Scope, 25, /*->41776*/ // 3 children in Scope
/* 41751*/        OPC_MoveChild1,
/* 41752*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41755*/        OPC_CheckPredicate, 37, // Predicate_immZExt1Ptr
/* 41757*/        OPC_MoveParent,
/* 41758*/        OPC_MoveChild2,
/* 41759*/        OPC_CheckValueType, MVT::i64,
/* 41761*/        OPC_MoveParent,
/* 41762*/        OPC_CheckType, MVT::i64,
/* 41764*/        OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 41766*/        OPC_EmitConvertToTarget, 1,
/* 41768*/        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)
/* 41776*/      /*Scope*/ 40, /*->41817*/
/* 41777*/        OPC_CheckChild1Type, MVT::i32,
/* 41779*/        OPC_MoveChild2,
/* 41780*/        OPC_CheckValueType, MVT::i64,
/* 41782*/        OPC_MoveParent,
/* 41783*/        OPC_CheckType, MVT::i64,
/* 41785*/        OPC_CheckPatternPredicate, 68, // (Subtarget->hasMSA()) && (Subtarget->isGP64bit())
/* 41787*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41795*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 41798*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i64, 2/*#Ops*/, 2, 3,  // Results = #4
/* 41806*/        OPC_EmitInteger, MVT::i32, Mips::GPR64RegClassID,
/* 41809*/        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] })
/* 41817*/      /*Scope*/ 62, /*->41880*/
/* 41818*/        OPC_CheckChild1Type, MVT::i64,
/* 41820*/        OPC_MoveChild2,
/* 41821*/        OPC_CheckValueType, MVT::i64,
/* 41823*/        OPC_MoveParent,
/* 41824*/        OPC_CheckType, MVT::i64,
/* 41826*/        OPC_CheckPatternPredicate, 68, // (Subtarget->hasMSA()) && (Subtarget->isGP64bit())
/* 41828*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41831*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41839*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41842*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 41850*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 5,  // Results = #6
/* 41858*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 41861*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i64, 2/*#Ops*/, 6, 7,  // Results = #8
/* 41869*/        OPC_EmitInteger, MVT::i32, Mips::GPR64RegClassID,
/* 41872*/        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] })
/* 41880*/      0, /*End of Scope*/
/* 41881*/    0, /*End of Scope*/
/* 41882*/  /*SwitchOpcode*/ 29|128,5/*669*/, TARGET_VAL(MipsISD::VEXTRACT_ZEXT_ELT),// ->42555
/* 41886*/    OPC_RecordChild0, // #0 = $ws
/* 41887*/    OPC_Scope, 29|128,1/*157*/, /*->42047*/ // 6 children in Scope
/* 41890*/      OPC_CheckChild0Type, MVT::v16i8,
/* 41892*/      OPC_RecordChild1, // #1 = $n
/* 41893*/      OPC_Scope, 25, /*->41920*/ // 3 children in Scope
/* 41895*/        OPC_MoveChild1,
/* 41896*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 41899*/        OPC_CheckPredicate, 31, // Predicate_immZExt4Ptr
/* 41901*/        OPC_MoveParent,
/* 41902*/        OPC_MoveChild2,
/* 41903*/        OPC_CheckValueType, MVT::i8,
/* 41905*/        OPC_MoveParent,
/* 41906*/        OPC_CheckType, MVT::i32,
/* 41908*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 41910*/        OPC_EmitConvertToTarget, 1,
/* 41912*/        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)
/* 41920*/      /*Scope*/ 51, /*->41972*/
/* 41921*/        OPC_CheckChild1Type, MVT::i32,
/* 41923*/        OPC_MoveChild2,
/* 41924*/        OPC_CheckValueType, MVT::i8,
/* 41926*/        OPC_MoveParent,
/* 41927*/        OPC_CheckType, MVT::i32,
/* 41929*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41931*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 41939*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 41942*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 41950*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41953*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 41961*/        OPC_EmitInteger, MVT::i32, 24, 
/* 41964*/        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] })
/* 41972*/      /*Scope*/ 73, /*->42046*/
/* 41973*/        OPC_CheckChild1Type, MVT::i64,
/* 41975*/        OPC_MoveChild2,
/* 41976*/        OPC_CheckValueType, MVT::i8,
/* 41978*/        OPC_MoveParent,
/* 41979*/        OPC_CheckType, MVT::i32,
/* 41981*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 41983*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 41986*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 41994*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 41997*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 42005*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 5,  // Results = #6
/* 42013*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 42016*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 42024*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42027*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 8, 9,  // Results = #10
/* 42035*/        OPC_EmitInteger, MVT::i32, 24, 
/* 42038*/        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] })
/* 42046*/      0, /*End of Scope*/
/* 42047*/    /*Scope*/ 29|128,1/*157*/, /*->42206*/
/* 42049*/      OPC_CheckChild0Type, MVT::v8i16,
/* 42051*/      OPC_RecordChild1, // #1 = $n
/* 42052*/      OPC_Scope, 25, /*->42079*/ // 3 children in Scope
/* 42054*/        OPC_MoveChild1,
/* 42055*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42058*/        OPC_CheckPredicate, 32, // Predicate_immZExt3Ptr
/* 42060*/        OPC_MoveParent,
/* 42061*/        OPC_MoveChild2,
/* 42062*/        OPC_CheckValueType, MVT::i16,
/* 42064*/        OPC_MoveParent,
/* 42065*/        OPC_CheckType, MVT::i32,
/* 42067*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 42069*/        OPC_EmitConvertToTarget, 1,
/* 42071*/        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)
/* 42079*/      /*Scope*/ 51, /*->42131*/
/* 42080*/        OPC_CheckChild1Type, MVT::i32,
/* 42082*/        OPC_MoveChild2,
/* 42083*/        OPC_CheckValueType, MVT::i16,
/* 42085*/        OPC_MoveParent,
/* 42086*/        OPC_CheckType, MVT::i32,
/* 42088*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42090*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 42098*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 42101*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 42109*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42112*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 42120*/        OPC_EmitInteger, MVT::i32, 16, 
/* 42123*/        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] })
/* 42131*/      /*Scope*/ 73, /*->42205*/
/* 42132*/        OPC_CheckChild1Type, MVT::i64,
/* 42134*/        OPC_MoveChild2,
/* 42135*/        OPC_CheckValueType, MVT::i16,
/* 42137*/        OPC_MoveParent,
/* 42138*/        OPC_CheckType, MVT::i32,
/* 42140*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42142*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 42145*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 42153*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42156*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 42164*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 5,  // Results = #6
/* 42172*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 42175*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 42183*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42186*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 8, 9,  // Results = #10
/* 42194*/        OPC_EmitInteger, MVT::i32, 16, 
/* 42197*/        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] })
/* 42205*/      0, /*End of Scope*/
/* 42206*/    /*Scope*/ 23|128,1/*151*/, /*->42359*/
/* 42208*/      OPC_CheckChild0Type, MVT::v4i32,
/* 42210*/      OPC_RecordChild1, // #1 = $n
/* 42211*/      OPC_Scope, 41, /*->42254*/ // 3 children in Scope
/* 42213*/        OPC_MoveChild1,
/* 42214*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42217*/        OPC_CheckPredicate, 33, // Predicate_immZExt2Ptr
/* 42219*/        OPC_MoveParent,
/* 42220*/        OPC_MoveChild2,
/* 42221*/        OPC_CheckValueType, MVT::i32,
/* 42223*/        OPC_MoveParent,
/* 42224*/        OPC_CheckType, MVT::i32,
/* 42226*/        OPC_Scope, 12, /*->42240*/ // 2 children in Scope
/* 42228*/          OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 42230*/          OPC_EmitConvertToTarget, 1,
/* 42232*/          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)
/* 42240*/        /*Scope*/ 12, /*->42253*/
/* 42241*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42243*/          OPC_EmitConvertToTarget, 1,
/* 42245*/          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)
/* 42253*/        0, /*End of Scope*/
/* 42254*/      /*Scope*/ 40, /*->42295*/
/* 42255*/        OPC_CheckChild1Type, MVT::i32,
/* 42257*/        OPC_MoveChild2,
/* 42258*/        OPC_CheckValueType, MVT::i32,
/* 42260*/        OPC_MoveParent,
/* 42261*/        OPC_CheckType, MVT::i32,
/* 42263*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42265*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 42273*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 42276*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 42284*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42287*/        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] })
/* 42295*/      /*Scope*/ 62, /*->42358*/
/* 42296*/        OPC_CheckChild1Type, MVT::i64,
/* 42298*/        OPC_MoveChild2,
/* 42299*/        OPC_CheckValueType, MVT::i32,
/* 42301*/        OPC_MoveParent,
/* 42302*/        OPC_CheckType, MVT::i32,
/* 42304*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42306*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 42309*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 42317*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42320*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 42328*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 42336*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 42339*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 42347*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42350*/        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] })
/* 42358*/      0, /*End of Scope*/
/* 42359*/    /*Scope*/ 28, /*->42388*/
/* 42360*/      OPC_CheckChild0Type, MVT::v4f32,
/* 42362*/      OPC_RecordChild1, // #1 = $idx
/* 42363*/      OPC_MoveChild1,
/* 42364*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42367*/      OPC_CheckPredicate, 33, // Predicate_immZExt2Ptr
/* 42369*/      OPC_MoveParent,
/* 42370*/      OPC_MoveChild2,
/* 42371*/      OPC_CheckValueType, MVT::i32,
/* 42373*/      OPC_MoveParent,
/* 42374*/      OPC_CheckType, MVT::i32,
/* 42376*/      OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42378*/      OPC_EmitConvertToTarget, 1,
/* 42380*/      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)
/* 42388*/    /*Scope*/ 7|128,1/*135*/, /*->42525*/
/* 42390*/      OPC_CheckChild0Type, MVT::v2i64,
/* 42392*/      OPC_RecordChild1, // #1 = $idx
/* 42393*/      OPC_Scope, 25, /*->42420*/ // 3 children in Scope
/* 42395*/        OPC_MoveChild1,
/* 42396*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42399*/        OPC_CheckPredicate, 37, // Predicate_immZExt1Ptr
/* 42401*/        OPC_MoveParent,
/* 42402*/        OPC_MoveChild2,
/* 42403*/        OPC_CheckValueType, MVT::i64,
/* 42405*/        OPC_MoveParent,
/* 42406*/        OPC_CheckType, MVT::i64,
/* 42408*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42410*/        OPC_EmitConvertToTarget, 1,
/* 42412*/        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)
/* 42420*/      /*Scope*/ 40, /*->42461*/
/* 42421*/        OPC_CheckChild1Type, MVT::i32,
/* 42423*/        OPC_MoveChild2,
/* 42424*/        OPC_CheckValueType, MVT::i64,
/* 42426*/        OPC_MoveParent,
/* 42427*/        OPC_CheckType, MVT::i64,
/* 42429*/        OPC_CheckPatternPredicate, 68, // (Subtarget->hasMSA()) && (Subtarget->isGP64bit())
/* 42431*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1,  // Results = #2
/* 42439*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 42442*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i64, 2/*#Ops*/, 2, 3,  // Results = #4
/* 42450*/        OPC_EmitInteger, MVT::i32, Mips::GPR64RegClassID,
/* 42453*/        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] })
/* 42461*/      /*Scope*/ 62, /*->42524*/
/* 42462*/        OPC_CheckChild1Type, MVT::i64,
/* 42464*/        OPC_MoveChild2,
/* 42465*/        OPC_CheckValueType, MVT::i64,
/* 42467*/        OPC_MoveParent,
/* 42468*/        OPC_CheckType, MVT::i64,
/* 42470*/        OPC_CheckPatternPredicate, 68, // (Subtarget->hasMSA()) && (Subtarget->isGP64bit())
/* 42472*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 42475*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 42483*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42486*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 42494*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 5,  // Results = #6
/* 42502*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 42505*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i64, 2/*#Ops*/, 6, 7,  // Results = #8
/* 42513*/        OPC_EmitInteger, MVT::i32, Mips::GPR64RegClassID,
/* 42516*/        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] })
/* 42524*/      0, /*End of Scope*/
/* 42525*/    /*Scope*/ 28, /*->42554*/
/* 42526*/      OPC_CheckChild0Type, MVT::v2f64,
/* 42528*/      OPC_RecordChild1, // #1 = $idx
/* 42529*/      OPC_MoveChild1,
/* 42530*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42533*/      OPC_CheckPredicate, 37, // Predicate_immZExt1Ptr
/* 42535*/      OPC_MoveParent,
/* 42536*/      OPC_MoveChild2,
/* 42537*/      OPC_CheckValueType, MVT::i64,
/* 42539*/      OPC_MoveParent,
/* 42540*/      OPC_CheckType, MVT::i64,
/* 42542*/      OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42544*/      OPC_EmitConvertToTarget, 1,
/* 42546*/      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)
/* 42554*/    0, /*End of Scope*/
/* 42555*/  /*SwitchOpcode*/ 104|128,1/*232*/, TARGET_VAL(ISD::EXTRACT_VECTOR_ELT),// ->42791
/* 42559*/    OPC_RecordChild0, // #0 = $ws
/* 42560*/    OPC_Scope, 24, /*->42586*/ // 3 children in Scope
/* 42562*/      OPC_RecordChild1, // #1 = $idx
/* 42563*/      OPC_MoveChild1,
/* 42564*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42567*/      OPC_CheckPredicate, 31, // Predicate_immZExt4
/* 42569*/      OPC_CheckType, MVT::i32,
/* 42571*/      OPC_MoveParent,
/* 42572*/      OPC_CheckType, MVT::i32,
/* 42574*/      OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42576*/      OPC_EmitConvertToTarget, 1,
/* 42578*/      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)
/* 42586*/    /*Scope*/ 101, /*->42688*/
/* 42587*/      OPC_CheckChild0Type, MVT::v4f32,
/* 42589*/      OPC_RecordChild1, // #1 = $n
/* 42590*/      OPC_Scope, 21, /*->42613*/ // 3 children in Scope
/* 42592*/        OPC_MoveChild1,
/* 42593*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42596*/        OPC_CheckPredicate, 33, // Predicate_immZExt2Ptr
/* 42598*/        OPC_MoveParent,
/* 42599*/        OPC_CheckType, MVT::f32,
/* 42601*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 42603*/        OPC_EmitConvertToTarget, 1,
/* 42605*/        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)
/* 42613*/      /*Scope*/ 25, /*->42639*/
/* 42614*/        OPC_CheckChild1Type, MVT::i32,
/* 42616*/        OPC_CheckType, MVT::f32,
/* 42618*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42620*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 42628*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 42631*/        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] })
/* 42639*/      /*Scope*/ 47, /*->42687*/
/* 42640*/        OPC_CheckChild1Type, MVT::i64,
/* 42642*/        OPC_CheckType, MVT::f32,
/* 42644*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42646*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 42649*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 42657*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42660*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 42668*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_W), 0,
                      MVT::v4i32, 2/*#Ops*/, 0, 5,  // Results = #6
/* 42676*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 42679*/        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] })
/* 42687*/      0, /*End of Scope*/
/* 42688*/    /*Scope*/ 101, /*->42790*/
/* 42689*/      OPC_CheckChild0Type, MVT::v2f64,
/* 42691*/      OPC_RecordChild1, // #1 = $n
/* 42692*/      OPC_Scope, 21, /*->42715*/ // 3 children in Scope
/* 42694*/        OPC_MoveChild1,
/* 42695*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 42698*/        OPC_CheckPredicate, 37, // Predicate_immZExt1Ptr
/* 42700*/        OPC_MoveParent,
/* 42701*/        OPC_CheckType, MVT::f64,
/* 42703*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 42705*/        OPC_EmitConvertToTarget, 1,
/* 42707*/        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)
/* 42715*/      /*Scope*/ 25, /*->42741*/
/* 42716*/        OPC_CheckChild1Type, MVT::i32,
/* 42718*/        OPC_CheckType, MVT::f64,
/* 42720*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42722*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 1,  // Results = #2
/* 42730*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 42733*/        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] })
/* 42741*/      /*Scope*/ 47, /*->42789*/
/* 42742*/        OPC_CheckChild1Type, MVT::i64,
/* 42744*/        OPC_CheckType, MVT::f64,
/* 42746*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 42748*/        OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 42751*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG), 0,
                      MVT::i32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 42759*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 42762*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 42770*/        OPC_EmitNode1, TARGET_VAL(Mips::SPLAT_D), 0,
                      MVT::v2i64, 2/*#Ops*/, 0, 5,  // Results = #6
/* 42778*/        OPC_EmitInteger, MVT::i32, Mips::sub_64,
/* 42781*/        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] })
/* 42789*/      0, /*End of Scope*/
/* 42790*/    0, /*End of Scope*/
/* 42791*/  /*SwitchOpcode*/ 66|128,1/*194*/, TARGET_VAL(MipsISD::JmpLink),// ->42989
/* 42795*/    OPC_RecordNode, // #0 = 'MipsJmpLink' chained node
/* 42796*/    OPC_CaptureGlueInput,
/* 42797*/    OPC_RecordChild1, // #1 = $target
/* 42798*/    OPC_Scope, 108, /*->42908*/ // 3 children in Scope
/* 42800*/      OPC_MoveChild1,
/* 42801*/      OPC_SwitchOpcode /*2 cases */, 60, TARGET_VAL(ISD::TargetGlobalAddress),// ->42865
/* 42805*/        OPC_Scope, 23, /*->42830*/ // 3 children in Scope
/* 42807*/          OPC_MoveParent,
/* 42808*/          OPC_Scope, 9, /*->42819*/ // 2 children in Scope
/* 42810*/            OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 42812*/            OPC_EmitMergeInputChains1_0,
/* 42813*/            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)
/* 42819*/          /*Scope*/ 9, /*->42829*/
/* 42820*/            OPC_CheckPatternPredicate, 49, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 42822*/            OPC_EmitMergeInputChains1_0,
/* 42823*/            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)
/* 42829*/          0, /*End of Scope*/
/* 42830*/        /*Scope*/ 12, /*->42843*/
/* 42831*/          OPC_CheckType, MVT::i32,
/* 42833*/          OPC_MoveParent,
/* 42834*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 42836*/          OPC_EmitMergeInputChains1_0,
/* 42837*/          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)
/* 42843*/        /*Scope*/ 20, /*->42864*/
/* 42844*/          OPC_MoveParent,
/* 42845*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 42847*/          OPC_EmitMergeInputChains1_0,
/* 42848*/          OPC_Scope, 6, /*->42856*/ // 2 children in Scope
/* 42850*/            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)
/* 42856*/          /*Scope*/ 6, /*->42863*/
/* 42857*/            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)
/* 42863*/          0, /*End of Scope*/
/* 42864*/        0, /*End of Scope*/
/* 42865*/      /*SwitchOpcode*/ 39, TARGET_VAL(ISD::TargetExternalSymbol),// ->42907
/* 42868*/        OPC_SwitchType /*2 cases */, 23, MVT::i32,// ->42894
/* 42871*/          OPC_MoveParent,
/* 42872*/          OPC_Scope, 9, /*->42883*/ // 2 children in Scope
/* 42874*/            OPC_CheckPatternPredicate, 69, // (Subtarget->hasStandardEncoding())
/* 42876*/            OPC_EmitMergeInputChains1_0,
/* 42877*/            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)
/* 42883*/          /*Scope*/ 9, /*->42893*/
/* 42884*/            OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 42886*/            OPC_EmitMergeInputChains1_0,
/* 42887*/            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)
/* 42893*/          0, /*End of Scope*/
/* 42894*/        /*SwitchType*/ 10, MVT::i64,// ->42906
/* 42896*/          OPC_MoveParent,
/* 42897*/          OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 42899*/          OPC_EmitMergeInputChains1_0,
/* 42900*/          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)
/* 42906*/        0, // EndSwitchType
/* 42907*/      0, // EndSwitchOpcode
/* 42908*/    /*Scope*/ 54, /*->42963*/
/* 42909*/      OPC_CheckChild1Type, MVT::i32,
/* 42911*/      OPC_Scope, 9, /*->42922*/ // 5 children in Scope
/* 42913*/        OPC_CheckPatternPredicate, 70, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode())
/* 42915*/        OPC_EmitMergeInputChains1_0,
/* 42916*/        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)
/* 42922*/      /*Scope*/ 9, /*->42932*/
/* 42923*/        OPC_CheckPatternPredicate, 71, // (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 42925*/        OPC_EmitMergeInputChains1_0,
/* 42926*/        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)
/* 42932*/      /*Scope*/ 9, /*->42942*/
/* 42933*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 42935*/        OPC_EmitMergeInputChains1_0,
/* 42936*/        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)
/* 42942*/      /*Scope*/ 9, /*->42952*/
/* 42943*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 42945*/        OPC_EmitMergeInputChains1_0,
/* 42946*/        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)
/* 42952*/      /*Scope*/ 9, /*->42962*/
/* 42953*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 42955*/        OPC_EmitMergeInputChains1_0,
/* 42956*/        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)
/* 42962*/      0, /*End of Scope*/
/* 42963*/    /*Scope*/ 24, /*->42988*/
/* 42964*/      OPC_CheckChild1Type, MVT::i64,
/* 42966*/      OPC_Scope, 9, /*->42977*/ // 2 children in Scope
/* 42968*/        OPC_CheckPatternPredicate, 72, // (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMips16Mode())
/* 42970*/        OPC_EmitMergeInputChains1_0,
/* 42971*/        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)
/* 42977*/      /*Scope*/ 9, /*->42987*/
/* 42978*/        OPC_CheckPatternPredicate, 73, // (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 42980*/        OPC_EmitMergeInputChains1_0,
/* 42981*/        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)
/* 42987*/      0, /*End of Scope*/
/* 42988*/    0, /*End of Scope*/
/* 42989*/  /*SwitchOpcode*/ 63|128,1/*191*/, TARGET_VAL(MipsISD::TailCall),// ->43184
/* 42993*/    OPC_RecordNode, // #0 = 'MipsTailCall' chained node
/* 42994*/    OPC_CaptureGlueInput,
/* 42995*/    OPC_RecordChild1, // #1 = $dst
/* 42996*/    OPC_Scope, 75, /*->43073*/ // 3 children in Scope
/* 42998*/      OPC_MoveChild1,
/* 42999*/      OPC_SwitchOpcode /*2 cases */, 33, TARGET_VAL(ISD::TargetGlobalAddress),// ->43036
/* 43003*/        OPC_MoveParent,
/* 43004*/        OPC_Scope, 9, /*->43015*/ // 3 children in Scope
/* 43006*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43008*/          OPC_EmitMergeInputChains1_0,
/* 43009*/          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)
/* 43015*/        /*Scope*/ 9, /*->43025*/
/* 43016*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 43018*/          OPC_EmitMergeInputChains1_0,
/* 43019*/          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)
/* 43025*/        /*Scope*/ 9, /*->43035*/
/* 43026*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 43028*/          OPC_EmitMergeInputChains1_0,
/* 43029*/          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)
/* 43035*/        0, /*End of Scope*/
/* 43036*/      /*SwitchOpcode*/ 33, TARGET_VAL(ISD::TargetExternalSymbol),// ->43072
/* 43039*/        OPC_MoveParent,
/* 43040*/        OPC_Scope, 9, /*->43051*/ // 3 children in Scope
/* 43042*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43044*/          OPC_EmitMergeInputChains1_0,
/* 43045*/          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)
/* 43051*/        /*Scope*/ 9, /*->43061*/
/* 43052*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 43054*/          OPC_EmitMergeInputChains1_0,
/* 43055*/          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)
/* 43061*/        /*Scope*/ 9, /*->43071*/
/* 43062*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 43064*/          OPC_EmitMergeInputChains1_0,
/* 43065*/          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)
/* 43071*/        0, /*End of Scope*/
/* 43072*/      0, // EndSwitchOpcode
/* 43073*/    /*Scope*/ 64, /*->43138*/
/* 43074*/      OPC_CheckChild1Type, MVT::i32,
/* 43076*/      OPC_Scope, 9, /*->43087*/ // 6 children in Scope
/* 43078*/        OPC_CheckPatternPredicate, 74, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 43080*/        OPC_EmitMergeInputChains1_0,
/* 43081*/        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)
/* 43087*/      /*Scope*/ 9, /*->43097*/
/* 43088*/        OPC_CheckPatternPredicate, 75, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard())
/* 43090*/        OPC_EmitMergeInputChains1_0,
/* 43091*/        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)
/* 43097*/      /*Scope*/ 9, /*->43107*/
/* 43098*/        OPC_CheckPatternPredicate, 76, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode())
/* 43100*/        OPC_EmitMergeInputChains1_0,
/* 43101*/        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)
/* 43107*/      /*Scope*/ 9, /*->43117*/
/* 43108*/        OPC_CheckPatternPredicate, 77, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 43110*/        OPC_EmitMergeInputChains1_0,
/* 43111*/        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)
/* 43117*/      /*Scope*/ 9, /*->43127*/
/* 43118*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 43120*/        OPC_EmitMergeInputChains1_0,
/* 43121*/        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)
/* 43127*/      /*Scope*/ 9, /*->43137*/
/* 43128*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 43130*/        OPC_EmitMergeInputChains1_0,
/* 43131*/        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)
/* 43137*/      0, /*End of Scope*/
/* 43138*/    /*Scope*/ 44, /*->43183*/
/* 43139*/      OPC_CheckChild1Type, MVT::i64,
/* 43141*/      OPC_Scope, 9, /*->43152*/ // 4 children in Scope
/* 43143*/        OPC_CheckPatternPredicate, 78, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 43145*/        OPC_EmitMergeInputChains1_0,
/* 43146*/        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)
/* 43152*/      /*Scope*/ 9, /*->43162*/
/* 43153*/        OPC_CheckPatternPredicate, 79, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isABI_N64()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard())
/* 43155*/        OPC_EmitMergeInputChains1_0,
/* 43156*/        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)
/* 43162*/      /*Scope*/ 9, /*->43172*/
/* 43163*/        OPC_CheckPatternPredicate, 80, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode())
/* 43165*/        OPC_EmitMergeInputChains1_0,
/* 43166*/        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)
/* 43172*/      /*Scope*/ 9, /*->43182*/
/* 43173*/        OPC_CheckPatternPredicate, 81, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 43175*/        OPC_EmitMergeInputChains1_0,
/* 43176*/        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)
/* 43182*/      0, /*End of Scope*/
/* 43183*/    0, /*End of Scope*/
/* 43184*/  /*SwitchOpcode*/ 16|128,2/*272*/, TARGET_VAL(MipsISD::Hi),// ->43460
/* 43188*/    OPC_RecordChild0, // #0 = $in
/* 43189*/    OPC_MoveChild0,
/* 43190*/    OPC_SwitchOpcode /*5 cases */, 59, TARGET_VAL(ISD::TargetGlobalAddress),// ->43253
/* 43194*/      OPC_MoveParent,
/* 43195*/      OPC_SwitchType /*2 cases */, 43, MVT::i32,// ->43241
/* 43198*/        OPC_Scope, 9, /*->43209*/ // 3 children in Scope
/* 43200*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43202*/          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)
/* 43209*/        /*Scope*/ 9, /*->43219*/
/* 43210*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43212*/          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)
/* 43219*/        /*Scope*/ 20, /*->43240*/
/* 43220*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 43222*/          OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                        MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 43229*/          OPC_EmitInteger, MVT::i32, 16, 
/* 43232*/          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] })
/* 43240*/        0, /*End of Scope*/
/* 43241*/      /*SwitchType*/ 9, MVT::i64,// ->43252
/* 43243*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43245*/        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)
/* 43252*/      0, // EndSwitchType
/* 43253*/    /*SwitchOpcode*/ 59, TARGET_VAL(ISD::TargetBlockAddress),// ->43315
/* 43256*/      OPC_MoveParent,
/* 43257*/      OPC_SwitchType /*2 cases */, 43, MVT::i32,// ->43303
/* 43260*/        OPC_Scope, 9, /*->43271*/ // 3 children in Scope
/* 43262*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43264*/          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)
/* 43271*/        /*Scope*/ 9, /*->43281*/
/* 43272*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43274*/          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)
/* 43281*/        /*Scope*/ 20, /*->43302*/
/* 43282*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 43284*/          OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                        MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 43291*/          OPC_EmitInteger, MVT::i32, 16, 
/* 43294*/          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] })
/* 43302*/        0, /*End of Scope*/
/* 43303*/      /*SwitchType*/ 9, MVT::i64,// ->43314
/* 43305*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43307*/        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)
/* 43314*/      0, // EndSwitchType
/* 43315*/    /*SwitchOpcode*/ 59, TARGET_VAL(ISD::TargetJumpTable),// ->43377
/* 43318*/      OPC_MoveParent,
/* 43319*/      OPC_SwitchType /*2 cases */, 43, MVT::i32,// ->43365
/* 43322*/        OPC_Scope, 9, /*->43333*/ // 3 children in Scope
/* 43324*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43326*/          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)
/* 43333*/        /*Scope*/ 9, /*->43343*/
/* 43334*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43336*/          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)
/* 43343*/        /*Scope*/ 20, /*->43364*/
/* 43344*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 43346*/          OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                        MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 43353*/          OPC_EmitInteger, MVT::i32, 16, 
/* 43356*/          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] })
/* 43364*/        0, /*End of Scope*/
/* 43365*/      /*SwitchType*/ 9, MVT::i64,// ->43376
/* 43367*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43369*/        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)
/* 43376*/      0, // EndSwitchType
/* 43377*/    /*SwitchOpcode*/ 38, TARGET_VAL(ISD::TargetConstantPool),// ->43418
/* 43380*/      OPC_MoveParent,
/* 43381*/      OPC_SwitchType /*2 cases */, 22, MVT::i32,// ->43406
/* 43384*/        OPC_Scope, 9, /*->43395*/ // 2 children in Scope
/* 43386*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43388*/          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)
/* 43395*/        /*Scope*/ 9, /*->43405*/
/* 43396*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43398*/          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)
/* 43405*/        0, /*End of Scope*/
/* 43406*/      /*SwitchType*/ 9, MVT::i64,// ->43417
/* 43408*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43410*/        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)
/* 43417*/      0, // EndSwitchType
/* 43418*/    /*SwitchOpcode*/ 38, TARGET_VAL(ISD::TargetExternalSymbol),// ->43459
/* 43421*/      OPC_MoveParent,
/* 43422*/      OPC_SwitchType /*2 cases */, 22, MVT::i32,// ->43447
/* 43425*/        OPC_Scope, 9, /*->43436*/ // 2 children in Scope
/* 43427*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43429*/          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)
/* 43436*/        /*Scope*/ 9, /*->43446*/
/* 43437*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43439*/          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)
/* 43446*/        0, /*End of Scope*/
/* 43447*/      /*SwitchType*/ 9, MVT::i64,// ->43458
/* 43449*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43451*/        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)
/* 43458*/      0, // EndSwitchType
/* 43459*/    0, // EndSwitchOpcode
/* 43460*/  /*SwitchOpcode*/ 82|128,2/*338*/, TARGET_VAL(MipsISD::Lo),// ->43802
/* 43464*/    OPC_RecordChild0, // #0 = $in
/* 43465*/    OPC_MoveChild0,
/* 43466*/    OPC_SwitchOpcode /*6 cases */, 51, TARGET_VAL(ISD::TargetGlobalAddress),// ->43521
/* 43470*/      OPC_MoveParent,
/* 43471*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->43504
/* 43474*/        OPC_Scope, 13, /*->43489*/ // 2 children in Scope
/* 43476*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43478*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43481*/          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)
/* 43489*/        /*Scope*/ 13, /*->43503*/
/* 43490*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43492*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43495*/          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)
/* 43503*/        0, /*End of Scope*/
/* 43504*/      /*SwitchType*/ 14, MVT::i64,// ->43520
/* 43506*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43508*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43512*/        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)
/* 43520*/      0, // EndSwitchType
/* 43521*/    /*SwitchOpcode*/ 61, TARGET_VAL(ISD::TargetBlockAddress),// ->43585
/* 43524*/      OPC_MoveParent,
/* 43525*/      OPC_SwitchType /*2 cases */, 40, MVT::i32,// ->43568
/* 43528*/        OPC_Scope, 13, /*->43543*/ // 3 children in Scope
/* 43530*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43532*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43535*/          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)
/* 43543*/        /*Scope*/ 9, /*->43553*/
/* 43544*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 43546*/          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)
/* 43553*/        /*Scope*/ 13, /*->43567*/
/* 43554*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43556*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43559*/          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)
/* 43567*/        0, /*End of Scope*/
/* 43568*/      /*SwitchType*/ 14, MVT::i64,// ->43584
/* 43570*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43572*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43576*/        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)
/* 43584*/      0, // EndSwitchType
/* 43585*/    /*SwitchOpcode*/ 51, TARGET_VAL(ISD::TargetJumpTable),// ->43639
/* 43588*/      OPC_MoveParent,
/* 43589*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->43622
/* 43592*/        OPC_Scope, 13, /*->43607*/ // 2 children in Scope
/* 43594*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43596*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43599*/          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)
/* 43607*/        /*Scope*/ 13, /*->43621*/
/* 43608*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43610*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43613*/          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)
/* 43621*/        0, /*End of Scope*/
/* 43622*/      /*SwitchType*/ 14, MVT::i64,// ->43638
/* 43624*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43626*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43630*/        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)
/* 43638*/      0, // EndSwitchType
/* 43639*/    /*SwitchOpcode*/ 51, TARGET_VAL(ISD::TargetConstantPool),// ->43693
/* 43642*/      OPC_MoveParent,
/* 43643*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->43676
/* 43646*/        OPC_Scope, 13, /*->43661*/ // 2 children in Scope
/* 43648*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43650*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43653*/          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)
/* 43661*/        /*Scope*/ 13, /*->43675*/
/* 43662*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43664*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43667*/          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)
/* 43675*/        0, /*End of Scope*/
/* 43676*/      /*SwitchType*/ 14, MVT::i64,// ->43692
/* 43678*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43680*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43684*/        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)
/* 43692*/      0, // EndSwitchType
/* 43693*/    /*SwitchOpcode*/ 51, TARGET_VAL(ISD::TargetGlobalTLSAddress),// ->43747
/* 43696*/      OPC_MoveParent,
/* 43697*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->43730
/* 43700*/        OPC_Scope, 13, /*->43715*/ // 2 children in Scope
/* 43702*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43704*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43707*/          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)
/* 43715*/        /*Scope*/ 13, /*->43729*/
/* 43716*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43718*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43721*/          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)
/* 43729*/        0, /*End of Scope*/
/* 43730*/      /*SwitchType*/ 14, MVT::i64,// ->43746
/* 43732*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43734*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43738*/        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)
/* 43746*/      0, // EndSwitchType
/* 43747*/    /*SwitchOpcode*/ 51, TARGET_VAL(ISD::TargetExternalSymbol),// ->43801
/* 43750*/      OPC_MoveParent,
/* 43751*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->43784
/* 43754*/        OPC_Scope, 13, /*->43769*/ // 2 children in Scope
/* 43756*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43758*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43761*/          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)
/* 43769*/        /*Scope*/ 13, /*->43783*/
/* 43770*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43772*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 43775*/          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)
/* 43783*/        0, /*End of Scope*/
/* 43784*/      /*SwitchType*/ 14, MVT::i64,// ->43800
/* 43786*/        OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 43788*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 43792*/        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)
/* 43800*/      0, // EndSwitchType
/* 43801*/    0, // EndSwitchOpcode
/* 43802*/  /*SwitchOpcode*/ 86, TARGET_VAL(MipsISD::GotHi),// ->43891
/* 43805*/    OPC_RecordChild0, // #0 = $in
/* 43806*/    OPC_MoveChild0,
/* 43807*/    OPC_SwitchOpcode /*2 cases */, 38, TARGET_VAL(ISD::TargetGlobalAddress),// ->43849
/* 43811*/      OPC_MoveParent,
/* 43812*/      OPC_SwitchType /*2 cases */, 22, MVT::i32,// ->43837
/* 43815*/        OPC_Scope, 9, /*->43826*/ // 2 children in Scope
/* 43817*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43819*/          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)
/* 43826*/        /*Scope*/ 9, /*->43836*/
/* 43827*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43829*/          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)
/* 43836*/        0, /*End of Scope*/
/* 43837*/      /*SwitchType*/ 9, MVT::i64,// ->43848
/* 43839*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43841*/        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)
/* 43848*/      0, // EndSwitchType
/* 43849*/    /*SwitchOpcode*/ 38, TARGET_VAL(ISD::TargetExternalSymbol),// ->43890
/* 43852*/      OPC_MoveParent,
/* 43853*/      OPC_SwitchType /*2 cases */, 22, MVT::i32,// ->43878
/* 43856*/        OPC_Scope, 9, /*->43867*/ // 2 children in Scope
/* 43858*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43860*/          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)
/* 43867*/        /*Scope*/ 9, /*->43877*/
/* 43868*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43870*/          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)
/* 43877*/        0, /*End of Scope*/
/* 43878*/      /*SwitchType*/ 9, MVT::i64,// ->43889
/* 43880*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43882*/        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)
/* 43889*/      0, // EndSwitchType
/* 43890*/    0, // EndSwitchOpcode
/* 43891*/  /*SwitchOpcode*/ 64, TARGET_VAL(MipsISD::TlsHi),// ->43958
/* 43894*/    OPC_RecordChild0, // #0 = $in
/* 43895*/    OPC_MoveChild0,
/* 43896*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetGlobalTLSAddress),
/* 43899*/    OPC_MoveParent,
/* 43900*/    OPC_SwitchType /*2 cases */, 43, MVT::i32,// ->43946
/* 43903*/      OPC_Scope, 9, /*->43914*/ // 3 children in Scope
/* 43905*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43907*/        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)
/* 43914*/      /*Scope*/ 9, /*->43924*/
/* 43915*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43917*/        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)
/* 43924*/      /*Scope*/ 20, /*->43945*/
/* 43925*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 43927*/        OPC_EmitNode1, TARGET_VAL(Mips::LiRxImmX16), 0,
                      MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 43934*/        OPC_EmitInteger, MVT::i32, 16, 
/* 43937*/        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] })
/* 43945*/      0, /*End of Scope*/
/* 43946*/    /*SwitchType*/ 9, MVT::i64,// ->43957
/* 43948*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 43950*/      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)
/* 43957*/    0, // EndSwitchType
/* 43958*/  /*SwitchOpcode*/ 35|128,2/*291*/, TARGET_VAL(MipsISD::Wrapper),// ->44253
/* 43962*/    OPC_RecordChild0, // #0 = $gp
/* 43963*/    OPC_RecordChild1, // #1 = $in
/* 43964*/    OPC_MoveChild1,
/* 43965*/    OPC_SwitchOpcode /*6 cases */, 52, TARGET_VAL(ISD::TargetGlobalAddress),// ->44021
/* 43969*/      OPC_MoveParent,
/* 43970*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->44008
/* 43973*/        OPC_Scope, 10, /*->43985*/ // 3 children in Scope
/* 43975*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 43977*/          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)
/* 43985*/        /*Scope*/ 10, /*->43996*/
/* 43986*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 43988*/          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)
/* 43996*/        /*Scope*/ 10, /*->44007*/
/* 43997*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 43999*/          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)
/* 44007*/        0, /*End of Scope*/
/* 44008*/      /*SwitchType*/ 10, MVT::i64,// ->44020
/* 44010*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44012*/        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)
/* 44020*/      0, // EndSwitchType
/* 44021*/    /*SwitchOpcode*/ 41, TARGET_VAL(ISD::TargetConstantPool),// ->44065
/* 44024*/      OPC_MoveParent,
/* 44025*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->44052
/* 44028*/        OPC_Scope, 10, /*->44040*/ // 2 children in Scope
/* 44030*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44032*/          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)
/* 44040*/        /*Scope*/ 10, /*->44051*/
/* 44041*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44043*/          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)
/* 44051*/        0, /*End of Scope*/
/* 44052*/      /*SwitchType*/ 10, MVT::i64,// ->44064
/* 44054*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44056*/        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)
/* 44064*/      0, // EndSwitchType
/* 44065*/    /*SwitchOpcode*/ 41, TARGET_VAL(ISD::TargetExternalSymbol),// ->44109
/* 44068*/      OPC_MoveParent,
/* 44069*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->44096
/* 44072*/        OPC_Scope, 10, /*->44084*/ // 2 children in Scope
/* 44074*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44076*/          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)
/* 44084*/        /*Scope*/ 10, /*->44095*/
/* 44085*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44087*/          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)
/* 44095*/        0, /*End of Scope*/
/* 44096*/      /*SwitchType*/ 10, MVT::i64,// ->44108
/* 44098*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44100*/        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)
/* 44108*/      0, // EndSwitchType
/* 44109*/    /*SwitchOpcode*/ 41, TARGET_VAL(ISD::TargetBlockAddress),// ->44153
/* 44112*/      OPC_MoveParent,
/* 44113*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->44140
/* 44116*/        OPC_Scope, 10, /*->44128*/ // 2 children in Scope
/* 44118*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44120*/          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)
/* 44128*/        /*Scope*/ 10, /*->44139*/
/* 44129*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44131*/          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)
/* 44139*/        0, /*End of Scope*/
/* 44140*/      /*SwitchType*/ 10, MVT::i64,// ->44152
/* 44142*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44144*/        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)
/* 44152*/      0, // EndSwitchType
/* 44153*/    /*SwitchOpcode*/ 41, TARGET_VAL(ISD::TargetJumpTable),// ->44197
/* 44156*/      OPC_MoveParent,
/* 44157*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->44184
/* 44160*/        OPC_Scope, 10, /*->44172*/ // 2 children in Scope
/* 44162*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44164*/          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)
/* 44172*/        /*Scope*/ 10, /*->44183*/
/* 44173*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44175*/          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)
/* 44183*/        0, /*End of Scope*/
/* 44184*/      /*SwitchType*/ 10, MVT::i64,// ->44196
/* 44186*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44188*/        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)
/* 44196*/      0, // EndSwitchType
/* 44197*/    /*SwitchOpcode*/ 52, TARGET_VAL(ISD::TargetGlobalTLSAddress),// ->44252
/* 44200*/      OPC_MoveParent,
/* 44201*/      OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->44239
/* 44204*/        OPC_Scope, 10, /*->44216*/ // 3 children in Scope
/* 44206*/          OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44208*/          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)
/* 44216*/        /*Scope*/ 10, /*->44227*/
/* 44217*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 44219*/          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)
/* 44227*/        /*Scope*/ 10, /*->44238*/
/* 44228*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44230*/          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)
/* 44238*/        0, /*End of Scope*/
/* 44239*/      /*SwitchType*/ 10, MVT::i64,// ->44251
/* 44241*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44243*/        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)
/* 44251*/      0, // EndSwitchType
/* 44252*/    0, // EndSwitchOpcode
/* 44253*/  /*SwitchOpcode*/ 6|128,1/*134*/, TARGET_VAL(MipsISD::FPCmp),// ->44391
/* 44257*/    OPC_RecordChild0, // #0 = $fs
/* 44258*/    OPC_Scope, 39, /*->44299*/ // 3 children in Scope
/* 44260*/      OPC_CheckChild0Type, MVT::f32,
/* 44262*/      OPC_RecordChild1, // #1 = $ft
/* 44263*/      OPC_RecordChild2, // #2 = $cond
/* 44264*/      OPC_MoveChild2,
/* 44265*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 44268*/      OPC_MoveParent,
/* 44269*/      OPC_Scope, 13, /*->44284*/ // 2 children in Scope
/* 44271*/        OPC_CheckPatternPredicate, 63, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 44273*/        OPC_EmitConvertToTarget, 2,
/* 44275*/        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)
/* 44284*/      /*Scope*/ 13, /*->44298*/
/* 44285*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 44287*/        OPC_EmitConvertToTarget, 2,
/* 44289*/        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)
/* 44298*/      0, /*End of Scope*/
/* 44299*/    /*Scope*/ 53, /*->44353*/
/* 44300*/      OPC_CheckChild0Type, MVT::f64,
/* 44302*/      OPC_RecordChild1, // #1 = $ft
/* 44303*/      OPC_RecordChild2, // #2 = $cond
/* 44304*/      OPC_MoveChild2,
/* 44305*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 44308*/      OPC_MoveParent,
/* 44309*/      OPC_Scope, 13, /*->44324*/ // 3 children in Scope
/* 44311*/        OPC_CheckPatternPredicate, 82, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 44313*/        OPC_EmitConvertToTarget, 2,
/* 44315*/        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)
/* 44324*/      /*Scope*/ 13, /*->44338*/
/* 44325*/        OPC_CheckPatternPredicate, 83, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 44327*/        OPC_EmitConvertToTarget, 2,
/* 44329*/        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)
/* 44338*/      /*Scope*/ 13, /*->44352*/
/* 44339*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 44341*/        OPC_EmitConvertToTarget, 2,
/* 44343*/        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)
/* 44352*/      0, /*End of Scope*/
/* 44353*/    /*Scope*/ 36, /*->44390*/
/* 44354*/      OPC_CheckChild0Type, MVT::f16,
/* 44356*/      OPC_RecordChild1, // #1 = $wt
/* 44357*/      OPC_RecordChild2, // #2 = $cond
/* 44358*/      OPC_MoveChild2,
/* 44359*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 44362*/      OPC_MoveParent,
/* 44363*/      OPC_CheckPatternPredicate, 84, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 44365*/      OPC_EmitNode1, TARGET_VAL(Mips::MSA_FP_EXTEND_W_PSEUDO), 0,
                    MVT::f32, 1/*#Ops*/, 0,  // Results = #3
/* 44372*/      OPC_EmitNode1, TARGET_VAL(Mips::MSA_FP_EXTEND_W_PSEUDO), 0,
                    MVT::f32, 1/*#Ops*/, 1,  // Results = #4
/* 44379*/      OPC_EmitConvertToTarget, 2,
/* 44381*/      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)
/* 44390*/    0, /*End of Scope*/
/* 44391*/  /*SwitchOpcode*/ 35, TARGET_VAL(MipsISD::ExtractElementF64),// ->44429
/* 44394*/    OPC_RecordChild0, // #0 = $src
/* 44395*/    OPC_RecordChild1, // #1 = $n
/* 44396*/    OPC_MoveChild1,
/* 44397*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 44400*/    OPC_MoveParent,
/* 44401*/    OPC_Scope, 12, /*->44415*/ // 2 children in Scope
/* 44403*/      OPC_CheckPatternPredicate, 85, // (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMips16Mode())
/* 44405*/      OPC_EmitConvertToTarget, 1,
/* 44407*/      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)
/* 44415*/    /*Scope*/ 12, /*->44428*/
/* 44416*/      OPC_CheckPatternPredicate, 86, // (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMips16Mode())
/* 44418*/      OPC_EmitConvertToTarget, 1,
/* 44420*/      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)
/* 44428*/    0, /*End of Scope*/
/* 44429*/  /*SwitchOpcode*/ 79, TARGET_VAL(MipsISD::Highest),// ->44511
/* 44432*/    OPC_RecordChild0, // #0 = $in
/* 44433*/    OPC_MoveChild0,
/* 44434*/    OPC_SwitchOpcode /*5 cases */, 12, TARGET_VAL(ISD::TargetGlobalAddress),// ->44450
/* 44438*/      OPC_MoveParent,
/* 44439*/      OPC_CheckType, MVT::i64,
/* 44441*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44443*/      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)
/* 44450*/    /*SwitchOpcode*/ 12, TARGET_VAL(ISD::TargetBlockAddress),// ->44465
/* 44453*/      OPC_MoveParent,
/* 44454*/      OPC_CheckType, MVT::i64,
/* 44456*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44458*/      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)
/* 44465*/    /*SwitchOpcode*/ 12, TARGET_VAL(ISD::TargetJumpTable),// ->44480
/* 44468*/      OPC_MoveParent,
/* 44469*/      OPC_CheckType, MVT::i64,
/* 44471*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44473*/      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)
/* 44480*/    /*SwitchOpcode*/ 12, TARGET_VAL(ISD::TargetConstantPool),// ->44495
/* 44483*/      OPC_MoveParent,
/* 44484*/      OPC_CheckType, MVT::i64,
/* 44486*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44488*/      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)
/* 44495*/    /*SwitchOpcode*/ 12, TARGET_VAL(ISD::TargetExternalSymbol),// ->44510
/* 44498*/      OPC_MoveParent,
/* 44499*/      OPC_CheckType, MVT::i64,
/* 44501*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44503*/      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)
/* 44510*/    0, // EndSwitchOpcode
/* 44511*/  /*SwitchOpcode*/ 104, TARGET_VAL(MipsISD::Higher),// ->44618
/* 44514*/    OPC_RecordChild0, // #0 = $in
/* 44515*/    OPC_MoveChild0,
/* 44516*/    OPC_SwitchOpcode /*5 cases */, 17, TARGET_VAL(ISD::TargetGlobalAddress),// ->44537
/* 44520*/      OPC_MoveParent,
/* 44521*/      OPC_CheckType, MVT::i64,
/* 44523*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44525*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44529*/      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)
/* 44537*/    /*SwitchOpcode*/ 17, TARGET_VAL(ISD::TargetBlockAddress),// ->44557
/* 44540*/      OPC_MoveParent,
/* 44541*/      OPC_CheckType, MVT::i64,
/* 44543*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44545*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44549*/      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)
/* 44557*/    /*SwitchOpcode*/ 17, TARGET_VAL(ISD::TargetJumpTable),// ->44577
/* 44560*/      OPC_MoveParent,
/* 44561*/      OPC_CheckType, MVT::i64,
/* 44563*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44565*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44569*/      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)
/* 44577*/    /*SwitchOpcode*/ 17, TARGET_VAL(ISD::TargetConstantPool),// ->44597
/* 44580*/      OPC_MoveParent,
/* 44581*/      OPC_CheckType, MVT::i64,
/* 44583*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44585*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44589*/      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)
/* 44597*/    /*SwitchOpcode*/ 17, TARGET_VAL(ISD::TargetExternalSymbol),// ->44617
/* 44600*/      OPC_MoveParent,
/* 44601*/      OPC_CheckType, MVT::i64,
/* 44603*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 44605*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44609*/      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)
/* 44617*/    0, // EndSwitchOpcode
/* 44618*/  /*SwitchOpcode*/ 88|128,3/*472*/, TARGET_VAL(ISD::Constant),// ->45094
/* 44622*/    OPC_RecordNode, // #0 = $imm
/* 44623*/    OPC_Scope, 18, /*->44643*/ // 18 children in Scope
/* 44625*/      OPC_CheckPredicate, 57, // Predicate_LUiPred
/* 44627*/      OPC_CheckType, MVT::i32,
/* 44629*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44631*/      OPC_EmitConvertToTarget, 0,
/* 44633*/      OPC_EmitNodeXForm, 5, 1, // HI16
/* 44636*/      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))
/* 44643*/    /*Scope*/ 19, /*->44663*/
/* 44644*/      OPC_CheckPredicate, 58, // Predicate_ORiPred
/* 44646*/      OPC_CheckType, MVT::i32,
/* 44648*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44650*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44653*/      OPC_EmitConvertToTarget, 0,
/* 44655*/      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)
/* 44663*/    /*Scope*/ 19, /*->44683*/
/* 44664*/      OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 44666*/      OPC_CheckType, MVT::i32,
/* 44668*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44670*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44673*/      OPC_EmitConvertToTarget, 0,
/* 44675*/      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)
/* 44683*/    /*Scope*/ 18, /*->44702*/
/* 44684*/      OPC_CheckPredicate, 57, // Predicate_LUiPred
/* 44686*/      OPC_CheckType, MVT::i64,
/* 44688*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44690*/      OPC_EmitConvertToTarget, 0,
/* 44692*/      OPC_EmitNodeXForm, 5, 1, // HI16
/* 44695*/      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))
/* 44702*/    /*Scope*/ 20, /*->44723*/
/* 44703*/      OPC_CheckPredicate, 58, // Predicate_ORiPred
/* 44705*/      OPC_CheckType, MVT::i64,
/* 44707*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44709*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44713*/      OPC_EmitConvertToTarget, 0,
/* 44715*/      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)
/* 44723*/    /*Scope*/ 20, /*->44744*/
/* 44724*/      OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 44726*/      OPC_CheckType, MVT::i64,
/* 44728*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44730*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44734*/      OPC_EmitConvertToTarget, 0,
/* 44736*/      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)
/* 44744*/    /*Scope*/ 18, /*->44763*/
/* 44745*/      OPC_CheckPredicate, 21, // Predicate_immZExt16
/* 44747*/      OPC_CheckType, MVT::i32,
/* 44749*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 44751*/      OPC_EmitConvertToTarget, 0,
/* 44753*/      OPC_EmitNodeXForm, 3, 1, // LO16
/* 44756*/      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))
/* 44763*/    /*Scope*/ 15, /*->44779*/
/* 44764*/      OPC_CheckPredicate, 59, // Predicate_immLi16
/* 44766*/      OPC_CheckType, MVT::i32,
/* 44768*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44770*/      OPC_EmitConvertToTarget, 0,
/* 44772*/      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)
/* 44779*/    /*Scope*/ 18, /*->44798*/
/* 44780*/      OPC_CheckPredicate, 57, // Predicate_LUiPred
/* 44782*/      OPC_CheckType, MVT::i32,
/* 44784*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44786*/      OPC_EmitConvertToTarget, 0,
/* 44788*/      OPC_EmitNodeXForm, 5, 1, // HI16
/* 44791*/      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))
/* 44798*/    /*Scope*/ 19, /*->44818*/
/* 44799*/      OPC_CheckPredicate, 58, // Predicate_ORiPred
/* 44801*/      OPC_CheckType, MVT::i32,
/* 44803*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44805*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44808*/      OPC_EmitConvertToTarget, 0,
/* 44810*/      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)
/* 44818*/    /*Scope*/ 19, /*->44838*/
/* 44819*/      OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 44821*/      OPC_CheckType, MVT::i32,
/* 44823*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44825*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44828*/      OPC_EmitConvertToTarget, 0,
/* 44830*/      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)
/* 44838*/    /*Scope*/ 22, /*->44861*/
/* 44839*/      OPC_CheckPredicate, 21, // Predicate_immZExt16
/* 44841*/      OPC_CheckType, MVT::i32,
/* 44843*/      OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 44845*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44848*/      OPC_EmitConvertToTarget, 0,
/* 44850*/      OPC_EmitNodeXForm, 3, 2, // LO16
/* 44853*/      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))
/* 44861*/    /*Scope*/ 62, /*->44924*/
/* 44862*/      OPC_CheckPredicate, 60, // Predicate_LUiORiPred
/* 44864*/      OPC_SwitchType /*2 cases */, 27, MVT::i32,// ->44894
/* 44867*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 44869*/        OPC_EmitConvertToTarget, 0,
/* 44871*/        OPC_EmitNodeXForm, 5, 1, // HI16
/* 44874*/        OPC_EmitNode1, TARGET_VAL(Mips::LUi), 0,
                      MVT::i32, 1/*#Ops*/, 2,  // Results = #3
/* 44881*/        OPC_EmitConvertToTarget, 0,
/* 44883*/        OPC_EmitNodeXForm, 3, 4, // LO16
/* 44886*/        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))
/* 44894*/      /*SwitchType*/ 27, MVT::i64,// ->44923
/* 44896*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44898*/        OPC_EmitConvertToTarget, 0,
/* 44900*/        OPC_EmitNodeXForm, 5, 1, // HI16
/* 44903*/        OPC_EmitNode1, TARGET_VAL(Mips::LUi64), 0,
                      MVT::i64, 1/*#Ops*/, 2,  // Results = #3
/* 44910*/        OPC_EmitConvertToTarget, 0,
/* 44912*/        OPC_EmitNodeXForm, 3, 4, // LO16
/* 44915*/        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))
/* 44923*/      0, // EndSwitchType
/* 44924*/    /*Scope*/ 34, /*->44959*/
/* 44925*/      OPC_CheckPredicate, 61, // Predicate_immZExt32Low16Zero
/* 44927*/      OPC_CheckType, MVT::i64,
/* 44929*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 44931*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 44935*/      OPC_EmitConvertToTarget, 0,
/* 44937*/      OPC_EmitNodeXForm, 5, 2, // HI16
/* 44940*/      OPC_EmitNode1, TARGET_VAL(Mips::ORi64), 0,
                    MVT::i64, 2/*#Ops*/, 1, 3,  // Results = #4
/* 44948*/      OPC_EmitInteger, MVT::i32, 16, 
/* 44951*/      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] })
/* 44959*/    /*Scope*/ 26, /*->44986*/
/* 44960*/      OPC_CheckPredicate, 19, // Predicate_immSExt16
/* 44962*/      OPC_CheckType, MVT::i32,
/* 44964*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 44966*/      OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 44969*/      OPC_EmitNode1, TARGET_VAL(Mips::MoveR3216), 0,
                    MVT::i32, 1/*#Ops*/, 1,  // Results = #2
/* 44976*/      OPC_EmitConvertToTarget, 0,
/* 44978*/      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)
/* 44986*/    /*Scope*/ 31, /*->45018*/
/* 44987*/      OPC_CheckPredicate, 60, // Predicate_LUiORiPred
/* 44989*/      OPC_CheckType, MVT::i32,
/* 44991*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 44993*/      OPC_EmitConvertToTarget, 0,
/* 44995*/      OPC_EmitNodeXForm, 5, 1, // HI16
/* 44998*/      OPC_EmitNode1, TARGET_VAL(Mips::LUi_MM), 0,
                    MVT::i32, 1/*#Ops*/, 2,  // Results = #3
/* 45005*/      OPC_EmitConvertToTarget, 0,
/* 45007*/      OPC_EmitNodeXForm, 3, 4, // LO16
/* 45010*/      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))
/* 45018*/    /*Scope*/ 47, /*->45066*/
/* 45019*/      OPC_CheckPredicate, 62, // Predicate_immZExt32
/* 45021*/      OPC_CheckType, MVT::i64,
/* 45023*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 45025*/      OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 45029*/      OPC_EmitConvertToTarget, 0,
/* 45031*/      OPC_EmitNodeXForm, 5, 2, // HI16
/* 45034*/      OPC_EmitNode1, TARGET_VAL(Mips::ORi64), 0,
                    MVT::i64, 2/*#Ops*/, 1, 3,  // Results = #4
/* 45042*/      OPC_EmitInteger, MVT::i32, 16, 
/* 45045*/      OPC_EmitNode1, TARGET_VAL(Mips::DSLL), 0,
                    MVT::i64, 2/*#Ops*/, 4, 5,  // Results = #6
/* 45053*/      OPC_EmitConvertToTarget, 0,
/* 45055*/      OPC_EmitNodeXForm, 3, 7, // LO16
/* 45058*/      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))
/* 45066*/    /*Scope*/ 26, /*->45093*/
/* 45067*/      OPC_CheckType, MVT::i32,
/* 45069*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 45071*/      OPC_EmitConvertToTarget, 0,
/* 45073*/      OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 45085*/      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] })
/* 45093*/    0, /*End of Scope*/
/* 45094*/  /*SwitchOpcode*/ 124, TARGET_VAL(ISD::BRIND),// ->45221
/* 45097*/    OPC_RecordNode, // #0 = 'brind' chained node
/* 45098*/    OPC_RecordChild1, // #1 = $rs
/* 45099*/    OPC_Scope, 74, /*->45175*/ // 2 children in Scope
/* 45101*/      OPC_CheckChild1Type, MVT::i32,
/* 45103*/      OPC_Scope, 9, /*->45114*/ // 7 children in Scope
/* 45105*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 45107*/        OPC_EmitMergeInputChains1_0,
/* 45108*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::JrcRx16), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind CPU16Regs:{ *:[i32] }:$rs) - Complexity = 4
                  // Dst: (JrcRx16 CPU16Regs:{ *:[i32] }:$rs)
/* 45114*/      /*Scope*/ 9, /*->45124*/
/* 45115*/        OPC_CheckPatternPredicate, 74, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 45117*/        OPC_EmitMergeInputChains1_0,
/* 45118*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectBranch), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectBranch GPR32Opnd:{ *:[i32] }:$rs)
/* 45124*/      /*Scope*/ 9, /*->45134*/
/* 45125*/        OPC_CheckPatternPredicate, 87, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard())
/* 45127*/        OPC_EmitMergeInputChains1_0,
/* 45128*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectHazardBranch), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectHazardBranch GPR32Opnd:{ *:[i32] }:$rs)
/* 45134*/      /*Scope*/ 9, /*->45144*/
/* 45135*/        OPC_CheckPatternPredicate, 76, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode())
/* 45137*/        OPC_EmitMergeInputChains1_0,
/* 45138*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectBranchR6), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectBranchR6 GPR32Opnd:{ *:[i32] }:$rs)
/* 45144*/      /*Scope*/ 9, /*->45154*/
/* 45145*/        OPC_CheckPatternPredicate, 77, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 45147*/        OPC_EmitMergeInputChains1_0,
/* 45148*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndrectHazardBranchR6), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR32Opnd:{ *:[i32] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndrectHazardBranchR6 GPR32Opnd:{ *:[i32] }:$rs)
/* 45154*/      /*Scope*/ 9, /*->45164*/
/* 45155*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 45157*/        OPC_EmitMergeInputChains1_0,
/* 45158*/        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)
/* 45164*/      /*Scope*/ 9, /*->45174*/
/* 45165*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 45167*/        OPC_EmitMergeInputChains1_0,
/* 45168*/        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)
/* 45174*/      0, /*End of Scope*/
/* 45175*/    /*Scope*/ 44, /*->45220*/
/* 45176*/      OPC_CheckChild1Type, MVT::i64,
/* 45178*/      OPC_Scope, 9, /*->45189*/ // 4 children in Scope
/* 45180*/        OPC_CheckPatternPredicate, 88, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 45182*/        OPC_EmitMergeInputChains1_0,
/* 45183*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectBranch64), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectBranch64 GPR64Opnd:{ *:[i64] }:$rs)
/* 45189*/      /*Scope*/ 9, /*->45199*/
/* 45190*/        OPC_CheckPatternPredicate, 87, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6()) && (Subtarget->useIndirectJumpsHazard())
/* 45192*/        OPC_EmitMergeInputChains1_0,
/* 45193*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectHazardBranch64), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectHazardBranch64 GPR64Opnd:{ *:[i64] }:$rs)
/* 45199*/      /*Scope*/ 9, /*->45209*/
/* 45200*/        OPC_CheckPatternPredicate, 80, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useIndirectJumpsHazard()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode())
/* 45202*/        OPC_EmitMergeInputChains1_0,
/* 45203*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndirectBranch64R6), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndirectBranch64R6 GPR64Opnd:{ *:[i64] }:$rs)
/* 45209*/      /*Scope*/ 9, /*->45219*/
/* 45210*/        OPC_CheckPatternPredicate, 81, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->inMips16Mode()) && (Subtarget->useIndirectJumpsHazard())
/* 45212*/        OPC_EmitMergeInputChains1_0,
/* 45213*/        OPC_MorphNodeTo0, TARGET_VAL(Mips::PseudoIndrectHazardBranch64R6), 0|OPFL_Chain,
                      1/*#Ops*/, 1, 
                  // Src: (brind GPR64Opnd:{ *:[i64] }:$rs) - Complexity = 3
                  // Dst: (PseudoIndrectHazardBranch64R6 GPR64Opnd:{ *:[i64] }:$rs)
/* 45219*/      0, /*End of Scope*/
/* 45220*/    0, /*End of Scope*/
/* 45221*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_ADD),// ->45291
/* 45224*/    OPC_RecordMemRef,
/* 45225*/    OPC_RecordNode, // #0 = 'atomic_load_add' chained node
/* 45226*/    OPC_RecordChild1, // #1 = $ptr
/* 45227*/    OPC_RecordChild2, // #2 = $incr
/* 45228*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45275
/* 45231*/      OPC_Scope, 13, /*->45246*/ // 3 children in Scope
/* 45233*/        OPC_CheckPredicate, 24, // Predicate_atomic_load_add_8
/* 45235*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45237*/        OPC_EmitMergeInputChains1_0,
/* 45238*/        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)
/* 45246*/      /*Scope*/ 13, /*->45260*/
/* 45247*/        OPC_CheckPredicate, 25, // Predicate_atomic_load_add_16
/* 45249*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45251*/        OPC_EmitMergeInputChains1_0,
/* 45252*/        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)
/* 45260*/      /*Scope*/ 13, /*->45274*/
/* 45261*/        OPC_CheckPredicate, 26, // Predicate_atomic_load_add_32
/* 45263*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45265*/        OPC_EmitMergeInputChains1_0,
/* 45266*/        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)
/* 45274*/      0, /*End of Scope*/
/* 45275*/    /*SwitchType*/ 13, MVT::i64,// ->45290
/* 45277*/      OPC_CheckPredicate, 27, // Predicate_atomic_load_add_64
/* 45279*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45281*/      OPC_EmitMergeInputChains1_0,
/* 45282*/      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)
/* 45290*/    0, // EndSwitchType
/* 45291*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_SUB),// ->45361
/* 45294*/    OPC_RecordMemRef,
/* 45295*/    OPC_RecordNode, // #0 = 'atomic_load_sub' chained node
/* 45296*/    OPC_RecordChild1, // #1 = $ptr
/* 45297*/    OPC_RecordChild2, // #2 = $incr
/* 45298*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45345
/* 45301*/      OPC_Scope, 13, /*->45316*/ // 3 children in Scope
/* 45303*/        OPC_CheckPredicate, 24, // Predicate_atomic_load_sub_8
/* 45305*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45307*/        OPC_EmitMergeInputChains1_0,
/* 45308*/        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)
/* 45316*/      /*Scope*/ 13, /*->45330*/
/* 45317*/        OPC_CheckPredicate, 25, // Predicate_atomic_load_sub_16
/* 45319*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45321*/        OPC_EmitMergeInputChains1_0,
/* 45322*/        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)
/* 45330*/      /*Scope*/ 13, /*->45344*/
/* 45331*/        OPC_CheckPredicate, 26, // Predicate_atomic_load_sub_32
/* 45333*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45335*/        OPC_EmitMergeInputChains1_0,
/* 45336*/        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)
/* 45344*/      0, /*End of Scope*/
/* 45345*/    /*SwitchType*/ 13, MVT::i64,// ->45360
/* 45347*/      OPC_CheckPredicate, 27, // Predicate_atomic_load_sub_64
/* 45349*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45351*/      OPC_EmitMergeInputChains1_0,
/* 45352*/      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)
/* 45360*/    0, // EndSwitchType
/* 45361*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_AND),// ->45431
/* 45364*/    OPC_RecordMemRef,
/* 45365*/    OPC_RecordNode, // #0 = 'atomic_load_and' chained node
/* 45366*/    OPC_RecordChild1, // #1 = $ptr
/* 45367*/    OPC_RecordChild2, // #2 = $incr
/* 45368*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45415
/* 45371*/      OPC_Scope, 13, /*->45386*/ // 3 children in Scope
/* 45373*/        OPC_CheckPredicate, 24, // Predicate_atomic_load_and_8
/* 45375*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45377*/        OPC_EmitMergeInputChains1_0,
/* 45378*/        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)
/* 45386*/      /*Scope*/ 13, /*->45400*/
/* 45387*/        OPC_CheckPredicate, 25, // Predicate_atomic_load_and_16
/* 45389*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45391*/        OPC_EmitMergeInputChains1_0,
/* 45392*/        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)
/* 45400*/      /*Scope*/ 13, /*->45414*/
/* 45401*/        OPC_CheckPredicate, 26, // Predicate_atomic_load_and_32
/* 45403*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45405*/        OPC_EmitMergeInputChains1_0,
/* 45406*/        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)
/* 45414*/      0, /*End of Scope*/
/* 45415*/    /*SwitchType*/ 13, MVT::i64,// ->45430
/* 45417*/      OPC_CheckPredicate, 27, // Predicate_atomic_load_and_64
/* 45419*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45421*/      OPC_EmitMergeInputChains1_0,
/* 45422*/      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)
/* 45430*/    0, // EndSwitchType
/* 45431*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_OR),// ->45501
/* 45434*/    OPC_RecordMemRef,
/* 45435*/    OPC_RecordNode, // #0 = 'atomic_load_or' chained node
/* 45436*/    OPC_RecordChild1, // #1 = $ptr
/* 45437*/    OPC_RecordChild2, // #2 = $incr
/* 45438*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45485
/* 45441*/      OPC_Scope, 13, /*->45456*/ // 3 children in Scope
/* 45443*/        OPC_CheckPredicate, 24, // Predicate_atomic_load_or_8
/* 45445*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45447*/        OPC_EmitMergeInputChains1_0,
/* 45448*/        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)
/* 45456*/      /*Scope*/ 13, /*->45470*/
/* 45457*/        OPC_CheckPredicate, 25, // Predicate_atomic_load_or_16
/* 45459*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45461*/        OPC_EmitMergeInputChains1_0,
/* 45462*/        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)
/* 45470*/      /*Scope*/ 13, /*->45484*/
/* 45471*/        OPC_CheckPredicate, 26, // Predicate_atomic_load_or_32
/* 45473*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45475*/        OPC_EmitMergeInputChains1_0,
/* 45476*/        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)
/* 45484*/      0, /*End of Scope*/
/* 45485*/    /*SwitchType*/ 13, MVT::i64,// ->45500
/* 45487*/      OPC_CheckPredicate, 27, // Predicate_atomic_load_or_64
/* 45489*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45491*/      OPC_EmitMergeInputChains1_0,
/* 45492*/      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)
/* 45500*/    0, // EndSwitchType
/* 45501*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_XOR),// ->45571
/* 45504*/    OPC_RecordMemRef,
/* 45505*/    OPC_RecordNode, // #0 = 'atomic_load_xor' chained node
/* 45506*/    OPC_RecordChild1, // #1 = $ptr
/* 45507*/    OPC_RecordChild2, // #2 = $incr
/* 45508*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45555
/* 45511*/      OPC_Scope, 13, /*->45526*/ // 3 children in Scope
/* 45513*/        OPC_CheckPredicate, 24, // Predicate_atomic_load_xor_8
/* 45515*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45517*/        OPC_EmitMergeInputChains1_0,
/* 45518*/        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)
/* 45526*/      /*Scope*/ 13, /*->45540*/
/* 45527*/        OPC_CheckPredicate, 25, // Predicate_atomic_load_xor_16
/* 45529*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45531*/        OPC_EmitMergeInputChains1_0,
/* 45532*/        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)
/* 45540*/      /*Scope*/ 13, /*->45554*/
/* 45541*/        OPC_CheckPredicate, 26, // Predicate_atomic_load_xor_32
/* 45543*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45545*/        OPC_EmitMergeInputChains1_0,
/* 45546*/        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)
/* 45554*/      0, /*End of Scope*/
/* 45555*/    /*SwitchType*/ 13, MVT::i64,// ->45570
/* 45557*/      OPC_CheckPredicate, 27, // Predicate_atomic_load_xor_64
/* 45559*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45561*/      OPC_EmitMergeInputChains1_0,
/* 45562*/      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)
/* 45570*/    0, // EndSwitchType
/* 45571*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_LOAD_NAND),// ->45641
/* 45574*/    OPC_RecordMemRef,
/* 45575*/    OPC_RecordNode, // #0 = 'atomic_load_nand' chained node
/* 45576*/    OPC_RecordChild1, // #1 = $ptr
/* 45577*/    OPC_RecordChild2, // #2 = $incr
/* 45578*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45625
/* 45581*/      OPC_Scope, 13, /*->45596*/ // 3 children in Scope
/* 45583*/        OPC_CheckPredicate, 24, // Predicate_atomic_load_nand_8
/* 45585*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45587*/        OPC_EmitMergeInputChains1_0,
/* 45588*/        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)
/* 45596*/      /*Scope*/ 13, /*->45610*/
/* 45597*/        OPC_CheckPredicate, 25, // Predicate_atomic_load_nand_16
/* 45599*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45601*/        OPC_EmitMergeInputChains1_0,
/* 45602*/        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)
/* 45610*/      /*Scope*/ 13, /*->45624*/
/* 45611*/        OPC_CheckPredicate, 26, // Predicate_atomic_load_nand_32
/* 45613*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45615*/        OPC_EmitMergeInputChains1_0,
/* 45616*/        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)
/* 45624*/      0, /*End of Scope*/
/* 45625*/    /*SwitchType*/ 13, MVT::i64,// ->45640
/* 45627*/      OPC_CheckPredicate, 27, // Predicate_atomic_load_nand_64
/* 45629*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45631*/      OPC_EmitMergeInputChains1_0,
/* 45632*/      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)
/* 45640*/    0, // EndSwitchType
/* 45641*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::ATOMIC_SWAP),// ->45711
/* 45644*/    OPC_RecordMemRef,
/* 45645*/    OPC_RecordNode, // #0 = 'atomic_swap' chained node
/* 45646*/    OPC_RecordChild1, // #1 = $ptr
/* 45647*/    OPC_RecordChild2, // #2 = $incr
/* 45648*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->45695
/* 45651*/      OPC_Scope, 13, /*->45666*/ // 3 children in Scope
/* 45653*/        OPC_CheckPredicate, 24, // Predicate_atomic_swap_8
/* 45655*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45657*/        OPC_EmitMergeInputChains1_0,
/* 45658*/        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)
/* 45666*/      /*Scope*/ 13, /*->45680*/
/* 45667*/        OPC_CheckPredicate, 25, // Predicate_atomic_swap_16
/* 45669*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45671*/        OPC_EmitMergeInputChains1_0,
/* 45672*/        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)
/* 45680*/      /*Scope*/ 13, /*->45694*/
/* 45681*/        OPC_CheckPredicate, 26, // Predicate_atomic_swap_32
/* 45683*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45685*/        OPC_EmitMergeInputChains1_0,
/* 45686*/        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)
/* 45694*/      0, /*End of Scope*/
/* 45695*/    /*SwitchType*/ 13, MVT::i64,// ->45710
/* 45697*/      OPC_CheckPredicate, 27, // Predicate_atomic_swap_64
/* 45699*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45701*/      OPC_EmitMergeInputChains1_0,
/* 45702*/      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)
/* 45710*/    0, // EndSwitchType
/* 45711*/  /*SwitchOpcode*/ 72, TARGET_VAL(ISD::ATOMIC_CMP_SWAP),// ->45786
/* 45714*/    OPC_RecordMemRef,
/* 45715*/    OPC_RecordNode, // #0 = 'atomic_cmp_swap' chained node
/* 45716*/    OPC_RecordChild1, // #1 = $ptr
/* 45717*/    OPC_RecordChild2, // #2 = $cmp
/* 45718*/    OPC_RecordChild3, // #3 = $swap
/* 45719*/    OPC_SwitchType /*2 cases */, 47, MVT::i32,// ->45769
/* 45722*/      OPC_Scope, 14, /*->45738*/ // 3 children in Scope
/* 45724*/        OPC_CheckPredicate, 24, // Predicate_atomic_cmp_swap_8
/* 45726*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45728*/        OPC_EmitMergeInputChains1_0,
/* 45729*/        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)
/* 45738*/      /*Scope*/ 14, /*->45753*/
/* 45739*/        OPC_CheckPredicate, 25, // Predicate_atomic_cmp_swap_16
/* 45741*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45743*/        OPC_EmitMergeInputChains1_0,
/* 45744*/        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)
/* 45753*/      /*Scope*/ 14, /*->45768*/
/* 45754*/        OPC_CheckPredicate, 26, // Predicate_atomic_cmp_swap_32
/* 45756*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45758*/        OPC_EmitMergeInputChains1_0,
/* 45759*/        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)
/* 45768*/      0, /*End of Scope*/
/* 45769*/    /*SwitchType*/ 14, MVT::i64,// ->45785
/* 45771*/      OPC_CheckPredicate, 27, // Predicate_atomic_cmp_swap_64
/* 45773*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45775*/      OPC_EmitMergeInputChains1_0,
/* 45776*/      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)
/* 45785*/    0, // EndSwitchType
/* 45786*/  /*SwitchOpcode*/ 22, TARGET_VAL(MipsISD::Ret),// ->45811
/* 45789*/    OPC_RecordNode, // #0 = 'MipsRet' chained node
/* 45790*/    OPC_CaptureGlueInput,
/* 45791*/    OPC_Scope, 8, /*->45801*/ // 2 children in Scope
/* 45793*/      OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45795*/      OPC_EmitMergeInputChains1_0,
/* 45796*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::RetRA), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic0,
                    0/*#Ops*/, 
                // Src: (MipsRet) - Complexity = 3
                // Dst: (RetRA)
/* 45801*/    /*Scope*/ 8, /*->45810*/
/* 45802*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 45804*/      OPC_EmitMergeInputChains1_0,
/* 45805*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::RetRA16), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic0,
                    0/*#Ops*/, 
                // Src: (MipsRet) - Complexity = 3
                // Dst: (RetRA16)
/* 45810*/    0, /*End of Scope*/
/* 45811*/  /*SwitchOpcode*/ 10, TARGET_VAL(MipsISD::ERet),// ->45824
/* 45814*/    OPC_RecordNode, // #0 = 'MipsERet' chained node
/* 45815*/    OPC_CaptureGlueInput,
/* 45816*/    OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 45818*/    OPC_EmitMergeInputChains1_0,
/* 45819*/    OPC_MorphNodeTo0, TARGET_VAL(Mips::ERet), 0|OPFL_Chain|OPFL_GlueInput,
                  0/*#Ops*/, 
              // Src: (MipsERet) - Complexity = 3
              // Dst: (ERet)
/* 45824*/  /*SwitchOpcode*/ 43|128,1/*171*/, TARGET_VAL(ISD::MUL),// ->45999
/* 45828*/    OPC_RecordChild0, // #0 = $rs
/* 45829*/    OPC_RecordChild1, // #1 = $rt
/* 45830*/    OPC_SwitchType /*7 cases */, 78, MVT::i32,// ->45911
/* 45833*/      OPC_Scope, 11, /*->45846*/ // 6 children in Scope
/* 45835*/        OPC_CheckPatternPredicate, 49, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 45837*/        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)
/* 45846*/      /*Scope*/ 10, /*->45857*/
/* 45847*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 45849*/        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)
/* 45857*/      /*Scope*/ 11, /*->45869*/
/* 45858*/        OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 45860*/        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)
/* 45869*/      /*Scope*/ 11, /*->45881*/
/* 45870*/        OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 45872*/        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)
/* 45881*/      /*Scope*/ 10, /*->45892*/
/* 45882*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 45884*/        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)
/* 45892*/      /*Scope*/ 17, /*->45910*/
/* 45893*/        OPC_CheckPatternPredicate, 90, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 45895*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoMULT), 0,
                      MVT::Untyped, 2/*#Ops*/, 0, 1,  // Results = #2
/* 45903*/        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))
/* 45910*/      0, /*End of Scope*/
/* 45911*/    /*SwitchType*/ 25, MVT::i64,// ->45938
/* 45913*/      OPC_Scope, 11, /*->45926*/ // 2 children in Scope
/* 45915*/        OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 45917*/        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)
/* 45926*/      /*Scope*/ 10, /*->45937*/
/* 45927*/        OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 45929*/        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)
/* 45937*/      0, /*End of Scope*/
/* 45938*/    /*SwitchType*/ 10, MVT::v2i16,// ->45950
/* 45940*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 45942*/      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)
/* 45950*/    /*SwitchType*/ 10, MVT::v16i8,// ->45962
/* 45952*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 45954*/      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)
/* 45962*/    /*SwitchType*/ 10, MVT::v8i16,// ->45974
/* 45964*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 45966*/      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)
/* 45974*/    /*SwitchType*/ 10, MVT::v4i32,// ->45986
/* 45976*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 45978*/      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)
/* 45986*/    /*SwitchType*/ 10, MVT::v2i64,// ->45998
/* 45988*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 45990*/      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)
/* 45998*/    0, // EndSwitchType
/* 45999*/  /*SwitchOpcode*/ 30, TARGET_VAL(ISD::TRAP),// ->46032
/* 46002*/    OPC_RecordNode, // #0 = 'trap' chained node
/* 46003*/    OPC_Scope, 8, /*->46013*/ // 3 children in Scope
/* 46005*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 46007*/      OPC_EmitMergeInputChains1_0,
/* 46008*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::TRAP), 0|OPFL_Chain,
                    0/*#Ops*/, 
                // Src: (trap) - Complexity = 3
                // Dst: (TRAP)
/* 46013*/    /*Scope*/ 8, /*->46022*/
/* 46014*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 46016*/      OPC_EmitMergeInputChains1_0,
/* 46017*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::Break16), 0|OPFL_Chain,
                    0/*#Ops*/, 
                // Src: (trap) - Complexity = 3
                // Dst: (Break16)
/* 46022*/    /*Scope*/ 8, /*->46031*/
/* 46023*/      OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 46025*/      OPC_EmitMergeInputChains1_0,
/* 46026*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::TRAP_MM), 0|OPFL_Chain,
                    0/*#Ops*/, 
                // Src: (trap) - Complexity = 3
                // Dst: (TRAP_MM)
/* 46031*/    0, /*End of Scope*/
/* 46032*/  /*SwitchOpcode*/ 69, TARGET_VAL(ISD::BR),// ->46104
/* 46035*/    OPC_RecordNode, // #0 = 'br' chained node
/* 46036*/    OPC_RecordChild1, // #1 = $target
/* 46037*/    OPC_MoveChild1,
/* 46038*/    OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 46041*/    OPC_MoveParent,
/* 46042*/    OPC_Scope, 9, /*->46053*/ // 6 children in Scope
/* 46044*/      OPC_CheckPatternPredicate, 91, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!TM.isPositionIndependent())
/* 46046*/      OPC_EmitMergeInputChains1_0,
/* 46047*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::J), 0|OPFL_Chain,
                    1/*#Ops*/, 1, 
                // Src: (br (bb:{ *:[Other] }):$target) - Complexity = 3
                // Dst: (J (bb:{ *:[Other] }):$target)
/* 46053*/    /*Scope*/ 9, /*->46063*/
/* 46054*/      OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 46056*/      OPC_EmitMergeInputChains1_0,
/* 46057*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::B), 0|OPFL_Chain,
                    1/*#Ops*/, 1, 
                // Src: (br (bb:{ *:[Other] }):$offset) - Complexity = 3
                // Dst: (B (bb:{ *:[Other] }):$offset)
/* 46063*/    /*Scope*/ 9, /*->46073*/
/* 46064*/      OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 46066*/      OPC_EmitMergeInputChains1_0,
/* 46067*/      OPC_MorphNodeTo0, TARGET_VAL(Mips::Bimm16), 0|OPFL_Chain,
                    1/*#Ops*/, 1, 
                // Src: (br (bb:{ *:[Other] }):$imm16) - Complexity = 3
                // Dst: (Bimm16 (bb:{ *:[Other] }):$imm16)
/* 46073*/    /*Scope*/ 9, /*->46083*/
/* 46074*/      OPC_CheckPatternPredicate, 92, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!TM.isPositionIndependent())
/* 46076*/      OPC_EmitMergeInputChains1_0,
/* 46077*/      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)
/* 46083*/    /*Scope*/ 9, /*->46093*/
/* 46084*/      OPC_CheckPatternPredicate, 93, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (TM.isPositionIndependent())
/* 46086*/      OPC_EmitMergeInputChains1_0,
/* 46087*/      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)
/* 46093*/    /*Scope*/ 9, /*->46103*/
/* 46094*/      OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 46096*/      OPC_EmitMergeInputChains1_0,
/* 46097*/      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)
/* 46103*/    0, /*End of Scope*/
/* 46104*/  /*SwitchOpcode*/ 33, TARGET_VAL(MipsISD::EH_RETURN),// ->46140
/* 46107*/    OPC_RecordNode, // #0 = 'MIPSehret' chained node
/* 46108*/    OPC_CaptureGlueInput,
/* 46109*/    OPC_RecordChild1, // #1 = $spoff
/* 46110*/    OPC_Scope, 13, /*->46125*/ // 2 children in Scope
/* 46112*/      OPC_CheckChild1Type, MVT::i32,
/* 46114*/      OPC_RecordChild2, // #2 = $dst
/* 46115*/      OPC_CheckChild2Type, MVT::i32,
/* 46117*/      OPC_EmitMergeInputChains1_0,
/* 46118*/      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)
/* 46125*/    /*Scope*/ 13, /*->46139*/
/* 46126*/      OPC_CheckChild1Type, MVT::i64,
/* 46128*/      OPC_RecordChild2, // #2 = $dst
/* 46129*/      OPC_CheckChild2Type, MVT::i64,
/* 46131*/      OPC_EmitMergeInputChains1_0,
/* 46132*/      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)
/* 46139*/    0, /*End of Scope*/
/* 46140*/  /*SwitchOpcode*/ 119, TARGET_VAL(ISD::SIGN_EXTEND_INREG),// ->46262
/* 46143*/    OPC_RecordChild0, // #0 = $rt
/* 46144*/    OPC_MoveChild1,
/* 46145*/    OPC_Scope, 50, /*->46197*/ // 3 children in Scope
/* 46147*/      OPC_CheckValueType, MVT::i8,
/* 46149*/      OPC_MoveParent,
/* 46150*/      OPC_SwitchType /*2 cases */, 32, MVT::i32,// ->46185
/* 46153*/        OPC_Scope, 9, /*->46164*/ // 3 children in Scope
/* 46155*/          OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 46157*/          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)
/* 46164*/        /*Scope*/ 9, /*->46174*/
/* 46165*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 46167*/          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)
/* 46174*/        /*Scope*/ 9, /*->46184*/
/* 46175*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 46177*/          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)
/* 46184*/        0, /*End of Scope*/
/* 46185*/      /*SwitchType*/ 9, MVT::i64,// ->46196
/* 46187*/        OPC_CheckPatternPredicate, 94, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding())
/* 46189*/        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)
/* 46196*/      0, // EndSwitchType
/* 46197*/    /*Scope*/ 50, /*->46248*/
/* 46198*/      OPC_CheckValueType, MVT::i16,
/* 46200*/      OPC_MoveParent,
/* 46201*/      OPC_SwitchType /*2 cases */, 32, MVT::i32,// ->46236
/* 46204*/        OPC_Scope, 9, /*->46215*/ // 3 children in Scope
/* 46206*/          OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 46208*/          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)
/* 46215*/        /*Scope*/ 9, /*->46225*/
/* 46216*/          OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 46218*/          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)
/* 46225*/        /*Scope*/ 9, /*->46235*/
/* 46226*/          OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 46228*/          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)
/* 46235*/        0, /*End of Scope*/
/* 46236*/      /*SwitchType*/ 9, MVT::i64,// ->46247
/* 46238*/        OPC_CheckPatternPredicate, 94, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding())
/* 46240*/        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)
/* 46247*/      0, // EndSwitchType
/* 46248*/    /*Scope*/ 12, /*->46261*/
/* 46249*/      OPC_CheckValueType, MVT::i32,
/* 46251*/      OPC_MoveParent,
/* 46252*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 46254*/      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)
/* 46261*/    0, /*End of Scope*/
/* 46262*/  /*SwitchOpcode*/ 56, TARGET_VAL(MipsISD::Mult),// ->46321
/* 46265*/    OPC_RecordChild0, // #0 = $rs
/* 46266*/    OPC_Scope, 38, /*->46306*/ // 2 children in Scope
/* 46268*/      OPC_CheckChild0Type, MVT::i32,
/* 46270*/      OPC_RecordChild1, // #1 = $rt
/* 46271*/      OPC_Scope, 10, /*->46283*/ // 3 children in Scope
/* 46273*/        OPC_CheckPatternPredicate, 95, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46275*/        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)
/* 46283*/      /*Scope*/ 10, /*->46294*/
/* 46284*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46286*/        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)
/* 46294*/      /*Scope*/ 10, /*->46305*/
/* 46295*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46297*/        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)
/* 46305*/      0, /*End of Scope*/
/* 46306*/    /*Scope*/ 13, /*->46320*/
/* 46307*/      OPC_CheckChild0Type, MVT::i64,
/* 46309*/      OPC_RecordChild1, // #1 = $rt
/* 46310*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46312*/      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)
/* 46320*/    0, /*End of Scope*/
/* 46321*/  /*SwitchOpcode*/ 56, TARGET_VAL(MipsISD::Multu),// ->46380
/* 46324*/    OPC_RecordChild0, // #0 = $rs
/* 46325*/    OPC_Scope, 38, /*->46365*/ // 2 children in Scope
/* 46327*/      OPC_CheckChild0Type, MVT::i32,
/* 46329*/      OPC_RecordChild1, // #1 = $rt
/* 46330*/      OPC_Scope, 10, /*->46342*/ // 3 children in Scope
/* 46332*/        OPC_CheckPatternPredicate, 95, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46334*/        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)
/* 46342*/      /*Scope*/ 10, /*->46353*/
/* 46343*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46345*/        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)
/* 46353*/      /*Scope*/ 10, /*->46364*/
/* 46354*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46356*/        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)
/* 46364*/      0, /*End of Scope*/
/* 46365*/    /*Scope*/ 13, /*->46379*/
/* 46366*/      OPC_CheckChild0Type, MVT::i64,
/* 46368*/      OPC_RecordChild1, // #1 = $rt
/* 46369*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46371*/      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)
/* 46379*/    0, /*End of Scope*/
/* 46380*/  /*SwitchOpcode*/ 48, TARGET_VAL(MipsISD::MFHI),// ->46431
/* 46383*/    OPC_RecordChild0, // #0 = $hilo
/* 46384*/    OPC_SwitchType /*2 cases */, 32, MVT::i32,// ->46419
/* 46387*/      OPC_Scope, 9, /*->46398*/ // 3 children in Scope
/* 46389*/        OPC_CheckPatternPredicate, 95, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46391*/        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)
/* 46398*/      /*Scope*/ 9, /*->46408*/
/* 46399*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46401*/        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)
/* 46408*/      /*Scope*/ 9, /*->46418*/
/* 46409*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46411*/        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)
/* 46418*/      0, /*End of Scope*/
/* 46419*/    /*SwitchType*/ 9, MVT::i64,// ->46430
/* 46421*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46423*/      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)
/* 46430*/    0, // EndSwitchType
/* 46431*/  /*SwitchOpcode*/ 48, TARGET_VAL(MipsISD::MFLO),// ->46482
/* 46434*/    OPC_RecordChild0, // #0 = $hilo
/* 46435*/    OPC_SwitchType /*2 cases */, 32, MVT::i32,// ->46470
/* 46438*/      OPC_Scope, 9, /*->46449*/ // 3 children in Scope
/* 46440*/        OPC_CheckPatternPredicate, 95, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46442*/        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)
/* 46449*/      /*Scope*/ 9, /*->46459*/
/* 46450*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46452*/        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)
/* 46459*/      /*Scope*/ 9, /*->46469*/
/* 46460*/        OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46462*/        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)
/* 46469*/      0, /*End of Scope*/
/* 46470*/    /*SwitchType*/ 9, MVT::i64,// ->46481
/* 46472*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46474*/      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)
/* 46481*/    0, // EndSwitchType
/* 46482*/  /*SwitchOpcode*/ 45, TARGET_VAL(MipsISD::MTLOHI),// ->46530
/* 46485*/    OPC_RecordChild0, // #0 = $lo
/* 46486*/    OPC_Scope, 27, /*->46515*/ // 2 children in Scope
/* 46488*/      OPC_CheckChild0Type, MVT::i32,
/* 46490*/      OPC_RecordChild1, // #1 = $hi
/* 46491*/      OPC_Scope, 10, /*->46503*/ // 2 children in Scope
/* 46493*/        OPC_CheckPatternPredicate, 95, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46495*/        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)
/* 46503*/      /*Scope*/ 10, /*->46514*/
/* 46504*/        OPC_CheckPatternPredicate, 89, // (!Subtarget->inMips16Mode())
/* 46506*/        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)
/* 46514*/      0, /*End of Scope*/
/* 46515*/    /*Scope*/ 13, /*->46529*/
/* 46516*/      OPC_CheckChild0Type, MVT::i64,
/* 46518*/      OPC_RecordChild1, // #1 = $hi
/* 46519*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46521*/      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)
/* 46529*/    0, /*End of Scope*/
/* 46530*/  /*SwitchOpcode*/ 41, TARGET_VAL(MipsISD::MAdd),// ->46574
/* 46533*/    OPC_RecordChild0, // #0 = $rs
/* 46534*/    OPC_RecordChild1, // #1 = $rt
/* 46535*/    OPC_RecordChild2, // #2 = $acin
/* 46536*/    OPC_Scope, 11, /*->46549*/ // 3 children in Scope
/* 46538*/      OPC_CheckPatternPredicate, 96, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46540*/      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)
/* 46549*/    /*Scope*/ 11, /*->46561*/
/* 46550*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46552*/      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)
/* 46561*/    /*Scope*/ 11, /*->46573*/
/* 46562*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46564*/      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)
/* 46573*/    0, /*End of Scope*/
/* 46574*/  /*SwitchOpcode*/ 41, TARGET_VAL(MipsISD::MAddu),// ->46618
/* 46577*/    OPC_RecordChild0, // #0 = $rs
/* 46578*/    OPC_RecordChild1, // #1 = $rt
/* 46579*/    OPC_RecordChild2, // #2 = $acin
/* 46580*/    OPC_Scope, 11, /*->46593*/ // 3 children in Scope
/* 46582*/      OPC_CheckPatternPredicate, 96, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46584*/      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)
/* 46593*/    /*Scope*/ 11, /*->46605*/
/* 46594*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46596*/      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)
/* 46605*/    /*Scope*/ 11, /*->46617*/
/* 46606*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46608*/      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)
/* 46617*/    0, /*End of Scope*/
/* 46618*/  /*SwitchOpcode*/ 41, TARGET_VAL(MipsISD::MSub),// ->46662
/* 46621*/    OPC_RecordChild0, // #0 = $rs
/* 46622*/    OPC_RecordChild1, // #1 = $rt
/* 46623*/    OPC_RecordChild2, // #2 = $acin
/* 46624*/    OPC_Scope, 11, /*->46637*/ // 3 children in Scope
/* 46626*/      OPC_CheckPatternPredicate, 96, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46628*/      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)
/* 46637*/    /*Scope*/ 11, /*->46649*/
/* 46638*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46640*/      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)
/* 46649*/    /*Scope*/ 11, /*->46661*/
/* 46650*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46652*/      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)
/* 46661*/    0, /*End of Scope*/
/* 46662*/  /*SwitchOpcode*/ 41, TARGET_VAL(MipsISD::MSubu),// ->46706
/* 46665*/    OPC_RecordChild0, // #0 = $rs
/* 46666*/    OPC_RecordChild1, // #1 = $rt
/* 46667*/    OPC_RecordChild2, // #2 = $acin
/* 46668*/    OPC_Scope, 11, /*->46681*/ // 3 children in Scope
/* 46670*/      OPC_CheckPatternPredicate, 96, // (Subtarget->hasMips32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasDSP()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 46672*/      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)
/* 46681*/    /*Scope*/ 11, /*->46693*/
/* 46682*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46684*/      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)
/* 46693*/    /*Scope*/ 11, /*->46705*/
/* 46694*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 46696*/      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)
/* 46705*/    0, /*End of Scope*/
/* 46706*/  /*SwitchOpcode*/ 53, TARGET_VAL(ISD::SUBC),// ->46762
/* 46709*/    OPC_RecordChild0, // #0 = $lhs
/* 46710*/    OPC_RecordChild1, // #1 = $rhs
/* 46711*/    OPC_SwitchType /*2 cases */, 35, MVT::i32,// ->46749
/* 46714*/      OPC_Scope, 10, /*->46726*/ // 3 children in Scope
/* 46716*/        OPC_CheckPatternPredicate, 6, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 46718*/        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)
/* 46726*/      /*Scope*/ 10, /*->46737*/
/* 46727*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 46729*/        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)
/* 46737*/      /*Scope*/ 10, /*->46748*/
/* 46738*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 46740*/        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)
/* 46748*/      0, /*End of Scope*/
/* 46749*/    /*SwitchType*/ 10, MVT::i64,// ->46761
/* 46751*/      OPC_CheckPatternPredicate, 59, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->inMicroMipsMode())
/* 46753*/      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)
/* 46761*/    0, // EndSwitchType
/* 46762*/  /*SwitchOpcode*/ 38|128,18/*2342*/, TARGET_VAL(ISD::BITCAST),// ->49108
/* 46766*/    OPC_RecordChild0, // #0 = $fs
/* 46767*/    OPC_Scope, 68, /*->46837*/ // 13 children in Scope
/* 46769*/      OPC_CheckChild0Type, MVT::f32,
/* 46771*/      OPC_SwitchType /*3 cases */, 32, MVT::i32,// ->46806
/* 46774*/        OPC_Scope, 9, /*->46785*/ // 3 children in Scope
/* 46776*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 46778*/          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)
/* 46785*/        /*Scope*/ 9, /*->46795*/
/* 46786*/          OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 46788*/          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)
/* 46795*/        /*Scope*/ 9, /*->46805*/
/* 46796*/          OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 46798*/          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)
/* 46805*/        0, /*End of Scope*/
/* 46806*/      /*SwitchType*/ 13, MVT::v2i16,// ->46821
/* 46808*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46810*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 46813*/        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] })
/* 46821*/      /*SwitchType*/ 13, MVT::v4i8,// ->46836
/* 46823*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46825*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 46828*/        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] })
/* 46836*/      0, // EndSwitchType
/* 46837*/    /*Scope*/ 13, /*->46851*/
/* 46838*/      OPC_CheckChild0Type, MVT::f64,
/* 46840*/      OPC_CheckType, MVT::i64,
/* 46842*/      OPC_CheckPatternPredicate, 97, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 46844*/      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)
/* 46851*/    /*Scope*/ 34, /*->46886*/
/* 46852*/      OPC_CheckChild0Type, MVT::v2i16,
/* 46854*/      OPC_SwitchType /*2 cases */, 13, MVT::i32,// ->46870
/* 46857*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46859*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 46862*/        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] })
/* 46870*/      /*SwitchType*/ 13, MVT::f32,// ->46885
/* 46872*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46874*/        OPC_EmitInteger, MVT::i32, Mips::FGR32RegClassID,
/* 46877*/        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] })
/* 46885*/      0, // EndSwitchType
/* 46886*/    /*Scope*/ 34, /*->46921*/
/* 46887*/      OPC_CheckChild0Type, MVT::v4i8,
/* 46889*/      OPC_SwitchType /*2 cases */, 13, MVT::i32,// ->46905
/* 46892*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46894*/        OPC_EmitInteger, MVT::i32, Mips::GPR32RegClassID,
/* 46897*/        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] })
/* 46905*/      /*SwitchType*/ 13, MVT::f32,// ->46920
/* 46907*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46909*/        OPC_EmitInteger, MVT::i32, Mips::FGR32RegClassID,
/* 46912*/        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] })
/* 46920*/      0, // EndSwitchType
/* 46921*/    /*Scope*/ 68, /*->46990*/
/* 46922*/      OPC_CheckChild0Type, MVT::i32,
/* 46924*/      OPC_SwitchType /*3 cases */, 32, MVT::f32,// ->46959
/* 46927*/        OPC_Scope, 9, /*->46938*/ // 3 children in Scope
/* 46929*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 46931*/          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)
/* 46938*/        /*Scope*/ 9, /*->46948*/
/* 46939*/          OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 46941*/          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)
/* 46948*/        /*Scope*/ 9, /*->46958*/
/* 46949*/          OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 46951*/          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)
/* 46958*/        0, /*End of Scope*/
/* 46959*/      /*SwitchType*/ 13, MVT::v2i16,// ->46974
/* 46961*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46963*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 46966*/        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] })
/* 46974*/      /*SwitchType*/ 13, MVT::v4i8,// ->46989
/* 46976*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 46978*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 46981*/        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] })
/* 46989*/      0, // EndSwitchType
/* 46990*/    /*Scope*/ 13, /*->47004*/
/* 46991*/      OPC_CheckChild0Type, MVT::i64,
/* 46993*/      OPC_CheckType, MVT::f64,
/* 46995*/      OPC_CheckPatternPredicate, 97, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 46997*/      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)
/* 47004*/    /*Scope*/ 36|128,2/*292*/, /*->47298*/
/* 47006*/      OPC_CheckChild0Type, MVT::v8f16,
/* 47008*/      OPC_SwitchType /*6 cases */, 13, MVT::v8i16,// ->47024
/* 47011*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 47013*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47016*/        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] })
/* 47024*/      /*SwitchType*/ 53, MVT::v16i8,// ->47079
/* 47026*/        OPC_Scope, 13, /*->47041*/ // 2 children in Scope
/* 47028*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47030*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47033*/          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] })
/* 47041*/        /*Scope*/ 36, /*->47078*/
/* 47042*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47044*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47047*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47055*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47059*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47067*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47070*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v16i8] } 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] })
/* 47078*/        0, /*End of Scope*/
/* 47079*/      /*SwitchType*/ 53, MVT::v4i32,// ->47134
/* 47081*/        OPC_Scope, 13, /*->47096*/ // 2 children in Scope
/* 47083*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47085*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47088*/          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] })
/* 47096*/        /*Scope*/ 36, /*->47133*/
/* 47097*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47099*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47102*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47110*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47114*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47122*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47125*/          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] })
/* 47133*/        0, /*End of Scope*/
/* 47134*/      /*SwitchType*/ 52, MVT::v2i64,// ->47188
/* 47136*/        OPC_Scope, 13, /*->47151*/ // 2 children in Scope
/* 47138*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47140*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47143*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v2i64] } v8f16:{ *:[v8f16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2i64] } v8f16:{ *:[v8f16] }:$src, MSA128D:{ *:[i32] })
/* 47151*/        /*Scope*/ 35, /*->47187*/
/* 47152*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47154*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47157*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47165*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47168*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47176*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47179*/          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] })
/* 47187*/        0, /*End of Scope*/
/* 47188*/      /*SwitchType*/ 53, MVT::v4f32,// ->47243
/* 47190*/        OPC_Scope, 13, /*->47205*/ // 2 children in Scope
/* 47192*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47194*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47197*/          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] })
/* 47205*/        /*Scope*/ 36, /*->47242*/
/* 47206*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47208*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47211*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47219*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47223*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47231*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47234*/          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] })
/* 47242*/        0, /*End of Scope*/
/* 47243*/      /*SwitchType*/ 52, MVT::v2f64,// ->47297
/* 47245*/        OPC_Scope, 13, /*->47260*/ // 2 children in Scope
/* 47247*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47249*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47252*/          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] })
/* 47260*/        /*Scope*/ 35, /*->47296*/
/* 47261*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47263*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47266*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47274*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47277*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47285*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47288*/          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] })
/* 47296*/        0, /*End of Scope*/
/* 47297*/      0, // EndSwitchType
/* 47298*/    /*Scope*/ 20|128,2/*276*/, /*->47576*/
/* 47300*/      OPC_CheckChild0Type, MVT::v4f32,
/* 47302*/      OPC_SwitchType /*6 cases */, 13, MVT::v4i32,// ->47318
/* 47305*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 47307*/        OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47310*/        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] })
/* 47318*/      /*SwitchType*/ 52, MVT::v16i8,// ->47372
/* 47320*/        OPC_Scope, 13, /*->47335*/ // 2 children in Scope
/* 47322*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47324*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47327*/          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] })
/* 47335*/        /*Scope*/ 35, /*->47371*/
/* 47336*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47338*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47341*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47349*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47352*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47360*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47363*/          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] })
/* 47371*/        0, /*End of Scope*/
/* 47372*/      /*SwitchType*/ 53, MVT::v8i16,// ->47427
/* 47374*/        OPC_Scope, 13, /*->47389*/ // 2 children in Scope
/* 47376*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47378*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47381*/          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] })
/* 47389*/        /*Scope*/ 36, /*->47426*/
/* 47390*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47392*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47395*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47403*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47407*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47415*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47418*/          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] })
/* 47426*/        0, /*End of Scope*/
/* 47427*/      /*SwitchType*/ 53, MVT::v2i64,// ->47482
/* 47429*/        OPC_Scope, 13, /*->47444*/ // 2 children in Scope
/* 47431*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47433*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47436*/          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] })
/* 47444*/        /*Scope*/ 36, /*->47481*/
/* 47445*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47447*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47450*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47458*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47462*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47470*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47473*/          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] })
/* 47481*/        0, /*End of Scope*/
/* 47482*/      /*SwitchType*/ 53, MVT::v2f64,// ->47537
/* 47484*/        OPC_Scope, 13, /*->47499*/ // 2 children in Scope
/* 47486*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47488*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47491*/          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] })
/* 47499*/        /*Scope*/ 36, /*->47536*/
/* 47500*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47502*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47505*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47513*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47517*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47525*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47528*/          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] })
/* 47536*/        0, /*End of Scope*/
/* 47537*/      /*SwitchType*/ 36, MVT::v8f16,// ->47575
/* 47539*/        OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47541*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47544*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47552*/        OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47556*/        OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47564*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47567*/        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] })
/* 47575*/      0, // EndSwitchType
/* 47576*/    /*Scope*/ 41|128,2/*297*/, /*->47875*/
/* 47578*/      OPC_CheckChild0Type, MVT::v2f64,
/* 47580*/      OPC_SwitchType /*6 cases */, 13, MVT::v2i64,// ->47596
/* 47583*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 47585*/        OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47588*/        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] })
/* 47596*/      /*SwitchType*/ 75, MVT::v16i8,// ->47673
/* 47598*/        OPC_Scope, 13, /*->47613*/ // 2 children in Scope
/* 47600*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47602*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47605*/          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] })
/* 47613*/        /*Scope*/ 58, /*->47672*/
/* 47614*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47616*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47619*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47627*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47630*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47638*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47641*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 47649*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47653*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 47661*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47664*/          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] })
/* 47672*/        0, /*End of Scope*/
/* 47673*/      /*SwitchType*/ 52, MVT::v8i16,// ->47727
/* 47675*/        OPC_Scope, 13, /*->47690*/ // 2 children in Scope
/* 47677*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47679*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47682*/          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] })
/* 47690*/        /*Scope*/ 35, /*->47726*/
/* 47691*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47693*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47696*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47704*/          OPC_EmitInteger, MVT::i32, 27, 
/* 47707*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47715*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47718*/          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] })
/* 47726*/        0, /*End of Scope*/
/* 47727*/      /*SwitchType*/ 53, MVT::v4i32,// ->47782
/* 47729*/        OPC_Scope, 13, /*->47744*/ // 2 children in Scope
/* 47731*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47733*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47736*/          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] })
/* 47744*/        /*Scope*/ 36, /*->47781*/
/* 47745*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47747*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47750*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47758*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47762*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47770*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47773*/          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] })
/* 47781*/        0, /*End of Scope*/
/* 47782*/      /*SwitchType*/ 53, MVT::v4f32,// ->47837
/* 47784*/        OPC_Scope, 13, /*->47799*/ // 2 children in Scope
/* 47786*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47788*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47791*/          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] })
/* 47799*/        /*Scope*/ 36, /*->47836*/
/* 47800*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47802*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47805*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47813*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47817*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47825*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47828*/          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] })
/* 47836*/        0, /*End of Scope*/
/* 47837*/      /*SwitchType*/ 35, MVT::v8f16,// ->47874
/* 47839*/        OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47841*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47844*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47852*/        OPC_EmitInteger, MVT::i32, 27, 
/* 47855*/        OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47863*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47866*/        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] })
/* 47874*/      0, // EndSwitchType
/* 47875*/    /*Scope*/ 36|128,2/*292*/, /*->48169*/
/* 47877*/      OPC_CheckChild0Type, MVT::v8i16,
/* 47879*/      OPC_SwitchType /*6 cases */, 53, MVT::v16i8,// ->47935
/* 47882*/        OPC_Scope, 13, /*->47897*/ // 2 children in Scope
/* 47884*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47886*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47889*/          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] })
/* 47897*/        /*Scope*/ 36, /*->47934*/
/* 47898*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47900*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47903*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47911*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47915*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47923*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 47926*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 4, 5, 
                    // Src: (bitconvert:{ *:[v16i8] } 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] })
/* 47934*/        0, /*End of Scope*/
/* 47935*/      /*SwitchType*/ 53, MVT::v4i32,// ->47990
/* 47937*/        OPC_Scope, 13, /*->47952*/ // 2 children in Scope
/* 47939*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47941*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47944*/          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] })
/* 47952*/        /*Scope*/ 36, /*->47989*/
/* 47953*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 47955*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 47958*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 47966*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 47970*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 47978*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 47981*/          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] })
/* 47989*/        0, /*End of Scope*/
/* 47990*/      /*SwitchType*/ 52, MVT::v2i64,// ->48044
/* 47992*/        OPC_Scope, 13, /*->48007*/ // 2 children in Scope
/* 47994*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 47996*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 47999*/          OPC_MorphNodeTo1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v2i64, 2/*#Ops*/, 0, 1, 
                    // Src: (bitconvert:{ *:[v2i64] } v8i16:{ *:[v8i16] }:$src) - Complexity = 3
                    // Dst: (COPY_TO_REGCLASS:{ *:[v2i64] } v8i16:{ *:[v8i16] }:$src, MSA128D:{ *:[i32] })
/* 48007*/        /*Scope*/ 35, /*->48043*/
/* 48008*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48010*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48013*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48021*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48024*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48032*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48035*/          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] })
/* 48043*/        0, /*End of Scope*/
/* 48044*/      /*SwitchType*/ 13, MVT::v8f16,// ->48059
/* 48046*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 48048*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48051*/        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] })
/* 48059*/      /*SwitchType*/ 53, MVT::v4f32,// ->48114
/* 48061*/        OPC_Scope, 13, /*->48076*/ // 2 children in Scope
/* 48063*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48065*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48068*/          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] })
/* 48076*/        /*Scope*/ 36, /*->48113*/
/* 48077*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48079*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48082*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48090*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48094*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48102*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48105*/          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] })
/* 48113*/        0, /*End of Scope*/
/* 48114*/      /*SwitchType*/ 52, MVT::v2f64,// ->48168
/* 48116*/        OPC_Scope, 13, /*->48131*/ // 2 children in Scope
/* 48118*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48120*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48123*/          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] })
/* 48131*/        /*Scope*/ 35, /*->48167*/
/* 48132*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48134*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48137*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48145*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48148*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48156*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48159*/          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] })
/* 48167*/        0, /*End of Scope*/
/* 48168*/      0, // EndSwitchType
/* 48169*/    /*Scope*/ 20|128,2/*276*/, /*->48447*/
/* 48171*/      OPC_CheckChild0Type, MVT::v4i32,
/* 48173*/      OPC_SwitchType /*6 cases */, 52, MVT::v16i8,// ->48228
/* 48176*/        OPC_Scope, 13, /*->48191*/ // 2 children in Scope
/* 48178*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48180*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48183*/          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] })
/* 48191*/        /*Scope*/ 35, /*->48227*/
/* 48192*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48194*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48197*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48205*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48208*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48216*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48219*/          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] })
/* 48227*/        0, /*End of Scope*/
/* 48228*/      /*SwitchType*/ 53, MVT::v8i16,// ->48283
/* 48230*/        OPC_Scope, 13, /*->48245*/ // 2 children in Scope
/* 48232*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48234*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48237*/          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] })
/* 48245*/        /*Scope*/ 36, /*->48282*/
/* 48246*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48248*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48251*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48259*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48263*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48271*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48274*/          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] })
/* 48282*/        0, /*End of Scope*/
/* 48283*/      /*SwitchType*/ 53, MVT::v2i64,// ->48338
/* 48285*/        OPC_Scope, 13, /*->48300*/ // 2 children in Scope
/* 48287*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48289*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48292*/          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] })
/* 48300*/        /*Scope*/ 36, /*->48337*/
/* 48301*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48303*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48306*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48314*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48318*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48326*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48329*/          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] })
/* 48337*/        0, /*End of Scope*/
/* 48338*/      /*SwitchType*/ 13, MVT::v4f32,// ->48353
/* 48340*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 48342*/        OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48345*/        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] })
/* 48353*/      /*SwitchType*/ 53, MVT::v2f64,// ->48408
/* 48355*/        OPC_Scope, 13, /*->48370*/ // 2 children in Scope
/* 48357*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48359*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48362*/          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] })
/* 48370*/        /*Scope*/ 36, /*->48407*/
/* 48371*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48373*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48376*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48384*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48388*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48396*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48399*/          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] })
/* 48407*/        0, /*End of Scope*/
/* 48408*/      /*SwitchType*/ 36, MVT::v8f16,// ->48446
/* 48410*/        OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48412*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48415*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48423*/        OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48427*/        OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48435*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48438*/        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] })
/* 48446*/      0, // EndSwitchType
/* 48447*/    /*Scope*/ 41|128,2/*297*/, /*->48746*/
/* 48449*/      OPC_CheckChild0Type, MVT::v2i64,
/* 48451*/      OPC_SwitchType /*6 cases */, 75, MVT::v16i8,// ->48529
/* 48454*/        OPC_Scope, 13, /*->48469*/ // 2 children in Scope
/* 48456*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48458*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48461*/          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] })
/* 48469*/        /*Scope*/ 58, /*->48528*/
/* 48470*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48472*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48475*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48483*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48486*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48494*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48497*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 48505*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48509*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 48517*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48520*/          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] })
/* 48528*/        0, /*End of Scope*/
/* 48529*/      /*SwitchType*/ 52, MVT::v8i16,// ->48583
/* 48531*/        OPC_Scope, 13, /*->48546*/ // 2 children in Scope
/* 48533*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48535*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48538*/          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] })
/* 48546*/        /*Scope*/ 35, /*->48582*/
/* 48547*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48549*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48552*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48560*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48563*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                        MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48571*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48574*/          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] })
/* 48582*/        0, /*End of Scope*/
/* 48583*/      /*SwitchType*/ 53, MVT::v4i32,// ->48638
/* 48585*/        OPC_Scope, 13, /*->48600*/ // 2 children in Scope
/* 48587*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48589*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48592*/          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] })
/* 48600*/        /*Scope*/ 36, /*->48637*/
/* 48601*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48603*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48606*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48614*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48618*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48626*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48629*/          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] })
/* 48637*/        0, /*End of Scope*/
/* 48638*/      /*SwitchType*/ 13, MVT::v2f64,// ->48653
/* 48640*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 48642*/        OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48645*/        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] })
/* 48653*/      /*SwitchType*/ 53, MVT::v4f32,// ->48708
/* 48655*/        OPC_Scope, 13, /*->48670*/ // 2 children in Scope
/* 48657*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48659*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48662*/          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] })
/* 48670*/        /*Scope*/ 36, /*->48707*/
/* 48671*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48673*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48676*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48684*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48688*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48696*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48699*/          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] })
/* 48707*/        0, /*End of Scope*/
/* 48708*/      /*SwitchType*/ 35, MVT::v8f16,// ->48745
/* 48710*/        OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48712*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48715*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v8i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48723*/        OPC_EmitInteger, MVT::i32, 27, 
/* 48726*/        OPC_EmitNode1, TARGET_VAL(Mips::SHF_H), 0,
                      MVT::v8i16, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48734*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48737*/        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] })
/* 48745*/      0, // EndSwitchType
/* 48746*/    /*Scope*/ 103|128,2/*359*/, /*->49107*/
/* 48748*/      OPC_CheckChild0Type, MVT::v16i8,
/* 48750*/      OPC_SwitchType /*6 cases */, 53, MVT::v8i16,// ->48806
/* 48753*/        OPC_Scope, 13, /*->48768*/ // 2 children in Scope
/* 48755*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48757*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48760*/          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] })
/* 48768*/        /*Scope*/ 36, /*->48805*/
/* 48769*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48771*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48774*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48782*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48786*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48794*/          OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 48797*/          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] })
/* 48805*/        0, /*End of Scope*/
/* 48806*/      /*SwitchType*/ 52, MVT::v4i32,// ->48860
/* 48808*/        OPC_Scope, 13, /*->48823*/ // 2 children in Scope
/* 48810*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48812*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48815*/          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] })
/* 48823*/        /*Scope*/ 35, /*->48859*/
/* 48824*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48826*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48829*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48837*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48840*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48848*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48851*/          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] })
/* 48859*/        0, /*End of Scope*/
/* 48860*/      /*SwitchType*/ 75, MVT::v2i64,// ->48937
/* 48862*/        OPC_Scope, 13, /*->48877*/ // 2 children in Scope
/* 48864*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48866*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48869*/          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] })
/* 48877*/        /*Scope*/ 58, /*->48936*/
/* 48878*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48880*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48883*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48891*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48894*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48902*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48905*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 48913*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 48917*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 48925*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 48928*/          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] })
/* 48936*/        0, /*End of Scope*/
/* 48937*/      /*SwitchType*/ 52, MVT::v4f32,// ->48991
/* 48939*/        OPC_Scope, 13, /*->48954*/ // 2 children in Scope
/* 48941*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48943*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48946*/          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] })
/* 48954*/        /*Scope*/ 35, /*->48990*/
/* 48955*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 48957*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 48960*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 48968*/          OPC_EmitInteger, MVT::i32, 27, 
/* 48971*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 48979*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 48982*/          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] })
/* 48990*/        0, /*End of Scope*/
/* 48991*/      /*SwitchType*/ 75, MVT::v2f64,// ->49068
/* 48993*/        OPC_Scope, 13, /*->49008*/ // 2 children in Scope
/* 48995*/          OPC_CheckPatternPredicate, 98, // (Subtarget->hasMSA()) && (Subtarget->isLittle())
/* 48997*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 49000*/          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] })
/* 49008*/        /*Scope*/ 58, /*->49067*/
/* 49009*/          OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 49011*/          OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 49014*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 49022*/          OPC_EmitInteger, MVT::i32, 27, 
/* 49025*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                        MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 49033*/          OPC_EmitInteger, MVT::i32, Mips::MSA128WRegClassID,
/* 49036*/          OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                        MVT::v4i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 49044*/          OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 49048*/          OPC_EmitNode1, TARGET_VAL(Mips::SHF_W), 0,
                        MVT::v4i32, 2/*#Ops*/, 6, 7,  // Results = #8
/* 49056*/          OPC_EmitInteger, MVT::i32, Mips::MSA128DRegClassID,
/* 49059*/          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] })
/* 49067*/        0, /*End of Scope*/
/* 49068*/      /*SwitchType*/ 36, MVT::v8f16,// ->49106
/* 49070*/        OPC_CheckPatternPredicate, 99, // (Subtarget->hasMSA()) && (!Subtarget->isLittle())
/* 49072*/        OPC_EmitInteger, MVT::i32, Mips::MSA128BRegClassID,
/* 49075*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v16i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 49083*/        OPC_EmitInteger, MVT::i32, 49|128,1/*177*/, 
/* 49087*/        OPC_EmitNode1, TARGET_VAL(Mips::SHF_B), 0,
                      MVT::v16i8, 2/*#Ops*/, 2, 3,  // Results = #4
/* 49095*/        OPC_EmitInteger, MVT::i32, Mips::MSA128HRegClassID,
/* 49098*/        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] })
/* 49106*/      0, // EndSwitchType
/* 49107*/    0, /*End of Scope*/
/* 49108*/  /*SwitchOpcode*/ 69, TARGET_VAL(ISD::CTPOP),// ->49180
/* 49111*/    OPC_RecordChild0, // #0 = $rs
/* 49112*/    OPC_SwitchType /*6 cases */, 9, MVT::i32,// ->49124
/* 49115*/      OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 49117*/      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)
/* 49124*/    /*SwitchType*/ 9, MVT::i64,// ->49135
/* 49126*/      OPC_CheckPatternPredicate, 29, // (Subtarget->hasCnMips())
/* 49128*/      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)
/* 49135*/    /*SwitchType*/ 9, MVT::v16i8,// ->49146
/* 49137*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 49139*/      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)
/* 49146*/    /*SwitchType*/ 9, MVT::v8i16,// ->49157
/* 49148*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 49150*/      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)
/* 49157*/    /*SwitchType*/ 9, MVT::v4i32,// ->49168
/* 49159*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 49161*/      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)
/* 49168*/    /*SwitchType*/ 9, MVT::v2i64,// ->49179
/* 49170*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 49172*/      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)
/* 49179*/    0, // EndSwitchType
/* 49180*/  /*SwitchOpcode*/ 50|128,1/*178*/, TARGET_VAL(MipsISD::CMovFP_T),// ->49362
/* 49184*/    OPC_CaptureGlueInput,
/* 49185*/    OPC_RecordChild0, // #0 = $rs
/* 49186*/    OPC_RecordChild1, // #1 = $fcc
/* 49187*/    OPC_RecordChild2, // #2 = $F
/* 49188*/    OPC_SwitchType /*4 cases */, 38, MVT::i32,// ->49229
/* 49191*/      OPC_Scope, 11, /*->49204*/ // 3 children in Scope
/* 49193*/        OPC_CheckPatternPredicate, 100, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49195*/        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)
/* 49204*/      /*Scope*/ 11, /*->49216*/
/* 49205*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 49207*/        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)
/* 49216*/      /*Scope*/ 11, /*->49228*/
/* 49217*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49219*/        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)
/* 49228*/      0, /*End of Scope*/
/* 49229*/    /*SwitchType*/ 26, MVT::i64,// ->49257
/* 49231*/      OPC_Scope, 11, /*->49244*/ // 2 children in Scope
/* 49233*/        OPC_CheckPatternPredicate, 101, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49235*/        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)
/* 49244*/      /*Scope*/ 11, /*->49256*/
/* 49245*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49247*/        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)
/* 49256*/      0, /*End of Scope*/
/* 49257*/    /*SwitchType*/ 38, MVT::f32,// ->49297
/* 49259*/      OPC_Scope, 11, /*->49272*/ // 3 children in Scope
/* 49261*/        OPC_CheckPatternPredicate, 100, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49263*/        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)
/* 49272*/      /*Scope*/ 11, /*->49284*/
/* 49273*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 49275*/        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)
/* 49284*/      /*Scope*/ 11, /*->49296*/
/* 49285*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49287*/        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)
/* 49296*/      0, /*End of Scope*/
/* 49297*/    /*SwitchType*/ 62, MVT::f64,// ->49361
/* 49299*/      OPC_Scope, 11, /*->49312*/ // 5 children in Scope
/* 49301*/        OPC_CheckPatternPredicate, 102, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49303*/        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)
/* 49312*/      /*Scope*/ 11, /*->49324*/
/* 49313*/        OPC_CheckPatternPredicate, 103, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49315*/        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)
/* 49324*/      /*Scope*/ 11, /*->49336*/
/* 49325*/        OPC_CheckPatternPredicate, 104, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 49327*/        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)
/* 49336*/      /*Scope*/ 11, /*->49348*/
/* 49337*/        OPC_CheckPatternPredicate, 41, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 49339*/        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)
/* 49348*/      /*Scope*/ 11, /*->49360*/
/* 49349*/        OPC_CheckPatternPredicate, 42, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 49351*/        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)
/* 49360*/      0, /*End of Scope*/
/* 49361*/    0, // EndSwitchType
/* 49362*/  /*SwitchOpcode*/ 50|128,1/*178*/, TARGET_VAL(MipsISD::CMovFP_F),// ->49544
/* 49366*/    OPC_CaptureGlueInput,
/* 49367*/    OPC_RecordChild0, // #0 = $rs
/* 49368*/    OPC_RecordChild1, // #1 = $fcc
/* 49369*/    OPC_RecordChild2, // #2 = $F
/* 49370*/    OPC_SwitchType /*4 cases */, 38, MVT::i32,// ->49411
/* 49373*/      OPC_Scope, 11, /*->49386*/ // 3 children in Scope
/* 49375*/        OPC_CheckPatternPredicate, 100, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49377*/        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)
/* 49386*/      /*Scope*/ 11, /*->49398*/
/* 49387*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 49389*/        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)
/* 49398*/      /*Scope*/ 11, /*->49410*/
/* 49399*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49401*/        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)
/* 49410*/      0, /*End of Scope*/
/* 49411*/    /*SwitchType*/ 26, MVT::i64,// ->49439
/* 49413*/      OPC_Scope, 11, /*->49426*/ // 2 children in Scope
/* 49415*/        OPC_CheckPatternPredicate, 101, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49417*/        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)
/* 49426*/      /*Scope*/ 11, /*->49438*/
/* 49427*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49429*/        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)
/* 49438*/      0, /*End of Scope*/
/* 49439*/    /*SwitchType*/ 38, MVT::f32,// ->49479
/* 49441*/      OPC_Scope, 11, /*->49454*/ // 3 children in Scope
/* 49443*/        OPC_CheckPatternPredicate, 100, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49445*/        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)
/* 49454*/      /*Scope*/ 11, /*->49466*/
/* 49455*/        OPC_CheckPatternPredicate, 9, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->hasMips32r6())
/* 49457*/        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)
/* 49466*/      /*Scope*/ 11, /*->49478*/
/* 49467*/        OPC_CheckPatternPredicate, 36, // (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips4_32())
/* 49469*/        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)
/* 49478*/      0, /*End of Scope*/
/* 49479*/    /*SwitchType*/ 62, MVT::f64,// ->49543
/* 49481*/      OPC_Scope, 11, /*->49494*/ // 5 children in Scope
/* 49483*/        OPC_CheckPatternPredicate, 102, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49485*/        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)
/* 49494*/      /*Scope*/ 11, /*->49506*/
/* 49495*/        OPC_CheckPatternPredicate, 103, // (Subtarget->hasMips4_32()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 49497*/        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)
/* 49506*/      /*Scope*/ 11, /*->49518*/
/* 49507*/        OPC_CheckPatternPredicate, 104, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 49509*/        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)
/* 49518*/      /*Scope*/ 11, /*->49530*/
/* 49519*/        OPC_CheckPatternPredicate, 41, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 49521*/        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)
/* 49530*/      /*Scope*/ 11, /*->49542*/
/* 49531*/        OPC_CheckPatternPredicate, 42, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->hasMips4_32())
/* 49533*/        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)
/* 49542*/      0, /*End of Scope*/
/* 49543*/    0, // EndSwitchType
/* 49544*/  /*SwitchOpcode*/ 42, TARGET_VAL(ISD::MULHS),// ->49589
/* 49547*/    OPC_RecordChild0, // #0 = $rs
/* 49548*/    OPC_RecordChild1, // #1 = $rt
/* 49549*/    OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->49576
/* 49552*/      OPC_Scope, 10, /*->49564*/ // 2 children in Scope
/* 49554*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 49556*/        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)
/* 49564*/      /*Scope*/ 10, /*->49575*/
/* 49565*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 49567*/        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)
/* 49575*/      0, /*End of Scope*/
/* 49576*/    /*SwitchType*/ 10, MVT::i64,// ->49588
/* 49578*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 49580*/      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)
/* 49588*/    0, // EndSwitchType
/* 49589*/  /*SwitchOpcode*/ 42, TARGET_VAL(ISD::MULHU),// ->49634
/* 49592*/    OPC_RecordChild0, // #0 = $rs
/* 49593*/    OPC_RecordChild1, // #1 = $rt
/* 49594*/    OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->49621
/* 49597*/      OPC_Scope, 10, /*->49609*/ // 2 children in Scope
/* 49599*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 49601*/        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)
/* 49609*/      /*Scope*/ 10, /*->49620*/
/* 49610*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 49612*/        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)
/* 49620*/      0, /*End of Scope*/
/* 49621*/    /*SwitchType*/ 10, MVT::i64,// ->49633
/* 49623*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 49625*/      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)
/* 49633*/    0, // EndSwitchType
/* 49634*/  /*SwitchOpcode*/ 14, TARGET_VAL(MipsISD::DivRem16),// ->49651
/* 49637*/    OPC_RecordChild0, // #0 = $rx
/* 49638*/    OPC_CheckChild0Type, MVT::i32,
/* 49640*/    OPC_RecordChild1, // #1 = $ry
/* 49641*/    OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 49643*/    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)
/* 49651*/  /*SwitchOpcode*/ 14, TARGET_VAL(MipsISD::DivRemU16),// ->49668
/* 49654*/    OPC_RecordChild0, // #0 = $rx
/* 49655*/    OPC_CheckChild0Type, MVT::i32,
/* 49657*/    OPC_RecordChild1, // #1 = $ry
/* 49658*/    OPC_CheckPatternPredicate, 14, // (Subtarget->inMips16Mode())
/* 49660*/    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)
/* 49668*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::MULSAQ_S_W_PH),// ->49703
/* 49671*/    OPC_RecordNode, // #0 = 'MipsMULSAQ_S_W_PH' chained node
/* 49672*/    OPC_RecordChild1, // #1 = $rs
/* 49673*/    OPC_RecordChild2, // #2 = $rt
/* 49674*/    OPC_RecordChild3, // #3 = $acin
/* 49675*/    OPC_Scope, 12, /*->49689*/ // 2 children in Scope
/* 49677*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49679*/      OPC_EmitMergeInputChains1_0,
/* 49680*/      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)
/* 49689*/    /*Scope*/ 12, /*->49702*/
/* 49690*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49692*/      OPC_EmitMergeInputChains1_0,
/* 49693*/      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)
/* 49702*/    0, /*End of Scope*/
/* 49703*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::MAQ_S_W_PHL),// ->49738
/* 49706*/    OPC_RecordNode, // #0 = 'MipsMAQ_S_W_PHL' chained node
/* 49707*/    OPC_RecordChild1, // #1 = $rs
/* 49708*/    OPC_RecordChild2, // #2 = $rt
/* 49709*/    OPC_RecordChild3, // #3 = $acin
/* 49710*/    OPC_Scope, 12, /*->49724*/ // 2 children in Scope
/* 49712*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49714*/      OPC_EmitMergeInputChains1_0,
/* 49715*/      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)
/* 49724*/    /*Scope*/ 12, /*->49737*/
/* 49725*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49727*/      OPC_EmitMergeInputChains1_0,
/* 49728*/      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)
/* 49737*/    0, /*End of Scope*/
/* 49738*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::MAQ_S_W_PHR),// ->49773
/* 49741*/    OPC_RecordNode, // #0 = 'MipsMAQ_S_W_PHR' chained node
/* 49742*/    OPC_RecordChild1, // #1 = $rs
/* 49743*/    OPC_RecordChild2, // #2 = $rt
/* 49744*/    OPC_RecordChild3, // #3 = $acin
/* 49745*/    OPC_Scope, 12, /*->49759*/ // 2 children in Scope
/* 49747*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49749*/      OPC_EmitMergeInputChains1_0,
/* 49750*/      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)
/* 49759*/    /*Scope*/ 12, /*->49772*/
/* 49760*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49762*/      OPC_EmitMergeInputChains1_0,
/* 49763*/      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)
/* 49772*/    0, /*End of Scope*/
/* 49773*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::MAQ_SA_W_PHL),// ->49808
/* 49776*/    OPC_RecordNode, // #0 = 'MipsMAQ_SA_W_PHL' chained node
/* 49777*/    OPC_RecordChild1, // #1 = $rs
/* 49778*/    OPC_RecordChild2, // #2 = $rt
/* 49779*/    OPC_RecordChild3, // #3 = $acin
/* 49780*/    OPC_Scope, 12, /*->49794*/ // 2 children in Scope
/* 49782*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49784*/      OPC_EmitMergeInputChains1_0,
/* 49785*/      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)
/* 49794*/    /*Scope*/ 12, /*->49807*/
/* 49795*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49797*/      OPC_EmitMergeInputChains1_0,
/* 49798*/      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)
/* 49807*/    0, /*End of Scope*/
/* 49808*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::MAQ_SA_W_PHR),// ->49843
/* 49811*/    OPC_RecordNode, // #0 = 'MipsMAQ_SA_W_PHR' chained node
/* 49812*/    OPC_RecordChild1, // #1 = $rs
/* 49813*/    OPC_RecordChild2, // #2 = $rt
/* 49814*/    OPC_RecordChild3, // #3 = $acin
/* 49815*/    OPC_Scope, 12, /*->49829*/ // 2 children in Scope
/* 49817*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49819*/      OPC_EmitMergeInputChains1_0,
/* 49820*/      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)
/* 49829*/    /*Scope*/ 12, /*->49842*/
/* 49830*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49832*/      OPC_EmitMergeInputChains1_0,
/* 49833*/      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)
/* 49842*/    0, /*End of Scope*/
/* 49843*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPAU_H_QBL),// ->49875
/* 49846*/    OPC_RecordChild0, // #0 = $rs
/* 49847*/    OPC_RecordChild1, // #1 = $rt
/* 49848*/    OPC_RecordChild2, // #2 = $acin
/* 49849*/    OPC_Scope, 11, /*->49862*/ // 2 children in Scope
/* 49851*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49853*/      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)
/* 49862*/    /*Scope*/ 11, /*->49874*/
/* 49863*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49865*/      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)
/* 49874*/    0, /*End of Scope*/
/* 49875*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPAU_H_QBR),// ->49907
/* 49878*/    OPC_RecordChild0, // #0 = $rs
/* 49879*/    OPC_RecordChild1, // #1 = $rt
/* 49880*/    OPC_RecordChild2, // #2 = $acin
/* 49881*/    OPC_Scope, 11, /*->49894*/ // 2 children in Scope
/* 49883*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49885*/      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)
/* 49894*/    /*Scope*/ 11, /*->49906*/
/* 49895*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49897*/      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)
/* 49906*/    0, /*End of Scope*/
/* 49907*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPSU_H_QBL),// ->49939
/* 49910*/    OPC_RecordChild0, // #0 = $rs
/* 49911*/    OPC_RecordChild1, // #1 = $rt
/* 49912*/    OPC_RecordChild2, // #2 = $acin
/* 49913*/    OPC_Scope, 11, /*->49926*/ // 2 children in Scope
/* 49915*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49917*/      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)
/* 49926*/    /*Scope*/ 11, /*->49938*/
/* 49927*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49929*/      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)
/* 49938*/    0, /*End of Scope*/
/* 49939*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPSU_H_QBR),// ->49971
/* 49942*/    OPC_RecordChild0, // #0 = $rs
/* 49943*/    OPC_RecordChild1, // #1 = $rt
/* 49944*/    OPC_RecordChild2, // #2 = $acin
/* 49945*/    OPC_Scope, 11, /*->49958*/ // 2 children in Scope
/* 49947*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49949*/      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)
/* 49958*/    /*Scope*/ 11, /*->49970*/
/* 49959*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49961*/      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)
/* 49970*/    0, /*End of Scope*/
/* 49971*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPAQ_S_W_PH),// ->50006
/* 49974*/    OPC_RecordNode, // #0 = 'MipsDPAQ_S_W_PH' chained node
/* 49975*/    OPC_RecordChild1, // #1 = $rs
/* 49976*/    OPC_RecordChild2, // #2 = $rt
/* 49977*/    OPC_RecordChild3, // #3 = $acin
/* 49978*/    OPC_Scope, 12, /*->49992*/ // 2 children in Scope
/* 49980*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 49982*/      OPC_EmitMergeInputChains1_0,
/* 49983*/      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)
/* 49992*/    /*Scope*/ 12, /*->50005*/
/* 49993*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 49995*/      OPC_EmitMergeInputChains1_0,
/* 49996*/      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)
/* 50005*/    0, /*End of Scope*/
/* 50006*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPSQ_S_W_PH),// ->50041
/* 50009*/    OPC_RecordNode, // #0 = 'MipsDPSQ_S_W_PH' chained node
/* 50010*/    OPC_RecordChild1, // #1 = $rs
/* 50011*/    OPC_RecordChild2, // #2 = $rt
/* 50012*/    OPC_RecordChild3, // #3 = $acin
/* 50013*/    OPC_Scope, 12, /*->50027*/ // 2 children in Scope
/* 50015*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 50017*/      OPC_EmitMergeInputChains1_0,
/* 50018*/      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)
/* 50027*/    /*Scope*/ 12, /*->50040*/
/* 50028*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 50030*/      OPC_EmitMergeInputChains1_0,
/* 50031*/      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)
/* 50040*/    0, /*End of Scope*/
/* 50041*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPAQ_SA_L_W),// ->50076
/* 50044*/    OPC_RecordNode, // #0 = 'MipsDPAQ_SA_L_W' chained node
/* 50045*/    OPC_RecordChild1, // #1 = $rs
/* 50046*/    OPC_RecordChild2, // #2 = $rt
/* 50047*/    OPC_RecordChild3, // #3 = $acin
/* 50048*/    OPC_Scope, 12, /*->50062*/ // 2 children in Scope
/* 50050*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 50052*/      OPC_EmitMergeInputChains1_0,
/* 50053*/      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)
/* 50062*/    /*Scope*/ 12, /*->50075*/
/* 50063*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 50065*/      OPC_EmitMergeInputChains1_0,
/* 50066*/      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)
/* 50075*/    0, /*End of Scope*/
/* 50076*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPSQ_SA_L_W),// ->50111
/* 50079*/    OPC_RecordNode, // #0 = 'MipsDPSQ_SA_L_W' chained node
/* 50080*/    OPC_RecordChild1, // #1 = $rs
/* 50081*/    OPC_RecordChild2, // #2 = $rt
/* 50082*/    OPC_RecordChild3, // #3 = $acin
/* 50083*/    OPC_Scope, 12, /*->50097*/ // 2 children in Scope
/* 50085*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 50087*/      OPC_EmitMergeInputChains1_0,
/* 50088*/      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)
/* 50097*/    /*Scope*/ 12, /*->50110*/
/* 50098*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 50100*/      OPC_EmitMergeInputChains1_0,
/* 50101*/      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)
/* 50110*/    0, /*End of Scope*/
/* 50111*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::MTHLIP),// ->50143
/* 50114*/    OPC_RecordNode, // #0 = 'MipsMTHLIP' chained node
/* 50115*/    OPC_RecordChild1, // #1 = $rs
/* 50116*/    OPC_RecordChild2, // #2 = $acin
/* 50117*/    OPC_Scope, 11, /*->50130*/ // 2 children in Scope
/* 50119*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 50121*/      OPC_EmitMergeInputChains1_0,
/* 50122*/      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)
/* 50130*/    /*Scope*/ 11, /*->50142*/
/* 50131*/      OPC_CheckPatternPredicate, 45, // (Subtarget->hasDSP()) && (Subtarget->inMicroMipsMode())
/* 50133*/      OPC_EmitMergeInputChains1_0,
/* 50134*/      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)
/* 50142*/    0, /*End of Scope*/
/* 50143*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPA_W_PH),// ->50175
/* 50146*/    OPC_RecordChild0, // #0 = $rs
/* 50147*/    OPC_RecordChild1, // #1 = $rt
/* 50148*/    OPC_RecordChild2, // #2 = $acin
/* 50149*/    OPC_Scope, 11, /*->50162*/ // 2 children in Scope
/* 50151*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50153*/      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)
/* 50162*/    /*Scope*/ 11, /*->50174*/
/* 50163*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50165*/      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)
/* 50174*/    0, /*End of Scope*/
/* 50175*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPS_W_PH),// ->50207
/* 50178*/    OPC_RecordChild0, // #0 = $rs
/* 50179*/    OPC_RecordChild1, // #1 = $rt
/* 50180*/    OPC_RecordChild2, // #2 = $acin
/* 50181*/    OPC_Scope, 11, /*->50194*/ // 2 children in Scope
/* 50183*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50185*/      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)
/* 50194*/    /*Scope*/ 11, /*->50206*/
/* 50195*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50197*/      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)
/* 50206*/    0, /*End of Scope*/
/* 50207*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPAQX_S_W_PH),// ->50242
/* 50210*/    OPC_RecordNode, // #0 = 'MipsDPAQX_S_W_PH' chained node
/* 50211*/    OPC_RecordChild1, // #1 = $rs
/* 50212*/    OPC_RecordChild2, // #2 = $rt
/* 50213*/    OPC_RecordChild3, // #3 = $acin
/* 50214*/    OPC_Scope, 12, /*->50228*/ // 2 children in Scope
/* 50216*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50218*/      OPC_EmitMergeInputChains1_0,
/* 50219*/      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)
/* 50228*/    /*Scope*/ 12, /*->50241*/
/* 50229*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50231*/      OPC_EmitMergeInputChains1_0,
/* 50232*/      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)
/* 50241*/    0, /*End of Scope*/
/* 50242*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPAQX_SA_W_PH),// ->50277
/* 50245*/    OPC_RecordNode, // #0 = 'MipsDPAQX_SA_W_PH' chained node
/* 50246*/    OPC_RecordChild1, // #1 = $rs
/* 50247*/    OPC_RecordChild2, // #2 = $rt
/* 50248*/    OPC_RecordChild3, // #3 = $acin
/* 50249*/    OPC_Scope, 12, /*->50263*/ // 2 children in Scope
/* 50251*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50253*/      OPC_EmitMergeInputChains1_0,
/* 50254*/      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)
/* 50263*/    /*Scope*/ 12, /*->50276*/
/* 50264*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50266*/      OPC_EmitMergeInputChains1_0,
/* 50267*/      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)
/* 50276*/    0, /*End of Scope*/
/* 50277*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPAX_W_PH),// ->50309
/* 50280*/    OPC_RecordChild0, // #0 = $rs
/* 50281*/    OPC_RecordChild1, // #1 = $rt
/* 50282*/    OPC_RecordChild2, // #2 = $acin
/* 50283*/    OPC_Scope, 11, /*->50296*/ // 2 children in Scope
/* 50285*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50287*/      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)
/* 50296*/    /*Scope*/ 11, /*->50308*/
/* 50297*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50299*/      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)
/* 50308*/    0, /*End of Scope*/
/* 50309*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::DPSX_W_PH),// ->50341
/* 50312*/    OPC_RecordChild0, // #0 = $rs
/* 50313*/    OPC_RecordChild1, // #1 = $rt
/* 50314*/    OPC_RecordChild2, // #2 = $acin
/* 50315*/    OPC_Scope, 11, /*->50328*/ // 2 children in Scope
/* 50317*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50319*/      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)
/* 50328*/    /*Scope*/ 11, /*->50340*/
/* 50329*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50331*/      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)
/* 50340*/    0, /*End of Scope*/
/* 50341*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPSQX_S_W_PH),// ->50376
/* 50344*/    OPC_RecordNode, // #0 = 'MipsDPSQX_S_W_PH' chained node
/* 50345*/    OPC_RecordChild1, // #1 = $rs
/* 50346*/    OPC_RecordChild2, // #2 = $rt
/* 50347*/    OPC_RecordChild3, // #3 = $acin
/* 50348*/    OPC_Scope, 12, /*->50362*/ // 2 children in Scope
/* 50350*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50352*/      OPC_EmitMergeInputChains1_0,
/* 50353*/      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)
/* 50362*/    /*Scope*/ 12, /*->50375*/
/* 50363*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50365*/      OPC_EmitMergeInputChains1_0,
/* 50366*/      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)
/* 50375*/    0, /*End of Scope*/
/* 50376*/  /*SwitchOpcode*/ 32, TARGET_VAL(MipsISD::DPSQX_SA_W_PH),// ->50411
/* 50379*/    OPC_RecordNode, // #0 = 'MipsDPSQX_SA_W_PH' chained node
/* 50380*/    OPC_RecordChild1, // #1 = $rs
/* 50381*/    OPC_RecordChild2, // #2 = $rt
/* 50382*/    OPC_RecordChild3, // #3 = $acin
/* 50383*/    OPC_Scope, 12, /*->50397*/ // 2 children in Scope
/* 50385*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50387*/      OPC_EmitMergeInputChains1_0,
/* 50388*/      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)
/* 50397*/    /*Scope*/ 12, /*->50410*/
/* 50398*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50400*/      OPC_EmitMergeInputChains1_0,
/* 50401*/      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)
/* 50410*/    0, /*End of Scope*/
/* 50411*/  /*SwitchOpcode*/ 29, TARGET_VAL(MipsISD::MULSA_W_PH),// ->50443
/* 50414*/    OPC_RecordChild0, // #0 = $rs
/* 50415*/    OPC_RecordChild1, // #1 = $rt
/* 50416*/    OPC_RecordChild2, // #2 = $acin
/* 50417*/    OPC_Scope, 11, /*->50430*/ // 2 children in Scope
/* 50419*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 50421*/      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)
/* 50430*/    /*Scope*/ 11, /*->50442*/
/* 50431*/      OPC_CheckPatternPredicate, 47, // (Subtarget->hasDSPR2()) && (Subtarget->inMicroMipsMode())
/* 50433*/      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)
/* 50442*/    0, /*End of Scope*/
/* 50443*/  /*SwitchOpcode*/ 15, TARGET_VAL(ISD::ADDE),// ->50461
/* 50446*/    OPC_CaptureGlueInput,
/* 50447*/    OPC_RecordChild0, // #0 = $a
/* 50448*/    OPC_RecordChild1, // #1 = $b
/* 50449*/    OPC_CheckType, MVT::i32,
/* 50451*/    OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 50453*/    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)
/* 50461*/  /*SwitchOpcode*/ 67, TARGET_VAL(ISD::BSWAP),// ->50531
/* 50464*/    OPC_RecordChild0, // #0 = $rt
/* 50465*/    OPC_SwitchType /*2 cases */, 44, MVT::i32,// ->50512
/* 50468*/      OPC_Scope, 20, /*->50490*/ // 2 children in Scope
/* 50470*/        OPC_CheckPatternPredicate, 53, // (Subtarget->hasMips32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50472*/        OPC_EmitNode1, TARGET_VAL(Mips::WSBH), 0,
                      MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 50479*/        OPC_EmitInteger, MVT::i32, 16, 
/* 50482*/        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] })
/* 50490*/      /*Scope*/ 20, /*->50511*/
/* 50491*/        OPC_CheckPatternPredicate, 7, // (Subtarget->inMicroMipsMode())
/* 50493*/        OPC_EmitNode1, TARGET_VAL(Mips::WSBH_MM), 0,
                      MVT::i32, 1/*#Ops*/, 0,  // Results = #1
/* 50500*/        OPC_EmitInteger, MVT::i32, 16, 
/* 50503*/        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] })
/* 50511*/      0, /*End of Scope*/
/* 50512*/    /*SwitchType*/ 16, MVT::i64,// ->50530
/* 50514*/      OPC_CheckPatternPredicate, 105, // (Subtarget->hasMips64r2()) && (Subtarget->hasStandardEncoding())
/* 50516*/      OPC_EmitNode1, TARGET_VAL(Mips::DSBH), 0,
                    MVT::i64, 1/*#Ops*/, 0,  // Results = #1
/* 50523*/      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))
/* 50530*/    0, // EndSwitchType
/* 50531*/  /*SwitchOpcode*/ 23, TARGET_VAL(ISD::ANY_EXTEND),// ->50557
/* 50534*/    OPC_RecordChild0, // #0 = $src
/* 50535*/    OPC_CheckType, MVT::i64,
/* 50537*/    OPC_CheckPatternPredicate, 27, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isGP64bit())
/* 50539*/    OPC_EmitNode1, TARGET_VAL(TargetOpcode::IMPLICIT_DEF), 0,
                  MVT::i64, 0/*#Ops*/,  // Results = #1
/* 50545*/    OPC_EmitInteger, MVT::i32, Mips::sub_32,
/* 50548*/    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] })
/* 50557*/  /*SwitchOpcode*/ 45, TARGET_VAL(MipsISD::DivRem),// ->50605
/* 50560*/    OPC_RecordChild0, // #0 = $rs
/* 50561*/    OPC_Scope, 27, /*->50590*/ // 2 children in Scope
/* 50563*/      OPC_CheckChild0Type, MVT::i32,
/* 50565*/      OPC_RecordChild1, // #1 = $rt
/* 50566*/      OPC_Scope, 10, /*->50578*/ // 2 children in Scope
/* 50568*/        OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50570*/        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)
/* 50578*/      /*Scope*/ 10, /*->50589*/
/* 50579*/        OPC_CheckPatternPredicate, 106, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50581*/        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)
/* 50589*/      0, /*End of Scope*/
/* 50590*/    /*Scope*/ 13, /*->50604*/
/* 50591*/      OPC_CheckChild0Type, MVT::i64,
/* 50593*/      OPC_RecordChild1, // #1 = $rt
/* 50594*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50596*/      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)
/* 50604*/    0, /*End of Scope*/
/* 50605*/  /*SwitchOpcode*/ 45, TARGET_VAL(MipsISD::DivRemU),// ->50653
/* 50608*/    OPC_RecordChild0, // #0 = $rs
/* 50609*/    OPC_Scope, 27, /*->50638*/ // 2 children in Scope
/* 50611*/      OPC_CheckChild0Type, MVT::i32,
/* 50613*/      OPC_RecordChild1, // #1 = $rt
/* 50614*/      OPC_Scope, 10, /*->50626*/ // 2 children in Scope
/* 50616*/        OPC_CheckPatternPredicate, 10, // (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50618*/        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)
/* 50626*/      /*Scope*/ 10, /*->50637*/
/* 50627*/        OPC_CheckPatternPredicate, 106, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50629*/        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)
/* 50637*/      0, /*End of Scope*/
/* 50638*/    /*Scope*/ 13, /*->50652*/
/* 50639*/      OPC_CheckChild0Type, MVT::i64,
/* 50641*/      OPC_RecordChild1, // #1 = $rt
/* 50642*/      OPC_CheckPatternPredicate, 44, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 50644*/      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)
/* 50652*/    0, /*End of Scope*/
/* 50653*/  /*SwitchOpcode*/ 90, TARGET_VAL(ISD::SDIV),// ->50746
/* 50656*/    OPC_RecordChild0, // #0 = $rs
/* 50657*/    OPC_RecordChild1, // #1 = $rt
/* 50658*/    OPC_SwitchType /*6 cases */, 24, MVT::i32,// ->50685
/* 50661*/      OPC_Scope, 10, /*->50673*/ // 2 children in Scope
/* 50663*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50665*/        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)
/* 50673*/      /*Scope*/ 10, /*->50684*/
/* 50674*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 50676*/        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)
/* 50684*/      0, /*End of Scope*/
/* 50685*/    /*SwitchType*/ 10, MVT::i64,// ->50697
/* 50687*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50689*/      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)
/* 50697*/    /*SwitchType*/ 10, MVT::v16i8,// ->50709
/* 50699*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50701*/      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)
/* 50709*/    /*SwitchType*/ 10, MVT::v8i16,// ->50721
/* 50711*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50713*/      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)
/* 50721*/    /*SwitchType*/ 10, MVT::v4i32,// ->50733
/* 50723*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50725*/      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)
/* 50733*/    /*SwitchType*/ 10, MVT::v2i64,// ->50745
/* 50735*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50737*/      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)
/* 50745*/    0, // EndSwitchType
/* 50746*/  /*SwitchOpcode*/ 90, TARGET_VAL(ISD::UDIV),// ->50839
/* 50749*/    OPC_RecordChild0, // #0 = $rs
/* 50750*/    OPC_RecordChild1, // #1 = $rt
/* 50751*/    OPC_SwitchType /*6 cases */, 24, MVT::i32,// ->50778
/* 50754*/      OPC_Scope, 10, /*->50766*/ // 2 children in Scope
/* 50756*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50758*/        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)
/* 50766*/      /*Scope*/ 10, /*->50777*/
/* 50767*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 50769*/        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)
/* 50777*/      0, /*End of Scope*/
/* 50778*/    /*SwitchType*/ 10, MVT::i64,// ->50790
/* 50780*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50782*/      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)
/* 50790*/    /*SwitchType*/ 10, MVT::v16i8,// ->50802
/* 50792*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50794*/      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)
/* 50802*/    /*SwitchType*/ 10, MVT::v8i16,// ->50814
/* 50804*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50806*/      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)
/* 50814*/    /*SwitchType*/ 10, MVT::v4i32,// ->50826
/* 50816*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50818*/      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)
/* 50826*/    /*SwitchType*/ 10, MVT::v2i64,// ->50838
/* 50828*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50830*/      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)
/* 50838*/    0, // EndSwitchType
/* 50839*/  /*SwitchOpcode*/ 90, TARGET_VAL(ISD::SREM),// ->50932
/* 50842*/    OPC_RecordChild0, // #0 = $rs
/* 50843*/    OPC_RecordChild1, // #1 = $rt
/* 50844*/    OPC_SwitchType /*6 cases */, 24, MVT::i32,// ->50871
/* 50847*/      OPC_Scope, 10, /*->50859*/ // 2 children in Scope
/* 50849*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50851*/        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)
/* 50859*/      /*Scope*/ 10, /*->50870*/
/* 50860*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 50862*/        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)
/* 50870*/      0, /*End of Scope*/
/* 50871*/    /*SwitchType*/ 10, MVT::i64,// ->50883
/* 50873*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50875*/      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)
/* 50883*/    /*SwitchType*/ 10, MVT::v16i8,// ->50895
/* 50885*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50887*/      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)
/* 50895*/    /*SwitchType*/ 10, MVT::v8i16,// ->50907
/* 50897*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50899*/      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)
/* 50907*/    /*SwitchType*/ 10, MVT::v4i32,// ->50919
/* 50909*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50911*/      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)
/* 50919*/    /*SwitchType*/ 10, MVT::v2i64,// ->50931
/* 50921*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50923*/      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)
/* 50931*/    0, // EndSwitchType
/* 50932*/  /*SwitchOpcode*/ 90, TARGET_VAL(ISD::UREM),// ->51025
/* 50935*/    OPC_RecordChild0, // #0 = $rs
/* 50936*/    OPC_RecordChild1, // #1 = $rt
/* 50937*/    OPC_SwitchType /*6 cases */, 24, MVT::i32,// ->50964
/* 50940*/      OPC_Scope, 10, /*->50952*/ // 2 children in Scope
/* 50942*/        OPC_CheckPatternPredicate, 31, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50944*/        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)
/* 50952*/      /*Scope*/ 10, /*->50963*/
/* 50953*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 50955*/        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)
/* 50963*/      0, /*End of Scope*/
/* 50964*/    /*SwitchType*/ 10, MVT::i64,// ->50976
/* 50966*/      OPC_CheckPatternPredicate, 52, // (Subtarget->hasMips64r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->inMicroMipsMode())
/* 50968*/      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)
/* 50976*/    /*SwitchType*/ 10, MVT::v16i8,// ->50988
/* 50978*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50980*/      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)
/* 50988*/    /*SwitchType*/ 10, MVT::v8i16,// ->51000
/* 50990*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 50992*/      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)
/* 51000*/    /*SwitchType*/ 10, MVT::v4i32,// ->51012
/* 51002*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51004*/      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)
/* 51012*/    /*SwitchType*/ 10, MVT::v2i64,// ->51024
/* 51014*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51016*/      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)
/* 51024*/    0, // EndSwitchType
/* 51025*/  /*SwitchOpcode*/ 45, TARGET_VAL(MipsISD::VALL_NONZERO),// ->51073
/* 51028*/    OPC_RecordChild0, // #0 = $ws
/* 51029*/    OPC_CheckType, MVT::i32,
/* 51031*/    OPC_Scope, 9, /*->51042*/ // 4 children in Scope
/* 51033*/      OPC_CheckChild0Type, MVT::v16i8,
/* 51035*/      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)
/* 51042*/    /*Scope*/ 9, /*->51052*/
/* 51043*/      OPC_CheckChild0Type, MVT::v8i16,
/* 51045*/      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)
/* 51052*/    /*Scope*/ 9, /*->51062*/
/* 51053*/      OPC_CheckChild0Type, MVT::v4i32,
/* 51055*/      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)
/* 51062*/    /*Scope*/ 9, /*->51072*/
/* 51063*/      OPC_CheckChild0Type, MVT::v2i64,
/* 51065*/      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)
/* 51072*/    0, /*End of Scope*/
/* 51073*/  /*SwitchOpcode*/ 12, TARGET_VAL(MipsISD::VANY_NONZERO),// ->51088
/* 51076*/    OPC_RecordChild0, // #0 = $ws
/* 51077*/    OPC_CheckChild0Type, MVT::v16i8,
/* 51079*/    OPC_CheckType, MVT::i32,
/* 51081*/    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)
/* 51088*/  /*SwitchOpcode*/ 45, TARGET_VAL(MipsISD::VALL_ZERO),// ->51136
/* 51091*/    OPC_RecordChild0, // #0 = $ws
/* 51092*/    OPC_CheckType, MVT::i32,
/* 51094*/    OPC_Scope, 9, /*->51105*/ // 4 children in Scope
/* 51096*/      OPC_CheckChild0Type, MVT::v16i8,
/* 51098*/      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)
/* 51105*/    /*Scope*/ 9, /*->51115*/
/* 51106*/      OPC_CheckChild0Type, MVT::v8i16,
/* 51108*/      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)
/* 51115*/    /*Scope*/ 9, /*->51125*/
/* 51116*/      OPC_CheckChild0Type, MVT::v4i32,
/* 51118*/      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)
/* 51125*/    /*Scope*/ 9, /*->51135*/
/* 51126*/      OPC_CheckChild0Type, MVT::v2i64,
/* 51128*/      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)
/* 51135*/    0, /*End of Scope*/
/* 51136*/  /*SwitchOpcode*/ 12, TARGET_VAL(MipsISD::VANY_ZERO),// ->51151
/* 51139*/    OPC_RecordChild0, // #0 = $ws
/* 51140*/    OPC_CheckChild0Type, MVT::v16i8,
/* 51142*/    OPC_CheckType, MVT::i32,
/* 51144*/    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)
/* 51151*/  /*SwitchOpcode*/ 7|128,3/*391*/, TARGET_VAL(ISD::FSUB),// ->51546
/* 51155*/    OPC_Scope, 101|128,1/*229*/, /*->51387*/ // 2 children in Scope
/* 51158*/      OPC_MoveChild0,
/* 51159*/      OPC_SwitchOpcode /*2 cases */, 44|128,1/*172*/, TARGET_VAL(ISD::ConstantFP),// ->51336
/* 51164*/        OPC_CheckPredicate, 63, // Predicate_fpimm0
/* 51166*/        OPC_MoveParent,
/* 51167*/        OPC_MoveChild1,
/* 51168*/        OPC_SwitchOpcode /*2 cases */, 108, TARGET_VAL(ISD::FADD),// ->51280
/* 51172*/          OPC_Scope, 52, /*->51226*/ // 2 children in Scope
/* 51174*/            OPC_MoveChild0,
/* 51175*/            OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51178*/            OPC_RecordChild0, // #0 = $fs
/* 51179*/            OPC_RecordChild1, // #1 = $ft
/* 51180*/            OPC_MoveParent,
/* 51181*/            OPC_RecordChild1, // #2 = $fr
/* 51182*/            OPC_MoveParent,
/* 51183*/            OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51197
/* 51186*/              OPC_CheckPatternPredicate, 107, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51188*/              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)
/* 51197*/            /*SwitchType*/ 26, MVT::f64,// ->51225
/* 51199*/              OPC_Scope, 11, /*->51212*/ // 2 children in Scope
/* 51201*/                OPC_CheckPatternPredicate, 108, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51203*/                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)
/* 51212*/              /*Scope*/ 11, /*->51224*/
/* 51213*/                OPC_CheckPatternPredicate, 109, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51215*/                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)
/* 51224*/              0, /*End of Scope*/
/* 51225*/            0, // EndSwitchType
/* 51226*/          /*Scope*/ 52, /*->51279*/
/* 51227*/            OPC_RecordChild0, // #0 = $fr
/* 51228*/            OPC_MoveChild1,
/* 51229*/            OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51232*/            OPC_RecordChild0, // #1 = $fs
/* 51233*/            OPC_RecordChild1, // #2 = $ft
/* 51234*/            OPC_MoveParent,
/* 51235*/            OPC_MoveParent,
/* 51236*/            OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51250
/* 51239*/              OPC_CheckPatternPredicate, 107, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51241*/              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)
/* 51250*/            /*SwitchType*/ 26, MVT::f64,// ->51278
/* 51252*/              OPC_Scope, 11, /*->51265*/ // 2 children in Scope
/* 51254*/                OPC_CheckPatternPredicate, 108, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51256*/                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)
/* 51265*/              /*Scope*/ 11, /*->51277*/
/* 51266*/                OPC_CheckPatternPredicate, 109, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51268*/                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)
/* 51277*/              0, /*End of Scope*/
/* 51278*/            0, // EndSwitchType
/* 51279*/          0, /*End of Scope*/
/* 51280*/        /*SwitchOpcode*/ 52, TARGET_VAL(ISD::FSUB),// ->51335
/* 51283*/          OPC_MoveChild0,
/* 51284*/          OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51287*/          OPC_RecordChild0, // #0 = $fs
/* 51288*/          OPC_RecordChild1, // #1 = $ft
/* 51289*/          OPC_MoveParent,
/* 51290*/          OPC_RecordChild1, // #2 = $fr
/* 51291*/          OPC_MoveParent,
/* 51292*/          OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51306
/* 51295*/            OPC_CheckPatternPredicate, 107, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51297*/            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)
/* 51306*/          /*SwitchType*/ 26, MVT::f64,// ->51334
/* 51308*/            OPC_Scope, 11, /*->51321*/ // 2 children in Scope
/* 51310*/              OPC_CheckPatternPredicate, 108, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51312*/              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)
/* 51321*/            /*Scope*/ 11, /*->51333*/
/* 51322*/              OPC_CheckPatternPredicate, 109, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51324*/              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)
/* 51333*/            0, /*End of Scope*/
/* 51334*/          0, // EndSwitchType
/* 51335*/        0, // EndSwitchOpcode
/* 51336*/      /*SwitchOpcode*/ 47, TARGET_VAL(ISD::FMUL),// ->51386
/* 51339*/        OPC_RecordChild0, // #0 = $fs
/* 51340*/        OPC_RecordChild1, // #1 = $ft
/* 51341*/        OPC_MoveParent,
/* 51342*/        OPC_RecordChild1, // #2 = $fr
/* 51343*/        OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51357
/* 51346*/          OPC_CheckPatternPredicate, 110, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51348*/          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)
/* 51357*/        /*SwitchType*/ 26, MVT::f64,// ->51385
/* 51359*/          OPC_Scope, 11, /*->51372*/ // 2 children in Scope
/* 51361*/            OPC_CheckPatternPredicate, 111, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51363*/            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)
/* 51372*/          /*Scope*/ 11, /*->51384*/
/* 51373*/            OPC_CheckPatternPredicate, 112, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51375*/            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)
/* 51384*/          0, /*End of Scope*/
/* 51385*/        0, // EndSwitchType
/* 51386*/      0, // EndSwitchOpcode
/* 51387*/    /*Scope*/ 28|128,1/*156*/, /*->51545*/
/* 51389*/      OPC_RecordChild0, // #0 = $fs
/* 51390*/      OPC_Scope, 88, /*->51480*/ // 3 children in Scope
/* 51392*/        OPC_RecordChild1, // #1 = $ft
/* 51393*/        OPC_SwitchType /*2 cases */, 35, MVT::f32,// ->51431
/* 51396*/          OPC_Scope, 10, /*->51408*/ // 3 children in Scope
/* 51398*/            OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 51400*/            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)
/* 51408*/          /*Scope*/ 10, /*->51419*/
/* 51409*/            OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51411*/            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)
/* 51419*/          /*Scope*/ 10, /*->51430*/
/* 51420*/            OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51422*/            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)
/* 51430*/          0, /*End of Scope*/
/* 51431*/        /*SwitchType*/ 46, MVT::f64,// ->51479
/* 51433*/          OPC_Scope, 10, /*->51445*/ // 4 children in Scope
/* 51435*/            OPC_CheckPatternPredicate, 113, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 51437*/            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)
/* 51445*/          /*Scope*/ 10, /*->51456*/
/* 51446*/            OPC_CheckPatternPredicate, 114, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 51448*/            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)
/* 51456*/          /*Scope*/ 10, /*->51467*/
/* 51457*/            OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 51459*/            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)
/* 51467*/          /*Scope*/ 10, /*->51478*/
/* 51468*/            OPC_CheckPatternPredicate, 115, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 51470*/            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)
/* 51478*/          0, /*End of Scope*/
/* 51479*/        0, // EndSwitchType
/* 51480*/      /*Scope*/ 35, /*->51516*/
/* 51481*/        OPC_MoveChild1,
/* 51482*/        OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51485*/        OPC_RecordChild0, // #1 = $ws
/* 51486*/        OPC_RecordChild1, // #2 = $wt
/* 51487*/        OPC_MoveParent,
/* 51488*/        OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->51502
/* 51491*/          OPC_CheckPatternPredicate, 116, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51493*/          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)
/* 51502*/        /*SwitchType*/ 11, MVT::v2f64,// ->51515
/* 51504*/          OPC_CheckPatternPredicate, 116, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51506*/          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)
/* 51515*/        0, // EndSwitchType
/* 51516*/      /*Scope*/ 27, /*->51544*/
/* 51517*/        OPC_RecordChild1, // #1 = $wt
/* 51518*/        OPC_SwitchType /*2 cases */, 10, MVT::v4f32,// ->51531
/* 51521*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51523*/          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)
/* 51531*/        /*SwitchType*/ 10, MVT::v2f64,// ->51543
/* 51533*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 51535*/          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)
/* 51543*/        0, // EndSwitchType
/* 51544*/      0, /*End of Scope*/
/* 51545*/    0, /*End of Scope*/
/* 51546*/  /*SwitchOpcode*/ 81|128,2/*337*/, TARGET_VAL(ISD::FNEG),// ->51887
/* 51550*/    OPC_Scope, 123|128,1/*251*/, /*->51804*/ // 2 children in Scope
/* 51553*/      OPC_MoveChild0,
/* 51554*/      OPC_SwitchOpcode /*2 cases */, 34|128,1/*162*/, TARGET_VAL(ISD::FADD),// ->51721
/* 51559*/        OPC_Scope, 79, /*->51640*/ // 2 children in Scope
/* 51561*/          OPC_MoveChild0,
/* 51562*/          OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51565*/          OPC_RecordChild0, // #0 = $fs
/* 51566*/          OPC_RecordChild1, // #1 = $ft
/* 51567*/          OPC_MoveParent,
/* 51568*/          OPC_RecordChild1, // #2 = $fr
/* 51569*/          OPC_MoveParent,
/* 51570*/          OPC_SwitchType /*2 cases */, 26, MVT::f32,// ->51599
/* 51573*/            OPC_Scope, 11, /*->51586*/ // 2 children in Scope
/* 51575*/              OPC_CheckPatternPredicate, 117, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51577*/              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)
/* 51586*/            /*Scope*/ 11, /*->51598*/
/* 51587*/              OPC_CheckPatternPredicate, 118, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51589*/              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)
/* 51598*/            0, /*End of Scope*/
/* 51599*/          /*SwitchType*/ 38, MVT::f64,// ->51639
/* 51601*/            OPC_Scope, 11, /*->51614*/ // 3 children in Scope
/* 51603*/              OPC_CheckPatternPredicate, 119, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51605*/              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)
/* 51614*/            /*Scope*/ 11, /*->51626*/
/* 51615*/              OPC_CheckPatternPredicate, 120, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51617*/              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)
/* 51626*/            /*Scope*/ 11, /*->51638*/
/* 51627*/              OPC_CheckPatternPredicate, 121, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51629*/              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)
/* 51638*/            0, /*End of Scope*/
/* 51639*/          0, // EndSwitchType
/* 51640*/        /*Scope*/ 79, /*->51720*/
/* 51641*/          OPC_RecordChild0, // #0 = $fr
/* 51642*/          OPC_MoveChild1,
/* 51643*/          OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51646*/          OPC_RecordChild0, // #1 = $fs
/* 51647*/          OPC_RecordChild1, // #2 = $ft
/* 51648*/          OPC_MoveParent,
/* 51649*/          OPC_MoveParent,
/* 51650*/          OPC_SwitchType /*2 cases */, 26, MVT::f32,// ->51679
/* 51653*/            OPC_Scope, 11, /*->51666*/ // 2 children in Scope
/* 51655*/              OPC_CheckPatternPredicate, 117, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51657*/              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)
/* 51666*/            /*Scope*/ 11, /*->51678*/
/* 51667*/              OPC_CheckPatternPredicate, 118, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51669*/              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)
/* 51678*/            0, /*End of Scope*/
/* 51679*/          /*SwitchType*/ 38, MVT::f64,// ->51719
/* 51681*/            OPC_Scope, 11, /*->51694*/ // 3 children in Scope
/* 51683*/              OPC_CheckPatternPredicate, 119, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51685*/              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)
/* 51694*/            /*Scope*/ 11, /*->51706*/
/* 51695*/              OPC_CheckPatternPredicate, 120, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51697*/              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)
/* 51706*/            /*Scope*/ 11, /*->51718*/
/* 51707*/              OPC_CheckPatternPredicate, 121, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51709*/              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)
/* 51718*/            0, /*End of Scope*/
/* 51719*/          0, // EndSwitchType
/* 51720*/        0, /*End of Scope*/
/* 51721*/      /*SwitchOpcode*/ 79, TARGET_VAL(ISD::FSUB),// ->51803
/* 51724*/        OPC_MoveChild0,
/* 51725*/        OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51728*/        OPC_RecordChild0, // #0 = $fs
/* 51729*/        OPC_RecordChild1, // #1 = $ft
/* 51730*/        OPC_MoveParent,
/* 51731*/        OPC_RecordChild1, // #2 = $fr
/* 51732*/        OPC_MoveParent,
/* 51733*/        OPC_SwitchType /*2 cases */, 26, MVT::f32,// ->51762
/* 51736*/          OPC_Scope, 11, /*->51749*/ // 2 children in Scope
/* 51738*/            OPC_CheckPatternPredicate, 117, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51740*/            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)
/* 51749*/          /*Scope*/ 11, /*->51761*/
/* 51750*/            OPC_CheckPatternPredicate, 118, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51752*/            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)
/* 51761*/          0, /*End of Scope*/
/* 51762*/        /*SwitchType*/ 38, MVT::f64,// ->51802
/* 51764*/          OPC_Scope, 11, /*->51777*/ // 3 children in Scope
/* 51766*/            OPC_CheckPatternPredicate, 119, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51768*/            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)
/* 51777*/          /*Scope*/ 11, /*->51789*/
/* 51778*/            OPC_CheckPatternPredicate, 120, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51780*/            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)
/* 51789*/          /*Scope*/ 11, /*->51801*/
/* 51790*/            OPC_CheckPatternPredicate, 121, // (!Subtarget->disableMadd4()) && (Subtarget->inMicroMipsMode()) && (Subtarget->inMicroMipsMode()) && (TM.Options.NoNaNsFPMath) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips32r6())
/* 51792*/            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)
/* 51801*/          0, /*End of Scope*/
/* 51802*/        0, // EndSwitchType
/* 51803*/      0, // EndSwitchOpcode
/* 51804*/    /*Scope*/ 81, /*->51886*/
/* 51805*/      OPC_RecordChild0, // #0 = $fs
/* 51806*/      OPC_SwitchType /*2 cases */, 32, MVT::f32,// ->51841
/* 51809*/        OPC_Scope, 9, /*->51820*/ // 3 children in Scope
/* 51811*/          OPC_CheckPatternPredicate, 122, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat())
/* 51813*/          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)
/* 51820*/        /*Scope*/ 9, /*->51830*/
/* 51821*/          OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51823*/          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)
/* 51830*/        /*Scope*/ 9, /*->51840*/
/* 51831*/          OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 51833*/          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)
/* 51840*/        0, /*End of Scope*/
/* 51841*/      /*SwitchType*/ 42, MVT::f64,// ->51885
/* 51843*/        OPC_Scope, 9, /*->51854*/ // 4 children in Scope
/* 51845*/          OPC_CheckPatternPredicate, 113, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 51847*/          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)
/* 51854*/        /*Scope*/ 9, /*->51864*/
/* 51855*/          OPC_CheckPatternPredicate, 114, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 51857*/          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)
/* 51864*/        /*Scope*/ 9, /*->51874*/
/* 51865*/          OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 51867*/          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)
/* 51874*/        /*Scope*/ 9, /*->51884*/
/* 51875*/          OPC_CheckPatternPredicate, 115, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 51877*/          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)
/* 51884*/        0, /*End of Scope*/
/* 51885*/      0, // EndSwitchType
/* 51886*/    0, /*End of Scope*/
/* 51887*/  /*SwitchOpcode*/ 45|128,2/*301*/, TARGET_VAL(ISD::FADD),// ->52192
/* 51891*/    OPC_Scope, 51, /*->51944*/ // 4 children in Scope
/* 51893*/      OPC_MoveChild0,
/* 51894*/      OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51897*/      OPC_RecordChild0, // #0 = $fs
/* 51898*/      OPC_RecordChild1, // #1 = $ft
/* 51899*/      OPC_MoveParent,
/* 51900*/      OPC_RecordChild1, // #2 = $fr
/* 51901*/      OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51915
/* 51904*/        OPC_CheckPatternPredicate, 110, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51906*/        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)
/* 51915*/      /*SwitchType*/ 26, MVT::f64,// ->51943
/* 51917*/        OPC_Scope, 11, /*->51930*/ // 2 children in Scope
/* 51919*/          OPC_CheckPatternPredicate, 111, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51921*/          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)
/* 51930*/        /*Scope*/ 11, /*->51942*/
/* 51931*/          OPC_CheckPatternPredicate, 112, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51933*/          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)
/* 51942*/        0, /*End of Scope*/
/* 51943*/      0, // EndSwitchType
/* 51944*/    /*Scope*/ 51|128,1/*179*/, /*->52125*/
/* 51946*/      OPC_RecordChild0, // #0 = $fr
/* 51947*/      OPC_Scope, 50, /*->51999*/ // 3 children in Scope
/* 51949*/        OPC_MoveChild1,
/* 51950*/        OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 51953*/        OPC_RecordChild0, // #1 = $fs
/* 51954*/        OPC_RecordChild1, // #2 = $ft
/* 51955*/        OPC_MoveParent,
/* 51956*/        OPC_SwitchType /*2 cases */, 11, MVT::f32,// ->51970
/* 51959*/          OPC_CheckPatternPredicate, 110, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51961*/          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)
/* 51970*/        /*SwitchType*/ 26, MVT::f64,// ->51998
/* 51972*/          OPC_Scope, 11, /*->51985*/ // 2 children in Scope
/* 51974*/            OPC_CheckPatternPredicate, 111, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51976*/            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)
/* 51985*/          /*Scope*/ 11, /*->51997*/
/* 51986*/            OPC_CheckPatternPredicate, 112, // (!Subtarget->disableMadd4()) && (Subtarget->hasMips4_32r2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6()) && (!Subtarget->hasMips64r6())
/* 51988*/            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)
/* 51997*/          0, /*End of Scope*/
/* 51998*/        0, // EndSwitchType
/* 51999*/      /*Scope*/ 88, /*->52088*/
/* 52000*/        OPC_RecordChild1, // #1 = $ft
/* 52001*/        OPC_SwitchType /*2 cases */, 35, MVT::f32,// ->52039
/* 52004*/          OPC_Scope, 10, /*->52016*/ // 3 children in Scope
/* 52006*/            OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52008*/            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)
/* 52016*/          /*Scope*/ 10, /*->52027*/
/* 52017*/            OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52019*/            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)
/* 52027*/          /*Scope*/ 10, /*->52038*/
/* 52028*/            OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52030*/            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)
/* 52038*/          0, /*End of Scope*/
/* 52039*/        /*SwitchType*/ 46, MVT::f64,// ->52087
/* 52041*/          OPC_Scope, 10, /*->52053*/ // 4 children in Scope
/* 52043*/            OPC_CheckPatternPredicate, 113, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52045*/            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)
/* 52053*/          /*Scope*/ 10, /*->52064*/
/* 52054*/            OPC_CheckPatternPredicate, 114, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52056*/            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)
/* 52064*/          /*Scope*/ 10, /*->52075*/
/* 52065*/            OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 52067*/            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)
/* 52075*/          /*Scope*/ 10, /*->52086*/
/* 52076*/            OPC_CheckPatternPredicate, 115, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 52078*/            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)
/* 52086*/          0, /*End of Scope*/
/* 52087*/        0, // EndSwitchType
/* 52088*/      /*Scope*/ 35, /*->52124*/
/* 52089*/        OPC_MoveChild1,
/* 52090*/        OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 52093*/        OPC_RecordChild0, // #1 = $ws
/* 52094*/        OPC_RecordChild1, // #2 = $wt
/* 52095*/        OPC_MoveParent,
/* 52096*/        OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->52110
/* 52099*/          OPC_CheckPatternPredicate, 116, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52101*/          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)
/* 52110*/        /*SwitchType*/ 11, MVT::v2f64,// ->52123
/* 52112*/          OPC_CheckPatternPredicate, 116, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52114*/          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)
/* 52123*/        0, // EndSwitchType
/* 52124*/      0, /*End of Scope*/
/* 52125*/    /*Scope*/ 36, /*->52162*/
/* 52126*/      OPC_MoveChild0,
/* 52127*/      OPC_CheckOpcode, TARGET_VAL(ISD::FMUL),
/* 52130*/      OPC_RecordChild0, // #0 = $ws
/* 52131*/      OPC_RecordChild1, // #1 = $wt
/* 52132*/      OPC_MoveParent,
/* 52133*/      OPC_RecordChild1, // #2 = $wd
/* 52134*/      OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->52148
/* 52137*/        OPC_CheckPatternPredicate, 116, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52139*/        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)
/* 52148*/      /*SwitchType*/ 11, MVT::v2f64,// ->52161
/* 52150*/        OPC_CheckPatternPredicate, 116, // (TM.Options.AllowFPOpFusion == FPOpFusion::Fast) && (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52152*/        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)
/* 52161*/      0, // EndSwitchType
/* 52162*/    /*Scope*/ 28, /*->52191*/
/* 52163*/      OPC_RecordChild0, // #0 = $ws
/* 52164*/      OPC_RecordChild1, // #1 = $wt
/* 52165*/      OPC_SwitchType /*2 cases */, 10, MVT::v4f32,// ->52178
/* 52168*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52170*/        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)
/* 52178*/      /*SwitchType*/ 10, MVT::v2f64,// ->52190
/* 52180*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52182*/        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)
/* 52190*/      0, // EndSwitchType
/* 52191*/    0, /*End of Scope*/
/* 52192*/  /*SwitchOpcode*/ 28|128,1/*156*/, TARGET_VAL(ISD::ConstantFP),// ->52352
/* 52196*/    OPC_Scope, 62, /*->52260*/ // 2 children in Scope
/* 52198*/      OPC_CheckPredicate, 63, // Predicate_fpimm0
/* 52200*/      OPC_SwitchType /*2 cases */, 41, MVT::f32,// ->52244
/* 52203*/        OPC_Scope, 12, /*->52217*/ // 3 children in Scope
/* 52205*/          OPC_CheckPatternPredicate, 69, // (Subtarget->hasStandardEncoding())
/* 52207*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 52210*/          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] })
/* 52217*/        /*Scope*/ 12, /*->52230*/
/* 52218*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 52220*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 52223*/          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] })
/* 52230*/        /*Scope*/ 12, /*->52243*/
/* 52231*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 52233*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 52236*/          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] })
/* 52243*/        0, /*End of Scope*/
/* 52244*/      /*SwitchType*/ 13, MVT::f64,// ->52259
/* 52246*/        OPC_CheckPatternPredicate, 123, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (Subtarget->isGP64bit())
/* 52248*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 52252*/        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] })
/* 52259*/      0, // EndSwitchType
/* 52260*/    /*Scope*/ 90, /*->52351*/
/* 52261*/      OPC_CheckPredicate, 64, // Predicate_fpimm0neg
/* 52263*/      OPC_SwitchType /*2 cases */, 62, MVT::f32,// ->52328
/* 52266*/        OPC_Scope, 19, /*->52287*/ // 3 children in Scope
/* 52268*/          OPC_CheckPatternPredicate, 69, // (Subtarget->hasStandardEncoding())
/* 52270*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 52273*/          OPC_EmitNode1, TARGET_VAL(Mips::MTC1), 0,
                        MVT::f32, 1/*#Ops*/, 0,  // Results = #1
/* 52280*/          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] }))
/* 52287*/        /*Scope*/ 19, /*->52307*/
/* 52288*/          OPC_CheckPatternPredicate, 28, // (Subtarget->inMicroMipsMode()) && (!Subtarget->hasMips32r6())
/* 52290*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 52293*/          OPC_EmitNode1, TARGET_VAL(Mips::MTC1_MM), 0,
                        MVT::f32, 1/*#Ops*/, 0,  // Results = #1
/* 52300*/          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] }))
/* 52307*/        /*Scope*/ 19, /*->52327*/
/* 52308*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 52310*/          OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 52313*/          OPC_EmitNode1, TARGET_VAL(Mips::MTC1_MMR6), 0,
                        MVT::f32, 1/*#Ops*/, 0,  // Results = #1
/* 52320*/          OPC_MorphNodeTo1, TARGET_VAL(Mips::FNEG_S_MMR6), 0,
                        MVT::f32, 1/*#Ops*/, 1, 
                    // Src: (fpimm:{ *:[f32] })<<P:Predicate_fpimm0neg>> - Complexity = 4
                    // Dst: (FNEG_S_MMR6:{ *:[f32] } (MTC1_MMR6:{ *:[f32] } ZERO:{ *:[i32] }))
/* 52327*/        0, /*End of Scope*/
/* 52328*/      /*SwitchType*/ 20, MVT::f64,// ->52350
/* 52330*/        OPC_CheckPatternPredicate, 123, // (Subtarget->hasMips3()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (Subtarget->isGP64bit())
/* 52332*/        OPC_EmitRegister2, MVT::i64, TARGET_VAL(Mips::ZERO_64),
/* 52336*/        OPC_EmitNode1, TARGET_VAL(Mips::DMTC1), 0,
                      MVT::f64, 1/*#Ops*/, 0,  // Results = #1
/* 52343*/        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] }))
/* 52350*/      0, // EndSwitchType
/* 52351*/    0, /*End of Scope*/
/* 52352*/  /*SwitchOpcode*/ 93, TARGET_VAL(ISD::FABS),// ->52448
/* 52355*/    OPC_RecordChild0, // #0 = $fs
/* 52356*/    OPC_SwitchType /*4 cases */, 22, MVT::f32,// ->52381
/* 52359*/      OPC_Scope, 9, /*->52370*/ // 2 children in Scope
/* 52361*/        OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52363*/        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)
/* 52370*/      /*Scope*/ 9, /*->52380*/
/* 52371*/        OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52373*/        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)
/* 52380*/      0, /*End of Scope*/
/* 52381*/    /*SwitchType*/ 42, MVT::f64,// ->52425
/* 52383*/      OPC_Scope, 9, /*->52394*/ // 4 children in Scope
/* 52385*/        OPC_CheckPatternPredicate, 113, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52387*/        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)
/* 52394*/      /*Scope*/ 9, /*->52404*/
/* 52395*/        OPC_CheckPatternPredicate, 114, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52397*/        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)
/* 52404*/      /*Scope*/ 9, /*->52414*/
/* 52405*/        OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 52407*/        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)
/* 52414*/      /*Scope*/ 9, /*->52424*/
/* 52415*/        OPC_CheckPatternPredicate, 115, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 52417*/        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)
/* 52424*/      0, /*End of Scope*/
/* 52425*/    /*SwitchType*/ 9, MVT::v4f32,// ->52436
/* 52427*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52429*/      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)
/* 52436*/    /*SwitchType*/ 9, MVT::v2f64,// ->52447
/* 52438*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52440*/      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)
/* 52447*/    0, // EndSwitchType
/* 52448*/  /*SwitchOpcode*/ 93, TARGET_VAL(ISD::FSQRT),// ->52544
/* 52451*/    OPC_RecordChild0, // #0 = $fs
/* 52452*/    OPC_SwitchType /*4 cases */, 22, MVT::f32,// ->52477
/* 52455*/      OPC_Scope, 9, /*->52466*/ // 2 children in Scope
/* 52457*/        OPC_CheckPatternPredicate, 124, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52459*/        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)
/* 52466*/      /*Scope*/ 9, /*->52476*/
/* 52467*/        OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52469*/        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)
/* 52476*/      0, /*End of Scope*/
/* 52477*/    /*SwitchType*/ 42, MVT::f64,// ->52521
/* 52479*/      OPC_Scope, 9, /*->52490*/ // 4 children in Scope
/* 52481*/        OPC_CheckPatternPredicate, 19, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52483*/        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)
/* 52490*/      /*Scope*/ 9, /*->52500*/
/* 52491*/        OPC_CheckPatternPredicate, 18, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52493*/        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)
/* 52500*/      /*Scope*/ 9, /*->52510*/
/* 52501*/        OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 52503*/        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)
/* 52510*/      /*Scope*/ 9, /*->52520*/
/* 52511*/        OPC_CheckPatternPredicate, 115, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 52513*/        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)
/* 52520*/      0, /*End of Scope*/
/* 52521*/    /*SwitchType*/ 9, MVT::v4f32,// ->52532
/* 52523*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52525*/      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)
/* 52532*/    /*SwitchType*/ 9, MVT::v2f64,// ->52543
/* 52534*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52536*/      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)
/* 52543*/    0, // EndSwitchType
/* 52544*/  /*SwitchOpcode*/ 113, TARGET_VAL(ISD::FDIV),// ->52660
/* 52547*/    OPC_RecordChild0, // #0 = $fs
/* 52548*/    OPC_RecordChild1, // #1 = $ft
/* 52549*/    OPC_SwitchType /*4 cases */, 35, MVT::f32,// ->52587
/* 52552*/      OPC_Scope, 10, /*->52564*/ // 3 children in Scope
/* 52554*/        OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52556*/        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)
/* 52564*/      /*Scope*/ 10, /*->52575*/
/* 52565*/        OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52567*/        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)
/* 52575*/      /*Scope*/ 10, /*->52586*/
/* 52576*/        OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52578*/        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)
/* 52586*/      0, /*End of Scope*/
/* 52587*/    /*SwitchType*/ 46, MVT::f64,// ->52635
/* 52589*/      OPC_Scope, 10, /*->52601*/ // 4 children in Scope
/* 52591*/        OPC_CheckPatternPredicate, 113, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52593*/        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)
/* 52601*/      /*Scope*/ 10, /*->52612*/
/* 52602*/        OPC_CheckPatternPredicate, 114, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52604*/        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)
/* 52612*/      /*Scope*/ 10, /*->52623*/
/* 52613*/        OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 52615*/        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)
/* 52623*/      /*Scope*/ 10, /*->52634*/
/* 52624*/        OPC_CheckPatternPredicate, 115, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 52626*/        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)
/* 52634*/      0, /*End of Scope*/
/* 52635*/    /*SwitchType*/ 10, MVT::v4f32,// ->52647
/* 52637*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52639*/      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)
/* 52647*/    /*SwitchType*/ 10, MVT::v2f64,// ->52659
/* 52649*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52651*/      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)
/* 52659*/    0, // EndSwitchType
/* 52660*/  /*SwitchOpcode*/ 63|128,1/*191*/, TARGET_VAL(ISD::FMUL),// ->52855
/* 52664*/    OPC_Scope, 125, /*->52791*/ // 3 children in Scope
/* 52666*/      OPC_RecordChild0, // #0 = $fs
/* 52667*/      OPC_Scope, 88, /*->52757*/ // 2 children in Scope
/* 52669*/        OPC_RecordChild1, // #1 = $ft
/* 52670*/        OPC_SwitchType /*2 cases */, 35, MVT::f32,// ->52708
/* 52673*/          OPC_Scope, 10, /*->52685*/ // 3 children in Scope
/* 52675*/            OPC_CheckPatternPredicate, 16, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52677*/            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)
/* 52685*/          /*Scope*/ 10, /*->52696*/
/* 52686*/            OPC_CheckPatternPredicate, 17, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52688*/            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)
/* 52696*/          /*Scope*/ 10, /*->52707*/
/* 52697*/            OPC_CheckPatternPredicate, 62, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat())
/* 52699*/            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)
/* 52707*/          0, /*End of Scope*/
/* 52708*/        /*SwitchType*/ 46, MVT::f64,// ->52756
/* 52710*/          OPC_Scope, 10, /*->52722*/ // 4 children in Scope
/* 52712*/            OPC_CheckPatternPredicate, 113, // (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 52714*/            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)
/* 52722*/          /*Scope*/ 10, /*->52733*/
/* 52723*/            OPC_CheckPatternPredicate, 114, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 52725*/            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)
/* 52733*/          /*Scope*/ 10, /*->52744*/
/* 52734*/            OPC_CheckPatternPredicate, 20, // (Subtarget->inMicroMipsMode()) && (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit())
/* 52736*/            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)
/* 52744*/          /*Scope*/ 10, /*->52755*/
/* 52745*/            OPC_CheckPatternPredicate, 115, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat())
/* 52747*/            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)
/* 52755*/          0, /*End of Scope*/
/* 52756*/        0, // EndSwitchType
/* 52757*/      /*Scope*/ 32, /*->52790*/
/* 52758*/        OPC_MoveChild1,
/* 52759*/        OPC_CheckOpcode, TARGET_VAL(ISD::FEXP2),
/* 52762*/        OPC_RecordChild0, // #1 = $wt
/* 52763*/        OPC_MoveParent,
/* 52764*/        OPC_SwitchType /*2 cases */, 10, MVT::v4f32,// ->52777
/* 52767*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52769*/          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)
/* 52777*/        /*SwitchType*/ 10, MVT::v2f64,// ->52789
/* 52779*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52781*/          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)
/* 52789*/        0, // EndSwitchType
/* 52790*/      0, /*End of Scope*/
/* 52791*/    /*Scope*/ 33, /*->52825*/
/* 52792*/      OPC_MoveChild0,
/* 52793*/      OPC_CheckOpcode, TARGET_VAL(ISD::FEXP2),
/* 52796*/      OPC_RecordChild0, // #0 = $wt
/* 52797*/      OPC_MoveParent,
/* 52798*/      OPC_RecordChild1, // #1 = $ws
/* 52799*/      OPC_SwitchType /*2 cases */, 10, MVT::v4f32,// ->52812
/* 52802*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52804*/        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)
/* 52812*/      /*SwitchType*/ 10, MVT::v2f64,// ->52824
/* 52814*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52816*/        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)
/* 52824*/      0, // EndSwitchType
/* 52825*/    /*Scope*/ 28, /*->52854*/
/* 52826*/      OPC_RecordChild0, // #0 = $ws
/* 52827*/      OPC_RecordChild1, // #1 = $wt
/* 52828*/      OPC_SwitchType /*2 cases */, 10, MVT::v4f32,// ->52841
/* 52831*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52833*/        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)
/* 52841*/      /*SwitchType*/ 10, MVT::v2f64,// ->52853
/* 52843*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52845*/        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)
/* 52853*/      0, // EndSwitchType
/* 52854*/    0, /*End of Scope*/
/* 52855*/  /*SwitchOpcode*/ 26, TARGET_VAL(MipsISD::BuildPairF64),// ->52884
/* 52858*/    OPC_RecordChild0, // #0 = $lo
/* 52859*/    OPC_RecordChild1, // #1 = $hi
/* 52860*/    OPC_Scope, 10, /*->52872*/ // 2 children in Scope
/* 52862*/      OPC_CheckPatternPredicate, 85, // (!Subtarget->useSoftFloat()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMips16Mode())
/* 52864*/      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)
/* 52872*/    /*Scope*/ 10, /*->52883*/
/* 52873*/      OPC_CheckPatternPredicate, 86, // (Subtarget->isFP64bit()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMips16Mode())
/* 52875*/      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)
/* 52883*/    0, /*End of Scope*/
/* 52884*/  /*SwitchOpcode*/ 107, TARGET_VAL(ISD::SINT_TO_FP),// ->52994
/* 52887*/    OPC_RecordChild0, // #0 = $src
/* 52888*/    OPC_Scope, 37, /*->52927*/ // 4 children in Scope
/* 52890*/      OPC_CheckChild0Type, MVT::i32,
/* 52892*/      OPC_SwitchType /*2 cases */, 7, MVT::f32,// ->52902
/* 52895*/        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)
/* 52902*/      /*SwitchType*/ 22, MVT::f64,// ->52926
/* 52904*/        OPC_Scope, 9, /*->52915*/ // 2 children in Scope
/* 52906*/          OPC_CheckPatternPredicate, 125, // (!Subtarget->isFP64bit())
/* 52908*/          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)
/* 52915*/        /*Scope*/ 9, /*->52925*/
/* 52916*/          OPC_CheckPatternPredicate, 126, // (Subtarget->isFP64bit())
/* 52918*/          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)
/* 52925*/        0, /*End of Scope*/
/* 52926*/      0, // EndSwitchType
/* 52927*/    /*Scope*/ 37, /*->52965*/
/* 52928*/      OPC_CheckChild0Type, MVT::i64,
/* 52930*/      OPC_SwitchType /*2 cases */, 9, MVT::f64,// ->52942
/* 52933*/        OPC_CheckPatternPredicate, 126, // (Subtarget->isFP64bit())
/* 52935*/        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)
/* 52942*/      /*SwitchType*/ 20, MVT::f32,// ->52964
/* 52944*/        OPC_CheckPatternPredicate, 126, // (Subtarget->isFP64bit())
/* 52946*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCVT_S_L), 0,
                      MVT::f64, 1/*#Ops*/, 0,  // Results = #1
/* 52953*/        OPC_EmitInteger, MVT::i32, Mips::sub_lo,
/* 52956*/        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] })
/* 52964*/      0, // EndSwitchType
/* 52965*/    /*Scope*/ 13, /*->52979*/
/* 52966*/      OPC_CheckChild0Type, MVT::v4i32,
/* 52968*/      OPC_CheckType, MVT::v4f32,
/* 52970*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52972*/      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)
/* 52979*/    /*Scope*/ 13, /*->52993*/
/* 52980*/      OPC_CheckChild0Type, MVT::v2i64,
/* 52982*/      OPC_CheckType, MVT::v2f64,
/* 52984*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 52986*/      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)
/* 52993*/    0, /*End of Scope*/
/* 52994*/  /*SwitchOpcode*/ 111, TARGET_VAL(MipsISD::TruncIntFP),// ->53108
/* 52997*/    OPC_RecordChild0, // #0 = $src
/* 52998*/    OPC_Scope, 26, /*->53026*/ // 3 children in Scope
/* 53000*/      OPC_CheckChild0Type, MVT::f32,
/* 53002*/      OPC_SwitchType /*2 cases */, 9, MVT::f32,// ->53014
/* 53005*/        OPC_CheckPatternPredicate, 69, // (Subtarget->hasStandardEncoding())
/* 53007*/        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)
/* 53014*/      /*SwitchType*/ 9, MVT::f64,// ->53025
/* 53016*/        OPC_CheckPatternPredicate, 127, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit())
/* 53018*/        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)
/* 53025*/      0, // EndSwitchType
/* 53026*/    /*Scope*/ 59, /*->53086*/
/* 53027*/      OPC_CheckChild0Type, MVT::f64,
/* 53029*/      OPC_SwitchType /*2 cases */, 42, MVT::f32,// ->53074
/* 53032*/        OPC_Scope, 9, /*->53043*/ // 4 children in Scope
/* 53034*/          OPC_CheckPatternPredicate, 128, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 53036*/          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)
/* 53043*/        /*Scope*/ 9, /*->53053*/
/* 53044*/          OPC_CheckPatternPredicate, 127, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit())
/* 53046*/          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)
/* 53053*/        /*Scope*/ 9, /*->53063*/
/* 53054*/          OPC_CheckPatternPredicate, 39, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit()) && (!Subtarget->hasMips32r6())
/* 53056*/          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)
/* 53063*/        /*Scope*/ 9, /*->53073*/
/* 53064*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 53066*/          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)
/* 53073*/        0, /*End of Scope*/
/* 53074*/      /*SwitchType*/ 9, MVT::f64,// ->53085
/* 53076*/        OPC_CheckPatternPredicate, 127, // (Subtarget->hasMips2()) && (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit())
/* 53078*/        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)
/* 53085*/      0, // EndSwitchType
/* 53086*/    /*Scope*/ 20, /*->53107*/
/* 53087*/      OPC_CheckChild0Type, MVT::f16,
/* 53089*/      OPC_CheckType, MVT::f32,
/* 53091*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53093*/      OPC_EmitNode1, TARGET_VAL(Mips::MSA_FP_EXTEND_D_PSEUDO), 0,
                    MVT::f64, 1/*#Ops*/, 0,  // Results = #1
/* 53100*/      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))
/* 53107*/    0, /*End of Scope*/
/* 53108*/  /*SwitchOpcode*/ 10, TARGET_VAL(MipsISD::MTC1_D64),// ->53121
/* 53111*/    OPC_RecordChild0, // #0 = $src
/* 53112*/    OPC_CheckPatternPredicate, 129, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit())
/* 53114*/    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)
/* 53121*/  /*SwitchOpcode*/ 75, TARGET_VAL(ISD::FP_ROUND),// ->53199
/* 53124*/    OPC_RecordChild0, // #0 = $src
/* 53125*/    OPC_SwitchType /*2 cases */, 42, MVT::f32,// ->53170
/* 53128*/      OPC_Scope, 9, /*->53139*/ // 4 children in Scope
/* 53130*/        OPC_CheckPatternPredicate, 2, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 53132*/        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)
/* 53139*/      /*Scope*/ 9, /*->53149*/
/* 53140*/        OPC_CheckPatternPredicate, 1, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 53142*/        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)
/* 53149*/      /*Scope*/ 9, /*->53159*/
/* 53150*/        OPC_CheckPatternPredicate, 130, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit())
/* 53152*/        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)
/* 53159*/      /*Scope*/ 9, /*->53169*/
/* 53160*/        OPC_CheckPatternPredicate, 3, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit())
/* 53162*/        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)
/* 53169*/      0, /*End of Scope*/
/* 53170*/    /*SwitchType*/ 26, MVT::f16,// ->53198
/* 53172*/      OPC_Scope, 11, /*->53185*/ // 2 children in Scope
/* 53174*/        OPC_CheckChild0Type, MVT::f32,
/* 53176*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 53178*/        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)
/* 53185*/      /*Scope*/ 11, /*->53197*/
/* 53186*/        OPC_CheckChild0Type, MVT::f64,
/* 53188*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 53190*/        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)
/* 53197*/      0, /*End of Scope*/
/* 53198*/    0, // EndSwitchType
/* 53199*/  /*SwitchOpcode*/ 75, TARGET_VAL(ISD::FP_EXTEND),// ->53277
/* 53202*/    OPC_RecordChild0, // #0 = $src
/* 53203*/    OPC_SwitchType /*2 cases */, 59, MVT::f64,// ->53265
/* 53206*/      OPC_Scope, 44, /*->53252*/ // 2 children in Scope
/* 53208*/        OPC_CheckChild0Type, MVT::f32,
/* 53210*/        OPC_Scope, 9, /*->53221*/ // 4 children in Scope
/* 53212*/          OPC_CheckPatternPredicate, 2, // (Subtarget->hasStandardEncoding()) && (!Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 53214*/          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)
/* 53221*/        /*Scope*/ 9, /*->53231*/
/* 53222*/          OPC_CheckPatternPredicate, 1, // (Subtarget->hasStandardEncoding()) && (Subtarget->isFP64bit()) && (!Subtarget->inMicroMipsMode())
/* 53224*/          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)
/* 53231*/        /*Scope*/ 9, /*->53241*/
/* 53232*/          OPC_CheckPatternPredicate, 130, // (Subtarget->inMicroMipsMode()) && (Subtarget->isFP64bit())
/* 53234*/          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)
/* 53241*/        /*Scope*/ 9, /*->53251*/
/* 53242*/          OPC_CheckPatternPredicate, 3, // (Subtarget->inMicroMipsMode()) && (!Subtarget->isFP64bit())
/* 53244*/          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)
/* 53251*/        0, /*End of Scope*/
/* 53252*/      /*Scope*/ 11, /*->53264*/
/* 53253*/        OPC_CheckChild0Type, MVT::f16,
/* 53255*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 53257*/        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)
/* 53264*/      0, /*End of Scope*/
/* 53265*/    /*SwitchType*/ 9, MVT::f32,// ->53276
/* 53267*/      OPC_CheckPatternPredicate, 25, // (Subtarget->hasMSA())
/* 53269*/      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)
/* 53276*/    0, // EndSwitchType
/* 53277*/  /*SwitchOpcode*/ 33, TARGET_VAL(MipsISD::FSELECT),// ->53313
/* 53280*/    OPC_RecordChild0, // #0 = $fd_in
/* 53281*/    OPC_CheckChild0Type, MVT::f64,
/* 53283*/    OPC_RecordChild1, // #1 = $ft
/* 53284*/    OPC_RecordChild2, // #2 = $fs
/* 53285*/    OPC_CheckType, MVT::f64,
/* 53287*/    OPC_Scope, 11, /*->53300*/ // 2 children in Scope
/* 53289*/      OPC_CheckPatternPredicate, 40, // (Subtarget->hasMips32r6()) && (Subtarget->hasStandardEncoding()) && (!Subtarget->useSoftFloat()) && (!Subtarget->inMicroMipsMode())
/* 53291*/      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)
/* 53300*/    /*Scope*/ 11, /*->53312*/
/* 53301*/      OPC_CheckPatternPredicate, 15, // (Subtarget->hasMips32r6()) && (Subtarget->inMicroMipsMode())
/* 53303*/      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)
/* 53312*/    0, /*End of Scope*/
/* 53313*/  /*SwitchOpcode*/ 124|128,2/*380*/, TARGET_VAL(MipsISD::VSHF),// ->53697
/* 53317*/    OPC_Scope, 88, /*->53407*/ // 4 children in Scope
/* 53319*/      OPC_MoveChild0,
/* 53320*/      OPC_CheckOpcode, TARGET_VAL(ISD::BITCAST),
/* 53323*/      OPC_MoveChild0,
/* 53324*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 53327*/      OPC_MoveChild0,
/* 53328*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 53331*/      OPC_Scope, 36, /*->53369*/ // 2 children in Scope
/* 53333*/        OPC_RecordChild0, // #0 = $rt
/* 53334*/        OPC_CheckChild0Type, MVT::i32,
/* 53336*/        OPC_CheckChild1Same, 0,
/* 53338*/        OPC_CheckChild2Same, 0,
/* 53340*/        OPC_CheckChild3Same, 0,
/* 53342*/        OPC_MoveParent,
/* 53343*/        OPC_MoveChild1,
/* 53344*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 53347*/        OPC_MoveParent,
/* 53348*/        OPC_CheckType, MVT::v4i32,
/* 53350*/        OPC_MoveParent,
/* 53351*/        OPC_CheckType, MVT::v2i64,
/* 53353*/        OPC_MoveParent,
/* 53354*/        OPC_RecordChild1, // #1 = $ws
/* 53355*/        OPC_CheckChild2Same, 1,
/* 53357*/        OPC_CheckType, MVT::v2i64,
/* 53359*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53361*/        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)
/* 53369*/      /*Scope*/ 36, /*->53406*/
/* 53370*/        OPC_MoveParent,
/* 53371*/        OPC_MoveChild1,
/* 53372*/        OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 53375*/        OPC_RecordChild0, // #0 = $rt
/* 53376*/        OPC_CheckChild0Type, MVT::i32,
/* 53378*/        OPC_CheckChild1Same, 0,
/* 53380*/        OPC_CheckChild2Same, 0,
/* 53382*/        OPC_CheckChild3Same, 0,
/* 53384*/        OPC_MoveParent,
/* 53385*/        OPC_CheckType, MVT::v4i32,
/* 53387*/        OPC_MoveParent,
/* 53388*/        OPC_CheckType, MVT::v2i64,
/* 53390*/        OPC_MoveParent,
/* 53391*/        OPC_RecordChild1, // #1 = $ws
/* 53392*/        OPC_CheckChild2Same, 1,
/* 53394*/        OPC_CheckType, MVT::v2i64,
/* 53396*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53398*/        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)
/* 53406*/      0, /*End of Scope*/
/* 53407*/    /*Scope*/ 83, /*->53491*/
/* 53408*/      OPC_RecordChild0, // #0 = $n
/* 53409*/      OPC_SwitchType /*4 cases */, 18, MVT::v16i8,// ->53430
/* 53412*/        OPC_CheckChild0Type, MVT::v16i8,
/* 53414*/        OPC_RecordChild1, // #1 = $ws
/* 53415*/        OPC_CheckChild2Same, 1,
/* 53417*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53419*/        OPC_CheckComplexPat, /*CP*/27, /*#*/0, // selectVSplatUimm4:$n #2
/* 53422*/        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)
/* 53430*/      /*SwitchType*/ 18, MVT::v8i16,// ->53450
/* 53432*/        OPC_CheckChild0Type, MVT::v8i16,
/* 53434*/        OPC_RecordChild1, // #1 = $ws
/* 53435*/        OPC_CheckChild2Same, 1,
/* 53437*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53439*/        OPC_CheckComplexPat, /*CP*/28, /*#*/0, // selectVSplatUimm3:$n #2
/* 53442*/        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)
/* 53450*/      /*SwitchType*/ 18, MVT::v4i32,// ->53470
/* 53452*/        OPC_CheckChild0Type, MVT::v4i32,
/* 53454*/        OPC_RecordChild1, // #1 = $ws
/* 53455*/        OPC_CheckChild2Same, 1,
/* 53457*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53459*/        OPC_CheckComplexPat, /*CP*/29, /*#*/0, // selectVSplatUimm2:$n #2
/* 53462*/        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)
/* 53470*/      /*SwitchType*/ 18, MVT::v2i64,// ->53490
/* 53472*/        OPC_CheckChild0Type, MVT::v2i64,
/* 53474*/        OPC_RecordChild1, // #1 = $ws
/* 53475*/        OPC_CheckChild2Same, 1,
/* 53477*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53479*/        OPC_CheckComplexPat, /*CP*/30, /*#*/0, // selectVSplatUimm1:$n #2
/* 53482*/        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)
/* 53490*/      0, // EndSwitchType
/* 53491*/    /*Scope*/ 3|128,1/*131*/, /*->53624*/
/* 53493*/      OPC_MoveChild0,
/* 53494*/      OPC_CheckOpcode, TARGET_VAL(ISD::BUILD_VECTOR),
/* 53497*/      OPC_RecordChild0, // #0 = $rt
/* 53498*/      OPC_CheckChild0Type, MVT::i32,
/* 53500*/      OPC_CheckChild1Same, 0,
/* 53502*/      OPC_CheckChild2Same, 0,
/* 53504*/      OPC_CheckChild3Same, 0,
/* 53506*/      OPC_Scope, 96, /*->53604*/ // 2 children in Scope
/* 53508*/        OPC_MoveChild4,
/* 53509*/        OPC_CheckSame, 0,
/* 53511*/        OPC_MoveParent,
/* 53512*/        OPC_MoveChild5,
/* 53513*/        OPC_CheckSame, 0,
/* 53515*/        OPC_MoveParent,
/* 53516*/        OPC_MoveChild6,
/* 53517*/        OPC_CheckSame, 0,
/* 53519*/        OPC_MoveParent,
/* 53520*/        OPC_MoveChild7,
/* 53521*/        OPC_CheckSame, 0,
/* 53523*/        OPC_MoveParent,
/* 53524*/        OPC_Scope, 58, /*->53584*/ // 2 children in Scope
/* 53526*/          OPC_MoveChild, 8,
/* 53528*/          OPC_CheckSame, 0,
/* 53530*/          OPC_MoveParent,
/* 53531*/          OPC_MoveChild, 9,
/* 53533*/          OPC_CheckSame, 0,
/* 53535*/          OPC_MoveParent,
/* 53536*/          OPC_MoveChild, 10,
/* 53538*/          OPC_CheckSame, 0,
/* 53540*/          OPC_MoveParent,
/* 53541*/          OPC_MoveChild, 11,
/* 53543*/          OPC_CheckSame, 0,
/* 53545*/          OPC_MoveParent,
/* 53546*/          OPC_MoveChild, 12,
/* 53548*/          OPC_CheckSame, 0,
/* 53550*/          OPC_MoveParent,
/* 53551*/          OPC_MoveChild, 13,
/* 53553*/          OPC_CheckSame, 0,
/* 53555*/          OPC_MoveParent,
/* 53556*/          OPC_MoveChild, 14,
/* 53558*/          OPC_CheckSame, 0,
/* 53560*/          OPC_MoveParent,
/* 53561*/          OPC_MoveChild, 15,
/* 53563*/          OPC_CheckSame, 0,
/* 53565*/          OPC_MoveParent,
/* 53566*/          OPC_CheckType, MVT::v16i8,
/* 53568*/          OPC_MoveParent,
/* 53569*/          OPC_RecordChild1, // #1 = $ws
/* 53570*/          OPC_CheckChild2Same, 1,
/* 53572*/          OPC_CheckType, MVT::v16i8,
/* 53574*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53576*/          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)
/* 53584*/        /*Scope*/ 18, /*->53603*/
/* 53585*/          OPC_CheckType, MVT::v8i16,
/* 53587*/          OPC_MoveParent,
/* 53588*/          OPC_RecordChild1, // #1 = $ws
/* 53589*/          OPC_CheckChild2Same, 1,
/* 53591*/          OPC_CheckType, MVT::v8i16,
/* 53593*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53595*/          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)
/* 53603*/        0, /*End of Scope*/
/* 53604*/      /*Scope*/ 18, /*->53623*/
/* 53605*/        OPC_CheckType, MVT::v4i32,
/* 53607*/        OPC_MoveParent,
/* 53608*/        OPC_RecordChild1, // #1 = $ws
/* 53609*/        OPC_CheckChild2Same, 1,
/* 53611*/        OPC_CheckType, MVT::v4i32,
/* 53613*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53615*/        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)
/* 53623*/      0, /*End of Scope*/
/* 53624*/    /*Scope*/ 71, /*->53696*/
/* 53625*/      OPC_RecordChild0, // #0 = $wd_in
/* 53626*/      OPC_SwitchType /*4 cases */, 15, MVT::v16i8,// ->53644
/* 53629*/        OPC_CheckChild0Type, MVT::v16i8,
/* 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_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)
/* 53644*/      /*SwitchType*/ 15, MVT::v8i16,// ->53661
/* 53646*/        OPC_CheckChild0Type, MVT::v8i16,
/* 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_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)
/* 53661*/      /*SwitchType*/ 15, MVT::v4i32,// ->53678
/* 53663*/        OPC_CheckChild0Type, MVT::v4i32,
/* 53665*/        OPC_RecordChild1, // #1 = $ws
/* 53666*/        OPC_RecordChild2, // #2 = $wt
/* 53667*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53669*/        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)
/* 53678*/      /*SwitchType*/ 15, MVT::v2i64,// ->53695
/* 53680*/        OPC_CheckChild0Type, MVT::v2i64,
/* 53682*/        OPC_RecordChild1, // #1 = $ws
/* 53683*/        OPC_RecordChild2, // #2 = $wt
/* 53684*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53686*/        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)
/* 53695*/      0, // EndSwitchType
/* 53696*/    0, /*End of Scope*/
/* 53697*/  /*SwitchOpcode*/ 4|128,1/*132*/, TARGET_VAL(MipsISD::INSVE),// ->53833
/* 53701*/    OPC_RecordChild0, // #0 = $wd_in
/* 53702*/    OPC_RecordChild1, // #1 = $n
/* 53703*/    OPC_MoveChild1,
/* 53704*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 53707*/    OPC_Scope, 30, /*->53739*/ // 4 children in Scope
/* 53709*/      OPC_CheckPredicate, 31, // Predicate_immZExt4
/* 53711*/      OPC_MoveParent,
/* 53712*/      OPC_RecordChild2, // #2 = $ws
/* 53713*/      OPC_RecordChild3, // #3 = $n2
/* 53714*/      OPC_MoveChild3,
/* 53715*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 53718*/      OPC_CheckPredicate, 22, // Predicate_immz
/* 53720*/      OPC_MoveParent,
/* 53721*/      OPC_CheckType, MVT::v16i8,
/* 53723*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53725*/      OPC_EmitConvertToTarget, 1,
/* 53727*/      OPC_EmitConvertToTarget, 3,
/* 53729*/      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)
/* 53739*/    /*Scope*/ 30, /*->53770*/
/* 53740*/      OPC_CheckPredicate, 32, // Predicate_immZExt3
/* 53742*/      OPC_MoveParent,
/* 53743*/      OPC_RecordChild2, // #2 = $ws
/* 53744*/      OPC_RecordChild3, // #3 = $n2
/* 53745*/      OPC_MoveChild3,
/* 53746*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 53749*/      OPC_CheckPredicate, 22, // Predicate_immz
/* 53751*/      OPC_MoveParent,
/* 53752*/      OPC_CheckType, MVT::v8i16,
/* 53754*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53756*/      OPC_EmitConvertToTarget, 1,
/* 53758*/      OPC_EmitConvertToTarget, 3,
/* 53760*/      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)
/* 53770*/    /*Scope*/ 30, /*->53801*/
/* 53771*/      OPC_CheckPredicate, 33, // Predicate_immZExt2
/* 53773*/      OPC_MoveParent,
/* 53774*/      OPC_RecordChild2, // #2 = $ws
/* 53775*/      OPC_RecordChild3, // #3 = $n2
/* 53776*/      OPC_MoveChild3,
/* 53777*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 53780*/      OPC_CheckPredicate, 22, // Predicate_immz
/* 53782*/      OPC_MoveParent,
/* 53783*/      OPC_CheckType, MVT::v4i32,
/* 53785*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53787*/      OPC_EmitConvertToTarget, 1,
/* 53789*/      OPC_EmitConvertToTarget, 3,
/* 53791*/      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)
/* 53801*/    /*Scope*/ 30, /*->53832*/
/* 53802*/      OPC_CheckPredicate, 37, // Predicate_immZExt1
/* 53804*/      OPC_MoveParent,
/* 53805*/      OPC_RecordChild2, // #2 = $ws
/* 53806*/      OPC_RecordChild3, // #3 = $n2
/* 53807*/      OPC_MoveChild3,
/* 53808*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 53811*/      OPC_CheckPredicate, 22, // Predicate_immz
/* 53813*/      OPC_MoveParent,
/* 53814*/      OPC_CheckType, MVT::v2i64,
/* 53816*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53818*/      OPC_EmitConvertToTarget, 1,
/* 53820*/      OPC_EmitConvertToTarget, 3,
/* 53822*/      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)
/* 53832*/    0, /*End of Scope*/
/* 53833*/  /*SwitchOpcode*/ 64|128,2/*320*/, TARGET_VAL(ISD::VSELECT),// ->54157
/* 53837*/    OPC_RecordChild0, // #0 = $m
/* 53838*/    OPC_Scope, 36, /*->53876*/ // 9 children in Scope
/* 53840*/      OPC_RecordChild1, // #1 = $ws
/* 53841*/      OPC_RecordChild2, // #2 = $wd_in
/* 53842*/      OPC_SwitchType /*2 cases */, 14, MVT::v16i8,// ->53859
/* 53845*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53847*/        OPC_CheckComplexPat, /*CP*/31, /*#*/0, // selectVSplatMaskL:$m #3
/* 53850*/        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)
/* 53859*/      /*SwitchType*/ 14, MVT::v8i16,// ->53875
/* 53861*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53863*/        OPC_CheckComplexPat, /*CP*/32, /*#*/0, // selectVSplatMaskL:$m #3
/* 53866*/        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)
/* 53875*/      0, // EndSwitchType
/* 53876*/    /*Scope*/ 20, /*->53897*/
/* 53877*/      OPC_CheckChild0Type, MVT::v4i32,
/* 53879*/      OPC_RecordChild1, // #1 = $ws
/* 53880*/      OPC_RecordChild2, // #2 = $wd_in
/* 53881*/      OPC_CheckType, MVT::v4i32,
/* 53883*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53885*/      OPC_CheckComplexPat, /*CP*/33, /*#*/0, // selectVSplatMaskL:$m #3
/* 53888*/      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)
/* 53897*/    /*Scope*/ 20, /*->53918*/
/* 53898*/      OPC_CheckChild0Type, MVT::v2i64,
/* 53900*/      OPC_RecordChild1, // #1 = $ws
/* 53901*/      OPC_RecordChild2, // #2 = $wd_in
/* 53902*/      OPC_CheckType, MVT::v2i64,
/* 53904*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53906*/      OPC_CheckComplexPat, /*CP*/34, /*#*/0, // selectVSplatMaskL:$m #3
/* 53909*/      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)
/* 53918*/    /*Scope*/ 36, /*->53955*/
/* 53919*/      OPC_RecordChild1, // #1 = $ws
/* 53920*/      OPC_RecordChild2, // #2 = $wd_in
/* 53921*/      OPC_SwitchType /*2 cases */, 14, MVT::v16i8,// ->53938
/* 53924*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53926*/        OPC_CheckComplexPat, /*CP*/35, /*#*/0, // selectVSplatMaskR:$m #3
/* 53929*/        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)
/* 53938*/      /*SwitchType*/ 14, MVT::v8i16,// ->53954
/* 53940*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53942*/        OPC_CheckComplexPat, /*CP*/36, /*#*/0, // selectVSplatMaskR:$m #3
/* 53945*/        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)
/* 53954*/      0, // EndSwitchType
/* 53955*/    /*Scope*/ 20, /*->53976*/
/* 53956*/      OPC_CheckChild0Type, MVT::v4i32,
/* 53958*/      OPC_RecordChild1, // #1 = $ws
/* 53959*/      OPC_RecordChild2, // #2 = $wd_in
/* 53960*/      OPC_CheckType, MVT::v4i32,
/* 53962*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53964*/      OPC_CheckComplexPat, /*CP*/37, /*#*/0, // selectVSplatMaskR:$m #3
/* 53967*/      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)
/* 53976*/    /*Scope*/ 20, /*->53997*/
/* 53977*/      OPC_CheckChild0Type, MVT::v2i64,
/* 53979*/      OPC_RecordChild1, // #1 = $ws
/* 53980*/      OPC_RecordChild2, // #2 = $wd_in
/* 53981*/      OPC_CheckType, MVT::v2i64,
/* 53983*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 53985*/      OPC_CheckComplexPat, /*CP*/38, /*#*/0, // selectVSplatMaskR:$m #3
/* 53988*/      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)
/* 53997*/    /*Scope*/ 92, /*->54090*/
/* 53998*/      OPC_RecordChild1, // #1 = $ws
/* 53999*/      OPC_RecordChild2, // #2 = $wd_in
/* 54000*/      OPC_SwitchType /*2 cases */, 73, MVT::v16i8,// ->54076
/* 54003*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54005*/        OPC_Scope, 25, /*->54032*/ // 5 children in Scope
/* 54007*/          OPC_CheckComplexPat, /*CP*/14, /*#*/0, // selectVSplatUimm8:$u8 #3
/* 54010*/          OPC_Scope, 9, /*->54021*/ // 2 children in Scope
/* 54012*/            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)
/* 54021*/          /*Scope*/ 9, /*->54031*/
/* 54022*/            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)
/* 54031*/          0, /*End of Scope*/
/* 54032*/        /*Scope*/ 12, /*->54045*/
/* 54033*/          OPC_CheckComplexPat, /*CP*/14, /*#*/1, // selectVSplatUimm8:$u8 #3
/* 54036*/          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)
/* 54045*/        /*Scope*/ 9, /*->54055*/
/* 54046*/          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)
/* 54055*/        /*Scope*/ 9, /*->54065*/
/* 54056*/          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)
/* 54065*/        /*Scope*/ 9, /*->54075*/
/* 54066*/          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)
/* 54075*/        0, /*End of Scope*/
/* 54076*/      /*SwitchType*/ 11, MVT::v8i16,// ->54089
/* 54078*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54080*/        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)
/* 54089*/      0, // EndSwitchType
/* 54090*/    /*Scope*/ 32, /*->54123*/
/* 54091*/      OPC_CheckChild0Type, MVT::v4i32,
/* 54093*/      OPC_RecordChild1, // #1 = $wt
/* 54094*/      OPC_RecordChild2, // #2 = $ws
/* 54095*/      OPC_SwitchType /*2 cases */, 11, MVT::v4i32,// ->54109
/* 54098*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54100*/        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)
/* 54109*/      /*SwitchType*/ 11, MVT::v4f32,// ->54122
/* 54111*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54113*/        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)
/* 54122*/      0, // EndSwitchType
/* 54123*/    /*Scope*/ 32, /*->54156*/
/* 54124*/      OPC_CheckChild0Type, MVT::v2i64,
/* 54126*/      OPC_RecordChild1, // #1 = $wt
/* 54127*/      OPC_RecordChild2, // #2 = $ws
/* 54128*/      OPC_SwitchType /*2 cases */, 11, MVT::v2i64,// ->54142
/* 54131*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54133*/        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)
/* 54142*/      /*SwitchType*/ 11, MVT::v2f64,// ->54155
/* 54144*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54146*/        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)
/* 54155*/      0, // EndSwitchType
/* 54156*/    0, /*End of Scope*/
/* 54157*/  /*SwitchOpcode*/ 32|128,1/*160*/, TARGET_VAL(ISD::SMAX),// ->54321
/* 54161*/    OPC_RecordChild0, // #0 = $ws
/* 54162*/    OPC_RecordChild1, // #1 = $imm
/* 54163*/    OPC_SwitchType /*4 cases */, 37, MVT::v16i8,// ->54203
/* 54166*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54168*/      OPC_Scope, 11, /*->54181*/ // 3 children in Scope
/* 54170*/        OPC_CheckComplexPat, /*CP*/20, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54173*/        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)
/* 54181*/      /*Scope*/ 11, /*->54193*/
/* 54182*/        OPC_CheckComplexPat, /*CP*/20, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54185*/        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)
/* 54193*/      /*Scope*/ 8, /*->54202*/
/* 54194*/        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)
/* 54202*/      0, /*End of Scope*/
/* 54203*/    /*SwitchType*/ 37, MVT::v8i16,// ->54242
/* 54205*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54207*/      OPC_Scope, 11, /*->54220*/ // 3 children in Scope
/* 54209*/        OPC_CheckComplexPat, /*CP*/21, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54212*/        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)
/* 54220*/      /*Scope*/ 11, /*->54232*/
/* 54221*/        OPC_CheckComplexPat, /*CP*/21, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54224*/        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)
/* 54232*/      /*Scope*/ 8, /*->54241*/
/* 54233*/        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)
/* 54241*/      0, /*End of Scope*/
/* 54242*/    /*SwitchType*/ 37, MVT::v4i32,// ->54281
/* 54244*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54246*/      OPC_Scope, 11, /*->54259*/ // 3 children in Scope
/* 54248*/        OPC_CheckComplexPat, /*CP*/22, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54251*/        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)
/* 54259*/      /*Scope*/ 11, /*->54271*/
/* 54260*/        OPC_CheckComplexPat, /*CP*/22, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54263*/        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)
/* 54271*/      /*Scope*/ 8, /*->54280*/
/* 54272*/        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)
/* 54280*/      0, /*End of Scope*/
/* 54281*/    /*SwitchType*/ 37, MVT::v2i64,// ->54320
/* 54283*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54285*/      OPC_Scope, 11, /*->54298*/ // 3 children in Scope
/* 54287*/        OPC_CheckComplexPat, /*CP*/23, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54290*/        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)
/* 54298*/      /*Scope*/ 11, /*->54310*/
/* 54299*/        OPC_CheckComplexPat, /*CP*/23, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54302*/        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)
/* 54310*/      /*Scope*/ 8, /*->54319*/
/* 54311*/        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)
/* 54319*/      0, /*End of Scope*/
/* 54320*/    0, // EndSwitchType
/* 54321*/  /*SwitchOpcode*/ 32|128,1/*160*/, TARGET_VAL(ISD::UMAX),// ->54485
/* 54325*/    OPC_RecordChild0, // #0 = $ws
/* 54326*/    OPC_RecordChild1, // #1 = $imm
/* 54327*/    OPC_SwitchType /*4 cases */, 37, MVT::v16i8,// ->54367
/* 54330*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54332*/      OPC_Scope, 11, /*->54345*/ // 3 children in Scope
/* 54334*/        OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54337*/        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)
/* 54345*/      /*Scope*/ 11, /*->54357*/
/* 54346*/        OPC_CheckComplexPat, /*CP*/16, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54349*/        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)
/* 54357*/      /*Scope*/ 8, /*->54366*/
/* 54358*/        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)
/* 54366*/      0, /*End of Scope*/
/* 54367*/    /*SwitchType*/ 37, MVT::v8i16,// ->54406
/* 54369*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54371*/      OPC_Scope, 11, /*->54384*/ // 3 children in Scope
/* 54373*/        OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54376*/        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)
/* 54384*/      /*Scope*/ 11, /*->54396*/
/* 54385*/        OPC_CheckComplexPat, /*CP*/17, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54388*/        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)
/* 54396*/      /*Scope*/ 8, /*->54405*/
/* 54397*/        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)
/* 54405*/      0, /*End of Scope*/
/* 54406*/    /*SwitchType*/ 37, MVT::v4i32,// ->54445
/* 54408*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54410*/      OPC_Scope, 11, /*->54423*/ // 3 children in Scope
/* 54412*/        OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54415*/        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)
/* 54423*/      /*Scope*/ 11, /*->54435*/
/* 54424*/        OPC_CheckComplexPat, /*CP*/18, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54427*/        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)
/* 54435*/      /*Scope*/ 8, /*->54444*/
/* 54436*/        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)
/* 54444*/      0, /*End of Scope*/
/* 54445*/    /*SwitchType*/ 37, MVT::v2i64,// ->54484
/* 54447*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54449*/      OPC_Scope, 11, /*->54462*/ // 3 children in Scope
/* 54451*/        OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54454*/        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)
/* 54462*/      /*Scope*/ 11, /*->54474*/
/* 54463*/        OPC_CheckComplexPat, /*CP*/19, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54466*/        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)
/* 54474*/      /*Scope*/ 8, /*->54483*/
/* 54475*/        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)
/* 54483*/      0, /*End of Scope*/
/* 54484*/    0, // EndSwitchType
/* 54485*/  /*SwitchOpcode*/ 32|128,1/*160*/, TARGET_VAL(ISD::SMIN),// ->54649
/* 54489*/    OPC_RecordChild0, // #0 = $ws
/* 54490*/    OPC_RecordChild1, // #1 = $imm
/* 54491*/    OPC_SwitchType /*4 cases */, 37, MVT::v16i8,// ->54531
/* 54494*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54496*/      OPC_Scope, 11, /*->54509*/ // 3 children in Scope
/* 54498*/        OPC_CheckComplexPat, /*CP*/20, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54501*/        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)
/* 54509*/      /*Scope*/ 11, /*->54521*/
/* 54510*/        OPC_CheckComplexPat, /*CP*/20, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54513*/        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)
/* 54521*/      /*Scope*/ 8, /*->54530*/
/* 54522*/        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)
/* 54530*/      0, /*End of Scope*/
/* 54531*/    /*SwitchType*/ 37, MVT::v8i16,// ->54570
/* 54533*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54535*/      OPC_Scope, 11, /*->54548*/ // 3 children in Scope
/* 54537*/        OPC_CheckComplexPat, /*CP*/21, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54540*/        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)
/* 54548*/      /*Scope*/ 11, /*->54560*/
/* 54549*/        OPC_CheckComplexPat, /*CP*/21, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54552*/        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)
/* 54560*/      /*Scope*/ 8, /*->54569*/
/* 54561*/        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)
/* 54569*/      0, /*End of Scope*/
/* 54570*/    /*SwitchType*/ 37, MVT::v4i32,// ->54609
/* 54572*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54574*/      OPC_Scope, 11, /*->54587*/ // 3 children in Scope
/* 54576*/        OPC_CheckComplexPat, /*CP*/22, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54579*/        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)
/* 54587*/      /*Scope*/ 11, /*->54599*/
/* 54588*/        OPC_CheckComplexPat, /*CP*/22, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54591*/        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)
/* 54599*/      /*Scope*/ 8, /*->54608*/
/* 54600*/        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)
/* 54608*/      0, /*End of Scope*/
/* 54609*/    /*SwitchType*/ 37, MVT::v2i64,// ->54648
/* 54611*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54613*/      OPC_Scope, 11, /*->54626*/ // 3 children in Scope
/* 54615*/        OPC_CheckComplexPat, /*CP*/23, /*#*/1, // selectVSplatSimm5:$imm #2
/* 54618*/        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)
/* 54626*/      /*Scope*/ 11, /*->54638*/
/* 54627*/        OPC_CheckComplexPat, /*CP*/23, /*#*/0, // selectVSplatSimm5:$imm #2
/* 54630*/        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)
/* 54638*/      /*Scope*/ 8, /*->54647*/
/* 54639*/        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)
/* 54647*/      0, /*End of Scope*/
/* 54648*/    0, // EndSwitchType
/* 54649*/  /*SwitchOpcode*/ 32|128,1/*160*/, TARGET_VAL(ISD::UMIN),// ->54813
/* 54653*/    OPC_RecordChild0, // #0 = $ws
/* 54654*/    OPC_RecordChild1, // #1 = $imm
/* 54655*/    OPC_SwitchType /*4 cases */, 37, MVT::v16i8,// ->54695
/* 54658*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54660*/      OPC_Scope, 11, /*->54673*/ // 3 children in Scope
/* 54662*/        OPC_CheckComplexPat, /*CP*/16, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54665*/        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)
/* 54673*/      /*Scope*/ 11, /*->54685*/
/* 54674*/        OPC_CheckComplexPat, /*CP*/16, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54677*/        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)
/* 54685*/      /*Scope*/ 8, /*->54694*/
/* 54686*/        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)
/* 54694*/      0, /*End of Scope*/
/* 54695*/    /*SwitchType*/ 37, MVT::v8i16,// ->54734
/* 54697*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54699*/      OPC_Scope, 11, /*->54712*/ // 3 children in Scope
/* 54701*/        OPC_CheckComplexPat, /*CP*/17, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54704*/        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)
/* 54712*/      /*Scope*/ 11, /*->54724*/
/* 54713*/        OPC_CheckComplexPat, /*CP*/17, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54716*/        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)
/* 54724*/      /*Scope*/ 8, /*->54733*/
/* 54725*/        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)
/* 54733*/      0, /*End of Scope*/
/* 54734*/    /*SwitchType*/ 37, MVT::v4i32,// ->54773
/* 54736*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54738*/      OPC_Scope, 11, /*->54751*/ // 3 children in Scope
/* 54740*/        OPC_CheckComplexPat, /*CP*/18, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54743*/        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)
/* 54751*/      /*Scope*/ 11, /*->54763*/
/* 54752*/        OPC_CheckComplexPat, /*CP*/18, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54755*/        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)
/* 54763*/      /*Scope*/ 8, /*->54772*/
/* 54764*/        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)
/* 54772*/      0, /*End of Scope*/
/* 54773*/    /*SwitchType*/ 37, MVT::v2i64,// ->54812
/* 54775*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54777*/      OPC_Scope, 11, /*->54790*/ // 3 children in Scope
/* 54779*/        OPC_CheckComplexPat, /*CP*/19, /*#*/1, // selectVSplatUimm5:$imm #2
/* 54782*/        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)
/* 54790*/      /*Scope*/ 11, /*->54802*/
/* 54791*/        OPC_CheckComplexPat, /*CP*/19, /*#*/0, // selectVSplatUimm5:$imm #2
/* 54794*/        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)
/* 54802*/      /*Scope*/ 8, /*->54811*/
/* 54803*/        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)
/* 54811*/      0, /*End of Scope*/
/* 54812*/    0, // EndSwitchType
/* 54813*/  /*SwitchOpcode*/ 79, TARGET_VAL(MipsISD::VNOR),// ->54895
/* 54816*/    OPC_RecordChild0, // #0 = $ws
/* 54817*/    OPC_RecordChild1, // #1 = $u8
/* 54818*/    OPC_SwitchType /*4 cases */, 37, MVT::v16i8,// ->54858
/* 54821*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54823*/      OPC_Scope, 11, /*->54836*/ // 3 children in Scope
/* 54825*/        OPC_CheckComplexPat, /*CP*/14, /*#*/1, // selectVSplatUimm8:$u8 #2
/* 54828*/        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)
/* 54836*/      /*Scope*/ 11, /*->54848*/
/* 54837*/        OPC_CheckComplexPat, /*CP*/14, /*#*/0, // selectVSplatUimm8:$u8 #2
/* 54840*/        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)
/* 54848*/      /*Scope*/ 8, /*->54857*/
/* 54849*/        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)
/* 54857*/      0, /*End of Scope*/
/* 54858*/    /*SwitchType*/ 10, MVT::v8i16,// ->54870
/* 54860*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54862*/      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)
/* 54870*/    /*SwitchType*/ 10, MVT::v4i32,// ->54882
/* 54872*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54874*/      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)
/* 54882*/    /*SwitchType*/ 10, MVT::v2i64,// ->54894
/* 54884*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54886*/      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)
/* 54894*/    0, // EndSwitchType
/* 54895*/  /*SwitchOpcode*/ 90|128,2/*346*/, TARGET_VAL(ISD::INSERT_VECTOR_ELT),// ->55245
/* 54899*/    OPC_RecordChild0, // #0 = $wd_in
/* 54900*/    OPC_RecordChild1, // #1 = $rs
/* 54901*/    OPC_Scope, 29|128,1/*157*/, /*->55061*/ // 4 children in Scope
/* 54904*/      OPC_CheckChild1Type, MVT::i32,
/* 54906*/      OPC_RecordChild2, // #2 = $n
/* 54907*/      OPC_Scope, 63, /*->54972*/ // 3 children in Scope
/* 54909*/        OPC_MoveChild2,
/* 54910*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 54913*/        OPC_Scope, 18, /*->54933*/ // 3 children in Scope
/* 54915*/          OPC_CheckPredicate, 31, // Predicate_immZExt4Ptr
/* 54917*/          OPC_MoveParent,
/* 54918*/          OPC_CheckType, MVT::v16i8,
/* 54920*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54922*/          OPC_EmitConvertToTarget, 2,
/* 54924*/          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)
/* 54933*/        /*Scope*/ 18, /*->54952*/
/* 54934*/          OPC_CheckPredicate, 32, // Predicate_immZExt3Ptr
/* 54936*/          OPC_MoveParent,
/* 54937*/          OPC_CheckType, MVT::v8i16,
/* 54939*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54941*/          OPC_EmitConvertToTarget, 2,
/* 54943*/          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)
/* 54952*/        /*Scope*/ 18, /*->54971*/
/* 54953*/          OPC_CheckPredicate, 33, // Predicate_immZExt2Ptr
/* 54955*/          OPC_MoveParent,
/* 54956*/          OPC_CheckType, MVT::v4i32,
/* 54958*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54960*/          OPC_EmitConvertToTarget, 2,
/* 54962*/          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)
/* 54971*/        0, /*End of Scope*/
/* 54972*/      /*Scope*/ 43, /*->55016*/
/* 54973*/        OPC_CheckChild2Type, MVT::i32,
/* 54975*/        OPC_SwitchType /*3 cases */, 11, MVT::v16i8,// ->54989
/* 54978*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54980*/          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)
/* 54989*/        /*SwitchType*/ 11, MVT::v8i16,// ->55002
/* 54991*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 54993*/          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)
/* 55002*/        /*SwitchType*/ 11, MVT::v4i32,// ->55015
/* 55004*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55006*/          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)
/* 55015*/        0, // EndSwitchType
/* 55016*/      /*Scope*/ 43, /*->55060*/
/* 55017*/        OPC_CheckChild2Type, MVT::i64,
/* 55019*/        OPC_SwitchType /*3 cases */, 11, MVT::v16i8,// ->55033
/* 55022*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55024*/          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)
/* 55033*/        /*SwitchType*/ 11, MVT::v8i16,// ->55046
/* 55035*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55037*/          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)
/* 55046*/        /*SwitchType*/ 11, MVT::v4i32,// ->55059
/* 55048*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55050*/          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)
/* 55059*/        0, // EndSwitchType
/* 55060*/      0, /*End of Scope*/
/* 55061*/    /*Scope*/ 60, /*->55122*/
/* 55062*/      OPC_CheckChild1Type, MVT::i64,
/* 55064*/      OPC_RecordChild2, // #2 = $n
/* 55065*/      OPC_Scope, 22, /*->55089*/ // 3 children in Scope
/* 55067*/        OPC_MoveChild2,
/* 55068*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55071*/        OPC_CheckPredicate, 37, // Predicate_immZExt1Ptr
/* 55073*/        OPC_MoveParent,
/* 55074*/        OPC_CheckType, MVT::v2i64,
/* 55076*/        OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 55078*/        OPC_EmitConvertToTarget, 2,
/* 55080*/        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)
/* 55089*/      /*Scope*/ 15, /*->55105*/
/* 55090*/        OPC_CheckChild2Type, MVT::i32,
/* 55092*/        OPC_CheckType, MVT::v2i64,
/* 55094*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55096*/        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)
/* 55105*/      /*Scope*/ 15, /*->55121*/
/* 55106*/        OPC_CheckChild2Type, MVT::i64,
/* 55108*/        OPC_CheckType, MVT::v2i64,
/* 55110*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55112*/        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)
/* 55121*/      0, /*End of Scope*/
/* 55122*/    /*Scope*/ 60, /*->55183*/
/* 55123*/      OPC_CheckChild1Type, MVT::f32,
/* 55125*/      OPC_RecordChild2, // #2 = $n
/* 55126*/      OPC_Scope, 22, /*->55150*/ // 3 children in Scope
/* 55128*/        OPC_MoveChild2,
/* 55129*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55132*/        OPC_CheckPredicate, 33, // Predicate_immZExt2Ptr
/* 55134*/        OPC_MoveParent,
/* 55135*/        OPC_CheckType, MVT::v4f32,
/* 55137*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55139*/        OPC_EmitConvertToTarget, 2,
/* 55141*/        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)
/* 55150*/      /*Scope*/ 15, /*->55166*/
/* 55151*/        OPC_CheckChild2Type, MVT::i32,
/* 55153*/        OPC_CheckType, MVT::v4f32,
/* 55155*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55157*/        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)
/* 55166*/      /*Scope*/ 15, /*->55182*/
/* 55167*/        OPC_CheckChild2Type, MVT::i64,
/* 55169*/        OPC_CheckType, MVT::v4f32,
/* 55171*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55173*/        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)
/* 55182*/      0, /*End of Scope*/
/* 55183*/    /*Scope*/ 60, /*->55244*/
/* 55184*/      OPC_CheckChild1Type, MVT::f64,
/* 55186*/      OPC_RecordChild2, // #2 = $n
/* 55187*/      OPC_Scope, 22, /*->55211*/ // 3 children in Scope
/* 55189*/        OPC_MoveChild2,
/* 55190*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55193*/        OPC_CheckPredicate, 37, // Predicate_immZExt1Ptr
/* 55195*/        OPC_MoveParent,
/* 55196*/        OPC_CheckType, MVT::v2f64,
/* 55198*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55200*/        OPC_EmitConvertToTarget, 2,
/* 55202*/        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)
/* 55211*/      /*Scope*/ 15, /*->55227*/
/* 55212*/        OPC_CheckChild2Type, MVT::i32,
/* 55214*/        OPC_CheckType, MVT::v2f64,
/* 55216*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55218*/        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)
/* 55227*/      /*Scope*/ 15, /*->55243*/
/* 55228*/        OPC_CheckChild2Type, MVT::i64,
/* 55230*/        OPC_CheckType, MVT::v2f64,
/* 55232*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55234*/        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)
/* 55243*/      0, /*End of Scope*/
/* 55244*/    0, /*End of Scope*/
/* 55245*/  /*SwitchOpcode*/ 53, TARGET_VAL(MipsISD::SHF),// ->55301
/* 55248*/    OPC_RecordChild0, // #0 = $u8
/* 55249*/    OPC_MoveChild0,
/* 55250*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55253*/    OPC_CheckPredicate, 34, // Predicate_immZExt8
/* 55255*/    OPC_MoveParent,
/* 55256*/    OPC_RecordChild1, // #1 = $ws
/* 55257*/    OPC_SwitchType /*3 cases */, 12, MVT::v16i8,// ->55272
/* 55260*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55262*/      OPC_EmitConvertToTarget, 0,
/* 55264*/      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)
/* 55272*/    /*SwitchType*/ 12, MVT::v8i16,// ->55286
/* 55274*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55276*/      OPC_EmitConvertToTarget, 0,
/* 55278*/      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)
/* 55286*/    /*SwitchType*/ 12, MVT::v4i32,// ->55300
/* 55288*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55290*/      OPC_EmitConvertToTarget, 0,
/* 55292*/      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)
/* 55300*/    0, // EndSwitchType
/* 55301*/  /*SwitchOpcode*/ 37, TARGET_VAL(MipsISD::SHLL_DSP),// ->55341
/* 55304*/    OPC_RecordChild0, // #0 = $a
/* 55305*/    OPC_RecordChild1, // #1 = $shamt
/* 55306*/    OPC_MoveChild1,
/* 55307*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55310*/    OPC_MoveParent,
/* 55311*/    OPC_SwitchType /*2 cases */, 12, MVT::v2i16,// ->55326
/* 55314*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55316*/      OPC_EmitConvertToTarget, 1,
/* 55318*/      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)
/* 55326*/    /*SwitchType*/ 12, MVT::v4i8,// ->55340
/* 55328*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55330*/      OPC_EmitConvertToTarget, 1,
/* 55332*/      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)
/* 55340*/    0, // EndSwitchType
/* 55341*/  /*SwitchOpcode*/ 37, TARGET_VAL(MipsISD::SHRA_DSP),// ->55381
/* 55344*/    OPC_RecordChild0, // #0 = $a
/* 55345*/    OPC_RecordChild1, // #1 = $shamt
/* 55346*/    OPC_MoveChild1,
/* 55347*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55350*/    OPC_MoveParent,
/* 55351*/    OPC_SwitchType /*2 cases */, 12, MVT::v2i16,// ->55366
/* 55354*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55356*/      OPC_EmitConvertToTarget, 1,
/* 55358*/      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)
/* 55366*/    /*SwitchType*/ 12, MVT::v4i8,// ->55380
/* 55368*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 55370*/      OPC_EmitConvertToTarget, 1,
/* 55372*/      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)
/* 55380*/    0, // EndSwitchType
/* 55381*/  /*SwitchOpcode*/ 37, TARGET_VAL(MipsISD::SHRL_DSP),// ->55421
/* 55384*/    OPC_RecordChild0, // #0 = $a
/* 55385*/    OPC_RecordChild1, // #1 = $shamt
/* 55386*/    OPC_MoveChild1,
/* 55387*/    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 55390*/    OPC_MoveParent,
/* 55391*/    OPC_SwitchType /*2 cases */, 12, MVT::v2i16,// ->55406
/* 55394*/      OPC_CheckPatternPredicate, 46, // (Subtarget->hasDSPR2())
/* 55396*/      OPC_EmitConvertToTarget, 1,
/* 55398*/      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)
/* 55406*/    /*SwitchType*/ 12, MVT::v4i8,// ->55420
/* 55408*/      OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55410*/      OPC_EmitConvertToTarget, 1,
/* 55412*/      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)
/* 55420*/    0, // EndSwitchType
/* 55421*/  /*SwitchOpcode*/ 33|128,1/*161*/, TARGET_VAL(ISD::BUILD_VECTOR),// ->55586
/* 55425*/    OPC_RecordChild0, // #0 = $rs
/* 55426*/    OPC_Scope, 105, /*->55533*/ // 4 children in Scope
/* 55428*/      OPC_CheckChild0Type, MVT::i32,
/* 55430*/      OPC_CheckChild1Same, 0,
/* 55432*/      OPC_CheckChild2Same, 0,
/* 55434*/      OPC_CheckChild3Same, 0,
/* 55436*/      OPC_Scope, 82, /*->55520*/ // 2 children in Scope
/* 55438*/        OPC_MoveChild4,
/* 55439*/        OPC_CheckSame, 0,
/* 55441*/        OPC_MoveParent,
/* 55442*/        OPC_MoveChild5,
/* 55443*/        OPC_CheckSame, 0,
/* 55445*/        OPC_MoveParent,
/* 55446*/        OPC_MoveChild6,
/* 55447*/        OPC_CheckSame, 0,
/* 55449*/        OPC_MoveParent,
/* 55450*/        OPC_MoveChild7,
/* 55451*/        OPC_CheckSame, 0,
/* 55453*/        OPC_MoveParent,
/* 55454*/        OPC_Scope, 51, /*->55507*/ // 2 children in Scope
/* 55456*/          OPC_MoveChild, 8,
/* 55458*/          OPC_CheckSame, 0,
/* 55460*/          OPC_MoveParent,
/* 55461*/          OPC_MoveChild, 9,
/* 55463*/          OPC_CheckSame, 0,
/* 55465*/          OPC_MoveParent,
/* 55466*/          OPC_MoveChild, 10,
/* 55468*/          OPC_CheckSame, 0,
/* 55470*/          OPC_MoveParent,
/* 55471*/          OPC_MoveChild, 11,
/* 55473*/          OPC_CheckSame, 0,
/* 55475*/          OPC_MoveParent,
/* 55476*/          OPC_MoveChild, 12,
/* 55478*/          OPC_CheckSame, 0,
/* 55480*/          OPC_MoveParent,
/* 55481*/          OPC_MoveChild, 13,
/* 55483*/          OPC_CheckSame, 0,
/* 55485*/          OPC_MoveParent,
/* 55486*/          OPC_MoveChild, 14,
/* 55488*/          OPC_CheckSame, 0,
/* 55490*/          OPC_MoveParent,
/* 55491*/          OPC_MoveChild, 15,
/* 55493*/          OPC_CheckSame, 0,
/* 55495*/          OPC_MoveParent,
/* 55496*/          OPC_CheckType, MVT::v16i8,
/* 55498*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55500*/          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)
/* 55507*/        /*Scope*/ 11, /*->55519*/
/* 55508*/          OPC_CheckType, MVT::v8i16,
/* 55510*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55512*/          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)
/* 55519*/        0, /*End of Scope*/
/* 55520*/      /*Scope*/ 11, /*->55532*/
/* 55521*/        OPC_CheckType, MVT::v4i32,
/* 55523*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55525*/        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)
/* 55532*/      0, /*End of Scope*/
/* 55533*/    /*Scope*/ 15, /*->55549*/
/* 55534*/      OPC_CheckChild0Type, MVT::i64,
/* 55536*/      OPC_CheckChild1Same, 0,
/* 55538*/      OPC_CheckType, MVT::v2i64,
/* 55540*/      OPC_CheckPatternPredicate, 58, // (Subtarget->hasMSA()) && (Subtarget->hasMips64()) && (Subtarget->hasStandardEncoding())
/* 55542*/      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)
/* 55549*/    /*Scope*/ 19, /*->55569*/
/* 55550*/      OPC_CheckChild0Type, MVT::f32,
/* 55552*/      OPC_CheckChild1Same, 0,
/* 55554*/      OPC_CheckChild2Same, 0,
/* 55556*/      OPC_CheckChild3Same, 0,
/* 55558*/      OPC_CheckType, MVT::v4f32,
/* 55560*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55562*/      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)
/* 55569*/    /*Scope*/ 15, /*->55585*/
/* 55570*/      OPC_CheckChild0Type, MVT::f64,
/* 55572*/      OPC_CheckChild1Same, 0,
/* 55574*/      OPC_CheckType, MVT::v2f64,
/* 55576*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55578*/      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)
/* 55585*/    0, /*End of Scope*/
/* 55586*/  /*SwitchOpcode*/ 25, TARGET_VAL(ISD::FP_TO_SINT),// ->55614
/* 55589*/    OPC_RecordChild0, // #0 = $ws
/* 55590*/    OPC_SwitchType /*2 cases */, 9, MVT::v4i32,// ->55602
/* 55593*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55595*/      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)
/* 55602*/    /*SwitchType*/ 9, MVT::v2i64,// ->55613
/* 55604*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55606*/      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)
/* 55613*/    0, // EndSwitchType
/* 55614*/  /*SwitchOpcode*/ 25, TARGET_VAL(ISD::FP_TO_UINT),// ->55642
/* 55617*/    OPC_RecordChild0, // #0 = $ws
/* 55618*/    OPC_SwitchType /*2 cases */, 9, MVT::v4i32,// ->55630
/* 55621*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55623*/      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)
/* 55630*/    /*SwitchType*/ 9, MVT::v2i64,// ->55641
/* 55632*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55634*/      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)
/* 55641*/    0, // EndSwitchType
/* 55642*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::ILVEV),// ->55697
/* 55645*/    OPC_RecordChild0, // #0 = $ws
/* 55646*/    OPC_RecordChild1, // #1 = $wt
/* 55647*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55660
/* 55650*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55652*/      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)
/* 55660*/    /*SwitchType*/ 10, MVT::v8i16,// ->55672
/* 55662*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55664*/      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)
/* 55672*/    /*SwitchType*/ 10, MVT::v4i32,// ->55684
/* 55674*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55676*/      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)
/* 55684*/    /*SwitchType*/ 10, MVT::v2i64,// ->55696
/* 55686*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55688*/      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)
/* 55696*/    0, // EndSwitchType
/* 55697*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::ILVL),// ->55752
/* 55700*/    OPC_RecordChild0, // #0 = $ws
/* 55701*/    OPC_RecordChild1, // #1 = $wt
/* 55702*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55715
/* 55705*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55707*/      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)
/* 55715*/    /*SwitchType*/ 10, MVT::v8i16,// ->55727
/* 55717*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55719*/      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)
/* 55727*/    /*SwitchType*/ 10, MVT::v4i32,// ->55739
/* 55729*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55731*/      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)
/* 55739*/    /*SwitchType*/ 10, MVT::v2i64,// ->55751
/* 55741*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55743*/      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)
/* 55751*/    0, // EndSwitchType
/* 55752*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::ILVOD),// ->55807
/* 55755*/    OPC_RecordChild0, // #0 = $ws
/* 55756*/    OPC_RecordChild1, // #1 = $wt
/* 55757*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55770
/* 55760*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55762*/      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)
/* 55770*/    /*SwitchType*/ 10, MVT::v8i16,// ->55782
/* 55772*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55774*/      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)
/* 55782*/    /*SwitchType*/ 10, MVT::v4i32,// ->55794
/* 55784*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55786*/      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)
/* 55794*/    /*SwitchType*/ 10, MVT::v2i64,// ->55806
/* 55796*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55798*/      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)
/* 55806*/    0, // EndSwitchType
/* 55807*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::ILVR),// ->55862
/* 55810*/    OPC_RecordChild0, // #0 = $ws
/* 55811*/    OPC_RecordChild1, // #1 = $wt
/* 55812*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55825
/* 55815*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55817*/      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)
/* 55825*/    /*SwitchType*/ 10, MVT::v8i16,// ->55837
/* 55827*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55829*/      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)
/* 55837*/    /*SwitchType*/ 10, MVT::v4i32,// ->55849
/* 55839*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55841*/      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)
/* 55849*/    /*SwitchType*/ 10, MVT::v2i64,// ->55861
/* 55851*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55853*/      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)
/* 55861*/    0, // EndSwitchType
/* 55862*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::PCKEV),// ->55917
/* 55865*/    OPC_RecordChild0, // #0 = $ws
/* 55866*/    OPC_RecordChild1, // #1 = $wt
/* 55867*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55880
/* 55870*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55872*/      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)
/* 55880*/    /*SwitchType*/ 10, MVT::v8i16,// ->55892
/* 55882*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55884*/      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)
/* 55892*/    /*SwitchType*/ 10, MVT::v4i32,// ->55904
/* 55894*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55896*/      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)
/* 55904*/    /*SwitchType*/ 10, MVT::v2i64,// ->55916
/* 55906*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55908*/      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)
/* 55916*/    0, // EndSwitchType
/* 55917*/  /*SwitchOpcode*/ 52, TARGET_VAL(MipsISD::PCKOD),// ->55972
/* 55920*/    OPC_RecordChild0, // #0 = $ws
/* 55921*/    OPC_RecordChild1, // #1 = $wt
/* 55922*/    OPC_SwitchType /*4 cases */, 10, MVT::v16i8,// ->55935
/* 55925*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55927*/      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)
/* 55935*/    /*SwitchType*/ 10, MVT::v8i16,// ->55947
/* 55937*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55939*/      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)
/* 55947*/    /*SwitchType*/ 10, MVT::v4i32,// ->55959
/* 55949*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55951*/      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)
/* 55959*/    /*SwitchType*/ 10, MVT::v2i64,// ->55971
/* 55961*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 55963*/      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)
/* 55971*/    0, // EndSwitchType
/* 55972*/  /*SwitchOpcode*/ 67|128,2/*323*/, TARGET_VAL(MipsISD::SELECT_CC_DSP),// ->56299
/* 55976*/    OPC_RecordChild0, // #0 = $a
/* 55977*/    OPC_Scope, 30|128,1/*158*/, /*->56138*/ // 2 children in Scope
/* 55980*/      OPC_CheckChild0Type, MVT::v2i16,
/* 55982*/      OPC_RecordChild1, // #1 = $b
/* 55983*/      OPC_RecordChild2, // #2 = $c
/* 55984*/      OPC_RecordChild3, // #3 = $d
/* 55985*/      OPC_MoveChild4,
/* 55986*/      OPC_Scope, 24, /*->56012*/ // 6 children in Scope
/* 55988*/        OPC_CheckCondCode, ISD::SETEQ,
/* 55990*/        OPC_MoveParent,
/* 55991*/        OPC_CheckType, MVT::v2i16,
/* 55993*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 55995*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_EQ_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56003*/        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)
/* 56012*/      /*Scope*/ 24, /*->56037*/
/* 56013*/        OPC_CheckCondCode, ISD::SETLT,
/* 56015*/        OPC_MoveParent,
/* 56016*/        OPC_CheckType, MVT::v2i16,
/* 56018*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56020*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LT_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56028*/        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)
/* 56037*/      /*Scope*/ 24, /*->56062*/
/* 56038*/        OPC_CheckCondCode, ISD::SETLE,
/* 56040*/        OPC_MoveParent,
/* 56041*/        OPC_CheckType, MVT::v2i16,
/* 56043*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56045*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LE_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56053*/        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)
/* 56062*/      /*Scope*/ 24, /*->56087*/
/* 56063*/        OPC_CheckCondCode, ISD::SETNE,
/* 56065*/        OPC_MoveParent,
/* 56066*/        OPC_CheckType, MVT::v2i16,
/* 56068*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56070*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_EQ_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56078*/        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)
/* 56087*/      /*Scope*/ 24, /*->56112*/
/* 56088*/        OPC_CheckCondCode, ISD::SETGE,
/* 56090*/        OPC_MoveParent,
/* 56091*/        OPC_CheckType, MVT::v2i16,
/* 56093*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56095*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LT_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56103*/        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)
/* 56112*/      /*Scope*/ 24, /*->56137*/
/* 56113*/        OPC_CheckCondCode, ISD::SETGT,
/* 56115*/        OPC_MoveParent,
/* 56116*/        OPC_CheckType, MVT::v2i16,
/* 56118*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56120*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LE_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56128*/        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)
/* 56137*/      0, /*End of Scope*/
/* 56138*/    /*Scope*/ 30|128,1/*158*/, /*->56298*/
/* 56140*/      OPC_CheckChild0Type, MVT::v4i8,
/* 56142*/      OPC_RecordChild1, // #1 = $b
/* 56143*/      OPC_RecordChild2, // #2 = $c
/* 56144*/      OPC_RecordChild3, // #3 = $d
/* 56145*/      OPC_MoveChild4,
/* 56146*/      OPC_Scope, 24, /*->56172*/ // 6 children in Scope
/* 56148*/        OPC_CheckCondCode, ISD::SETEQ,
/* 56150*/        OPC_MoveParent,
/* 56151*/        OPC_CheckType, MVT::v4i8,
/* 56153*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56155*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_EQ_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56163*/        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)
/* 56172*/      /*Scope*/ 24, /*->56197*/
/* 56173*/        OPC_CheckCondCode, ISD::SETULT,
/* 56175*/        OPC_MoveParent,
/* 56176*/        OPC_CheckType, MVT::v4i8,
/* 56178*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56180*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LT_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56188*/        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)
/* 56197*/      /*Scope*/ 24, /*->56222*/
/* 56198*/        OPC_CheckCondCode, ISD::SETULE,
/* 56200*/        OPC_MoveParent,
/* 56201*/        OPC_CheckType, MVT::v4i8,
/* 56203*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56205*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LE_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56213*/        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)
/* 56222*/      /*Scope*/ 24, /*->56247*/
/* 56223*/        OPC_CheckCondCode, ISD::SETNE,
/* 56225*/        OPC_MoveParent,
/* 56226*/        OPC_CheckType, MVT::v4i8,
/* 56228*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56230*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_EQ_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56238*/        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)
/* 56247*/      /*Scope*/ 24, /*->56272*/
/* 56248*/        OPC_CheckCondCode, ISD::SETUGE,
/* 56250*/        OPC_MoveParent,
/* 56251*/        OPC_CheckType, MVT::v4i8,
/* 56253*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56255*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LT_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56263*/        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)
/* 56272*/      /*Scope*/ 24, /*->56297*/
/* 56273*/        OPC_CheckCondCode, ISD::SETUGT,
/* 56275*/        OPC_MoveParent,
/* 56276*/        OPC_CheckType, MVT::v4i8,
/* 56278*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56280*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LE_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #4
/* 56288*/        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)
/* 56297*/      0, /*End of Scope*/
/* 56298*/    0, /*End of Scope*/
/* 56299*/  /*SwitchOpcode*/ 123|128,5/*763*/, TARGET_VAL(MipsISD::SETCC_DSP),// ->57066
/* 56303*/    OPC_RecordChild0, // #0 = $a
/* 56304*/    OPC_Scope, 122|128,2/*378*/, /*->56685*/ // 2 children in Scope
/* 56307*/      OPC_CheckChild0Type, MVT::v2i16,
/* 56309*/      OPC_RecordChild1, // #1 = $b
/* 56310*/      OPC_MoveChild2,
/* 56311*/      OPC_Scope, 61, /*->56374*/ // 6 children in Scope
/* 56313*/        OPC_CheckCondCode, ISD::SETEQ,
/* 56315*/        OPC_MoveParent,
/* 56316*/        OPC_CheckType, MVT::v2i16,
/* 56318*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56320*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_EQ_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56328*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56331*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56343*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56351*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56354*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56362*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56365*/        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] })
/* 56374*/      /*Scope*/ 61, /*->56436*/
/* 56375*/        OPC_CheckCondCode, ISD::SETLT,
/* 56377*/        OPC_MoveParent,
/* 56378*/        OPC_CheckType, MVT::v2i16,
/* 56380*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56382*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LT_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56390*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56393*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56405*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56413*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56416*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56424*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56427*/        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] })
/* 56436*/      /*Scope*/ 61, /*->56498*/
/* 56437*/        OPC_CheckCondCode, ISD::SETLE,
/* 56439*/        OPC_MoveParent,
/* 56440*/        OPC_CheckType, MVT::v2i16,
/* 56442*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56444*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LE_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56452*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56455*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56467*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56475*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56478*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56486*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56489*/        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] })
/* 56498*/      /*Scope*/ 61, /*->56560*/
/* 56499*/        OPC_CheckCondCode, ISD::SETNE,
/* 56501*/        OPC_MoveParent,
/* 56502*/        OPC_CheckType, MVT::v2i16,
/* 56504*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56506*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_EQ_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56514*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56517*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56520*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56532*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56540*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56543*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56551*/        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] }))
/* 56560*/      /*Scope*/ 61, /*->56622*/
/* 56561*/        OPC_CheckCondCode, ISD::SETGE,
/* 56563*/        OPC_MoveParent,
/* 56564*/        OPC_CheckType, MVT::v2i16,
/* 56566*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56568*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LT_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56576*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56579*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56582*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56594*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56602*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56605*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56613*/        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] }))
/* 56622*/      /*Scope*/ 61, /*->56684*/
/* 56623*/        OPC_CheckCondCode, ISD::SETGT,
/* 56625*/        OPC_MoveParent,
/* 56626*/        OPC_CheckType, MVT::v2i16,
/* 56628*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56630*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMP_LE_PH), 0,
                      MVT::v2i16, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56638*/        OPC_EmitRegister, MVT::v2i16, Mips::ZERO,
/* 56641*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56644*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56656*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56664*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56667*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v2i16, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56675*/        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] }))
/* 56684*/      0, /*End of Scope*/
/* 56685*/    /*Scope*/ 122|128,2/*378*/, /*->57065*/
/* 56687*/      OPC_CheckChild0Type, MVT::v4i8,
/* 56689*/      OPC_RecordChild1, // #1 = $b
/* 56690*/      OPC_MoveChild2,
/* 56691*/      OPC_Scope, 61, /*->56754*/ // 6 children in Scope
/* 56693*/        OPC_CheckCondCode, ISD::SETEQ,
/* 56695*/        OPC_MoveParent,
/* 56696*/        OPC_CheckType, MVT::v4i8,
/* 56698*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56700*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_EQ_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56708*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56711*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56723*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56731*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56734*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56742*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56745*/        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] })
/* 56754*/      /*Scope*/ 61, /*->56816*/
/* 56755*/        OPC_CheckCondCode, ISD::SETULT,
/* 56757*/        OPC_MoveParent,
/* 56758*/        OPC_CheckType, MVT::v4i8,
/* 56760*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56762*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LT_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56770*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56773*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56785*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56793*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56796*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56804*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56807*/        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] })
/* 56816*/      /*Scope*/ 61, /*->56878*/
/* 56817*/        OPC_CheckCondCode, ISD::SETULE,
/* 56819*/        OPC_MoveParent,
/* 56820*/        OPC_CheckType, MVT::v4i8,
/* 56822*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56824*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LE_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56832*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56835*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56847*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 3, 4,  // Results = #5
/* 56855*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56858*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 5, 6,  // Results = #7
/* 56866*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56869*/        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] })
/* 56878*/      /*Scope*/ 61, /*->56940*/
/* 56879*/        OPC_CheckCondCode, ISD::SETNE,
/* 56881*/        OPC_MoveParent,
/* 56882*/        OPC_CheckType, MVT::v4i8,
/* 56884*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56886*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_EQ_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56894*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56897*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56900*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56912*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56920*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56923*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56931*/        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] }))
/* 56940*/      /*Scope*/ 61, /*->57002*/
/* 56941*/        OPC_CheckCondCode, ISD::SETUGE,
/* 56943*/        OPC_MoveParent,
/* 56944*/        OPC_CheckType, MVT::v4i8,
/* 56946*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 56948*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LT_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 56956*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 56959*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 56962*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 56974*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 56982*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 56985*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 6, 7,  // Results = #8
/* 56993*/        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] }))
/* 57002*/      /*Scope*/ 61, /*->57064*/
/* 57003*/        OPC_CheckCondCode, ISD::SETUGT,
/* 57005*/        OPC_MoveParent,
/* 57006*/        OPC_CheckType, MVT::v4i8,
/* 57008*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasDSP())
/* 57010*/        OPC_EmitNode1, TARGET_VAL(Mips::PseudoCMPU_LE_QB), 0,
                      MVT::v4i8, 2/*#Ops*/, 0, 1,  // Results = #2
/* 57018*/        OPC_EmitRegister, MVT::v4i8, Mips::ZERO,
/* 57021*/        OPC_EmitRegister, MVT::i32, Mips::ZERO,
/* 57024*/        OPC_EmitInteger, MVT::i32, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1/*18446744073709551615*/, 
/* 57036*/        OPC_EmitNode1, TARGET_VAL(Mips::ADDiu), 0,
                      MVT::i32, 2/*#Ops*/, 4, 5,  // Results = #6
/* 57044*/        OPC_EmitInteger, MVT::i32, Mips::DSPRRegClassID,
/* 57047*/        OPC_EmitNode1, TARGET_VAL(TargetOpcode::COPY_TO_REGCLASS), 0,
                      MVT::v4i8, 2/*#Ops*/, 6, 7,  // Results = #8
/* 57055*/        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] }))
/* 57064*/      0, /*End of Scope*/
/* 57065*/    0, /*End of Scope*/
/* 57066*/  /*SwitchOpcode*/ 29, TARGET_VAL(ISD::UINT_TO_FP),// ->57098
/* 57069*/    OPC_RecordChild0, // #0 = $ws
/* 57070*/    OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->57084
/* 57073*/      OPC_CheckChild0Type, MVT::v4i32,
/* 57075*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57077*/      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)
/* 57084*/    /*SwitchType*/ 11, MVT::v2f64,// ->57097
/* 57086*/      OPC_CheckChild0Type, MVT::v2i64,
/* 57088*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57090*/      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)
/* 57097*/    0, // EndSwitchType
/* 57098*/  /*SwitchOpcode*/ 25, TARGET_VAL(ISD::FLOG2),// ->57126
/* 57101*/    OPC_RecordChild0, // #0 = $ws
/* 57102*/    OPC_SwitchType /*2 cases */, 9, MVT::v4f32,// ->57114
/* 57105*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57107*/      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)
/* 57114*/    /*SwitchType*/ 9, MVT::v2f64,// ->57125
/* 57116*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57118*/      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)
/* 57125*/    0, // EndSwitchType
/* 57126*/  /*SwitchOpcode*/ 31, TARGET_VAL(ISD::FMA),// ->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::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)
/* 57146*/    /*SwitchType*/ 11, MVT::v2f64,// ->57159
/* 57148*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57150*/      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)
/* 57159*/    0, // EndSwitchType
/* 57160*/  /*SwitchOpcode*/ 31, TARGET_VAL(MipsISD::FMS),// ->57194
/* 57163*/    OPC_RecordChild0, // #0 = $wd_in
/* 57164*/    OPC_RecordChild1, // #1 = $ws
/* 57165*/    OPC_RecordChild2, // #2 = $wt
/* 57166*/    OPC_SwitchType /*2 cases */, 11, MVT::v4f32,// ->57180
/* 57169*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57171*/      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)
/* 57180*/    /*SwitchType*/ 11, MVT::v2f64,// ->57193
/* 57182*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57184*/      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)
/* 57193*/    0, // EndSwitchType
/* 57194*/  /*SwitchOpcode*/ 25, TARGET_VAL(ISD::FRINT),// ->57222
/* 57197*/    OPC_RecordChild0, // #0 = $ws
/* 57198*/    OPC_SwitchType /*2 cases */, 9, MVT::v4f32,// ->57210
/* 57201*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57203*/      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)
/* 57210*/    /*SwitchType*/ 9, MVT::v2f64,// ->57221
/* 57212*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57214*/      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)
/* 57221*/    0, // EndSwitchType
/* 57222*/  /*SwitchOpcode*/ 25, TARGET_VAL(ISD::FEXP2),// ->57250
/* 57225*/    OPC_RecordChild0, // #0 = $ws
/* 57226*/    OPC_SwitchType /*2 cases */, 9, MVT::v4f32,// ->57238
/* 57229*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57231*/      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)
/* 57238*/    /*SwitchType*/ 9, MVT::v2f64,// ->57249
/* 57240*/      OPC_CheckPatternPredicate, 24, // (Subtarget->hasMSA()) && (Subtarget->hasStandardEncoding())
/* 57242*/      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)
/* 57249*/    0, // EndSwitchType
/* 57250*/  0, // EndSwitchOpcode
    0
  }; // Total Array size is 57252 bytes

  // Opcode Histogram:
  // #OPC_Scope                                = 698
  // #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                = 2287
  // #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                    = 225
  // #OPC_EmitRegister                         = 124
  // #OPC_EmitConvertToTarget                  = 343
  // #OPC_EmitMergeInputChains                 = 493
  // #OPC_EmitCopyToReg                        = 0
  // #OPC_EmitNode                             = 585
  // #OPC_EmitNodeXForm                        = 99
  // #OPC_CompleteMatch                        = 0
  // #OPC_MorphNodeTo                          = 2413

  #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
