/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* DAG Instruction Selector for the RISCV 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 /*81 cases */, 12|128,5/*652*/, TARGET_VAL(ISD::AND),// ->657
/*     5*/    OPC_Scope, 41|128,4/*553*/, /*->561*/ // 2 children in Scope
/*     8*/      OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15/*4294967295*/,
/*    14*/      OPC_Scope, 75|128,3/*459*/, /*->476*/ // 2 children in Scope
/*    17*/        OPC_MoveChild0,
/*    18*/        OPC_SwitchOpcode /*2 cases */, 96|128,1/*224*/, TARGET_VAL(RISCVISD::DIVUW),// ->247
/*    23*/          OPC_MoveChild0,
/*    24*/          OPC_Scope, 110, /*->136*/ // 2 children in Scope
/*    26*/            OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15/*4294967295*/,
/*    32*/            OPC_RecordChild0, // #0 = $rs1
/*    33*/            OPC_MoveParent,
/*    34*/            OPC_MoveChild1,
/*    35*/            OPC_Scope, 49, /*->86*/ // 2 children in Scope
/*    37*/              OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15/*4294967295*/,
/*    43*/              OPC_RecordChild0, // #1 = $rs2
/*    44*/              OPC_MoveParent,
/*    45*/              OPC_MoveParent,
/*    46*/              OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->73
/*    49*/                OPC_Scope, 10, /*->61*/ // 2 children in Scope
/*    51*/                  OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*    53*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_divuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })), 4294967295:{ *:[i32] }) - Complexity = 27
                            // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*    61*/                /*Scope*/ 10, /*->72*/
/*    62*/                  OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*    64*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_divuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })), 4294967295:{ *:[i32] }) - Complexity = 27
                            // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*    72*/                0, /*End of Scope*/
/*    73*/              /*SwitchType*/ 10, MVT::i64,// ->85
/*    75*/                OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*    77*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                              MVT::i64, 2/*#Ops*/, 0, 1,
                          // Src: (and:{ *:[i64] } (riscv_divuw:{ *:[i64] } (and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 4294967295:{ *:[i64] }), (and:{ *:[i64] } GPR:{ *:[i64] }:$rs2, 4294967295:{ *:[i64] })), 4294967295:{ *:[i64] }) - Complexity = 27
                          // Dst: (DIVU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*    85*/              0, // EndSwitchType
/*    86*/            /*Scope*/ 48, /*->135*/
/*    87*/              OPC_CheckOpcode, TARGET_VAL(ISD::AssertZext),
/*    90*/              OPC_RecordChild0, // #1 = $rs2
/*    91*/              OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*    93*/              OPC_MoveParent,
/*    94*/              OPC_MoveParent,
/*    95*/              OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->122
/*    98*/                OPC_Scope, 10, /*->110*/ // 2 children in Scope
/*   100*/                  OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*   102*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_divuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>), 4294967295:{ *:[i32] }) - Complexity = 23
                            // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   110*/                /*Scope*/ 10, /*->121*/
/*   111*/                  OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*   113*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_divuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>), 4294967295:{ *:[i32] }) - Complexity = 23
                            // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   121*/                0, /*End of Scope*/
/*   122*/              /*SwitchType*/ 10, MVT::i64,// ->134
/*   124*/                OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*   126*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                              MVT::i64, 2/*#Ops*/, 0, 1,
                          // Src: (and:{ *:[i64] } (riscv_divuw:{ *:[i64] } (and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 4294967295:{ *:[i64] }), (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs2)<<P:Predicate_assertzexti32>>), 4294967295:{ *:[i64] }) - Complexity = 23
                          // Dst: (DIVU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*   134*/              0, // EndSwitchType
/*   135*/            0, /*End of Scope*/
/*   136*/          /*Scope*/ 109, /*->246*/
/*   137*/            OPC_CheckOpcode, TARGET_VAL(ISD::AssertZext),
/*   140*/            OPC_RecordChild0, // #0 = $rs1
/*   141*/            OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*   143*/            OPC_MoveParent,
/*   144*/            OPC_MoveChild1,
/*   145*/            OPC_Scope, 49, /*->196*/ // 2 children in Scope
/*   147*/              OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15/*4294967295*/,
/*   153*/              OPC_RecordChild0, // #1 = $rs2
/*   154*/              OPC_MoveParent,
/*   155*/              OPC_MoveParent,
/*   156*/              OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->183
/*   159*/                OPC_Scope, 10, /*->171*/ // 2 children in Scope
/*   161*/                  OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*   163*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_divuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })), 4294967295:{ *:[i32] }) - Complexity = 23
                            // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   171*/                /*Scope*/ 10, /*->182*/
/*   172*/                  OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*   174*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_divuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })), 4294967295:{ *:[i32] }) - Complexity = 23
                            // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   182*/                0, /*End of Scope*/
/*   183*/              /*SwitchType*/ 10, MVT::i64,// ->195
/*   185*/                OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*   187*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                              MVT::i64, 2/*#Ops*/, 0, 1,
                          // Src: (and:{ *:[i64] } (riscv_divuw:{ *:[i64] } (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_assertzexti32>>, (and:{ *:[i64] } GPR:{ *:[i64] }:$rs2, 4294967295:{ *:[i64] })), 4294967295:{ *:[i64] }) - Complexity = 23
                          // Dst: (DIVU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*   195*/              0, // EndSwitchType
/*   196*/            /*Scope*/ 48, /*->245*/
/*   197*/              OPC_CheckOpcode, TARGET_VAL(ISD::AssertZext),
/*   200*/              OPC_RecordChild0, // #1 = $rs2
/*   201*/              OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*   203*/              OPC_MoveParent,
/*   204*/              OPC_MoveParent,
/*   205*/              OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->232
/*   208*/                OPC_Scope, 10, /*->220*/ // 2 children in Scope
/*   210*/                  OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*   212*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_divuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>), 4294967295:{ *:[i32] }) - Complexity = 19
                            // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   220*/                /*Scope*/ 10, /*->231*/
/*   221*/                  OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*   223*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_divuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>), 4294967295:{ *:[i32] }) - Complexity = 19
                            // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   231*/                0, /*End of Scope*/
/*   232*/              /*SwitchType*/ 10, MVT::i64,// ->244
/*   234*/                OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*   236*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                              MVT::i64, 2/*#Ops*/, 0, 1,
                          // Src: (and:{ *:[i64] } (riscv_divuw:{ *:[i64] } (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_assertzexti32>>, (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs2)<<P:Predicate_assertzexti32>>), 4294967295:{ *:[i64] }) - Complexity = 19
                          // Dst: (DIVU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*   244*/              0, // EndSwitchType
/*   245*/            0, /*End of Scope*/
/*   246*/          0, /*End of Scope*/
/*   247*/        /*SwitchOpcode*/ 96|128,1/*224*/, TARGET_VAL(RISCVISD::REMUW),// ->475
/*   251*/          OPC_MoveChild0,
/*   252*/          OPC_Scope, 110, /*->364*/ // 2 children in Scope
/*   254*/            OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15/*4294967295*/,
/*   260*/            OPC_RecordChild0, // #0 = $rs1
/*   261*/            OPC_MoveParent,
/*   262*/            OPC_MoveChild1,
/*   263*/            OPC_Scope, 49, /*->314*/ // 2 children in Scope
/*   265*/              OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15/*4294967295*/,
/*   271*/              OPC_RecordChild0, // #1 = $rs2
/*   272*/              OPC_MoveParent,
/*   273*/              OPC_MoveParent,
/*   274*/              OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->301
/*   277*/                OPC_Scope, 10, /*->289*/ // 2 children in Scope
/*   279*/                  OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*   281*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_remuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })), 4294967295:{ *:[i32] }) - Complexity = 27
                            // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   289*/                /*Scope*/ 10, /*->300*/
/*   290*/                  OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*   292*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_remuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })), 4294967295:{ *:[i32] }) - Complexity = 27
                            // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   300*/                0, /*End of Scope*/
/*   301*/              /*SwitchType*/ 10, MVT::i64,// ->313
/*   303*/                OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*   305*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                              MVT::i64, 2/*#Ops*/, 0, 1,
                          // Src: (and:{ *:[i64] } (riscv_remuw:{ *:[i64] } (and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 4294967295:{ *:[i64] }), (and:{ *:[i64] } GPR:{ *:[i64] }:$rs2, 4294967295:{ *:[i64] })), 4294967295:{ *:[i64] }) - Complexity = 27
                          // Dst: (REMU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*   313*/              0, // EndSwitchType
/*   314*/            /*Scope*/ 48, /*->363*/
/*   315*/              OPC_CheckOpcode, TARGET_VAL(ISD::AssertZext),
/*   318*/              OPC_RecordChild0, // #1 = $rs2
/*   319*/              OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*   321*/              OPC_MoveParent,
/*   322*/              OPC_MoveParent,
/*   323*/              OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->350
/*   326*/                OPC_Scope, 10, /*->338*/ // 2 children in Scope
/*   328*/                  OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*   330*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_remuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>), 4294967295:{ *:[i32] }) - Complexity = 23
                            // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   338*/                /*Scope*/ 10, /*->349*/
/*   339*/                  OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*   341*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_remuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>), 4294967295:{ *:[i32] }) - Complexity = 23
                            // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   349*/                0, /*End of Scope*/
/*   350*/              /*SwitchType*/ 10, MVT::i64,// ->362
/*   352*/                OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*   354*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                              MVT::i64, 2/*#Ops*/, 0, 1,
                          // Src: (and:{ *:[i64] } (riscv_remuw:{ *:[i64] } (and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 4294967295:{ *:[i64] }), (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs2)<<P:Predicate_assertzexti32>>), 4294967295:{ *:[i64] }) - Complexity = 23
                          // Dst: (REMU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*   362*/              0, // EndSwitchType
/*   363*/            0, /*End of Scope*/
/*   364*/          /*Scope*/ 109, /*->474*/
/*   365*/            OPC_CheckOpcode, TARGET_VAL(ISD::AssertZext),
/*   368*/            OPC_RecordChild0, // #0 = $rs1
/*   369*/            OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*   371*/            OPC_MoveParent,
/*   372*/            OPC_MoveChild1,
/*   373*/            OPC_Scope, 49, /*->424*/ // 2 children in Scope
/*   375*/              OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15/*4294967295*/,
/*   381*/              OPC_RecordChild0, // #1 = $rs2
/*   382*/              OPC_MoveParent,
/*   383*/              OPC_MoveParent,
/*   384*/              OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->411
/*   387*/                OPC_Scope, 10, /*->399*/ // 2 children in Scope
/*   389*/                  OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*   391*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_remuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })), 4294967295:{ *:[i32] }) - Complexity = 23
                            // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   399*/                /*Scope*/ 10, /*->410*/
/*   400*/                  OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*   402*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_remuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })), 4294967295:{ *:[i32] }) - Complexity = 23
                            // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   410*/                0, /*End of Scope*/
/*   411*/              /*SwitchType*/ 10, MVT::i64,// ->423
/*   413*/                OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*   415*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                              MVT::i64, 2/*#Ops*/, 0, 1,
                          // Src: (and:{ *:[i64] } (riscv_remuw:{ *:[i64] } (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_assertzexti32>>, (and:{ *:[i64] } GPR:{ *:[i64] }:$rs2, 4294967295:{ *:[i64] })), 4294967295:{ *:[i64] }) - Complexity = 23
                          // Dst: (REMU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*   423*/              0, // EndSwitchType
/*   424*/            /*Scope*/ 48, /*->473*/
/*   425*/              OPC_CheckOpcode, TARGET_VAL(ISD::AssertZext),
/*   428*/              OPC_RecordChild0, // #1 = $rs2
/*   429*/              OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*   431*/              OPC_MoveParent,
/*   432*/              OPC_MoveParent,
/*   433*/              OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->460
/*   436*/                OPC_Scope, 10, /*->448*/ // 2 children in Scope
/*   438*/                  OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*   440*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_remuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>), 4294967295:{ *:[i32] }) - Complexity = 19
                            // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   448*/                /*Scope*/ 10, /*->459*/
/*   449*/                  OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*   451*/                  OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                                MVT::i32, 2/*#Ops*/, 0, 1,
                            // Src: (and:{ *:[i32] } (riscv_remuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>), 4294967295:{ *:[i32] }) - Complexity = 19
                            // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   459*/                0, /*End of Scope*/
/*   460*/              /*SwitchType*/ 10, MVT::i64,// ->472
/*   462*/                OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*   464*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                              MVT::i64, 2/*#Ops*/, 0, 1,
                          // Src: (and:{ *:[i64] } (riscv_remuw:{ *:[i64] } (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_assertzexti32>>, (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs2)<<P:Predicate_assertzexti32>>), 4294967295:{ *:[i64] }) - Complexity = 19
                          // Dst: (REMU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*   472*/              0, // EndSwitchType
/*   473*/            0, /*End of Scope*/
/*   474*/          0, /*End of Scope*/
/*   475*/        0, // EndSwitchOpcode
/*   476*/      /*Scope*/ 83, /*->560*/
/*   477*/        OPC_RecordChild0, // #0 = $rs1
/*   478*/        OPC_SwitchType /*2 cases */, 52, MVT::i32,// ->533
/*   481*/          OPC_Scope, 24, /*->507*/ // 2 children in Scope
/*   483*/            OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*   485*/            OPC_EmitInteger, MVT::i32, 32,
/*   488*/            OPC_EmitNode1, TARGET_VAL(RISCV::SLLI), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/*   496*/            OPC_EmitInteger, MVT::i32, 32,
/*   499*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRLI), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }) - Complexity = 8
                      // Dst: (SRLI:{ *:[i32] } (SLLI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 32:{ *:[i32] }), 32:{ *:[i32] })
/*   507*/          /*Scope*/ 24, /*->532*/
/*   508*/            OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*   510*/            OPC_EmitInteger, MVT::i32, 32,
/*   513*/            OPC_EmitNode1, TARGET_VAL(RISCV::SLLI), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/*   521*/            OPC_EmitInteger, MVT::i32, 32,
/*   524*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRLI), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }) - Complexity = 8
                      // Dst: (SRLI:{ *:[i32] } (SLLI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 32:{ *:[i32] }), 32:{ *:[i32] })
/*   532*/          0, /*End of Scope*/
/*   533*/        /*SwitchType*/ 24, MVT::i64,// ->559
/*   535*/          OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*   537*/          OPC_EmitInteger, MVT::i64, 32,
/*   540*/          OPC_EmitNode1, TARGET_VAL(RISCV::SLLI), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #2
/*   548*/          OPC_EmitInteger, MVT::i64, 32,
/*   551*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRLI), 0,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 4294967295:{ *:[i64] }) - Complexity = 8
                    // Dst: (SRLI:{ *:[i64] } (SLLI:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 32:{ *:[i64] }), 32:{ *:[i64] })
/*   559*/        0, // EndSwitchType
/*   560*/      0, /*End of Scope*/
/*   561*/    /*Scope*/ 94, /*->656*/
/*   562*/      OPC_RecordChild0, // #0 = $rs1
/*   563*/      OPC_RecordChild1, // #1 = $imm12
/*   564*/      OPC_Scope, 51, /*->617*/ // 3 children in Scope
/*   566*/        OPC_MoveChild1,
/*   567*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*   570*/        OPC_CheckPredicate, 1, // Predicate_simm12
/*   572*/        OPC_MoveParent,
/*   573*/        OPC_SwitchType /*2 cases */, 26, MVT::i32,// ->602
/*   576*/          OPC_Scope, 12, /*->590*/ // 2 children in Scope
/*   578*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*   580*/            OPC_EmitConvertToTarget, 1,
/*   582*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::ANDI), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,
                      // Src: (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12) - Complexity = 7
                      // Dst: (ANDI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*   590*/          /*Scope*/ 10, /*->601*/
/*   591*/            OPC_EmitConvertToTarget, 1,
/*   593*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::ANDI), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,
                      // Src: (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12) - Complexity = 7
                      // Dst: (ANDI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*   601*/          0, /*End of Scope*/
/*   602*/        /*SwitchType*/ 12, MVT::i64,// ->616
/*   604*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*   606*/          OPC_EmitConvertToTarget, 1,
/*   608*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::ANDI), 0,
                        MVT::i64, 2/*#Ops*/, 0, 2,
                    // Src: (and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12) - Complexity = 7
                    // Dst: (ANDI:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*   616*/        0, // EndSwitchType
/*   617*/      /*Scope*/ 24, /*->642*/
/*   618*/        OPC_CheckType, MVT::i32,
/*   620*/        OPC_Scope, 10, /*->632*/ // 2 children in Scope
/*   622*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*   624*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AND), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                    // Dst: (AND:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   632*/        /*Scope*/ 8, /*->641*/
/*   633*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AND), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                    // Dst: (AND:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   641*/        0, /*End of Scope*/
/*   642*/      /*Scope*/ 12, /*->655*/
/*   643*/        OPC_CheckType, MVT::i64,
/*   645*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*   647*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::AND), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1,
                  // Src: (and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                  // Dst: (AND:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*   655*/      0, /*End of Scope*/
/*   656*/    0, /*End of Scope*/
/*   657*/  /*SwitchOpcode*/ 91|128,3/*475*/, TARGET_VAL(ISD::AssertZext),// ->1136
/*   661*/    OPC_MoveChild0,
/*   662*/    OPC_SwitchOpcode /*2 cases */, 104|128,1/*232*/, TARGET_VAL(RISCVISD::DIVUW),// ->899
/*   667*/      OPC_MoveChild0,
/*   668*/      OPC_Scope, 114, /*->784*/ // 2 children in Scope
/*   670*/        OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15/*4294967295*/,
/*   676*/        OPC_RecordChild0, // #0 = $rs1
/*   677*/        OPC_MoveParent,
/*   678*/        OPC_MoveChild1,
/*   679*/        OPC_Scope, 51, /*->732*/ // 2 children in Scope
/*   681*/          OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15/*4294967295*/,
/*   687*/          OPC_RecordChild0, // #1 = $rs2
/*   688*/          OPC_MoveParent,
/*   689*/          OPC_MoveParent,
/*   690*/          OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*   692*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->719
/*   695*/            OPC_Scope, 10, /*->707*/ // 2 children in Scope
/*   697*/              OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*   699*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_divuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })))<<P:Predicate_assertzexti32>> - Complexity = 23
                        // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   707*/            /*Scope*/ 10, /*->718*/
/*   708*/              OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*   710*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_divuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })))<<P:Predicate_assertzexti32>> - Complexity = 23
                        // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   718*/            0, /*End of Scope*/
/*   719*/          /*SwitchType*/ 10, MVT::i64,// ->731
/*   721*/            OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*   723*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,
                      // Src: (assertzext:{ *:[i64] } (riscv_divuw:{ *:[i64] } (and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 4294967295:{ *:[i64] }), (and:{ *:[i64] } GPR:{ *:[i64] }:$rs2, 4294967295:{ *:[i64] })))<<P:Predicate_assertzexti32>> - Complexity = 23
                      // Dst: (DIVU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*   731*/          0, // EndSwitchType
/*   732*/        /*Scope*/ 50, /*->783*/
/*   733*/          OPC_CheckOpcode, TARGET_VAL(ISD::AssertZext),
/*   736*/          OPC_RecordChild0, // #1 = $rs2
/*   737*/          OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*   739*/          OPC_MoveParent,
/*   740*/          OPC_MoveParent,
/*   741*/          OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*   743*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->770
/*   746*/            OPC_Scope, 10, /*->758*/ // 2 children in Scope
/*   748*/              OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*   750*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_divuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>))<<P:Predicate_assertzexti32>> - Complexity = 19
                        // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   758*/            /*Scope*/ 10, /*->769*/
/*   759*/              OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*   761*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_divuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>))<<P:Predicate_assertzexti32>> - Complexity = 19
                        // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   769*/            0, /*End of Scope*/
/*   770*/          /*SwitchType*/ 10, MVT::i64,// ->782
/*   772*/            OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*   774*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,
                      // Src: (assertzext:{ *:[i64] } (riscv_divuw:{ *:[i64] } (and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 4294967295:{ *:[i64] }), (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs2)<<P:Predicate_assertzexti32>>))<<P:Predicate_assertzexti32>> - Complexity = 19
                      // Dst: (DIVU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*   782*/          0, // EndSwitchType
/*   783*/        0, /*End of Scope*/
/*   784*/      /*Scope*/ 113, /*->898*/
/*   785*/        OPC_CheckOpcode, TARGET_VAL(ISD::AssertZext),
/*   788*/        OPC_RecordChild0, // #0 = $rs1
/*   789*/        OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*   791*/        OPC_MoveParent,
/*   792*/        OPC_MoveChild1,
/*   793*/        OPC_Scope, 51, /*->846*/ // 2 children in Scope
/*   795*/          OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15/*4294967295*/,
/*   801*/          OPC_RecordChild0, // #1 = $rs2
/*   802*/          OPC_MoveParent,
/*   803*/          OPC_MoveParent,
/*   804*/          OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*   806*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->833
/*   809*/            OPC_Scope, 10, /*->821*/ // 2 children in Scope
/*   811*/              OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*   813*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_divuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })))<<P:Predicate_assertzexti32>> - Complexity = 19
                        // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   821*/            /*Scope*/ 10, /*->832*/
/*   822*/              OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*   824*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_divuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })))<<P:Predicate_assertzexti32>> - Complexity = 19
                        // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   832*/            0, /*End of Scope*/
/*   833*/          /*SwitchType*/ 10, MVT::i64,// ->845
/*   835*/            OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*   837*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,
                      // Src: (assertzext:{ *:[i64] } (riscv_divuw:{ *:[i64] } (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_assertzexti32>>, (and:{ *:[i64] } GPR:{ *:[i64] }:$rs2, 4294967295:{ *:[i64] })))<<P:Predicate_assertzexti32>> - Complexity = 19
                      // Dst: (DIVU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*   845*/          0, // EndSwitchType
/*   846*/        /*Scope*/ 50, /*->897*/
/*   847*/          OPC_CheckOpcode, TARGET_VAL(ISD::AssertZext),
/*   850*/          OPC_RecordChild0, // #1 = $rs2
/*   851*/          OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*   853*/          OPC_MoveParent,
/*   854*/          OPC_MoveParent,
/*   855*/          OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*   857*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->884
/*   860*/            OPC_Scope, 10, /*->872*/ // 2 children in Scope
/*   862*/              OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*   864*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_divuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>))<<P:Predicate_assertzexti32>> - Complexity = 15
                        // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   872*/            /*Scope*/ 10, /*->883*/
/*   873*/              OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*   875*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_divuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>))<<P:Predicate_assertzexti32>> - Complexity = 15
                        // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   883*/            0, /*End of Scope*/
/*   884*/          /*SwitchType*/ 10, MVT::i64,// ->896
/*   886*/            OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("64bit"))
/*   888*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,
                      // Src: (assertzext:{ *:[i64] } (riscv_divuw:{ *:[i64] } (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_assertzexti32>>, (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs2)<<P:Predicate_assertzexti32>>))<<P:Predicate_assertzexti32>> - Complexity = 15
                      // Dst: (DIVU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*   896*/          0, // EndSwitchType
/*   897*/        0, /*End of Scope*/
/*   898*/      0, /*End of Scope*/
/*   899*/    /*SwitchOpcode*/ 104|128,1/*232*/, TARGET_VAL(RISCVISD::REMUW),// ->1135
/*   903*/      OPC_MoveChild0,
/*   904*/      OPC_Scope, 114, /*->1020*/ // 2 children in Scope
/*   906*/        OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15/*4294967295*/,
/*   912*/        OPC_RecordChild0, // #0 = $rs1
/*   913*/        OPC_MoveParent,
/*   914*/        OPC_MoveChild1,
/*   915*/        OPC_Scope, 51, /*->968*/ // 2 children in Scope
/*   917*/          OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15/*4294967295*/,
/*   923*/          OPC_RecordChild0, // #1 = $rs2
/*   924*/          OPC_MoveParent,
/*   925*/          OPC_MoveParent,
/*   926*/          OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*   928*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->955
/*   931*/            OPC_Scope, 10, /*->943*/ // 2 children in Scope
/*   933*/              OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*   935*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_remuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })))<<P:Predicate_assertzexti32>> - Complexity = 23
                        // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   943*/            /*Scope*/ 10, /*->954*/
/*   944*/              OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*   946*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_remuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })))<<P:Predicate_assertzexti32>> - Complexity = 23
                        // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   954*/            0, /*End of Scope*/
/*   955*/          /*SwitchType*/ 10, MVT::i64,// ->967
/*   957*/            OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*   959*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,
                      // Src: (assertzext:{ *:[i64] } (riscv_remuw:{ *:[i64] } (and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 4294967295:{ *:[i64] }), (and:{ *:[i64] } GPR:{ *:[i64] }:$rs2, 4294967295:{ *:[i64] })))<<P:Predicate_assertzexti32>> - Complexity = 23
                      // Dst: (REMU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*   967*/          0, // EndSwitchType
/*   968*/        /*Scope*/ 50, /*->1019*/
/*   969*/          OPC_CheckOpcode, TARGET_VAL(ISD::AssertZext),
/*   972*/          OPC_RecordChild0, // #1 = $rs2
/*   973*/          OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*   975*/          OPC_MoveParent,
/*   976*/          OPC_MoveParent,
/*   977*/          OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*   979*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->1006
/*   982*/            OPC_Scope, 10, /*->994*/ // 2 children in Scope
/*   984*/              OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*   986*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_remuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>))<<P:Predicate_assertzexti32>> - Complexity = 19
                        // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*   994*/            /*Scope*/ 10, /*->1005*/
/*   995*/              OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*   997*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_remuw:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] }), (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>))<<P:Predicate_assertzexti32>> - Complexity = 19
                        // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*  1005*/            0, /*End of Scope*/
/*  1006*/          /*SwitchType*/ 10, MVT::i64,// ->1018
/*  1008*/            OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  1010*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,
                      // Src: (assertzext:{ *:[i64] } (riscv_remuw:{ *:[i64] } (and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 4294967295:{ *:[i64] }), (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs2)<<P:Predicate_assertzexti32>>))<<P:Predicate_assertzexti32>> - Complexity = 19
                      // Dst: (REMU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*  1018*/          0, // EndSwitchType
/*  1019*/        0, /*End of Scope*/
/*  1020*/      /*Scope*/ 113, /*->1134*/
/*  1021*/        OPC_CheckOpcode, TARGET_VAL(ISD::AssertZext),
/*  1024*/        OPC_RecordChild0, // #0 = $rs1
/*  1025*/        OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*  1027*/        OPC_MoveParent,
/*  1028*/        OPC_MoveChild1,
/*  1029*/        OPC_Scope, 51, /*->1082*/ // 2 children in Scope
/*  1031*/          OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15/*4294967295*/,
/*  1037*/          OPC_RecordChild0, // #1 = $rs2
/*  1038*/          OPC_MoveParent,
/*  1039*/          OPC_MoveParent,
/*  1040*/          OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*  1042*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->1069
/*  1045*/            OPC_Scope, 10, /*->1057*/ // 2 children in Scope
/*  1047*/              OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  1049*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_remuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })))<<P:Predicate_assertzexti32>> - Complexity = 19
                        // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*  1057*/            /*Scope*/ 10, /*->1068*/
/*  1058*/              OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*  1060*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_remuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, 4294967295:{ *:[i32] })))<<P:Predicate_assertzexti32>> - Complexity = 19
                        // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*  1068*/            0, /*End of Scope*/
/*  1069*/          /*SwitchType*/ 10, MVT::i64,// ->1081
/*  1071*/            OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  1073*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,
                      // Src: (assertzext:{ *:[i64] } (riscv_remuw:{ *:[i64] } (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_assertzexti32>>, (and:{ *:[i64] } GPR:{ *:[i64] }:$rs2, 4294967295:{ *:[i64] })))<<P:Predicate_assertzexti32>> - Complexity = 19
                      // Dst: (REMU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*  1081*/          0, // EndSwitchType
/*  1082*/        /*Scope*/ 50, /*->1133*/
/*  1083*/          OPC_CheckOpcode, TARGET_VAL(ISD::AssertZext),
/*  1086*/          OPC_RecordChild0, // #1 = $rs2
/*  1087*/          OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*  1089*/          OPC_MoveParent,
/*  1090*/          OPC_MoveParent,
/*  1091*/          OPC_CheckPredicate, 0, // Predicate_assertzexti32
/*  1093*/          OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->1120
/*  1096*/            OPC_Scope, 10, /*->1108*/ // 2 children in Scope
/*  1098*/              OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  1100*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_remuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>))<<P:Predicate_assertzexti32>> - Complexity = 15
                        // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*  1108*/            /*Scope*/ 10, /*->1119*/
/*  1109*/              OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/*  1111*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 1,
                        // Src: (assertzext:{ *:[i32] } (riscv_remuw:{ *:[i32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>, (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs2)<<P:Predicate_assertzexti32>>))<<P:Predicate_assertzexti32>> - Complexity = 15
                        // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*  1119*/            0, /*End of Scope*/
/*  1120*/          /*SwitchType*/ 10, MVT::i64,// ->1132
/*  1122*/            OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  1124*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,
                      // Src: (assertzext:{ *:[i64] } (riscv_remuw:{ *:[i64] } (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_assertzexti32>>, (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs2)<<P:Predicate_assertzexti32>>))<<P:Predicate_assertzexti32>> - Complexity = 15
                      // Dst: (REMU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*  1132*/          0, // EndSwitchType
/*  1133*/        0, /*End of Scope*/
/*  1134*/      0, /*End of Scope*/
/*  1135*/    0, // EndSwitchOpcode
/*  1136*/  /*SwitchOpcode*/ 80|128,30/*3920*/, TARGET_VAL(ISD::LOAD),// ->5060
/*  1140*/    OPC_RecordMemRef,
/*  1141*/    OPC_RecordNode, // #0 = 'ld' chained node
/*  1142*/    OPC_Scope, 48|128,15/*1968*/, /*->3113*/ // 4 children in Scope
/*  1145*/      OPC_MoveChild1,
/*  1146*/      OPC_SwitchOpcode /*2 cases */, 57|128,5/*697*/, TARGET_VAL(ISD::OR),// ->1848
/*  1151*/        OPC_RecordChild0, // #1 = $rs1
/*  1152*/        OPC_RecordChild1, // #2 = $imm12
/*  1153*/        OPC_MoveChild1,
/*  1154*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  1157*/        OPC_CheckPredicate, 1, // Predicate_simm12
/*  1159*/        OPC_MoveParent,
/*  1160*/        OPC_CheckPredicate, 2, // Predicate_IsOrAdd
/*  1162*/        OPC_SwitchType /*2 cases */, 59|128,3/*443*/, MVT::i32,// ->1609
/*  1166*/          OPC_MoveParent,
/*  1167*/          OPC_CheckPredicate, 3, // Predicate_unindexedload
/*  1169*/          OPC_CheckType, MVT::i32,
/*  1171*/          OPC_Scope, 38, /*->1211*/ // 10 children in Scope
/*  1173*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  1175*/            OPC_CheckPredicate, 5, // Predicate_sextloadi8
/*  1177*/            OPC_Scope, 16, /*->1195*/ // 2 children in Scope
/*  1179*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  1181*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1184*/              OPC_EmitMergeInputChains1_0,
/*  1185*/              OPC_EmitConvertToTarget, 2,
/*  1187*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 18
                        // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1195*/            /*Scope*/ 14, /*->1210*/
/*  1196*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1199*/              OPC_EmitMergeInputChains1_0,
/*  1200*/              OPC_EmitConvertToTarget, 2,
/*  1202*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 18
                        // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1210*/            0, /*End of Scope*/
/*  1211*/          /*Scope*/ 38, /*->1250*/
/*  1212*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  1214*/            OPC_CheckPredicate, 5, // Predicate_extloadi8
/*  1216*/            OPC_Scope, 16, /*->1234*/ // 2 children in Scope
/*  1218*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  1220*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1223*/              OPC_EmitMergeInputChains1_0,
/*  1224*/              OPC_EmitConvertToTarget, 2,
/*  1226*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 18
                        // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1234*/            /*Scope*/ 14, /*->1249*/
/*  1235*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1238*/              OPC_EmitMergeInputChains1_0,
/*  1239*/              OPC_EmitConvertToTarget, 2,
/*  1241*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 18
                        // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1249*/            0, /*End of Scope*/
/*  1250*/          /*Scope*/ 38, /*->1289*/
/*  1251*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  1253*/            OPC_CheckPredicate, 7, // Predicate_sextloadi16
/*  1255*/            OPC_Scope, 16, /*->1273*/ // 2 children in Scope
/*  1257*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  1259*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1262*/              OPC_EmitMergeInputChains1_0,
/*  1263*/              OPC_EmitConvertToTarget, 2,
/*  1265*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 18
                        // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1273*/            /*Scope*/ 14, /*->1288*/
/*  1274*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1277*/              OPC_EmitMergeInputChains1_0,
/*  1278*/              OPC_EmitConvertToTarget, 2,
/*  1280*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 18
                        // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1288*/            0, /*End of Scope*/
/*  1289*/          /*Scope*/ 38, /*->1328*/
/*  1290*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  1292*/            OPC_CheckPredicate, 7, // Predicate_extloadi16
/*  1294*/            OPC_Scope, 16, /*->1312*/ // 2 children in Scope
/*  1296*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  1298*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1301*/              OPC_EmitMergeInputChains1_0,
/*  1302*/              OPC_EmitConvertToTarget, 2,
/*  1304*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 18
                        // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1312*/            /*Scope*/ 14, /*->1327*/
/*  1313*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1316*/              OPC_EmitMergeInputChains1_0,
/*  1317*/              OPC_EmitConvertToTarget, 2,
/*  1319*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 18
                        // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1327*/            0, /*End of Scope*/
/*  1328*/          /*Scope*/ 38, /*->1367*/
/*  1329*/            OPC_CheckPredicate, 8, // Predicate_load
/*  1331*/            OPC_Scope, 16, /*->1349*/ // 2 children in Scope
/*  1333*/              OPC_CheckPatternPredicate, 8, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  1335*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1338*/              OPC_EmitMergeInputChains1_0,
/*  1339*/              OPC_EmitConvertToTarget, 2,
/*  1341*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 18
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1349*/            /*Scope*/ 16, /*->1366*/
/*  1350*/              OPC_CheckPatternPredicate, 9, // (!Subtarget->is64Bit())
/*  1352*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1355*/              OPC_EmitMergeInputChains1_0,
/*  1356*/              OPC_EmitConvertToTarget, 2,
/*  1358*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 18
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1366*/            0, /*End of Scope*/
/*  1367*/          /*Scope*/ 78, /*->1446*/
/*  1368*/            OPC_CheckPredicate, 9, // Predicate_zextload
/*  1370*/            OPC_Scope, 36, /*->1408*/ // 2 children in Scope
/*  1372*/              OPC_CheckPredicate, 5, // Predicate_zextloadi8
/*  1374*/              OPC_Scope, 16, /*->1392*/ // 2 children in Scope
/*  1376*/                OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  1378*/                OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1381*/                OPC_EmitMergeInputChains1_0,
/*  1382*/                OPC_EmitConvertToTarget, 2,
/*  1384*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::LBU), 0|OPFL_Chain|OPFL_MemRefs,
                              MVT::i32, 2/*#Ops*/, 3, 4,
                          // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 18
                          // Dst: (LBU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1392*/              /*Scope*/ 14, /*->1407*/
/*  1393*/                OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1396*/                OPC_EmitMergeInputChains1_0,
/*  1397*/                OPC_EmitConvertToTarget, 2,
/*  1399*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::LBU), 0|OPFL_Chain|OPFL_MemRefs,
                              MVT::i32, 2/*#Ops*/, 3, 4,
                          // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 18
                          // Dst: (LBU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1407*/              0, /*End of Scope*/
/*  1408*/            /*Scope*/ 36, /*->1445*/
/*  1409*/              OPC_CheckPredicate, 7, // Predicate_zextloadi16
/*  1411*/              OPC_Scope, 16, /*->1429*/ // 2 children in Scope
/*  1413*/                OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  1415*/                OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1418*/                OPC_EmitMergeInputChains1_0,
/*  1419*/                OPC_EmitConvertToTarget, 2,
/*  1421*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::LHU), 0|OPFL_Chain|OPFL_MemRefs,
                              MVT::i32, 2/*#Ops*/, 3, 4,
                          // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 18
                          // Dst: (LHU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1429*/              /*Scope*/ 14, /*->1444*/
/*  1430*/                OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1433*/                OPC_EmitMergeInputChains1_0,
/*  1434*/                OPC_EmitConvertToTarget, 2,
/*  1436*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::LHU), 0|OPFL_Chain|OPFL_MemRefs,
                              MVT::i32, 2/*#Ops*/, 3, 4,
                          // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 18
                          // Dst: (LHU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1444*/              0, /*End of Scope*/
/*  1445*/            0, /*End of Scope*/
/*  1446*/          /*Scope*/ 40, /*->1487*/
/*  1447*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  1449*/            OPC_CheckPredicate, 10, // Predicate_sextloadi32
/*  1451*/            OPC_Scope, 16, /*->1469*/ // 2 children in Scope
/*  1453*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  1455*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1458*/              OPC_EmitMergeInputChains1_0,
/*  1459*/              OPC_EmitConvertToTarget, 2,
/*  1461*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 18
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1469*/            /*Scope*/ 16, /*->1486*/
/*  1470*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  1472*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1475*/              OPC_EmitMergeInputChains1_0,
/*  1476*/              OPC_EmitConvertToTarget, 2,
/*  1478*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 18
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1486*/            0, /*End of Scope*/
/*  1487*/          /*Scope*/ 40, /*->1528*/
/*  1488*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  1490*/            OPC_CheckPredicate, 10, // Predicate_extloadi32
/*  1492*/            OPC_Scope, 16, /*->1510*/ // 2 children in Scope
/*  1494*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  1496*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1499*/              OPC_EmitMergeInputChains1_0,
/*  1500*/              OPC_EmitConvertToTarget, 2,
/*  1502*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 18
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1510*/            /*Scope*/ 16, /*->1527*/
/*  1511*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  1513*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1516*/              OPC_EmitMergeInputChains1_0,
/*  1517*/              OPC_EmitConvertToTarget, 2,
/*  1519*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 18
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1527*/            0, /*End of Scope*/
/*  1528*/          /*Scope*/ 40, /*->1569*/
/*  1529*/            OPC_CheckPredicate, 9, // Predicate_zextload
/*  1531*/            OPC_CheckPredicate, 10, // Predicate_zextloadi32
/*  1533*/            OPC_Scope, 16, /*->1551*/ // 2 children in Scope
/*  1535*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  1537*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1540*/              OPC_EmitMergeInputChains1_0,
/*  1541*/              OPC_EmitConvertToTarget, 2,
/*  1543*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LWU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 18
                        // Dst: (LWU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1551*/            /*Scope*/ 16, /*->1568*/
/*  1552*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  1554*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1557*/              OPC_EmitMergeInputChains1_0,
/*  1558*/              OPC_EmitConvertToTarget, 2,
/*  1560*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LWU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 18
                        // Dst: (LWU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1568*/            0, /*End of Scope*/
/*  1569*/          /*Scope*/ 38, /*->1608*/
/*  1570*/            OPC_CheckPredicate, 8, // Predicate_load
/*  1572*/            OPC_Scope, 16, /*->1590*/ // 2 children in Scope
/*  1574*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  1576*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1579*/              OPC_EmitMergeInputChains1_0,
/*  1580*/              OPC_EmitConvertToTarget, 2,
/*  1582*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 18
                        // Dst: (LD:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1590*/            /*Scope*/ 16, /*->1607*/
/*  1591*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  1593*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1596*/              OPC_EmitMergeInputChains1_0,
/*  1597*/              OPC_EmitConvertToTarget, 2,
/*  1599*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 18
                        // Dst: (LD:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1607*/            0, /*End of Scope*/
/*  1608*/          0, /*End of Scope*/
/*  1609*/        /*SwitchType*/ 107|128,1/*235*/, MVT::i64,// ->1847
/*  1612*/          OPC_MoveParent,
/*  1613*/          OPC_CheckPredicate, 3, // Predicate_unindexedload
/*  1615*/          OPC_CheckType, MVT::i64,
/*  1617*/          OPC_Scope, 20, /*->1639*/ // 10 children in Scope
/*  1619*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  1621*/            OPC_CheckPredicate, 5, // Predicate_sextloadi8
/*  1623*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  1625*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1628*/            OPC_EmitMergeInputChains1_0,
/*  1629*/            OPC_EmitConvertToTarget, 2,
/*  1631*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 18
                      // Dst: (LB:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  1639*/          /*Scope*/ 20, /*->1660*/
/*  1640*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  1642*/            OPC_CheckPredicate, 5, // Predicate_extloadi8
/*  1644*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  1646*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1649*/            OPC_EmitMergeInputChains1_0,
/*  1650*/            OPC_EmitConvertToTarget, 2,
/*  1652*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 18
                      // Dst: (LB:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  1660*/          /*Scope*/ 20, /*->1681*/
/*  1661*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  1663*/            OPC_CheckPredicate, 7, // Predicate_sextloadi16
/*  1665*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  1667*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1670*/            OPC_EmitMergeInputChains1_0,
/*  1671*/            OPC_EmitConvertToTarget, 2,
/*  1673*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 18
                      // Dst: (LH:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  1681*/          /*Scope*/ 20, /*->1702*/
/*  1682*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  1684*/            OPC_CheckPredicate, 7, // Predicate_extloadi16
/*  1686*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  1688*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1691*/            OPC_EmitMergeInputChains1_0,
/*  1692*/            OPC_EmitConvertToTarget, 2,
/*  1694*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 18
                      // Dst: (LH:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  1702*/          /*Scope*/ 18, /*->1721*/
/*  1703*/            OPC_CheckPredicate, 8, // Predicate_load
/*  1705*/            OPC_CheckPatternPredicate, 10, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  1707*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1710*/            OPC_EmitMergeInputChains1_0,
/*  1711*/            OPC_EmitConvertToTarget, 2,
/*  1713*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 18
                      // Dst: (LW:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  1721*/          /*Scope*/ 42, /*->1764*/
/*  1722*/            OPC_CheckPredicate, 9, // Predicate_zextload
/*  1724*/            OPC_Scope, 18, /*->1744*/ // 2 children in Scope
/*  1726*/              OPC_CheckPredicate, 5, // Predicate_zextloadi8
/*  1728*/              OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  1730*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1733*/              OPC_EmitMergeInputChains1_0,
/*  1734*/              OPC_EmitConvertToTarget, 2,
/*  1736*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LBU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i64, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 18
                        // Dst: (LBU:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  1744*/            /*Scope*/ 18, /*->1763*/
/*  1745*/              OPC_CheckPredicate, 7, // Predicate_zextloadi16
/*  1747*/              OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  1749*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1752*/              OPC_EmitMergeInputChains1_0,
/*  1753*/              OPC_EmitConvertToTarget, 2,
/*  1755*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LHU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i64, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 18
                        // Dst: (LHU:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  1763*/            0, /*End of Scope*/
/*  1764*/          /*Scope*/ 20, /*->1785*/
/*  1765*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  1767*/            OPC_CheckPredicate, 10, // Predicate_sextloadi32
/*  1769*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  1771*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1774*/            OPC_EmitMergeInputChains1_0,
/*  1775*/            OPC_EmitConvertToTarget, 2,
/*  1777*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 18
                      // Dst: (LW:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  1785*/          /*Scope*/ 20, /*->1806*/
/*  1786*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  1788*/            OPC_CheckPredicate, 10, // Predicate_extloadi32
/*  1790*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  1792*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1795*/            OPC_EmitMergeInputChains1_0,
/*  1796*/            OPC_EmitConvertToTarget, 2,
/*  1798*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 18
                      // Dst: (LW:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  1806*/          /*Scope*/ 20, /*->1827*/
/*  1807*/            OPC_CheckPredicate, 9, // Predicate_zextload
/*  1809*/            OPC_CheckPredicate, 10, // Predicate_zextloadi32
/*  1811*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  1813*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1816*/            OPC_EmitMergeInputChains1_0,
/*  1817*/            OPC_EmitConvertToTarget, 2,
/*  1819*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LWU), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 18
                      // Dst: (LWU:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  1827*/          /*Scope*/ 18, /*->1846*/
/*  1828*/            OPC_CheckPredicate, 8, // Predicate_load
/*  1830*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  1832*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1835*/            OPC_EmitMergeInputChains1_0,
/*  1836*/            OPC_EmitConvertToTarget, 2,
/*  1838*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 18
                      // Dst: (LD:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  1846*/          0, /*End of Scope*/
/*  1847*/        0, // EndSwitchType
/*  1848*/      /*SwitchOpcode*/ 108|128,9/*1260*/, TARGET_VAL(ISD::ADD),// ->3112
/*  1852*/        OPC_RecordChild0, // #1 = $rs1
/*  1853*/        OPC_RecordChild1, // #2 = $imm12
/*  1854*/        OPC_MoveChild1,
/*  1855*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  1858*/        OPC_CheckPredicate, 1, // Predicate_simm12
/*  1860*/        OPC_MoveParent,
/*  1861*/        OPC_SwitchType /*2 cases */, 45|128,6/*813*/, MVT::i32,// ->2678
/*  1865*/          OPC_MoveParent,
/*  1866*/          OPC_CheckPredicate, 3, // Predicate_unindexedload
/*  1868*/          OPC_CheckType, MVT::i32,
/*  1870*/          OPC_Scope, 38, /*->1910*/ // 20 children in Scope
/*  1872*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  1874*/            OPC_CheckPredicate, 5, // Predicate_sextloadi8
/*  1876*/            OPC_Scope, 16, /*->1894*/ // 2 children in Scope
/*  1878*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  1880*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1883*/              OPC_EmitMergeInputChains1_0,
/*  1884*/              OPC_EmitConvertToTarget, 2,
/*  1886*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 17
                        // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1894*/            /*Scope*/ 14, /*->1909*/
/*  1895*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1898*/              OPC_EmitMergeInputChains1_0,
/*  1899*/              OPC_EmitConvertToTarget, 2,
/*  1901*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 17
                        // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1909*/            0, /*End of Scope*/
/*  1910*/          /*Scope*/ 38, /*->1949*/
/*  1911*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  1913*/            OPC_CheckPredicate, 5, // Predicate_extloadi8
/*  1915*/            OPC_Scope, 16, /*->1933*/ // 2 children in Scope
/*  1917*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  1919*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1922*/              OPC_EmitMergeInputChains1_0,
/*  1923*/              OPC_EmitConvertToTarget, 2,
/*  1925*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 17
                        // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1933*/            /*Scope*/ 14, /*->1948*/
/*  1934*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1937*/              OPC_EmitMergeInputChains1_0,
/*  1938*/              OPC_EmitConvertToTarget, 2,
/*  1940*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 17
                        // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1948*/            0, /*End of Scope*/
/*  1949*/          /*Scope*/ 38, /*->1988*/
/*  1950*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  1952*/            OPC_CheckPredicate, 7, // Predicate_sextloadi16
/*  1954*/            OPC_Scope, 16, /*->1972*/ // 2 children in Scope
/*  1956*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  1958*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1961*/              OPC_EmitMergeInputChains1_0,
/*  1962*/              OPC_EmitConvertToTarget, 2,
/*  1964*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 17
                        // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1972*/            /*Scope*/ 14, /*->1987*/
/*  1973*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  1976*/              OPC_EmitMergeInputChains1_0,
/*  1977*/              OPC_EmitConvertToTarget, 2,
/*  1979*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 17
                        // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  1987*/            0, /*End of Scope*/
/*  1988*/          /*Scope*/ 38, /*->2027*/
/*  1989*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  1991*/            OPC_CheckPredicate, 7, // Predicate_extloadi16
/*  1993*/            OPC_Scope, 16, /*->2011*/ // 2 children in Scope
/*  1995*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  1997*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2000*/              OPC_EmitMergeInputChains1_0,
/*  2001*/              OPC_EmitConvertToTarget, 2,
/*  2003*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 17
                        // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2011*/            /*Scope*/ 14, /*->2026*/
/*  2012*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2015*/              OPC_EmitMergeInputChains1_0,
/*  2016*/              OPC_EmitConvertToTarget, 2,
/*  2018*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 17
                        // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2026*/            0, /*End of Scope*/
/*  2027*/          /*Scope*/ 38, /*->2066*/
/*  2028*/            OPC_CheckPredicate, 8, // Predicate_load
/*  2030*/            OPC_Scope, 16, /*->2048*/ // 2 children in Scope
/*  2032*/              OPC_CheckPatternPredicate, 8, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  2034*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2037*/              OPC_EmitMergeInputChains1_0,
/*  2038*/              OPC_EmitConvertToTarget, 2,
/*  2040*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 17
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2048*/            /*Scope*/ 16, /*->2065*/
/*  2049*/              OPC_CheckPatternPredicate, 9, // (!Subtarget->is64Bit())
/*  2051*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2054*/              OPC_EmitMergeInputChains1_0,
/*  2055*/              OPC_EmitConvertToTarget, 2,
/*  2057*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 17
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2065*/            0, /*End of Scope*/
/*  2066*/          /*Scope*/ 78, /*->2145*/
/*  2067*/            OPC_CheckPredicate, 9, // Predicate_zextload
/*  2069*/            OPC_Scope, 36, /*->2107*/ // 2 children in Scope
/*  2071*/              OPC_CheckPredicate, 5, // Predicate_zextloadi8
/*  2073*/              OPC_Scope, 16, /*->2091*/ // 2 children in Scope
/*  2075*/                OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  2077*/                OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2080*/                OPC_EmitMergeInputChains1_0,
/*  2081*/                OPC_EmitConvertToTarget, 2,
/*  2083*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::LBU), 0|OPFL_Chain|OPFL_MemRefs,
                              MVT::i32, 2/*#Ops*/, 3, 4,
                          // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 17
                          // Dst: (LBU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2091*/              /*Scope*/ 14, /*->2106*/
/*  2092*/                OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2095*/                OPC_EmitMergeInputChains1_0,
/*  2096*/                OPC_EmitConvertToTarget, 2,
/*  2098*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::LBU), 0|OPFL_Chain|OPFL_MemRefs,
                              MVT::i32, 2/*#Ops*/, 3, 4,
                          // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 17
                          // Dst: (LBU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2106*/              0, /*End of Scope*/
/*  2107*/            /*Scope*/ 36, /*->2144*/
/*  2108*/              OPC_CheckPredicate, 7, // Predicate_zextloadi16
/*  2110*/              OPC_Scope, 16, /*->2128*/ // 2 children in Scope
/*  2112*/                OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  2114*/                OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2117*/                OPC_EmitMergeInputChains1_0,
/*  2118*/                OPC_EmitConvertToTarget, 2,
/*  2120*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::LHU), 0|OPFL_Chain|OPFL_MemRefs,
                              MVT::i32, 2/*#Ops*/, 3, 4,
                          // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 17
                          // Dst: (LHU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2128*/              /*Scope*/ 14, /*->2143*/
/*  2129*/                OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2132*/                OPC_EmitMergeInputChains1_0,
/*  2133*/                OPC_EmitConvertToTarget, 2,
/*  2135*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::LHU), 0|OPFL_Chain|OPFL_MemRefs,
                              MVT::i32, 2/*#Ops*/, 3, 4,
                          // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 17
                          // Dst: (LHU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2143*/              0, /*End of Scope*/
/*  2144*/            0, /*End of Scope*/
/*  2145*/          /*Scope*/ 40, /*->2186*/
/*  2146*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  2148*/            OPC_CheckPredicate, 10, // Predicate_sextloadi32
/*  2150*/            OPC_Scope, 16, /*->2168*/ // 2 children in Scope
/*  2152*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  2154*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2157*/              OPC_EmitMergeInputChains1_0,
/*  2158*/              OPC_EmitConvertToTarget, 2,
/*  2160*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 17
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2168*/            /*Scope*/ 16, /*->2185*/
/*  2169*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  2171*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2174*/              OPC_EmitMergeInputChains1_0,
/*  2175*/              OPC_EmitConvertToTarget, 2,
/*  2177*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 17
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2185*/            0, /*End of Scope*/
/*  2186*/          /*Scope*/ 40, /*->2227*/
/*  2187*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  2189*/            OPC_CheckPredicate, 10, // Predicate_extloadi32
/*  2191*/            OPC_Scope, 16, /*->2209*/ // 2 children in Scope
/*  2193*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  2195*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2198*/              OPC_EmitMergeInputChains1_0,
/*  2199*/              OPC_EmitConvertToTarget, 2,
/*  2201*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 17
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2209*/            /*Scope*/ 16, /*->2226*/
/*  2210*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  2212*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2215*/              OPC_EmitMergeInputChains1_0,
/*  2216*/              OPC_EmitConvertToTarget, 2,
/*  2218*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 17
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2226*/            0, /*End of Scope*/
/*  2227*/          /*Scope*/ 40, /*->2268*/
/*  2228*/            OPC_CheckPredicate, 9, // Predicate_zextload
/*  2230*/            OPC_CheckPredicate, 10, // Predicate_zextloadi32
/*  2232*/            OPC_Scope, 16, /*->2250*/ // 2 children in Scope
/*  2234*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  2236*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2239*/              OPC_EmitMergeInputChains1_0,
/*  2240*/              OPC_EmitConvertToTarget, 2,
/*  2242*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LWU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 17
                        // Dst: (LWU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2250*/            /*Scope*/ 16, /*->2267*/
/*  2251*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  2253*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2256*/              OPC_EmitMergeInputChains1_0,
/*  2257*/              OPC_EmitConvertToTarget, 2,
/*  2259*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LWU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 17
                        // Dst: (LWU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2267*/            0, /*End of Scope*/
/*  2268*/          /*Scope*/ 38, /*->2307*/
/*  2269*/            OPC_CheckPredicate, 8, // Predicate_load
/*  2271*/            OPC_Scope, 16, /*->2289*/ // 2 children in Scope
/*  2273*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  2275*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2278*/              OPC_EmitMergeInputChains1_0,
/*  2279*/              OPC_EmitConvertToTarget, 2,
/*  2281*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 17
                        // Dst: (LD:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2289*/            /*Scope*/ 16, /*->2306*/
/*  2290*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  2292*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2295*/              OPC_EmitMergeInputChains1_0,
/*  2296*/              OPC_EmitConvertToTarget, 2,
/*  2298*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 17
                        // Dst: (LD:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2306*/            0, /*End of Scope*/
/*  2307*/          /*Scope*/ 32, /*->2340*/
/*  2308*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  2310*/            OPC_CheckPredicate, 5, // Predicate_sextloadi8
/*  2312*/            OPC_Scope, 13, /*->2327*/ // 2 children in Scope
/*  2314*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  2316*/              OPC_EmitMergeInputChains1_0,
/*  2317*/              OPC_EmitConvertToTarget, 2,
/*  2319*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 11
                        // Dst: (LB:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2327*/            /*Scope*/ 11, /*->2339*/
/*  2328*/              OPC_EmitMergeInputChains1_0,
/*  2329*/              OPC_EmitConvertToTarget, 2,
/*  2331*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 11
                        // Dst: (LB:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2339*/            0, /*End of Scope*/
/*  2340*/          /*Scope*/ 32, /*->2373*/
/*  2341*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  2343*/            OPC_CheckPredicate, 5, // Predicate_extloadi8
/*  2345*/            OPC_Scope, 13, /*->2360*/ // 2 children in Scope
/*  2347*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  2349*/              OPC_EmitMergeInputChains1_0,
/*  2350*/              OPC_EmitConvertToTarget, 2,
/*  2352*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 11
                        // Dst: (LB:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2360*/            /*Scope*/ 11, /*->2372*/
/*  2361*/              OPC_EmitMergeInputChains1_0,
/*  2362*/              OPC_EmitConvertToTarget, 2,
/*  2364*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 11
                        // Dst: (LB:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2372*/            0, /*End of Scope*/
/*  2373*/          /*Scope*/ 32, /*->2406*/
/*  2374*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  2376*/            OPC_CheckPredicate, 7, // Predicate_sextloadi16
/*  2378*/            OPC_Scope, 13, /*->2393*/ // 2 children in Scope
/*  2380*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  2382*/              OPC_EmitMergeInputChains1_0,
/*  2383*/              OPC_EmitConvertToTarget, 2,
/*  2385*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 11
                        // Dst: (LH:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2393*/            /*Scope*/ 11, /*->2405*/
/*  2394*/              OPC_EmitMergeInputChains1_0,
/*  2395*/              OPC_EmitConvertToTarget, 2,
/*  2397*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 11
                        // Dst: (LH:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2405*/            0, /*End of Scope*/
/*  2406*/          /*Scope*/ 32, /*->2439*/
/*  2407*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  2409*/            OPC_CheckPredicate, 7, // Predicate_extloadi16
/*  2411*/            OPC_Scope, 13, /*->2426*/ // 2 children in Scope
/*  2413*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  2415*/              OPC_EmitMergeInputChains1_0,
/*  2416*/              OPC_EmitConvertToTarget, 2,
/*  2418*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 11
                        // Dst: (LH:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2426*/            /*Scope*/ 11, /*->2438*/
/*  2427*/              OPC_EmitMergeInputChains1_0,
/*  2428*/              OPC_EmitConvertToTarget, 2,
/*  2430*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 11
                        // Dst: (LH:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2438*/            0, /*End of Scope*/
/*  2439*/          /*Scope*/ 32, /*->2472*/
/*  2440*/            OPC_CheckPredicate, 8, // Predicate_load
/*  2442*/            OPC_Scope, 13, /*->2457*/ // 2 children in Scope
/*  2444*/              OPC_CheckPatternPredicate, 8, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  2446*/              OPC_EmitMergeInputChains1_0,
/*  2447*/              OPC_EmitConvertToTarget, 2,
/*  2449*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 11
                        // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2457*/            /*Scope*/ 13, /*->2471*/
/*  2458*/              OPC_CheckPatternPredicate, 9, // (!Subtarget->is64Bit())
/*  2460*/              OPC_EmitMergeInputChains1_0,
/*  2461*/              OPC_EmitConvertToTarget, 2,
/*  2463*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 11
                        // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2471*/            0, /*End of Scope*/
/*  2472*/          /*Scope*/ 66, /*->2539*/
/*  2473*/            OPC_CheckPredicate, 9, // Predicate_zextload
/*  2475*/            OPC_Scope, 30, /*->2507*/ // 2 children in Scope
/*  2477*/              OPC_CheckPredicate, 5, // Predicate_zextloadi8
/*  2479*/              OPC_Scope, 13, /*->2494*/ // 2 children in Scope
/*  2481*/                OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  2483*/                OPC_EmitMergeInputChains1_0,
/*  2484*/                OPC_EmitConvertToTarget, 2,
/*  2486*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::LBU), 0|OPFL_Chain|OPFL_MemRefs,
                              MVT::i32, 2/*#Ops*/, 1, 3,
                          // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 11
                          // Dst: (LBU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2494*/              /*Scope*/ 11, /*->2506*/
/*  2495*/                OPC_EmitMergeInputChains1_0,
/*  2496*/                OPC_EmitConvertToTarget, 2,
/*  2498*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::LBU), 0|OPFL_Chain|OPFL_MemRefs,
                              MVT::i32, 2/*#Ops*/, 1, 3,
                          // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 11
                          // Dst: (LBU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2506*/              0, /*End of Scope*/
/*  2507*/            /*Scope*/ 30, /*->2538*/
/*  2508*/              OPC_CheckPredicate, 7, // Predicate_zextloadi16
/*  2510*/              OPC_Scope, 13, /*->2525*/ // 2 children in Scope
/*  2512*/                OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  2514*/                OPC_EmitMergeInputChains1_0,
/*  2515*/                OPC_EmitConvertToTarget, 2,
/*  2517*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::LHU), 0|OPFL_Chain|OPFL_MemRefs,
                              MVT::i32, 2/*#Ops*/, 1, 3,
                          // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 11
                          // Dst: (LHU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2525*/              /*Scope*/ 11, /*->2537*/
/*  2526*/                OPC_EmitMergeInputChains1_0,
/*  2527*/                OPC_EmitConvertToTarget, 2,
/*  2529*/                OPC_MorphNodeTo1, TARGET_VAL(RISCV::LHU), 0|OPFL_Chain|OPFL_MemRefs,
                              MVT::i32, 2/*#Ops*/, 1, 3,
                          // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 11
                          // Dst: (LHU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2537*/              0, /*End of Scope*/
/*  2538*/            0, /*End of Scope*/
/*  2539*/          /*Scope*/ 34, /*->2574*/
/*  2540*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  2542*/            OPC_CheckPredicate, 10, // Predicate_sextloadi32
/*  2544*/            OPC_Scope, 13, /*->2559*/ // 2 children in Scope
/*  2546*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  2548*/              OPC_EmitMergeInputChains1_0,
/*  2549*/              OPC_EmitConvertToTarget, 2,
/*  2551*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 11
                        // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2559*/            /*Scope*/ 13, /*->2573*/
/*  2560*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  2562*/              OPC_EmitMergeInputChains1_0,
/*  2563*/              OPC_EmitConvertToTarget, 2,
/*  2565*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 11
                        // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2573*/            0, /*End of Scope*/
/*  2574*/          /*Scope*/ 34, /*->2609*/
/*  2575*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  2577*/            OPC_CheckPredicate, 10, // Predicate_extloadi32
/*  2579*/            OPC_Scope, 13, /*->2594*/ // 2 children in Scope
/*  2581*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  2583*/              OPC_EmitMergeInputChains1_0,
/*  2584*/              OPC_EmitConvertToTarget, 2,
/*  2586*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 11
                        // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2594*/            /*Scope*/ 13, /*->2608*/
/*  2595*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  2597*/              OPC_EmitMergeInputChains1_0,
/*  2598*/              OPC_EmitConvertToTarget, 2,
/*  2600*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 11
                        // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2608*/            0, /*End of Scope*/
/*  2609*/          /*Scope*/ 34, /*->2644*/
/*  2610*/            OPC_CheckPredicate, 9, // Predicate_zextload
/*  2612*/            OPC_CheckPredicate, 10, // Predicate_zextloadi32
/*  2614*/            OPC_Scope, 13, /*->2629*/ // 2 children in Scope
/*  2616*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  2618*/              OPC_EmitMergeInputChains1_0,
/*  2619*/              OPC_EmitConvertToTarget, 2,
/*  2621*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LWU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 11
                        // Dst: (LWU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2629*/            /*Scope*/ 13, /*->2643*/
/*  2630*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  2632*/              OPC_EmitMergeInputChains1_0,
/*  2633*/              OPC_EmitConvertToTarget, 2,
/*  2635*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LWU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 11
                        // Dst: (LWU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2643*/            0, /*End of Scope*/
/*  2644*/          /*Scope*/ 32, /*->2677*/
/*  2645*/            OPC_CheckPredicate, 8, // Predicate_load
/*  2647*/            OPC_Scope, 13, /*->2662*/ // 2 children in Scope
/*  2649*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  2651*/              OPC_EmitMergeInputChains1_0,
/*  2652*/              OPC_EmitConvertToTarget, 2,
/*  2654*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 11
                        // Dst: (LD:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2662*/            /*Scope*/ 13, /*->2676*/
/*  2663*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  2665*/              OPC_EmitMergeInputChains1_0,
/*  2666*/              OPC_EmitConvertToTarget, 2,
/*  2668*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 11
                        // Dst: (LD:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  2676*/            0, /*End of Scope*/
/*  2677*/          0, /*End of Scope*/
/*  2678*/        /*SwitchType*/ 46|128,3/*430*/, MVT::i64,// ->3111
/*  2681*/          OPC_MoveParent,
/*  2682*/          OPC_CheckPredicate, 3, // Predicate_unindexedload
/*  2684*/          OPC_CheckType, MVT::i64,
/*  2686*/          OPC_Scope, 20, /*->2708*/ // 20 children in Scope
/*  2688*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  2690*/            OPC_CheckPredicate, 5, // Predicate_sextloadi8
/*  2692*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  2694*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2697*/            OPC_EmitMergeInputChains1_0,
/*  2698*/            OPC_EmitConvertToTarget, 2,
/*  2700*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 17
                      // Dst: (LB:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  2708*/          /*Scope*/ 20, /*->2729*/
/*  2709*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  2711*/            OPC_CheckPredicate, 5, // Predicate_extloadi8
/*  2713*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  2715*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2718*/            OPC_EmitMergeInputChains1_0,
/*  2719*/            OPC_EmitConvertToTarget, 2,
/*  2721*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 17
                      // Dst: (LB:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  2729*/          /*Scope*/ 20, /*->2750*/
/*  2730*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  2732*/            OPC_CheckPredicate, 7, // Predicate_sextloadi16
/*  2734*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  2736*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2739*/            OPC_EmitMergeInputChains1_0,
/*  2740*/            OPC_EmitConvertToTarget, 2,
/*  2742*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 17
                      // Dst: (LH:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  2750*/          /*Scope*/ 20, /*->2771*/
/*  2751*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  2753*/            OPC_CheckPredicate, 7, // Predicate_extloadi16
/*  2755*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  2757*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2760*/            OPC_EmitMergeInputChains1_0,
/*  2761*/            OPC_EmitConvertToTarget, 2,
/*  2763*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 17
                      // Dst: (LH:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  2771*/          /*Scope*/ 18, /*->2790*/
/*  2772*/            OPC_CheckPredicate, 8, // Predicate_load
/*  2774*/            OPC_CheckPatternPredicate, 10, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  2776*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2779*/            OPC_EmitMergeInputChains1_0,
/*  2780*/            OPC_EmitConvertToTarget, 2,
/*  2782*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 17
                      // Dst: (LW:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  2790*/          /*Scope*/ 42, /*->2833*/
/*  2791*/            OPC_CheckPredicate, 9, // Predicate_zextload
/*  2793*/            OPC_Scope, 18, /*->2813*/ // 2 children in Scope
/*  2795*/              OPC_CheckPredicate, 5, // Predicate_zextloadi8
/*  2797*/              OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  2799*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2802*/              OPC_EmitMergeInputChains1_0,
/*  2803*/              OPC_EmitConvertToTarget, 2,
/*  2805*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LBU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i64, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 17
                        // Dst: (LBU:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  2813*/            /*Scope*/ 18, /*->2832*/
/*  2814*/              OPC_CheckPredicate, 7, // Predicate_zextloadi16
/*  2816*/              OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  2818*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2821*/              OPC_EmitMergeInputChains1_0,
/*  2822*/              OPC_EmitConvertToTarget, 2,
/*  2824*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LHU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i64, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[i64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 17
                        // Dst: (LHU:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  2832*/            0, /*End of Scope*/
/*  2833*/          /*Scope*/ 20, /*->2854*/
/*  2834*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  2836*/            OPC_CheckPredicate, 10, // Predicate_sextloadi32
/*  2838*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  2840*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2843*/            OPC_EmitMergeInputChains1_0,
/*  2844*/            OPC_EmitConvertToTarget, 2,
/*  2846*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 17
                      // Dst: (LW:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  2854*/          /*Scope*/ 20, /*->2875*/
/*  2855*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  2857*/            OPC_CheckPredicate, 10, // Predicate_extloadi32
/*  2859*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  2861*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2864*/            OPC_EmitMergeInputChains1_0,
/*  2865*/            OPC_EmitConvertToTarget, 2,
/*  2867*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 17
                      // Dst: (LW:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  2875*/          /*Scope*/ 20, /*->2896*/
/*  2876*/            OPC_CheckPredicate, 9, // Predicate_zextload
/*  2878*/            OPC_CheckPredicate, 10, // Predicate_zextloadi32
/*  2880*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  2882*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2885*/            OPC_EmitMergeInputChains1_0,
/*  2886*/            OPC_EmitConvertToTarget, 2,
/*  2888*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LWU), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 17
                      // Dst: (LWU:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  2896*/          /*Scope*/ 18, /*->2915*/
/*  2897*/            OPC_CheckPredicate, 8, // Predicate_load
/*  2899*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  2901*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  2904*/            OPC_EmitMergeInputChains1_0,
/*  2905*/            OPC_EmitConvertToTarget, 2,
/*  2907*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 17
                      // Dst: (LD:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  2915*/          /*Scope*/ 17, /*->2933*/
/*  2916*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  2918*/            OPC_CheckPredicate, 5, // Predicate_sextloadi8
/*  2920*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  2922*/            OPC_EmitMergeInputChains1_0,
/*  2923*/            OPC_EmitConvertToTarget, 2,
/*  2925*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 1, 3,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 11
                      // Dst: (LB:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  2933*/          /*Scope*/ 17, /*->2951*/
/*  2934*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  2936*/            OPC_CheckPredicate, 5, // Predicate_extloadi8
/*  2938*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  2940*/            OPC_EmitMergeInputChains1_0,
/*  2941*/            OPC_EmitConvertToTarget, 2,
/*  2943*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 1, 3,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 11
                      // Dst: (LB:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  2951*/          /*Scope*/ 17, /*->2969*/
/*  2952*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  2954*/            OPC_CheckPredicate, 7, // Predicate_sextloadi16
/*  2956*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  2958*/            OPC_EmitMergeInputChains1_0,
/*  2959*/            OPC_EmitConvertToTarget, 2,
/*  2961*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 1, 3,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 11
                      // Dst: (LH:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  2969*/          /*Scope*/ 17, /*->2987*/
/*  2970*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  2972*/            OPC_CheckPredicate, 7, // Predicate_extloadi16
/*  2974*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  2976*/            OPC_EmitMergeInputChains1_0,
/*  2977*/            OPC_EmitConvertToTarget, 2,
/*  2979*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 1, 3,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 11
                      // Dst: (LH:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  2987*/          /*Scope*/ 15, /*->3003*/
/*  2988*/            OPC_CheckPredicate, 8, // Predicate_load
/*  2990*/            OPC_CheckPatternPredicate, 10, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  2992*/            OPC_EmitMergeInputChains1_0,
/*  2993*/            OPC_EmitConvertToTarget, 2,
/*  2995*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 1, 3,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 11
                      // Dst: (LW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  3003*/          /*Scope*/ 36, /*->3040*/
/*  3004*/            OPC_CheckPredicate, 9, // Predicate_zextload
/*  3006*/            OPC_Scope, 15, /*->3023*/ // 2 children in Scope
/*  3008*/              OPC_CheckPredicate, 5, // Predicate_zextloadi8
/*  3010*/              OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  3012*/              OPC_EmitMergeInputChains1_0,
/*  3013*/              OPC_EmitConvertToTarget, 2,
/*  3015*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LBU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i64, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 11
                        // Dst: (LBU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  3023*/            /*Scope*/ 15, /*->3039*/
/*  3024*/              OPC_CheckPredicate, 7, // Predicate_zextloadi16
/*  3026*/              OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  3028*/              OPC_EmitMergeInputChains1_0,
/*  3029*/              OPC_EmitConvertToTarget, 2,
/*  3031*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LHU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i64, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 11
                        // Dst: (LHU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  3039*/            0, /*End of Scope*/
/*  3040*/          /*Scope*/ 17, /*->3058*/
/*  3041*/            OPC_CheckPredicate, 4, // Predicate_sextload
/*  3043*/            OPC_CheckPredicate, 10, // Predicate_sextloadi32
/*  3045*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  3047*/            OPC_EmitMergeInputChains1_0,
/*  3048*/            OPC_EmitConvertToTarget, 2,
/*  3050*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 1, 3,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 11
                      // Dst: (LW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  3058*/          /*Scope*/ 17, /*->3076*/
/*  3059*/            OPC_CheckPredicate, 6, // Predicate_extload
/*  3061*/            OPC_CheckPredicate, 10, // Predicate_extloadi32
/*  3063*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  3065*/            OPC_EmitMergeInputChains1_0,
/*  3066*/            OPC_EmitConvertToTarget, 2,
/*  3068*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 1, 3,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 11
                      // Dst: (LW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  3076*/          /*Scope*/ 17, /*->3094*/
/*  3077*/            OPC_CheckPredicate, 9, // Predicate_zextload
/*  3079*/            OPC_CheckPredicate, 10, // Predicate_zextloadi32
/*  3081*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  3083*/            OPC_EmitMergeInputChains1_0,
/*  3084*/            OPC_EmitConvertToTarget, 2,
/*  3086*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LWU), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 1, 3,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 11
                      // Dst: (LWU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  3094*/          /*Scope*/ 15, /*->3110*/
/*  3095*/            OPC_CheckPredicate, 8, // Predicate_load
/*  3097*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  3099*/            OPC_EmitMergeInputChains1_0,
/*  3100*/            OPC_EmitConvertToTarget, 2,
/*  3102*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 1, 3,
                      // Src: (ld:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 11
                      // Dst: (LD:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  3110*/          0, /*End of Scope*/
/*  3111*/        0, // EndSwitchType
/*  3112*/      0, // EndSwitchOpcode
/*  3113*/    /*Scope*/ 51|128,10/*1331*/, /*->4446*/
/*  3115*/      OPC_RecordChild1, // #1 = $rs1
/*  3116*/      OPC_CheckPredicate, 3, // Predicate_unindexedload
/*  3118*/      OPC_Scope, 63, /*->3183*/ // 12 children in Scope
/*  3120*/        OPC_CheckPredicate, 4, // Predicate_sextload
/*  3122*/        OPC_CheckPredicate, 5, // Predicate_sextloadi8
/*  3124*/        OPC_SwitchType /*2 cases */, 36, MVT::i32,// ->3163
/*  3127*/          OPC_Scope, 17, /*->3146*/ // 2 children in Scope
/*  3129*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  3131*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3134*/            OPC_EmitMergeInputChains1_0,
/*  3135*/            OPC_EmitInteger, MVT::i32, 0,
/*  3138*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 10
                      // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3146*/          /*Scope*/ 15, /*->3162*/
/*  3147*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3150*/            OPC_EmitMergeInputChains1_0,
/*  3151*/            OPC_EmitInteger, MVT::i32, 0,
/*  3154*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 10
                      // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3162*/          0, /*End of Scope*/
/*  3163*/        /*SwitchType*/ 17, MVT::i64,// ->3182
/*  3165*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  3167*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3170*/          OPC_EmitMergeInputChains1_0,
/*  3171*/          OPC_EmitInteger, MVT::i64, 0,
/*  3174*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (ld:{ *:[i64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 10
                    // Dst: (LB:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  3182*/        0, // EndSwitchType
/*  3183*/      /*Scope*/ 63, /*->3247*/
/*  3184*/        OPC_CheckPredicate, 6, // Predicate_extload
/*  3186*/        OPC_CheckPredicate, 5, // Predicate_extloadi8
/*  3188*/        OPC_SwitchType /*2 cases */, 36, MVT::i32,// ->3227
/*  3191*/          OPC_Scope, 17, /*->3210*/ // 2 children in Scope
/*  3193*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  3195*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3198*/            OPC_EmitMergeInputChains1_0,
/*  3199*/            OPC_EmitInteger, MVT::i32, 0,
/*  3202*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 10
                      // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3210*/          /*Scope*/ 15, /*->3226*/
/*  3211*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3214*/            OPC_EmitMergeInputChains1_0,
/*  3215*/            OPC_EmitInteger, MVT::i32, 0,
/*  3218*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 10
                      // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3226*/          0, /*End of Scope*/
/*  3227*/        /*SwitchType*/ 17, MVT::i64,// ->3246
/*  3229*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  3231*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3234*/          OPC_EmitMergeInputChains1_0,
/*  3235*/          OPC_EmitInteger, MVT::i64, 0,
/*  3238*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (ld:{ *:[i64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 10
                    // Dst: (LB:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  3246*/        0, // EndSwitchType
/*  3247*/      /*Scope*/ 63, /*->3311*/
/*  3248*/        OPC_CheckPredicate, 4, // Predicate_sextload
/*  3250*/        OPC_CheckPredicate, 7, // Predicate_sextloadi16
/*  3252*/        OPC_SwitchType /*2 cases */, 36, MVT::i32,// ->3291
/*  3255*/          OPC_Scope, 17, /*->3274*/ // 2 children in Scope
/*  3257*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  3259*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3262*/            OPC_EmitMergeInputChains1_0,
/*  3263*/            OPC_EmitInteger, MVT::i32, 0,
/*  3266*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 10
                      // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3274*/          /*Scope*/ 15, /*->3290*/
/*  3275*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3278*/            OPC_EmitMergeInputChains1_0,
/*  3279*/            OPC_EmitInteger, MVT::i32, 0,
/*  3282*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 10
                      // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3290*/          0, /*End of Scope*/
/*  3291*/        /*SwitchType*/ 17, MVT::i64,// ->3310
/*  3293*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  3295*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3298*/          OPC_EmitMergeInputChains1_0,
/*  3299*/          OPC_EmitInteger, MVT::i64, 0,
/*  3302*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (ld:{ *:[i64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 10
                    // Dst: (LH:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  3310*/        0, // EndSwitchType
/*  3311*/      /*Scope*/ 63, /*->3375*/
/*  3312*/        OPC_CheckPredicate, 6, // Predicate_extload
/*  3314*/        OPC_CheckPredicate, 7, // Predicate_extloadi16
/*  3316*/        OPC_SwitchType /*2 cases */, 36, MVT::i32,// ->3355
/*  3319*/          OPC_Scope, 17, /*->3338*/ // 2 children in Scope
/*  3321*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  3323*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3326*/            OPC_EmitMergeInputChains1_0,
/*  3327*/            OPC_EmitInteger, MVT::i32, 0,
/*  3330*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 10
                      // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3338*/          /*Scope*/ 15, /*->3354*/
/*  3339*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3342*/            OPC_EmitMergeInputChains1_0,
/*  3343*/            OPC_EmitInteger, MVT::i32, 0,
/*  3346*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 10
                      // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3354*/          0, /*End of Scope*/
/*  3355*/        /*SwitchType*/ 17, MVT::i64,// ->3374
/*  3357*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  3359*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3362*/          OPC_EmitMergeInputChains1_0,
/*  3363*/          OPC_EmitInteger, MVT::i64, 0,
/*  3366*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (ld:{ *:[i64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 10
                    // Dst: (LH:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  3374*/        0, // EndSwitchType
/*  3375*/      /*Scope*/ 63, /*->3439*/
/*  3376*/        OPC_CheckPredicate, 8, // Predicate_load
/*  3378*/        OPC_SwitchType /*2 cases */, 38, MVT::i32,// ->3419
/*  3381*/          OPC_Scope, 17, /*->3400*/ // 2 children in Scope
/*  3383*/            OPC_CheckPatternPredicate, 8, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  3385*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3388*/            OPC_EmitMergeInputChains1_0,
/*  3389*/            OPC_EmitInteger, MVT::i32, 0,
/*  3392*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 10
                      // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3400*/          /*Scope*/ 17, /*->3418*/
/*  3401*/            OPC_CheckPatternPredicate, 9, // (!Subtarget->is64Bit())
/*  3403*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3406*/            OPC_EmitMergeInputChains1_0,
/*  3407*/            OPC_EmitInteger, MVT::i32, 0,
/*  3410*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 10
                      // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3418*/          0, /*End of Scope*/
/*  3419*/        /*SwitchType*/ 17, MVT::i64,// ->3438
/*  3421*/          OPC_CheckPatternPredicate, 10, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  3423*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3426*/          OPC_EmitMergeInputChains1_0,
/*  3427*/          OPC_EmitInteger, MVT::i64, 0,
/*  3430*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (ld:{ *:[i64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 10
                    // Dst: (LW:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  3438*/        0, // EndSwitchType
/*  3439*/      /*Scope*/ 0|128,1/*128*/, /*->3569*/
/*  3441*/        OPC_CheckPredicate, 9, // Predicate_zextload
/*  3443*/        OPC_Scope, 61, /*->3506*/ // 2 children in Scope
/*  3445*/          OPC_CheckPredicate, 5, // Predicate_zextloadi8
/*  3447*/          OPC_SwitchType /*2 cases */, 36, MVT::i32,// ->3486
/*  3450*/            OPC_Scope, 17, /*->3469*/ // 2 children in Scope
/*  3452*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  3454*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3457*/              OPC_EmitMergeInputChains1_0,
/*  3458*/              OPC_EmitInteger, MVT::i32, 0,
/*  3461*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LBU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 2, 3,
                        // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 10
                        // Dst: (LBU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3469*/            /*Scope*/ 15, /*->3485*/
/*  3470*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3473*/              OPC_EmitMergeInputChains1_0,
/*  3474*/              OPC_EmitInteger, MVT::i32, 0,
/*  3477*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LBU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 2, 3,
                        // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 10
                        // Dst: (LBU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3485*/            0, /*End of Scope*/
/*  3486*/          /*SwitchType*/ 17, MVT::i64,// ->3505
/*  3488*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  3490*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3493*/            OPC_EmitMergeInputChains1_0,
/*  3494*/            OPC_EmitInteger, MVT::i64, 0,
/*  3497*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LBU), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 10
                      // Dst: (LBU:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  3505*/          0, // EndSwitchType
/*  3506*/        /*Scope*/ 61, /*->3568*/
/*  3507*/          OPC_CheckPredicate, 7, // Predicate_zextloadi16
/*  3509*/          OPC_SwitchType /*2 cases */, 36, MVT::i32,// ->3548
/*  3512*/            OPC_Scope, 17, /*->3531*/ // 2 children in Scope
/*  3514*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  3516*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3519*/              OPC_EmitMergeInputChains1_0,
/*  3520*/              OPC_EmitInteger, MVT::i32, 0,
/*  3523*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LHU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 2, 3,
                        // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 10
                        // Dst: (LHU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3531*/            /*Scope*/ 15, /*->3547*/
/*  3532*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3535*/              OPC_EmitMergeInputChains1_0,
/*  3536*/              OPC_EmitInteger, MVT::i32, 0,
/*  3539*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LHU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 2, 3,
                        // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 10
                        // Dst: (LHU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3547*/            0, /*End of Scope*/
/*  3548*/          /*SwitchType*/ 17, MVT::i64,// ->3567
/*  3550*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  3552*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3555*/            OPC_EmitMergeInputChains1_0,
/*  3556*/            OPC_EmitInteger, MVT::i64, 0,
/*  3559*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LHU), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 10
                      // Dst: (LHU:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  3567*/          0, // EndSwitchType
/*  3568*/        0, /*End of Scope*/
/*  3569*/      /*Scope*/ 65, /*->3635*/
/*  3570*/        OPC_CheckPredicate, 4, // Predicate_sextload
/*  3572*/        OPC_CheckPredicate, 10, // Predicate_sextloadi32
/*  3574*/        OPC_SwitchType /*2 cases */, 38, MVT::i32,// ->3615
/*  3577*/          OPC_Scope, 17, /*->3596*/ // 2 children in Scope
/*  3579*/            OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  3581*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3584*/            OPC_EmitMergeInputChains1_0,
/*  3585*/            OPC_EmitInteger, MVT::i32, 0,
/*  3588*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 10
                      // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3596*/          /*Scope*/ 17, /*->3614*/
/*  3597*/            OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  3599*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3602*/            OPC_EmitMergeInputChains1_0,
/*  3603*/            OPC_EmitInteger, MVT::i32, 0,
/*  3606*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 10
                      // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3614*/          0, /*End of Scope*/
/*  3615*/        /*SwitchType*/ 17, MVT::i64,// ->3634
/*  3617*/          OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  3619*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3622*/          OPC_EmitMergeInputChains1_0,
/*  3623*/          OPC_EmitInteger, MVT::i64, 0,
/*  3626*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (ld:{ *:[i64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 10
                    // Dst: (LW:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  3634*/        0, // EndSwitchType
/*  3635*/      /*Scope*/ 65, /*->3701*/
/*  3636*/        OPC_CheckPredicate, 6, // Predicate_extload
/*  3638*/        OPC_CheckPredicate, 10, // Predicate_extloadi32
/*  3640*/        OPC_SwitchType /*2 cases */, 38, MVT::i32,// ->3681
/*  3643*/          OPC_Scope, 17, /*->3662*/ // 2 children in Scope
/*  3645*/            OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  3647*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3650*/            OPC_EmitMergeInputChains1_0,
/*  3651*/            OPC_EmitInteger, MVT::i32, 0,
/*  3654*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 10
                      // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3662*/          /*Scope*/ 17, /*->3680*/
/*  3663*/            OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  3665*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3668*/            OPC_EmitMergeInputChains1_0,
/*  3669*/            OPC_EmitInteger, MVT::i32, 0,
/*  3672*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 10
                      // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3680*/          0, /*End of Scope*/
/*  3681*/        /*SwitchType*/ 17, MVT::i64,// ->3700
/*  3683*/          OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  3685*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3688*/          OPC_EmitMergeInputChains1_0,
/*  3689*/          OPC_EmitInteger, MVT::i64, 0,
/*  3692*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (ld:{ *:[i64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 10
                    // Dst: (LW:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  3700*/        0, // EndSwitchType
/*  3701*/      /*Scope*/ 65, /*->3767*/
/*  3702*/        OPC_CheckPredicate, 9, // Predicate_zextload
/*  3704*/        OPC_CheckPredicate, 10, // Predicate_zextloadi32
/*  3706*/        OPC_SwitchType /*2 cases */, 38, MVT::i32,// ->3747
/*  3709*/          OPC_Scope, 17, /*->3728*/ // 2 children in Scope
/*  3711*/            OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  3713*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3716*/            OPC_EmitMergeInputChains1_0,
/*  3717*/            OPC_EmitInteger, MVT::i32, 0,
/*  3720*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LWU), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 10
                      // Dst: (LWU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3728*/          /*Scope*/ 17, /*->3746*/
/*  3729*/            OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  3731*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3734*/            OPC_EmitMergeInputChains1_0,
/*  3735*/            OPC_EmitInteger, MVT::i32, 0,
/*  3738*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LWU), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 10
                      // Dst: (LWU:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3746*/          0, /*End of Scope*/
/*  3747*/        /*SwitchType*/ 17, MVT::i64,// ->3766
/*  3749*/          OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  3751*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3754*/          OPC_EmitMergeInputChains1_0,
/*  3755*/          OPC_EmitInteger, MVT::i64, 0,
/*  3758*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LWU), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (ld:{ *:[i64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 10
                    // Dst: (LWU:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  3766*/        0, // EndSwitchType
/*  3767*/      /*Scope*/ 63, /*->3831*/
/*  3768*/        OPC_CheckPredicate, 8, // Predicate_load
/*  3770*/        OPC_SwitchType /*2 cases */, 38, MVT::i32,// ->3811
/*  3773*/          OPC_Scope, 17, /*->3792*/ // 2 children in Scope
/*  3775*/            OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  3777*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3780*/            OPC_EmitMergeInputChains1_0,
/*  3781*/            OPC_EmitInteger, MVT::i32, 0,
/*  3784*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 10
                      // Dst: (LD:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3792*/          /*Scope*/ 17, /*->3810*/
/*  3793*/            OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  3795*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3798*/            OPC_EmitMergeInputChains1_0,
/*  3799*/            OPC_EmitInteger, MVT::i32, 0,
/*  3802*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (ld:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 10
                      // Dst: (LD:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3810*/          0, /*End of Scope*/
/*  3811*/        /*SwitchType*/ 17, MVT::i64,// ->3830
/*  3813*/          OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  3815*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  3818*/          OPC_EmitMergeInputChains1_0,
/*  3819*/          OPC_EmitInteger, MVT::i64, 0,
/*  3822*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (ld:{ *:[i64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 10
                    // Dst: (LD:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  3830*/        0, // EndSwitchType
/*  3831*/      /*Scope*/ 14|128,3/*398*/, /*->4231*/
/*  3833*/        OPC_CheckChild1Type, MVT::i32,
/*  3835*/        OPC_CheckType, MVT::i32,
/*  3837*/        OPC_Scope, 34, /*->3873*/ // 10 children in Scope
/*  3839*/          OPC_CheckPredicate, 4, // Predicate_sextload
/*  3841*/          OPC_CheckPredicate, 5, // Predicate_sextloadi8
/*  3843*/          OPC_Scope, 14, /*->3859*/ // 2 children in Scope
/*  3845*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  3847*/            OPC_EmitMergeInputChains1_0,
/*  3848*/            OPC_EmitInteger, MVT::i32, 0,
/*  3851*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 4
                      // Dst: (LB:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3859*/          /*Scope*/ 12, /*->3872*/
/*  3860*/            OPC_EmitMergeInputChains1_0,
/*  3861*/            OPC_EmitInteger, MVT::i32, 0,
/*  3864*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 4
                      // Dst: (LB:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3872*/          0, /*End of Scope*/
/*  3873*/        /*Scope*/ 34, /*->3908*/
/*  3874*/          OPC_CheckPredicate, 6, // Predicate_extload
/*  3876*/          OPC_CheckPredicate, 5, // Predicate_extloadi8
/*  3878*/          OPC_Scope, 14, /*->3894*/ // 2 children in Scope
/*  3880*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  3882*/            OPC_EmitMergeInputChains1_0,
/*  3883*/            OPC_EmitInteger, MVT::i32, 0,
/*  3886*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 4
                      // Dst: (LB:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3894*/          /*Scope*/ 12, /*->3907*/
/*  3895*/            OPC_EmitMergeInputChains1_0,
/*  3896*/            OPC_EmitInteger, MVT::i32, 0,
/*  3899*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 4
                      // Dst: (LB:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3907*/          0, /*End of Scope*/
/*  3908*/        /*Scope*/ 34, /*->3943*/
/*  3909*/          OPC_CheckPredicate, 4, // Predicate_sextload
/*  3911*/          OPC_CheckPredicate, 7, // Predicate_sextloadi16
/*  3913*/          OPC_Scope, 14, /*->3929*/ // 2 children in Scope
/*  3915*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  3917*/            OPC_EmitMergeInputChains1_0,
/*  3918*/            OPC_EmitInteger, MVT::i32, 0,
/*  3921*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 4
                      // Dst: (LH:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3929*/          /*Scope*/ 12, /*->3942*/
/*  3930*/            OPC_EmitMergeInputChains1_0,
/*  3931*/            OPC_EmitInteger, MVT::i32, 0,
/*  3934*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 4
                      // Dst: (LH:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3942*/          0, /*End of Scope*/
/*  3943*/        /*Scope*/ 34, /*->3978*/
/*  3944*/          OPC_CheckPredicate, 6, // Predicate_extload
/*  3946*/          OPC_CheckPredicate, 7, // Predicate_extloadi16
/*  3948*/          OPC_Scope, 14, /*->3964*/ // 2 children in Scope
/*  3950*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  3952*/            OPC_EmitMergeInputChains1_0,
/*  3953*/            OPC_EmitInteger, MVT::i32, 0,
/*  3956*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 4
                      // Dst: (LH:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3964*/          /*Scope*/ 12, /*->3977*/
/*  3965*/            OPC_EmitMergeInputChains1_0,
/*  3966*/            OPC_EmitInteger, MVT::i32, 0,
/*  3969*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 4
                      // Dst: (LH:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3977*/          0, /*End of Scope*/
/*  3978*/        /*Scope*/ 34, /*->4013*/
/*  3979*/          OPC_CheckPredicate, 8, // Predicate_load
/*  3981*/          OPC_Scope, 14, /*->3997*/ // 2 children in Scope
/*  3983*/            OPC_CheckPatternPredicate, 8, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  3985*/            OPC_EmitMergeInputChains1_0,
/*  3986*/            OPC_EmitInteger, MVT::i32, 0,
/*  3989*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 4
                      // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  3997*/          /*Scope*/ 14, /*->4012*/
/*  3998*/            OPC_CheckPatternPredicate, 9, // (!Subtarget->is64Bit())
/*  4000*/            OPC_EmitMergeInputChains1_0,
/*  4001*/            OPC_EmitInteger, MVT::i32, 0,
/*  4004*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 4
                      // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4012*/          0, /*End of Scope*/
/*  4013*/        /*Scope*/ 70, /*->4084*/
/*  4014*/          OPC_CheckPredicate, 9, // Predicate_zextload
/*  4016*/          OPC_Scope, 32, /*->4050*/ // 2 children in Scope
/*  4018*/            OPC_CheckPredicate, 5, // Predicate_zextloadi8
/*  4020*/            OPC_Scope, 14, /*->4036*/ // 2 children in Scope
/*  4022*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  4024*/              OPC_EmitMergeInputChains1_0,
/*  4025*/              OPC_EmitInteger, MVT::i32, 0,
/*  4028*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LBU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 2,
                        // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 4
                        // Dst: (LBU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4036*/            /*Scope*/ 12, /*->4049*/
/*  4037*/              OPC_EmitMergeInputChains1_0,
/*  4038*/              OPC_EmitInteger, MVT::i32, 0,
/*  4041*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LBU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 2,
                        // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 4
                        // Dst: (LBU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4049*/            0, /*End of Scope*/
/*  4050*/          /*Scope*/ 32, /*->4083*/
/*  4051*/            OPC_CheckPredicate, 7, // Predicate_zextloadi16
/*  4053*/            OPC_Scope, 14, /*->4069*/ // 2 children in Scope
/*  4055*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  4057*/              OPC_EmitMergeInputChains1_0,
/*  4058*/              OPC_EmitInteger, MVT::i32, 0,
/*  4061*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LHU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 2,
                        // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 4
                        // Dst: (LHU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4069*/            /*Scope*/ 12, /*->4082*/
/*  4070*/              OPC_EmitMergeInputChains1_0,
/*  4071*/              OPC_EmitInteger, MVT::i32, 0,
/*  4074*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LHU), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 2,
                        // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 4
                        // Dst: (LHU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4082*/            0, /*End of Scope*/
/*  4083*/          0, /*End of Scope*/
/*  4084*/        /*Scope*/ 36, /*->4121*/
/*  4085*/          OPC_CheckPredicate, 4, // Predicate_sextload
/*  4087*/          OPC_CheckPredicate, 10, // Predicate_sextloadi32
/*  4089*/          OPC_Scope, 14, /*->4105*/ // 2 children in Scope
/*  4091*/            OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  4093*/            OPC_EmitMergeInputChains1_0,
/*  4094*/            OPC_EmitInteger, MVT::i32, 0,
/*  4097*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 4
                      // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4105*/          /*Scope*/ 14, /*->4120*/
/*  4106*/            OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  4108*/            OPC_EmitMergeInputChains1_0,
/*  4109*/            OPC_EmitInteger, MVT::i32, 0,
/*  4112*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 4
                      // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4120*/          0, /*End of Scope*/
/*  4121*/        /*Scope*/ 36, /*->4158*/
/*  4122*/          OPC_CheckPredicate, 6, // Predicate_extload
/*  4124*/          OPC_CheckPredicate, 10, // Predicate_extloadi32
/*  4126*/          OPC_Scope, 14, /*->4142*/ // 2 children in Scope
/*  4128*/            OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  4130*/            OPC_EmitMergeInputChains1_0,
/*  4131*/            OPC_EmitInteger, MVT::i32, 0,
/*  4134*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 4
                      // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4142*/          /*Scope*/ 14, /*->4157*/
/*  4143*/            OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  4145*/            OPC_EmitMergeInputChains1_0,
/*  4146*/            OPC_EmitInteger, MVT::i32, 0,
/*  4149*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 4
                      // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4157*/          0, /*End of Scope*/
/*  4158*/        /*Scope*/ 36, /*->4195*/
/*  4159*/          OPC_CheckPredicate, 9, // Predicate_zextload
/*  4161*/          OPC_CheckPredicate, 10, // Predicate_zextloadi32
/*  4163*/          OPC_Scope, 14, /*->4179*/ // 2 children in Scope
/*  4165*/            OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  4167*/            OPC_EmitMergeInputChains1_0,
/*  4168*/            OPC_EmitInteger, MVT::i32, 0,
/*  4171*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LWU), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 4
                      // Dst: (LWU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4179*/          /*Scope*/ 14, /*->4194*/
/*  4180*/            OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  4182*/            OPC_EmitMergeInputChains1_0,
/*  4183*/            OPC_EmitInteger, MVT::i32, 0,
/*  4186*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LWU), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 4
                      // Dst: (LWU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4194*/          0, /*End of Scope*/
/*  4195*/        /*Scope*/ 34, /*->4230*/
/*  4196*/          OPC_CheckPredicate, 8, // Predicate_load
/*  4198*/          OPC_Scope, 14, /*->4214*/ // 2 children in Scope
/*  4200*/            OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  4202*/            OPC_EmitMergeInputChains1_0,
/*  4203*/            OPC_EmitInteger, MVT::i32, 0,
/*  4206*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 4
                      // Dst: (LD:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4214*/          /*Scope*/ 14, /*->4229*/
/*  4215*/            OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  4217*/            OPC_EmitMergeInputChains1_0,
/*  4218*/            OPC_EmitInteger, MVT::i32, 0,
/*  4221*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 4
                      // Dst: (LD:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4229*/          0, /*End of Scope*/
/*  4230*/        0, /*End of Scope*/
/*  4231*/      /*Scope*/ 84|128,1/*212*/, /*->4445*/
/*  4233*/        OPC_CheckChild1Type, MVT::i64,
/*  4235*/        OPC_CheckType, MVT::i64,
/*  4237*/        OPC_Scope, 18, /*->4257*/ // 10 children in Scope
/*  4239*/          OPC_CheckPredicate, 4, // Predicate_sextload
/*  4241*/          OPC_CheckPredicate, 5, // Predicate_sextloadi8
/*  4243*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  4245*/          OPC_EmitMergeInputChains1_0,
/*  4246*/          OPC_EmitInteger, MVT::i64, 0,
/*  4249*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (ld:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi8>> - Complexity = 4
                    // Dst: (LB:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  4257*/        /*Scope*/ 18, /*->4276*/
/*  4258*/          OPC_CheckPredicate, 6, // Predicate_extload
/*  4260*/          OPC_CheckPredicate, 5, // Predicate_extloadi8
/*  4262*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  4264*/          OPC_EmitMergeInputChains1_0,
/*  4265*/          OPC_EmitInteger, MVT::i64, 0,
/*  4268*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (ld:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi8>> - Complexity = 4
                    // Dst: (LB:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  4276*/        /*Scope*/ 18, /*->4295*/
/*  4277*/          OPC_CheckPredicate, 4, // Predicate_sextload
/*  4279*/          OPC_CheckPredicate, 7, // Predicate_sextloadi16
/*  4281*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  4283*/          OPC_EmitMergeInputChains1_0,
/*  4284*/          OPC_EmitInteger, MVT::i64, 0,
/*  4287*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (ld:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi16>> - Complexity = 4
                    // Dst: (LH:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  4295*/        /*Scope*/ 18, /*->4314*/
/*  4296*/          OPC_CheckPredicate, 6, // Predicate_extload
/*  4298*/          OPC_CheckPredicate, 7, // Predicate_extloadi16
/*  4300*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  4302*/          OPC_EmitMergeInputChains1_0,
/*  4303*/          OPC_EmitInteger, MVT::i64, 0,
/*  4306*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (ld:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi16>> - Complexity = 4
                    // Dst: (LH:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  4314*/        /*Scope*/ 16, /*->4331*/
/*  4315*/          OPC_CheckPredicate, 8, // Predicate_load
/*  4317*/          OPC_CheckPatternPredicate, 10, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  4319*/          OPC_EmitMergeInputChains1_0,
/*  4320*/          OPC_EmitInteger, MVT::i64, 0,
/*  4323*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (ld:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 4
                    // Dst: (LW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  4331*/        /*Scope*/ 38, /*->4370*/
/*  4332*/          OPC_CheckPredicate, 9, // Predicate_zextload
/*  4334*/          OPC_Scope, 16, /*->4352*/ // 2 children in Scope
/*  4336*/            OPC_CheckPredicate, 5, // Predicate_zextloadi8
/*  4338*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  4340*/            OPC_EmitMergeInputChains1_0,
/*  4341*/            OPC_EmitInteger, MVT::i64, 0,
/*  4344*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LBU), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi8>> - Complexity = 4
                      // Dst: (LBU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  4352*/          /*Scope*/ 16, /*->4369*/
/*  4353*/            OPC_CheckPredicate, 7, // Predicate_zextloadi16
/*  4355*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  4357*/            OPC_EmitMergeInputChains1_0,
/*  4358*/            OPC_EmitInteger, MVT::i64, 0,
/*  4361*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LHU), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi16>> - Complexity = 4
                      // Dst: (LHU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  4369*/          0, /*End of Scope*/
/*  4370*/        /*Scope*/ 18, /*->4389*/
/*  4371*/          OPC_CheckPredicate, 4, // Predicate_sextload
/*  4373*/          OPC_CheckPredicate, 10, // Predicate_sextloadi32
/*  4375*/          OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  4377*/          OPC_EmitMergeInputChains1_0,
/*  4378*/          OPC_EmitInteger, MVT::i64, 0,
/*  4381*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (ld:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_sextload>><<P:Predicate_sextloadi32>> - Complexity = 4
                    // Dst: (LW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  4389*/        /*Scope*/ 18, /*->4408*/
/*  4390*/          OPC_CheckPredicate, 6, // Predicate_extload
/*  4392*/          OPC_CheckPredicate, 10, // Predicate_extloadi32
/*  4394*/          OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  4396*/          OPC_EmitMergeInputChains1_0,
/*  4397*/          OPC_EmitInteger, MVT::i64, 0,
/*  4400*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (ld:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_extload>><<P:Predicate_extloadi32>> - Complexity = 4
                    // Dst: (LW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  4408*/        /*Scope*/ 18, /*->4427*/
/*  4409*/          OPC_CheckPredicate, 9, // Predicate_zextload
/*  4411*/          OPC_CheckPredicate, 10, // Predicate_zextloadi32
/*  4413*/          OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  4415*/          OPC_EmitMergeInputChains1_0,
/*  4416*/          OPC_EmitInteger, MVT::i64, 0,
/*  4419*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LWU), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (ld:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_zextload>><<P:Predicate_zextloadi32>> - Complexity = 4
                    // Dst: (LWU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  4427*/        /*Scope*/ 16, /*->4444*/
/*  4428*/          OPC_CheckPredicate, 8, // Predicate_load
/*  4430*/          OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  4432*/          OPC_EmitMergeInputChains1_0,
/*  4433*/          OPC_EmitInteger, MVT::i64, 0,
/*  4436*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (ld:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 4
                    // Dst: (LD:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  4444*/        0, /*End of Scope*/
/*  4445*/      0, /*End of Scope*/
/*  4446*/    /*Scope*/ 126|128,2/*382*/, /*->4830*/
/*  4448*/      OPC_MoveChild1,
/*  4449*/      OPC_SwitchOpcode /*2 cases */, 15|128,1/*143*/, TARGET_VAL(ISD::OR),// ->4597
/*  4454*/        OPC_RecordChild0, // #1 = $rs1
/*  4455*/        OPC_RecordChild1, // #2 = $imm12
/*  4456*/        OPC_MoveChild1,
/*  4457*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  4460*/        OPC_CheckPredicate, 1, // Predicate_simm12
/*  4462*/        OPC_MoveParent,
/*  4463*/        OPC_CheckPredicate, 2, // Predicate_IsOrAdd
/*  4465*/        OPC_SwitchType /*2 cases */, 83, MVT::i32,// ->4551
/*  4468*/          OPC_MoveParent,
/*  4469*/          OPC_CheckPredicate, 3, // Predicate_unindexedload
/*  4471*/          OPC_CheckPredicate, 8, // Predicate_load
/*  4473*/          OPC_SwitchType /*2 cases */, 36, MVT::f32,// ->4512
/*  4476*/            OPC_Scope, 16, /*->4494*/ // 2 children in Scope
/*  4478*/              OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  4480*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  4483*/              OPC_EmitMergeInputChains1_0,
/*  4484*/              OPC_EmitConvertToTarget, 2,
/*  4486*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[f32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 18
                        // Dst: (FLW:{ *:[f32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  4494*/            /*Scope*/ 16, /*->4511*/
/*  4495*/              OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/*  4497*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  4500*/              OPC_EmitMergeInputChains1_0,
/*  4501*/              OPC_EmitConvertToTarget, 2,
/*  4503*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[f32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 18
                        // Dst: (FLW:{ *:[f32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  4511*/            0, /*End of Scope*/
/*  4512*/          /*SwitchType*/ 36, MVT::f64,// ->4550
/*  4514*/            OPC_Scope, 16, /*->4532*/ // 2 children in Scope
/*  4516*/              OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  4518*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  4521*/              OPC_EmitMergeInputChains1_0,
/*  4522*/              OPC_EmitConvertToTarget, 2,
/*  4524*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f64, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[f64] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 18
                        // Dst: (FLD:{ *:[f64] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  4532*/            /*Scope*/ 16, /*->4549*/
/*  4533*/              OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/*  4535*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  4538*/              OPC_EmitMergeInputChains1_0,
/*  4539*/              OPC_EmitConvertToTarget, 2,
/*  4541*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f64, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[f64] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 18
                        // Dst: (FLD:{ *:[f64] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  4549*/            0, /*End of Scope*/
/*  4550*/          0, // EndSwitchType
/*  4551*/        /*SwitchType*/ 43, MVT::i64,// ->4596
/*  4553*/          OPC_MoveParent,
/*  4554*/          OPC_CheckPredicate, 3, // Predicate_unindexedload
/*  4556*/          OPC_CheckPredicate, 8, // Predicate_load
/*  4558*/          OPC_SwitchType /*2 cases */, 16, MVT::f32,// ->4577
/*  4561*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  4563*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  4566*/            OPC_EmitMergeInputChains1_0,
/*  4567*/            OPC_EmitConvertToTarget, 2,
/*  4569*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::f32, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[f32] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 18
                      // Dst: (FLW:{ *:[f32] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  4577*/          /*SwitchType*/ 16, MVT::f64,// ->4595
/*  4579*/            OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  4581*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  4584*/            OPC_EmitMergeInputChains1_0,
/*  4585*/            OPC_EmitConvertToTarget, 2,
/*  4587*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::f64, 2/*#Ops*/, 3, 4,
                      // Src: (ld:{ *:[f64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 18
                      // Dst: (FLD:{ *:[f64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  4595*/          0, // EndSwitchType
/*  4596*/        0, // EndSwitchType
/*  4597*/      /*SwitchOpcode*/ 100|128,1/*228*/, TARGET_VAL(ISD::ADD),// ->4829
/*  4601*/        OPC_RecordChild0, // #1 = $rs1
/*  4602*/        OPC_RecordChild1, // #2 = $imm12
/*  4603*/        OPC_MoveChild1,
/*  4604*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  4607*/        OPC_CheckPredicate, 1, // Predicate_simm12
/*  4609*/        OPC_MoveParent,
/*  4610*/        OPC_SwitchType /*2 cases */, 11|128,1/*139*/, MVT::i32,// ->4753
/*  4614*/          OPC_MoveParent,
/*  4615*/          OPC_CheckPredicate, 3, // Predicate_unindexedload
/*  4617*/          OPC_CheckPredicate, 8, // Predicate_load
/*  4619*/          OPC_SwitchType /*2 cases */, 64, MVT::f32,// ->4686
/*  4622*/            OPC_Scope, 16, /*->4640*/ // 4 children in Scope
/*  4624*/              OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  4626*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  4629*/              OPC_EmitMergeInputChains1_0,
/*  4630*/              OPC_EmitConvertToTarget, 2,
/*  4632*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[f32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 17
                        // Dst: (FLW:{ *:[f32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  4640*/            /*Scope*/ 16, /*->4657*/
/*  4641*/              OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/*  4643*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  4646*/              OPC_EmitMergeInputChains1_0,
/*  4647*/              OPC_EmitConvertToTarget, 2,
/*  4649*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[f32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 17
                        // Dst: (FLW:{ *:[f32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  4657*/            /*Scope*/ 13, /*->4671*/
/*  4658*/              OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  4660*/              OPC_EmitMergeInputChains1_0,
/*  4661*/              OPC_EmitConvertToTarget, 2,
/*  4663*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[f32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 11
                        // Dst: (FLW:{ *:[f32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  4671*/            /*Scope*/ 13, /*->4685*/
/*  4672*/              OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/*  4674*/              OPC_EmitMergeInputChains1_0,
/*  4675*/              OPC_EmitConvertToTarget, 2,
/*  4677*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[f32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 11
                        // Dst: (FLW:{ *:[f32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  4685*/            0, /*End of Scope*/
/*  4686*/          /*SwitchType*/ 64, MVT::f64,// ->4752
/*  4688*/            OPC_Scope, 16, /*->4706*/ // 4 children in Scope
/*  4690*/              OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  4692*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  4695*/              OPC_EmitMergeInputChains1_0,
/*  4696*/              OPC_EmitConvertToTarget, 2,
/*  4698*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f64, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[f64] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 17
                        // Dst: (FLD:{ *:[f64] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  4706*/            /*Scope*/ 16, /*->4723*/
/*  4707*/              OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/*  4709*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  4712*/              OPC_EmitMergeInputChains1_0,
/*  4713*/              OPC_EmitConvertToTarget, 2,
/*  4715*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f64, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[f64] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 17
                        // Dst: (FLD:{ *:[f64] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  4723*/            /*Scope*/ 13, /*->4737*/
/*  4724*/              OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  4726*/              OPC_EmitMergeInputChains1_0,
/*  4727*/              OPC_EmitConvertToTarget, 2,
/*  4729*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f64, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[f64] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 11
                        // Dst: (FLD:{ *:[f64] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  4737*/            /*Scope*/ 13, /*->4751*/
/*  4738*/              OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/*  4740*/              OPC_EmitMergeInputChains1_0,
/*  4741*/              OPC_EmitConvertToTarget, 2,
/*  4743*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f64, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[f64] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 11
                        // Dst: (FLD:{ *:[f64] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  4751*/            0, /*End of Scope*/
/*  4752*/          0, // EndSwitchType
/*  4753*/        /*SwitchType*/ 73, MVT::i64,// ->4828
/*  4755*/          OPC_MoveParent,
/*  4756*/          OPC_CheckPredicate, 3, // Predicate_unindexedload
/*  4758*/          OPC_CheckPredicate, 8, // Predicate_load
/*  4760*/          OPC_SwitchType /*2 cases */, 31, MVT::f32,// ->4794
/*  4763*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  4765*/            OPC_Scope, 14, /*->4781*/ // 2 children in Scope
/*  4767*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  4770*/              OPC_EmitMergeInputChains1_0,
/*  4771*/              OPC_EmitConvertToTarget, 2,
/*  4773*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f32, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[f32] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 17
                        // Dst: (FLW:{ *:[f32] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  4781*/            /*Scope*/ 11, /*->4793*/
/*  4782*/              OPC_EmitMergeInputChains1_0,
/*  4783*/              OPC_EmitConvertToTarget, 2,
/*  4785*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f32, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[f32] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 11
                        // Dst: (FLW:{ *:[f32] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  4793*/            0, /*End of Scope*/
/*  4794*/          /*SwitchType*/ 31, MVT::f64,// ->4827
/*  4796*/            OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  4798*/            OPC_Scope, 14, /*->4814*/ // 2 children in Scope
/*  4800*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  4803*/              OPC_EmitMergeInputChains1_0,
/*  4804*/              OPC_EmitConvertToTarget, 2,
/*  4806*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f64, 2/*#Ops*/, 3, 4,
                        // Src: (ld:{ *:[f64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 17
                        // Dst: (FLD:{ *:[f64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  4814*/            /*Scope*/ 11, /*->4826*/
/*  4815*/              OPC_EmitMergeInputChains1_0,
/*  4816*/              OPC_EmitConvertToTarget, 2,
/*  4818*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::f64, 2/*#Ops*/, 1, 3,
                        // Src: (ld:{ *:[f64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 11
                        // Dst: (FLD:{ *:[f64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  4826*/            0, /*End of Scope*/
/*  4827*/          0, // EndSwitchType
/*  4828*/        0, // EndSwitchType
/*  4829*/      0, // EndSwitchOpcode
/*  4830*/    /*Scope*/ 99|128,1/*227*/, /*->5059*/
/*  4832*/      OPC_RecordChild1, // #1 = $rs1
/*  4833*/      OPC_CheckPredicate, 3, // Predicate_unindexedload
/*  4835*/      OPC_CheckPredicate, 8, // Predicate_load
/*  4837*/      OPC_SwitchType /*2 cases */, 108, MVT::f32,// ->4948
/*  4840*/        OPC_Scope, 17, /*->4859*/ // 5 children in Scope
/*  4842*/          OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  4844*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  4847*/          OPC_EmitMergeInputChains1_0,
/*  4848*/          OPC_EmitInteger, MVT::i32, 0,
/*  4851*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLW), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f32, 2/*#Ops*/, 2, 3,
                    // Src: (ld:{ *:[f32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 10
                    // Dst: (FLW:{ *:[f32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4859*/        /*Scope*/ 17, /*->4877*/
/*  4860*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  4862*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  4865*/          OPC_EmitMergeInputChains1_0,
/*  4866*/          OPC_EmitInteger, MVT::i64, 0,
/*  4869*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLW), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f32, 2/*#Ops*/, 2, 3,
                    // Src: (ld:{ *:[f32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 10
                    // Dst: (FLW:{ *:[f32] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  4877*/        /*Scope*/ 17, /*->4895*/
/*  4878*/          OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/*  4880*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  4883*/          OPC_EmitMergeInputChains1_0,
/*  4884*/          OPC_EmitInteger, MVT::i32, 0,
/*  4887*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLW), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f32, 2/*#Ops*/, 2, 3,
                    // Src: (ld:{ *:[f32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 10
                    // Dst: (FLW:{ *:[f32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4895*/        /*Scope*/ 34, /*->4930*/
/*  4896*/          OPC_CheckChild1Type, MVT::i32,
/*  4898*/          OPC_Scope, 14, /*->4914*/ // 2 children in Scope
/*  4900*/            OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  4902*/            OPC_EmitMergeInputChains1_0,
/*  4903*/            OPC_EmitInteger, MVT::i32, 0,
/*  4906*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::f32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[f32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 4
                      // Dst: (FLW:{ *:[f32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4914*/          /*Scope*/ 14, /*->4929*/
/*  4915*/            OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/*  4917*/            OPC_EmitMergeInputChains1_0,
/*  4918*/            OPC_EmitInteger, MVT::i32, 0,
/*  4921*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::f32, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[f32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 4
                      // Dst: (FLW:{ *:[f32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4929*/          0, /*End of Scope*/
/*  4930*/        /*Scope*/ 16, /*->4947*/
/*  4931*/          OPC_CheckChild1Type, MVT::i64,
/*  4933*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  4935*/          OPC_EmitMergeInputChains1_0,
/*  4936*/          OPC_EmitInteger, MVT::i64, 0,
/*  4939*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLW), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f32, 2/*#Ops*/, 1, 2,
                    // Src: (ld:{ *:[f32] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 4
                    // Dst: (FLW:{ *:[f32] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  4947*/        0, /*End of Scope*/
/*  4948*/      /*SwitchType*/ 108, MVT::f64,// ->5058
/*  4950*/        OPC_Scope, 17, /*->4969*/ // 5 children in Scope
/*  4952*/          OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  4954*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  4957*/          OPC_EmitMergeInputChains1_0,
/*  4958*/          OPC_EmitInteger, MVT::i32, 0,
/*  4961*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLD), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f64, 2/*#Ops*/, 2, 3,
                    // Src: (ld:{ *:[f64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 10
                    // Dst: (FLD:{ *:[f64] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  4969*/        /*Scope*/ 17, /*->4987*/
/*  4970*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  4972*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  4975*/          OPC_EmitMergeInputChains1_0,
/*  4976*/          OPC_EmitInteger, MVT::i64, 0,
/*  4979*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLD), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f64, 2/*#Ops*/, 2, 3,
                    // Src: (ld:{ *:[f64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 10
                    // Dst: (FLD:{ *:[f64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  4987*/        /*Scope*/ 17, /*->5005*/
/*  4988*/          OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/*  4990*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  4993*/          OPC_EmitMergeInputChains1_0,
/*  4994*/          OPC_EmitInteger, MVT::i32, 0,
/*  4997*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLD), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f64, 2/*#Ops*/, 2, 3,
                    // Src: (ld:{ *:[f64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 10
                    // Dst: (FLD:{ *:[f64] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5005*/        /*Scope*/ 34, /*->5040*/
/*  5006*/          OPC_CheckChild1Type, MVT::i32,
/*  5008*/          OPC_Scope, 14, /*->5024*/ // 2 children in Scope
/*  5010*/            OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  5012*/            OPC_EmitMergeInputChains1_0,
/*  5013*/            OPC_EmitInteger, MVT::i32, 0,
/*  5016*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::f64, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[f64] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 4
                      // Dst: (FLD:{ *:[f64] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5024*/          /*Scope*/ 14, /*->5039*/
/*  5025*/            OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/*  5027*/            OPC_EmitMergeInputChains1_0,
/*  5028*/            OPC_EmitInteger, MVT::i32, 0,
/*  5031*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::f64, 2/*#Ops*/, 1, 2,
                      // Src: (ld:{ *:[f64] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 4
                      // Dst: (FLD:{ *:[f64] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5039*/          0, /*End of Scope*/
/*  5040*/        /*Scope*/ 16, /*->5057*/
/*  5041*/          OPC_CheckChild1Type, MVT::i64,
/*  5043*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("64bit"))
/*  5045*/          OPC_EmitMergeInputChains1_0,
/*  5046*/          OPC_EmitInteger, MVT::i64, 0,
/*  5049*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLD), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::f64, 2/*#Ops*/, 1, 2,
                    // Src: (ld:{ *:[f64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedload>><<P:Predicate_load>> - Complexity = 4
                    // Dst: (FLD:{ *:[f64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  5057*/        0, /*End of Scope*/
/*  5058*/      0, // EndSwitchType
/*  5059*/    0, /*End of Scope*/
/*  5060*/  /*SwitchOpcode*/ 59|128,17/*2235*/, TARGET_VAL(ISD::STORE),// ->7299
/*  5064*/    OPC_RecordMemRef,
/*  5065*/    OPC_RecordNode, // #0 = 'st' chained node
/*  5066*/    OPC_RecordChild1, // #1 = $rs2
/*  5067*/    OPC_Scope, 118|128,7/*1014*/, /*->6084*/ // 4 children in Scope
/*  5070*/      OPC_CheckChild1Type, MVT::i32,
/*  5072*/      OPC_Scope, 97|128,4/*609*/, /*->5684*/ // 2 children in Scope
/*  5075*/        OPC_MoveChild2,
/*  5076*/        OPC_SwitchOpcode /*2 cases */, 88|128,1/*216*/, TARGET_VAL(ISD::OR),// ->5297
/*  5081*/          OPC_RecordChild0, // #2 = $rs1
/*  5082*/          OPC_RecordChild1, // #3 = $imm12
/*  5083*/          OPC_MoveChild1,
/*  5084*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5087*/          OPC_CheckPredicate, 1, // Predicate_simm12
/*  5089*/          OPC_MoveParent,
/*  5090*/          OPC_CheckPredicate, 2, // Predicate_IsOrAdd
/*  5092*/          OPC_CheckType, MVT::i32,
/*  5094*/          OPC_MoveParent,
/*  5095*/          OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  5097*/          OPC_Scope, 78, /*->5177*/ // 4 children in Scope
/*  5099*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  5101*/            OPC_Scope, 36, /*->5139*/ // 2 children in Scope
/*  5103*/              OPC_CheckPredicate, 5, // Predicate_truncstorei8
/*  5105*/              OPC_Scope, 16, /*->5123*/ // 2 children in Scope
/*  5107*/                OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  5109*/                OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5112*/                OPC_EmitMergeInputChains1_0,
/*  5113*/                OPC_EmitConvertToTarget, 3,
/*  5115*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 4, 5,
                          // Src: (st GPR:{ *:[i32] }:$rs2, (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 18
                          // Dst: (SB GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5123*/              /*Scope*/ 14, /*->5138*/
/*  5124*/                OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5127*/                OPC_EmitMergeInputChains1_0,
/*  5128*/                OPC_EmitConvertToTarget, 3,
/*  5130*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 4, 5,
                          // Src: (st GPR:{ *:[i32] }:$rs2, (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 18
                          // Dst: (SB GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5138*/              0, /*End of Scope*/
/*  5139*/            /*Scope*/ 36, /*->5176*/
/*  5140*/              OPC_CheckPredicate, 7, // Predicate_truncstorei16
/*  5142*/              OPC_Scope, 16, /*->5160*/ // 2 children in Scope
/*  5144*/                OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  5146*/                OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5149*/                OPC_EmitMergeInputChains1_0,
/*  5150*/                OPC_EmitConvertToTarget, 3,
/*  5152*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 4, 5,
                          // Src: (st GPR:{ *:[i32] }:$rs2, (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 18
                          // Dst: (SH GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5160*/              /*Scope*/ 14, /*->5175*/
/*  5161*/                OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5164*/                OPC_EmitMergeInputChains1_0,
/*  5165*/                OPC_EmitConvertToTarget, 3,
/*  5167*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 4, 5,
                          // Src: (st GPR:{ *:[i32] }:$rs2, (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 18
                          // Dst: (SH GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5175*/              0, /*End of Scope*/
/*  5176*/            0, /*End of Scope*/
/*  5177*/          /*Scope*/ 38, /*->5216*/
/*  5178*/            OPC_CheckPredicate, 13, // Predicate_store
/*  5180*/            OPC_Scope, 16, /*->5198*/ // 2 children in Scope
/*  5182*/              OPC_CheckPatternPredicate, 8, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  5184*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5187*/              OPC_EmitMergeInputChains1_0,
/*  5188*/              OPC_EmitConvertToTarget, 3,
/*  5190*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 18
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5198*/            /*Scope*/ 16, /*->5215*/
/*  5199*/              OPC_CheckPatternPredicate, 9, // (!Subtarget->is64Bit())
/*  5201*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5204*/              OPC_EmitMergeInputChains1_0,
/*  5205*/              OPC_EmitConvertToTarget, 3,
/*  5207*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 18
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5215*/            0, /*End of Scope*/
/*  5216*/          /*Scope*/ 40, /*->5257*/
/*  5217*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  5219*/            OPC_CheckPredicate, 10, // Predicate_truncstorei32
/*  5221*/            OPC_Scope, 16, /*->5239*/ // 2 children in Scope
/*  5223*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  5225*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5228*/              OPC_EmitMergeInputChains1_0,
/*  5229*/              OPC_EmitConvertToTarget, 3,
/*  5231*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 18
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5239*/            /*Scope*/ 16, /*->5256*/
/*  5240*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  5242*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5245*/              OPC_EmitMergeInputChains1_0,
/*  5246*/              OPC_EmitConvertToTarget, 3,
/*  5248*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 18
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5256*/            0, /*End of Scope*/
/*  5257*/          /*Scope*/ 38, /*->5296*/
/*  5258*/            OPC_CheckPredicate, 13, // Predicate_store
/*  5260*/            OPC_Scope, 16, /*->5278*/ // 2 children in Scope
/*  5262*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  5264*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5267*/              OPC_EmitMergeInputChains1_0,
/*  5268*/              OPC_EmitConvertToTarget, 3,
/*  5270*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 18
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5278*/            /*Scope*/ 16, /*->5295*/
/*  5279*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  5281*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5284*/              OPC_EmitMergeInputChains1_0,
/*  5285*/              OPC_EmitConvertToTarget, 3,
/*  5287*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 18
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5295*/            0, /*End of Scope*/
/*  5296*/          0, /*End of Scope*/
/*  5297*/        /*SwitchOpcode*/ 126|128,2/*382*/, TARGET_VAL(ISD::ADD),// ->5683
/*  5301*/          OPC_RecordChild0, // #2 = $rs1
/*  5302*/          OPC_RecordChild1, // #3 = $imm12
/*  5303*/          OPC_MoveChild1,
/*  5304*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  5307*/          OPC_CheckPredicate, 1, // Predicate_simm12
/*  5309*/          OPC_MoveParent,
/*  5310*/          OPC_CheckType, MVT::i32,
/*  5312*/          OPC_MoveParent,
/*  5313*/          OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  5315*/          OPC_Scope, 78, /*->5395*/ // 8 children in Scope
/*  5317*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  5319*/            OPC_Scope, 36, /*->5357*/ // 2 children in Scope
/*  5321*/              OPC_CheckPredicate, 5, // Predicate_truncstorei8
/*  5323*/              OPC_Scope, 16, /*->5341*/ // 2 children in Scope
/*  5325*/                OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  5327*/                OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5330*/                OPC_EmitMergeInputChains1_0,
/*  5331*/                OPC_EmitConvertToTarget, 3,
/*  5333*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 4, 5,
                          // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 17
                          // Dst: (SB GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5341*/              /*Scope*/ 14, /*->5356*/
/*  5342*/                OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5345*/                OPC_EmitMergeInputChains1_0,
/*  5346*/                OPC_EmitConvertToTarget, 3,
/*  5348*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 4, 5,
                          // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 17
                          // Dst: (SB GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5356*/              0, /*End of Scope*/
/*  5357*/            /*Scope*/ 36, /*->5394*/
/*  5358*/              OPC_CheckPredicate, 7, // Predicate_truncstorei16
/*  5360*/              OPC_Scope, 16, /*->5378*/ // 2 children in Scope
/*  5362*/                OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  5364*/                OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5367*/                OPC_EmitMergeInputChains1_0,
/*  5368*/                OPC_EmitConvertToTarget, 3,
/*  5370*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 4, 5,
                          // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 17
                          // Dst: (SH GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5378*/              /*Scope*/ 14, /*->5393*/
/*  5379*/                OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5382*/                OPC_EmitMergeInputChains1_0,
/*  5383*/                OPC_EmitConvertToTarget, 3,
/*  5385*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 4, 5,
                          // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 17
                          // Dst: (SH GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5393*/              0, /*End of Scope*/
/*  5394*/            0, /*End of Scope*/
/*  5395*/          /*Scope*/ 38, /*->5434*/
/*  5396*/            OPC_CheckPredicate, 13, // Predicate_store
/*  5398*/            OPC_Scope, 16, /*->5416*/ // 2 children in Scope
/*  5400*/              OPC_CheckPatternPredicate, 8, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  5402*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5405*/              OPC_EmitMergeInputChains1_0,
/*  5406*/              OPC_EmitConvertToTarget, 3,
/*  5408*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 17
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5416*/            /*Scope*/ 16, /*->5433*/
/*  5417*/              OPC_CheckPatternPredicate, 9, // (!Subtarget->is64Bit())
/*  5419*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5422*/              OPC_EmitMergeInputChains1_0,
/*  5423*/              OPC_EmitConvertToTarget, 3,
/*  5425*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 17
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5433*/            0, /*End of Scope*/
/*  5434*/          /*Scope*/ 40, /*->5475*/
/*  5435*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  5437*/            OPC_CheckPredicate, 10, // Predicate_truncstorei32
/*  5439*/            OPC_Scope, 16, /*->5457*/ // 2 children in Scope
/*  5441*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  5443*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5446*/              OPC_EmitMergeInputChains1_0,
/*  5447*/              OPC_EmitConvertToTarget, 3,
/*  5449*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 17
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5457*/            /*Scope*/ 16, /*->5474*/
/*  5458*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  5460*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5463*/              OPC_EmitMergeInputChains1_0,
/*  5464*/              OPC_EmitConvertToTarget, 3,
/*  5466*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 17
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5474*/            0, /*End of Scope*/
/*  5475*/          /*Scope*/ 38, /*->5514*/
/*  5476*/            OPC_CheckPredicate, 13, // Predicate_store
/*  5478*/            OPC_Scope, 16, /*->5496*/ // 2 children in Scope
/*  5480*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  5482*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5485*/              OPC_EmitMergeInputChains1_0,
/*  5486*/              OPC_EmitConvertToTarget, 3,
/*  5488*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 17
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5496*/            /*Scope*/ 16, /*->5513*/
/*  5497*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  5499*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  5502*/              OPC_EmitMergeInputChains1_0,
/*  5503*/              OPC_EmitConvertToTarget, 3,
/*  5505*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 17
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5513*/            0, /*End of Scope*/
/*  5514*/          /*Scope*/ 66, /*->5581*/
/*  5515*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  5517*/            OPC_Scope, 30, /*->5549*/ // 2 children in Scope
/*  5519*/              OPC_CheckPredicate, 5, // Predicate_truncstorei8
/*  5521*/              OPC_Scope, 13, /*->5536*/ // 2 children in Scope
/*  5523*/                OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  5525*/                OPC_EmitMergeInputChains1_0,
/*  5526*/                OPC_EmitConvertToTarget, 3,
/*  5528*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 2, 4,
                          // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 11
                          // Dst: (SB GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5536*/              /*Scope*/ 11, /*->5548*/
/*  5537*/                OPC_EmitMergeInputChains1_0,
/*  5538*/                OPC_EmitConvertToTarget, 3,
/*  5540*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 2, 4,
                          // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 11
                          // Dst: (SB GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5548*/              0, /*End of Scope*/
/*  5549*/            /*Scope*/ 30, /*->5580*/
/*  5550*/              OPC_CheckPredicate, 7, // Predicate_truncstorei16
/*  5552*/              OPC_Scope, 13, /*->5567*/ // 2 children in Scope
/*  5554*/                OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  5556*/                OPC_EmitMergeInputChains1_0,
/*  5557*/                OPC_EmitConvertToTarget, 3,
/*  5559*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 2, 4,
                          // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 11
                          // Dst: (SH GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5567*/              /*Scope*/ 11, /*->5579*/
/*  5568*/                OPC_EmitMergeInputChains1_0,
/*  5569*/                OPC_EmitConvertToTarget, 3,
/*  5571*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 2, 4,
                          // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 11
                          // Dst: (SH GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5579*/              0, /*End of Scope*/
/*  5580*/            0, /*End of Scope*/
/*  5581*/          /*Scope*/ 32, /*->5614*/
/*  5582*/            OPC_CheckPredicate, 13, // Predicate_store
/*  5584*/            OPC_Scope, 13, /*->5599*/ // 2 children in Scope
/*  5586*/              OPC_CheckPatternPredicate, 8, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  5588*/              OPC_EmitMergeInputChains1_0,
/*  5589*/              OPC_EmitConvertToTarget, 3,
/*  5591*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 4,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 11
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5599*/            /*Scope*/ 13, /*->5613*/
/*  5600*/              OPC_CheckPatternPredicate, 9, // (!Subtarget->is64Bit())
/*  5602*/              OPC_EmitMergeInputChains1_0,
/*  5603*/              OPC_EmitConvertToTarget, 3,
/*  5605*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 4,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 11
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5613*/            0, /*End of Scope*/
/*  5614*/          /*Scope*/ 34, /*->5649*/
/*  5615*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  5617*/            OPC_CheckPredicate, 10, // Predicate_truncstorei32
/*  5619*/            OPC_Scope, 13, /*->5634*/ // 2 children in Scope
/*  5621*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  5623*/              OPC_EmitMergeInputChains1_0,
/*  5624*/              OPC_EmitConvertToTarget, 3,
/*  5626*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 4,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 11
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5634*/            /*Scope*/ 13, /*->5648*/
/*  5635*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  5637*/              OPC_EmitMergeInputChains1_0,
/*  5638*/              OPC_EmitConvertToTarget, 3,
/*  5640*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 4,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 11
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5648*/            0, /*End of Scope*/
/*  5649*/          /*Scope*/ 32, /*->5682*/
/*  5650*/            OPC_CheckPredicate, 13, // Predicate_store
/*  5652*/            OPC_Scope, 13, /*->5667*/ // 2 children in Scope
/*  5654*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  5656*/              OPC_EmitMergeInputChains1_0,
/*  5657*/              OPC_EmitConvertToTarget, 3,
/*  5659*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 4,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 11
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5667*/            /*Scope*/ 13, /*->5681*/
/*  5668*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  5670*/              OPC_EmitMergeInputChains1_0,
/*  5671*/              OPC_EmitConvertToTarget, 3,
/*  5673*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 4,
                        // Src: (st GPR:{ *:[i32] }:$rs2, (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 11
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  5681*/            0, /*End of Scope*/
/*  5682*/          0, /*End of Scope*/
/*  5683*/        0, // EndSwitchOpcode
/*  5684*/      /*Scope*/ 13|128,3/*397*/, /*->6083*/
/*  5686*/        OPC_RecordChild2, // #2 = $rs1
/*  5687*/        OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  5689*/        OPC_Scope, 82, /*->5773*/ // 5 children in Scope
/*  5691*/          OPC_CheckPredicate, 12, // Predicate_truncstore
/*  5693*/          OPC_Scope, 38, /*->5733*/ // 2 children in Scope
/*  5695*/            OPC_CheckPredicate, 5, // Predicate_truncstorei8
/*  5697*/            OPC_Scope, 17, /*->5716*/ // 2 children in Scope
/*  5699*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  5701*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  5704*/              OPC_EmitMergeInputChains1_0,
/*  5705*/              OPC_EmitInteger, MVT::i32, 0,
/*  5708*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 3, 4,
                        // Src: (st GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 10
                        // Dst: (SB GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5716*/            /*Scope*/ 15, /*->5732*/
/*  5717*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  5720*/              OPC_EmitMergeInputChains1_0,
/*  5721*/              OPC_EmitInteger, MVT::i32, 0,
/*  5724*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 3, 4,
                        // Src: (st GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 10
                        // Dst: (SB GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5732*/            0, /*End of Scope*/
/*  5733*/          /*Scope*/ 38, /*->5772*/
/*  5734*/            OPC_CheckPredicate, 7, // Predicate_truncstorei16
/*  5736*/            OPC_Scope, 17, /*->5755*/ // 2 children in Scope
/*  5738*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  5740*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  5743*/              OPC_EmitMergeInputChains1_0,
/*  5744*/              OPC_EmitInteger, MVT::i32, 0,
/*  5747*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 3, 4,
                        // Src: (st GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 10
                        // Dst: (SH GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5755*/            /*Scope*/ 15, /*->5771*/
/*  5756*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  5759*/              OPC_EmitMergeInputChains1_0,
/*  5760*/              OPC_EmitInteger, MVT::i32, 0,
/*  5763*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 3, 4,
                        // Src: (st GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 10
                        // Dst: (SH GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5771*/            0, /*End of Scope*/
/*  5772*/          0, /*End of Scope*/
/*  5773*/        /*Scope*/ 40, /*->5814*/
/*  5774*/          OPC_CheckPredicate, 13, // Predicate_store
/*  5776*/          OPC_Scope, 17, /*->5795*/ // 2 children in Scope
/*  5778*/            OPC_CheckPatternPredicate, 8, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  5780*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  5783*/            OPC_EmitMergeInputChains1_0,
/*  5784*/            OPC_EmitInteger, MVT::i32, 0,
/*  5787*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4,
                      // Src: (st GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 10
                      // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5795*/          /*Scope*/ 17, /*->5813*/
/*  5796*/            OPC_CheckPatternPredicate, 9, // (!Subtarget->is64Bit())
/*  5798*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  5801*/            OPC_EmitMergeInputChains1_0,
/*  5802*/            OPC_EmitInteger, MVT::i32, 0,
/*  5805*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4,
                      // Src: (st GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 10
                      // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5813*/          0, /*End of Scope*/
/*  5814*/        /*Scope*/ 42, /*->5857*/
/*  5815*/          OPC_CheckPredicate, 12, // Predicate_truncstore
/*  5817*/          OPC_CheckPredicate, 10, // Predicate_truncstorei32
/*  5819*/          OPC_Scope, 17, /*->5838*/ // 2 children in Scope
/*  5821*/            OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  5823*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  5826*/            OPC_EmitMergeInputChains1_0,
/*  5827*/            OPC_EmitInteger, MVT::i32, 0,
/*  5830*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4,
                      // Src: (st GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 10
                      // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5838*/          /*Scope*/ 17, /*->5856*/
/*  5839*/            OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  5841*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  5844*/            OPC_EmitMergeInputChains1_0,
/*  5845*/            OPC_EmitInteger, MVT::i32, 0,
/*  5848*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4,
                      // Src: (st GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 10
                      // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5856*/          0, /*End of Scope*/
/*  5857*/        /*Scope*/ 40, /*->5898*/
/*  5858*/          OPC_CheckPredicate, 13, // Predicate_store
/*  5860*/          OPC_Scope, 17, /*->5879*/ // 2 children in Scope
/*  5862*/            OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  5864*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  5867*/            OPC_EmitMergeInputChains1_0,
/*  5868*/            OPC_EmitInteger, MVT::i32, 0,
/*  5871*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4,
                      // Src: (st GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 10
                      // Dst: (SD GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5879*/          /*Scope*/ 17, /*->5897*/
/*  5880*/            OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  5882*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  5885*/            OPC_EmitMergeInputChains1_0,
/*  5886*/            OPC_EmitInteger, MVT::i32, 0,
/*  5889*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4,
                      // Src: (st GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 10
                      // Dst: (SD GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5897*/          0, /*End of Scope*/
/*  5898*/        /*Scope*/ 54|128,1/*182*/, /*->6082*/
/*  5900*/          OPC_CheckChild2Type, MVT::i32,
/*  5902*/          OPC_Scope, 70, /*->5974*/ // 4 children in Scope
/*  5904*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  5906*/            OPC_Scope, 32, /*->5940*/ // 2 children in Scope
/*  5908*/              OPC_CheckPredicate, 5, // Predicate_truncstorei8
/*  5910*/              OPC_Scope, 14, /*->5926*/ // 2 children in Scope
/*  5912*/                OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  5914*/                OPC_EmitMergeInputChains1_0,
/*  5915*/                OPC_EmitInteger, MVT::i32, 0,
/*  5918*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 2, 3,
                          // Src: (st GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 4
                          // Dst: (SB GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5926*/              /*Scope*/ 12, /*->5939*/
/*  5927*/                OPC_EmitMergeInputChains1_0,
/*  5928*/                OPC_EmitInteger, MVT::i32, 0,
/*  5931*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 2, 3,
                          // Src: (st GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 4
                          // Dst: (SB GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5939*/              0, /*End of Scope*/
/*  5940*/            /*Scope*/ 32, /*->5973*/
/*  5941*/              OPC_CheckPredicate, 7, // Predicate_truncstorei16
/*  5943*/              OPC_Scope, 14, /*->5959*/ // 2 children in Scope
/*  5945*/                OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  5947*/                OPC_EmitMergeInputChains1_0,
/*  5948*/                OPC_EmitInteger, MVT::i32, 0,
/*  5951*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 2, 3,
                          // Src: (st GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 4
                          // Dst: (SH GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5959*/              /*Scope*/ 12, /*->5972*/
/*  5960*/                OPC_EmitMergeInputChains1_0,
/*  5961*/                OPC_EmitInteger, MVT::i32, 0,
/*  5964*/                OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                              3/*#Ops*/, 1, 2, 3,
                          // Src: (st GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 4
                          // Dst: (SH GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5972*/              0, /*End of Scope*/
/*  5973*/            0, /*End of Scope*/
/*  5974*/          /*Scope*/ 34, /*->6009*/
/*  5975*/            OPC_CheckPredicate, 13, // Predicate_store
/*  5977*/            OPC_Scope, 14, /*->5993*/ // 2 children in Scope
/*  5979*/              OPC_CheckPatternPredicate, 8, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  5981*/              OPC_EmitMergeInputChains1_0,
/*  5982*/              OPC_EmitInteger, MVT::i32, 0,
/*  5985*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 3,
                        // Src: (st GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 4
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  5993*/            /*Scope*/ 14, /*->6008*/
/*  5994*/              OPC_CheckPatternPredicate, 9, // (!Subtarget->is64Bit())
/*  5996*/              OPC_EmitMergeInputChains1_0,
/*  5997*/              OPC_EmitInteger, MVT::i32, 0,
/*  6000*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 3,
                        // Src: (st GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 4
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  6008*/            0, /*End of Scope*/
/*  6009*/          /*Scope*/ 36, /*->6046*/
/*  6010*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  6012*/            OPC_CheckPredicate, 10, // Predicate_truncstorei32
/*  6014*/            OPC_Scope, 14, /*->6030*/ // 2 children in Scope
/*  6016*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  6018*/              OPC_EmitMergeInputChains1_0,
/*  6019*/              OPC_EmitInteger, MVT::i32, 0,
/*  6022*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 3,
                        // Src: (st GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 4
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  6030*/            /*Scope*/ 14, /*->6045*/
/*  6031*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  6033*/              OPC_EmitMergeInputChains1_0,
/*  6034*/              OPC_EmitInteger, MVT::i32, 0,
/*  6037*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 3,
                        // Src: (st GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 4
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  6045*/            0, /*End of Scope*/
/*  6046*/          /*Scope*/ 34, /*->6081*/
/*  6047*/            OPC_CheckPredicate, 13, // Predicate_store
/*  6049*/            OPC_Scope, 14, /*->6065*/ // 2 children in Scope
/*  6051*/              OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  6053*/              OPC_EmitMergeInputChains1_0,
/*  6054*/              OPC_EmitInteger, MVT::i32, 0,
/*  6057*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 3,
                        // Src: (st GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 4
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  6065*/            /*Scope*/ 14, /*->6080*/
/*  6066*/              OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/*  6068*/              OPC_EmitMergeInputChains1_0,
/*  6069*/              OPC_EmitInteger, MVT::i32, 0,
/*  6072*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 3,
                        // Src: (st GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 4
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  6080*/            0, /*End of Scope*/
/*  6081*/          0, /*End of Scope*/
/*  6082*/        0, /*End of Scope*/
/*  6083*/      0, /*End of Scope*/
/*  6084*/    /*Scope*/ 40|128,4/*552*/, /*->6638*/
/*  6086*/      OPC_CheckChild1Type, MVT::i64,
/*  6088*/      OPC_Scope, 79|128,2/*335*/, /*->6426*/ // 2 children in Scope
/*  6091*/        OPC_MoveChild2,
/*  6092*/        OPC_SwitchOpcode /*2 cases */, 120, TARGET_VAL(ISD::OR),// ->6216
/*  6096*/          OPC_RecordChild0, // #2 = $rs1
/*  6097*/          OPC_RecordChild1, // #3 = $imm12
/*  6098*/          OPC_MoveChild1,
/*  6099*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  6102*/          OPC_CheckPredicate, 1, // Predicate_simm12
/*  6104*/          OPC_MoveParent,
/*  6105*/          OPC_CheckPredicate, 2, // Predicate_IsOrAdd
/*  6107*/          OPC_CheckType, MVT::i64,
/*  6109*/          OPC_MoveParent,
/*  6110*/          OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  6112*/          OPC_Scope, 42, /*->6156*/ // 4 children in Scope
/*  6114*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  6116*/            OPC_Scope, 18, /*->6136*/ // 2 children in Scope
/*  6118*/              OPC_CheckPredicate, 5, // Predicate_truncstorei8
/*  6120*/              OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  6122*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6125*/              OPC_EmitMergeInputChains1_0,
/*  6126*/              OPC_EmitConvertToTarget, 3,
/*  6128*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i64] }:$rs2, (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 18
                        // Dst: (SB GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6136*/            /*Scope*/ 18, /*->6155*/
/*  6137*/              OPC_CheckPredicate, 7, // Predicate_truncstorei16
/*  6139*/              OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  6141*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6144*/              OPC_EmitMergeInputChains1_0,
/*  6145*/              OPC_EmitConvertToTarget, 3,
/*  6147*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i64] }:$rs2, (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 18
                        // Dst: (SH GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6155*/            0, /*End of Scope*/
/*  6156*/          /*Scope*/ 18, /*->6175*/
/*  6157*/            OPC_CheckPredicate, 13, // Predicate_store
/*  6159*/            OPC_CheckPatternPredicate, 10, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6161*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6164*/            OPC_EmitMergeInputChains1_0,
/*  6165*/            OPC_EmitConvertToTarget, 3,
/*  6167*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 4, 5,
                      // Src: (st GPR:{ *:[i64] }:$rs2, (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 18
                      // Dst: (SW GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6175*/          /*Scope*/ 20, /*->6196*/
/*  6176*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  6178*/            OPC_CheckPredicate, 10, // Predicate_truncstorei32
/*  6180*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6182*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6185*/            OPC_EmitMergeInputChains1_0,
/*  6186*/            OPC_EmitConvertToTarget, 3,
/*  6188*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 4, 5,
                      // Src: (st GPR:{ *:[i64] }:$rs2, (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 18
                      // Dst: (SW GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6196*/          /*Scope*/ 18, /*->6215*/
/*  6197*/            OPC_CheckPredicate, 13, // Predicate_store
/*  6199*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6201*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6204*/            OPC_EmitMergeInputChains1_0,
/*  6205*/            OPC_EmitConvertToTarget, 3,
/*  6207*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 4, 5,
                      // Src: (st GPR:{ *:[i64] }:$rs2, (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 18
                      // Dst: (SD GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6215*/          0, /*End of Scope*/
/*  6216*/        /*SwitchOpcode*/ 77|128,1/*205*/, TARGET_VAL(ISD::ADD),// ->6425
/*  6220*/          OPC_RecordChild0, // #2 = $rs1
/*  6221*/          OPC_RecordChild1, // #3 = $imm12
/*  6222*/          OPC_MoveChild1,
/*  6223*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  6226*/          OPC_CheckPredicate, 1, // Predicate_simm12
/*  6228*/          OPC_MoveParent,
/*  6229*/          OPC_CheckType, MVT::i64,
/*  6231*/          OPC_MoveParent,
/*  6232*/          OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  6234*/          OPC_Scope, 42, /*->6278*/ // 8 children in Scope
/*  6236*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  6238*/            OPC_Scope, 18, /*->6258*/ // 2 children in Scope
/*  6240*/              OPC_CheckPredicate, 5, // Predicate_truncstorei8
/*  6242*/              OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  6244*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6247*/              OPC_EmitMergeInputChains1_0,
/*  6248*/              OPC_EmitConvertToTarget, 3,
/*  6250*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i64] }:$rs2, (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 17
                        // Dst: (SB GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6258*/            /*Scope*/ 18, /*->6277*/
/*  6259*/              OPC_CheckPredicate, 7, // Predicate_truncstorei16
/*  6261*/              OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  6263*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6266*/              OPC_EmitMergeInputChains1_0,
/*  6267*/              OPC_EmitConvertToTarget, 3,
/*  6269*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st GPR:{ *:[i64] }:$rs2, (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 17
                        // Dst: (SH GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6277*/            0, /*End of Scope*/
/*  6278*/          /*Scope*/ 18, /*->6297*/
/*  6279*/            OPC_CheckPredicate, 13, // Predicate_store
/*  6281*/            OPC_CheckPatternPredicate, 10, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6283*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6286*/            OPC_EmitMergeInputChains1_0,
/*  6287*/            OPC_EmitConvertToTarget, 3,
/*  6289*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 4, 5,
                      // Src: (st GPR:{ *:[i64] }:$rs2, (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 17
                      // Dst: (SW GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6297*/          /*Scope*/ 20, /*->6318*/
/*  6298*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  6300*/            OPC_CheckPredicate, 10, // Predicate_truncstorei32
/*  6302*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6304*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6307*/            OPC_EmitMergeInputChains1_0,
/*  6308*/            OPC_EmitConvertToTarget, 3,
/*  6310*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 4, 5,
                      // Src: (st GPR:{ *:[i64] }:$rs2, (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 17
                      // Dst: (SW GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6318*/          /*Scope*/ 18, /*->6337*/
/*  6319*/            OPC_CheckPredicate, 13, // Predicate_store
/*  6321*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("64bit"))
/*  6323*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6326*/            OPC_EmitMergeInputChains1_0,
/*  6327*/            OPC_EmitConvertToTarget, 3,
/*  6329*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 4, 5,
                      // Src: (st GPR:{ *:[i64] }:$rs2, (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 17
                      // Dst: (SD GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6337*/          /*Scope*/ 36, /*->6374*/
/*  6338*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  6340*/            OPC_Scope, 15, /*->6357*/ // 2 children in Scope
/*  6342*/              OPC_CheckPredicate, 5, // Predicate_truncstorei8
/*  6344*/              OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  6346*/              OPC_EmitMergeInputChains1_0,
/*  6347*/              OPC_EmitConvertToTarget, 3,
/*  6349*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 4,
                        // Src: (st GPR:{ *:[i64] }:$rs2, (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 11
                        // Dst: (SB GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6357*/            /*Scope*/ 15, /*->6373*/
/*  6358*/              OPC_CheckPredicate, 7, // Predicate_truncstorei16
/*  6360*/              OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  6362*/              OPC_EmitMergeInputChains1_0,
/*  6363*/              OPC_EmitConvertToTarget, 3,
/*  6365*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 4,
                        // Src: (st GPR:{ *:[i64] }:$rs2, (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 11
                        // Dst: (SH GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6373*/            0, /*End of Scope*/
/*  6374*/          /*Scope*/ 15, /*->6390*/
/*  6375*/            OPC_CheckPredicate, 13, // Predicate_store
/*  6377*/            OPC_CheckPatternPredicate, 10, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6379*/            OPC_EmitMergeInputChains1_0,
/*  6380*/            OPC_EmitConvertToTarget, 3,
/*  6382*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 2, 4,
                      // Src: (st GPR:{ *:[i64] }:$rs2, (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 11
                      // Dst: (SW GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6390*/          /*Scope*/ 17, /*->6408*/
/*  6391*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  6393*/            OPC_CheckPredicate, 10, // Predicate_truncstorei32
/*  6395*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6397*/            OPC_EmitMergeInputChains1_0,
/*  6398*/            OPC_EmitConvertToTarget, 3,
/*  6400*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 2, 4,
                      // Src: (st GPR:{ *:[i64] }:$rs2, (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 11
                      // Dst: (SW GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6408*/          /*Scope*/ 15, /*->6424*/
/*  6409*/            OPC_CheckPredicate, 13, // Predicate_store
/*  6411*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6413*/            OPC_EmitMergeInputChains1_0,
/*  6414*/            OPC_EmitConvertToTarget, 3,
/*  6416*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 2, 4,
                      // Src: (st GPR:{ *:[i64] }:$rs2, (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 11
                      // Dst: (SD GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6424*/          0, /*End of Scope*/
/*  6425*/        0, // EndSwitchOpcode
/*  6426*/      /*Scope*/ 81|128,1/*209*/, /*->6637*/
/*  6428*/        OPC_RecordChild2, // #2 = $rs1
/*  6429*/        OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  6431*/        OPC_Scope, 44, /*->6477*/ // 5 children in Scope
/*  6433*/          OPC_CheckPredicate, 12, // Predicate_truncstore
/*  6435*/          OPC_Scope, 19, /*->6456*/ // 2 children in Scope
/*  6437*/            OPC_CheckPredicate, 5, // Predicate_truncstorei8
/*  6439*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  6441*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  6444*/            OPC_EmitMergeInputChains1_0,
/*  6445*/            OPC_EmitInteger, MVT::i64, 0,
/*  6448*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4,
                      // Src: (st GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 10
                      // Dst: (SB GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  6456*/          /*Scope*/ 19, /*->6476*/
/*  6457*/            OPC_CheckPredicate, 7, // Predicate_truncstorei16
/*  6459*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  6461*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  6464*/            OPC_EmitMergeInputChains1_0,
/*  6465*/            OPC_EmitInteger, MVT::i64, 0,
/*  6468*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 3, 4,
                      // Src: (st GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 10
                      // Dst: (SH GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  6476*/          0, /*End of Scope*/
/*  6477*/        /*Scope*/ 19, /*->6497*/
/*  6478*/          OPC_CheckPredicate, 13, // Predicate_store
/*  6480*/          OPC_CheckPatternPredicate, 10, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6482*/          OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  6485*/          OPC_EmitMergeInputChains1_0,
/*  6486*/          OPC_EmitInteger, MVT::i64, 0,
/*  6489*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4,
                    // Src: (st GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 10
                    // Dst: (SW GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  6497*/        /*Scope*/ 21, /*->6519*/
/*  6498*/          OPC_CheckPredicate, 12, // Predicate_truncstore
/*  6500*/          OPC_CheckPredicate, 10, // Predicate_truncstorei32
/*  6502*/          OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6504*/          OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  6507*/          OPC_EmitMergeInputChains1_0,
/*  6508*/          OPC_EmitInteger, MVT::i64, 0,
/*  6511*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4,
                    // Src: (st GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 10
                    // Dst: (SW GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  6519*/        /*Scope*/ 19, /*->6539*/
/*  6520*/          OPC_CheckPredicate, 13, // Predicate_store
/*  6522*/          OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6524*/          OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  6527*/          OPC_EmitMergeInputChains1_0,
/*  6528*/          OPC_EmitInteger, MVT::i64, 0,
/*  6531*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4,
                    // Src: (st GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 10
                    // Dst: (SD GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  6539*/        /*Scope*/ 96, /*->6636*/
/*  6540*/          OPC_CheckChild2Type, MVT::i64,
/*  6542*/          OPC_Scope, 38, /*->6582*/ // 4 children in Scope
/*  6544*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  6546*/            OPC_Scope, 16, /*->6564*/ // 2 children in Scope
/*  6548*/              OPC_CheckPredicate, 5, // Predicate_truncstorei8
/*  6550*/              OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  6552*/              OPC_EmitMergeInputChains1_0,
/*  6553*/              OPC_EmitInteger, MVT::i64, 0,
/*  6556*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 3,
                        // Src: (st GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei8>> - Complexity = 4
                        // Dst: (SB GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  6564*/            /*Scope*/ 16, /*->6581*/
/*  6565*/              OPC_CheckPredicate, 7, // Predicate_truncstorei16
/*  6567*/              OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  6569*/              OPC_EmitMergeInputChains1_0,
/*  6570*/              OPC_EmitInteger, MVT::i64, 0,
/*  6573*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 3,
                        // Src: (st GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei16>> - Complexity = 4
                        // Dst: (SH GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  6581*/            0, /*End of Scope*/
/*  6582*/          /*Scope*/ 16, /*->6599*/
/*  6583*/            OPC_CheckPredicate, 13, // Predicate_store
/*  6585*/            OPC_CheckPatternPredicate, 10, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6587*/            OPC_EmitMergeInputChains1_0,
/*  6588*/            OPC_EmitInteger, MVT::i64, 0,
/*  6591*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (st GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 4
                      // Dst: (SW GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  6599*/          /*Scope*/ 18, /*->6618*/
/*  6600*/            OPC_CheckPredicate, 12, // Predicate_truncstore
/*  6602*/            OPC_CheckPredicate, 10, // Predicate_truncstorei32
/*  6604*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6606*/            OPC_EmitMergeInputChains1_0,
/*  6607*/            OPC_EmitInteger, MVT::i64, 0,
/*  6610*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (st GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_truncstore>><<P:Predicate_truncstorei32>> - Complexity = 4
                      // Dst: (SW GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  6618*/          /*Scope*/ 16, /*->6635*/
/*  6619*/            OPC_CheckPredicate, 13, // Predicate_store
/*  6621*/            OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6623*/            OPC_EmitMergeInputChains1_0,
/*  6624*/            OPC_EmitInteger, MVT::i64, 0,
/*  6627*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (st GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 4
                      // Dst: (SD GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  6635*/          0, /*End of Scope*/
/*  6636*/        0, /*End of Scope*/
/*  6637*/      0, /*End of Scope*/
/*  6638*/    /*Scope*/ 72|128,2/*328*/, /*->6968*/
/*  6640*/      OPC_CheckChild1Type, MVT::f32,
/*  6642*/      OPC_Scope, 80|128,1/*208*/, /*->6853*/ // 2 children in Scope
/*  6645*/        OPC_MoveChild2,
/*  6646*/        OPC_SwitchOpcode /*2 cases */, 79, TARGET_VAL(ISD::OR),// ->6729
/*  6650*/          OPC_RecordChild0, // #2 = $rs1
/*  6651*/          OPC_RecordChild1, // #3 = $imm12
/*  6652*/          OPC_MoveChild1,
/*  6653*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  6656*/          OPC_CheckPredicate, 1, // Predicate_simm12
/*  6658*/          OPC_MoveParent,
/*  6659*/          OPC_CheckPredicate, 2, // Predicate_IsOrAdd
/*  6661*/          OPC_SwitchType /*2 cases */, 41, MVT::i32,// ->6705
/*  6664*/            OPC_MoveParent,
/*  6665*/            OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  6667*/            OPC_CheckPredicate, 13, // Predicate_store
/*  6669*/            OPC_Scope, 16, /*->6687*/ // 2 children in Scope
/*  6671*/              OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  6673*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6676*/              OPC_EmitMergeInputChains1_0,
/*  6677*/              OPC_EmitConvertToTarget, 3,
/*  6679*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st FPR32:{ *:[f32] }:$rs2, (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 18
                        // Dst: (FSW FPR32:{ *:[f32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  6687*/            /*Scope*/ 16, /*->6704*/
/*  6688*/              OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/*  6690*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6693*/              OPC_EmitMergeInputChains1_0,
/*  6694*/              OPC_EmitConvertToTarget, 3,
/*  6696*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st FPR32:{ *:[f32] }:$rs2, (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 18
                        // Dst: (FSW FPR32:{ *:[f32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  6704*/            0, /*End of Scope*/
/*  6705*/          /*SwitchType*/ 21, MVT::i64,// ->6728
/*  6707*/            OPC_MoveParent,
/*  6708*/            OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  6710*/            OPC_CheckPredicate, 13, // Predicate_store
/*  6712*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6714*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6717*/            OPC_EmitMergeInputChains1_0,
/*  6718*/            OPC_EmitConvertToTarget, 3,
/*  6720*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 4, 5,
                      // Src: (st FPR32:{ *:[f32] }:$rs2, (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 18
                      // Dst: (FSW FPR32:{ *:[f32] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6728*/          0, // EndSwitchType
/*  6729*/        /*SwitchOpcode*/ 120, TARGET_VAL(ISD::ADD),// ->6852
/*  6732*/          OPC_RecordChild0, // #2 = $rs1
/*  6733*/          OPC_RecordChild1, // #3 = $imm12
/*  6734*/          OPC_MoveChild1,
/*  6735*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  6738*/          OPC_CheckPredicate, 1, // Predicate_simm12
/*  6740*/          OPC_MoveParent,
/*  6741*/          OPC_SwitchType /*2 cases */, 69, MVT::i32,// ->6813
/*  6744*/            OPC_MoveParent,
/*  6745*/            OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  6747*/            OPC_CheckPredicate, 13, // Predicate_store
/*  6749*/            OPC_Scope, 16, /*->6767*/ // 4 children in Scope
/*  6751*/              OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  6753*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6756*/              OPC_EmitMergeInputChains1_0,
/*  6757*/              OPC_EmitConvertToTarget, 3,
/*  6759*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st FPR32:{ *:[f32] }:$rs2, (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 17
                        // Dst: (FSW FPR32:{ *:[f32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  6767*/            /*Scope*/ 16, /*->6784*/
/*  6768*/              OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/*  6770*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6773*/              OPC_EmitMergeInputChains1_0,
/*  6774*/              OPC_EmitConvertToTarget, 3,
/*  6776*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st FPR32:{ *:[f32] }:$rs2, (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 17
                        // Dst: (FSW FPR32:{ *:[f32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  6784*/            /*Scope*/ 13, /*->6798*/
/*  6785*/              OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  6787*/              OPC_EmitMergeInputChains1_0,
/*  6788*/              OPC_EmitConvertToTarget, 3,
/*  6790*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 4,
                        // Src: (st FPR32:{ *:[f32] }:$rs2, (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 11
                        // Dst: (FSW FPR32:{ *:[f32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  6798*/            /*Scope*/ 13, /*->6812*/
/*  6799*/              OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/*  6801*/              OPC_EmitMergeInputChains1_0,
/*  6802*/              OPC_EmitConvertToTarget, 3,
/*  6804*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 4,
                        // Src: (st FPR32:{ *:[f32] }:$rs2, (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 11
                        // Dst: (FSW FPR32:{ *:[f32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  6812*/            0, /*End of Scope*/
/*  6813*/          /*SwitchType*/ 36, MVT::i64,// ->6851
/*  6815*/            OPC_MoveParent,
/*  6816*/            OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  6818*/            OPC_CheckPredicate, 13, // Predicate_store
/*  6820*/            OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("64bit"))
/*  6822*/            OPC_Scope, 14, /*->6838*/ // 2 children in Scope
/*  6824*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  6827*/              OPC_EmitMergeInputChains1_0,
/*  6828*/              OPC_EmitConvertToTarget, 3,
/*  6830*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st FPR32:{ *:[f32] }:$rs2, (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 17
                        // Dst: (FSW FPR32:{ *:[f32] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6838*/            /*Scope*/ 11, /*->6850*/
/*  6839*/              OPC_EmitMergeInputChains1_0,
/*  6840*/              OPC_EmitConvertToTarget, 3,
/*  6842*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 4,
                        // Src: (st FPR32:{ *:[f32] }:$rs2, (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 11
                        // Dst: (FSW FPR32:{ *:[f32] }:$rs2, GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  6850*/            0, /*End of Scope*/
/*  6851*/          0, // EndSwitchType
/*  6852*/        0, // EndSwitchOpcode
/*  6853*/      /*Scope*/ 113, /*->6967*/
/*  6854*/        OPC_RecordChild2, // #2 = $rs1
/*  6855*/        OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  6857*/        OPC_CheckPredicate, 13, // Predicate_store
/*  6859*/        OPC_Scope, 17, /*->6878*/ // 5 children in Scope
/*  6861*/          OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  6863*/          OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  6866*/          OPC_EmitMergeInputChains1_0,
/*  6867*/          OPC_EmitInteger, MVT::i32, 0,
/*  6870*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSW), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4,
                    // Src: (st FPR32:{ *:[f32] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 10
                    // Dst: (FSW FPR32:{ *:[f32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  6878*/        /*Scope*/ 17, /*->6896*/
/*  6879*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6881*/          OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  6884*/          OPC_EmitMergeInputChains1_0,
/*  6885*/          OPC_EmitInteger, MVT::i64, 0,
/*  6888*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSW), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4,
                    // Src: (st FPR32:{ *:[f32] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 10
                    // Dst: (FSW FPR32:{ *:[f32] }:$rs2, AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  6896*/        /*Scope*/ 17, /*->6914*/
/*  6897*/          OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/*  6899*/          OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  6902*/          OPC_EmitMergeInputChains1_0,
/*  6903*/          OPC_EmitInteger, MVT::i32, 0,
/*  6906*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSW), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4,
                    // Src: (st FPR32:{ *:[f32] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 10
                    // Dst: (FSW FPR32:{ *:[f32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  6914*/        /*Scope*/ 34, /*->6949*/
/*  6915*/          OPC_CheckChild2Type, MVT::i32,
/*  6917*/          OPC_Scope, 14, /*->6933*/ // 2 children in Scope
/*  6919*/            OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  6921*/            OPC_EmitMergeInputChains1_0,
/*  6922*/            OPC_EmitInteger, MVT::i32, 0,
/*  6925*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (st FPR32:{ *:[f32] }:$rs2, GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 4
                      // Dst: (FSW FPR32:{ *:[f32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  6933*/          /*Scope*/ 14, /*->6948*/
/*  6934*/            OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/*  6936*/            OPC_EmitMergeInputChains1_0,
/*  6937*/            OPC_EmitInteger, MVT::i32, 0,
/*  6940*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (st FPR32:{ *:[f32] }:$rs2, GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 4
                      // Dst: (FSW FPR32:{ *:[f32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  6948*/          0, /*End of Scope*/
/*  6949*/        /*Scope*/ 16, /*->6966*/
/*  6950*/          OPC_CheckChild2Type, MVT::i64,
/*  6952*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  6954*/          OPC_EmitMergeInputChains1_0,
/*  6955*/          OPC_EmitInteger, MVT::i64, 0,
/*  6958*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSW), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 2, 3,
                    // Src: (st FPR32:{ *:[f32] }:$rs2, GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 4
                    // Dst: (FSW FPR32:{ *:[f32] }:$rs2, GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  6966*/        0, /*End of Scope*/
/*  6967*/      0, /*End of Scope*/
/*  6968*/    /*Scope*/ 72|128,2/*328*/, /*->7298*/
/*  6970*/      OPC_CheckChild1Type, MVT::f64,
/*  6972*/      OPC_Scope, 80|128,1/*208*/, /*->7183*/ // 2 children in Scope
/*  6975*/        OPC_MoveChild2,
/*  6976*/        OPC_SwitchOpcode /*2 cases */, 79, TARGET_VAL(ISD::OR),// ->7059
/*  6980*/          OPC_RecordChild0, // #2 = $rs1
/*  6981*/          OPC_RecordChild1, // #3 = $imm12
/*  6982*/          OPC_MoveChild1,
/*  6983*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  6986*/          OPC_CheckPredicate, 1, // Predicate_simm12
/*  6988*/          OPC_MoveParent,
/*  6989*/          OPC_CheckPredicate, 2, // Predicate_IsOrAdd
/*  6991*/          OPC_SwitchType /*2 cases */, 41, MVT::i32,// ->7035
/*  6994*/            OPC_MoveParent,
/*  6995*/            OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  6997*/            OPC_CheckPredicate, 13, // Predicate_store
/*  6999*/            OPC_Scope, 16, /*->7017*/ // 2 children in Scope
/*  7001*/              OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7003*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  7006*/              OPC_EmitMergeInputChains1_0,
/*  7007*/              OPC_EmitConvertToTarget, 3,
/*  7009*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st FPR64:{ *:[f64] }:$rs2, (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 18
                        // Dst: (FSD FPR64:{ *:[f64] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7017*/            /*Scope*/ 16, /*->7034*/
/*  7018*/              OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/*  7020*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  7023*/              OPC_EmitMergeInputChains1_0,
/*  7024*/              OPC_EmitConvertToTarget, 3,
/*  7026*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st FPR64:{ *:[f64] }:$rs2, (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 18
                        // Dst: (FSD FPR64:{ *:[f64] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7034*/            0, /*End of Scope*/
/*  7035*/          /*SwitchType*/ 21, MVT::i64,// ->7058
/*  7037*/            OPC_MoveParent,
/*  7038*/            OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  7040*/            OPC_CheckPredicate, 13, // Predicate_store
/*  7042*/            OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  7044*/            OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  7047*/            OPC_EmitMergeInputChains1_0,
/*  7048*/            OPC_EmitConvertToTarget, 3,
/*  7050*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSD), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 4, 5,
                      // Src: (st FPR64:{ *:[f64] }:$rs2, (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 18
                      // Dst: (FSD FPR64:{ *:[f64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  7058*/          0, // EndSwitchType
/*  7059*/        /*SwitchOpcode*/ 120, TARGET_VAL(ISD::ADD),// ->7182
/*  7062*/          OPC_RecordChild0, // #2 = $rs1
/*  7063*/          OPC_RecordChild1, // #3 = $imm12
/*  7064*/          OPC_MoveChild1,
/*  7065*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  7068*/          OPC_CheckPredicate, 1, // Predicate_simm12
/*  7070*/          OPC_MoveParent,
/*  7071*/          OPC_SwitchType /*2 cases */, 69, MVT::i32,// ->7143
/*  7074*/            OPC_MoveParent,
/*  7075*/            OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  7077*/            OPC_CheckPredicate, 13, // Predicate_store
/*  7079*/            OPC_Scope, 16, /*->7097*/ // 4 children in Scope
/*  7081*/              OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7083*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  7086*/              OPC_EmitMergeInputChains1_0,
/*  7087*/              OPC_EmitConvertToTarget, 3,
/*  7089*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st FPR64:{ *:[f64] }:$rs2, (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 17
                        // Dst: (FSD FPR64:{ *:[f64] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7097*/            /*Scope*/ 16, /*->7114*/
/*  7098*/              OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/*  7100*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  7103*/              OPC_EmitMergeInputChains1_0,
/*  7104*/              OPC_EmitConvertToTarget, 3,
/*  7106*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st FPR64:{ *:[f64] }:$rs2, (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 17
                        // Dst: (FSD FPR64:{ *:[f64] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7114*/            /*Scope*/ 13, /*->7128*/
/*  7115*/              OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7117*/              OPC_EmitMergeInputChains1_0,
/*  7118*/              OPC_EmitConvertToTarget, 3,
/*  7120*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 4,
                        // Src: (st FPR64:{ *:[f64] }:$rs2, (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 11
                        // Dst: (FSD FPR64:{ *:[f64] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7128*/            /*Scope*/ 13, /*->7142*/
/*  7129*/              OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/*  7131*/              OPC_EmitMergeInputChains1_0,
/*  7132*/              OPC_EmitConvertToTarget, 3,
/*  7134*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 4,
                        // Src: (st FPR64:{ *:[f64] }:$rs2, (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 11
                        // Dst: (FSD FPR64:{ *:[f64] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7142*/            0, /*End of Scope*/
/*  7143*/          /*SwitchType*/ 36, MVT::i64,// ->7181
/*  7145*/            OPC_MoveParent,
/*  7146*/            OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  7148*/            OPC_CheckPredicate, 13, // Predicate_store
/*  7150*/            OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  7152*/            OPC_Scope, 14, /*->7168*/ // 2 children in Scope
/*  7154*/              OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #4
/*  7157*/              OPC_EmitMergeInputChains1_0,
/*  7158*/              OPC_EmitConvertToTarget, 3,
/*  7160*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 4, 5,
                        // Src: (st FPR64:{ *:[f64] }:$rs2, (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 17
                        // Dst: (FSD FPR64:{ *:[f64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  7168*/            /*Scope*/ 11, /*->7180*/
/*  7169*/              OPC_EmitMergeInputChains1_0,
/*  7170*/              OPC_EmitConvertToTarget, 3,
/*  7172*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 1, 2, 4,
                        // Src: (st FPR64:{ *:[f64] }:$rs2, (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 11
                        // Dst: (FSD FPR64:{ *:[f64] }:$rs2, GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  7180*/            0, /*End of Scope*/
/*  7181*/          0, // EndSwitchType
/*  7182*/        0, // EndSwitchOpcode
/*  7183*/      /*Scope*/ 113, /*->7297*/
/*  7184*/        OPC_RecordChild2, // #2 = $rs1
/*  7185*/        OPC_CheckPredicate, 11, // Predicate_unindexedstore
/*  7187*/        OPC_CheckPredicate, 13, // Predicate_store
/*  7189*/        OPC_Scope, 17, /*->7208*/ // 5 children in Scope
/*  7191*/          OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7193*/          OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  7196*/          OPC_EmitMergeInputChains1_0,
/*  7197*/          OPC_EmitInteger, MVT::i32, 0,
/*  7200*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSD), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4,
                    // Src: (st FPR64:{ *:[f64] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 10
                    // Dst: (FSD FPR64:{ *:[f64] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  7208*/        /*Scope*/ 17, /*->7226*/
/*  7209*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  7211*/          OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  7214*/          OPC_EmitMergeInputChains1_0,
/*  7215*/          OPC_EmitInteger, MVT::i64, 0,
/*  7218*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSD), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4,
                    // Src: (st FPR64:{ *:[f64] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 10
                    // Dst: (FSD FPR64:{ *:[f64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  7226*/        /*Scope*/ 17, /*->7244*/
/*  7227*/          OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/*  7229*/          OPC_CheckComplexPat, /*CP*/0, /*#*/2, // SelectAddrFI:$rs1 #3
/*  7232*/          OPC_EmitMergeInputChains1_0,
/*  7233*/          OPC_EmitInteger, MVT::i32, 0,
/*  7236*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSD), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 3, 4,
                    // Src: (st FPR64:{ *:[f64] }:$rs2, AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 10
                    // Dst: (FSD FPR64:{ *:[f64] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  7244*/        /*Scope*/ 34, /*->7279*/
/*  7245*/          OPC_CheckChild2Type, MVT::i32,
/*  7247*/          OPC_Scope, 14, /*->7263*/ // 2 children in Scope
/*  7249*/            OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7251*/            OPC_EmitMergeInputChains1_0,
/*  7252*/            OPC_EmitInteger, MVT::i32, 0,
/*  7255*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSD), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (st FPR64:{ *:[f64] }:$rs2, GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 4
                      // Dst: (FSD FPR64:{ *:[f64] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  7263*/          /*Scope*/ 14, /*->7278*/
/*  7264*/            OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/*  7266*/            OPC_EmitMergeInputChains1_0,
/*  7267*/            OPC_EmitInteger, MVT::i32, 0,
/*  7270*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSD), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (st FPR64:{ *:[f64] }:$rs2, GPR:{ *:[i32] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 4
                      // Dst: (FSD FPR64:{ *:[f64] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  7278*/          0, /*End of Scope*/
/*  7279*/        /*Scope*/ 16, /*->7296*/
/*  7280*/          OPC_CheckChild2Type, MVT::i64,
/*  7282*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("64bit"))
/*  7284*/          OPC_EmitMergeInputChains1_0,
/*  7285*/          OPC_EmitInteger, MVT::i64, 0,
/*  7288*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FSD), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 1, 2, 3,
                    // Src: (st FPR64:{ *:[f64] }:$rs2, GPR:{ *:[i64] }:$rs1)<<P:Predicate_unindexedstore>><<P:Predicate_store>> - Complexity = 4
                    // Dst: (FSD FPR64:{ *:[f64] }:$rs2, GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  7296*/        0, /*End of Scope*/
/*  7297*/      0, /*End of Scope*/
/*  7298*/    0, /*End of Scope*/
/*  7299*/  /*SwitchOpcode*/ 74|128,9/*1226*/, TARGET_VAL(ISD::ATOMIC_STORE),// ->8529
/*  7303*/    OPC_RecordMemRef,
/*  7304*/    OPC_RecordNode, // #0 = 'atomic_store' chained node
/*  7305*/    OPC_Scope, 90|128,5/*730*/, /*->8038*/ // 2 children in Scope
/*  7308*/      OPC_MoveChild1,
/*  7309*/      OPC_SwitchOpcode /*2 cases */, 6|128,2/*262*/, TARGET_VAL(ISD::OR),// ->7576
/*  7314*/        OPC_RecordChild0, // #1 = $rs1
/*  7315*/        OPC_RecordChild1, // #2 = $imm12
/*  7316*/        OPC_MoveChild1,
/*  7317*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  7320*/        OPC_CheckPredicate, 1, // Predicate_simm12
/*  7322*/        OPC_MoveParent,
/*  7323*/        OPC_CheckPredicate, 2, // Predicate_IsOrAdd
/*  7325*/        OPC_SwitchType /*2 cases */, 34|128,1/*162*/, MVT::i32,// ->7491
/*  7329*/          OPC_MoveParent,
/*  7330*/          OPC_RecordChild2, // #3 = $rs2
/*  7331*/          OPC_CheckChild2Type, MVT::i32,
/*  7333*/          OPC_Scope, 38, /*->7373*/ // 4 children in Scope
/*  7335*/            OPC_CheckPredicate, 5, // Predicate_atomic_store_8
/*  7337*/            OPC_Scope, 16, /*->7355*/ // 2 children in Scope
/*  7339*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7341*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7344*/              OPC_EmitMergeInputChains1_0,
/*  7345*/              OPC_EmitConvertToTarget, 2,
/*  7347*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_8>> - Complexity = 18
                        // Dst: (SB GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7355*/            /*Scope*/ 16, /*->7372*/
/*  7356*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  7358*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7361*/              OPC_EmitMergeInputChains1_0,
/*  7362*/              OPC_EmitConvertToTarget, 2,
/*  7364*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_8>> - Complexity = 18
                        // Dst: (SB GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7372*/            0, /*End of Scope*/
/*  7373*/          /*Scope*/ 38, /*->7412*/
/*  7374*/            OPC_CheckPredicate, 7, // Predicate_atomic_store_16
/*  7376*/            OPC_Scope, 16, /*->7394*/ // 2 children in Scope
/*  7378*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7380*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7383*/              OPC_EmitMergeInputChains1_0,
/*  7384*/              OPC_EmitConvertToTarget, 2,
/*  7386*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_16>> - Complexity = 18
                        // Dst: (SH GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7394*/            /*Scope*/ 16, /*->7411*/
/*  7395*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  7397*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7400*/              OPC_EmitMergeInputChains1_0,
/*  7401*/              OPC_EmitConvertToTarget, 2,
/*  7403*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_16>> - Complexity = 18
                        // Dst: (SH GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7411*/            0, /*End of Scope*/
/*  7412*/          /*Scope*/ 38, /*->7451*/
/*  7413*/            OPC_CheckPredicate, 10, // Predicate_atomic_store_32
/*  7415*/            OPC_Scope, 16, /*->7433*/ // 2 children in Scope
/*  7417*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7419*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7422*/              OPC_EmitMergeInputChains1_0,
/*  7423*/              OPC_EmitConvertToTarget, 2,
/*  7425*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_32>> - Complexity = 18
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7433*/            /*Scope*/ 16, /*->7450*/
/*  7434*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  7436*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7439*/              OPC_EmitMergeInputChains1_0,
/*  7440*/              OPC_EmitConvertToTarget, 2,
/*  7442*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_32>> - Complexity = 18
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7450*/            0, /*End of Scope*/
/*  7451*/          /*Scope*/ 38, /*->7490*/
/*  7452*/            OPC_CheckPredicate, 14, // Predicate_atomic_store_64
/*  7454*/            OPC_Scope, 16, /*->7472*/ // 2 children in Scope
/*  7456*/              OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7458*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7461*/              OPC_EmitMergeInputChains1_0,
/*  7462*/              OPC_EmitConvertToTarget, 2,
/*  7464*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_64>> - Complexity = 18
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7472*/            /*Scope*/ 16, /*->7489*/
/*  7473*/              OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/*  7475*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7478*/              OPC_EmitMergeInputChains1_0,
/*  7479*/              OPC_EmitConvertToTarget, 2,
/*  7481*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_64>> - Complexity = 18
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7489*/            0, /*End of Scope*/
/*  7490*/          0, /*End of Scope*/
/*  7491*/        /*SwitchType*/ 82, MVT::i64,// ->7575
/*  7493*/          OPC_MoveParent,
/*  7494*/          OPC_RecordChild2, // #3 = $rs2
/*  7495*/          OPC_CheckChild2Type, MVT::i64,
/*  7497*/          OPC_Scope, 18, /*->7517*/ // 4 children in Scope
/*  7499*/            OPC_CheckPredicate, 5, // Predicate_atomic_store_8
/*  7501*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  7503*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7506*/            OPC_EmitMergeInputChains1_0,
/*  7507*/            OPC_EmitConvertToTarget, 2,
/*  7509*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 3, 4, 5,
                      // Src: (atomic_store (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_8>> - Complexity = 18
                      // Dst: (SB GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  7517*/          /*Scope*/ 18, /*->7536*/
/*  7518*/            OPC_CheckPredicate, 7, // Predicate_atomic_store_16
/*  7520*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  7522*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7525*/            OPC_EmitMergeInputChains1_0,
/*  7526*/            OPC_EmitConvertToTarget, 2,
/*  7528*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 3, 4, 5,
                      // Src: (atomic_store (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_16>> - Complexity = 18
                      // Dst: (SH GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  7536*/          /*Scope*/ 18, /*->7555*/
/*  7537*/            OPC_CheckPredicate, 10, // Predicate_atomic_store_32
/*  7539*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  7541*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7544*/            OPC_EmitMergeInputChains1_0,
/*  7545*/            OPC_EmitConvertToTarget, 2,
/*  7547*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 3, 4, 5,
                      // Src: (atomic_store (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_32>> - Complexity = 18
                      // Dst: (SW GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  7555*/          /*Scope*/ 18, /*->7574*/
/*  7556*/            OPC_CheckPredicate, 14, // Predicate_atomic_store_64
/*  7558*/            OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  7560*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7563*/            OPC_EmitMergeInputChains1_0,
/*  7564*/            OPC_EmitConvertToTarget, 2,
/*  7566*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 3, 4, 5,
                      // Src: (atomic_store (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_64>> - Complexity = 18
                      // Dst: (SD GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  7574*/          0, /*End of Scope*/
/*  7575*/        0, // EndSwitchType
/*  7576*/      /*SwitchOpcode*/ 73|128,3/*457*/, TARGET_VAL(ISD::ADD),// ->8037
/*  7580*/        OPC_RecordChild0, // #1 = $rs1
/*  7581*/        OPC_RecordChild1, // #2 = $imm12
/*  7582*/        OPC_MoveChild1,
/*  7583*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  7586*/        OPC_CheckPredicate, 1, // Predicate_simm12
/*  7588*/        OPC_MoveParent,
/*  7589*/        OPC_SwitchType /*2 cases */, 38|128,2/*294*/, MVT::i32,// ->7887
/*  7593*/          OPC_MoveParent,
/*  7594*/          OPC_RecordChild2, // #3 = $rs2
/*  7595*/          OPC_CheckChild2Type, MVT::i32,
/*  7597*/          OPC_Scope, 38, /*->7637*/ // 8 children in Scope
/*  7599*/            OPC_CheckPredicate, 5, // Predicate_atomic_store_8
/*  7601*/            OPC_Scope, 16, /*->7619*/ // 2 children in Scope
/*  7603*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7605*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7608*/              OPC_EmitMergeInputChains1_0,
/*  7609*/              OPC_EmitConvertToTarget, 2,
/*  7611*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_8>> - Complexity = 17
                        // Dst: (SB GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7619*/            /*Scope*/ 16, /*->7636*/
/*  7620*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  7622*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7625*/              OPC_EmitMergeInputChains1_0,
/*  7626*/              OPC_EmitConvertToTarget, 2,
/*  7628*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_8>> - Complexity = 17
                        // Dst: (SB GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7636*/            0, /*End of Scope*/
/*  7637*/          /*Scope*/ 38, /*->7676*/
/*  7638*/            OPC_CheckPredicate, 7, // Predicate_atomic_store_16
/*  7640*/            OPC_Scope, 16, /*->7658*/ // 2 children in Scope
/*  7642*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7644*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7647*/              OPC_EmitMergeInputChains1_0,
/*  7648*/              OPC_EmitConvertToTarget, 2,
/*  7650*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_16>> - Complexity = 17
                        // Dst: (SH GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7658*/            /*Scope*/ 16, /*->7675*/
/*  7659*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  7661*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7664*/              OPC_EmitMergeInputChains1_0,
/*  7665*/              OPC_EmitConvertToTarget, 2,
/*  7667*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_16>> - Complexity = 17
                        // Dst: (SH GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7675*/            0, /*End of Scope*/
/*  7676*/          /*Scope*/ 38, /*->7715*/
/*  7677*/            OPC_CheckPredicate, 10, // Predicate_atomic_store_32
/*  7679*/            OPC_Scope, 16, /*->7697*/ // 2 children in Scope
/*  7681*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7683*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7686*/              OPC_EmitMergeInputChains1_0,
/*  7687*/              OPC_EmitConvertToTarget, 2,
/*  7689*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_32>> - Complexity = 17
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7697*/            /*Scope*/ 16, /*->7714*/
/*  7698*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  7700*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7703*/              OPC_EmitMergeInputChains1_0,
/*  7704*/              OPC_EmitConvertToTarget, 2,
/*  7706*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_32>> - Complexity = 17
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7714*/            0, /*End of Scope*/
/*  7715*/          /*Scope*/ 38, /*->7754*/
/*  7716*/            OPC_CheckPredicate, 14, // Predicate_atomic_store_64
/*  7718*/            OPC_Scope, 16, /*->7736*/ // 2 children in Scope
/*  7720*/              OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7722*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7725*/              OPC_EmitMergeInputChains1_0,
/*  7726*/              OPC_EmitConvertToTarget, 2,
/*  7728*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_64>> - Complexity = 17
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7736*/            /*Scope*/ 16, /*->7753*/
/*  7737*/              OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/*  7739*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7742*/              OPC_EmitMergeInputChains1_0,
/*  7743*/              OPC_EmitConvertToTarget, 2,
/*  7745*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 4, 5,
                        // Src: (atomic_store (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_64>> - Complexity = 17
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7753*/            0, /*End of Scope*/
/*  7754*/          /*Scope*/ 32, /*->7787*/
/*  7755*/            OPC_CheckPredicate, 5, // Predicate_atomic_store_8
/*  7757*/            OPC_Scope, 13, /*->7772*/ // 2 children in Scope
/*  7759*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7761*/              OPC_EmitMergeInputChains1_0,
/*  7762*/              OPC_EmitConvertToTarget, 2,
/*  7764*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 1, 4,
                        // Src: (atomic_store (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_8>> - Complexity = 11
                        // Dst: (SB GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7772*/            /*Scope*/ 13, /*->7786*/
/*  7773*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  7775*/              OPC_EmitMergeInputChains1_0,
/*  7776*/              OPC_EmitConvertToTarget, 2,
/*  7778*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 1, 4,
                        // Src: (atomic_store (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_8>> - Complexity = 11
                        // Dst: (SB GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7786*/            0, /*End of Scope*/
/*  7787*/          /*Scope*/ 32, /*->7820*/
/*  7788*/            OPC_CheckPredicate, 7, // Predicate_atomic_store_16
/*  7790*/            OPC_Scope, 13, /*->7805*/ // 2 children in Scope
/*  7792*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7794*/              OPC_EmitMergeInputChains1_0,
/*  7795*/              OPC_EmitConvertToTarget, 2,
/*  7797*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 1, 4,
                        // Src: (atomic_store (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_16>> - Complexity = 11
                        // Dst: (SH GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7805*/            /*Scope*/ 13, /*->7819*/
/*  7806*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  7808*/              OPC_EmitMergeInputChains1_0,
/*  7809*/              OPC_EmitConvertToTarget, 2,
/*  7811*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 1, 4,
                        // Src: (atomic_store (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_16>> - Complexity = 11
                        // Dst: (SH GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7819*/            0, /*End of Scope*/
/*  7820*/          /*Scope*/ 32, /*->7853*/
/*  7821*/            OPC_CheckPredicate, 10, // Predicate_atomic_store_32
/*  7823*/            OPC_Scope, 13, /*->7838*/ // 2 children in Scope
/*  7825*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7827*/              OPC_EmitMergeInputChains1_0,
/*  7828*/              OPC_EmitConvertToTarget, 2,
/*  7830*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 1, 4,
                        // Src: (atomic_store (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_32>> - Complexity = 11
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7838*/            /*Scope*/ 13, /*->7852*/
/*  7839*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  7841*/              OPC_EmitMergeInputChains1_0,
/*  7842*/              OPC_EmitConvertToTarget, 2,
/*  7844*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 1, 4,
                        // Src: (atomic_store (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_32>> - Complexity = 11
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7852*/            0, /*End of Scope*/
/*  7853*/          /*Scope*/ 32, /*->7886*/
/*  7854*/            OPC_CheckPredicate, 14, // Predicate_atomic_store_64
/*  7856*/            OPC_Scope, 13, /*->7871*/ // 2 children in Scope
/*  7858*/              OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  7860*/              OPC_EmitMergeInputChains1_0,
/*  7861*/              OPC_EmitConvertToTarget, 2,
/*  7863*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 1, 4,
                        // Src: (atomic_store (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_64>> - Complexity = 11
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7871*/            /*Scope*/ 13, /*->7885*/
/*  7872*/              OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/*  7874*/              OPC_EmitMergeInputChains1_0,
/*  7875*/              OPC_EmitConvertToTarget, 2,
/*  7877*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 3, 1, 4,
                        // Src: (atomic_store (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_64>> - Complexity = 11
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  7885*/            0, /*End of Scope*/
/*  7886*/          0, /*End of Scope*/
/*  7887*/        /*SwitchType*/ 18|128,1/*146*/, MVT::i64,// ->8036
/*  7890*/          OPC_MoveParent,
/*  7891*/          OPC_RecordChild2, // #3 = $rs2
/*  7892*/          OPC_CheckChild2Type, MVT::i64,
/*  7894*/          OPC_Scope, 18, /*->7914*/ // 8 children in Scope
/*  7896*/            OPC_CheckPredicate, 5, // Predicate_atomic_store_8
/*  7898*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  7900*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7903*/            OPC_EmitMergeInputChains1_0,
/*  7904*/            OPC_EmitConvertToTarget, 2,
/*  7906*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 3, 4, 5,
                      // Src: (atomic_store (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_8>> - Complexity = 17
                      // Dst: (SB GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  7914*/          /*Scope*/ 18, /*->7933*/
/*  7915*/            OPC_CheckPredicate, 7, // Predicate_atomic_store_16
/*  7917*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  7919*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7922*/            OPC_EmitMergeInputChains1_0,
/*  7923*/            OPC_EmitConvertToTarget, 2,
/*  7925*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 3, 4, 5,
                      // Src: (atomic_store (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_16>> - Complexity = 17
                      // Dst: (SH GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  7933*/          /*Scope*/ 18, /*->7952*/
/*  7934*/            OPC_CheckPredicate, 10, // Predicate_atomic_store_32
/*  7936*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  7938*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7941*/            OPC_EmitMergeInputChains1_0,
/*  7942*/            OPC_EmitConvertToTarget, 2,
/*  7944*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 3, 4, 5,
                      // Src: (atomic_store (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_32>> - Complexity = 17
                      // Dst: (SW GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  7952*/          /*Scope*/ 18, /*->7971*/
/*  7953*/            OPC_CheckPredicate, 14, // Predicate_atomic_store_64
/*  7955*/            OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  7957*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #4
/*  7960*/            OPC_EmitMergeInputChains1_0,
/*  7961*/            OPC_EmitConvertToTarget, 2,
/*  7963*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 3, 4, 5,
                      // Src: (atomic_store (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_64>> - Complexity = 17
                      // Dst: (SD GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  7971*/          /*Scope*/ 15, /*->7987*/
/*  7972*/            OPC_CheckPredicate, 5, // Predicate_atomic_store_8
/*  7974*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  7976*/            OPC_EmitMergeInputChains1_0,
/*  7977*/            OPC_EmitConvertToTarget, 2,
/*  7979*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 3, 1, 4,
                      // Src: (atomic_store (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_8>> - Complexity = 11
                      // Dst: (SB GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  7987*/          /*Scope*/ 15, /*->8003*/
/*  7988*/            OPC_CheckPredicate, 7, // Predicate_atomic_store_16
/*  7990*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  7992*/            OPC_EmitMergeInputChains1_0,
/*  7993*/            OPC_EmitConvertToTarget, 2,
/*  7995*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 3, 1, 4,
                      // Src: (atomic_store (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_16>> - Complexity = 11
                      // Dst: (SH GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  8003*/          /*Scope*/ 15, /*->8019*/
/*  8004*/            OPC_CheckPredicate, 10, // Predicate_atomic_store_32
/*  8006*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  8008*/            OPC_EmitMergeInputChains1_0,
/*  8009*/            OPC_EmitConvertToTarget, 2,
/*  8011*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 3, 1, 4,
                      // Src: (atomic_store (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_32>> - Complexity = 11
                      // Dst: (SW GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  8019*/          /*Scope*/ 15, /*->8035*/
/*  8020*/            OPC_CheckPredicate, 14, // Predicate_atomic_store_64
/*  8022*/            OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  8024*/            OPC_EmitMergeInputChains1_0,
/*  8025*/            OPC_EmitConvertToTarget, 2,
/*  8027*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 3, 1, 4,
                      // Src: (atomic_store (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12), GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_64>> - Complexity = 11
                      // Dst: (SD GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  8035*/          0, /*End of Scope*/
/*  8036*/        0, // EndSwitchType
/*  8037*/      0, // EndSwitchOpcode
/*  8038*/    /*Scope*/ 104|128,3/*488*/, /*->8528*/
/*  8040*/      OPC_RecordChild1, // #1 = $rs1
/*  8041*/      OPC_Scope, 2|128,2/*258*/, /*->8302*/ // 3 children in Scope
/*  8044*/        OPC_RecordChild2, // #2 = $rs2
/*  8045*/        OPC_Scope, 40|128,1/*168*/, /*->8216*/ // 2 children in Scope
/*  8048*/          OPC_CheckChild2Type, MVT::i32,
/*  8050*/          OPC_Scope, 40, /*->8092*/ // 4 children in Scope
/*  8052*/            OPC_CheckPredicate, 5, // Predicate_atomic_store_8
/*  8054*/            OPC_Scope, 17, /*->8073*/ // 2 children in Scope
/*  8056*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8058*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8061*/              OPC_EmitMergeInputChains1_0,
/*  8062*/              OPC_EmitInteger, MVT::i32, 0,
/*  8065*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 2, 3, 4,
                        // Src: (atomic_store AddrFI:{ *:[iPTR] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_8>> - Complexity = 10
                        // Dst: (SB GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8073*/            /*Scope*/ 17, /*->8091*/
/*  8074*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  8076*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8079*/              OPC_EmitMergeInputChains1_0,
/*  8080*/              OPC_EmitInteger, MVT::i32, 0,
/*  8083*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 2, 3, 4,
                        // Src: (atomic_store AddrFI:{ *:[iPTR] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_8>> - Complexity = 10
                        // Dst: (SB GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8091*/            0, /*End of Scope*/
/*  8092*/          /*Scope*/ 40, /*->8133*/
/*  8093*/            OPC_CheckPredicate, 7, // Predicate_atomic_store_16
/*  8095*/            OPC_Scope, 17, /*->8114*/ // 2 children in Scope
/*  8097*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8099*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8102*/              OPC_EmitMergeInputChains1_0,
/*  8103*/              OPC_EmitInteger, MVT::i32, 0,
/*  8106*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 2, 3, 4,
                        // Src: (atomic_store AddrFI:{ *:[iPTR] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_16>> - Complexity = 10
                        // Dst: (SH GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8114*/            /*Scope*/ 17, /*->8132*/
/*  8115*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  8117*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8120*/              OPC_EmitMergeInputChains1_0,
/*  8121*/              OPC_EmitInteger, MVT::i32, 0,
/*  8124*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 2, 3, 4,
                        // Src: (atomic_store AddrFI:{ *:[iPTR] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_16>> - Complexity = 10
                        // Dst: (SH GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8132*/            0, /*End of Scope*/
/*  8133*/          /*Scope*/ 40, /*->8174*/
/*  8134*/            OPC_CheckPredicate, 10, // Predicate_atomic_store_32
/*  8136*/            OPC_Scope, 17, /*->8155*/ // 2 children in Scope
/*  8138*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8140*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8143*/              OPC_EmitMergeInputChains1_0,
/*  8144*/              OPC_EmitInteger, MVT::i32, 0,
/*  8147*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 2, 3, 4,
                        // Src: (atomic_store AddrFI:{ *:[iPTR] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_32>> - Complexity = 10
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8155*/            /*Scope*/ 17, /*->8173*/
/*  8156*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  8158*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8161*/              OPC_EmitMergeInputChains1_0,
/*  8162*/              OPC_EmitInteger, MVT::i32, 0,
/*  8165*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 2, 3, 4,
                        // Src: (atomic_store AddrFI:{ *:[iPTR] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_32>> - Complexity = 10
                        // Dst: (SW GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8173*/            0, /*End of Scope*/
/*  8174*/          /*Scope*/ 40, /*->8215*/
/*  8175*/            OPC_CheckPredicate, 14, // Predicate_atomic_store_64
/*  8177*/            OPC_Scope, 17, /*->8196*/ // 2 children in Scope
/*  8179*/              OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8181*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8184*/              OPC_EmitMergeInputChains1_0,
/*  8185*/              OPC_EmitInteger, MVT::i32, 0,
/*  8188*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 2, 3, 4,
                        // Src: (atomic_store AddrFI:{ *:[iPTR] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_64>> - Complexity = 10
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8196*/            /*Scope*/ 17, /*->8214*/
/*  8197*/              OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/*  8199*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8202*/              OPC_EmitMergeInputChains1_0,
/*  8203*/              OPC_EmitInteger, MVT::i32, 0,
/*  8206*/              OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                            3/*#Ops*/, 2, 3, 4,
                        // Src: (atomic_store AddrFI:{ *:[iPTR] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_64>> - Complexity = 10
                        // Dst: (SD GPR:{ *:[i32] }:$rs2, AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8214*/            0, /*End of Scope*/
/*  8215*/          0, /*End of Scope*/
/*  8216*/        /*Scope*/ 84, /*->8301*/
/*  8217*/          OPC_CheckChild2Type, MVT::i64,
/*  8219*/          OPC_Scope, 19, /*->8240*/ // 4 children in Scope
/*  8221*/            OPC_CheckPredicate, 5, // Predicate_atomic_store_8
/*  8223*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  8225*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8228*/            OPC_EmitMergeInputChains1_0,
/*  8229*/            OPC_EmitInteger, MVT::i64, 0,
/*  8232*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 2, 3, 4,
                      // Src: (atomic_store AddrFI:{ *:[iPTR] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_8>> - Complexity = 10
                      // Dst: (SB GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  8240*/          /*Scope*/ 19, /*->8260*/
/*  8241*/            OPC_CheckPredicate, 7, // Predicate_atomic_store_16
/*  8243*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  8245*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8248*/            OPC_EmitMergeInputChains1_0,
/*  8249*/            OPC_EmitInteger, MVT::i64, 0,
/*  8252*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 2, 3, 4,
                      // Src: (atomic_store AddrFI:{ *:[iPTR] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_16>> - Complexity = 10
                      // Dst: (SH GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  8260*/          /*Scope*/ 19, /*->8280*/
/*  8261*/            OPC_CheckPredicate, 10, // Predicate_atomic_store_32
/*  8263*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  8265*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8268*/            OPC_EmitMergeInputChains1_0,
/*  8269*/            OPC_EmitInteger, MVT::i64, 0,
/*  8272*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 2, 3, 4,
                      // Src: (atomic_store AddrFI:{ *:[iPTR] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_32>> - Complexity = 10
                      // Dst: (SW GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  8280*/          /*Scope*/ 19, /*->8300*/
/*  8281*/            OPC_CheckPredicate, 14, // Predicate_atomic_store_64
/*  8283*/            OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  8285*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8288*/            OPC_EmitMergeInputChains1_0,
/*  8289*/            OPC_EmitInteger, MVT::i64, 0,
/*  8292*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 2, 3, 4,
                      // Src: (atomic_store AddrFI:{ *:[iPTR] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_64>> - Complexity = 10
                      // Dst: (SD GPR:{ *:[i64] }:$rs2, AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  8300*/          0, /*End of Scope*/
/*  8301*/        0, /*End of Scope*/
/*  8302*/      /*Scope*/ 19|128,1/*147*/, /*->8451*/
/*  8304*/        OPC_CheckChild1Type, MVT::i32,
/*  8306*/        OPC_RecordChild2, // #2 = $rs2
/*  8307*/        OPC_CheckChild2Type, MVT::i32,
/*  8309*/        OPC_Scope, 34, /*->8345*/ // 4 children in Scope
/*  8311*/          OPC_CheckPredicate, 5, // Predicate_atomic_store_8
/*  8313*/          OPC_Scope, 14, /*->8329*/ // 2 children in Scope
/*  8315*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8317*/            OPC_EmitMergeInputChains1_0,
/*  8318*/            OPC_EmitInteger, MVT::i32, 0,
/*  8321*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (atomic_store GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_8>> - Complexity = 4
                      // Dst: (SB GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8329*/          /*Scope*/ 14, /*->8344*/
/*  8330*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  8332*/            OPC_EmitMergeInputChains1_0,
/*  8333*/            OPC_EmitInteger, MVT::i32, 0,
/*  8336*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (atomic_store GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_8>> - Complexity = 4
                      // Dst: (SB GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8344*/          0, /*End of Scope*/
/*  8345*/        /*Scope*/ 34, /*->8380*/
/*  8346*/          OPC_CheckPredicate, 7, // Predicate_atomic_store_16
/*  8348*/          OPC_Scope, 14, /*->8364*/ // 2 children in Scope
/*  8350*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8352*/            OPC_EmitMergeInputChains1_0,
/*  8353*/            OPC_EmitInteger, MVT::i32, 0,
/*  8356*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (atomic_store GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_16>> - Complexity = 4
                      // Dst: (SH GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8364*/          /*Scope*/ 14, /*->8379*/
/*  8365*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  8367*/            OPC_EmitMergeInputChains1_0,
/*  8368*/            OPC_EmitInteger, MVT::i32, 0,
/*  8371*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (atomic_store GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_16>> - Complexity = 4
                      // Dst: (SH GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8379*/          0, /*End of Scope*/
/*  8380*/        /*Scope*/ 34, /*->8415*/
/*  8381*/          OPC_CheckPredicate, 10, // Predicate_atomic_store_32
/*  8383*/          OPC_Scope, 14, /*->8399*/ // 2 children in Scope
/*  8385*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8387*/            OPC_EmitMergeInputChains1_0,
/*  8388*/            OPC_EmitInteger, MVT::i32, 0,
/*  8391*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (atomic_store GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_32>> - Complexity = 4
                      // Dst: (SW GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8399*/          /*Scope*/ 14, /*->8414*/
/*  8400*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  8402*/            OPC_EmitMergeInputChains1_0,
/*  8403*/            OPC_EmitInteger, MVT::i32, 0,
/*  8406*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (atomic_store GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_32>> - Complexity = 4
                      // Dst: (SW GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8414*/          0, /*End of Scope*/
/*  8415*/        /*Scope*/ 34, /*->8450*/
/*  8416*/          OPC_CheckPredicate, 14, // Predicate_atomic_store_64
/*  8418*/          OPC_Scope, 14, /*->8434*/ // 2 children in Scope
/*  8420*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8422*/            OPC_EmitMergeInputChains1_0,
/*  8423*/            OPC_EmitInteger, MVT::i32, 0,
/*  8426*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (atomic_store GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_64>> - Complexity = 4
                      // Dst: (SD GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8434*/          /*Scope*/ 14, /*->8449*/
/*  8435*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/*  8437*/            OPC_EmitMergeInputChains1_0,
/*  8438*/            OPC_EmitInteger, MVT::i32, 0,
/*  8441*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (atomic_store GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_store_64>> - Complexity = 4
                      // Dst: (SD GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  8449*/          0, /*End of Scope*/
/*  8450*/        0, /*End of Scope*/
/*  8451*/      /*Scope*/ 75, /*->8527*/
/*  8452*/        OPC_CheckChild1Type, MVT::i64,
/*  8454*/        OPC_RecordChild2, // #2 = $rs2
/*  8455*/        OPC_CheckChild2Type, MVT::i64,
/*  8457*/        OPC_Scope, 16, /*->8475*/ // 4 children in Scope
/*  8459*/          OPC_CheckPredicate, 5, // Predicate_atomic_store_8
/*  8461*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  8463*/          OPC_EmitMergeInputChains1_0,
/*  8464*/          OPC_EmitInteger, MVT::i64, 0,
/*  8467*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::SB), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 2, 1, 3,
                    // Src: (atomic_store GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_8>> - Complexity = 4
                    // Dst: (SB GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  8475*/        /*Scope*/ 16, /*->8492*/
/*  8476*/          OPC_CheckPredicate, 7, // Predicate_atomic_store_16
/*  8478*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  8480*/          OPC_EmitMergeInputChains1_0,
/*  8481*/          OPC_EmitInteger, MVT::i64, 0,
/*  8484*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::SH), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 2, 1, 3,
                    // Src: (atomic_store GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_16>> - Complexity = 4
                    // Dst: (SH GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  8492*/        /*Scope*/ 16, /*->8509*/
/*  8493*/          OPC_CheckPredicate, 10, // Predicate_atomic_store_32
/*  8495*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  8497*/          OPC_EmitMergeInputChains1_0,
/*  8498*/          OPC_EmitInteger, MVT::i64, 0,
/*  8501*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::SW), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 2, 1, 3,
                    // Src: (atomic_store GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_32>> - Complexity = 4
                    // Dst: (SW GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  8509*/        /*Scope*/ 16, /*->8526*/
/*  8510*/          OPC_CheckPredicate, 14, // Predicate_atomic_store_64
/*  8512*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  8514*/          OPC_EmitMergeInputChains1_0,
/*  8515*/          OPC_EmitInteger, MVT::i64, 0,
/*  8518*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::SD), 0|OPFL_Chain|OPFL_MemRefs,
                        3/*#Ops*/, 2, 1, 3,
                    // Src: (atomic_store GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_store_64>> - Complexity = 4
                    // Dst: (SD GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  8526*/        0, /*End of Scope*/
/*  8527*/      0, /*End of Scope*/
/*  8528*/    0, /*End of Scope*/
/*  8529*/  /*SwitchOpcode*/ 64|128,9/*1216*/, TARGET_VAL(ISD::ATOMIC_LOAD),// ->9749
/*  8533*/    OPC_RecordMemRef,
/*  8534*/    OPC_RecordNode, // #0 = 'atomic_load' chained node
/*  8535*/    OPC_Scope, 86|128,5/*726*/, /*->9264*/ // 2 children in Scope
/*  8538*/      OPC_MoveChild1,
/*  8539*/      OPC_SwitchOpcode /*2 cases */, 4|128,2/*260*/, TARGET_VAL(ISD::OR),// ->8804
/*  8544*/        OPC_RecordChild0, // #1 = $rs1
/*  8545*/        OPC_RecordChild1, // #2 = $imm12
/*  8546*/        OPC_MoveChild1,
/*  8547*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8550*/        OPC_CheckPredicate, 1, // Predicate_simm12
/*  8552*/        OPC_MoveParent,
/*  8553*/        OPC_CheckPredicate, 2, // Predicate_IsOrAdd
/*  8555*/        OPC_SwitchType /*2 cases */, 33|128,1/*161*/, MVT::i32,// ->8720
/*  8559*/          OPC_MoveParent,
/*  8560*/          OPC_CheckType, MVT::i32,
/*  8562*/          OPC_Scope, 38, /*->8602*/ // 4 children in Scope
/*  8564*/            OPC_CheckPredicate, 5, // Predicate_atomic_load_8
/*  8566*/            OPC_Scope, 16, /*->8584*/ // 2 children in Scope
/*  8568*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8570*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8573*/              OPC_EmitMergeInputChains1_0,
/*  8574*/              OPC_EmitConvertToTarget, 2,
/*  8576*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_atomic_load_8>> - Complexity = 18
                        // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8584*/            /*Scope*/ 16, /*->8601*/
/*  8585*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  8587*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8590*/              OPC_EmitMergeInputChains1_0,
/*  8591*/              OPC_EmitConvertToTarget, 2,
/*  8593*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_atomic_load_8>> - Complexity = 18
                        // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8601*/            0, /*End of Scope*/
/*  8602*/          /*Scope*/ 38, /*->8641*/
/*  8603*/            OPC_CheckPredicate, 7, // Predicate_atomic_load_16
/*  8605*/            OPC_Scope, 16, /*->8623*/ // 2 children in Scope
/*  8607*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8609*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8612*/              OPC_EmitMergeInputChains1_0,
/*  8613*/              OPC_EmitConvertToTarget, 2,
/*  8615*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_atomic_load_16>> - Complexity = 18
                        // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8623*/            /*Scope*/ 16, /*->8640*/
/*  8624*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  8626*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8629*/              OPC_EmitMergeInputChains1_0,
/*  8630*/              OPC_EmitConvertToTarget, 2,
/*  8632*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_atomic_load_16>> - Complexity = 18
                        // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8640*/            0, /*End of Scope*/
/*  8641*/          /*Scope*/ 38, /*->8680*/
/*  8642*/            OPC_CheckPredicate, 10, // Predicate_atomic_load_32
/*  8644*/            OPC_Scope, 16, /*->8662*/ // 2 children in Scope
/*  8646*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8648*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8651*/              OPC_EmitMergeInputChains1_0,
/*  8652*/              OPC_EmitConvertToTarget, 2,
/*  8654*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_atomic_load_32>> - Complexity = 18
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8662*/            /*Scope*/ 16, /*->8679*/
/*  8663*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  8665*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8668*/              OPC_EmitMergeInputChains1_0,
/*  8669*/              OPC_EmitConvertToTarget, 2,
/*  8671*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_atomic_load_32>> - Complexity = 18
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8679*/            0, /*End of Scope*/
/*  8680*/          /*Scope*/ 38, /*->8719*/
/*  8681*/            OPC_CheckPredicate, 14, // Predicate_atomic_load_64
/*  8683*/            OPC_Scope, 16, /*->8701*/ // 2 children in Scope
/*  8685*/              OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8687*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8690*/              OPC_EmitMergeInputChains1_0,
/*  8691*/              OPC_EmitConvertToTarget, 2,
/*  8693*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_atomic_load_64>> - Complexity = 18
                        // Dst: (LD:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8701*/            /*Scope*/ 16, /*->8718*/
/*  8702*/              OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/*  8704*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8707*/              OPC_EmitMergeInputChains1_0,
/*  8708*/              OPC_EmitConvertToTarget, 2,
/*  8710*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (or:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_atomic_load_64>> - Complexity = 18
                        // Dst: (LD:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8718*/            0, /*End of Scope*/
/*  8719*/          0, /*End of Scope*/
/*  8720*/        /*SwitchType*/ 81, MVT::i64,// ->8803
/*  8722*/          OPC_MoveParent,
/*  8723*/          OPC_CheckType, MVT::i64,
/*  8725*/          OPC_Scope, 18, /*->8745*/ // 4 children in Scope
/*  8727*/            OPC_CheckPredicate, 5, // Predicate_atomic_load_8
/*  8729*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("64bit"))
/*  8731*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8734*/            OPC_EmitMergeInputChains1_0,
/*  8735*/            OPC_EmitConvertToTarget, 2,
/*  8737*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (atomic_load:{ *:[i64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_atomic_load_8>> - Complexity = 18
                      // Dst: (LB:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  8745*/          /*Scope*/ 18, /*->8764*/
/*  8746*/            OPC_CheckPredicate, 7, // Predicate_atomic_load_16
/*  8748*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  8750*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8753*/            OPC_EmitMergeInputChains1_0,
/*  8754*/            OPC_EmitConvertToTarget, 2,
/*  8756*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (atomic_load:{ *:[i64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_atomic_load_16>> - Complexity = 18
                      // Dst: (LH:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  8764*/          /*Scope*/ 18, /*->8783*/
/*  8765*/            OPC_CheckPredicate, 10, // Predicate_atomic_load_32
/*  8767*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  8769*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8772*/            OPC_EmitMergeInputChains1_0,
/*  8773*/            OPC_EmitConvertToTarget, 2,
/*  8775*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (atomic_load:{ *:[i64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_atomic_load_32>> - Complexity = 18
                      // Dst: (LW:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  8783*/          /*Scope*/ 18, /*->8802*/
/*  8784*/            OPC_CheckPredicate, 14, // Predicate_atomic_load_64
/*  8786*/            OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  8788*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8791*/            OPC_EmitMergeInputChains1_0,
/*  8792*/            OPC_EmitConvertToTarget, 2,
/*  8794*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (atomic_load:{ *:[i64] } (or:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>>)<<P:Predicate_atomic_load_64>> - Complexity = 18
                      // Dst: (LD:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  8802*/          0, /*End of Scope*/
/*  8803*/        0, // EndSwitchType
/*  8804*/      /*SwitchOpcode*/ 71|128,3/*455*/, TARGET_VAL(ISD::ADD),// ->9263
/*  8808*/        OPC_RecordChild0, // #1 = $rs1
/*  8809*/        OPC_RecordChild1, // #2 = $imm12
/*  8810*/        OPC_MoveChild1,
/*  8811*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  8814*/        OPC_CheckPredicate, 1, // Predicate_simm12
/*  8816*/        OPC_MoveParent,
/*  8817*/        OPC_SwitchType /*2 cases */, 37|128,2/*293*/, MVT::i32,// ->9114
/*  8821*/          OPC_MoveParent,
/*  8822*/          OPC_CheckType, MVT::i32,
/*  8824*/          OPC_Scope, 38, /*->8864*/ // 8 children in Scope
/*  8826*/            OPC_CheckPredicate, 5, // Predicate_atomic_load_8
/*  8828*/            OPC_Scope, 16, /*->8846*/ // 2 children in Scope
/*  8830*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8832*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8835*/              OPC_EmitMergeInputChains1_0,
/*  8836*/              OPC_EmitConvertToTarget, 2,
/*  8838*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_8>> - Complexity = 17
                        // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8846*/            /*Scope*/ 16, /*->8863*/
/*  8847*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  8849*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8852*/              OPC_EmitMergeInputChains1_0,
/*  8853*/              OPC_EmitConvertToTarget, 2,
/*  8855*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_8>> - Complexity = 17
                        // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8863*/            0, /*End of Scope*/
/*  8864*/          /*Scope*/ 38, /*->8903*/
/*  8865*/            OPC_CheckPredicate, 7, // Predicate_atomic_load_16
/*  8867*/            OPC_Scope, 16, /*->8885*/ // 2 children in Scope
/*  8869*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8871*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8874*/              OPC_EmitMergeInputChains1_0,
/*  8875*/              OPC_EmitConvertToTarget, 2,
/*  8877*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_16>> - Complexity = 17
                        // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8885*/            /*Scope*/ 16, /*->8902*/
/*  8886*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  8888*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8891*/              OPC_EmitMergeInputChains1_0,
/*  8892*/              OPC_EmitConvertToTarget, 2,
/*  8894*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_16>> - Complexity = 17
                        // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8902*/            0, /*End of Scope*/
/*  8903*/          /*Scope*/ 38, /*->8942*/
/*  8904*/            OPC_CheckPredicate, 10, // Predicate_atomic_load_32
/*  8906*/            OPC_Scope, 16, /*->8924*/ // 2 children in Scope
/*  8908*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8910*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8913*/              OPC_EmitMergeInputChains1_0,
/*  8914*/              OPC_EmitConvertToTarget, 2,
/*  8916*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_32>> - Complexity = 17
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8924*/            /*Scope*/ 16, /*->8941*/
/*  8925*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  8927*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8930*/              OPC_EmitMergeInputChains1_0,
/*  8931*/              OPC_EmitConvertToTarget, 2,
/*  8933*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_32>> - Complexity = 17
                        // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8941*/            0, /*End of Scope*/
/*  8942*/          /*Scope*/ 38, /*->8981*/
/*  8943*/            OPC_CheckPredicate, 14, // Predicate_atomic_load_64
/*  8945*/            OPC_Scope, 16, /*->8963*/ // 2 children in Scope
/*  8947*/              OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8949*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8952*/              OPC_EmitMergeInputChains1_0,
/*  8953*/              OPC_EmitConvertToTarget, 2,
/*  8955*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_64>> - Complexity = 17
                        // Dst: (LD:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8963*/            /*Scope*/ 16, /*->8980*/
/*  8964*/              OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/*  8966*/              OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  8969*/              OPC_EmitMergeInputChains1_0,
/*  8970*/              OPC_EmitConvertToTarget, 2,
/*  8972*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_64>> - Complexity = 17
                        // Dst: (LD:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8980*/            0, /*End of Scope*/
/*  8981*/          /*Scope*/ 32, /*->9014*/
/*  8982*/            OPC_CheckPredicate, 5, // Predicate_atomic_load_8
/*  8984*/            OPC_Scope, 13, /*->8999*/ // 2 children in Scope
/*  8986*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  8988*/              OPC_EmitMergeInputChains1_0,
/*  8989*/              OPC_EmitConvertToTarget, 2,
/*  8991*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_8>> - Complexity = 11
                        // Dst: (LB:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  8999*/            /*Scope*/ 13, /*->9013*/
/*  9000*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  9002*/              OPC_EmitMergeInputChains1_0,
/*  9003*/              OPC_EmitConvertToTarget, 2,
/*  9005*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_8>> - Complexity = 11
                        // Dst: (LB:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  9013*/            0, /*End of Scope*/
/*  9014*/          /*Scope*/ 32, /*->9047*/
/*  9015*/            OPC_CheckPredicate, 7, // Predicate_atomic_load_16
/*  9017*/            OPC_Scope, 13, /*->9032*/ // 2 children in Scope
/*  9019*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  9021*/              OPC_EmitMergeInputChains1_0,
/*  9022*/              OPC_EmitConvertToTarget, 2,
/*  9024*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_16>> - Complexity = 11
                        // Dst: (LH:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  9032*/            /*Scope*/ 13, /*->9046*/
/*  9033*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  9035*/              OPC_EmitMergeInputChains1_0,
/*  9036*/              OPC_EmitConvertToTarget, 2,
/*  9038*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_16>> - Complexity = 11
                        // Dst: (LH:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  9046*/            0, /*End of Scope*/
/*  9047*/          /*Scope*/ 32, /*->9080*/
/*  9048*/            OPC_CheckPredicate, 10, // Predicate_atomic_load_32
/*  9050*/            OPC_Scope, 13, /*->9065*/ // 2 children in Scope
/*  9052*/              OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  9054*/              OPC_EmitMergeInputChains1_0,
/*  9055*/              OPC_EmitConvertToTarget, 2,
/*  9057*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_32>> - Complexity = 11
                        // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  9065*/            /*Scope*/ 13, /*->9079*/
/*  9066*/              OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  9068*/              OPC_EmitMergeInputChains1_0,
/*  9069*/              OPC_EmitConvertToTarget, 2,
/*  9071*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_32>> - Complexity = 11
                        // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  9079*/            0, /*End of Scope*/
/*  9080*/          /*Scope*/ 32, /*->9113*/
/*  9081*/            OPC_CheckPredicate, 14, // Predicate_atomic_load_64
/*  9083*/            OPC_Scope, 13, /*->9098*/ // 2 children in Scope
/*  9085*/              OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  9087*/              OPC_EmitMergeInputChains1_0,
/*  9088*/              OPC_EmitConvertToTarget, 2,
/*  9090*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_64>> - Complexity = 11
                        // Dst: (LD:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  9098*/            /*Scope*/ 13, /*->9112*/
/*  9099*/              OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/*  9101*/              OPC_EmitMergeInputChains1_0,
/*  9102*/              OPC_EmitConvertToTarget, 2,
/*  9104*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                            MVT::i32, 2/*#Ops*/, 1, 3,
                        // Src: (atomic_load:{ *:[i32] } (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_64>> - Complexity = 11
                        // Dst: (LD:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  9112*/            0, /*End of Scope*/
/*  9113*/          0, /*End of Scope*/
/*  9114*/        /*SwitchType*/ 17|128,1/*145*/, MVT::i64,// ->9262
/*  9117*/          OPC_MoveParent,
/*  9118*/          OPC_CheckType, MVT::i64,
/*  9120*/          OPC_Scope, 18, /*->9140*/ // 8 children in Scope
/*  9122*/            OPC_CheckPredicate, 5, // Predicate_atomic_load_8
/*  9124*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  9126*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  9129*/            OPC_EmitMergeInputChains1_0,
/*  9130*/            OPC_EmitConvertToTarget, 2,
/*  9132*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (atomic_load:{ *:[i64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_8>> - Complexity = 17
                      // Dst: (LB:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  9140*/          /*Scope*/ 18, /*->9159*/
/*  9141*/            OPC_CheckPredicate, 7, // Predicate_atomic_load_16
/*  9143*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  9145*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  9148*/            OPC_EmitMergeInputChains1_0,
/*  9149*/            OPC_EmitConvertToTarget, 2,
/*  9151*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (atomic_load:{ *:[i64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_16>> - Complexity = 17
                      // Dst: (LH:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  9159*/          /*Scope*/ 18, /*->9178*/
/*  9160*/            OPC_CheckPredicate, 10, // Predicate_atomic_load_32
/*  9162*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  9164*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  9167*/            OPC_EmitMergeInputChains1_0,
/*  9168*/            OPC_EmitConvertToTarget, 2,
/*  9170*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (atomic_load:{ *:[i64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_32>> - Complexity = 17
                      // Dst: (LW:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  9178*/          /*Scope*/ 18, /*->9197*/
/*  9179*/            OPC_CheckPredicate, 14, // Predicate_atomic_load_64
/*  9181*/            OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  9183*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #3
/*  9186*/            OPC_EmitMergeInputChains1_0,
/*  9187*/            OPC_EmitConvertToTarget, 2,
/*  9189*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (atomic_load:{ *:[i64] } (add:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_64>> - Complexity = 17
                      // Dst: (LD:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  9197*/          /*Scope*/ 15, /*->9213*/
/*  9198*/            OPC_CheckPredicate, 5, // Predicate_atomic_load_8
/*  9200*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  9202*/            OPC_EmitMergeInputChains1_0,
/*  9203*/            OPC_EmitConvertToTarget, 2,
/*  9205*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 1, 3,
                      // Src: (atomic_load:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_8>> - Complexity = 11
                      // Dst: (LB:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  9213*/          /*Scope*/ 15, /*->9229*/
/*  9214*/            OPC_CheckPredicate, 7, // Predicate_atomic_load_16
/*  9216*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  9218*/            OPC_EmitMergeInputChains1_0,
/*  9219*/            OPC_EmitConvertToTarget, 2,
/*  9221*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 1, 3,
                      // Src: (atomic_load:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_16>> - Complexity = 11
                      // Dst: (LH:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  9229*/          /*Scope*/ 15, /*->9245*/
/*  9230*/            OPC_CheckPredicate, 10, // Predicate_atomic_load_32
/*  9232*/            OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  9234*/            OPC_EmitMergeInputChains1_0,
/*  9235*/            OPC_EmitConvertToTarget, 2,
/*  9237*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 1, 3,
                      // Src: (atomic_load:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_32>> - Complexity = 11
                      // Dst: (LW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  9245*/          /*Scope*/ 15, /*->9261*/
/*  9246*/            OPC_CheckPredicate, 14, // Predicate_atomic_load_64
/*  9248*/            OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  9250*/            OPC_EmitMergeInputChains1_0,
/*  9251*/            OPC_EmitConvertToTarget, 2,
/*  9253*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i64, 2/*#Ops*/, 1, 3,
                      // Src: (atomic_load:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))<<P:Predicate_atomic_load_64>> - Complexity = 11
                      // Dst: (LD:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  9261*/          0, /*End of Scope*/
/*  9262*/        0, // EndSwitchType
/*  9263*/      0, // EndSwitchOpcode
/*  9264*/    /*Scope*/ 98|128,3/*482*/, /*->9748*/
/*  9266*/      OPC_RecordChild1, // #1 = $rs1
/*  9267*/      OPC_Scope, 63, /*->9332*/ // 6 children in Scope
/*  9269*/        OPC_CheckPredicate, 5, // Predicate_atomic_load_8
/*  9271*/        OPC_SwitchType /*2 cases */, 38, MVT::i32,// ->9312
/*  9274*/          OPC_Scope, 17, /*->9293*/ // 2 children in Scope
/*  9276*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  9278*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  9281*/            OPC_EmitMergeInputChains1_0,
/*  9282*/            OPC_EmitInteger, MVT::i32, 0,
/*  9285*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (atomic_load:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_atomic_load_8>> - Complexity = 10
                      // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9293*/          /*Scope*/ 17, /*->9311*/
/*  9294*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  9296*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  9299*/            OPC_EmitMergeInputChains1_0,
/*  9300*/            OPC_EmitInteger, MVT::i32, 0,
/*  9303*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (atomic_load:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_atomic_load_8>> - Complexity = 10
                      // Dst: (LB:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9311*/          0, /*End of Scope*/
/*  9312*/        /*SwitchType*/ 17, MVT::i64,// ->9331
/*  9314*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("64bit"))
/*  9316*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  9319*/          OPC_EmitMergeInputChains1_0,
/*  9320*/          OPC_EmitInteger, MVT::i64, 0,
/*  9323*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (atomic_load:{ *:[i64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_atomic_load_8>> - Complexity = 10
                    // Dst: (LB:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  9331*/        0, // EndSwitchType
/*  9332*/      /*Scope*/ 63, /*->9396*/
/*  9333*/        OPC_CheckPredicate, 7, // Predicate_atomic_load_16
/*  9335*/        OPC_SwitchType /*2 cases */, 38, MVT::i32,// ->9376
/*  9338*/          OPC_Scope, 17, /*->9357*/ // 2 children in Scope
/*  9340*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  9342*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  9345*/            OPC_EmitMergeInputChains1_0,
/*  9346*/            OPC_EmitInteger, MVT::i32, 0,
/*  9349*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (atomic_load:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_atomic_load_16>> - Complexity = 10
                      // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9357*/          /*Scope*/ 17, /*->9375*/
/*  9358*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  9360*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  9363*/            OPC_EmitMergeInputChains1_0,
/*  9364*/            OPC_EmitInteger, MVT::i32, 0,
/*  9367*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (atomic_load:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_atomic_load_16>> - Complexity = 10
                      // Dst: (LH:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9375*/          0, /*End of Scope*/
/*  9376*/        /*SwitchType*/ 17, MVT::i64,// ->9395
/*  9378*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("64bit"))
/*  9380*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  9383*/          OPC_EmitMergeInputChains1_0,
/*  9384*/          OPC_EmitInteger, MVT::i64, 0,
/*  9387*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (atomic_load:{ *:[i64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_atomic_load_16>> - Complexity = 10
                    // Dst: (LH:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  9395*/        0, // EndSwitchType
/*  9396*/      /*Scope*/ 63, /*->9460*/
/*  9397*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_32
/*  9399*/        OPC_SwitchType /*2 cases */, 38, MVT::i32,// ->9440
/*  9402*/          OPC_Scope, 17, /*->9421*/ // 2 children in Scope
/*  9404*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  9406*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  9409*/            OPC_EmitMergeInputChains1_0,
/*  9410*/            OPC_EmitInteger, MVT::i32, 0,
/*  9413*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (atomic_load:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_atomic_load_32>> - Complexity = 10
                      // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9421*/          /*Scope*/ 17, /*->9439*/
/*  9422*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  9424*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  9427*/            OPC_EmitMergeInputChains1_0,
/*  9428*/            OPC_EmitInteger, MVT::i32, 0,
/*  9431*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (atomic_load:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_atomic_load_32>> - Complexity = 10
                      // Dst: (LW:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9439*/          0, /*End of Scope*/
/*  9440*/        /*SwitchType*/ 17, MVT::i64,// ->9459
/*  9442*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("64bit"))
/*  9444*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  9447*/          OPC_EmitMergeInputChains1_0,
/*  9448*/          OPC_EmitInteger, MVT::i64, 0,
/*  9451*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (atomic_load:{ *:[i64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_atomic_load_32>> - Complexity = 10
                    // Dst: (LW:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  9459*/        0, // EndSwitchType
/*  9460*/      /*Scope*/ 63, /*->9524*/
/*  9461*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_64
/*  9463*/        OPC_SwitchType /*2 cases */, 38, MVT::i32,// ->9504
/*  9466*/          OPC_Scope, 17, /*->9485*/ // 2 children in Scope
/*  9468*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  9470*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  9473*/            OPC_EmitMergeInputChains1_0,
/*  9474*/            OPC_EmitInteger, MVT::i32, 0,
/*  9477*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (atomic_load:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_atomic_load_64>> - Complexity = 10
                      // Dst: (LD:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9485*/          /*Scope*/ 17, /*->9503*/
/*  9486*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/*  9488*/            OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  9491*/            OPC_EmitMergeInputChains1_0,
/*  9492*/            OPC_EmitInteger, MVT::i32, 0,
/*  9495*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (atomic_load:{ *:[i32] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_atomic_load_64>> - Complexity = 10
                      // Dst: (LD:{ *:[i32] } AddrFI:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9503*/          0, /*End of Scope*/
/*  9504*/        /*SwitchType*/ 17, MVT::i64,// ->9523
/*  9506*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("64bit"))
/*  9508*/          OPC_CheckComplexPat, /*CP*/0, /*#*/1, // SelectAddrFI:$rs1 #2
/*  9511*/          OPC_EmitMergeInputChains1_0,
/*  9512*/          OPC_EmitInteger, MVT::i64, 0,
/*  9515*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (atomic_load:{ *:[i64] } AddrFI:{ *:[iPTR] }:$rs1)<<P:Predicate_atomic_load_64>> - Complexity = 10
                    // Dst: (LD:{ *:[i64] } AddrFI:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  9523*/        0, // EndSwitchType
/*  9524*/      /*Scope*/ 18|128,1/*146*/, /*->9672*/
/*  9526*/        OPC_CheckChild1Type, MVT::i32,
/*  9528*/        OPC_CheckType, MVT::i32,
/*  9530*/        OPC_Scope, 34, /*->9566*/ // 4 children in Scope
/*  9532*/          OPC_CheckPredicate, 5, // Predicate_atomic_load_8
/*  9534*/          OPC_Scope, 14, /*->9550*/ // 2 children in Scope
/*  9536*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  9538*/            OPC_EmitMergeInputChains1_0,
/*  9539*/            OPC_EmitInteger, MVT::i32, 0,
/*  9542*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_atomic_load_8>> - Complexity = 4
                      // Dst: (LB:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9550*/          /*Scope*/ 14, /*->9565*/
/*  9551*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  9553*/            OPC_EmitMergeInputChains1_0,
/*  9554*/            OPC_EmitInteger, MVT::i32, 0,
/*  9557*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_atomic_load_8>> - Complexity = 4
                      // Dst: (LB:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9565*/          0, /*End of Scope*/
/*  9566*/        /*Scope*/ 34, /*->9601*/
/*  9567*/          OPC_CheckPredicate, 7, // Predicate_atomic_load_16
/*  9569*/          OPC_Scope, 14, /*->9585*/ // 2 children in Scope
/*  9571*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  9573*/            OPC_EmitMergeInputChains1_0,
/*  9574*/            OPC_EmitInteger, MVT::i32, 0,
/*  9577*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_atomic_load_16>> - Complexity = 4
                      // Dst: (LH:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9585*/          /*Scope*/ 14, /*->9600*/
/*  9586*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  9588*/            OPC_EmitMergeInputChains1_0,
/*  9589*/            OPC_EmitInteger, MVT::i32, 0,
/*  9592*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_atomic_load_16>> - Complexity = 4
                      // Dst: (LH:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9600*/          0, /*End of Scope*/
/*  9601*/        /*Scope*/ 34, /*->9636*/
/*  9602*/          OPC_CheckPredicate, 10, // Predicate_atomic_load_32
/*  9604*/          OPC_Scope, 14, /*->9620*/ // 2 children in Scope
/*  9606*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  9608*/            OPC_EmitMergeInputChains1_0,
/*  9609*/            OPC_EmitInteger, MVT::i32, 0,
/*  9612*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_atomic_load_32>> - Complexity = 4
                      // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9620*/          /*Scope*/ 14, /*->9635*/
/*  9621*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/*  9623*/            OPC_EmitMergeInputChains1_0,
/*  9624*/            OPC_EmitInteger, MVT::i32, 0,
/*  9627*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_atomic_load_32>> - Complexity = 4
                      // Dst: (LW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9635*/          0, /*End of Scope*/
/*  9636*/        /*Scope*/ 34, /*->9671*/
/*  9637*/          OPC_CheckPredicate, 14, // Predicate_atomic_load_64
/*  9639*/          OPC_Scope, 14, /*->9655*/ // 2 children in Scope
/*  9641*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/*  9643*/            OPC_EmitMergeInputChains1_0,
/*  9644*/            OPC_EmitInteger, MVT::i32, 0,
/*  9647*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_atomic_load_64>> - Complexity = 4
                      // Dst: (LD:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9655*/          /*Scope*/ 14, /*->9670*/
/*  9656*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/*  9658*/            OPC_EmitMergeInputChains1_0,
/*  9659*/            OPC_EmitInteger, MVT::i32, 0,
/*  9662*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_atomic_load_64>> - Complexity = 4
                      // Dst: (LD:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/*  9670*/          0, /*End of Scope*/
/*  9671*/        0, /*End of Scope*/
/*  9672*/      /*Scope*/ 74, /*->9747*/
/*  9673*/        OPC_CheckChild1Type, MVT::i64,
/*  9675*/        OPC_CheckType, MVT::i64,
/*  9677*/        OPC_Scope, 16, /*->9695*/ // 4 children in Scope
/*  9679*/          OPC_CheckPredicate, 5, // Predicate_atomic_load_8
/*  9681*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  9683*/          OPC_EmitMergeInputChains1_0,
/*  9684*/          OPC_EmitInteger, MVT::i64, 0,
/*  9687*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LB), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_atomic_load_8>> - Complexity = 4
                    // Dst: (LB:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  9695*/        /*Scope*/ 16, /*->9712*/
/*  9696*/          OPC_CheckPredicate, 7, // Predicate_atomic_load_16
/*  9698*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  9700*/          OPC_EmitMergeInputChains1_0,
/*  9701*/          OPC_EmitInteger, MVT::i64, 0,
/*  9704*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LH), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_atomic_load_16>> - Complexity = 4
                    // Dst: (LH:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  9712*/        /*Scope*/ 16, /*->9729*/
/*  9713*/          OPC_CheckPredicate, 10, // Predicate_atomic_load_32
/*  9715*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  9717*/          OPC_EmitMergeInputChains1_0,
/*  9718*/          OPC_EmitInteger, MVT::i64, 0,
/*  9721*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LW), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_atomic_load_32>> - Complexity = 4
                    // Dst: (LW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  9729*/        /*Scope*/ 16, /*->9746*/
/*  9730*/          OPC_CheckPredicate, 14, // Predicate_atomic_load_64
/*  9732*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  9734*/          OPC_EmitMergeInputChains1_0,
/*  9735*/          OPC_EmitInteger, MVT::i64, 0,
/*  9738*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LD), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_atomic_load_64>> - Complexity = 4
                    // Dst: (LD:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/*  9746*/        0, /*End of Scope*/
/*  9747*/      0, /*End of Scope*/
/*  9748*/    0, /*End of Scope*/
/*  9749*/  /*SwitchOpcode*/ 1|128,1/*129*/, TARGET_VAL(ISD::OR),// ->9882
/*  9753*/    OPC_RecordChild0, // #0 = $Rs
/*  9754*/    OPC_RecordChild1, // #1 = $imm12
/*  9755*/    OPC_Scope, 86, /*->9843*/ // 3 children in Scope
/*  9757*/      OPC_MoveChild1,
/*  9758*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/*  9761*/      OPC_CheckPredicate, 1, // Predicate_simm12
/*  9763*/      OPC_MoveParent,
/*  9764*/      OPC_SwitchType /*2 cases */, 61, MVT::i32,// ->9828
/*  9767*/        OPC_Scope, 34, /*->9803*/ // 3 children in Scope
/*  9769*/          OPC_CheckPredicate, 2, // Predicate_IsOrAdd
/*  9771*/          OPC_Scope, 15, /*->9788*/ // 2 children in Scope
/*  9773*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  9775*/            OPC_CheckComplexPat, /*CP*/0, /*#*/0, // SelectAddrFI:$Rs #2
/*  9778*/            OPC_EmitConvertToTarget, 1,
/*  9780*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDI), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (or:{ *:[i32] } AddrFI:{ *:[i32] }:$Rs, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>> - Complexity = 14
                      // Dst: (ADDI:{ *:[i32] } AddrFI:{ *:[i32] }:$Rs, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  9788*/          /*Scope*/ 13, /*->9802*/
/*  9789*/            OPC_CheckComplexPat, /*CP*/0, /*#*/0, // SelectAddrFI:$Rs #2
/*  9792*/            OPC_EmitConvertToTarget, 1,
/*  9794*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDI), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (or:{ *:[i32] } AddrFI:{ *:[i32] }:$Rs, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)<<P:Predicate_IsOrAdd>> - Complexity = 14
                      // Dst: (ADDI:{ *:[i32] } AddrFI:{ *:[i32] }:$Rs, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  9802*/          0, /*End of Scope*/
/*  9803*/        /*Scope*/ 12, /*->9816*/
/*  9804*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  9806*/          OPC_EmitConvertToTarget, 1,
/*  9808*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::ORI), 0,
                        MVT::i32, 2/*#Ops*/, 0, 2,
                    // Src: (or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12) - Complexity = 7
                    // Dst: (ORI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  9816*/        /*Scope*/ 10, /*->9827*/
/*  9817*/          OPC_EmitConvertToTarget, 1,
/*  9819*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::ORI), 0,
                        MVT::i32, 2/*#Ops*/, 0, 2,
                    // Src: (or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12) - Complexity = 7
                    // Dst: (ORI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/*  9827*/        0, /*End of Scope*/
/*  9828*/      /*SwitchType*/ 12, MVT::i64,// ->9842
/*  9830*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  9832*/        OPC_EmitConvertToTarget, 1,
/*  9834*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::ORI), 0,
                      MVT::i64, 2/*#Ops*/, 0, 2,
                  // Src: (or:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12) - Complexity = 7
                  // Dst: (ORI:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/*  9842*/      0, // EndSwitchType
/*  9843*/    /*Scope*/ 24, /*->9868*/
/*  9844*/      OPC_CheckType, MVT::i32,
/*  9846*/      OPC_Scope, 10, /*->9858*/ // 2 children in Scope
/*  9848*/        OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/*  9850*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::OR), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (OR:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*  9858*/      /*Scope*/ 8, /*->9867*/
/*  9859*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::OR), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (OR:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/*  9867*/      0, /*End of Scope*/
/*  9868*/    /*Scope*/ 12, /*->9881*/
/*  9869*/      OPC_CheckType, MVT::i64,
/*  9871*/      OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/*  9873*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::OR), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (or:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (OR:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*  9881*/    0, /*End of Scope*/
/*  9882*/  /*SwitchOpcode*/ 8|128,3/*392*/, TARGET_VAL(ISD::SIGN_EXTEND_INREG),// ->10278
/*  9886*/    OPC_Scope, 113|128,2/*369*/, /*->10258*/ // 2 children in Scope
/*  9889*/      OPC_MoveChild0,
/*  9890*/      OPC_Scope, 34, /*->9926*/ // 9 children in Scope
/*  9892*/        OPC_CheckOpcode, TARGET_VAL(ISD::SREM),
/*  9895*/        OPC_MoveChild0,
/*  9896*/        OPC_CheckOpcode, TARGET_VAL(ISD::AssertSext),
/*  9899*/        OPC_RecordChild0, // #0 = $rs1
/*  9900*/        OPC_CheckPredicate, 0, // Predicate_assertsexti32
/*  9902*/        OPC_MoveParent,
/*  9903*/        OPC_MoveChild1,
/*  9904*/        OPC_CheckOpcode, TARGET_VAL(ISD::AssertSext),
/*  9907*/        OPC_RecordChild0, // #1 = $rs2
/*  9908*/        OPC_CheckPredicate, 0, // Predicate_assertsexti32
/*  9910*/        OPC_MoveParent,
/*  9911*/        OPC_MoveParent,
/*  9912*/        OPC_MoveChild1,
/*  9913*/        OPC_CheckValueType, MVT::i32,
/*  9915*/        OPC_MoveParent,
/*  9916*/        OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  9918*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMW), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1,
                  // Src: (sext_inreg:{ *:[i64] } (srem:{ *:[i64] } (assertsext:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_assertsexti32>>, (assertsext:{ *:[i64] } GPR:{ *:[i64] }:$rs2)<<P:Predicate_assertsexti32>>), i32:{ *:[Other] }) - Complexity = 14
                  // Dst: (REMW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*  9926*/      /*Scope*/ 32, /*->9959*/
/*  9927*/        OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15/*4294967295*/,
/*  9933*/        OPC_MoveChild0,
/*  9934*/        OPC_CheckOpcode, TARGET_VAL(ISD::FP_TO_UINT),
/*  9937*/        OPC_RecordChild0, // #0 = $rs1
/*  9938*/        OPC_CheckChild0Type, MVT::f64,
/*  9940*/        OPC_MoveParent,
/*  9941*/        OPC_MoveParent,
/*  9942*/        OPC_MoveChild1,
/*  9943*/        OPC_CheckValueType, MVT::i32,
/*  9945*/        OPC_MoveParent,
/*  9946*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  9948*/        OPC_EmitInteger, MVT::i64, 1,
/*  9951*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_WU_D), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1,
                  // Src: (sext_inreg:{ *:[i64] } (and:{ *:[i64] } (fp_to_uint:{ *:[i64] } FPR64:{ *:[f64] }:$rs1), 4294967295:{ *:[i64] }), i32:{ *:[Other] }) - Complexity = 14
                  // Dst: (FCVT_WU_D:{ *:[i64] } ?:{ *:[f64] }:$rs1, 1:{ *:[i64] })
/*  9959*/      /*Scope*/ 96, /*->10056*/
/*  9960*/        OPC_CheckOpcode, TARGET_VAL(ISD::SREM),
/*  9963*/        OPC_MoveChild0,
/*  9964*/        OPC_SwitchOpcode /*2 cases */, 55, TARGET_VAL(ISD::SIGN_EXTEND_INREG),// ->10023
/*  9968*/          OPC_RecordChild0, // #0 = $rs1
/*  9969*/          OPC_MoveChild1,
/*  9970*/          OPC_CheckValueType, MVT::i32,
/*  9972*/          OPC_MoveParent,
/*  9973*/          OPC_MoveParent,
/*  9974*/          OPC_MoveChild1,
/*  9975*/          OPC_SwitchOpcode /*2 cases */, 19, TARGET_VAL(ISD::AssertSext),// ->9998
/*  9979*/            OPC_RecordChild0, // #1 = $rs2
/*  9980*/            OPC_CheckPredicate, 0, // Predicate_assertsexti32
/*  9982*/            OPC_MoveParent,
/*  9983*/            OPC_MoveParent,
/*  9984*/            OPC_MoveChild1,
/*  9985*/            OPC_CheckValueType, MVT::i32,
/*  9987*/            OPC_MoveParent,
/*  9988*/            OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/*  9990*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMW), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,
                      // Src: (sext_inreg:{ *:[i64] } (srem:{ *:[i64] } (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$rs1, i32:{ *:[Other] }), (assertsext:{ *:[i64] } GPR:{ *:[i64] }:$rs2)<<P:Predicate_assertsexti32>>), i32:{ *:[Other] }) - Complexity = 13
                      // Dst: (REMW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/*  9998*/          /*SwitchOpcode*/ 21, TARGET_VAL(ISD::SIGN_EXTEND_INREG),// ->10022
/* 10001*/            OPC_RecordChild0, // #1 = $rs2
/* 10002*/            OPC_MoveChild1,
/* 10003*/            OPC_CheckValueType, MVT::i32,
/* 10005*/            OPC_MoveParent,
/* 10006*/            OPC_MoveParent,
/* 10007*/            OPC_MoveParent,
/* 10008*/            OPC_MoveChild1,
/* 10009*/            OPC_CheckValueType, MVT::i32,
/* 10011*/            OPC_MoveParent,
/* 10012*/            OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10014*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMW), 0,
                          MVT::i64, 2/*#Ops*/, 0, 1,
                      // Src: (sext_inreg:{ *:[i64] } (srem:{ *:[i64] } (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$rs1, i32:{ *:[Other] }), (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$rs2, i32:{ *:[Other] })), i32:{ *:[Other] }) - Complexity = 12
                      // Dst: (REMW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 10022*/          0, // EndSwitchOpcode
/* 10023*/        /*SwitchOpcode*/ 29, TARGET_VAL(ISD::AssertSext),// ->10055
/* 10026*/          OPC_RecordChild0, // #0 = $rs1
/* 10027*/          OPC_CheckPredicate, 0, // Predicate_assertsexti32
/* 10029*/          OPC_MoveParent,
/* 10030*/          OPC_MoveChild1,
/* 10031*/          OPC_CheckOpcode, TARGET_VAL(ISD::SIGN_EXTEND_INREG),
/* 10034*/          OPC_RecordChild0, // #1 = $rs2
/* 10035*/          OPC_MoveChild1,
/* 10036*/          OPC_CheckValueType, MVT::i32,
/* 10038*/          OPC_MoveParent,
/* 10039*/          OPC_MoveParent,
/* 10040*/          OPC_MoveParent,
/* 10041*/          OPC_MoveChild1,
/* 10042*/          OPC_CheckValueType, MVT::i32,
/* 10044*/          OPC_MoveParent,
/* 10045*/          OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10047*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMW), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (sext_inreg:{ *:[i64] } (srem:{ *:[i64] } (assertsext:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_assertsexti32>>, (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$rs2, i32:{ *:[Other] })), i32:{ *:[Other] }) - Complexity = 13
                    // Dst: (REMW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 10055*/        0, // EndSwitchOpcode
/* 10056*/      /*Scope*/ 48, /*->10105*/
/* 10057*/        OPC_CheckOpcode, TARGET_VAL(ISD::ADD),
/* 10060*/        OPC_RecordChild0, // #0 = $rs1
/* 10061*/        OPC_RecordChild1, // #1 = $imm12
/* 10062*/        OPC_Scope, 24, /*->10088*/ // 2 children in Scope
/* 10064*/          OPC_MoveChild1,
/* 10065*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 10068*/          OPC_CheckPredicate, 1, // Predicate_simm12
/* 10070*/          OPC_MoveParent,
/* 10071*/          OPC_MoveParent,
/* 10072*/          OPC_MoveChild1,
/* 10073*/          OPC_CheckValueType, MVT::i32,
/* 10075*/          OPC_MoveParent,
/* 10076*/          OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10078*/          OPC_EmitConvertToTarget, 1,
/* 10080*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDIW), 0,
                        MVT::i64, 2/*#Ops*/, 0, 2,
                    // Src: (sext_inreg:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12), i32:{ *:[Other] }) - Complexity = 10
                    // Dst: (ADDIW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/* 10088*/        /*Scope*/ 15, /*->10104*/
/* 10089*/          OPC_MoveParent,
/* 10090*/          OPC_MoveChild1,
/* 10091*/          OPC_CheckValueType, MVT::i32,
/* 10093*/          OPC_MoveParent,
/* 10094*/          OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10096*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDW), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (sext_inreg:{ *:[i64] } (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2), i32:{ *:[Other] }) - Complexity = 6
                    // Dst: (ADDW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 10104*/        0, /*End of Scope*/
/* 10105*/      /*Scope*/ 31, /*->10137*/
/* 10106*/        OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
/* 10109*/        OPC_RecordChild0, // #0 = $rs1
/* 10110*/        OPC_RecordChild1, // #1 = $shamt
/* 10111*/        OPC_MoveChild1,
/* 10112*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 10115*/        OPC_CheckPredicate, 15, // Predicate_uimm5
/* 10117*/        OPC_CheckType, MVT::i64,
/* 10119*/        OPC_MoveParent,
/* 10120*/        OPC_MoveParent,
/* 10121*/        OPC_MoveChild1,
/* 10122*/        OPC_CheckValueType, MVT::i32,
/* 10124*/        OPC_MoveParent,
/* 10125*/        OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10127*/        OPC_EmitConvertToTarget, 1,
/* 10129*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLLIW), 0,
                      MVT::i64, 2/*#Ops*/, 0, 2,
                  // Src: (sext_inreg:{ *:[i64] } (shl:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_uimm5>>:$shamt), i32:{ *:[Other] }) - Complexity = 10
                  // Dst: (SLLIW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_uimm5>>:$shamt)
/* 10137*/      /*Scope*/ 58, /*->10196*/
/* 10138*/        OPC_CheckOpcode, TARGET_VAL(ISD::AssertZext),
/* 10141*/        OPC_MoveChild0,
/* 10142*/        OPC_CheckOpcode, TARGET_VAL(ISD::FP_TO_UINT),
/* 10145*/        OPC_RecordChild0, // #0 = $rs1
/* 10146*/        OPC_Scope, 23, /*->10171*/ // 2 children in Scope
/* 10148*/          OPC_CheckChild0Type, MVT::f32,
/* 10150*/          OPC_MoveParent,
/* 10151*/          OPC_CheckPredicate, 0, // Predicate_assertzexti32
/* 10153*/          OPC_MoveParent,
/* 10154*/          OPC_MoveChild1,
/* 10155*/          OPC_CheckValueType, MVT::i32,
/* 10157*/          OPC_MoveParent,
/* 10158*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10160*/          OPC_EmitInteger, MVT::i64, 1,
/* 10163*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_WU_S), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (sext_inreg:{ *:[i64] } (assertzext:{ *:[i64] } (fp_to_uint:{ *:[i64] } FPR32:{ *:[f32] }:$rs1))<<P:Predicate_assertzexti32>>, i32:{ *:[Other] }) - Complexity = 10
                    // Dst: (FCVT_WU_S:{ *:[i64] } ?:{ *:[f32] }:$rs1, 1:{ *:[i64] })
/* 10171*/        /*Scope*/ 23, /*->10195*/
/* 10172*/          OPC_CheckChild0Type, MVT::f64,
/* 10174*/          OPC_MoveParent,
/* 10175*/          OPC_CheckPredicate, 0, // Predicate_assertzexti32
/* 10177*/          OPC_MoveParent,
/* 10178*/          OPC_MoveChild1,
/* 10179*/          OPC_CheckValueType, MVT::i32,
/* 10181*/          OPC_MoveParent,
/* 10182*/          OPC_CheckPatternPredicate, 23, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10184*/          OPC_EmitInteger, MVT::i64, 1,
/* 10187*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_WU_D), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (sext_inreg:{ *:[i64] } (assertzext:{ *:[i64] } (fp_to_uint:{ *:[i64] } FPR64:{ *:[f64] }:$rs1))<<P:Predicate_assertzexti32>>, i32:{ *:[Other] }) - Complexity = 10
                    // Dst: (FCVT_WU_D:{ *:[i64] } ?:{ *:[f64] }:$rs1, 1:{ *:[i64] })
/* 10195*/        0, /*End of Scope*/
/* 10196*/      /*Scope*/ 20, /*->10217*/
/* 10197*/        OPC_CheckOpcode, TARGET_VAL(ISD::SUB),
/* 10200*/        OPC_RecordChild0, // #0 = $rs1
/* 10201*/        OPC_RecordChild1, // #1 = $rs2
/* 10202*/        OPC_MoveParent,
/* 10203*/        OPC_MoveChild1,
/* 10204*/        OPC_CheckValueType, MVT::i32,
/* 10206*/        OPC_MoveParent,
/* 10207*/        OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10209*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SUBW), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1,
                  // Src: (sext_inreg:{ *:[i64] } (sub:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2), i32:{ *:[Other] }) - Complexity = 6
                  // Dst: (SUBW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 10217*/      /*Scope*/ 20, /*->10238*/
/* 10218*/        OPC_CheckOpcode, TARGET_VAL(ISD::MUL),
/* 10221*/        OPC_RecordChild0, // #0 = $rs1
/* 10222*/        OPC_RecordChild1, // #1 = $rs2
/* 10223*/        OPC_MoveParent,
/* 10224*/        OPC_MoveChild1,
/* 10225*/        OPC_CheckValueType, MVT::i32,
/* 10227*/        OPC_MoveParent,
/* 10228*/        OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10230*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::MULW), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1,
                  // Src: (sext_inreg:{ *:[i64] } (mul:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2), i32:{ *:[Other] }) - Complexity = 6
                  // Dst: (MULW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 10238*/      /*Scope*/ 18, /*->10257*/
/* 10239*/        OPC_CheckOpcode, TARGET_VAL(RISCVISD::FMV_X_ANYEXTW_RV64),
/* 10242*/        OPC_RecordChild0, // #0 = $src
/* 10243*/        OPC_MoveParent,
/* 10244*/        OPC_MoveChild1,
/* 10245*/        OPC_CheckValueType, MVT::i32,
/* 10247*/        OPC_MoveParent,
/* 10248*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10250*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_X_W), 0,
                      MVT::i64, 1/*#Ops*/, 0,
                  // Src: (sext_inreg:{ *:[i64] } (riscv_fmv_x_anyextw_rv64:{ *:[i64] } FPR32:{ *:[f32] }:$src), i32:{ *:[Other] }) - Complexity = 6
                  // Dst: (FMV_X_W:{ *:[i64] } FPR32:{ *:[f32] }:$src)
/* 10257*/      0, /*End of Scope*/
/* 10258*/    /*Scope*/ 18, /*->10277*/
/* 10259*/      OPC_RecordChild0, // #0 = $rs1
/* 10260*/      OPC_MoveChild1,
/* 10261*/      OPC_CheckValueType, MVT::i32,
/* 10263*/      OPC_MoveParent,
/* 10264*/      OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10266*/      OPC_EmitInteger, MVT::i64, 0,
/* 10269*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDIW), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$rs1, i32:{ *:[Other] }) - Complexity = 3
                // Dst: (ADDIW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/* 10277*/    0, /*End of Scope*/
/* 10278*/  /*SwitchOpcode*/ 124, TARGET_VAL(ISD::ADD),// ->10405
/* 10281*/    OPC_RecordChild0, // #0 = $Rs
/* 10282*/    OPC_RecordChild1, // #1 = $imm12
/* 10283*/    OPC_Scope, 81, /*->10366*/ // 3 children in Scope
/* 10285*/      OPC_MoveChild1,
/* 10286*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 10289*/      OPC_CheckPredicate, 1, // Predicate_simm12
/* 10291*/      OPC_MoveParent,
/* 10292*/      OPC_SwitchType /*2 cases */, 56, MVT::i32,// ->10351
/* 10295*/        OPC_Scope, 15, /*->10312*/ // 4 children in Scope
/* 10297*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 10299*/          OPC_CheckComplexPat, /*CP*/0, /*#*/0, // SelectAddrFI:$Rs #2
/* 10302*/          OPC_EmitConvertToTarget, 1,
/* 10304*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDI), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3,
                    // Src: (add:{ *:[i32] } AddrFI:{ *:[i32] }:$Rs, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12) - Complexity = 13
                    // Dst: (ADDI:{ *:[i32] } AddrFI:{ *:[i32] }:$Rs, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/* 10312*/        /*Scope*/ 13, /*->10326*/
/* 10313*/          OPC_CheckComplexPat, /*CP*/0, /*#*/0, // SelectAddrFI:$Rs #2
/* 10316*/          OPC_EmitConvertToTarget, 1,
/* 10318*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDI), 0,
                        MVT::i32, 2/*#Ops*/, 2, 3,
                    // Src: (add:{ *:[i32] } AddrFI:{ *:[i32] }:$Rs, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12) - Complexity = 13
                    // Dst: (ADDI:{ *:[i32] } AddrFI:{ *:[i32] }:$Rs, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/* 10326*/        /*Scope*/ 12, /*->10339*/
/* 10327*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 10329*/          OPC_EmitConvertToTarget, 1,
/* 10331*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDI), 0,
                        MVT::i32, 2/*#Ops*/, 0, 2,
                    // Src: (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12) - Complexity = 7
                    // Dst: (ADDI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/* 10339*/        /*Scope*/ 10, /*->10350*/
/* 10340*/          OPC_EmitConvertToTarget, 1,
/* 10342*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDI), 0,
                        MVT::i32, 2/*#Ops*/, 0, 2,
                    // Src: (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12) - Complexity = 7
                    // Dst: (ADDI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/* 10350*/        0, /*End of Scope*/
/* 10351*/      /*SwitchType*/ 12, MVT::i64,// ->10365
/* 10353*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 10355*/        OPC_EmitConvertToTarget, 1,
/* 10357*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDI), 0,
                      MVT::i64, 2/*#Ops*/, 0, 2,
                  // Src: (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12) - Complexity = 7
                  // Dst: (ADDI:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/* 10365*/      0, // EndSwitchType
/* 10366*/    /*Scope*/ 24, /*->10391*/
/* 10367*/      OPC_CheckType, MVT::i32,
/* 10369*/      OPC_Scope, 10, /*->10381*/ // 2 children in Scope
/* 10371*/        OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 10373*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADD), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (ADD:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 10381*/      /*Scope*/ 8, /*->10390*/
/* 10382*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADD), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (ADD:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 10390*/      0, /*End of Scope*/
/* 10391*/    /*Scope*/ 12, /*->10404*/
/* 10392*/      OPC_CheckType, MVT::i64,
/* 10394*/      OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 10396*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADD), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (ADD:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 10404*/    0, /*End of Scope*/
/* 10405*/  /*SwitchOpcode*/ 7|128,2/*263*/, TARGET_VAL(ISD::ATOMIC_FENCE),// ->10672
/* 10409*/    OPC_RecordNode, // #0 = 'atomic_fence' chained node
/* 10410*/    OPC_Scope, 70, /*->10482*/ // 4 children in Scope
/* 10412*/      OPC_CheckChild1Integer, 4,
/* 10414*/      OPC_Scope, 41, /*->10457*/ // 2 children in Scope
/* 10416*/        OPC_CheckChild1Type, MVT::i32,
/* 10418*/        OPC_MoveChild2,
/* 10419*/        OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 10422*/        OPC_MoveParent,
/* 10423*/        OPC_Scope, 16, /*->10441*/ // 2 children in Scope
/* 10425*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 10427*/          OPC_EmitMergeInputChains1_0,
/* 10428*/          OPC_EmitInteger, MVT::i32, 2,
/* 10431*/          OPC_EmitInteger, MVT::i32, 3,
/* 10434*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FENCE), 0|OPFL_Chain,
                        2/*#Ops*/, 1, 2,
                    // Src: (atomic_fence 4:{ *:[i32] }, (timm:{ *:[i32] })) - Complexity = 11
                    // Dst: (FENCE 2:{ *:[i32] }, 3:{ *:[i32] })
/* 10441*/        /*Scope*/ 14, /*->10456*/
/* 10442*/          OPC_EmitMergeInputChains1_0,
/* 10443*/          OPC_EmitInteger, MVT::i32, 2,
/* 10446*/          OPC_EmitInteger, MVT::i32, 3,
/* 10449*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FENCE), 0|OPFL_Chain,
                        2/*#Ops*/, 1, 2,
                    // Src: (atomic_fence 4:{ *:[i32] }, (timm:{ *:[i32] })) - Complexity = 11
                    // Dst: (FENCE 2:{ *:[i32] }, 3:{ *:[i32] })
/* 10456*/        0, /*End of Scope*/
/* 10457*/      /*Scope*/ 23, /*->10481*/
/* 10458*/        OPC_CheckChild1Type, MVT::i64,
/* 10460*/        OPC_MoveChild2,
/* 10461*/        OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 10464*/        OPC_MoveParent,
/* 10465*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 10467*/        OPC_EmitMergeInputChains1_0,
/* 10468*/        OPC_EmitInteger, MVT::i64, 2,
/* 10471*/        OPC_EmitInteger, MVT::i64, 3,
/* 10474*/        OPC_MorphNodeTo0, TARGET_VAL(RISCV::FENCE), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2,
                  // Src: (atomic_fence 4:{ *:[i64] }, (timm:{ *:[i64] })) - Complexity = 11
                  // Dst: (FENCE 2:{ *:[i64] }, 3:{ *:[i64] })
/* 10481*/      0, /*End of Scope*/
/* 10482*/    /*Scope*/ 70, /*->10553*/
/* 10483*/      OPC_CheckChild1Integer, 5,
/* 10485*/      OPC_Scope, 41, /*->10528*/ // 2 children in Scope
/* 10487*/        OPC_CheckChild1Type, MVT::i32,
/* 10489*/        OPC_MoveChild2,
/* 10490*/        OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 10493*/        OPC_MoveParent,
/* 10494*/        OPC_Scope, 16, /*->10512*/ // 2 children in Scope
/* 10496*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 10498*/          OPC_EmitMergeInputChains1_0,
/* 10499*/          OPC_EmitInteger, MVT::i32, 3,
/* 10502*/          OPC_EmitInteger, MVT::i32, 1,
/* 10505*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FENCE), 0|OPFL_Chain,
                        2/*#Ops*/, 1, 2,
                    // Src: (atomic_fence 5:{ *:[i32] }, (timm:{ *:[i32] })) - Complexity = 11
                    // Dst: (FENCE 3:{ *:[i32] }, 1:{ *:[i32] })
/* 10512*/        /*Scope*/ 14, /*->10527*/
/* 10513*/          OPC_EmitMergeInputChains1_0,
/* 10514*/          OPC_EmitInteger, MVT::i32, 3,
/* 10517*/          OPC_EmitInteger, MVT::i32, 1,
/* 10520*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FENCE), 0|OPFL_Chain,
                        2/*#Ops*/, 1, 2,
                    // Src: (atomic_fence 5:{ *:[i32] }, (timm:{ *:[i32] })) - Complexity = 11
                    // Dst: (FENCE 3:{ *:[i32] }, 1:{ *:[i32] })
/* 10527*/        0, /*End of Scope*/
/* 10528*/      /*Scope*/ 23, /*->10552*/
/* 10529*/        OPC_CheckChild1Type, MVT::i64,
/* 10531*/        OPC_MoveChild2,
/* 10532*/        OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 10535*/        OPC_MoveParent,
/* 10536*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 10538*/        OPC_EmitMergeInputChains1_0,
/* 10539*/        OPC_EmitInteger, MVT::i64, 3,
/* 10542*/        OPC_EmitInteger, MVT::i64, 1,
/* 10545*/        OPC_MorphNodeTo0, TARGET_VAL(RISCV::FENCE), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2,
                  // Src: (atomic_fence 5:{ *:[i64] }, (timm:{ *:[i64] })) - Complexity = 11
                  // Dst: (FENCE 3:{ *:[i64] }, 1:{ *:[i64] })
/* 10552*/      0, /*End of Scope*/
/* 10553*/    /*Scope*/ 46, /*->10600*/
/* 10554*/      OPC_CheckChild1Integer, 6,
/* 10556*/      OPC_Scope, 25, /*->10583*/ // 2 children in Scope
/* 10558*/        OPC_CheckChild1Type, MVT::i32,
/* 10560*/        OPC_MoveChild2,
/* 10561*/        OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 10564*/        OPC_MoveParent,
/* 10565*/        OPC_Scope, 8, /*->10575*/ // 2 children in Scope
/* 10567*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 10569*/          OPC_EmitMergeInputChains1_0,
/* 10570*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FENCE_TSO), 0|OPFL_Chain,
                        0/*#Ops*/,
                    // Src: (atomic_fence 6:{ *:[i32] }, (timm:{ *:[i32] })) - Complexity = 11
                    // Dst: (FENCE_TSO)
/* 10575*/        /*Scope*/ 6, /*->10582*/
/* 10576*/          OPC_EmitMergeInputChains1_0,
/* 10577*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FENCE_TSO), 0|OPFL_Chain,
                        0/*#Ops*/,
                    // Src: (atomic_fence 6:{ *:[i32] }, (timm:{ *:[i32] })) - Complexity = 11
                    // Dst: (FENCE_TSO)
/* 10582*/        0, /*End of Scope*/
/* 10583*/      /*Scope*/ 15, /*->10599*/
/* 10584*/        OPC_CheckChild1Type, MVT::i64,
/* 10586*/        OPC_MoveChild2,
/* 10587*/        OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 10590*/        OPC_MoveParent,
/* 10591*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 10593*/        OPC_EmitMergeInputChains1_0,
/* 10594*/        OPC_MorphNodeTo0, TARGET_VAL(RISCV::FENCE_TSO), 0|OPFL_Chain,
                      0/*#Ops*/,
                  // Src: (atomic_fence 6:{ *:[i64] }, (timm:{ *:[i64] })) - Complexity = 11
                  // Dst: (FENCE_TSO)
/* 10599*/      0, /*End of Scope*/
/* 10600*/    /*Scope*/ 70, /*->10671*/
/* 10601*/      OPC_CheckChild1Integer, 7,
/* 10603*/      OPC_Scope, 41, /*->10646*/ // 2 children in Scope
/* 10605*/        OPC_CheckChild1Type, MVT::i32,
/* 10607*/        OPC_MoveChild2,
/* 10608*/        OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 10611*/        OPC_MoveParent,
/* 10612*/        OPC_Scope, 16, /*->10630*/ // 2 children in Scope
/* 10614*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 10616*/          OPC_EmitMergeInputChains1_0,
/* 10617*/          OPC_EmitInteger, MVT::i32, 3,
/* 10620*/          OPC_EmitInteger, MVT::i32, 3,
/* 10623*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FENCE), 0|OPFL_Chain,
                        2/*#Ops*/, 1, 2,
                    // Src: (atomic_fence 7:{ *:[i32] }, (timm:{ *:[i32] })) - Complexity = 11
                    // Dst: (FENCE 3:{ *:[i32] }, 3:{ *:[i32] })
/* 10630*/        /*Scope*/ 14, /*->10645*/
/* 10631*/          OPC_EmitMergeInputChains1_0,
/* 10632*/          OPC_EmitInteger, MVT::i32, 3,
/* 10635*/          OPC_EmitInteger, MVT::i32, 3,
/* 10638*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::FENCE), 0|OPFL_Chain,
                        2/*#Ops*/, 1, 2,
                    // Src: (atomic_fence 7:{ *:[i32] }, (timm:{ *:[i32] })) - Complexity = 11
                    // Dst: (FENCE 3:{ *:[i32] }, 3:{ *:[i32] })
/* 10645*/        0, /*End of Scope*/
/* 10646*/      /*Scope*/ 23, /*->10670*/
/* 10647*/        OPC_CheckChild1Type, MVT::i64,
/* 10649*/        OPC_MoveChild2,
/* 10650*/        OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 10653*/        OPC_MoveParent,
/* 10654*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 10656*/        OPC_EmitMergeInputChains1_0,
/* 10657*/        OPC_EmitInteger, MVT::i64, 3,
/* 10660*/        OPC_EmitInteger, MVT::i64, 3,
/* 10663*/        OPC_MorphNodeTo0, TARGET_VAL(RISCV::FENCE), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2,
                  // Src: (atomic_fence 7:{ *:[i64] }, (timm:{ *:[i64] })) - Complexity = 11
                  // Dst: (FENCE 3:{ *:[i64] }, 3:{ *:[i64] })
/* 10670*/      0, /*End of Scope*/
/* 10671*/    0, /*End of Scope*/
/* 10672*/  /*SwitchOpcode*/ 17|128,1/*145*/, TARGET_VAL(ISD::SREM),// ->10821
/* 10676*/    OPC_Scope, 99, /*->10777*/ // 2 children in Scope
/* 10678*/      OPC_MoveChild0,
/* 10679*/      OPC_SwitchOpcode /*2 cases */, 45, TARGET_VAL(ISD::AssertSext),// ->10728
/* 10683*/        OPC_RecordChild0, // #0 = $rs1
/* 10684*/        OPC_CheckPredicate, 0, // Predicate_assertsexti32
/* 10686*/        OPC_MoveParent,
/* 10687*/        OPC_MoveChild1,
/* 10688*/        OPC_SwitchOpcode /*2 cases */, 16, TARGET_VAL(ISD::AssertSext),// ->10708
/* 10692*/          OPC_RecordChild0, // #1 = $rs2
/* 10693*/          OPC_CheckPredicate, 0, // Predicate_assertsexti32
/* 10695*/          OPC_MoveParent,
/* 10696*/          OPC_CheckType, MVT::i64,
/* 10698*/          OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10700*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMW), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (srem:{ *:[i64] } (assertsext:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_assertsexti32>>, (assertsext:{ *:[i64] } GPR:{ *:[i64] }:$rs2)<<P:Predicate_assertsexti32>>) - Complexity = 11
                    // Dst: (REMW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 10708*/        /*SwitchOpcode*/ 16, TARGET_VAL(ISD::SIGN_EXTEND_INREG),// ->10727
/* 10711*/          OPC_RecordChild0, // #1 = $rs2
/* 10712*/          OPC_MoveChild1,
/* 10713*/          OPC_CheckValueType, MVT::i32,
/* 10715*/          OPC_MoveParent,
/* 10716*/          OPC_MoveParent,
/* 10717*/          OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10719*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMW), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (srem:{ *:[i64] } (assertsext:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_assertsexti32>>, (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$rs2, i32:{ *:[Other] })) - Complexity = 10
                    // Dst: (REMW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 10727*/        0, // EndSwitchOpcode
/* 10728*/      /*SwitchOpcode*/ 45, TARGET_VAL(ISD::SIGN_EXTEND_INREG),// ->10776
/* 10731*/        OPC_RecordChild0, // #0 = $rs1
/* 10732*/        OPC_MoveChild1,
/* 10733*/        OPC_CheckValueType, MVT::i32,
/* 10735*/        OPC_MoveParent,
/* 10736*/        OPC_MoveParent,
/* 10737*/        OPC_MoveChild1,
/* 10738*/        OPC_SwitchOpcode /*2 cases */, 14, TARGET_VAL(ISD::AssertSext),// ->10756
/* 10742*/          OPC_RecordChild0, // #1 = $rs2
/* 10743*/          OPC_CheckPredicate, 0, // Predicate_assertsexti32
/* 10745*/          OPC_MoveParent,
/* 10746*/          OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10748*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMW), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (srem:{ *:[i64] } (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$rs1, i32:{ *:[Other] }), (assertsext:{ *:[i64] } GPR:{ *:[i64] }:$rs2)<<P:Predicate_assertsexti32>>) - Complexity = 10
                    // Dst: (REMW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 10756*/        /*SwitchOpcode*/ 16, TARGET_VAL(ISD::SIGN_EXTEND_INREG),// ->10775
/* 10759*/          OPC_RecordChild0, // #1 = $rs2
/* 10760*/          OPC_MoveChild1,
/* 10761*/          OPC_CheckValueType, MVT::i32,
/* 10763*/          OPC_MoveParent,
/* 10764*/          OPC_MoveParent,
/* 10765*/          OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10767*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMW), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (srem:{ *:[i64] } (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$rs1, i32:{ *:[Other] }), (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$rs2, i32:{ *:[Other] })) - Complexity = 9
                    // Dst: (REMW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 10775*/        0, // EndSwitchOpcode
/* 10776*/      0, // EndSwitchOpcode
/* 10777*/    /*Scope*/ 42, /*->10820*/
/* 10778*/      OPC_RecordChild0, // #0 = $rs1
/* 10779*/      OPC_RecordChild1, // #1 = $rs2
/* 10780*/      OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->10807
/* 10783*/        OPC_Scope, 10, /*->10795*/ // 2 children in Scope
/* 10785*/          OPC_CheckPatternPredicate, 25, // (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 10787*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::REM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (srem:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                    // Dst: (REM:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 10795*/        /*Scope*/ 10, /*->10806*/
/* 10796*/          OPC_CheckPatternPredicate, 26, // (Subtarget->hasStdExtM())
/* 10798*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::REM), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (srem:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                    // Dst: (REM:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 10806*/        0, /*End of Scope*/
/* 10807*/      /*SwitchType*/ 10, MVT::i64,// ->10819
/* 10809*/        OPC_CheckPatternPredicate, 27, // (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 10811*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::REM), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1,
                  // Src: (srem:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                  // Dst: (REM:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 10819*/      0, // EndSwitchType
/* 10820*/    0, /*End of Scope*/
/* 10821*/  /*SwitchOpcode*/ 12|128,6/*780*/, TARGET_VAL(ISD::INTRINSIC_W_CHAIN),// ->11605
/* 10825*/    OPC_RecordNode, // #0 = 'intrinsic_w_chain' chained node
/* 10826*/    OPC_Scope, 50, /*->10878*/ // 18 children in Scope
/* 10828*/      OPC_CheckChild1Integer, 37|128,47/*6053*/,
/* 10831*/      OPC_RecordChild2, // #1 = $addr
/* 10832*/      OPC_CheckChild2Type, MVT::i32,
/* 10834*/      OPC_RecordChild3, // #2 = $incr
/* 10835*/      OPC_RecordChild4, // #3 = $mask
/* 10836*/      OPC_RecordChild5, // #4 = $ordering
/* 10837*/      OPC_MoveChild5,
/* 10838*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 10841*/      OPC_MoveParent,
/* 10842*/      OPC_Scope, 16, /*->10860*/ // 2 children in Scope
/* 10844*/        OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 10846*/        OPC_EmitMergeInputChains1_0,
/* 10847*/        OPC_EmitConvertToTarget, 4,
/* 10849*/        OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoMaskedAtomicSwap32), 0|OPFL_Chain,
                      MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 5,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6053:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicSwap32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (imm:{ *:[i32] }):$ordering)
/* 10860*/      /*Scope*/ 16, /*->10877*/
/* 10861*/        OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 10863*/        OPC_EmitMergeInputChains1_0,
/* 10864*/        OPC_EmitConvertToTarget, 4,
/* 10866*/        OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoMaskedAtomicSwap32), 0|OPFL_Chain,
                      MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 5,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6053:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicSwap32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (imm:{ *:[i32] }):$ordering)
/* 10877*/      0, /*End of Scope*/
/* 10878*/    /*Scope*/ 50, /*->10929*/
/* 10879*/      OPC_CheckChild1Integer, 23|128,47/*6039*/,
/* 10882*/      OPC_RecordChild2, // #1 = $addr
/* 10883*/      OPC_CheckChild2Type, MVT::i32,
/* 10885*/      OPC_RecordChild3, // #2 = $incr
/* 10886*/      OPC_RecordChild4, // #3 = $mask
/* 10887*/      OPC_RecordChild5, // #4 = $ordering
/* 10888*/      OPC_MoveChild5,
/* 10889*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 10892*/      OPC_MoveParent,
/* 10893*/      OPC_Scope, 16, /*->10911*/ // 2 children in Scope
/* 10895*/        OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 10897*/        OPC_EmitMergeInputChains1_0,
/* 10898*/        OPC_EmitConvertToTarget, 4,
/* 10900*/        OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadAdd32), 0|OPFL_Chain,
                      MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 5,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6039:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicLoadAdd32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (imm:{ *:[i32] }):$ordering)
/* 10911*/      /*Scope*/ 16, /*->10928*/
/* 10912*/        OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 10914*/        OPC_EmitMergeInputChains1_0,
/* 10915*/        OPC_EmitConvertToTarget, 4,
/* 10917*/        OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadAdd32), 0|OPFL_Chain,
                      MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 5,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6039:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicLoadAdd32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (imm:{ *:[i32] }):$ordering)
/* 10928*/      0, /*End of Scope*/
/* 10929*/    /*Scope*/ 50, /*->10980*/
/* 10930*/      OPC_CheckChild1Integer, 31|128,47/*6047*/,
/* 10933*/      OPC_RecordChild2, // #1 = $addr
/* 10934*/      OPC_CheckChild2Type, MVT::i32,
/* 10936*/      OPC_RecordChild3, // #2 = $incr
/* 10937*/      OPC_RecordChild4, // #3 = $mask
/* 10938*/      OPC_RecordChild5, // #4 = $ordering
/* 10939*/      OPC_MoveChild5,
/* 10940*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 10943*/      OPC_MoveParent,
/* 10944*/      OPC_Scope, 16, /*->10962*/ // 2 children in Scope
/* 10946*/        OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 10948*/        OPC_EmitMergeInputChains1_0,
/* 10949*/        OPC_EmitConvertToTarget, 4,
/* 10951*/        OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadSub32), 0|OPFL_Chain,
                      MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 5,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6047:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicLoadSub32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (imm:{ *:[i32] }):$ordering)
/* 10962*/      /*Scope*/ 16, /*->10979*/
/* 10963*/        OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 10965*/        OPC_EmitMergeInputChains1_0,
/* 10966*/        OPC_EmitConvertToTarget, 4,
/* 10968*/        OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadSub32), 0|OPFL_Chain,
                      MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 5,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6047:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicLoadSub32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (imm:{ *:[i32] }):$ordering)
/* 10979*/      0, /*End of Scope*/
/* 10980*/    /*Scope*/ 50, /*->11031*/
/* 10981*/      OPC_CheckChild1Integer, 29|128,47/*6045*/,
/* 10984*/      OPC_RecordChild2, // #1 = $addr
/* 10985*/      OPC_CheckChild2Type, MVT::i32,
/* 10987*/      OPC_RecordChild3, // #2 = $incr
/* 10988*/      OPC_RecordChild4, // #3 = $mask
/* 10989*/      OPC_RecordChild5, // #4 = $ordering
/* 10990*/      OPC_MoveChild5,
/* 10991*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 10994*/      OPC_MoveParent,
/* 10995*/      OPC_Scope, 16, /*->11013*/ // 2 children in Scope
/* 10997*/        OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 10999*/        OPC_EmitMergeInputChains1_0,
/* 11000*/        OPC_EmitConvertToTarget, 4,
/* 11002*/        OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadNand32), 0|OPFL_Chain,
                      MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 5,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6045:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicLoadNand32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (imm:{ *:[i32] }):$ordering)
/* 11013*/      /*Scope*/ 16, /*->11030*/
/* 11014*/        OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 11016*/        OPC_EmitMergeInputChains1_0,
/* 11017*/        OPC_EmitConvertToTarget, 4,
/* 11019*/        OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadNand32), 0|OPFL_Chain,
                      MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 5,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6045:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicLoadNand32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (imm:{ *:[i32] }):$ordering)
/* 11030*/      0, /*End of Scope*/
/* 11031*/    /*Scope*/ 57, /*->11089*/
/* 11032*/      OPC_CheckChild1Integer, 25|128,47/*6041*/,
/* 11035*/      OPC_RecordChild2, // #1 = $addr
/* 11036*/      OPC_CheckChild2Type, MVT::i32,
/* 11038*/      OPC_RecordChild3, // #2 = $incr
/* 11039*/      OPC_RecordChild4, // #3 = $mask
/* 11040*/      OPC_RecordChild5, // #4 = $shiftamt
/* 11041*/      OPC_RecordChild6, // #5 = $ordering
/* 11042*/      OPC_MoveChild6,
/* 11043*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 11046*/      OPC_MoveParent,
/* 11047*/      OPC_Scope, 19, /*->11068*/ // 2 children in Scope
/* 11049*/        OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 11051*/        OPC_EmitMergeInputChains1_0,
/* 11052*/        OPC_EmitConvertToTarget, 5,
/* 11054*/        OPC_MorphNodeTo, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadMax32), 0|OPFL_Chain,
                      3/*#VTs*/, MVT::i32, MVT::i32, MVT::i32, 5/*#Ops*/, 1, 2, 3, 4, 6,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6041:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, GPR:{ *:[i32] }:$shiftamt, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicLoadMax32:{ *:[i32] }:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, GPR:{ *:[i32] }:$shiftamt, (imm:{ *:[i32] }):$ordering)
/* 11068*/      /*Scope*/ 19, /*->11088*/
/* 11069*/        OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 11071*/        OPC_EmitMergeInputChains1_0,
/* 11072*/        OPC_EmitConvertToTarget, 5,
/* 11074*/        OPC_MorphNodeTo, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadMax32), 0|OPFL_Chain,
                      3/*#VTs*/, MVT::i32, MVT::i32, MVT::i32, 5/*#Ops*/, 1, 2, 3, 4, 6,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6041:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, GPR:{ *:[i32] }:$shiftamt, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicLoadMax32:{ *:[i32] }:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, GPR:{ *:[i32] }:$shiftamt, (imm:{ *:[i32] }):$ordering)
/* 11088*/      0, /*End of Scope*/
/* 11089*/    /*Scope*/ 57, /*->11147*/
/* 11090*/      OPC_CheckChild1Integer, 27|128,47/*6043*/,
/* 11093*/      OPC_RecordChild2, // #1 = $addr
/* 11094*/      OPC_CheckChild2Type, MVT::i32,
/* 11096*/      OPC_RecordChild3, // #2 = $incr
/* 11097*/      OPC_RecordChild4, // #3 = $mask
/* 11098*/      OPC_RecordChild5, // #4 = $shiftamt
/* 11099*/      OPC_RecordChild6, // #5 = $ordering
/* 11100*/      OPC_MoveChild6,
/* 11101*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 11104*/      OPC_MoveParent,
/* 11105*/      OPC_Scope, 19, /*->11126*/ // 2 children in Scope
/* 11107*/        OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 11109*/        OPC_EmitMergeInputChains1_0,
/* 11110*/        OPC_EmitConvertToTarget, 5,
/* 11112*/        OPC_MorphNodeTo, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadMin32), 0|OPFL_Chain,
                      3/*#VTs*/, MVT::i32, MVT::i32, MVT::i32, 5/*#Ops*/, 1, 2, 3, 4, 6,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6043:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, GPR:{ *:[i32] }:$shiftamt, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicLoadMin32:{ *:[i32] }:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, GPR:{ *:[i32] }:$shiftamt, (imm:{ *:[i32] }):$ordering)
/* 11126*/      /*Scope*/ 19, /*->11146*/
/* 11127*/        OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 11129*/        OPC_EmitMergeInputChains1_0,
/* 11130*/        OPC_EmitConvertToTarget, 5,
/* 11132*/        OPC_MorphNodeTo, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadMin32), 0|OPFL_Chain,
                      3/*#VTs*/, MVT::i32, MVT::i32, MVT::i32, 5/*#Ops*/, 1, 2, 3, 4, 6,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6043:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, GPR:{ *:[i32] }:$shiftamt, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicLoadMin32:{ *:[i32] }:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, GPR:{ *:[i32] }:$shiftamt, (imm:{ *:[i32] }):$ordering)
/* 11146*/      0, /*End of Scope*/
/* 11147*/    /*Scope*/ 54, /*->11202*/
/* 11148*/      OPC_CheckChild1Integer, 33|128,47/*6049*/,
/* 11151*/      OPC_RecordChild2, // #1 = $addr
/* 11152*/      OPC_CheckChild2Type, MVT::i32,
/* 11154*/      OPC_RecordChild3, // #2 = $incr
/* 11155*/      OPC_RecordChild4, // #3 = $mask
/* 11156*/      OPC_RecordChild5, // #4 = $ordering
/* 11157*/      OPC_MoveChild5,
/* 11158*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 11161*/      OPC_MoveParent,
/* 11162*/      OPC_Scope, 18, /*->11182*/ // 2 children in Scope
/* 11164*/        OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 11166*/        OPC_EmitMergeInputChains1_0,
/* 11167*/        OPC_EmitConvertToTarget, 4,
/* 11169*/        OPC_MorphNodeTo, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadUMax32), 0|OPFL_Chain,
                      3/*#VTs*/, MVT::i32, MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 5,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6049:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicLoadUMax32:{ *:[i32] }:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (imm:{ *:[i32] }):$ordering)
/* 11182*/      /*Scope*/ 18, /*->11201*/
/* 11183*/        OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 11185*/        OPC_EmitMergeInputChains1_0,
/* 11186*/        OPC_EmitConvertToTarget, 4,
/* 11188*/        OPC_MorphNodeTo, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadUMax32), 0|OPFL_Chain,
                      3/*#VTs*/, MVT::i32, MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 5,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6049:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicLoadUMax32:{ *:[i32] }:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (imm:{ *:[i32] }):$ordering)
/* 11201*/      0, /*End of Scope*/
/* 11202*/    /*Scope*/ 54, /*->11257*/
/* 11203*/      OPC_CheckChild1Integer, 35|128,47/*6051*/,
/* 11206*/      OPC_RecordChild2, // #1 = $addr
/* 11207*/      OPC_CheckChild2Type, MVT::i32,
/* 11209*/      OPC_RecordChild3, // #2 = $incr
/* 11210*/      OPC_RecordChild4, // #3 = $mask
/* 11211*/      OPC_RecordChild5, // #4 = $ordering
/* 11212*/      OPC_MoveChild5,
/* 11213*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 11216*/      OPC_MoveParent,
/* 11217*/      OPC_Scope, 18, /*->11237*/ // 2 children in Scope
/* 11219*/        OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 11221*/        OPC_EmitMergeInputChains1_0,
/* 11222*/        OPC_EmitConvertToTarget, 4,
/* 11224*/        OPC_MorphNodeTo, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadUMin32), 0|OPFL_Chain,
                      3/*#VTs*/, MVT::i32, MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 5,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6051:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicLoadUMin32:{ *:[i32] }:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (imm:{ *:[i32] }):$ordering)
/* 11237*/      /*Scope*/ 18, /*->11256*/
/* 11238*/        OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 11240*/        OPC_EmitMergeInputChains1_0,
/* 11241*/        OPC_EmitConvertToTarget, 4,
/* 11243*/        OPC_MorphNodeTo, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadUMin32), 0|OPFL_Chain,
                      3/*#VTs*/, MVT::i32, MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 5,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6051:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedAtomicLoadUMin32:{ *:[i32] }:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, GPR:{ *:[i32] }:$mask, (imm:{ *:[i32] }):$ordering)
/* 11256*/      0, /*End of Scope*/
/* 11257*/    /*Scope*/ 53, /*->11311*/
/* 11258*/      OPC_CheckChild1Integer, 39|128,47/*6055*/,
/* 11261*/      OPC_RecordChild2, // #1 = $addr
/* 11262*/      OPC_CheckChild2Type, MVT::i32,
/* 11264*/      OPC_RecordChild3, // #2 = $cmpval
/* 11265*/      OPC_RecordChild4, // #3 = $newval
/* 11266*/      OPC_RecordChild5, // #4 = $mask
/* 11267*/      OPC_RecordChild6, // #5 = $ordering
/* 11268*/      OPC_MoveChild6,
/* 11269*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 11272*/      OPC_MoveParent,
/* 11273*/      OPC_Scope, 17, /*->11292*/ // 2 children in Scope
/* 11275*/        OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 11277*/        OPC_EmitMergeInputChains1_0,
/* 11278*/        OPC_EmitConvertToTarget, 5,
/* 11280*/        OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoMaskedCmpXchg32), 0|OPFL_Chain,
                      MVT::i32, MVT::i32, 5/*#Ops*/, 1, 2, 3, 4, 6,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6055:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmpval, GPR:{ *:[i32] }:$newval, GPR:{ *:[i32] }:$mask, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedCmpXchg32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmpval, GPR:{ *:[i32] }:$newval, GPR:{ *:[i32] }:$mask, (imm:{ *:[i32] }):$ordering)
/* 11292*/      /*Scope*/ 17, /*->11310*/
/* 11293*/        OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 11295*/        OPC_EmitMergeInputChains1_0,
/* 11296*/        OPC_EmitConvertToTarget, 5,
/* 11298*/        OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoMaskedCmpXchg32), 0|OPFL_Chain,
                      MVT::i32, MVT::i32, 5/*#Ops*/, 1, 2, 3, 4, 6,
                  // Src: (intrinsic_w_chain:{ *:[i32] } 6055:{ *:[iPTR] }, GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmpval, GPR:{ *:[i32] }:$newval, GPR:{ *:[i32] }:$mask, (timm:{ *:[i32] }):$ordering) - Complexity = 11
                  // Dst: (PseudoMaskedCmpXchg32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmpval, GPR:{ *:[i32] }:$newval, GPR:{ *:[i32] }:$mask, (imm:{ *:[i32] }):$ordering)
/* 11310*/      0, /*End of Scope*/
/* 11311*/    /*Scope*/ 30, /*->11342*/
/* 11312*/      OPC_CheckChild1Integer, 38|128,47/*6054*/,
/* 11315*/      OPC_RecordChild2, // #1 = $addr
/* 11316*/      OPC_CheckChild2Type, MVT::i64,
/* 11318*/      OPC_RecordChild3, // #2 = $incr
/* 11319*/      OPC_RecordChild4, // #3 = $mask
/* 11320*/      OPC_RecordChild5, // #4 = $ordering
/* 11321*/      OPC_MoveChild5,
/* 11322*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 11325*/      OPC_MoveParent,
/* 11326*/      OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 11328*/      OPC_EmitMergeInputChains1_0,
/* 11329*/      OPC_EmitConvertToTarget, 4,
/* 11331*/      OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoMaskedAtomicSwap32), 0|OPFL_Chain,
                    MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 5,
                // Src: (intrinsic_w_chain:{ *:[i64] } 6054:{ *:[iPTR] }, GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, (timm:{ *:[i64] }):$ordering) - Complexity = 11
                // Dst: (PseudoMaskedAtomicSwap32:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, (imm:{ *:[i64] }):$ordering)
/* 11342*/    /*Scope*/ 30, /*->11373*/
/* 11343*/      OPC_CheckChild1Integer, 24|128,47/*6040*/,
/* 11346*/      OPC_RecordChild2, // #1 = $addr
/* 11347*/      OPC_CheckChild2Type, MVT::i64,
/* 11349*/      OPC_RecordChild3, // #2 = $incr
/* 11350*/      OPC_RecordChild4, // #3 = $mask
/* 11351*/      OPC_RecordChild5, // #4 = $ordering
/* 11352*/      OPC_MoveChild5,
/* 11353*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 11356*/      OPC_MoveParent,
/* 11357*/      OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 11359*/      OPC_EmitMergeInputChains1_0,
/* 11360*/      OPC_EmitConvertToTarget, 4,
/* 11362*/      OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadAdd32), 0|OPFL_Chain,
                    MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 5,
                // Src: (intrinsic_w_chain:{ *:[i64] } 6040:{ *:[iPTR] }, GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, (timm:{ *:[i64] }):$ordering) - Complexity = 11
                // Dst: (PseudoMaskedAtomicLoadAdd32:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, (imm:{ *:[i64] }):$ordering)
/* 11373*/    /*Scope*/ 30, /*->11404*/
/* 11374*/      OPC_CheckChild1Integer, 32|128,47/*6048*/,
/* 11377*/      OPC_RecordChild2, // #1 = $addr
/* 11378*/      OPC_CheckChild2Type, MVT::i64,
/* 11380*/      OPC_RecordChild3, // #2 = $incr
/* 11381*/      OPC_RecordChild4, // #3 = $mask
/* 11382*/      OPC_RecordChild5, // #4 = $ordering
/* 11383*/      OPC_MoveChild5,
/* 11384*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 11387*/      OPC_MoveParent,
/* 11388*/      OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 11390*/      OPC_EmitMergeInputChains1_0,
/* 11391*/      OPC_EmitConvertToTarget, 4,
/* 11393*/      OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadSub32), 0|OPFL_Chain,
                    MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 5,
                // Src: (intrinsic_w_chain:{ *:[i64] } 6048:{ *:[iPTR] }, GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, (timm:{ *:[i64] }):$ordering) - Complexity = 11
                // Dst: (PseudoMaskedAtomicLoadSub32:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, (imm:{ *:[i64] }):$ordering)
/* 11404*/    /*Scope*/ 30, /*->11435*/
/* 11405*/      OPC_CheckChild1Integer, 30|128,47/*6046*/,
/* 11408*/      OPC_RecordChild2, // #1 = $addr
/* 11409*/      OPC_CheckChild2Type, MVT::i64,
/* 11411*/      OPC_RecordChild3, // #2 = $incr
/* 11412*/      OPC_RecordChild4, // #3 = $mask
/* 11413*/      OPC_RecordChild5, // #4 = $ordering
/* 11414*/      OPC_MoveChild5,
/* 11415*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 11418*/      OPC_MoveParent,
/* 11419*/      OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 11421*/      OPC_EmitMergeInputChains1_0,
/* 11422*/      OPC_EmitConvertToTarget, 4,
/* 11424*/      OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadNand32), 0|OPFL_Chain,
                    MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 5,
                // Src: (intrinsic_w_chain:{ *:[i64] } 6046:{ *:[iPTR] }, GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, (timm:{ *:[i64] }):$ordering) - Complexity = 11
                // Dst: (PseudoMaskedAtomicLoadNand32:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, (imm:{ *:[i64] }):$ordering)
/* 11435*/    /*Scope*/ 34, /*->11470*/
/* 11436*/      OPC_CheckChild1Integer, 26|128,47/*6042*/,
/* 11439*/      OPC_RecordChild2, // #1 = $addr
/* 11440*/      OPC_CheckChild2Type, MVT::i64,
/* 11442*/      OPC_RecordChild3, // #2 = $incr
/* 11443*/      OPC_RecordChild4, // #3 = $mask
/* 11444*/      OPC_RecordChild5, // #4 = $shiftamt
/* 11445*/      OPC_RecordChild6, // #5 = $ordering
/* 11446*/      OPC_MoveChild6,
/* 11447*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 11450*/      OPC_MoveParent,
/* 11451*/      OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 11453*/      OPC_EmitMergeInputChains1_0,
/* 11454*/      OPC_EmitConvertToTarget, 5,
/* 11456*/      OPC_MorphNodeTo, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadMax32), 0|OPFL_Chain,
                    3/*#VTs*/, MVT::i64, MVT::i64, MVT::i64, 5/*#Ops*/, 1, 2, 3, 4, 6,
                // Src: (intrinsic_w_chain:{ *:[i64] } 6042:{ *:[iPTR] }, GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, GPR:{ *:[i64] }:$shiftamt, (timm:{ *:[i64] }):$ordering) - Complexity = 11
                // Dst: (PseudoMaskedAtomicLoadMax32:{ *:[i64] }:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, GPR:{ *:[i64] }:$shiftamt, (imm:{ *:[i64] }):$ordering)
/* 11470*/    /*Scope*/ 34, /*->11505*/
/* 11471*/      OPC_CheckChild1Integer, 28|128,47/*6044*/,
/* 11474*/      OPC_RecordChild2, // #1 = $addr
/* 11475*/      OPC_CheckChild2Type, MVT::i64,
/* 11477*/      OPC_RecordChild3, // #2 = $incr
/* 11478*/      OPC_RecordChild4, // #3 = $mask
/* 11479*/      OPC_RecordChild5, // #4 = $shiftamt
/* 11480*/      OPC_RecordChild6, // #5 = $ordering
/* 11481*/      OPC_MoveChild6,
/* 11482*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 11485*/      OPC_MoveParent,
/* 11486*/      OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 11488*/      OPC_EmitMergeInputChains1_0,
/* 11489*/      OPC_EmitConvertToTarget, 5,
/* 11491*/      OPC_MorphNodeTo, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadMin32), 0|OPFL_Chain,
                    3/*#VTs*/, MVT::i64, MVT::i64, MVT::i64, 5/*#Ops*/, 1, 2, 3, 4, 6,
                // Src: (intrinsic_w_chain:{ *:[i64] } 6044:{ *:[iPTR] }, GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, GPR:{ *:[i64] }:$shiftamt, (timm:{ *:[i64] }):$ordering) - Complexity = 11
                // Dst: (PseudoMaskedAtomicLoadMin32:{ *:[i64] }:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, GPR:{ *:[i64] }:$shiftamt, (imm:{ *:[i64] }):$ordering)
/* 11505*/    /*Scope*/ 32, /*->11538*/
/* 11506*/      OPC_CheckChild1Integer, 34|128,47/*6050*/,
/* 11509*/      OPC_RecordChild2, // #1 = $addr
/* 11510*/      OPC_CheckChild2Type, MVT::i64,
/* 11512*/      OPC_RecordChild3, // #2 = $incr
/* 11513*/      OPC_RecordChild4, // #3 = $mask
/* 11514*/      OPC_RecordChild5, // #4 = $ordering
/* 11515*/      OPC_MoveChild5,
/* 11516*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 11519*/      OPC_MoveParent,
/* 11520*/      OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 11522*/      OPC_EmitMergeInputChains1_0,
/* 11523*/      OPC_EmitConvertToTarget, 4,
/* 11525*/      OPC_MorphNodeTo, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadUMax32), 0|OPFL_Chain,
                    3/*#VTs*/, MVT::i64, MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 5,
                // Src: (intrinsic_w_chain:{ *:[i64] } 6050:{ *:[iPTR] }, GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, (timm:{ *:[i64] }):$ordering) - Complexity = 11
                // Dst: (PseudoMaskedAtomicLoadUMax32:{ *:[i64] }:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, (imm:{ *:[i64] }):$ordering)
/* 11538*/    /*Scope*/ 32, /*->11571*/
/* 11539*/      OPC_CheckChild1Integer, 36|128,47/*6052*/,
/* 11542*/      OPC_RecordChild2, // #1 = $addr
/* 11543*/      OPC_CheckChild2Type, MVT::i64,
/* 11545*/      OPC_RecordChild3, // #2 = $incr
/* 11546*/      OPC_RecordChild4, // #3 = $mask
/* 11547*/      OPC_RecordChild5, // #4 = $ordering
/* 11548*/      OPC_MoveChild5,
/* 11549*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 11552*/      OPC_MoveParent,
/* 11553*/      OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 11555*/      OPC_EmitMergeInputChains1_0,
/* 11556*/      OPC_EmitConvertToTarget, 4,
/* 11558*/      OPC_MorphNodeTo, TARGET_VAL(RISCV::PseudoMaskedAtomicLoadUMin32), 0|OPFL_Chain,
                    3/*#VTs*/, MVT::i64, MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 5,
                // Src: (intrinsic_w_chain:{ *:[i64] } 6052:{ *:[iPTR] }, GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, (timm:{ *:[i64] }):$ordering) - Complexity = 11
                // Dst: (PseudoMaskedAtomicLoadUMin32:{ *:[i64] }:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, GPR:{ *:[i64] }:$mask, (imm:{ *:[i64] }):$ordering)
/* 11571*/    /*Scope*/ 32, /*->11604*/
/* 11572*/      OPC_CheckChild1Integer, 40|128,47/*6056*/,
/* 11575*/      OPC_RecordChild2, // #1 = $addr
/* 11576*/      OPC_CheckChild2Type, MVT::i64,
/* 11578*/      OPC_RecordChild3, // #2 = $cmpval
/* 11579*/      OPC_RecordChild4, // #3 = $newval
/* 11580*/      OPC_RecordChild5, // #4 = $mask
/* 11581*/      OPC_RecordChild6, // #5 = $ordering
/* 11582*/      OPC_MoveChild6,
/* 11583*/      OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 11586*/      OPC_MoveParent,
/* 11587*/      OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 11589*/      OPC_EmitMergeInputChains1_0,
/* 11590*/      OPC_EmitConvertToTarget, 5,
/* 11592*/      OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoMaskedCmpXchg32), 0|OPFL_Chain,
                    MVT::i64, MVT::i64, 5/*#Ops*/, 1, 2, 3, 4, 6,
                // Src: (intrinsic_w_chain:{ *:[i64] } 6056:{ *:[iPTR] }, GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmpval, GPR:{ *:[i64] }:$newval, GPR:{ *:[i64] }:$mask, (timm:{ *:[i64] }):$ordering) - Complexity = 11
                // Dst: (PseudoMaskedCmpXchg32:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmpval, GPR:{ *:[i64] }:$newval, GPR:{ *:[i64] }:$mask, (imm:{ *:[i64] }):$ordering)
/* 11604*/    0, /*End of Scope*/
/* 11605*/  /*SwitchOpcode*/ 35|128,1/*163*/, TARGET_VAL(ISD::SHL),// ->11772
/* 11609*/    OPC_RecordChild0, // #0 = $rs1
/* 11610*/    OPC_Scope, 56, /*->11668*/ // 2 children in Scope
/* 11612*/      OPC_MoveChild1,
/* 11613*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 11616*/      OPC_RecordChild0, // #1 = $rs2
/* 11617*/      OPC_MoveChild1,
/* 11618*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 11621*/      OPC_CheckPredicate, 16, // Predicate_immbottomxlenset
/* 11623*/      OPC_MoveParent,
/* 11624*/      OPC_SwitchType /*2 cases */, 25, MVT::i32,// ->11652
/* 11627*/        OPC_MoveParent,
/* 11628*/        OPC_CheckType, MVT::i32,
/* 11630*/        OPC_Scope, 10, /*->11642*/ // 2 children in Scope
/* 11632*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 11634*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLL), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (shl:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, (imm:{ *:[i32] })<<P:Predicate_immbottomxlenset>>)) - Complexity = 10
                    // Dst: (SLL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 11642*/        /*Scope*/ 8, /*->11651*/
/* 11643*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLL), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (shl:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, (imm:{ *:[i32] })<<P:Predicate_immbottomxlenset>>)) - Complexity = 10
                    // Dst: (SLL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 11651*/        0, /*End of Scope*/
/* 11652*/      /*SwitchType*/ 13, MVT::i64,// ->11667
/* 11654*/        OPC_MoveParent,
/* 11655*/        OPC_CheckType, MVT::i64,
/* 11657*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 11659*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLL), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1,
                  // Src: (shl:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (and:{ *:[i64] } GPR:{ *:[i64] }:$rs2, (imm:{ *:[i64] })<<P:Predicate_immbottomxlenset>>)) - Complexity = 10
                  // Dst: (SLL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 11667*/      0, // EndSwitchType
/* 11668*/    /*Scope*/ 102, /*->11771*/
/* 11669*/      OPC_RecordChild1, // #1 = $shamt
/* 11670*/      OPC_Scope, 56, /*->11728*/ // 3 children in Scope
/* 11672*/        OPC_MoveChild1,
/* 11673*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 11676*/        OPC_CheckPredicate, 17, // Predicate_uimmlog2xlen
/* 11678*/        OPC_SwitchType /*2 cases */, 29, MVT::i32,// ->11710
/* 11681*/          OPC_MoveParent,
/* 11682*/          OPC_CheckType, MVT::i32,
/* 11684*/          OPC_Scope, 12, /*->11698*/ // 2 children in Scope
/* 11686*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 11688*/            OPC_EmitConvertToTarget, 1,
/* 11690*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLLI), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,
                      // Src: (shl:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_uimmlog2xlen>>:$shamt) - Complexity = 7
                      // Dst: (SLLI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_uimmlog2xlen>>:$shamt)
/* 11698*/          /*Scope*/ 10, /*->11709*/
/* 11699*/            OPC_EmitConvertToTarget, 1,
/* 11701*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLLI), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,
                      // Src: (shl:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_uimmlog2xlen>>:$shamt) - Complexity = 7
                      // Dst: (SLLI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_uimmlog2xlen>>:$shamt)
/* 11709*/          0, /*End of Scope*/
/* 11710*/        /*SwitchType*/ 15, MVT::i64,// ->11727
/* 11712*/          OPC_MoveParent,
/* 11713*/          OPC_CheckType, MVT::i64,
/* 11715*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 11717*/          OPC_EmitConvertToTarget, 1,
/* 11719*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLLI), 0,
                        MVT::i64, 2/*#Ops*/, 0, 2,
                    // Src: (shl:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_uimmlog2xlen>>:$shamt) - Complexity = 7
                    // Dst: (SLLI:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_uimmlog2xlen>>:$shamt)
/* 11727*/        0, // EndSwitchType
/* 11728*/      /*Scope*/ 26, /*->11755*/
/* 11729*/        OPC_CheckChild1Type, MVT::i32,
/* 11731*/        OPC_CheckType, MVT::i32,
/* 11733*/        OPC_Scope, 10, /*->11745*/ // 2 children in Scope
/* 11735*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 11737*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLL), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (shl:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                    // Dst: (SLL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 11745*/        /*Scope*/ 8, /*->11754*/
/* 11746*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLL), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (shl:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                    // Dst: (SLL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 11754*/        0, /*End of Scope*/
/* 11755*/      /*Scope*/ 14, /*->11770*/
/* 11756*/        OPC_CheckChild1Type, MVT::i64,
/* 11758*/        OPC_CheckType, MVT::i64,
/* 11760*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 11762*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLL), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1,
                  // Src: (shl:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                  // Dst: (SLL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 11770*/      0, /*End of Scope*/
/* 11771*/    0, /*End of Scope*/
/* 11772*/  /*SwitchOpcode*/ 35|128,1/*163*/, TARGET_VAL(ISD::SRL),// ->11939
/* 11776*/    OPC_RecordChild0, // #0 = $rs1
/* 11777*/    OPC_Scope, 56, /*->11835*/ // 2 children in Scope
/* 11779*/      OPC_MoveChild1,
/* 11780*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 11783*/      OPC_RecordChild0, // #1 = $rs2
/* 11784*/      OPC_MoveChild1,
/* 11785*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 11788*/      OPC_CheckPredicate, 16, // Predicate_immbottomxlenset
/* 11790*/      OPC_MoveParent,
/* 11791*/      OPC_SwitchType /*2 cases */, 25, MVT::i32,// ->11819
/* 11794*/        OPC_MoveParent,
/* 11795*/        OPC_CheckType, MVT::i32,
/* 11797*/        OPC_Scope, 10, /*->11809*/ // 2 children in Scope
/* 11799*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 11801*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRL), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (srl:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, (imm:{ *:[i32] })<<P:Predicate_immbottomxlenset>>)) - Complexity = 10
                    // Dst: (SRL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 11809*/        /*Scope*/ 8, /*->11818*/
/* 11810*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRL), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (srl:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, (imm:{ *:[i32] })<<P:Predicate_immbottomxlenset>>)) - Complexity = 10
                    // Dst: (SRL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 11818*/        0, /*End of Scope*/
/* 11819*/      /*SwitchType*/ 13, MVT::i64,// ->11834
/* 11821*/        OPC_MoveParent,
/* 11822*/        OPC_CheckType, MVT::i64,
/* 11824*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 11826*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRL), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1,
                  // Src: (srl:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (and:{ *:[i64] } GPR:{ *:[i64] }:$rs2, (imm:{ *:[i64] })<<P:Predicate_immbottomxlenset>>)) - Complexity = 10
                  // Dst: (SRL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 11834*/      0, // EndSwitchType
/* 11835*/    /*Scope*/ 102, /*->11938*/
/* 11836*/      OPC_RecordChild1, // #1 = $shamt
/* 11837*/      OPC_Scope, 56, /*->11895*/ // 3 children in Scope
/* 11839*/        OPC_MoveChild1,
/* 11840*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 11843*/        OPC_CheckPredicate, 17, // Predicate_uimmlog2xlen
/* 11845*/        OPC_SwitchType /*2 cases */, 29, MVT::i32,// ->11877
/* 11848*/          OPC_MoveParent,
/* 11849*/          OPC_CheckType, MVT::i32,
/* 11851*/          OPC_Scope, 12, /*->11865*/ // 2 children in Scope
/* 11853*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 11855*/            OPC_EmitConvertToTarget, 1,
/* 11857*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRLI), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,
                      // Src: (srl:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_uimmlog2xlen>>:$shamt) - Complexity = 7
                      // Dst: (SRLI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_uimmlog2xlen>>:$shamt)
/* 11865*/          /*Scope*/ 10, /*->11876*/
/* 11866*/            OPC_EmitConvertToTarget, 1,
/* 11868*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRLI), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,
                      // Src: (srl:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_uimmlog2xlen>>:$shamt) - Complexity = 7
                      // Dst: (SRLI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_uimmlog2xlen>>:$shamt)
/* 11876*/          0, /*End of Scope*/
/* 11877*/        /*SwitchType*/ 15, MVT::i64,// ->11894
/* 11879*/          OPC_MoveParent,
/* 11880*/          OPC_CheckType, MVT::i64,
/* 11882*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 11884*/          OPC_EmitConvertToTarget, 1,
/* 11886*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRLI), 0,
                        MVT::i64, 2/*#Ops*/, 0, 2,
                    // Src: (srl:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_uimmlog2xlen>>:$shamt) - Complexity = 7
                    // Dst: (SRLI:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_uimmlog2xlen>>:$shamt)
/* 11894*/        0, // EndSwitchType
/* 11895*/      /*Scope*/ 26, /*->11922*/
/* 11896*/        OPC_CheckChild1Type, MVT::i32,
/* 11898*/        OPC_CheckType, MVT::i32,
/* 11900*/        OPC_Scope, 10, /*->11912*/ // 2 children in Scope
/* 11902*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 11904*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRL), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (srl:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                    // Dst: (SRL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 11912*/        /*Scope*/ 8, /*->11921*/
/* 11913*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRL), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (srl:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                    // Dst: (SRL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 11921*/        0, /*End of Scope*/
/* 11922*/      /*Scope*/ 14, /*->11937*/
/* 11923*/        OPC_CheckChild1Type, MVT::i64,
/* 11925*/        OPC_CheckType, MVT::i64,
/* 11927*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 11929*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRL), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1,
                  // Src: (srl:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                  // Dst: (SRL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 11937*/      0, /*End of Scope*/
/* 11938*/    0, /*End of Scope*/
/* 11939*/  /*SwitchOpcode*/ 69|128,1/*197*/, TARGET_VAL(ISD::SRA),// ->12140
/* 11943*/    OPC_Scope, 57, /*->12002*/ // 3 children in Scope
/* 11945*/      OPC_RecordChild0, // #0 = $rs1
/* 11946*/      OPC_MoveChild1,
/* 11947*/      OPC_CheckOpcode, TARGET_VAL(ISD::AND),
/* 11950*/      OPC_RecordChild0, // #1 = $rs2
/* 11951*/      OPC_MoveChild1,
/* 11952*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 11955*/      OPC_CheckPredicate, 16, // Predicate_immbottomxlenset
/* 11957*/      OPC_MoveParent,
/* 11958*/      OPC_SwitchType /*2 cases */, 25, MVT::i32,// ->11986
/* 11961*/        OPC_MoveParent,
/* 11962*/        OPC_CheckType, MVT::i32,
/* 11964*/        OPC_Scope, 10, /*->11976*/ // 2 children in Scope
/* 11966*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 11968*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRA), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (sra:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, (imm:{ *:[i32] })<<P:Predicate_immbottomxlenset>>)) - Complexity = 10
                    // Dst: (SRA:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 11976*/        /*Scope*/ 8, /*->11985*/
/* 11977*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRA), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (sra:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (and:{ *:[i32] } GPR:{ *:[i32] }:$rs2, (imm:{ *:[i32] })<<P:Predicate_immbottomxlenset>>)) - Complexity = 10
                    // Dst: (SRA:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 11985*/        0, /*End of Scope*/
/* 11986*/      /*SwitchType*/ 13, MVT::i64,// ->12001
/* 11988*/        OPC_MoveParent,
/* 11989*/        OPC_CheckType, MVT::i64,
/* 11991*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 11993*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRA), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1,
                  // Src: (sra:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (and:{ *:[i64] } GPR:{ *:[i64] }:$rs2, (imm:{ *:[i64] })<<P:Predicate_immbottomxlenset>>)) - Complexity = 10
                  // Dst: (SRA:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 12001*/      0, // EndSwitchType
/* 12002*/    /*Scope*/ 32, /*->12035*/
/* 12003*/      OPC_MoveChild0,
/* 12004*/      OPC_CheckOpcode, TARGET_VAL(ISD::SIGN_EXTEND_INREG),
/* 12007*/      OPC_RecordChild0, // #0 = $rs1
/* 12008*/      OPC_MoveChild1,
/* 12009*/      OPC_CheckValueType, MVT::i32,
/* 12011*/      OPC_MoveParent,
/* 12012*/      OPC_MoveParent,
/* 12013*/      OPC_RecordChild1, // #1 = $shamt
/* 12014*/      OPC_MoveChild1,
/* 12015*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 12018*/      OPC_CheckPredicate, 15, // Predicate_uimm5
/* 12020*/      OPC_CheckType, MVT::i64,
/* 12022*/      OPC_MoveParent,
/* 12023*/      OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 12025*/      OPC_EmitConvertToTarget, 1,
/* 12027*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRAIW), 0,
                    MVT::i64, 2/*#Ops*/, 0, 2,
                // Src: (sra:{ *:[i64] } (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$rs1, i32:{ *:[Other] }), (imm:{ *:[i64] })<<P:Predicate_uimm5>>:$shamt) - Complexity = 10
                // Dst: (SRAIW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_uimm5>>:$shamt)
/* 12035*/    /*Scope*/ 103, /*->12139*/
/* 12036*/      OPC_RecordChild0, // #0 = $rs1
/* 12037*/      OPC_RecordChild1, // #1 = $shamt
/* 12038*/      OPC_Scope, 56, /*->12096*/ // 3 children in Scope
/* 12040*/        OPC_MoveChild1,
/* 12041*/        OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 12044*/        OPC_CheckPredicate, 17, // Predicate_uimmlog2xlen
/* 12046*/        OPC_SwitchType /*2 cases */, 29, MVT::i32,// ->12078
/* 12049*/          OPC_MoveParent,
/* 12050*/          OPC_CheckType, MVT::i32,
/* 12052*/          OPC_Scope, 12, /*->12066*/ // 2 children in Scope
/* 12054*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12056*/            OPC_EmitConvertToTarget, 1,
/* 12058*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRAI), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,
                      // Src: (sra:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_uimmlog2xlen>>:$shamt) - Complexity = 7
                      // Dst: (SRAI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_uimmlog2xlen>>:$shamt)
/* 12066*/          /*Scope*/ 10, /*->12077*/
/* 12067*/            OPC_EmitConvertToTarget, 1,
/* 12069*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRAI), 0,
                          MVT::i32, 2/*#Ops*/, 0, 2,
                      // Src: (sra:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_uimmlog2xlen>>:$shamt) - Complexity = 7
                      // Dst: (SRAI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_uimmlog2xlen>>:$shamt)
/* 12077*/          0, /*End of Scope*/
/* 12078*/        /*SwitchType*/ 15, MVT::i64,// ->12095
/* 12080*/          OPC_MoveParent,
/* 12081*/          OPC_CheckType, MVT::i64,
/* 12083*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 12085*/          OPC_EmitConvertToTarget, 1,
/* 12087*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRAI), 0,
                        MVT::i64, 2/*#Ops*/, 0, 2,
                    // Src: (sra:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_uimmlog2xlen>>:$shamt) - Complexity = 7
                    // Dst: (SRAI:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_uimmlog2xlen>>:$shamt)
/* 12095*/        0, // EndSwitchType
/* 12096*/      /*Scope*/ 26, /*->12123*/
/* 12097*/        OPC_CheckChild1Type, MVT::i32,
/* 12099*/        OPC_CheckType, MVT::i32,
/* 12101*/        OPC_Scope, 10, /*->12113*/ // 2 children in Scope
/* 12103*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12105*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRA), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (sra:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                    // Dst: (SRA:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 12113*/        /*Scope*/ 8, /*->12122*/
/* 12114*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRA), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (sra:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                    // Dst: (SRA:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 12122*/        0, /*End of Scope*/
/* 12123*/      /*Scope*/ 14, /*->12138*/
/* 12124*/        OPC_CheckChild1Type, MVT::i64,
/* 12126*/        OPC_CheckType, MVT::i64,
/* 12128*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 12130*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRA), 0,
                      MVT::i64, 2/*#Ops*/, 0, 1,
                  // Src: (sra:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                  // Dst: (SRA:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 12138*/      0, /*End of Scope*/
/* 12139*/    0, /*End of Scope*/
/* 12140*/  /*SwitchOpcode*/ 114, TARGET_VAL(ISD::BRIND),// ->12257
/* 12143*/    OPC_RecordNode, // #0 = 'brind' chained node
/* 12144*/    OPC_Scope, 59, /*->12205*/ // 2 children in Scope
/* 12146*/      OPC_MoveChild1,
/* 12147*/      OPC_CheckOpcode, TARGET_VAL(ISD::ADD),
/* 12150*/      OPC_RecordChild0, // #1 = $rs1
/* 12151*/      OPC_RecordChild1, // #2 = $imm12
/* 12152*/      OPC_MoveChild1,
/* 12153*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 12156*/      OPC_CheckPredicate, 1, // Predicate_simm12
/* 12158*/      OPC_MoveParent,
/* 12159*/      OPC_SwitchType /*2 cases */, 27, MVT::i32,// ->12189
/* 12162*/        OPC_MoveParent,
/* 12163*/        OPC_Scope, 12, /*->12177*/ // 2 children in Scope
/* 12165*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12167*/          OPC_EmitMergeInputChains1_0,
/* 12168*/          OPC_EmitConvertToTarget, 2,
/* 12170*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoBRIND), 0|OPFL_Chain,
                        2/*#Ops*/, 1, 3,
                    // Src: (brind (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)) - Complexity = 10
                    // Dst: (PseudoBRIND GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/* 12177*/        /*Scope*/ 10, /*->12188*/
/* 12178*/          OPC_EmitMergeInputChains1_0,
/* 12179*/          OPC_EmitConvertToTarget, 2,
/* 12181*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoBRIND), 0|OPFL_Chain,
                        2/*#Ops*/, 1, 3,
                    // Src: (brind (add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)) - Complexity = 10
                    // Dst: (PseudoBRIND GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/* 12188*/        0, /*End of Scope*/
/* 12189*/      /*SwitchType*/ 13, MVT::i64,// ->12204
/* 12191*/        OPC_MoveParent,
/* 12192*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 12194*/        OPC_EmitMergeInputChains1_0,
/* 12195*/        OPC_EmitConvertToTarget, 2,
/* 12197*/        OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoBRIND), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 3,
                  // Src: (brind (add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)) - Complexity = 10
                  // Dst: (PseudoBRIND GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/* 12204*/      0, // EndSwitchType
/* 12205*/    /*Scope*/ 50, /*->12256*/
/* 12206*/      OPC_RecordChild1, // #1 = $rs1
/* 12207*/      OPC_Scope, 30, /*->12239*/ // 2 children in Scope
/* 12209*/        OPC_CheckChild1Type, MVT::i32,
/* 12211*/        OPC_Scope, 13, /*->12226*/ // 2 children in Scope
/* 12213*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12215*/          OPC_EmitMergeInputChains1_0,
/* 12216*/          OPC_EmitInteger, MVT::i32, 0,
/* 12219*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoBRIND), 0|OPFL_Chain,
                        2/*#Ops*/, 1, 2,
                    // Src: (brind GPR:{ *:[i32] }:$rs1) - Complexity = 3
                    // Dst: (PseudoBRIND GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/* 12226*/        /*Scope*/ 11, /*->12238*/
/* 12227*/          OPC_EmitMergeInputChains1_0,
/* 12228*/          OPC_EmitInteger, MVT::i32, 0,
/* 12231*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoBRIND), 0|OPFL_Chain,
                        2/*#Ops*/, 1, 2,
                    // Src: (brind GPR:{ *:[i32] }:$rs1) - Complexity = 3
                    // Dst: (PseudoBRIND GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] })
/* 12238*/        0, /*End of Scope*/
/* 12239*/      /*Scope*/ 15, /*->12255*/
/* 12240*/        OPC_CheckChild1Type, MVT::i64,
/* 12242*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 12244*/        OPC_EmitMergeInputChains1_0,
/* 12245*/        OPC_EmitInteger, MVT::i64, 0,
/* 12248*/        OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoBRIND), 0|OPFL_Chain,
                      2/*#Ops*/, 1, 2,
                  // Src: (brind GPR:{ *:[i64] }:$rs1) - Complexity = 3
                  // Dst: (PseudoBRIND GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] })
/* 12255*/      0, /*End of Scope*/
/* 12256*/    0, /*End of Scope*/
/* 12257*/  /*SwitchOpcode*/ 21, TARGET_VAL(ISD::CALLSEQ_START),// ->12281
/* 12260*/    OPC_RecordNode, // #0 = 'callseq_start' chained node
/* 12261*/    OPC_RecordChild1, // #1 = $amt1
/* 12262*/    OPC_MoveChild1,
/* 12263*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 12266*/    OPC_MoveParent,
/* 12267*/    OPC_RecordChild2, // #2 = $amt2
/* 12268*/    OPC_MoveChild2,
/* 12269*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 12272*/    OPC_MoveParent,
/* 12273*/    OPC_EmitMergeInputChains1_0,
/* 12274*/    OPC_MorphNodeTo0, TARGET_VAL(RISCV::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)
/* 12281*/  /*SwitchOpcode*/ 22, TARGET_VAL(ISD::CALLSEQ_END),// ->12306
/* 12284*/    OPC_RecordNode, // #0 = 'callseq_end' chained node
/* 12285*/    OPC_CaptureGlueInput,
/* 12286*/    OPC_RecordChild1, // #1 = $amt1
/* 12287*/    OPC_MoveChild1,
/* 12288*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 12291*/    OPC_MoveParent,
/* 12292*/    OPC_RecordChild2, // #2 = $amt2
/* 12293*/    OPC_MoveChild2,
/* 12294*/    OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
/* 12297*/    OPC_MoveParent,
/* 12298*/    OPC_EmitMergeInputChains1_0,
/* 12299*/    OPC_MorphNodeTo0, TARGET_VAL(RISCV::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)
/* 12306*/  /*SwitchOpcode*/ 58|128,15/*1978*/, TARGET_VAL(ISD::SETCC),// ->14288
/* 12310*/    OPC_RecordChild0, // #0 = $rs1
/* 12311*/    OPC_Scope, 13|128,5/*653*/, /*->12967*/ // 4 children in Scope
/* 12314*/      OPC_CheckChild0Type, MVT::i32,
/* 12316*/      OPC_Scope, 68, /*->12386*/ // 2 children in Scope
/* 12318*/        OPC_CheckChild1Integer, 0,
/* 12320*/        OPC_CheckType, MVT::i32,
/* 12322*/        OPC_Scope, 30, /*->12354*/ // 2 children in Scope
/* 12324*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/* 12326*/          OPC_Scope, 13, /*->12341*/ // 2 children in Scope
/* 12328*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12330*/            OPC_EmitInteger, MVT::i32, 1,
/* 12333*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] }, SETEQ:{ *:[Other] }) - Complexity = 8
                      // Dst: (SLTIU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 1:{ *:[i32] })
/* 12341*/          /*Scope*/ 11, /*->12353*/
/* 12342*/            OPC_EmitInteger, MVT::i32, 1,
/* 12345*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] }, SETEQ:{ *:[Other] }) - Complexity = 8
                      // Dst: (SLTIU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 1:{ *:[i32] })
/* 12353*/          0, /*End of Scope*/
/* 12354*/        /*Scope*/ 30, /*->12385*/
/* 12355*/          OPC_CheckChild2CondCode, ISD::SETNE,
/* 12357*/          OPC_Scope, 13, /*->12372*/ // 2 children in Scope
/* 12359*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12361*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 12364*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTU), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] }, SETNE:{ *:[Other] }) - Complexity = 8
                      // Dst: (SLTU:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$rs1)
/* 12372*/          /*Scope*/ 11, /*->12384*/
/* 12373*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 12376*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTU), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 0:{ *:[i32] }, SETNE:{ *:[Other] }) - Complexity = 8
                      // Dst: (SLTU:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$rs1)
/* 12384*/          0, /*End of Scope*/
/* 12385*/        0, /*End of Scope*/
/* 12386*/      /*Scope*/ 66|128,4/*578*/, /*->12966*/
/* 12388*/        OPC_RecordChild1, // #1 = $imm12
/* 12389*/        OPC_Scope, 43|128,1/*171*/, /*->12563*/ // 11 children in Scope
/* 12392*/          OPC_MoveChild1,
/* 12393*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 12396*/          OPC_CheckPredicate, 1, // Predicate_simm12
/* 12398*/          OPC_MoveParent,
/* 12399*/          OPC_CheckType, MVT::i32,
/* 12401*/          OPC_Scope, 28, /*->12431*/ // 4 children in Scope
/* 12403*/            OPC_CheckChild2CondCode, ISD::SETLT,
/* 12405*/            OPC_Scope, 12, /*->12419*/ // 2 children in Scope
/* 12407*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12409*/              OPC_EmitConvertToTarget, 1,
/* 12411*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTI), 0,
                            MVT::i32, 2/*#Ops*/, 0, 2,
                        // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12, SETLT:{ *:[Other] }) - Complexity = 7
                        // Dst: (SLTI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/* 12419*/            /*Scope*/ 10, /*->12430*/
/* 12420*/              OPC_EmitConvertToTarget, 1,
/* 12422*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTI), 0,
                            MVT::i32, 2/*#Ops*/, 0, 2,
                        // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12, SETLT:{ *:[Other] }) - Complexity = 7
                        // Dst: (SLTI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/* 12430*/            0, /*End of Scope*/
/* 12431*/          /*Scope*/ 28, /*->12460*/
/* 12432*/            OPC_CheckChild2CondCode, ISD::SETULT,
/* 12434*/            OPC_Scope, 12, /*->12448*/ // 2 children in Scope
/* 12436*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12438*/              OPC_EmitConvertToTarget, 1,
/* 12440*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 2,
                        // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12, SETULT:{ *:[Other] }) - Complexity = 7
                        // Dst: (SLTIU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/* 12448*/            /*Scope*/ 10, /*->12459*/
/* 12449*/              OPC_EmitConvertToTarget, 1,
/* 12451*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                            MVT::i32, 2/*#Ops*/, 0, 2,
                        // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12, SETULT:{ *:[Other] }) - Complexity = 7
                        // Dst: (SLTIU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/* 12459*/            0, /*End of Scope*/
/* 12460*/          /*Scope*/ 50, /*->12511*/
/* 12461*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 12463*/            OPC_Scope, 23, /*->12488*/ // 2 children in Scope
/* 12465*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12467*/              OPC_EmitConvertToTarget, 1,
/* 12469*/              OPC_EmitNode1, TARGET_VAL(RISCV::XORI), 0,
                            MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 12477*/              OPC_EmitInteger, MVT::i32, 1,
/* 12480*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12, SETEQ:{ *:[Other] }) - Complexity = 7
                        // Dst: (SLTIU:{ *:[i32] } (XORI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), 1:{ *:[i32] })
/* 12488*/            /*Scope*/ 21, /*->12510*/
/* 12489*/              OPC_EmitConvertToTarget, 1,
/* 12491*/              OPC_EmitNode1, TARGET_VAL(RISCV::XORI), 0,
                            MVT::i32, 2/*#Ops*/, 0, 2,  // Results = #3
/* 12499*/              OPC_EmitInteger, MVT::i32, 1,
/* 12502*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                            MVT::i32, 2/*#Ops*/, 3, 4,
                        // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12, SETEQ:{ *:[Other] }) - Complexity = 7
                        // Dst: (SLTIU:{ *:[i32] } (XORI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12), 1:{ *:[i32] })
/* 12510*/            0, /*End of Scope*/
/* 12511*/          /*Scope*/ 50, /*->12562*/
/* 12512*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 12514*/            OPC_Scope, 23, /*->12539*/ // 2 children in Scope
/* 12516*/              OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12518*/              OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 12521*/              OPC_EmitConvertToTarget, 1,
/* 12523*/              OPC_EmitNode1, TARGET_VAL(RISCV::XORI), 0,
                            MVT::i32, 2/*#Ops*/, 0, 3,  // Results = #4
/* 12531*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTU), 0,
                            MVT::i32, 2/*#Ops*/, 2, 4,
                        // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12, SETNE:{ *:[Other] }) - Complexity = 7
                        // Dst: (SLTU:{ *:[i32] } X0:{ *:[i32] }, (XORI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))
/* 12539*/            /*Scope*/ 21, /*->12561*/
/* 12540*/              OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 12543*/              OPC_EmitConvertToTarget, 1,
/* 12545*/              OPC_EmitNode1, TARGET_VAL(RISCV::XORI), 0,
                            MVT::i32, 2/*#Ops*/, 0, 3,  // Results = #4
/* 12553*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTU), 0,
                            MVT::i32, 2/*#Ops*/, 2, 4,
                        // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12, SETNE:{ *:[Other] }) - Complexity = 7
                        // Dst: (SLTU:{ *:[i32] } X0:{ *:[i32] }, (XORI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12))
/* 12561*/            0, /*End of Scope*/
/* 12562*/          0, /*End of Scope*/
/* 12563*/        /*Scope*/ 26, /*->12590*/
/* 12564*/          OPC_CheckChild2CondCode, ISD::SETLT,
/* 12566*/          OPC_CheckType, MVT::i32,
/* 12568*/          OPC_Scope, 10, /*->12580*/ // 2 children in Scope
/* 12570*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12572*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETLT:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLT:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 12580*/          /*Scope*/ 8, /*->12589*/
/* 12581*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETLT:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLT:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 12589*/          0, /*End of Scope*/
/* 12590*/        /*Scope*/ 26, /*->12617*/
/* 12591*/          OPC_CheckChild2CondCode, ISD::SETULT,
/* 12593*/          OPC_CheckType, MVT::i32,
/* 12595*/          OPC_Scope, 10, /*->12607*/ // 2 children in Scope
/* 12597*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12599*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTU), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETULT:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLTU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 12607*/          /*Scope*/ 8, /*->12616*/
/* 12608*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTU), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETULT:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLTU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 12616*/          0, /*End of Scope*/
/* 12617*/        /*Scope*/ 26, /*->12644*/
/* 12618*/          OPC_CheckChild2CondCode, ISD::SETUGT,
/* 12620*/          OPC_CheckType, MVT::i32,
/* 12622*/          OPC_Scope, 10, /*->12634*/ // 2 children in Scope
/* 12624*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12626*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTU), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETUGT:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLTU:{ *:[i32] } GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1)
/* 12634*/          /*Scope*/ 8, /*->12643*/
/* 12635*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTU), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETUGT:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLTU:{ *:[i32] } GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1)
/* 12643*/          0, /*End of Scope*/
/* 12644*/        /*Scope*/ 26, /*->12671*/
/* 12645*/          OPC_CheckChild2CondCode, ISD::SETGT,
/* 12647*/          OPC_CheckType, MVT::i32,
/* 12649*/          OPC_Scope, 10, /*->12661*/ // 2 children in Scope
/* 12651*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12653*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETGT:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLT:{ *:[i32] } GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1)
/* 12661*/          /*Scope*/ 8, /*->12670*/
/* 12662*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETGT:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLT:{ *:[i32] } GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1)
/* 12670*/          0, /*End of Scope*/
/* 12671*/        /*Scope*/ 48, /*->12720*/
/* 12672*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/* 12674*/          OPC_CheckType, MVT::i32,
/* 12676*/          OPC_Scope, 21, /*->12699*/ // 2 children in Scope
/* 12678*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12680*/            OPC_EmitNode1, TARGET_VAL(RISCV::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 12688*/            OPC_EmitInteger, MVT::i32, 1,
/* 12691*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETEQ:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLTIU:{ *:[i32] } (XOR:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2), 1:{ *:[i32] })
/* 12699*/          /*Scope*/ 19, /*->12719*/
/* 12700*/            OPC_EmitNode1, TARGET_VAL(RISCV::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 12708*/            OPC_EmitInteger, MVT::i32, 1,
/* 12711*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETEQ:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLTIU:{ *:[i32] } (XOR:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2), 1:{ *:[i32] })
/* 12719*/          0, /*End of Scope*/
/* 12720*/        /*Scope*/ 48, /*->12769*/
/* 12721*/          OPC_CheckChild2CondCode, ISD::SETNE,
/* 12723*/          OPC_CheckType, MVT::i32,
/* 12725*/          OPC_Scope, 21, /*->12748*/ // 2 children in Scope
/* 12727*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12729*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 12732*/            OPC_EmitNode1, TARGET_VAL(RISCV::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 12740*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTU), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETNE:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLTU:{ *:[i32] } X0:{ *:[i32] }, (XOR:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2))
/* 12748*/          /*Scope*/ 19, /*->12768*/
/* 12749*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 12752*/            OPC_EmitNode1, TARGET_VAL(RISCV::XOR), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #3
/* 12760*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTU), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETNE:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLTU:{ *:[i32] } X0:{ *:[i32] }, (XOR:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2))
/* 12768*/          0, /*End of Scope*/
/* 12769*/        /*Scope*/ 48, /*->12818*/
/* 12770*/          OPC_CheckChild2CondCode, ISD::SETUGE,
/* 12772*/          OPC_CheckType, MVT::i32,
/* 12774*/          OPC_Scope, 21, /*->12797*/ // 2 children in Scope
/* 12776*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12778*/            OPC_EmitNode1, TARGET_VAL(RISCV::SLTU), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 12786*/            OPC_EmitInteger, MVT::i32, 1,
/* 12789*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::XORI), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETUGE:{ *:[Other] }) - Complexity = 3
                      // Dst: (XORI:{ *:[i32] } (SLTU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2), 1:{ *:[i32] })
/* 12797*/          /*Scope*/ 19, /*->12817*/
/* 12798*/            OPC_EmitNode1, TARGET_VAL(RISCV::SLTU), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 12806*/            OPC_EmitInteger, MVT::i32, 1,
/* 12809*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::XORI), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETUGE:{ *:[Other] }) - Complexity = 3
                      // Dst: (XORI:{ *:[i32] } (SLTU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2), 1:{ *:[i32] })
/* 12817*/          0, /*End of Scope*/
/* 12818*/        /*Scope*/ 48, /*->12867*/
/* 12819*/          OPC_CheckChild2CondCode, ISD::SETULE,
/* 12821*/          OPC_CheckType, MVT::i32,
/* 12823*/          OPC_Scope, 21, /*->12846*/ // 2 children in Scope
/* 12825*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12827*/            OPC_EmitNode1, TARGET_VAL(RISCV::SLTU), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 12835*/            OPC_EmitInteger, MVT::i32, 1,
/* 12838*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::XORI), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETULE:{ *:[Other] }) - Complexity = 3
                      // Dst: (XORI:{ *:[i32] } (SLTU:{ *:[i32] } GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1), 1:{ *:[i32] })
/* 12846*/          /*Scope*/ 19, /*->12866*/
/* 12847*/            OPC_EmitNode1, TARGET_VAL(RISCV::SLTU), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 12855*/            OPC_EmitInteger, MVT::i32, 1,
/* 12858*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::XORI), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETULE:{ *:[Other] }) - Complexity = 3
                      // Dst: (XORI:{ *:[i32] } (SLTU:{ *:[i32] } GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1), 1:{ *:[i32] })
/* 12866*/          0, /*End of Scope*/
/* 12867*/        /*Scope*/ 48, /*->12916*/
/* 12868*/          OPC_CheckChild2CondCode, ISD::SETGE,
/* 12870*/          OPC_CheckType, MVT::i32,
/* 12872*/          OPC_Scope, 21, /*->12895*/ // 2 children in Scope
/* 12874*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12876*/            OPC_EmitNode1, TARGET_VAL(RISCV::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 12884*/            OPC_EmitInteger, MVT::i32, 1,
/* 12887*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::XORI), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETGE:{ *:[Other] }) - Complexity = 3
                      // Dst: (XORI:{ *:[i32] } (SLT:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2), 1:{ *:[i32] })
/* 12895*/          /*Scope*/ 19, /*->12915*/
/* 12896*/            OPC_EmitNode1, TARGET_VAL(RISCV::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,  // Results = #2
/* 12904*/            OPC_EmitInteger, MVT::i32, 1,
/* 12907*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::XORI), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETGE:{ *:[Other] }) - Complexity = 3
                      // Dst: (XORI:{ *:[i32] } (SLT:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2), 1:{ *:[i32] })
/* 12915*/          0, /*End of Scope*/
/* 12916*/        /*Scope*/ 48, /*->12965*/
/* 12917*/          OPC_CheckChild2CondCode, ISD::SETLE,
/* 12919*/          OPC_CheckType, MVT::i32,
/* 12921*/          OPC_Scope, 21, /*->12944*/ // 2 children in Scope
/* 12923*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 12925*/            OPC_EmitNode1, TARGET_VAL(RISCV::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 12933*/            OPC_EmitInteger, MVT::i32, 1,
/* 12936*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::XORI), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETLE:{ *:[Other] }) - Complexity = 3
                      // Dst: (XORI:{ *:[i32] } (SLT:{ *:[i32] } GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1), 1:{ *:[i32] })
/* 12944*/          /*Scope*/ 19, /*->12964*/
/* 12945*/            OPC_EmitNode1, TARGET_VAL(RISCV::SLT), 0,
                          MVT::i32, 2/*#Ops*/, 1, 0,  // Results = #2
/* 12953*/            OPC_EmitInteger, MVT::i32, 1,
/* 12956*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::XORI), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETLE:{ *:[Other] }) - Complexity = 3
                      // Dst: (XORI:{ *:[i32] } (SLT:{ *:[i32] } GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1), 1:{ *:[i32] })
/* 12964*/          0, /*End of Scope*/
/* 12965*/        0, /*End of Scope*/
/* 12966*/      0, /*End of Scope*/
/* 12967*/    /*Scope*/ 102|128,2/*358*/, /*->13327*/
/* 12969*/      OPC_CheckChild0Type, MVT::i64,
/* 12971*/      OPC_Scope, 38, /*->13011*/ // 2 children in Scope
/* 12973*/        OPC_CheckChild1Integer, 0,
/* 12975*/        OPC_CheckType, MVT::i64,
/* 12977*/        OPC_Scope, 15, /*->12994*/ // 2 children in Scope
/* 12979*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/* 12981*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 12983*/          OPC_EmitInteger, MVT::i64, 1,
/* 12986*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] }, SETEQ:{ *:[Other] }) - Complexity = 8
                    // Dst: (SLTIU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 1:{ *:[i64] })
/* 12994*/        /*Scope*/ 15, /*->13010*/
/* 12995*/          OPC_CheckChild2CondCode, ISD::SETNE,
/* 12997*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 12999*/          OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 13002*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTU), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0,
                    // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 0:{ *:[i64] }, SETNE:{ *:[Other] }) - Complexity = 8
                    // Dst: (SLTU:{ *:[i64] } X0:{ *:[i64] }, GPR:{ *:[i64] }:$rs1)
/* 13010*/        0, /*End of Scope*/
/* 13011*/      /*Scope*/ 57|128,2/*313*/, /*->13326*/
/* 13013*/        OPC_RecordChild1, // #1 = $imm12
/* 13014*/        OPC_Scope, 93, /*->13109*/ // 11 children in Scope
/* 13016*/          OPC_MoveChild1,
/* 13017*/          OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 13020*/          OPC_CheckPredicate, 1, // Predicate_simm12
/* 13022*/          OPC_MoveParent,
/* 13023*/          OPC_CheckType, MVT::i64,
/* 13025*/          OPC_Scope, 14, /*->13041*/ // 4 children in Scope
/* 13027*/            OPC_CheckChild2CondCode, ISD::SETLT,
/* 13029*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 13031*/            OPC_EmitConvertToTarget, 1,
/* 13033*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTI), 0,
                          MVT::i64, 2/*#Ops*/, 0, 2,
                      // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12, SETLT:{ *:[Other] }) - Complexity = 7
                      // Dst: (SLTI:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/* 13041*/          /*Scope*/ 14, /*->13056*/
/* 13042*/            OPC_CheckChild2CondCode, ISD::SETULT,
/* 13044*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 13046*/            OPC_EmitConvertToTarget, 1,
/* 13048*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                          MVT::i64, 2/*#Ops*/, 0, 2,
                      // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12, SETULT:{ *:[Other] }) - Complexity = 7
                      // Dst: (SLTIU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/* 13056*/          /*Scope*/ 25, /*->13082*/
/* 13057*/            OPC_CheckChild2CondCode, ISD::SETEQ,
/* 13059*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 13061*/            OPC_EmitConvertToTarget, 1,
/* 13063*/            OPC_EmitNode1, TARGET_VAL(RISCV::XORI), 0,
                          MVT::i64, 2/*#Ops*/, 0, 2,  // Results = #3
/* 13071*/            OPC_EmitInteger, MVT::i64, 1,
/* 13074*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                          MVT::i64, 2/*#Ops*/, 3, 4,
                      // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12, SETEQ:{ *:[Other] }) - Complexity = 7
                      // Dst: (SLTIU:{ *:[i64] } (XORI:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12), 1:{ *:[i64] })
/* 13082*/          /*Scope*/ 25, /*->13108*/
/* 13083*/            OPC_CheckChild2CondCode, ISD::SETNE,
/* 13085*/            OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 13087*/            OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 13090*/            OPC_EmitConvertToTarget, 1,
/* 13092*/            OPC_EmitNode1, TARGET_VAL(RISCV::XORI), 0,
                          MVT::i64, 2/*#Ops*/, 0, 3,  // Results = #4
/* 13100*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTU), 0,
                          MVT::i64, 2/*#Ops*/, 2, 4,
                      // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12, SETNE:{ *:[Other] }) - Complexity = 7
                      // Dst: (SLTU:{ *:[i64] } X0:{ *:[i64] }, (XORI:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12))
/* 13108*/          0, /*End of Scope*/
/* 13109*/        /*Scope*/ 14, /*->13124*/
/* 13110*/          OPC_CheckChild2CondCode, ISD::SETLT,
/* 13112*/          OPC_CheckType, MVT::i64,
/* 13114*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 13116*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLT), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETLT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLT:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 13124*/        /*Scope*/ 14, /*->13139*/
/* 13125*/          OPC_CheckChild2CondCode, ISD::SETULT,
/* 13127*/          OPC_CheckType, MVT::i64,
/* 13129*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 13131*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTU), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETULT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 13139*/        /*Scope*/ 14, /*->13154*/
/* 13140*/          OPC_CheckChild2CondCode, ISD::SETUGT,
/* 13142*/          OPC_CheckType, MVT::i64,
/* 13144*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 13146*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTU), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0,
                    // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETUGT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTU:{ *:[i64] } GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1)
/* 13154*/        /*Scope*/ 14, /*->13169*/
/* 13155*/          OPC_CheckChild2CondCode, ISD::SETGT,
/* 13157*/          OPC_CheckType, MVT::i64,
/* 13159*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 13161*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLT), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0,
                    // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETGT:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLT:{ *:[i64] } GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1)
/* 13169*/        /*Scope*/ 25, /*->13195*/
/* 13170*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/* 13172*/          OPC_CheckType, MVT::i64,
/* 13174*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 13176*/          OPC_EmitNode1, TARGET_VAL(RISCV::XOR), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #2
/* 13184*/          OPC_EmitInteger, MVT::i64, 1,
/* 13187*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETEQ:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTIU:{ *:[i64] } (XOR:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2), 1:{ *:[i64] })
/* 13195*/        /*Scope*/ 25, /*->13221*/
/* 13196*/          OPC_CheckChild2CondCode, ISD::SETNE,
/* 13198*/          OPC_CheckType, MVT::i64,
/* 13200*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 13202*/          OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 13205*/          OPC_EmitNode1, TARGET_VAL(RISCV::XOR), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #3
/* 13213*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTU), 0,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETNE:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTU:{ *:[i64] } X0:{ *:[i64] }, (XOR:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2))
/* 13221*/        /*Scope*/ 25, /*->13247*/
/* 13222*/          OPC_CheckChild2CondCode, ISD::SETUGE,
/* 13224*/          OPC_CheckType, MVT::i64,
/* 13226*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 13228*/          OPC_EmitNode1, TARGET_VAL(RISCV::SLTU), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #2
/* 13236*/          OPC_EmitInteger, MVT::i64, 1,
/* 13239*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::XORI), 0,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETUGE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORI:{ *:[i64] } (SLTU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2), 1:{ *:[i64] })
/* 13247*/        /*Scope*/ 25, /*->13273*/
/* 13248*/          OPC_CheckChild2CondCode, ISD::SETULE,
/* 13250*/          OPC_CheckType, MVT::i64,
/* 13252*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 13254*/          OPC_EmitNode1, TARGET_VAL(RISCV::SLTU), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0,  // Results = #2
/* 13262*/          OPC_EmitInteger, MVT::i64, 1,
/* 13265*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::XORI), 0,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETULE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORI:{ *:[i64] } (SLTU:{ *:[i64] } GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1), 1:{ *:[i64] })
/* 13273*/        /*Scope*/ 25, /*->13299*/
/* 13274*/          OPC_CheckChild2CondCode, ISD::SETGE,
/* 13276*/          OPC_CheckType, MVT::i64,
/* 13278*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 13280*/          OPC_EmitNode1, TARGET_VAL(RISCV::SLT), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,  // Results = #2
/* 13288*/          OPC_EmitInteger, MVT::i64, 1,
/* 13291*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::XORI), 0,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETGE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORI:{ *:[i64] } (SLT:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2), 1:{ *:[i64] })
/* 13299*/        /*Scope*/ 25, /*->13325*/
/* 13300*/          OPC_CheckChild2CondCode, ISD::SETLE,
/* 13302*/          OPC_CheckType, MVT::i64,
/* 13304*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 13306*/          OPC_EmitNode1, TARGET_VAL(RISCV::SLT), 0,
                        MVT::i64, 2/*#Ops*/, 1, 0,  // Results = #2
/* 13314*/          OPC_EmitInteger, MVT::i64, 1,
/* 13317*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::XORI), 0,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETLE:{ *:[Other] }) - Complexity = 3
                    // Dst: (XORI:{ *:[i64] } (SLT:{ *:[i64] } GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1), 1:{ *:[i64] })
/* 13325*/        0, /*End of Scope*/
/* 13326*/      0, /*End of Scope*/
/* 13327*/    /*Scope*/ 94|128,3/*478*/, /*->13807*/
/* 13329*/      OPC_CheckChild0Type, MVT::f32,
/* 13331*/      OPC_RecordChild1, // #1 = $rs2
/* 13332*/      OPC_Scope, 42, /*->13376*/ // 8 children in Scope
/* 13334*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 13336*/        OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->13363
/* 13339*/          OPC_Scope, 10, /*->13351*/ // 2 children in Scope
/* 13341*/            OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 13343*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FEQ_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETEQ:{ *:[Other] }) - Complexity = 3
                      // Dst: (FEQ_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13351*/          /*Scope*/ 10, /*->13362*/
/* 13352*/            OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 13354*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FEQ_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETEQ:{ *:[Other] }) - Complexity = 3
                      // Dst: (FEQ_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13362*/          0, /*End of Scope*/
/* 13363*/        /*SwitchType*/ 10, MVT::i64,// ->13375
/* 13365*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 13367*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FEQ_S), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (setcc:{ *:[i64] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETEQ:{ *:[Other] }) - Complexity = 3
                    // Dst: (FEQ_S:{ *:[i64] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13375*/        0, // EndSwitchType
/* 13376*/      /*Scope*/ 42, /*->13419*/
/* 13377*/        OPC_CheckChild2CondCode, ISD::SETOEQ,
/* 13379*/        OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->13406
/* 13382*/          OPC_Scope, 10, /*->13394*/ // 2 children in Scope
/* 13384*/            OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 13386*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FEQ_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETOEQ:{ *:[Other] }) - Complexity = 3
                      // Dst: (FEQ_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13394*/          /*Scope*/ 10, /*->13405*/
/* 13395*/            OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 13397*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FEQ_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETOEQ:{ *:[Other] }) - Complexity = 3
                      // Dst: (FEQ_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13405*/          0, /*End of Scope*/
/* 13406*/        /*SwitchType*/ 10, MVT::i64,// ->13418
/* 13408*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 13410*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FEQ_S), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (setcc:{ *:[i64] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETOEQ:{ *:[Other] }) - Complexity = 3
                    // Dst: (FEQ_S:{ *:[i64] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13418*/        0, // EndSwitchType
/* 13419*/      /*Scope*/ 42, /*->13462*/
/* 13420*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 13422*/        OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->13449
/* 13425*/          OPC_Scope, 10, /*->13437*/ // 2 children in Scope
/* 13427*/            OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 13429*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLT_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETLT:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLT_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13437*/          /*Scope*/ 10, /*->13448*/
/* 13438*/            OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 13440*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLT_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETLT:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLT_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13448*/          0, /*End of Scope*/
/* 13449*/        /*SwitchType*/ 10, MVT::i64,// ->13461
/* 13451*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 13453*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLT_S), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (setcc:{ *:[i64] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETLT:{ *:[Other] }) - Complexity = 3
                    // Dst: (FLT_S:{ *:[i64] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13461*/        0, // EndSwitchType
/* 13462*/      /*Scope*/ 42, /*->13505*/
/* 13463*/        OPC_CheckChild2CondCode, ISD::SETOLT,
/* 13465*/        OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->13492
/* 13468*/          OPC_Scope, 10, /*->13480*/ // 2 children in Scope
/* 13470*/            OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 13472*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLT_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETOLT:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLT_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13480*/          /*Scope*/ 10, /*->13491*/
/* 13481*/            OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 13483*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLT_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETOLT:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLT_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13491*/          0, /*End of Scope*/
/* 13492*/        /*SwitchType*/ 10, MVT::i64,// ->13504
/* 13494*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 13496*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLT_S), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (setcc:{ *:[i64] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETOLT:{ *:[Other] }) - Complexity = 3
                    // Dst: (FLT_S:{ *:[i64] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13504*/        0, // EndSwitchType
/* 13505*/      /*Scope*/ 42, /*->13548*/
/* 13506*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 13508*/        OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->13535
/* 13511*/          OPC_Scope, 10, /*->13523*/ // 2 children in Scope
/* 13513*/            OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 13515*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLE_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETLE:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLE_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13523*/          /*Scope*/ 10, /*->13534*/
/* 13524*/            OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 13526*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLE_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETLE:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLE_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13534*/          0, /*End of Scope*/
/* 13535*/        /*SwitchType*/ 10, MVT::i64,// ->13547
/* 13537*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 13539*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLE_S), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (setcc:{ *:[i64] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETLE:{ *:[Other] }) - Complexity = 3
                    // Dst: (FLE_S:{ *:[i64] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13547*/        0, // EndSwitchType
/* 13548*/      /*Scope*/ 42, /*->13591*/
/* 13549*/        OPC_CheckChild2CondCode, ISD::SETOLE,
/* 13551*/        OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->13578
/* 13554*/          OPC_Scope, 10, /*->13566*/ // 2 children in Scope
/* 13556*/            OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 13558*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLE_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETOLE:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLE_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13566*/          /*Scope*/ 10, /*->13577*/
/* 13567*/            OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 13569*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLE_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETOLE:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLE_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13577*/          0, /*End of Scope*/
/* 13578*/        /*SwitchType*/ 10, MVT::i64,// ->13590
/* 13580*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 13582*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLE_S), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (setcc:{ *:[i64] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETOLE:{ *:[Other] }) - Complexity = 3
                    // Dst: (FLE_S:{ *:[i64] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 13590*/        0, // EndSwitchType
/* 13591*/      /*Scope*/ 90, /*->13682*/
/* 13592*/        OPC_CheckChild2CondCode, ISD::SETO,
/* 13594*/        OPC_SwitchType /*2 cases */, 56, MVT::i32,// ->13653
/* 13597*/          OPC_Scope, 26, /*->13625*/ // 2 children in Scope
/* 13599*/            OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 13601*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 0,  // Results = #2
/* 13609*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_S), 0,
                          MVT::i32, 2/*#Ops*/, 1, 1,  // Results = #3
/* 13617*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AND), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETO:{ *:[Other] }) - Complexity = 3
                      // Dst: (AND:{ *:[i32] } (FEQ_S:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs1), (FEQ_S:{ *:[i32] } FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs2))
/* 13625*/          /*Scope*/ 26, /*->13652*/
/* 13626*/            OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 13628*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 0,  // Results = #2
/* 13636*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_S), 0,
                          MVT::i32, 2/*#Ops*/, 1, 1,  // Results = #3
/* 13644*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AND), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETO:{ *:[Other] }) - Complexity = 3
                      // Dst: (AND:{ *:[i32] } (FEQ_S:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs1), (FEQ_S:{ *:[i32] } FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs2))
/* 13652*/          0, /*End of Scope*/
/* 13653*/        /*SwitchType*/ 26, MVT::i64,// ->13681
/* 13655*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 13657*/          OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_S), 0,
                        MVT::i64, 2/*#Ops*/, 0, 0,  // Results = #2
/* 13665*/          OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_S), 0,
                        MVT::i64, 2/*#Ops*/, 1, 1,  // Results = #3
/* 13673*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AND), 0,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (setcc:{ *:[i64] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETO:{ *:[Other] }) - Complexity = 3
                    // Dst: (AND:{ *:[i64] } (FEQ_S:{ *:[i64] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs1), (FEQ_S:{ *:[i64] } FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs2))
/* 13681*/        0, // EndSwitchType
/* 13682*/      /*Scope*/ 123, /*->13806*/
/* 13683*/        OPC_CheckChild2CondCode, ISD::SETUO,
/* 13685*/        OPC_SwitchType /*2 cases */, 78, MVT::i32,// ->13766
/* 13688*/          OPC_Scope, 37, /*->13727*/ // 2 children in Scope
/* 13690*/            OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 13692*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 0,  // Results = #2
/* 13700*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_S), 0,
                          MVT::i32, 2/*#Ops*/, 1, 1,  // Results = #3
/* 13708*/            OPC_EmitNode1, TARGET_VAL(RISCV::AND), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 13716*/            OPC_EmitInteger, MVT::i32, 1,
/* 13719*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                          MVT::i32, 2/*#Ops*/, 4, 5,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETUO:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLTIU:{ *:[i32] } (AND:{ *:[i32] } (FEQ_S:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs1), (FEQ_S:{ *:[i32] } FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs2)), 1:{ *:[i32] })
/* 13727*/          /*Scope*/ 37, /*->13765*/
/* 13728*/            OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 13730*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_S), 0,
                          MVT::i32, 2/*#Ops*/, 0, 0,  // Results = #2
/* 13738*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_S), 0,
                          MVT::i32, 2/*#Ops*/, 1, 1,  // Results = #3
/* 13746*/            OPC_EmitNode1, TARGET_VAL(RISCV::AND), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 13754*/            OPC_EmitInteger, MVT::i32, 1,
/* 13757*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                          MVT::i32, 2/*#Ops*/, 4, 5,
                      // Src: (setcc:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETUO:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLTIU:{ *:[i32] } (AND:{ *:[i32] } (FEQ_S:{ *:[i32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs1), (FEQ_S:{ *:[i32] } FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs2)), 1:{ *:[i32] })
/* 13765*/          0, /*End of Scope*/
/* 13766*/        /*SwitchType*/ 37, MVT::i64,// ->13805
/* 13768*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 13770*/          OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_S), 0,
                        MVT::i64, 2/*#Ops*/, 0, 0,  // Results = #2
/* 13778*/          OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_S), 0,
                        MVT::i64, 2/*#Ops*/, 1, 1,  // Results = #3
/* 13786*/          OPC_EmitNode1, TARGET_VAL(RISCV::AND), 0,
                        MVT::i64, 2/*#Ops*/, 2, 3,  // Results = #4
/* 13794*/          OPC_EmitInteger, MVT::i64, 1,
/* 13797*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                        MVT::i64, 2/*#Ops*/, 4, 5,
                    // Src: (setcc:{ *:[i64] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, SETUO:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTIU:{ *:[i64] } (AND:{ *:[i64] } (FEQ_S:{ *:[i64] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs1), (FEQ_S:{ *:[i64] } FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs2)), 1:{ *:[i64] })
/* 13805*/        0, // EndSwitchType
/* 13806*/      0, /*End of Scope*/
/* 13807*/    /*Scope*/ 94|128,3/*478*/, /*->14287*/
/* 13809*/      OPC_CheckChild0Type, MVT::f64,
/* 13811*/      OPC_RecordChild1, // #1 = $rs2
/* 13812*/      OPC_Scope, 42, /*->13856*/ // 8 children in Scope
/* 13814*/        OPC_CheckChild2CondCode, ISD::SETEQ,
/* 13816*/        OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->13843
/* 13819*/          OPC_Scope, 10, /*->13831*/ // 2 children in Scope
/* 13821*/            OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 13823*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FEQ_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETEQ:{ *:[Other] }) - Complexity = 3
                      // Dst: (FEQ_D:{ *:[i32] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 13831*/          /*Scope*/ 10, /*->13842*/
/* 13832*/            OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 13834*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FEQ_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETEQ:{ *:[Other] }) - Complexity = 3
                      // Dst: (FEQ_D:{ *:[i32] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 13842*/          0, /*End of Scope*/
/* 13843*/        /*SwitchType*/ 10, MVT::i64,// ->13855
/* 13845*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 13847*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FEQ_D), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (setcc:{ *:[i64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETEQ:{ *:[Other] }) - Complexity = 3
                    // Dst: (FEQ_D:{ *:[i64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 13855*/        0, // EndSwitchType
/* 13856*/      /*Scope*/ 42, /*->13899*/
/* 13857*/        OPC_CheckChild2CondCode, ISD::SETOEQ,
/* 13859*/        OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->13886
/* 13862*/          OPC_Scope, 10, /*->13874*/ // 2 children in Scope
/* 13864*/            OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 13866*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FEQ_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETOEQ:{ *:[Other] }) - Complexity = 3
                      // Dst: (FEQ_D:{ *:[i32] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 13874*/          /*Scope*/ 10, /*->13885*/
/* 13875*/            OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 13877*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FEQ_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETOEQ:{ *:[Other] }) - Complexity = 3
                      // Dst: (FEQ_D:{ *:[i32] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 13885*/          0, /*End of Scope*/
/* 13886*/        /*SwitchType*/ 10, MVT::i64,// ->13898
/* 13888*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 13890*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FEQ_D), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (setcc:{ *:[i64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETOEQ:{ *:[Other] }) - Complexity = 3
                    // Dst: (FEQ_D:{ *:[i64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 13898*/        0, // EndSwitchType
/* 13899*/      /*Scope*/ 42, /*->13942*/
/* 13900*/        OPC_CheckChild2CondCode, ISD::SETLT,
/* 13902*/        OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->13929
/* 13905*/          OPC_Scope, 10, /*->13917*/ // 2 children in Scope
/* 13907*/            OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 13909*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLT_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETLT:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLT_D:{ *:[i32] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 13917*/          /*Scope*/ 10, /*->13928*/
/* 13918*/            OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 13920*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLT_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETLT:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLT_D:{ *:[i32] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 13928*/          0, /*End of Scope*/
/* 13929*/        /*SwitchType*/ 10, MVT::i64,// ->13941
/* 13931*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 13933*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLT_D), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (setcc:{ *:[i64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETLT:{ *:[Other] }) - Complexity = 3
                    // Dst: (FLT_D:{ *:[i64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 13941*/        0, // EndSwitchType
/* 13942*/      /*Scope*/ 42, /*->13985*/
/* 13943*/        OPC_CheckChild2CondCode, ISD::SETOLT,
/* 13945*/        OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->13972
/* 13948*/          OPC_Scope, 10, /*->13960*/ // 2 children in Scope
/* 13950*/            OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 13952*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLT_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETOLT:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLT_D:{ *:[i32] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 13960*/          /*Scope*/ 10, /*->13971*/
/* 13961*/            OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 13963*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLT_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETOLT:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLT_D:{ *:[i32] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 13971*/          0, /*End of Scope*/
/* 13972*/        /*SwitchType*/ 10, MVT::i64,// ->13984
/* 13974*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 13976*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLT_D), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (setcc:{ *:[i64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETOLT:{ *:[Other] }) - Complexity = 3
                    // Dst: (FLT_D:{ *:[i64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 13984*/        0, // EndSwitchType
/* 13985*/      /*Scope*/ 42, /*->14028*/
/* 13986*/        OPC_CheckChild2CondCode, ISD::SETLE,
/* 13988*/        OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->14015
/* 13991*/          OPC_Scope, 10, /*->14003*/ // 2 children in Scope
/* 13993*/            OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 13995*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLE_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETLE:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLE_D:{ *:[i32] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 14003*/          /*Scope*/ 10, /*->14014*/
/* 14004*/            OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 14006*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLE_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETLE:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLE_D:{ *:[i32] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 14014*/          0, /*End of Scope*/
/* 14015*/        /*SwitchType*/ 10, MVT::i64,// ->14027
/* 14017*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 14019*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLE_D), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (setcc:{ *:[i64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETLE:{ *:[Other] }) - Complexity = 3
                    // Dst: (FLE_D:{ *:[i64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 14027*/        0, // EndSwitchType
/* 14028*/      /*Scope*/ 42, /*->14071*/
/* 14029*/        OPC_CheckChild2CondCode, ISD::SETOLE,
/* 14031*/        OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->14058
/* 14034*/          OPC_Scope, 10, /*->14046*/ // 2 children in Scope
/* 14036*/            OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 14038*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLE_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETOLE:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLE_D:{ *:[i32] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 14046*/          /*Scope*/ 10, /*->14057*/
/* 14047*/            OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 14049*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLE_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 1,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETOLE:{ *:[Other] }) - Complexity = 3
                      // Dst: (FLE_D:{ *:[i32] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 14057*/          0, /*End of Scope*/
/* 14058*/        /*SwitchType*/ 10, MVT::i64,// ->14070
/* 14060*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 14062*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FLE_D), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (setcc:{ *:[i64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETOLE:{ *:[Other] }) - Complexity = 3
                    // Dst: (FLE_D:{ *:[i64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 14070*/        0, // EndSwitchType
/* 14071*/      /*Scope*/ 90, /*->14162*/
/* 14072*/        OPC_CheckChild2CondCode, ISD::SETO,
/* 14074*/        OPC_SwitchType /*2 cases */, 56, MVT::i32,// ->14133
/* 14077*/          OPC_Scope, 26, /*->14105*/ // 2 children in Scope
/* 14079*/            OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 14081*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 0,  // Results = #2
/* 14089*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_D), 0,
                          MVT::i32, 2/*#Ops*/, 1, 1,  // Results = #3
/* 14097*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AND), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETO:{ *:[Other] }) - Complexity = 3
                      // Dst: (AND:{ *:[i32] } (FEQ_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs1), (FEQ_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs2))
/* 14105*/          /*Scope*/ 26, /*->14132*/
/* 14106*/            OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 14108*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 0,  // Results = #2
/* 14116*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_D), 0,
                          MVT::i32, 2/*#Ops*/, 1, 1,  // Results = #3
/* 14124*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AND), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETO:{ *:[Other] }) - Complexity = 3
                      // Dst: (AND:{ *:[i32] } (FEQ_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs1), (FEQ_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs2))
/* 14132*/          0, /*End of Scope*/
/* 14133*/        /*SwitchType*/ 26, MVT::i64,// ->14161
/* 14135*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 14137*/          OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_D), 0,
                        MVT::i64, 2/*#Ops*/, 0, 0,  // Results = #2
/* 14145*/          OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_D), 0,
                        MVT::i64, 2/*#Ops*/, 1, 1,  // Results = #3
/* 14153*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AND), 0,
                        MVT::i64, 2/*#Ops*/, 2, 3,
                    // Src: (setcc:{ *:[i64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETO:{ *:[Other] }) - Complexity = 3
                    // Dst: (AND:{ *:[i64] } (FEQ_D:{ *:[i64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs1), (FEQ_D:{ *:[i64] } FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs2))
/* 14161*/        0, // EndSwitchType
/* 14162*/      /*Scope*/ 123, /*->14286*/
/* 14163*/        OPC_CheckChild2CondCode, ISD::SETUO,
/* 14165*/        OPC_SwitchType /*2 cases */, 78, MVT::i32,// ->14246
/* 14168*/          OPC_Scope, 37, /*->14207*/ // 2 children in Scope
/* 14170*/            OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 14172*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 0,  // Results = #2
/* 14180*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_D), 0,
                          MVT::i32, 2/*#Ops*/, 1, 1,  // Results = #3
/* 14188*/            OPC_EmitNode1, TARGET_VAL(RISCV::AND), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 14196*/            OPC_EmitInteger, MVT::i32, 1,
/* 14199*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                          MVT::i32, 2/*#Ops*/, 4, 5,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETUO:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLTIU:{ *:[i32] } (AND:{ *:[i32] } (FEQ_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs1), (FEQ_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs2)), 1:{ *:[i32] })
/* 14207*/          /*Scope*/ 37, /*->14245*/
/* 14208*/            OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 14210*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_D), 0,
                          MVT::i32, 2/*#Ops*/, 0, 0,  // Results = #2
/* 14218*/            OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_D), 0,
                          MVT::i32, 2/*#Ops*/, 1, 1,  // Results = #3
/* 14226*/            OPC_EmitNode1, TARGET_VAL(RISCV::AND), 0,
                          MVT::i32, 2/*#Ops*/, 2, 3,  // Results = #4
/* 14234*/            OPC_EmitInteger, MVT::i32, 1,
/* 14237*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                          MVT::i32, 2/*#Ops*/, 4, 5,
                      // Src: (setcc:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETUO:{ *:[Other] }) - Complexity = 3
                      // Dst: (SLTIU:{ *:[i32] } (AND:{ *:[i32] } (FEQ_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs1), (FEQ_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs2)), 1:{ *:[i32] })
/* 14245*/          0, /*End of Scope*/
/* 14246*/        /*SwitchType*/ 37, MVT::i64,// ->14285
/* 14248*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 14250*/          OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_D), 0,
                        MVT::i64, 2/*#Ops*/, 0, 0,  // Results = #2
/* 14258*/          OPC_EmitNode1, TARGET_VAL(RISCV::FEQ_D), 0,
                        MVT::i64, 2/*#Ops*/, 1, 1,  // Results = #3
/* 14266*/          OPC_EmitNode1, TARGET_VAL(RISCV::AND), 0,
                        MVT::i64, 2/*#Ops*/, 2, 3,  // Results = #4
/* 14274*/          OPC_EmitInteger, MVT::i64, 1,
/* 14277*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLTIU), 0,
                        MVT::i64, 2/*#Ops*/, 4, 5,
                    // Src: (setcc:{ *:[i64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, SETUO:{ *:[Other] }) - Complexity = 3
                    // Dst: (SLTIU:{ *:[i64] } (AND:{ *:[i64] } (FEQ_D:{ *:[i64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs1), (FEQ_D:{ *:[i64] } FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs2)), 1:{ *:[i64] })
/* 14285*/        0, // EndSwitchType
/* 14286*/      0, /*End of Scope*/
/* 14287*/    0, /*End of Scope*/
/* 14288*/  /*SwitchOpcode*/ 94, TARGET_VAL(ISD::XOR),// ->14385
/* 14291*/    OPC_RecordChild0, // #0 = $rs1
/* 14292*/    OPC_RecordChild1, // #1 = $imm12
/* 14293*/    OPC_Scope, 51, /*->14346*/ // 3 children in Scope
/* 14295*/      OPC_MoveChild1,
/* 14296*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 14299*/      OPC_CheckPredicate, 1, // Predicate_simm12
/* 14301*/      OPC_MoveParent,
/* 14302*/      OPC_SwitchType /*2 cases */, 26, MVT::i32,// ->14331
/* 14305*/        OPC_Scope, 12, /*->14319*/ // 2 children in Scope
/* 14307*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 14309*/          OPC_EmitConvertToTarget, 1,
/* 14311*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::XORI), 0,
                        MVT::i32, 2/*#Ops*/, 0, 2,
                    // Src: (xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12) - Complexity = 7
                    // Dst: (XORI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/* 14319*/        /*Scope*/ 10, /*->14330*/
/* 14320*/          OPC_EmitConvertToTarget, 1,
/* 14322*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::XORI), 0,
                        MVT::i32, 2/*#Ops*/, 0, 2,
                    // Src: (xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12) - Complexity = 7
                    // Dst: (XORI:{ *:[i32] } GPR:{ *:[i32] }:$rs1, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm12)
/* 14330*/        0, /*End of Scope*/
/* 14331*/      /*SwitchType*/ 12, MVT::i64,// ->14345
/* 14333*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 14335*/        OPC_EmitConvertToTarget, 1,
/* 14337*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::XORI), 0,
                      MVT::i64, 2/*#Ops*/, 0, 2,
                  // Src: (xor:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12) - Complexity = 7
                  // Dst: (XORI:{ *:[i64] } GPR:{ *:[i64] }:$rs1, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm12)
/* 14345*/      0, // EndSwitchType
/* 14346*/    /*Scope*/ 24, /*->14371*/
/* 14347*/      OPC_CheckType, MVT::i32,
/* 14349*/      OPC_Scope, 10, /*->14361*/ // 2 children in Scope
/* 14351*/        OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 14353*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::XOR), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (XOR:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 14361*/      /*Scope*/ 8, /*->14370*/
/* 14362*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::XOR), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (XOR:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 14370*/      0, /*End of Scope*/
/* 14371*/    /*Scope*/ 12, /*->14384*/
/* 14372*/      OPC_CheckType, MVT::i64,
/* 14374*/      OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 14376*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::XOR), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (xor:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (XOR:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 14384*/    0, /*End of Scope*/
/* 14385*/  /*SwitchOpcode*/ 17, TARGET_VAL(ISD::AssertSext),// ->14405
/* 14388*/    OPC_MoveChild0,
/* 14389*/    OPC_CheckOpcode, TARGET_VAL(RISCVISD::FMV_X_ANYEXTW_RV64),
/* 14392*/    OPC_RecordChild0, // #0 = $src
/* 14393*/    OPC_MoveParent,
/* 14394*/    OPC_CheckPredicate, 0, // Predicate_assertsexti32
/* 14396*/    OPC_CheckPatternPredicate, 24, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 14398*/    OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_X_W), 0,
                  MVT::i64, 1/*#Ops*/, 0,
              // Src: (assertsext:{ *:[i64] } (riscv_fmv_x_anyextw_rv64:{ *:[i64] } FPR32:{ *:[f32] }:$src))<<P:Predicate_assertsexti32>> - Complexity = 7
              // Dst: (FMV_X_W:{ *:[i64] } FPR32:{ *:[f32] }:$src)
/* 14405*/  /*SwitchOpcode*/ 4|128,5/*644*/, TARGET_VAL(ISD::BRCOND),// ->15053
/* 14409*/    OPC_RecordNode, // #0 = 'brcond' chained node
/* 14410*/    OPC_Scope, 61|128,4/*573*/, /*->14986*/ // 2 children in Scope
/* 14413*/      OPC_MoveChild1,
/* 14414*/      OPC_CheckOpcode, TARGET_VAL(ISD::SETCC),
/* 14417*/      OPC_RecordChild0, // #1 = $rs1
/* 14418*/      OPC_SwitchType /*2 cases */, 89|128,2/*345*/, MVT::i32,// ->14767
/* 14422*/        OPC_CheckChild0Type, MVT::i32,
/* 14424*/        OPC_RecordChild1, // #2 = $rs2
/* 14425*/        OPC_Scope, 33, /*->14460*/ // 10 children in Scope
/* 14427*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/* 14429*/          OPC_MoveParent,
/* 14430*/          OPC_RecordChild2, // #3 = $imm12
/* 14431*/          OPC_MoveChild2,
/* 14432*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14435*/          OPC_MoveParent,
/* 14436*/          OPC_Scope, 11, /*->14449*/ // 2 children in Scope
/* 14438*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 14440*/            OPC_EmitMergeInputChains1_0,
/* 14441*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BEQ), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BEQ GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14449*/          /*Scope*/ 9, /*->14459*/
/* 14450*/            OPC_EmitMergeInputChains1_0,
/* 14451*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BEQ), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BEQ GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14459*/          0, /*End of Scope*/
/* 14460*/        /*Scope*/ 33, /*->14494*/
/* 14461*/          OPC_CheckChild2CondCode, ISD::SETNE,
/* 14463*/          OPC_MoveParent,
/* 14464*/          OPC_RecordChild2, // #3 = $imm12
/* 14465*/          OPC_MoveChild2,
/* 14466*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14469*/          OPC_MoveParent,
/* 14470*/          OPC_Scope, 11, /*->14483*/ // 2 children in Scope
/* 14472*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 14474*/            OPC_EmitMergeInputChains1_0,
/* 14475*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BNE), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BNE GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14483*/          /*Scope*/ 9, /*->14493*/
/* 14484*/            OPC_EmitMergeInputChains1_0,
/* 14485*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BNE), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BNE GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14493*/          0, /*End of Scope*/
/* 14494*/        /*Scope*/ 33, /*->14528*/
/* 14495*/          OPC_CheckChild2CondCode, ISD::SETLT,
/* 14497*/          OPC_MoveParent,
/* 14498*/          OPC_RecordChild2, // #3 = $imm12
/* 14499*/          OPC_MoveChild2,
/* 14500*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14503*/          OPC_MoveParent,
/* 14504*/          OPC_Scope, 11, /*->14517*/ // 2 children in Scope
/* 14506*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 14508*/            OPC_EmitMergeInputChains1_0,
/* 14509*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BLT), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETLT:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BLT GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14517*/          /*Scope*/ 9, /*->14527*/
/* 14518*/            OPC_EmitMergeInputChains1_0,
/* 14519*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BLT), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETLT:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BLT GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14527*/          0, /*End of Scope*/
/* 14528*/        /*Scope*/ 33, /*->14562*/
/* 14529*/          OPC_CheckChild2CondCode, ISD::SETGE,
/* 14531*/          OPC_MoveParent,
/* 14532*/          OPC_RecordChild2, // #3 = $imm12
/* 14533*/          OPC_MoveChild2,
/* 14534*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14537*/          OPC_MoveParent,
/* 14538*/          OPC_Scope, 11, /*->14551*/ // 2 children in Scope
/* 14540*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 14542*/            OPC_EmitMergeInputChains1_0,
/* 14543*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BGE), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BGE GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14551*/          /*Scope*/ 9, /*->14561*/
/* 14552*/            OPC_EmitMergeInputChains1_0,
/* 14553*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BGE), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BGE GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14561*/          0, /*End of Scope*/
/* 14562*/        /*Scope*/ 33, /*->14596*/
/* 14563*/          OPC_CheckChild2CondCode, ISD::SETULT,
/* 14565*/          OPC_MoveParent,
/* 14566*/          OPC_RecordChild2, // #3 = $imm12
/* 14567*/          OPC_MoveChild2,
/* 14568*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14571*/          OPC_MoveParent,
/* 14572*/          OPC_Scope, 11, /*->14585*/ // 2 children in Scope
/* 14574*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 14576*/            OPC_EmitMergeInputChains1_0,
/* 14577*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BLTU), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETULT:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BLTU GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14585*/          /*Scope*/ 9, /*->14595*/
/* 14586*/            OPC_EmitMergeInputChains1_0,
/* 14587*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BLTU), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETULT:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BLTU GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14595*/          0, /*End of Scope*/
/* 14596*/        /*Scope*/ 33, /*->14630*/
/* 14597*/          OPC_CheckChild2CondCode, ISD::SETUGE,
/* 14599*/          OPC_MoveParent,
/* 14600*/          OPC_RecordChild2, // #3 = $imm12
/* 14601*/          OPC_MoveChild2,
/* 14602*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14605*/          OPC_MoveParent,
/* 14606*/          OPC_Scope, 11, /*->14619*/ // 2 children in Scope
/* 14608*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 14610*/            OPC_EmitMergeInputChains1_0,
/* 14611*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BGEU), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETUGE:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BGEU GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14619*/          /*Scope*/ 9, /*->14629*/
/* 14620*/            OPC_EmitMergeInputChains1_0,
/* 14621*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BGEU), 0|OPFL_Chain,
                          3/*#Ops*/, 1, 2, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETUGE:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BGEU GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14629*/          0, /*End of Scope*/
/* 14630*/        /*Scope*/ 33, /*->14664*/
/* 14631*/          OPC_CheckChild2CondCode, ISD::SETGT,
/* 14633*/          OPC_MoveParent,
/* 14634*/          OPC_RecordChild2, // #3 = $imm12
/* 14635*/          OPC_MoveChild2,
/* 14636*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14639*/          OPC_MoveParent,
/* 14640*/          OPC_Scope, 11, /*->14653*/ // 2 children in Scope
/* 14642*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 14644*/            OPC_EmitMergeInputChains1_0,
/* 14645*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BLT), 0|OPFL_Chain,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETGT:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BLT GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (bb:{ *:[Other] }):$imm12)
/* 14653*/          /*Scope*/ 9, /*->14663*/
/* 14654*/            OPC_EmitMergeInputChains1_0,
/* 14655*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BLT), 0|OPFL_Chain,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETGT:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BLT GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (bb:{ *:[Other] }):$imm12)
/* 14663*/          0, /*End of Scope*/
/* 14664*/        /*Scope*/ 33, /*->14698*/
/* 14665*/          OPC_CheckChild2CondCode, ISD::SETLE,
/* 14667*/          OPC_MoveParent,
/* 14668*/          OPC_RecordChild2, // #3 = $imm12
/* 14669*/          OPC_MoveChild2,
/* 14670*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14673*/          OPC_MoveParent,
/* 14674*/          OPC_Scope, 11, /*->14687*/ // 2 children in Scope
/* 14676*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 14678*/            OPC_EmitMergeInputChains1_0,
/* 14679*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BGE), 0|OPFL_Chain,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETLE:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BGE GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (bb:{ *:[Other] }):$imm12)
/* 14687*/          /*Scope*/ 9, /*->14697*/
/* 14688*/            OPC_EmitMergeInputChains1_0,
/* 14689*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BGE), 0|OPFL_Chain,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETLE:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BGE GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (bb:{ *:[Other] }):$imm12)
/* 14697*/          0, /*End of Scope*/
/* 14698*/        /*Scope*/ 33, /*->14732*/
/* 14699*/          OPC_CheckChild2CondCode, ISD::SETUGT,
/* 14701*/          OPC_MoveParent,
/* 14702*/          OPC_RecordChild2, // #3 = $imm12
/* 14703*/          OPC_MoveChild2,
/* 14704*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14707*/          OPC_MoveParent,
/* 14708*/          OPC_Scope, 11, /*->14721*/ // 2 children in Scope
/* 14710*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 14712*/            OPC_EmitMergeInputChains1_0,
/* 14713*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BLTU), 0|OPFL_Chain,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETUGT:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BLTU GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (bb:{ *:[Other] }):$imm12)
/* 14721*/          /*Scope*/ 9, /*->14731*/
/* 14722*/            OPC_EmitMergeInputChains1_0,
/* 14723*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BLTU), 0|OPFL_Chain,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETUGT:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BLTU GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (bb:{ *:[Other] }):$imm12)
/* 14731*/          0, /*End of Scope*/
/* 14732*/        /*Scope*/ 33, /*->14766*/
/* 14733*/          OPC_CheckChild2CondCode, ISD::SETULE,
/* 14735*/          OPC_MoveParent,
/* 14736*/          OPC_RecordChild2, // #3 = $imm12
/* 14737*/          OPC_MoveChild2,
/* 14738*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14741*/          OPC_MoveParent,
/* 14742*/          OPC_Scope, 11, /*->14755*/ // 2 children in Scope
/* 14744*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 14746*/            OPC_EmitMergeInputChains1_0,
/* 14747*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BGEU), 0|OPFL_Chain,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETULE:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BGEU GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (bb:{ *:[Other] }):$imm12)
/* 14755*/          /*Scope*/ 9, /*->14765*/
/* 14756*/            OPC_EmitMergeInputChains1_0,
/* 14757*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::BGEU), 0|OPFL_Chain,
                          3/*#Ops*/, 2, 1, 3,
                      // Src: (brcond (setcc:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2, SETULE:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                      // Dst: (BGEU GPR:{ *:[i32] }:$rs2, GPR:{ *:[i32] }:$rs1, (bb:{ *:[Other] }):$imm12)
/* 14765*/          0, /*End of Scope*/
/* 14766*/        0, /*End of Scope*/
/* 14767*/      /*SwitchType*/ 87|128,1/*215*/, MVT::i64,// ->14985
/* 14770*/        OPC_CheckChild0Type, MVT::i64,
/* 14772*/        OPC_RecordChild1, // #2 = $rs2
/* 14773*/        OPC_Scope, 20, /*->14795*/ // 10 children in Scope
/* 14775*/          OPC_CheckChild2CondCode, ISD::SETEQ,
/* 14777*/          OPC_MoveParent,
/* 14778*/          OPC_RecordChild2, // #3 = $imm12
/* 14779*/          OPC_MoveChild2,
/* 14780*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14783*/          OPC_MoveParent,
/* 14784*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 14786*/          OPC_EmitMergeInputChains1_0,
/* 14787*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::BEQ), 0|OPFL_Chain,
                        3/*#Ops*/, 1, 2, 3,
                    // Src: (brcond (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETEQ:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                    // Dst: (BEQ GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14795*/        /*Scope*/ 20, /*->14816*/
/* 14796*/          OPC_CheckChild2CondCode, ISD::SETNE,
/* 14798*/          OPC_MoveParent,
/* 14799*/          OPC_RecordChild2, // #3 = $imm12
/* 14800*/          OPC_MoveChild2,
/* 14801*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14804*/          OPC_MoveParent,
/* 14805*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 14807*/          OPC_EmitMergeInputChains1_0,
/* 14808*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::BNE), 0|OPFL_Chain,
                        3/*#Ops*/, 1, 2, 3,
                    // Src: (brcond (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETNE:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                    // Dst: (BNE GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14816*/        /*Scope*/ 20, /*->14837*/
/* 14817*/          OPC_CheckChild2CondCode, ISD::SETLT,
/* 14819*/          OPC_MoveParent,
/* 14820*/          OPC_RecordChild2, // #3 = $imm12
/* 14821*/          OPC_MoveChild2,
/* 14822*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14825*/          OPC_MoveParent,
/* 14826*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 14828*/          OPC_EmitMergeInputChains1_0,
/* 14829*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::BLT), 0|OPFL_Chain,
                        3/*#Ops*/, 1, 2, 3,
                    // Src: (brcond (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETLT:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                    // Dst: (BLT GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14837*/        /*Scope*/ 20, /*->14858*/
/* 14838*/          OPC_CheckChild2CondCode, ISD::SETGE,
/* 14840*/          OPC_MoveParent,
/* 14841*/          OPC_RecordChild2, // #3 = $imm12
/* 14842*/          OPC_MoveChild2,
/* 14843*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14846*/          OPC_MoveParent,
/* 14847*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 14849*/          OPC_EmitMergeInputChains1_0,
/* 14850*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::BGE), 0|OPFL_Chain,
                        3/*#Ops*/, 1, 2, 3,
                    // Src: (brcond (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETGE:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                    // Dst: (BGE GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14858*/        /*Scope*/ 20, /*->14879*/
/* 14859*/          OPC_CheckChild2CondCode, ISD::SETULT,
/* 14861*/          OPC_MoveParent,
/* 14862*/          OPC_RecordChild2, // #3 = $imm12
/* 14863*/          OPC_MoveChild2,
/* 14864*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14867*/          OPC_MoveParent,
/* 14868*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 14870*/          OPC_EmitMergeInputChains1_0,
/* 14871*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::BLTU), 0|OPFL_Chain,
                        3/*#Ops*/, 1, 2, 3,
                    // Src: (brcond (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETULT:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                    // Dst: (BLTU GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14879*/        /*Scope*/ 20, /*->14900*/
/* 14880*/          OPC_CheckChild2CondCode, ISD::SETUGE,
/* 14882*/          OPC_MoveParent,
/* 14883*/          OPC_RecordChild2, // #3 = $imm12
/* 14884*/          OPC_MoveChild2,
/* 14885*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14888*/          OPC_MoveParent,
/* 14889*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 14891*/          OPC_EmitMergeInputChains1_0,
/* 14892*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::BGEU), 0|OPFL_Chain,
                        3/*#Ops*/, 1, 2, 3,
                    // Src: (brcond (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETUGE:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                    // Dst: (BGEU GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, simm13_lsb0:{ *:[Other] }:$imm12)
/* 14900*/        /*Scope*/ 20, /*->14921*/
/* 14901*/          OPC_CheckChild2CondCode, ISD::SETGT,
/* 14903*/          OPC_MoveParent,
/* 14904*/          OPC_RecordChild2, // #3 = $imm12
/* 14905*/          OPC_MoveChild2,
/* 14906*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14909*/          OPC_MoveParent,
/* 14910*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 14912*/          OPC_EmitMergeInputChains1_0,
/* 14913*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::BLT), 0|OPFL_Chain,
                        3/*#Ops*/, 2, 1, 3,
                    // Src: (brcond (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETGT:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                    // Dst: (BLT GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, (bb:{ *:[Other] }):$imm12)
/* 14921*/        /*Scope*/ 20, /*->14942*/
/* 14922*/          OPC_CheckChild2CondCode, ISD::SETLE,
/* 14924*/          OPC_MoveParent,
/* 14925*/          OPC_RecordChild2, // #3 = $imm12
/* 14926*/          OPC_MoveChild2,
/* 14927*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14930*/          OPC_MoveParent,
/* 14931*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 14933*/          OPC_EmitMergeInputChains1_0,
/* 14934*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::BGE), 0|OPFL_Chain,
                        3/*#Ops*/, 2, 1, 3,
                    // Src: (brcond (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETLE:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                    // Dst: (BGE GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, (bb:{ *:[Other] }):$imm12)
/* 14942*/        /*Scope*/ 20, /*->14963*/
/* 14943*/          OPC_CheckChild2CondCode, ISD::SETUGT,
/* 14945*/          OPC_MoveParent,
/* 14946*/          OPC_RecordChild2, // #3 = $imm12
/* 14947*/          OPC_MoveChild2,
/* 14948*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14951*/          OPC_MoveParent,
/* 14952*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 14954*/          OPC_EmitMergeInputChains1_0,
/* 14955*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::BLTU), 0|OPFL_Chain,
                        3/*#Ops*/, 2, 1, 3,
                    // Src: (brcond (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETUGT:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                    // Dst: (BLTU GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, (bb:{ *:[Other] }):$imm12)
/* 14963*/        /*Scope*/ 20, /*->14984*/
/* 14964*/          OPC_CheckChild2CondCode, ISD::SETULE,
/* 14966*/          OPC_MoveParent,
/* 14967*/          OPC_RecordChild2, // #3 = $imm12
/* 14968*/          OPC_MoveChild2,
/* 14969*/          OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14972*/          OPC_MoveParent,
/* 14973*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 14975*/          OPC_EmitMergeInputChains1_0,
/* 14976*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::BGEU), 0|OPFL_Chain,
                        3/*#Ops*/, 2, 1, 3,
                    // Src: (brcond (setcc:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2, SETULE:{ *:[Other] }), (bb:{ *:[Other] }):$imm12) - Complexity = 6
                    // Dst: (BGEU GPR:{ *:[i64] }:$rs2, GPR:{ *:[i64] }:$rs1, (bb:{ *:[Other] }):$imm12)
/* 14984*/        0, /*End of Scope*/
/* 14985*/      0, // EndSwitchType
/* 14986*/    /*Scope*/ 65, /*->15052*/
/* 14987*/      OPC_RecordChild1, // #1 = $cond
/* 14988*/      OPC_Scope, 38, /*->15028*/ // 2 children in Scope
/* 14990*/        OPC_CheckChild1Type, MVT::i32,
/* 14992*/        OPC_RecordChild2, // #2 = $imm12
/* 14993*/        OPC_MoveChild2,
/* 14994*/        OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 14997*/        OPC_MoveParent,
/* 14998*/        OPC_Scope, 14, /*->15014*/ // 2 children in Scope
/* 15000*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 15002*/          OPC_EmitMergeInputChains1_0,
/* 15003*/          OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 15006*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::BNE), 0|OPFL_Chain,
                        3/*#Ops*/, 1, 3, 2,
                    // Src: (brcond GPR:{ *:[i32] }:$cond, (bb:{ *:[Other] }):$imm12) - Complexity = 3
                    // Dst: (BNE GPR:{ *:[i32] }:$cond, X0:{ *:[i32] }, (bb:{ *:[Other] }):$imm12)
/* 15014*/        /*Scope*/ 12, /*->15027*/
/* 15015*/          OPC_EmitMergeInputChains1_0,
/* 15016*/          OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 15019*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::BNE), 0|OPFL_Chain,
                        3/*#Ops*/, 1, 3, 2,
                    // Src: (brcond GPR:{ *:[i32] }:$cond, (bb:{ *:[Other] }):$imm12) - Complexity = 3
                    // Dst: (BNE GPR:{ *:[i32] }:$cond, X0:{ *:[i32] }, (bb:{ *:[Other] }):$imm12)
/* 15027*/        0, /*End of Scope*/
/* 15028*/      /*Scope*/ 22, /*->15051*/
/* 15029*/        OPC_CheckChild1Type, MVT::i64,
/* 15031*/        OPC_RecordChild2, // #2 = $imm12
/* 15032*/        OPC_MoveChild2,
/* 15033*/        OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 15036*/        OPC_MoveParent,
/* 15037*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 15039*/        OPC_EmitMergeInputChains1_0,
/* 15040*/        OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 15043*/        OPC_MorphNodeTo0, TARGET_VAL(RISCV::BNE), 0|OPFL_Chain,
                      3/*#Ops*/, 1, 3, 2,
                  // Src: (brcond GPR:{ *:[i64] }:$cond, (bb:{ *:[Other] }):$imm12) - Complexity = 3
                  // Dst: (BNE GPR:{ *:[i64] }:$cond, X0:{ *:[i64] }, (bb:{ *:[Other] }):$imm12)
/* 15051*/      0, /*End of Scope*/
/* 15052*/    0, /*End of Scope*/
/* 15053*/  /*SwitchOpcode*/ 124, TARGET_VAL(RISCVISD::CALL),// ->15180
/* 15056*/    OPC_RecordNode, // #0 = 'riscv_call' chained node
/* 15057*/    OPC_CaptureGlueInput,
/* 15058*/    OPC_RecordChild1, // #1 = $func
/* 15059*/    OPC_Scope, 83, /*->15144*/ // 3 children in Scope
/* 15061*/      OPC_MoveChild1,
/* 15062*/      OPC_SwitchOpcode /*2 cases */, 37, TARGET_VAL(ISD::TargetGlobalAddress),// ->15103
/* 15066*/        OPC_SwitchType /*2 cases */, 21, MVT::i32,// ->15090
/* 15069*/          OPC_MoveParent,
/* 15070*/          OPC_Scope, 9, /*->15081*/ // 2 children in Scope
/* 15072*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 15074*/            OPC_EmitMergeInputChains1_0,
/* 15075*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                          1/*#Ops*/, 1,
                      // Src: (riscv_call (tglobaladdr:{ *:[i32] }):$func) - Complexity = 6
                      // Dst: (PseudoCALL (tglobaladdr:{ *:[i32] }):$func)
/* 15081*/          /*Scope*/ 7, /*->15089*/
/* 15082*/            OPC_EmitMergeInputChains1_0,
/* 15083*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                          1/*#Ops*/, 1,
                      // Src: (riscv_call (tglobaladdr:{ *:[i32] }):$func) - Complexity = 6
                      // Dst: (PseudoCALL (tglobaladdr:{ *:[i32] }):$func)
/* 15089*/          0, /*End of Scope*/
/* 15090*/        /*SwitchType*/ 10, MVT::i64,// ->15102
/* 15092*/          OPC_MoveParent,
/* 15093*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 15095*/          OPC_EmitMergeInputChains1_0,
/* 15096*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                        1/*#Ops*/, 1,
                    // Src: (riscv_call (tglobaladdr:{ *:[i64] }):$func) - Complexity = 6
                    // Dst: (PseudoCALL (tglobaladdr:{ *:[i64] }):$func)
/* 15102*/        0, // EndSwitchType
/* 15103*/      /*SwitchOpcode*/ 37, TARGET_VAL(ISD::TargetExternalSymbol),// ->15143
/* 15106*/        OPC_SwitchType /*2 cases */, 21, MVT::i32,// ->15130
/* 15109*/          OPC_MoveParent,
/* 15110*/          OPC_Scope, 9, /*->15121*/ // 2 children in Scope
/* 15112*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 15114*/            OPC_EmitMergeInputChains1_0,
/* 15115*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                          1/*#Ops*/, 1,
                      // Src: (riscv_call (texternalsym:{ *:[i32] }):$func) - Complexity = 6
                      // Dst: (PseudoCALL (texternalsym:{ *:[i32] }):$func)
/* 15121*/          /*Scope*/ 7, /*->15129*/
/* 15122*/            OPC_EmitMergeInputChains1_0,
/* 15123*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                          1/*#Ops*/, 1,
                      // Src: (riscv_call (texternalsym:{ *:[i32] }):$func) - Complexity = 6
                      // Dst: (PseudoCALL (texternalsym:{ *:[i32] }):$func)
/* 15129*/          0, /*End of Scope*/
/* 15130*/        /*SwitchType*/ 10, MVT::i64,// ->15142
/* 15132*/          OPC_MoveParent,
/* 15133*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 15135*/          OPC_EmitMergeInputChains1_0,
/* 15136*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                        1/*#Ops*/, 1,
                    // Src: (riscv_call (texternalsym:{ *:[i64] }):$func) - Complexity = 6
                    // Dst: (PseudoCALL (texternalsym:{ *:[i64] }):$func)
/* 15142*/        0, // EndSwitchType
/* 15143*/      0, // EndSwitchOpcode
/* 15144*/    /*Scope*/ 22, /*->15167*/
/* 15145*/      OPC_CheckChild1Type, MVT::i32,
/* 15147*/      OPC_Scope, 9, /*->15158*/ // 2 children in Scope
/* 15149*/        OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 15151*/        OPC_EmitMergeInputChains1_0,
/* 15152*/        OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoCALLIndirect), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                      1/*#Ops*/, 1,
                  // Src: (riscv_call GPR:{ *:[i32] }:$rs1) - Complexity = 3
                  // Dst: (PseudoCALLIndirect GPR:{ *:[i32] }:$rs1)
/* 15158*/      /*Scope*/ 7, /*->15166*/
/* 15159*/        OPC_EmitMergeInputChains1_0,
/* 15160*/        OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoCALLIndirect), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                      1/*#Ops*/, 1,
                  // Src: (riscv_call GPR:{ *:[i32] }:$rs1) - Complexity = 3
                  // Dst: (PseudoCALLIndirect GPR:{ *:[i32] }:$rs1)
/* 15166*/      0, /*End of Scope*/
/* 15167*/    /*Scope*/ 11, /*->15179*/
/* 15168*/      OPC_CheckChild1Type, MVT::i64,
/* 15170*/      OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 15172*/      OPC_EmitMergeInputChains1_0,
/* 15173*/      OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoCALLIndirect), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                    1/*#Ops*/, 1,
                // Src: (riscv_call GPR:{ *:[i64] }:$rs1) - Complexity = 3
                // Dst: (PseudoCALLIndirect GPR:{ *:[i64] }:$rs1)
/* 15179*/    0, /*End of Scope*/
/* 15180*/  /*SwitchOpcode*/ 124, TARGET_VAL(RISCVISD::TAIL),// ->15307
/* 15183*/    OPC_RecordNode, // #0 = 'riscv_tail' chained node
/* 15184*/    OPC_CaptureGlueInput,
/* 15185*/    OPC_RecordChild1, // #1 = $dst
/* 15186*/    OPC_Scope, 83, /*->15271*/ // 3 children in Scope
/* 15188*/      OPC_MoveChild1,
/* 15189*/      OPC_SwitchOpcode /*2 cases */, 37, TARGET_VAL(ISD::TargetGlobalAddress),// ->15230
/* 15193*/        OPC_SwitchType /*2 cases */, 21, MVT::i32,// ->15217
/* 15196*/          OPC_MoveParent,
/* 15197*/          OPC_Scope, 9, /*->15208*/ // 2 children in Scope
/* 15199*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 15201*/            OPC_EmitMergeInputChains1_0,
/* 15202*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoTAIL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                          1/*#Ops*/, 1,
                      // Src: (riscv_tail (tglobaladdr:{ *:[i32] }):$dst) - Complexity = 6
                      // Dst: (PseudoTAIL (texternalsym:{ *:[i32] }):$dst)
/* 15208*/          /*Scope*/ 7, /*->15216*/
/* 15209*/            OPC_EmitMergeInputChains1_0,
/* 15210*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoTAIL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                          1/*#Ops*/, 1,
                      // Src: (riscv_tail (tglobaladdr:{ *:[i32] }):$dst) - Complexity = 6
                      // Dst: (PseudoTAIL (texternalsym:{ *:[i32] }):$dst)
/* 15216*/          0, /*End of Scope*/
/* 15217*/        /*SwitchType*/ 10, MVT::i64,// ->15229
/* 15219*/          OPC_MoveParent,
/* 15220*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 15222*/          OPC_EmitMergeInputChains1_0,
/* 15223*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoTAIL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                        1/*#Ops*/, 1,
                    // Src: (riscv_tail (tglobaladdr:{ *:[i64] }):$dst) - Complexity = 6
                    // Dst: (PseudoTAIL (texternalsym:{ *:[i64] }):$dst)
/* 15229*/        0, // EndSwitchType
/* 15230*/      /*SwitchOpcode*/ 37, TARGET_VAL(ISD::TargetExternalSymbol),// ->15270
/* 15233*/        OPC_SwitchType /*2 cases */, 21, MVT::i32,// ->15257
/* 15236*/          OPC_MoveParent,
/* 15237*/          OPC_Scope, 9, /*->15248*/ // 2 children in Scope
/* 15239*/            OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 15241*/            OPC_EmitMergeInputChains1_0,
/* 15242*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoTAIL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                          1/*#Ops*/, 1,
                      // Src: (riscv_tail (texternalsym:{ *:[i32] }):$dst) - Complexity = 6
                      // Dst: (PseudoTAIL (texternalsym:{ *:[i32] }):$dst)
/* 15248*/          /*Scope*/ 7, /*->15256*/
/* 15249*/            OPC_EmitMergeInputChains1_0,
/* 15250*/            OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoTAIL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                          1/*#Ops*/, 1,
                      // Src: (riscv_tail (texternalsym:{ *:[i32] }):$dst) - Complexity = 6
                      // Dst: (PseudoTAIL (texternalsym:{ *:[i32] }):$dst)
/* 15256*/          0, /*End of Scope*/
/* 15257*/        /*SwitchType*/ 10, MVT::i64,// ->15269
/* 15259*/          OPC_MoveParent,
/* 15260*/          OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 15262*/          OPC_EmitMergeInputChains1_0,
/* 15263*/          OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoTAIL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                        1/*#Ops*/, 1,
                    // Src: (riscv_tail (texternalsym:{ *:[i64] }):$dst) - Complexity = 6
                    // Dst: (PseudoTAIL (texternalsym:{ *:[i64] }):$dst)
/* 15269*/        0, // EndSwitchType
/* 15270*/      0, // EndSwitchOpcode
/* 15271*/    /*Scope*/ 22, /*->15294*/
/* 15272*/      OPC_CheckChild1Type, MVT::i32,
/* 15274*/      OPC_Scope, 9, /*->15285*/ // 2 children in Scope
/* 15276*/        OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 15278*/        OPC_EmitMergeInputChains1_0,
/* 15279*/        OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoTAILIndirect), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                      1/*#Ops*/, 1,
                  // Src: (riscv_tail GPRTC:{ *:[i32] }:$rs1) - Complexity = 3
                  // Dst: (PseudoTAILIndirect GPRTC:{ *:[i32] }:$rs1)
/* 15285*/      /*Scope*/ 7, /*->15293*/
/* 15286*/        OPC_EmitMergeInputChains1_0,
/* 15287*/        OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoTAILIndirect), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                      1/*#Ops*/, 1,
                  // Src: (riscv_tail GPRTC:{ *:[i32] }:$rs1) - Complexity = 3
                  // Dst: (PseudoTAILIndirect GPRTC:{ *:[i32] }:$rs1)
/* 15293*/      0, /*End of Scope*/
/* 15294*/    /*Scope*/ 11, /*->15306*/
/* 15295*/      OPC_CheckChild1Type, MVT::i64,
/* 15297*/      OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 15299*/      OPC_EmitMergeInputChains1_0,
/* 15300*/      OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoTAILIndirect), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
                    1/*#Ops*/, 1,
                // Src: (riscv_tail GPRTC:{ *:[i64] }:$rs1) - Complexity = 3
                // Dst: (PseudoTAILIndirect GPRTC:{ *:[i64] }:$rs1)
/* 15306*/    0, /*End of Scope*/
/* 15307*/  /*SwitchOpcode*/ 65|128,1/*193*/, TARGET_VAL(RISCVISD::SELECT_CC),// ->15504
/* 15311*/    OPC_CaptureGlueInput,
/* 15312*/    OPC_RecordChild0, // #0 = $lhs
/* 15313*/    OPC_Scope, 121, /*->15436*/ // 2 children in Scope
/* 15315*/      OPC_CheckChild0Type, MVT::i32,
/* 15317*/      OPC_RecordChild1, // #1 = $rhs
/* 15318*/      OPC_RecordChild2, // #2 = $imm
/* 15319*/      OPC_MoveChild2,
/* 15320*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 15323*/      OPC_CheckType, MVT::i32,
/* 15325*/      OPC_MoveParent,
/* 15326*/      OPC_RecordChild3, // #3 = $truev
/* 15327*/      OPC_RecordChild4, // #4 = $falsev
/* 15328*/      OPC_SwitchType /*3 cases */, 32, MVT::i32,// ->15363
/* 15331*/        OPC_Scope, 15, /*->15348*/ // 2 children in Scope
/* 15333*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 15335*/          OPC_EmitConvertToTarget, 2,
/* 15337*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::Select_GPR_Using_CC_GPR), 0|OPFL_GlueInput,
                        MVT::i32, 5/*#Ops*/, 0, 1, 5, 3, 4,
                    // Src: (riscv_selectcc:{ *:[i32] } GPR:{ *:[i32] }:$lhs, GPR:{ *:[i32] }:$rhs, (imm:{ *:[i32] }):$imm, GPR:{ *:[i32] }:$truev, GPR:{ *:[i32] }:$falsev) - Complexity = 6
                    // Dst: (Select_GPR_Using_CC_GPR:{ *:[i32] } GPR:{ *:[i32] }:$lhs, GPR:{ *:[i32] }:$rhs, (imm:{ *:[i32] }):$imm, GPR:{ *:[i32] }:$truev, GPR:{ *:[i32] }:$falsev)
/* 15348*/        /*Scope*/ 13, /*->15362*/
/* 15349*/          OPC_EmitConvertToTarget, 2,
/* 15351*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::Select_GPR_Using_CC_GPR), 0|OPFL_GlueInput,
                        MVT::i32, 5/*#Ops*/, 0, 1, 5, 3, 4,
                    // Src: (riscv_selectcc:{ *:[i32] } GPR:{ *:[i32] }:$lhs, GPR:{ *:[i32] }:$rhs, (imm:{ *:[i32] }):$imm, GPR:{ *:[i32] }:$truev, GPR:{ *:[i32] }:$falsev) - Complexity = 6
                    // Dst: (Select_GPR_Using_CC_GPR:{ *:[i32] } GPR:{ *:[i32] }:$lhs, GPR:{ *:[i32] }:$rhs, (imm:{ *:[i32] }):$imm, GPR:{ *:[i32] }:$truev, GPR:{ *:[i32] }:$falsev)
/* 15362*/        0, /*End of Scope*/
/* 15363*/      /*SwitchType*/ 34, MVT::f32,// ->15399
/* 15365*/        OPC_Scope, 15, /*->15382*/ // 2 children in Scope
/* 15367*/          OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 15369*/          OPC_EmitConvertToTarget, 2,
/* 15371*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::Select_FPR32_Using_CC_GPR), 0|OPFL_GlueInput,
                        MVT::f32, 5/*#Ops*/, 0, 1, 5, 3, 4,
                    // Src: (riscv_selectcc:{ *:[f32] } GPR:{ *:[i32] }:$lhs, GPR:{ *:[i32] }:$rhs, (imm:{ *:[i32] }):$imm, FPR32:{ *:[f32] }:$truev, FPR32:{ *:[f32] }:$falsev) - Complexity = 6
                    // Dst: (Select_FPR32_Using_CC_GPR:{ *:[f32] } GPR:{ *:[i32] }:$lhs, GPR:{ *:[i32] }:$rhs, (imm:{ *:[i32] }):$imm, FPR32:{ *:[f32] }:$truev, FPR32:{ *:[f32] }:$falsev)
/* 15382*/        /*Scope*/ 15, /*->15398*/
/* 15383*/          OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 15385*/          OPC_EmitConvertToTarget, 2,
/* 15387*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::Select_FPR32_Using_CC_GPR), 0|OPFL_GlueInput,
                        MVT::f32, 5/*#Ops*/, 0, 1, 5, 3, 4,
                    // Src: (riscv_selectcc:{ *:[f32] } GPR:{ *:[i32] }:$lhs, GPR:{ *:[i32] }:$rhs, (imm:{ *:[i32] }):$imm, FPR32:{ *:[f32] }:$truev, FPR32:{ *:[f32] }:$falsev) - Complexity = 6
                    // Dst: (Select_FPR32_Using_CC_GPR:{ *:[f32] } GPR:{ *:[i32] }:$lhs, GPR:{ *:[i32] }:$rhs, (imm:{ *:[i32] }):$imm, FPR32:{ *:[f32] }:$truev, FPR32:{ *:[f32] }:$falsev)
/* 15398*/        0, /*End of Scope*/
/* 15399*/      /*SwitchType*/ 34, MVT::f64,// ->15435
/* 15401*/        OPC_Scope, 15, /*->15418*/ // 2 children in Scope
/* 15403*/          OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 15405*/          OPC_EmitConvertToTarget, 2,
/* 15407*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::Select_FPR64_Using_CC_GPR), 0|OPFL_GlueInput,
                        MVT::f64, 5/*#Ops*/, 0, 1, 5, 3, 4,
                    // Src: (riscv_selectcc:{ *:[f64] } GPR:{ *:[i32] }:$lhs, GPR:{ *:[i32] }:$rhs, (imm:{ *:[i32] }):$imm, FPR64:{ *:[f64] }:$truev, FPR64:{ *:[f64] }:$falsev) - Complexity = 6
                    // Dst: (Select_FPR64_Using_CC_GPR:{ *:[f64] } GPR:{ *:[i32] }:$lhs, GPR:{ *:[i32] }:$rhs, (imm:{ *:[i32] }):$imm, FPR64:{ *:[f64] }:$truev, FPR64:{ *:[f64] }:$falsev)
/* 15418*/        /*Scope*/ 15, /*->15434*/
/* 15419*/          OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 15421*/          OPC_EmitConvertToTarget, 2,
/* 15423*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::Select_FPR64_Using_CC_GPR), 0|OPFL_GlueInput,
                        MVT::f64, 5/*#Ops*/, 0, 1, 5, 3, 4,
                    // Src: (riscv_selectcc:{ *:[f64] } GPR:{ *:[i32] }:$lhs, GPR:{ *:[i32] }:$rhs, (imm:{ *:[i32] }):$imm, FPR64:{ *:[f64] }:$truev, FPR64:{ *:[f64] }:$falsev) - Complexity = 6
                    // Dst: (Select_FPR64_Using_CC_GPR:{ *:[f64] } GPR:{ *:[i32] }:$lhs, GPR:{ *:[i32] }:$rhs, (imm:{ *:[i32] }):$imm, FPR64:{ *:[f64] }:$truev, FPR64:{ *:[f64] }:$falsev)
/* 15434*/        0, /*End of Scope*/
/* 15435*/      0, // EndSwitchType
/* 15436*/    /*Scope*/ 66, /*->15503*/
/* 15437*/      OPC_CheckChild0Type, MVT::i64,
/* 15439*/      OPC_RecordChild1, // #1 = $rhs
/* 15440*/      OPC_RecordChild2, // #2 = $imm
/* 15441*/      OPC_MoveChild2,
/* 15442*/      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
/* 15445*/      OPC_CheckType, MVT::i64,
/* 15447*/      OPC_MoveParent,
/* 15448*/      OPC_RecordChild3, // #3 = $truev
/* 15449*/      OPC_RecordChild4, // #4 = $falsev
/* 15450*/      OPC_SwitchType /*3 cases */, 15, MVT::i64,// ->15468
/* 15453*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 15455*/        OPC_EmitConvertToTarget, 2,
/* 15457*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::Select_GPR_Using_CC_GPR), 0|OPFL_GlueInput,
                      MVT::i64, 5/*#Ops*/, 0, 1, 5, 3, 4,
                  // Src: (riscv_selectcc:{ *:[i64] } GPR:{ *:[i64] }:$lhs, GPR:{ *:[i64] }:$rhs, (imm:{ *:[i64] }):$imm, GPR:{ *:[i64] }:$truev, GPR:{ *:[i64] }:$falsev) - Complexity = 6
                  // Dst: (Select_GPR_Using_CC_GPR:{ *:[i64] } GPR:{ *:[i64] }:$lhs, GPR:{ *:[i64] }:$rhs, (imm:{ *:[i64] }):$imm, GPR:{ *:[i64] }:$truev, GPR:{ *:[i64] }:$falsev)
/* 15468*/      /*SwitchType*/ 15, MVT::f32,// ->15485
/* 15470*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 15472*/        OPC_EmitConvertToTarget, 2,
/* 15474*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::Select_FPR32_Using_CC_GPR), 0|OPFL_GlueInput,
                      MVT::f32, 5/*#Ops*/, 0, 1, 5, 3, 4,
                  // Src: (riscv_selectcc:{ *:[f32] } GPR:{ *:[i64] }:$lhs, GPR:{ *:[i64] }:$rhs, (imm:{ *:[i64] }):$imm, FPR32:{ *:[f32] }:$truev, FPR32:{ *:[f32] }:$falsev) - Complexity = 6
                  // Dst: (Select_FPR32_Using_CC_GPR:{ *:[f32] } GPR:{ *:[i64] }:$lhs, GPR:{ *:[i64] }:$rhs, (imm:{ *:[i64] }):$imm, FPR32:{ *:[f32] }:$truev, FPR32:{ *:[f32] }:$falsev)
/* 15485*/      /*SwitchType*/ 15, MVT::f64,// ->15502
/* 15487*/        OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 15489*/        OPC_EmitConvertToTarget, 2,
/* 15491*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::Select_FPR64_Using_CC_GPR), 0|OPFL_GlueInput,
                      MVT::f64, 5/*#Ops*/, 0, 1, 5, 3, 4,
                  // Src: (riscv_selectcc:{ *:[f64] } GPR:{ *:[i64] }:$lhs, GPR:{ *:[i64] }:$rhs, (imm:{ *:[i64] }):$imm, FPR64:{ *:[f64] }:$truev, FPR64:{ *:[f64] }:$falsev) - Complexity = 6
                  // Dst: (Select_FPR64_Using_CC_GPR:{ *:[f64] } GPR:{ *:[i64] }:$lhs, GPR:{ *:[i64] }:$rhs, (imm:{ *:[i64] }):$imm, FPR64:{ *:[f64] }:$truev, FPR64:{ *:[f64] }:$falsev)
/* 15502*/      0, // EndSwitchType
/* 15503*/    0, /*End of Scope*/
/* 15504*/  /*SwitchOpcode*/ 78|128,1/*206*/, TARGET_VAL(ISD::Constant),// ->15714
/* 15508*/    OPC_RecordNode, // #0 = $imm
/* 15509*/    OPC_Scope, 55, /*->15566*/ // 3 children in Scope
/* 15511*/      OPC_CheckPredicate, 1, // Predicate_simm12
/* 15513*/      OPC_SwitchType /*2 cases */, 32, MVT::i32,// ->15548
/* 15516*/        OPC_Scope, 15, /*->15533*/ // 2 children in Scope
/* 15518*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 15520*/          OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 15523*/          OPC_EmitConvertToTarget, 0,
/* 15525*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDI), 0,
                        MVT::i32, 2/*#Ops*/, 1, 2,
                    // Src: (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm - Complexity = 4
                    // Dst: (ADDI:{ *:[i32] } X0:{ *:[i32] }, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm)
/* 15533*/        /*Scope*/ 13, /*->15547*/
/* 15534*/          OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 15537*/          OPC_EmitConvertToTarget, 0,
/* 15539*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDI), 0,
                        MVT::i32, 2/*#Ops*/, 1, 2,
                    // Src: (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm - Complexity = 4
                    // Dst: (ADDI:{ *:[i32] } X0:{ *:[i32] }, (imm:{ *:[i32] })<<P:Predicate_simm12>>:$imm)
/* 15547*/        0, /*End of Scope*/
/* 15548*/      /*SwitchType*/ 15, MVT::i64,// ->15565
/* 15550*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 15552*/        OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 15555*/        OPC_EmitConvertToTarget, 0,
/* 15557*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDI), 0,
                      MVT::i64, 2/*#Ops*/, 1, 2,
                  // Src: (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm - Complexity = 4
                  // Dst: (ADDI:{ *:[i64] } X0:{ *:[i64] }, (imm:{ *:[i64] })<<P:Predicate_simm12>>:$imm)
/* 15565*/      0, // EndSwitchType
/* 15566*/    /*Scope*/ 52, /*->15619*/
/* 15567*/      OPC_CheckPredicate, 18, // Predicate_simm32hi20
/* 15569*/      OPC_SwitchType /*2 cases */, 30, MVT::i32,// ->15602
/* 15572*/        OPC_Scope, 14, /*->15588*/ // 2 children in Scope
/* 15574*/          OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 15576*/          OPC_EmitConvertToTarget, 0,
/* 15578*/          OPC_EmitNodeXForm, 0, 1, // HI20
/* 15581*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LUI), 0,
                        MVT::i32, 1/*#Ops*/, 2,
                    // Src: (imm:{ *:[i32] })<<P:Predicate_simm32hi20>>:$imm - Complexity = 4
                    // Dst: (LUI:{ *:[i32] } (HI20:{ *:[i32] } (imm:{ *:[i32] }):$imm))
/* 15588*/        /*Scope*/ 12, /*->15601*/
/* 15589*/          OPC_EmitConvertToTarget, 0,
/* 15591*/          OPC_EmitNodeXForm, 0, 1, // HI20
/* 15594*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::LUI), 0,
                        MVT::i32, 1/*#Ops*/, 2,
                    // Src: (imm:{ *:[i32] })<<P:Predicate_simm32hi20>>:$imm - Complexity = 4
                    // Dst: (LUI:{ *:[i32] } (HI20:{ *:[i32] } (imm:{ *:[i32] }):$imm))
/* 15601*/        0, /*End of Scope*/
/* 15602*/      /*SwitchType*/ 14, MVT::i64,// ->15618
/* 15604*/        OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 15606*/        OPC_EmitConvertToTarget, 0,
/* 15608*/        OPC_EmitNodeXForm, 0, 1, // HI20
/* 15611*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::LUI), 0,
                      MVT::i64, 1/*#Ops*/, 2,
                  // Src: (imm:{ *:[i64] })<<P:Predicate_simm32hi20>>:$imm - Complexity = 4
                  // Dst: (LUI:{ *:[i64] } (HI20:{ *:[i64] } (imm:{ *:[i64] }):$imm))
/* 15618*/      0, // EndSwitchType
/* 15619*/    /*Scope*/ 93, /*->15713*/
/* 15620*/      OPC_CheckPredicate, 19, // Predicate_simm32
/* 15622*/      OPC_SwitchType /*2 cases */, 58, MVT::i32,// ->15683
/* 15625*/        OPC_Scope, 27, /*->15654*/ // 2 children in Scope
/* 15627*/          OPC_CheckPatternPredicate, 8, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 15629*/          OPC_EmitConvertToTarget, 0,
/* 15631*/          OPC_EmitNodeXForm, 0, 1, // HI20
/* 15634*/          OPC_EmitNode1, TARGET_VAL(RISCV::LUI), 0,
                        MVT::i32, 1/*#Ops*/, 2,  // Results = #3
/* 15641*/          OPC_EmitConvertToTarget, 0,
/* 15643*/          OPC_EmitNodeXForm, 1, 4, // LO12Sext
/* 15646*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDI), 0,
                        MVT::i32, 2/*#Ops*/, 3, 5,
                    // Src: (imm:{ *:[i32] })<<P:Predicate_simm32>>:$imm - Complexity = 4
                    // Dst: (ADDI:{ *:[i32] } (LUI:{ *:[i32] } (HI20:{ *:[i32] } (imm:{ *:[i32] }):$imm)), (LO12Sext:{ *:[i32] } (imm:{ *:[i32] }):$imm))
/* 15654*/        /*Scope*/ 27, /*->15682*/
/* 15655*/          OPC_CheckPatternPredicate, 9, // (!Subtarget->is64Bit())
/* 15657*/          OPC_EmitConvertToTarget, 0,
/* 15659*/          OPC_EmitNodeXForm, 0, 1, // HI20
/* 15662*/          OPC_EmitNode1, TARGET_VAL(RISCV::LUI), 0,
                        MVT::i32, 1/*#Ops*/, 2,  // Results = #3
/* 15669*/          OPC_EmitConvertToTarget, 0,
/* 15671*/          OPC_EmitNodeXForm, 1, 4, // LO12Sext
/* 15674*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDI), 0,
                        MVT::i32, 2/*#Ops*/, 3, 5,
                    // Src: (imm:{ *:[i32] })<<P:Predicate_simm32>>:$imm - Complexity = 4
                    // Dst: (ADDI:{ *:[i32] } (LUI:{ *:[i32] } (HI20:{ *:[i32] } (imm:{ *:[i32] }):$imm)), (LO12Sext:{ *:[i32] } (imm:{ *:[i32] }):$imm))
/* 15682*/        0, /*End of Scope*/
/* 15683*/      /*SwitchType*/ 27, MVT::i64,// ->15712
/* 15685*/        OPC_CheckPatternPredicate, 10, // (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 15687*/        OPC_EmitConvertToTarget, 0,
/* 15689*/        OPC_EmitNodeXForm, 0, 1, // HI20
/* 15692*/        OPC_EmitNode1, TARGET_VAL(RISCV::LUI), 0,
                      MVT::i64, 1/*#Ops*/, 2,  // Results = #3
/* 15699*/        OPC_EmitConvertToTarget, 0,
/* 15701*/        OPC_EmitNodeXForm, 1, 4, // LO12Sext
/* 15704*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::ADDI), 0,
                      MVT::i64, 2/*#Ops*/, 3, 5,
                  // Src: (imm:{ *:[i64] })<<P:Predicate_simm32>>:$imm - Complexity = 4
                  // Dst: (ADDI:{ *:[i64] } (LUI:{ *:[i64] } (HI20:{ *:[i64] } (imm:{ *:[i64] }):$imm)), (LO12Sext:{ *:[i64] } (imm:{ *:[i64] }):$imm))
/* 15712*/      0, // EndSwitchType
/* 15713*/    0, /*End of Scope*/
/* 15714*/  /*SwitchOpcode*/ 89|128,3/*473*/, TARGET_VAL(ISD::ATOMIC_SWAP),// ->16191
/* 15718*/    OPC_RecordMemRef,
/* 15719*/    OPC_RecordNode, // #0 = 'atomic_swap' chained node
/* 15720*/    OPC_RecordChild1, // #1 = $rs1
/* 15721*/    OPC_SwitchType /*2 cases */, 51|128,2/*307*/, MVT::i32,// ->16032
/* 15725*/      OPC_CheckChild1Type, MVT::i32,
/* 15727*/      OPC_RecordChild2, // #2 = $rs2
/* 15728*/      OPC_Scope, 21|128,1/*149*/, /*->15880*/ // 2 children in Scope
/* 15731*/        OPC_CheckPredicate, 10, // Predicate_atomic_swap_32
/* 15733*/        OPC_Scope, 28, /*->15763*/ // 5 children in Scope
/* 15735*/          OPC_CheckPredicate, 20, // Predicate_atomic_swap_32_monotonic
/* 15737*/          OPC_Scope, 11, /*->15750*/ // 2 children in Scope
/* 15739*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 15741*/            OPC_EmitMergeInputChains1_0,
/* 15742*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_32>><<P:Predicate_atomic_swap_32_monotonic>> - Complexity = 4
                      // Dst: (AMOSWAP_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15750*/          /*Scope*/ 11, /*->15762*/
/* 15751*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 15753*/            OPC_EmitMergeInputChains1_0,
/* 15754*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_32>><<P:Predicate_atomic_swap_32_monotonic>> - Complexity = 4
                      // Dst: (AMOSWAP_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15762*/          0, /*End of Scope*/
/* 15763*/        /*Scope*/ 28, /*->15792*/
/* 15764*/          OPC_CheckPredicate, 21, // Predicate_atomic_swap_32_acquire
/* 15766*/          OPC_Scope, 11, /*->15779*/ // 2 children in Scope
/* 15768*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 15770*/            OPC_EmitMergeInputChains1_0,
/* 15771*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_32>><<P:Predicate_atomic_swap_32_acquire>> - Complexity = 4
                      // Dst: (AMOSWAP_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15779*/          /*Scope*/ 11, /*->15791*/
/* 15780*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 15782*/            OPC_EmitMergeInputChains1_0,
/* 15783*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_32>><<P:Predicate_atomic_swap_32_acquire>> - Complexity = 4
                      // Dst: (AMOSWAP_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15791*/          0, /*End of Scope*/
/* 15792*/        /*Scope*/ 28, /*->15821*/
/* 15793*/          OPC_CheckPredicate, 22, // Predicate_atomic_swap_32_release
/* 15795*/          OPC_Scope, 11, /*->15808*/ // 2 children in Scope
/* 15797*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 15799*/            OPC_EmitMergeInputChains1_0,
/* 15800*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_32>><<P:Predicate_atomic_swap_32_release>> - Complexity = 4
                      // Dst: (AMOSWAP_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15808*/          /*Scope*/ 11, /*->15820*/
/* 15809*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 15811*/            OPC_EmitMergeInputChains1_0,
/* 15812*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_32>><<P:Predicate_atomic_swap_32_release>> - Complexity = 4
                      // Dst: (AMOSWAP_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15820*/          0, /*End of Scope*/
/* 15821*/        /*Scope*/ 28, /*->15850*/
/* 15822*/          OPC_CheckPredicate, 23, // Predicate_atomic_swap_32_acq_rel
/* 15824*/          OPC_Scope, 11, /*->15837*/ // 2 children in Scope
/* 15826*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 15828*/            OPC_EmitMergeInputChains1_0,
/* 15829*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_32>><<P:Predicate_atomic_swap_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOSWAP_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15837*/          /*Scope*/ 11, /*->15849*/
/* 15838*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 15840*/            OPC_EmitMergeInputChains1_0,
/* 15841*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_32>><<P:Predicate_atomic_swap_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOSWAP_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15849*/          0, /*End of Scope*/
/* 15850*/        /*Scope*/ 28, /*->15879*/
/* 15851*/          OPC_CheckPredicate, 24, // Predicate_atomic_swap_32_seq_cst
/* 15853*/          OPC_Scope, 11, /*->15866*/ // 2 children in Scope
/* 15855*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 15857*/            OPC_EmitMergeInputChains1_0,
/* 15858*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_32>><<P:Predicate_atomic_swap_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOSWAP_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15866*/          /*Scope*/ 11, /*->15878*/
/* 15867*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 15869*/            OPC_EmitMergeInputChains1_0,
/* 15870*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_32>><<P:Predicate_atomic_swap_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOSWAP_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15878*/          0, /*End of Scope*/
/* 15879*/        0, /*End of Scope*/
/* 15880*/      /*Scope*/ 21|128,1/*149*/, /*->16031*/
/* 15882*/        OPC_CheckPredicate, 14, // Predicate_atomic_swap_64
/* 15884*/        OPC_Scope, 28, /*->15914*/ // 5 children in Scope
/* 15886*/          OPC_CheckPredicate, 20, // Predicate_atomic_swap_64_monotonic
/* 15888*/          OPC_Scope, 11, /*->15901*/ // 2 children in Scope
/* 15890*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 15892*/            OPC_EmitMergeInputChains1_0,
/* 15893*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_64>><<P:Predicate_atomic_swap_64_monotonic>> - Complexity = 4
                      // Dst: (AMOSWAP_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15901*/          /*Scope*/ 11, /*->15913*/
/* 15902*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 15904*/            OPC_EmitMergeInputChains1_0,
/* 15905*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_64>><<P:Predicate_atomic_swap_64_monotonic>> - Complexity = 4
                      // Dst: (AMOSWAP_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15913*/          0, /*End of Scope*/
/* 15914*/        /*Scope*/ 28, /*->15943*/
/* 15915*/          OPC_CheckPredicate, 21, // Predicate_atomic_swap_64_acquire
/* 15917*/          OPC_Scope, 11, /*->15930*/ // 2 children in Scope
/* 15919*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 15921*/            OPC_EmitMergeInputChains1_0,
/* 15922*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_64>><<P:Predicate_atomic_swap_64_acquire>> - Complexity = 4
                      // Dst: (AMOSWAP_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15930*/          /*Scope*/ 11, /*->15942*/
/* 15931*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 15933*/            OPC_EmitMergeInputChains1_0,
/* 15934*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_64>><<P:Predicate_atomic_swap_64_acquire>> - Complexity = 4
                      // Dst: (AMOSWAP_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15942*/          0, /*End of Scope*/
/* 15943*/        /*Scope*/ 28, /*->15972*/
/* 15944*/          OPC_CheckPredicate, 22, // Predicate_atomic_swap_64_release
/* 15946*/          OPC_Scope, 11, /*->15959*/ // 2 children in Scope
/* 15948*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 15950*/            OPC_EmitMergeInputChains1_0,
/* 15951*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_64>><<P:Predicate_atomic_swap_64_release>> - Complexity = 4
                      // Dst: (AMOSWAP_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15959*/          /*Scope*/ 11, /*->15971*/
/* 15960*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 15962*/            OPC_EmitMergeInputChains1_0,
/* 15963*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_64>><<P:Predicate_atomic_swap_64_release>> - Complexity = 4
                      // Dst: (AMOSWAP_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15971*/          0, /*End of Scope*/
/* 15972*/        /*Scope*/ 28, /*->16001*/
/* 15973*/          OPC_CheckPredicate, 23, // Predicate_atomic_swap_64_acq_rel
/* 15975*/          OPC_Scope, 11, /*->15988*/ // 2 children in Scope
/* 15977*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 15979*/            OPC_EmitMergeInputChains1_0,
/* 15980*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_64>><<P:Predicate_atomic_swap_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOSWAP_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 15988*/          /*Scope*/ 11, /*->16000*/
/* 15989*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 15991*/            OPC_EmitMergeInputChains1_0,
/* 15992*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_64>><<P:Predicate_atomic_swap_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOSWAP_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16000*/          0, /*End of Scope*/
/* 16001*/        /*Scope*/ 28, /*->16030*/
/* 16002*/          OPC_CheckPredicate, 24, // Predicate_atomic_swap_64_seq_cst
/* 16004*/          OPC_Scope, 11, /*->16017*/ // 2 children in Scope
/* 16006*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16008*/            OPC_EmitMergeInputChains1_0,
/* 16009*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_64>><<P:Predicate_atomic_swap_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOSWAP_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16017*/          /*Scope*/ 11, /*->16029*/
/* 16018*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 16020*/            OPC_EmitMergeInputChains1_0,
/* 16021*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_swap:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_swap_64>><<P:Predicate_atomic_swap_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOSWAP_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16029*/          0, /*End of Scope*/
/* 16030*/        0, /*End of Scope*/
/* 16031*/      0, /*End of Scope*/
/* 16032*/    /*SwitchType*/ 27|128,1/*155*/, MVT::i64,// ->16190
/* 16035*/      OPC_CheckChild1Type, MVT::i64,
/* 16037*/      OPC_RecordChild2, // #2 = $rs2
/* 16038*/      OPC_Scope, 74, /*->16114*/ // 2 children in Scope
/* 16040*/        OPC_CheckPredicate, 10, // Predicate_atomic_swap_32
/* 16042*/        OPC_Scope, 13, /*->16057*/ // 5 children in Scope
/* 16044*/          OPC_CheckPredicate, 20, // Predicate_atomic_swap_32_monotonic
/* 16046*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16048*/          OPC_EmitMergeInputChains1_0,
/* 16049*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_W), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_swap:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_swap_32>><<P:Predicate_atomic_swap_32_monotonic>> - Complexity = 4
                    // Dst: (AMOSWAP_W:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16057*/        /*Scope*/ 13, /*->16071*/
/* 16058*/          OPC_CheckPredicate, 21, // Predicate_atomic_swap_32_acquire
/* 16060*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16062*/          OPC_EmitMergeInputChains1_0,
/* 16063*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_swap:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_swap_32>><<P:Predicate_atomic_swap_32_acquire>> - Complexity = 4
                    // Dst: (AMOSWAP_W_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16071*/        /*Scope*/ 13, /*->16085*/
/* 16072*/          OPC_CheckPredicate, 22, // Predicate_atomic_swap_32_release
/* 16074*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16076*/          OPC_EmitMergeInputChains1_0,
/* 16077*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_swap:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_swap_32>><<P:Predicate_atomic_swap_32_release>> - Complexity = 4
                    // Dst: (AMOSWAP_W_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16085*/        /*Scope*/ 13, /*->16099*/
/* 16086*/          OPC_CheckPredicate, 23, // Predicate_atomic_swap_32_acq_rel
/* 16088*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16090*/          OPC_EmitMergeInputChains1_0,
/* 16091*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_swap:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_swap_32>><<P:Predicate_atomic_swap_32_acq_rel>> - Complexity = 4
                    // Dst: (AMOSWAP_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16099*/        /*Scope*/ 13, /*->16113*/
/* 16100*/          OPC_CheckPredicate, 24, // Predicate_atomic_swap_32_seq_cst
/* 16102*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16104*/          OPC_EmitMergeInputChains1_0,
/* 16105*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_swap:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_swap_32>><<P:Predicate_atomic_swap_32_seq_cst>> - Complexity = 4
                    // Dst: (AMOSWAP_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16113*/        0, /*End of Scope*/
/* 16114*/      /*Scope*/ 74, /*->16189*/
/* 16115*/        OPC_CheckPredicate, 14, // Predicate_atomic_swap_64
/* 16117*/        OPC_Scope, 13, /*->16132*/ // 5 children in Scope
/* 16119*/          OPC_CheckPredicate, 20, // Predicate_atomic_swap_64_monotonic
/* 16121*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16123*/          OPC_EmitMergeInputChains1_0,
/* 16124*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_D), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_swap:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_swap_64>><<P:Predicate_atomic_swap_64_monotonic>> - Complexity = 4
                    // Dst: (AMOSWAP_D:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16132*/        /*Scope*/ 13, /*->16146*/
/* 16133*/          OPC_CheckPredicate, 21, // Predicate_atomic_swap_64_acquire
/* 16135*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16137*/          OPC_EmitMergeInputChains1_0,
/* 16138*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_swap:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_swap_64>><<P:Predicate_atomic_swap_64_acquire>> - Complexity = 4
                    // Dst: (AMOSWAP_D_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16146*/        /*Scope*/ 13, /*->16160*/
/* 16147*/          OPC_CheckPredicate, 22, // Predicate_atomic_swap_64_release
/* 16149*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16151*/          OPC_EmitMergeInputChains1_0,
/* 16152*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_swap:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_swap_64>><<P:Predicate_atomic_swap_64_release>> - Complexity = 4
                    // Dst: (AMOSWAP_D_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16160*/        /*Scope*/ 13, /*->16174*/
/* 16161*/          OPC_CheckPredicate, 23, // Predicate_atomic_swap_64_acq_rel
/* 16163*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16165*/          OPC_EmitMergeInputChains1_0,
/* 16166*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_swap:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_swap_64>><<P:Predicate_atomic_swap_64_acq_rel>> - Complexity = 4
                    // Dst: (AMOSWAP_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16174*/        /*Scope*/ 13, /*->16188*/
/* 16175*/          OPC_CheckPredicate, 24, // Predicate_atomic_swap_64_seq_cst
/* 16177*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16179*/          OPC_EmitMergeInputChains1_0,
/* 16180*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOSWAP_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_swap:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_swap_64>><<P:Predicate_atomic_swap_64_seq_cst>> - Complexity = 4
                    // Dst: (AMOSWAP_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16188*/        0, /*End of Scope*/
/* 16189*/      0, /*End of Scope*/
/* 16190*/    0, // EndSwitchType
/* 16191*/  /*SwitchOpcode*/ 89|128,3/*473*/, TARGET_VAL(ISD::ATOMIC_LOAD_ADD),// ->16668
/* 16195*/    OPC_RecordMemRef,
/* 16196*/    OPC_RecordNode, // #0 = 'atomic_load_add' chained node
/* 16197*/    OPC_RecordChild1, // #1 = $rs1
/* 16198*/    OPC_SwitchType /*2 cases */, 51|128,2/*307*/, MVT::i32,// ->16509
/* 16202*/      OPC_CheckChild1Type, MVT::i32,
/* 16204*/      OPC_RecordChild2, // #2 = $rs2
/* 16205*/      OPC_Scope, 21|128,1/*149*/, /*->16357*/ // 2 children in Scope
/* 16208*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_add_32
/* 16210*/        OPC_Scope, 28, /*->16240*/ // 5 children in Scope
/* 16212*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_add_32_monotonic
/* 16214*/          OPC_Scope, 11, /*->16227*/ // 2 children in Scope
/* 16216*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16218*/            OPC_EmitMergeInputChains1_0,
/* 16219*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_32>><<P:Predicate_atomic_load_add_32_monotonic>> - Complexity = 4
                      // Dst: (AMOADD_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16227*/          /*Scope*/ 11, /*->16239*/
/* 16228*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 16230*/            OPC_EmitMergeInputChains1_0,
/* 16231*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_32>><<P:Predicate_atomic_load_add_32_monotonic>> - Complexity = 4
                      // Dst: (AMOADD_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16239*/          0, /*End of Scope*/
/* 16240*/        /*Scope*/ 28, /*->16269*/
/* 16241*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_add_32_acquire
/* 16243*/          OPC_Scope, 11, /*->16256*/ // 2 children in Scope
/* 16245*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16247*/            OPC_EmitMergeInputChains1_0,
/* 16248*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_32>><<P:Predicate_atomic_load_add_32_acquire>> - Complexity = 4
                      // Dst: (AMOADD_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16256*/          /*Scope*/ 11, /*->16268*/
/* 16257*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 16259*/            OPC_EmitMergeInputChains1_0,
/* 16260*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_32>><<P:Predicate_atomic_load_add_32_acquire>> - Complexity = 4
                      // Dst: (AMOADD_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16268*/          0, /*End of Scope*/
/* 16269*/        /*Scope*/ 28, /*->16298*/
/* 16270*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_add_32_release
/* 16272*/          OPC_Scope, 11, /*->16285*/ // 2 children in Scope
/* 16274*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16276*/            OPC_EmitMergeInputChains1_0,
/* 16277*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_32>><<P:Predicate_atomic_load_add_32_release>> - Complexity = 4
                      // Dst: (AMOADD_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16285*/          /*Scope*/ 11, /*->16297*/
/* 16286*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 16288*/            OPC_EmitMergeInputChains1_0,
/* 16289*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_32>><<P:Predicate_atomic_load_add_32_release>> - Complexity = 4
                      // Dst: (AMOADD_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16297*/          0, /*End of Scope*/
/* 16298*/        /*Scope*/ 28, /*->16327*/
/* 16299*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_add_32_acq_rel
/* 16301*/          OPC_Scope, 11, /*->16314*/ // 2 children in Scope
/* 16303*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16305*/            OPC_EmitMergeInputChains1_0,
/* 16306*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_32>><<P:Predicate_atomic_load_add_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOADD_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16314*/          /*Scope*/ 11, /*->16326*/
/* 16315*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 16317*/            OPC_EmitMergeInputChains1_0,
/* 16318*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_32>><<P:Predicate_atomic_load_add_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOADD_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16326*/          0, /*End of Scope*/
/* 16327*/        /*Scope*/ 28, /*->16356*/
/* 16328*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_add_32_seq_cst
/* 16330*/          OPC_Scope, 11, /*->16343*/ // 2 children in Scope
/* 16332*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16334*/            OPC_EmitMergeInputChains1_0,
/* 16335*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_32>><<P:Predicate_atomic_load_add_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOADD_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16343*/          /*Scope*/ 11, /*->16355*/
/* 16344*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 16346*/            OPC_EmitMergeInputChains1_0,
/* 16347*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_32>><<P:Predicate_atomic_load_add_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOADD_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16355*/          0, /*End of Scope*/
/* 16356*/        0, /*End of Scope*/
/* 16357*/      /*Scope*/ 21|128,1/*149*/, /*->16508*/
/* 16359*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_add_64
/* 16361*/        OPC_Scope, 28, /*->16391*/ // 5 children in Scope
/* 16363*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_add_64_monotonic
/* 16365*/          OPC_Scope, 11, /*->16378*/ // 2 children in Scope
/* 16367*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16369*/            OPC_EmitMergeInputChains1_0,
/* 16370*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_64>><<P:Predicate_atomic_load_add_64_monotonic>> - Complexity = 4
                      // Dst: (AMOADD_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16378*/          /*Scope*/ 11, /*->16390*/
/* 16379*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 16381*/            OPC_EmitMergeInputChains1_0,
/* 16382*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_64>><<P:Predicate_atomic_load_add_64_monotonic>> - Complexity = 4
                      // Dst: (AMOADD_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16390*/          0, /*End of Scope*/
/* 16391*/        /*Scope*/ 28, /*->16420*/
/* 16392*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_add_64_acquire
/* 16394*/          OPC_Scope, 11, /*->16407*/ // 2 children in Scope
/* 16396*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16398*/            OPC_EmitMergeInputChains1_0,
/* 16399*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_64>><<P:Predicate_atomic_load_add_64_acquire>> - Complexity = 4
                      // Dst: (AMOADD_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16407*/          /*Scope*/ 11, /*->16419*/
/* 16408*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 16410*/            OPC_EmitMergeInputChains1_0,
/* 16411*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_64>><<P:Predicate_atomic_load_add_64_acquire>> - Complexity = 4
                      // Dst: (AMOADD_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16419*/          0, /*End of Scope*/
/* 16420*/        /*Scope*/ 28, /*->16449*/
/* 16421*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_add_64_release
/* 16423*/          OPC_Scope, 11, /*->16436*/ // 2 children in Scope
/* 16425*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16427*/            OPC_EmitMergeInputChains1_0,
/* 16428*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_64>><<P:Predicate_atomic_load_add_64_release>> - Complexity = 4
                      // Dst: (AMOADD_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16436*/          /*Scope*/ 11, /*->16448*/
/* 16437*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 16439*/            OPC_EmitMergeInputChains1_0,
/* 16440*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_64>><<P:Predicate_atomic_load_add_64_release>> - Complexity = 4
                      // Dst: (AMOADD_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16448*/          0, /*End of Scope*/
/* 16449*/        /*Scope*/ 28, /*->16478*/
/* 16450*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_add_64_acq_rel
/* 16452*/          OPC_Scope, 11, /*->16465*/ // 2 children in Scope
/* 16454*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16456*/            OPC_EmitMergeInputChains1_0,
/* 16457*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_64>><<P:Predicate_atomic_load_add_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOADD_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16465*/          /*Scope*/ 11, /*->16477*/
/* 16466*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 16468*/            OPC_EmitMergeInputChains1_0,
/* 16469*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_64>><<P:Predicate_atomic_load_add_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOADD_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16477*/          0, /*End of Scope*/
/* 16478*/        /*Scope*/ 28, /*->16507*/
/* 16479*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_add_64_seq_cst
/* 16481*/          OPC_Scope, 11, /*->16494*/ // 2 children in Scope
/* 16483*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16485*/            OPC_EmitMergeInputChains1_0,
/* 16486*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_64>><<P:Predicate_atomic_load_add_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOADD_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16494*/          /*Scope*/ 11, /*->16506*/
/* 16495*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 16497*/            OPC_EmitMergeInputChains1_0,
/* 16498*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_add:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_add_64>><<P:Predicate_atomic_load_add_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOADD_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16506*/          0, /*End of Scope*/
/* 16507*/        0, /*End of Scope*/
/* 16508*/      0, /*End of Scope*/
/* 16509*/    /*SwitchType*/ 27|128,1/*155*/, MVT::i64,// ->16667
/* 16512*/      OPC_CheckChild1Type, MVT::i64,
/* 16514*/      OPC_RecordChild2, // #2 = $rs2
/* 16515*/      OPC_Scope, 74, /*->16591*/ // 2 children in Scope
/* 16517*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_add_32
/* 16519*/        OPC_Scope, 13, /*->16534*/ // 5 children in Scope
/* 16521*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_add_32_monotonic
/* 16523*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16525*/          OPC_EmitMergeInputChains1_0,
/* 16526*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_add_32>><<P:Predicate_atomic_load_add_32_monotonic>> - Complexity = 4
                    // Dst: (AMOADD_W:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16534*/        /*Scope*/ 13, /*->16548*/
/* 16535*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_add_32_acquire
/* 16537*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16539*/          OPC_EmitMergeInputChains1_0,
/* 16540*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_add_32>><<P:Predicate_atomic_load_add_32_acquire>> - Complexity = 4
                    // Dst: (AMOADD_W_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16548*/        /*Scope*/ 13, /*->16562*/
/* 16549*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_add_32_release
/* 16551*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16553*/          OPC_EmitMergeInputChains1_0,
/* 16554*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_add_32>><<P:Predicate_atomic_load_add_32_release>> - Complexity = 4
                    // Dst: (AMOADD_W_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16562*/        /*Scope*/ 13, /*->16576*/
/* 16563*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_add_32_acq_rel
/* 16565*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16567*/          OPC_EmitMergeInputChains1_0,
/* 16568*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_add_32>><<P:Predicate_atomic_load_add_32_acq_rel>> - Complexity = 4
                    // Dst: (AMOADD_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16576*/        /*Scope*/ 13, /*->16590*/
/* 16577*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_add_32_seq_cst
/* 16579*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16581*/          OPC_EmitMergeInputChains1_0,
/* 16582*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_add_32>><<P:Predicate_atomic_load_add_32_seq_cst>> - Complexity = 4
                    // Dst: (AMOADD_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16590*/        0, /*End of Scope*/
/* 16591*/      /*Scope*/ 74, /*->16666*/
/* 16592*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_add_64
/* 16594*/        OPC_Scope, 13, /*->16609*/ // 5 children in Scope
/* 16596*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_add_64_monotonic
/* 16598*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16600*/          OPC_EmitMergeInputChains1_0,
/* 16601*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_add_64>><<P:Predicate_atomic_load_add_64_monotonic>> - Complexity = 4
                    // Dst: (AMOADD_D:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16609*/        /*Scope*/ 13, /*->16623*/
/* 16610*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_add_64_acquire
/* 16612*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16614*/          OPC_EmitMergeInputChains1_0,
/* 16615*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_add_64>><<P:Predicate_atomic_load_add_64_acquire>> - Complexity = 4
                    // Dst: (AMOADD_D_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16623*/        /*Scope*/ 13, /*->16637*/
/* 16624*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_add_64_release
/* 16626*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16628*/          OPC_EmitMergeInputChains1_0,
/* 16629*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_add_64>><<P:Predicate_atomic_load_add_64_release>> - Complexity = 4
                    // Dst: (AMOADD_D_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16637*/        /*Scope*/ 13, /*->16651*/
/* 16638*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_add_64_acq_rel
/* 16640*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16642*/          OPC_EmitMergeInputChains1_0,
/* 16643*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_add_64>><<P:Predicate_atomic_load_add_64_acq_rel>> - Complexity = 4
                    // Dst: (AMOADD_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16651*/        /*Scope*/ 13, /*->16665*/
/* 16652*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_add_64_seq_cst
/* 16654*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 16656*/          OPC_EmitMergeInputChains1_0,
/* 16657*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_add:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_add_64>><<P:Predicate_atomic_load_add_64_seq_cst>> - Complexity = 4
                    // Dst: (AMOADD_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 16665*/        0, /*End of Scope*/
/* 16666*/      0, /*End of Scope*/
/* 16667*/    0, // EndSwitchType
/* 16668*/  /*SwitchOpcode*/ 89|128,3/*473*/, TARGET_VAL(ISD::ATOMIC_LOAD_AND),// ->17145
/* 16672*/    OPC_RecordMemRef,
/* 16673*/    OPC_RecordNode, // #0 = 'atomic_load_and' chained node
/* 16674*/    OPC_RecordChild1, // #1 = $rs1
/* 16675*/    OPC_SwitchType /*2 cases */, 51|128,2/*307*/, MVT::i32,// ->16986
/* 16679*/      OPC_CheckChild1Type, MVT::i32,
/* 16681*/      OPC_RecordChild2, // #2 = $rs2
/* 16682*/      OPC_Scope, 21|128,1/*149*/, /*->16834*/ // 2 children in Scope
/* 16685*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_and_32
/* 16687*/        OPC_Scope, 28, /*->16717*/ // 5 children in Scope
/* 16689*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_and_32_monotonic
/* 16691*/          OPC_Scope, 11, /*->16704*/ // 2 children in Scope
/* 16693*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16695*/            OPC_EmitMergeInputChains1_0,
/* 16696*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_32>><<P:Predicate_atomic_load_and_32_monotonic>> - Complexity = 4
                      // Dst: (AMOAND_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16704*/          /*Scope*/ 11, /*->16716*/
/* 16705*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 16707*/            OPC_EmitMergeInputChains1_0,
/* 16708*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_32>><<P:Predicate_atomic_load_and_32_monotonic>> - Complexity = 4
                      // Dst: (AMOAND_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16716*/          0, /*End of Scope*/
/* 16717*/        /*Scope*/ 28, /*->16746*/
/* 16718*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_and_32_acquire
/* 16720*/          OPC_Scope, 11, /*->16733*/ // 2 children in Scope
/* 16722*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16724*/            OPC_EmitMergeInputChains1_0,
/* 16725*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_32>><<P:Predicate_atomic_load_and_32_acquire>> - Complexity = 4
                      // Dst: (AMOAND_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16733*/          /*Scope*/ 11, /*->16745*/
/* 16734*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 16736*/            OPC_EmitMergeInputChains1_0,
/* 16737*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_32>><<P:Predicate_atomic_load_and_32_acquire>> - Complexity = 4
                      // Dst: (AMOAND_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16745*/          0, /*End of Scope*/
/* 16746*/        /*Scope*/ 28, /*->16775*/
/* 16747*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_and_32_release
/* 16749*/          OPC_Scope, 11, /*->16762*/ // 2 children in Scope
/* 16751*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16753*/            OPC_EmitMergeInputChains1_0,
/* 16754*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_32>><<P:Predicate_atomic_load_and_32_release>> - Complexity = 4
                      // Dst: (AMOAND_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16762*/          /*Scope*/ 11, /*->16774*/
/* 16763*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 16765*/            OPC_EmitMergeInputChains1_0,
/* 16766*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_32>><<P:Predicate_atomic_load_and_32_release>> - Complexity = 4
                      // Dst: (AMOAND_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16774*/          0, /*End of Scope*/
/* 16775*/        /*Scope*/ 28, /*->16804*/
/* 16776*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_and_32_acq_rel
/* 16778*/          OPC_Scope, 11, /*->16791*/ // 2 children in Scope
/* 16780*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16782*/            OPC_EmitMergeInputChains1_0,
/* 16783*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_32>><<P:Predicate_atomic_load_and_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOAND_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16791*/          /*Scope*/ 11, /*->16803*/
/* 16792*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 16794*/            OPC_EmitMergeInputChains1_0,
/* 16795*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_32>><<P:Predicate_atomic_load_and_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOAND_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16803*/          0, /*End of Scope*/
/* 16804*/        /*Scope*/ 28, /*->16833*/
/* 16805*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_and_32_seq_cst
/* 16807*/          OPC_Scope, 11, /*->16820*/ // 2 children in Scope
/* 16809*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16811*/            OPC_EmitMergeInputChains1_0,
/* 16812*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_32>><<P:Predicate_atomic_load_and_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOAND_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16820*/          /*Scope*/ 11, /*->16832*/
/* 16821*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 16823*/            OPC_EmitMergeInputChains1_0,
/* 16824*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_32>><<P:Predicate_atomic_load_and_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOAND_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16832*/          0, /*End of Scope*/
/* 16833*/        0, /*End of Scope*/
/* 16834*/      /*Scope*/ 21|128,1/*149*/, /*->16985*/
/* 16836*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_and_64
/* 16838*/        OPC_Scope, 28, /*->16868*/ // 5 children in Scope
/* 16840*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_and_64_monotonic
/* 16842*/          OPC_Scope, 11, /*->16855*/ // 2 children in Scope
/* 16844*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16846*/            OPC_EmitMergeInputChains1_0,
/* 16847*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_64>><<P:Predicate_atomic_load_and_64_monotonic>> - Complexity = 4
                      // Dst: (AMOAND_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16855*/          /*Scope*/ 11, /*->16867*/
/* 16856*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 16858*/            OPC_EmitMergeInputChains1_0,
/* 16859*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_64>><<P:Predicate_atomic_load_and_64_monotonic>> - Complexity = 4
                      // Dst: (AMOAND_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16867*/          0, /*End of Scope*/
/* 16868*/        /*Scope*/ 28, /*->16897*/
/* 16869*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_and_64_acquire
/* 16871*/          OPC_Scope, 11, /*->16884*/ // 2 children in Scope
/* 16873*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16875*/            OPC_EmitMergeInputChains1_0,
/* 16876*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_64>><<P:Predicate_atomic_load_and_64_acquire>> - Complexity = 4
                      // Dst: (AMOAND_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16884*/          /*Scope*/ 11, /*->16896*/
/* 16885*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 16887*/            OPC_EmitMergeInputChains1_0,
/* 16888*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_64>><<P:Predicate_atomic_load_and_64_acquire>> - Complexity = 4
                      // Dst: (AMOAND_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16896*/          0, /*End of Scope*/
/* 16897*/        /*Scope*/ 28, /*->16926*/
/* 16898*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_and_64_release
/* 16900*/          OPC_Scope, 11, /*->16913*/ // 2 children in Scope
/* 16902*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16904*/            OPC_EmitMergeInputChains1_0,
/* 16905*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_64>><<P:Predicate_atomic_load_and_64_release>> - Complexity = 4
                      // Dst: (AMOAND_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16913*/          /*Scope*/ 11, /*->16925*/
/* 16914*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 16916*/            OPC_EmitMergeInputChains1_0,
/* 16917*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_64>><<P:Predicate_atomic_load_and_64_release>> - Complexity = 4
                      // Dst: (AMOAND_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16925*/          0, /*End of Scope*/
/* 16926*/        /*Scope*/ 28, /*->16955*/
/* 16927*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_and_64_acq_rel
/* 16929*/          OPC_Scope, 11, /*->16942*/ // 2 children in Scope
/* 16931*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16933*/            OPC_EmitMergeInputChains1_0,
/* 16934*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_64>><<P:Predicate_atomic_load_and_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOAND_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16942*/          /*Scope*/ 11, /*->16954*/
/* 16943*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 16945*/            OPC_EmitMergeInputChains1_0,
/* 16946*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_64>><<P:Predicate_atomic_load_and_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOAND_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16954*/          0, /*End of Scope*/
/* 16955*/        /*Scope*/ 28, /*->16984*/
/* 16956*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_and_64_seq_cst
/* 16958*/          OPC_Scope, 11, /*->16971*/ // 2 children in Scope
/* 16960*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 16962*/            OPC_EmitMergeInputChains1_0,
/* 16963*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_64>><<P:Predicate_atomic_load_and_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOAND_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16971*/          /*Scope*/ 11, /*->16983*/
/* 16972*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 16974*/            OPC_EmitMergeInputChains1_0,
/* 16975*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_and_64>><<P:Predicate_atomic_load_and_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOAND_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 16983*/          0, /*End of Scope*/
/* 16984*/        0, /*End of Scope*/
/* 16985*/      0, /*End of Scope*/
/* 16986*/    /*SwitchType*/ 27|128,1/*155*/, MVT::i64,// ->17144
/* 16989*/      OPC_CheckChild1Type, MVT::i64,
/* 16991*/      OPC_RecordChild2, // #2 = $rs2
/* 16992*/      OPC_Scope, 74, /*->17068*/ // 2 children in Scope
/* 16994*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_and_32
/* 16996*/        OPC_Scope, 13, /*->17011*/ // 5 children in Scope
/* 16998*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_and_32_monotonic
/* 17000*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17002*/          OPC_EmitMergeInputChains1_0,
/* 17003*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_W), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_and_32>><<P:Predicate_atomic_load_and_32_monotonic>> - Complexity = 4
                    // Dst: (AMOAND_W:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17011*/        /*Scope*/ 13, /*->17025*/
/* 17012*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_and_32_acquire
/* 17014*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17016*/          OPC_EmitMergeInputChains1_0,
/* 17017*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_and_32>><<P:Predicate_atomic_load_and_32_acquire>> - Complexity = 4
                    // Dst: (AMOAND_W_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17025*/        /*Scope*/ 13, /*->17039*/
/* 17026*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_and_32_release
/* 17028*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17030*/          OPC_EmitMergeInputChains1_0,
/* 17031*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_and_32>><<P:Predicate_atomic_load_and_32_release>> - Complexity = 4
                    // Dst: (AMOAND_W_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17039*/        /*Scope*/ 13, /*->17053*/
/* 17040*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_and_32_acq_rel
/* 17042*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17044*/          OPC_EmitMergeInputChains1_0,
/* 17045*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_and_32>><<P:Predicate_atomic_load_and_32_acq_rel>> - Complexity = 4
                    // Dst: (AMOAND_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17053*/        /*Scope*/ 13, /*->17067*/
/* 17054*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_and_32_seq_cst
/* 17056*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17058*/          OPC_EmitMergeInputChains1_0,
/* 17059*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_and_32>><<P:Predicate_atomic_load_and_32_seq_cst>> - Complexity = 4
                    // Dst: (AMOAND_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17067*/        0, /*End of Scope*/
/* 17068*/      /*Scope*/ 74, /*->17143*/
/* 17069*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_and_64
/* 17071*/        OPC_Scope, 13, /*->17086*/ // 5 children in Scope
/* 17073*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_and_64_monotonic
/* 17075*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17077*/          OPC_EmitMergeInputChains1_0,
/* 17078*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_D), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_and_64>><<P:Predicate_atomic_load_and_64_monotonic>> - Complexity = 4
                    // Dst: (AMOAND_D:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17086*/        /*Scope*/ 13, /*->17100*/
/* 17087*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_and_64_acquire
/* 17089*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17091*/          OPC_EmitMergeInputChains1_0,
/* 17092*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_and_64>><<P:Predicate_atomic_load_and_64_acquire>> - Complexity = 4
                    // Dst: (AMOAND_D_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17100*/        /*Scope*/ 13, /*->17114*/
/* 17101*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_and_64_release
/* 17103*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17105*/          OPC_EmitMergeInputChains1_0,
/* 17106*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_and_64>><<P:Predicate_atomic_load_and_64_release>> - Complexity = 4
                    // Dst: (AMOAND_D_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17114*/        /*Scope*/ 13, /*->17128*/
/* 17115*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_and_64_acq_rel
/* 17117*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17119*/          OPC_EmitMergeInputChains1_0,
/* 17120*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_and_64>><<P:Predicate_atomic_load_and_64_acq_rel>> - Complexity = 4
                    // Dst: (AMOAND_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17128*/        /*Scope*/ 13, /*->17142*/
/* 17129*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_and_64_seq_cst
/* 17131*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17133*/          OPC_EmitMergeInputChains1_0,
/* 17134*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOAND_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_and_64>><<P:Predicate_atomic_load_and_64_seq_cst>> - Complexity = 4
                    // Dst: (AMOAND_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17142*/        0, /*End of Scope*/
/* 17143*/      0, /*End of Scope*/
/* 17144*/    0, // EndSwitchType
/* 17145*/  /*SwitchOpcode*/ 89|128,3/*473*/, TARGET_VAL(ISD::ATOMIC_LOAD_OR),// ->17622
/* 17149*/    OPC_RecordMemRef,
/* 17150*/    OPC_RecordNode, // #0 = 'atomic_load_or' chained node
/* 17151*/    OPC_RecordChild1, // #1 = $rs1
/* 17152*/    OPC_SwitchType /*2 cases */, 51|128,2/*307*/, MVT::i32,// ->17463
/* 17156*/      OPC_CheckChild1Type, MVT::i32,
/* 17158*/      OPC_RecordChild2, // #2 = $rs2
/* 17159*/      OPC_Scope, 21|128,1/*149*/, /*->17311*/ // 2 children in Scope
/* 17162*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_or_32
/* 17164*/        OPC_Scope, 28, /*->17194*/ // 5 children in Scope
/* 17166*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_or_32_monotonic
/* 17168*/          OPC_Scope, 11, /*->17181*/ // 2 children in Scope
/* 17170*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17172*/            OPC_EmitMergeInputChains1_0,
/* 17173*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_32>><<P:Predicate_atomic_load_or_32_monotonic>> - Complexity = 4
                      // Dst: (AMOOR_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17181*/          /*Scope*/ 11, /*->17193*/
/* 17182*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 17184*/            OPC_EmitMergeInputChains1_0,
/* 17185*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_32>><<P:Predicate_atomic_load_or_32_monotonic>> - Complexity = 4
                      // Dst: (AMOOR_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17193*/          0, /*End of Scope*/
/* 17194*/        /*Scope*/ 28, /*->17223*/
/* 17195*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_or_32_acquire
/* 17197*/          OPC_Scope, 11, /*->17210*/ // 2 children in Scope
/* 17199*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17201*/            OPC_EmitMergeInputChains1_0,
/* 17202*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_32>><<P:Predicate_atomic_load_or_32_acquire>> - Complexity = 4
                      // Dst: (AMOOR_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17210*/          /*Scope*/ 11, /*->17222*/
/* 17211*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 17213*/            OPC_EmitMergeInputChains1_0,
/* 17214*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_32>><<P:Predicate_atomic_load_or_32_acquire>> - Complexity = 4
                      // Dst: (AMOOR_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17222*/          0, /*End of Scope*/
/* 17223*/        /*Scope*/ 28, /*->17252*/
/* 17224*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_or_32_release
/* 17226*/          OPC_Scope, 11, /*->17239*/ // 2 children in Scope
/* 17228*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17230*/            OPC_EmitMergeInputChains1_0,
/* 17231*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_32>><<P:Predicate_atomic_load_or_32_release>> - Complexity = 4
                      // Dst: (AMOOR_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17239*/          /*Scope*/ 11, /*->17251*/
/* 17240*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 17242*/            OPC_EmitMergeInputChains1_0,
/* 17243*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_32>><<P:Predicate_atomic_load_or_32_release>> - Complexity = 4
                      // Dst: (AMOOR_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17251*/          0, /*End of Scope*/
/* 17252*/        /*Scope*/ 28, /*->17281*/
/* 17253*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_or_32_acq_rel
/* 17255*/          OPC_Scope, 11, /*->17268*/ // 2 children in Scope
/* 17257*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17259*/            OPC_EmitMergeInputChains1_0,
/* 17260*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_32>><<P:Predicate_atomic_load_or_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOOR_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17268*/          /*Scope*/ 11, /*->17280*/
/* 17269*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 17271*/            OPC_EmitMergeInputChains1_0,
/* 17272*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_32>><<P:Predicate_atomic_load_or_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOOR_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17280*/          0, /*End of Scope*/
/* 17281*/        /*Scope*/ 28, /*->17310*/
/* 17282*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_or_32_seq_cst
/* 17284*/          OPC_Scope, 11, /*->17297*/ // 2 children in Scope
/* 17286*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17288*/            OPC_EmitMergeInputChains1_0,
/* 17289*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_32>><<P:Predicate_atomic_load_or_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOOR_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17297*/          /*Scope*/ 11, /*->17309*/
/* 17298*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 17300*/            OPC_EmitMergeInputChains1_0,
/* 17301*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_32>><<P:Predicate_atomic_load_or_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOOR_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17309*/          0, /*End of Scope*/
/* 17310*/        0, /*End of Scope*/
/* 17311*/      /*Scope*/ 21|128,1/*149*/, /*->17462*/
/* 17313*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_or_64
/* 17315*/        OPC_Scope, 28, /*->17345*/ // 5 children in Scope
/* 17317*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_or_64_monotonic
/* 17319*/          OPC_Scope, 11, /*->17332*/ // 2 children in Scope
/* 17321*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17323*/            OPC_EmitMergeInputChains1_0,
/* 17324*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_64>><<P:Predicate_atomic_load_or_64_monotonic>> - Complexity = 4
                      // Dst: (AMOOR_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17332*/          /*Scope*/ 11, /*->17344*/
/* 17333*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 17335*/            OPC_EmitMergeInputChains1_0,
/* 17336*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_64>><<P:Predicate_atomic_load_or_64_monotonic>> - Complexity = 4
                      // Dst: (AMOOR_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17344*/          0, /*End of Scope*/
/* 17345*/        /*Scope*/ 28, /*->17374*/
/* 17346*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_or_64_acquire
/* 17348*/          OPC_Scope, 11, /*->17361*/ // 2 children in Scope
/* 17350*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17352*/            OPC_EmitMergeInputChains1_0,
/* 17353*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_64>><<P:Predicate_atomic_load_or_64_acquire>> - Complexity = 4
                      // Dst: (AMOOR_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17361*/          /*Scope*/ 11, /*->17373*/
/* 17362*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 17364*/            OPC_EmitMergeInputChains1_0,
/* 17365*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_64>><<P:Predicate_atomic_load_or_64_acquire>> - Complexity = 4
                      // Dst: (AMOOR_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17373*/          0, /*End of Scope*/
/* 17374*/        /*Scope*/ 28, /*->17403*/
/* 17375*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_or_64_release
/* 17377*/          OPC_Scope, 11, /*->17390*/ // 2 children in Scope
/* 17379*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17381*/            OPC_EmitMergeInputChains1_0,
/* 17382*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_64>><<P:Predicate_atomic_load_or_64_release>> - Complexity = 4
                      // Dst: (AMOOR_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17390*/          /*Scope*/ 11, /*->17402*/
/* 17391*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 17393*/            OPC_EmitMergeInputChains1_0,
/* 17394*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_64>><<P:Predicate_atomic_load_or_64_release>> - Complexity = 4
                      // Dst: (AMOOR_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17402*/          0, /*End of Scope*/
/* 17403*/        /*Scope*/ 28, /*->17432*/
/* 17404*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_or_64_acq_rel
/* 17406*/          OPC_Scope, 11, /*->17419*/ // 2 children in Scope
/* 17408*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17410*/            OPC_EmitMergeInputChains1_0,
/* 17411*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_64>><<P:Predicate_atomic_load_or_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOOR_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17419*/          /*Scope*/ 11, /*->17431*/
/* 17420*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 17422*/            OPC_EmitMergeInputChains1_0,
/* 17423*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_64>><<P:Predicate_atomic_load_or_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOOR_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17431*/          0, /*End of Scope*/
/* 17432*/        /*Scope*/ 28, /*->17461*/
/* 17433*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_or_64_seq_cst
/* 17435*/          OPC_Scope, 11, /*->17448*/ // 2 children in Scope
/* 17437*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17439*/            OPC_EmitMergeInputChains1_0,
/* 17440*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_64>><<P:Predicate_atomic_load_or_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOOR_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17448*/          /*Scope*/ 11, /*->17460*/
/* 17449*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 17451*/            OPC_EmitMergeInputChains1_0,
/* 17452*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_or:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_or_64>><<P:Predicate_atomic_load_or_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOOR_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17460*/          0, /*End of Scope*/
/* 17461*/        0, /*End of Scope*/
/* 17462*/      0, /*End of Scope*/
/* 17463*/    /*SwitchType*/ 27|128,1/*155*/, MVT::i64,// ->17621
/* 17466*/      OPC_CheckChild1Type, MVT::i64,
/* 17468*/      OPC_RecordChild2, // #2 = $rs2
/* 17469*/      OPC_Scope, 74, /*->17545*/ // 2 children in Scope
/* 17471*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_or_32
/* 17473*/        OPC_Scope, 13, /*->17488*/ // 5 children in Scope
/* 17475*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_or_32_monotonic
/* 17477*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17479*/          OPC_EmitMergeInputChains1_0,
/* 17480*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_W), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_or:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_or_32>><<P:Predicate_atomic_load_or_32_monotonic>> - Complexity = 4
                    // Dst: (AMOOR_W:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17488*/        /*Scope*/ 13, /*->17502*/
/* 17489*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_or_32_acquire
/* 17491*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17493*/          OPC_EmitMergeInputChains1_0,
/* 17494*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_or:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_or_32>><<P:Predicate_atomic_load_or_32_acquire>> - Complexity = 4
                    // Dst: (AMOOR_W_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17502*/        /*Scope*/ 13, /*->17516*/
/* 17503*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_or_32_release
/* 17505*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17507*/          OPC_EmitMergeInputChains1_0,
/* 17508*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_or:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_or_32>><<P:Predicate_atomic_load_or_32_release>> - Complexity = 4
                    // Dst: (AMOOR_W_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17516*/        /*Scope*/ 13, /*->17530*/
/* 17517*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_or_32_acq_rel
/* 17519*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17521*/          OPC_EmitMergeInputChains1_0,
/* 17522*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_or:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_or_32>><<P:Predicate_atomic_load_or_32_acq_rel>> - Complexity = 4
                    // Dst: (AMOOR_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17530*/        /*Scope*/ 13, /*->17544*/
/* 17531*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_or_32_seq_cst
/* 17533*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17535*/          OPC_EmitMergeInputChains1_0,
/* 17536*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_or:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_or_32>><<P:Predicate_atomic_load_or_32_seq_cst>> - Complexity = 4
                    // Dst: (AMOOR_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17544*/        0, /*End of Scope*/
/* 17545*/      /*Scope*/ 74, /*->17620*/
/* 17546*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_or_64
/* 17548*/        OPC_Scope, 13, /*->17563*/ // 5 children in Scope
/* 17550*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_or_64_monotonic
/* 17552*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17554*/          OPC_EmitMergeInputChains1_0,
/* 17555*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_D), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_or:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_or_64>><<P:Predicate_atomic_load_or_64_monotonic>> - Complexity = 4
                    // Dst: (AMOOR_D:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17563*/        /*Scope*/ 13, /*->17577*/
/* 17564*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_or_64_acquire
/* 17566*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17568*/          OPC_EmitMergeInputChains1_0,
/* 17569*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_or:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_or_64>><<P:Predicate_atomic_load_or_64_acquire>> - Complexity = 4
                    // Dst: (AMOOR_D_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17577*/        /*Scope*/ 13, /*->17591*/
/* 17578*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_or_64_release
/* 17580*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17582*/          OPC_EmitMergeInputChains1_0,
/* 17583*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_or:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_or_64>><<P:Predicate_atomic_load_or_64_release>> - Complexity = 4
                    // Dst: (AMOOR_D_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17591*/        /*Scope*/ 13, /*->17605*/
/* 17592*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_or_64_acq_rel
/* 17594*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17596*/          OPC_EmitMergeInputChains1_0,
/* 17597*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_or:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_or_64>><<P:Predicate_atomic_load_or_64_acq_rel>> - Complexity = 4
                    // Dst: (AMOOR_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17605*/        /*Scope*/ 13, /*->17619*/
/* 17606*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_or_64_seq_cst
/* 17608*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17610*/          OPC_EmitMergeInputChains1_0,
/* 17611*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOOR_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_or:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_or_64>><<P:Predicate_atomic_load_or_64_seq_cst>> - Complexity = 4
                    // Dst: (AMOOR_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17619*/        0, /*End of Scope*/
/* 17620*/      0, /*End of Scope*/
/* 17621*/    0, // EndSwitchType
/* 17622*/  /*SwitchOpcode*/ 89|128,3/*473*/, TARGET_VAL(ISD::ATOMIC_LOAD_XOR),// ->18099
/* 17626*/    OPC_RecordMemRef,
/* 17627*/    OPC_RecordNode, // #0 = 'atomic_load_xor' chained node
/* 17628*/    OPC_RecordChild1, // #1 = $rs1
/* 17629*/    OPC_SwitchType /*2 cases */, 51|128,2/*307*/, MVT::i32,// ->17940
/* 17633*/      OPC_CheckChild1Type, MVT::i32,
/* 17635*/      OPC_RecordChild2, // #2 = $rs2
/* 17636*/      OPC_Scope, 21|128,1/*149*/, /*->17788*/ // 2 children in Scope
/* 17639*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_xor_32
/* 17641*/        OPC_Scope, 28, /*->17671*/ // 5 children in Scope
/* 17643*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_xor_32_monotonic
/* 17645*/          OPC_Scope, 11, /*->17658*/ // 2 children in Scope
/* 17647*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17649*/            OPC_EmitMergeInputChains1_0,
/* 17650*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_32>><<P:Predicate_atomic_load_xor_32_monotonic>> - Complexity = 4
                      // Dst: (AMOXOR_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17658*/          /*Scope*/ 11, /*->17670*/
/* 17659*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 17661*/            OPC_EmitMergeInputChains1_0,
/* 17662*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_32>><<P:Predicate_atomic_load_xor_32_monotonic>> - Complexity = 4
                      // Dst: (AMOXOR_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17670*/          0, /*End of Scope*/
/* 17671*/        /*Scope*/ 28, /*->17700*/
/* 17672*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_xor_32_acquire
/* 17674*/          OPC_Scope, 11, /*->17687*/ // 2 children in Scope
/* 17676*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17678*/            OPC_EmitMergeInputChains1_0,
/* 17679*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_32>><<P:Predicate_atomic_load_xor_32_acquire>> - Complexity = 4
                      // Dst: (AMOXOR_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17687*/          /*Scope*/ 11, /*->17699*/
/* 17688*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 17690*/            OPC_EmitMergeInputChains1_0,
/* 17691*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_32>><<P:Predicate_atomic_load_xor_32_acquire>> - Complexity = 4
                      // Dst: (AMOXOR_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17699*/          0, /*End of Scope*/
/* 17700*/        /*Scope*/ 28, /*->17729*/
/* 17701*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_xor_32_release
/* 17703*/          OPC_Scope, 11, /*->17716*/ // 2 children in Scope
/* 17705*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17707*/            OPC_EmitMergeInputChains1_0,
/* 17708*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_32>><<P:Predicate_atomic_load_xor_32_release>> - Complexity = 4
                      // Dst: (AMOXOR_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17716*/          /*Scope*/ 11, /*->17728*/
/* 17717*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 17719*/            OPC_EmitMergeInputChains1_0,
/* 17720*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_32>><<P:Predicate_atomic_load_xor_32_release>> - Complexity = 4
                      // Dst: (AMOXOR_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17728*/          0, /*End of Scope*/
/* 17729*/        /*Scope*/ 28, /*->17758*/
/* 17730*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_xor_32_acq_rel
/* 17732*/          OPC_Scope, 11, /*->17745*/ // 2 children in Scope
/* 17734*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17736*/            OPC_EmitMergeInputChains1_0,
/* 17737*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_32>><<P:Predicate_atomic_load_xor_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOXOR_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17745*/          /*Scope*/ 11, /*->17757*/
/* 17746*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 17748*/            OPC_EmitMergeInputChains1_0,
/* 17749*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_32>><<P:Predicate_atomic_load_xor_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOXOR_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17757*/          0, /*End of Scope*/
/* 17758*/        /*Scope*/ 28, /*->17787*/
/* 17759*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_xor_32_seq_cst
/* 17761*/          OPC_Scope, 11, /*->17774*/ // 2 children in Scope
/* 17763*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17765*/            OPC_EmitMergeInputChains1_0,
/* 17766*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_32>><<P:Predicate_atomic_load_xor_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOXOR_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17774*/          /*Scope*/ 11, /*->17786*/
/* 17775*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 17777*/            OPC_EmitMergeInputChains1_0,
/* 17778*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_32>><<P:Predicate_atomic_load_xor_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOXOR_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17786*/          0, /*End of Scope*/
/* 17787*/        0, /*End of Scope*/
/* 17788*/      /*Scope*/ 21|128,1/*149*/, /*->17939*/
/* 17790*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_xor_64
/* 17792*/        OPC_Scope, 28, /*->17822*/ // 5 children in Scope
/* 17794*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_xor_64_monotonic
/* 17796*/          OPC_Scope, 11, /*->17809*/ // 2 children in Scope
/* 17798*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17800*/            OPC_EmitMergeInputChains1_0,
/* 17801*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_64>><<P:Predicate_atomic_load_xor_64_monotonic>> - Complexity = 4
                      // Dst: (AMOXOR_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17809*/          /*Scope*/ 11, /*->17821*/
/* 17810*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 17812*/            OPC_EmitMergeInputChains1_0,
/* 17813*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_64>><<P:Predicate_atomic_load_xor_64_monotonic>> - Complexity = 4
                      // Dst: (AMOXOR_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17821*/          0, /*End of Scope*/
/* 17822*/        /*Scope*/ 28, /*->17851*/
/* 17823*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_xor_64_acquire
/* 17825*/          OPC_Scope, 11, /*->17838*/ // 2 children in Scope
/* 17827*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17829*/            OPC_EmitMergeInputChains1_0,
/* 17830*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_64>><<P:Predicate_atomic_load_xor_64_acquire>> - Complexity = 4
                      // Dst: (AMOXOR_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17838*/          /*Scope*/ 11, /*->17850*/
/* 17839*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 17841*/            OPC_EmitMergeInputChains1_0,
/* 17842*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_64>><<P:Predicate_atomic_load_xor_64_acquire>> - Complexity = 4
                      // Dst: (AMOXOR_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17850*/          0, /*End of Scope*/
/* 17851*/        /*Scope*/ 28, /*->17880*/
/* 17852*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_xor_64_release
/* 17854*/          OPC_Scope, 11, /*->17867*/ // 2 children in Scope
/* 17856*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17858*/            OPC_EmitMergeInputChains1_0,
/* 17859*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_64>><<P:Predicate_atomic_load_xor_64_release>> - Complexity = 4
                      // Dst: (AMOXOR_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17867*/          /*Scope*/ 11, /*->17879*/
/* 17868*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 17870*/            OPC_EmitMergeInputChains1_0,
/* 17871*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_64>><<P:Predicate_atomic_load_xor_64_release>> - Complexity = 4
                      // Dst: (AMOXOR_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17879*/          0, /*End of Scope*/
/* 17880*/        /*Scope*/ 28, /*->17909*/
/* 17881*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_xor_64_acq_rel
/* 17883*/          OPC_Scope, 11, /*->17896*/ // 2 children in Scope
/* 17885*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17887*/            OPC_EmitMergeInputChains1_0,
/* 17888*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_64>><<P:Predicate_atomic_load_xor_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOXOR_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17896*/          /*Scope*/ 11, /*->17908*/
/* 17897*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 17899*/            OPC_EmitMergeInputChains1_0,
/* 17900*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_64>><<P:Predicate_atomic_load_xor_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOXOR_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17908*/          0, /*End of Scope*/
/* 17909*/        /*Scope*/ 28, /*->17938*/
/* 17910*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_xor_64_seq_cst
/* 17912*/          OPC_Scope, 11, /*->17925*/ // 2 children in Scope
/* 17914*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 17916*/            OPC_EmitMergeInputChains1_0,
/* 17917*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_64>><<P:Predicate_atomic_load_xor_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOXOR_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17925*/          /*Scope*/ 11, /*->17937*/
/* 17926*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 17928*/            OPC_EmitMergeInputChains1_0,
/* 17929*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_xor:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_xor_64>><<P:Predicate_atomic_load_xor_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOXOR_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 17937*/          0, /*End of Scope*/
/* 17938*/        0, /*End of Scope*/
/* 17939*/      0, /*End of Scope*/
/* 17940*/    /*SwitchType*/ 27|128,1/*155*/, MVT::i64,// ->18098
/* 17943*/      OPC_CheckChild1Type, MVT::i64,
/* 17945*/      OPC_RecordChild2, // #2 = $rs2
/* 17946*/      OPC_Scope, 74, /*->18022*/ // 2 children in Scope
/* 17948*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_xor_32
/* 17950*/        OPC_Scope, 13, /*->17965*/ // 5 children in Scope
/* 17952*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_xor_32_monotonic
/* 17954*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17956*/          OPC_EmitMergeInputChains1_0,
/* 17957*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_W), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_xor:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_xor_32>><<P:Predicate_atomic_load_xor_32_monotonic>> - Complexity = 4
                    // Dst: (AMOXOR_W:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17965*/        /*Scope*/ 13, /*->17979*/
/* 17966*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_xor_32_acquire
/* 17968*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17970*/          OPC_EmitMergeInputChains1_0,
/* 17971*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_xor:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_xor_32>><<P:Predicate_atomic_load_xor_32_acquire>> - Complexity = 4
                    // Dst: (AMOXOR_W_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17979*/        /*Scope*/ 13, /*->17993*/
/* 17980*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_xor_32_release
/* 17982*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17984*/          OPC_EmitMergeInputChains1_0,
/* 17985*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_xor:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_xor_32>><<P:Predicate_atomic_load_xor_32_release>> - Complexity = 4
                    // Dst: (AMOXOR_W_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 17993*/        /*Scope*/ 13, /*->18007*/
/* 17994*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_xor_32_acq_rel
/* 17996*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 17998*/          OPC_EmitMergeInputChains1_0,
/* 17999*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_xor:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_xor_32>><<P:Predicate_atomic_load_xor_32_acq_rel>> - Complexity = 4
                    // Dst: (AMOXOR_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18007*/        /*Scope*/ 13, /*->18021*/
/* 18008*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_xor_32_seq_cst
/* 18010*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18012*/          OPC_EmitMergeInputChains1_0,
/* 18013*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_xor:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_xor_32>><<P:Predicate_atomic_load_xor_32_seq_cst>> - Complexity = 4
                    // Dst: (AMOXOR_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18021*/        0, /*End of Scope*/
/* 18022*/      /*Scope*/ 74, /*->18097*/
/* 18023*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_xor_64
/* 18025*/        OPC_Scope, 13, /*->18040*/ // 5 children in Scope
/* 18027*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_xor_64_monotonic
/* 18029*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18031*/          OPC_EmitMergeInputChains1_0,
/* 18032*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_D), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_xor:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_xor_64>><<P:Predicate_atomic_load_xor_64_monotonic>> - Complexity = 4
                    // Dst: (AMOXOR_D:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18040*/        /*Scope*/ 13, /*->18054*/
/* 18041*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_xor_64_acquire
/* 18043*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18045*/          OPC_EmitMergeInputChains1_0,
/* 18046*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_xor:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_xor_64>><<P:Predicate_atomic_load_xor_64_acquire>> - Complexity = 4
                    // Dst: (AMOXOR_D_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18054*/        /*Scope*/ 13, /*->18068*/
/* 18055*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_xor_64_release
/* 18057*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18059*/          OPC_EmitMergeInputChains1_0,
/* 18060*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_xor:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_xor_64>><<P:Predicate_atomic_load_xor_64_release>> - Complexity = 4
                    // Dst: (AMOXOR_D_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18068*/        /*Scope*/ 13, /*->18082*/
/* 18069*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_xor_64_acq_rel
/* 18071*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18073*/          OPC_EmitMergeInputChains1_0,
/* 18074*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_xor:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_xor_64>><<P:Predicate_atomic_load_xor_64_acq_rel>> - Complexity = 4
                    // Dst: (AMOXOR_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18082*/        /*Scope*/ 13, /*->18096*/
/* 18083*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_xor_64_seq_cst
/* 18085*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18087*/          OPC_EmitMergeInputChains1_0,
/* 18088*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOXOR_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_xor:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_xor_64>><<P:Predicate_atomic_load_xor_64_seq_cst>> - Complexity = 4
                    // Dst: (AMOXOR_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18096*/        0, /*End of Scope*/
/* 18097*/      0, /*End of Scope*/
/* 18098*/    0, // EndSwitchType
/* 18099*/  /*SwitchOpcode*/ 89|128,3/*473*/, TARGET_VAL(ISD::ATOMIC_LOAD_MAX),// ->18576
/* 18103*/    OPC_RecordMemRef,
/* 18104*/    OPC_RecordNode, // #0 = 'atomic_load_max' chained node
/* 18105*/    OPC_RecordChild1, // #1 = $rs1
/* 18106*/    OPC_SwitchType /*2 cases */, 51|128,2/*307*/, MVT::i32,// ->18417
/* 18110*/      OPC_CheckChild1Type, MVT::i32,
/* 18112*/      OPC_RecordChild2, // #2 = $rs2
/* 18113*/      OPC_Scope, 21|128,1/*149*/, /*->18265*/ // 2 children in Scope
/* 18116*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_max_32
/* 18118*/        OPC_Scope, 28, /*->18148*/ // 5 children in Scope
/* 18120*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_max_32_monotonic
/* 18122*/          OPC_Scope, 11, /*->18135*/ // 2 children in Scope
/* 18124*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18126*/            OPC_EmitMergeInputChains1_0,
/* 18127*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_32>><<P:Predicate_atomic_load_max_32_monotonic>> - Complexity = 4
                      // Dst: (AMOMAX_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18135*/          /*Scope*/ 11, /*->18147*/
/* 18136*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 18138*/            OPC_EmitMergeInputChains1_0,
/* 18139*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_32>><<P:Predicate_atomic_load_max_32_monotonic>> - Complexity = 4
                      // Dst: (AMOMAX_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18147*/          0, /*End of Scope*/
/* 18148*/        /*Scope*/ 28, /*->18177*/
/* 18149*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_max_32_acquire
/* 18151*/          OPC_Scope, 11, /*->18164*/ // 2 children in Scope
/* 18153*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18155*/            OPC_EmitMergeInputChains1_0,
/* 18156*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_32>><<P:Predicate_atomic_load_max_32_acquire>> - Complexity = 4
                      // Dst: (AMOMAX_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18164*/          /*Scope*/ 11, /*->18176*/
/* 18165*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 18167*/            OPC_EmitMergeInputChains1_0,
/* 18168*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_32>><<P:Predicate_atomic_load_max_32_acquire>> - Complexity = 4
                      // Dst: (AMOMAX_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18176*/          0, /*End of Scope*/
/* 18177*/        /*Scope*/ 28, /*->18206*/
/* 18178*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_max_32_release
/* 18180*/          OPC_Scope, 11, /*->18193*/ // 2 children in Scope
/* 18182*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18184*/            OPC_EmitMergeInputChains1_0,
/* 18185*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_32>><<P:Predicate_atomic_load_max_32_release>> - Complexity = 4
                      // Dst: (AMOMAX_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18193*/          /*Scope*/ 11, /*->18205*/
/* 18194*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 18196*/            OPC_EmitMergeInputChains1_0,
/* 18197*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_32>><<P:Predicate_atomic_load_max_32_release>> - Complexity = 4
                      // Dst: (AMOMAX_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18205*/          0, /*End of Scope*/
/* 18206*/        /*Scope*/ 28, /*->18235*/
/* 18207*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_max_32_acq_rel
/* 18209*/          OPC_Scope, 11, /*->18222*/ // 2 children in Scope
/* 18211*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18213*/            OPC_EmitMergeInputChains1_0,
/* 18214*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_32>><<P:Predicate_atomic_load_max_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOMAX_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18222*/          /*Scope*/ 11, /*->18234*/
/* 18223*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 18225*/            OPC_EmitMergeInputChains1_0,
/* 18226*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_32>><<P:Predicate_atomic_load_max_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOMAX_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18234*/          0, /*End of Scope*/
/* 18235*/        /*Scope*/ 28, /*->18264*/
/* 18236*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_max_32_seq_cst
/* 18238*/          OPC_Scope, 11, /*->18251*/ // 2 children in Scope
/* 18240*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18242*/            OPC_EmitMergeInputChains1_0,
/* 18243*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_32>><<P:Predicate_atomic_load_max_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOMAX_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18251*/          /*Scope*/ 11, /*->18263*/
/* 18252*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 18254*/            OPC_EmitMergeInputChains1_0,
/* 18255*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_32>><<P:Predicate_atomic_load_max_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOMAX_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18263*/          0, /*End of Scope*/
/* 18264*/        0, /*End of Scope*/
/* 18265*/      /*Scope*/ 21|128,1/*149*/, /*->18416*/
/* 18267*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_max_64
/* 18269*/        OPC_Scope, 28, /*->18299*/ // 5 children in Scope
/* 18271*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_max_64_monotonic
/* 18273*/          OPC_Scope, 11, /*->18286*/ // 2 children in Scope
/* 18275*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18277*/            OPC_EmitMergeInputChains1_0,
/* 18278*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_64>><<P:Predicate_atomic_load_max_64_monotonic>> - Complexity = 4
                      // Dst: (AMOMAX_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18286*/          /*Scope*/ 11, /*->18298*/
/* 18287*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 18289*/            OPC_EmitMergeInputChains1_0,
/* 18290*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_64>><<P:Predicate_atomic_load_max_64_monotonic>> - Complexity = 4
                      // Dst: (AMOMAX_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18298*/          0, /*End of Scope*/
/* 18299*/        /*Scope*/ 28, /*->18328*/
/* 18300*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_max_64_acquire
/* 18302*/          OPC_Scope, 11, /*->18315*/ // 2 children in Scope
/* 18304*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18306*/            OPC_EmitMergeInputChains1_0,
/* 18307*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_64>><<P:Predicate_atomic_load_max_64_acquire>> - Complexity = 4
                      // Dst: (AMOMAX_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18315*/          /*Scope*/ 11, /*->18327*/
/* 18316*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 18318*/            OPC_EmitMergeInputChains1_0,
/* 18319*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_64>><<P:Predicate_atomic_load_max_64_acquire>> - Complexity = 4
                      // Dst: (AMOMAX_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18327*/          0, /*End of Scope*/
/* 18328*/        /*Scope*/ 28, /*->18357*/
/* 18329*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_max_64_release
/* 18331*/          OPC_Scope, 11, /*->18344*/ // 2 children in Scope
/* 18333*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18335*/            OPC_EmitMergeInputChains1_0,
/* 18336*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_64>><<P:Predicate_atomic_load_max_64_release>> - Complexity = 4
                      // Dst: (AMOMAX_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18344*/          /*Scope*/ 11, /*->18356*/
/* 18345*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 18347*/            OPC_EmitMergeInputChains1_0,
/* 18348*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_64>><<P:Predicate_atomic_load_max_64_release>> - Complexity = 4
                      // Dst: (AMOMAX_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18356*/          0, /*End of Scope*/
/* 18357*/        /*Scope*/ 28, /*->18386*/
/* 18358*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_max_64_acq_rel
/* 18360*/          OPC_Scope, 11, /*->18373*/ // 2 children in Scope
/* 18362*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18364*/            OPC_EmitMergeInputChains1_0,
/* 18365*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_64>><<P:Predicate_atomic_load_max_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOMAX_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18373*/          /*Scope*/ 11, /*->18385*/
/* 18374*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 18376*/            OPC_EmitMergeInputChains1_0,
/* 18377*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_64>><<P:Predicate_atomic_load_max_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOMAX_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18385*/          0, /*End of Scope*/
/* 18386*/        /*Scope*/ 28, /*->18415*/
/* 18387*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_max_64_seq_cst
/* 18389*/          OPC_Scope, 11, /*->18402*/ // 2 children in Scope
/* 18391*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18393*/            OPC_EmitMergeInputChains1_0,
/* 18394*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_64>><<P:Predicate_atomic_load_max_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOMAX_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18402*/          /*Scope*/ 11, /*->18414*/
/* 18403*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 18405*/            OPC_EmitMergeInputChains1_0,
/* 18406*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_max:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_max_64>><<P:Predicate_atomic_load_max_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOMAX_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18414*/          0, /*End of Scope*/
/* 18415*/        0, /*End of Scope*/
/* 18416*/      0, /*End of Scope*/
/* 18417*/    /*SwitchType*/ 27|128,1/*155*/, MVT::i64,// ->18575
/* 18420*/      OPC_CheckChild1Type, MVT::i64,
/* 18422*/      OPC_RecordChild2, // #2 = $rs2
/* 18423*/      OPC_Scope, 74, /*->18499*/ // 2 children in Scope
/* 18425*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_max_32
/* 18427*/        OPC_Scope, 13, /*->18442*/ // 5 children in Scope
/* 18429*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_max_32_monotonic
/* 18431*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18433*/          OPC_EmitMergeInputChains1_0,
/* 18434*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_W), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_max:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_max_32>><<P:Predicate_atomic_load_max_32_monotonic>> - Complexity = 4
                    // Dst: (AMOMAX_W:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18442*/        /*Scope*/ 13, /*->18456*/
/* 18443*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_max_32_acquire
/* 18445*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18447*/          OPC_EmitMergeInputChains1_0,
/* 18448*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_max:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_max_32>><<P:Predicate_atomic_load_max_32_acquire>> - Complexity = 4
                    // Dst: (AMOMAX_W_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18456*/        /*Scope*/ 13, /*->18470*/
/* 18457*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_max_32_release
/* 18459*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18461*/          OPC_EmitMergeInputChains1_0,
/* 18462*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_max:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_max_32>><<P:Predicate_atomic_load_max_32_release>> - Complexity = 4
                    // Dst: (AMOMAX_W_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18470*/        /*Scope*/ 13, /*->18484*/
/* 18471*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_max_32_acq_rel
/* 18473*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18475*/          OPC_EmitMergeInputChains1_0,
/* 18476*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_max:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_max_32>><<P:Predicate_atomic_load_max_32_acq_rel>> - Complexity = 4
                    // Dst: (AMOMAX_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18484*/        /*Scope*/ 13, /*->18498*/
/* 18485*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_max_32_seq_cst
/* 18487*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18489*/          OPC_EmitMergeInputChains1_0,
/* 18490*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_max:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_max_32>><<P:Predicate_atomic_load_max_32_seq_cst>> - Complexity = 4
                    // Dst: (AMOMAX_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18498*/        0, /*End of Scope*/
/* 18499*/      /*Scope*/ 74, /*->18574*/
/* 18500*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_max_64
/* 18502*/        OPC_Scope, 13, /*->18517*/ // 5 children in Scope
/* 18504*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_max_64_monotonic
/* 18506*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18508*/          OPC_EmitMergeInputChains1_0,
/* 18509*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_D), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_max:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_max_64>><<P:Predicate_atomic_load_max_64_monotonic>> - Complexity = 4
                    // Dst: (AMOMAX_D:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18517*/        /*Scope*/ 13, /*->18531*/
/* 18518*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_max_64_acquire
/* 18520*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18522*/          OPC_EmitMergeInputChains1_0,
/* 18523*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_max:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_max_64>><<P:Predicate_atomic_load_max_64_acquire>> - Complexity = 4
                    // Dst: (AMOMAX_D_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18531*/        /*Scope*/ 13, /*->18545*/
/* 18532*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_max_64_release
/* 18534*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18536*/          OPC_EmitMergeInputChains1_0,
/* 18537*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_max:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_max_64>><<P:Predicate_atomic_load_max_64_release>> - Complexity = 4
                    // Dst: (AMOMAX_D_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18545*/        /*Scope*/ 13, /*->18559*/
/* 18546*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_max_64_acq_rel
/* 18548*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18550*/          OPC_EmitMergeInputChains1_0,
/* 18551*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_max:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_max_64>><<P:Predicate_atomic_load_max_64_acq_rel>> - Complexity = 4
                    // Dst: (AMOMAX_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18559*/        /*Scope*/ 13, /*->18573*/
/* 18560*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_max_64_seq_cst
/* 18562*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18564*/          OPC_EmitMergeInputChains1_0,
/* 18565*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAX_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_max:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_max_64>><<P:Predicate_atomic_load_max_64_seq_cst>> - Complexity = 4
                    // Dst: (AMOMAX_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18573*/        0, /*End of Scope*/
/* 18574*/      0, /*End of Scope*/
/* 18575*/    0, // EndSwitchType
/* 18576*/  /*SwitchOpcode*/ 89|128,3/*473*/, TARGET_VAL(ISD::ATOMIC_LOAD_MIN),// ->19053
/* 18580*/    OPC_RecordMemRef,
/* 18581*/    OPC_RecordNode, // #0 = 'atomic_load_min' chained node
/* 18582*/    OPC_RecordChild1, // #1 = $rs1
/* 18583*/    OPC_SwitchType /*2 cases */, 51|128,2/*307*/, MVT::i32,// ->18894
/* 18587*/      OPC_CheckChild1Type, MVT::i32,
/* 18589*/      OPC_RecordChild2, // #2 = $rs2
/* 18590*/      OPC_Scope, 21|128,1/*149*/, /*->18742*/ // 2 children in Scope
/* 18593*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_min_32
/* 18595*/        OPC_Scope, 28, /*->18625*/ // 5 children in Scope
/* 18597*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_min_32_monotonic
/* 18599*/          OPC_Scope, 11, /*->18612*/ // 2 children in Scope
/* 18601*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18603*/            OPC_EmitMergeInputChains1_0,
/* 18604*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_32>><<P:Predicate_atomic_load_min_32_monotonic>> - Complexity = 4
                      // Dst: (AMOMIN_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18612*/          /*Scope*/ 11, /*->18624*/
/* 18613*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 18615*/            OPC_EmitMergeInputChains1_0,
/* 18616*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_32>><<P:Predicate_atomic_load_min_32_monotonic>> - Complexity = 4
                      // Dst: (AMOMIN_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18624*/          0, /*End of Scope*/
/* 18625*/        /*Scope*/ 28, /*->18654*/
/* 18626*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_min_32_acquire
/* 18628*/          OPC_Scope, 11, /*->18641*/ // 2 children in Scope
/* 18630*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18632*/            OPC_EmitMergeInputChains1_0,
/* 18633*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_32>><<P:Predicate_atomic_load_min_32_acquire>> - Complexity = 4
                      // Dst: (AMOMIN_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18641*/          /*Scope*/ 11, /*->18653*/
/* 18642*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 18644*/            OPC_EmitMergeInputChains1_0,
/* 18645*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_32>><<P:Predicate_atomic_load_min_32_acquire>> - Complexity = 4
                      // Dst: (AMOMIN_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18653*/          0, /*End of Scope*/
/* 18654*/        /*Scope*/ 28, /*->18683*/
/* 18655*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_min_32_release
/* 18657*/          OPC_Scope, 11, /*->18670*/ // 2 children in Scope
/* 18659*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18661*/            OPC_EmitMergeInputChains1_0,
/* 18662*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_32>><<P:Predicate_atomic_load_min_32_release>> - Complexity = 4
                      // Dst: (AMOMIN_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18670*/          /*Scope*/ 11, /*->18682*/
/* 18671*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 18673*/            OPC_EmitMergeInputChains1_0,
/* 18674*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_32>><<P:Predicate_atomic_load_min_32_release>> - Complexity = 4
                      // Dst: (AMOMIN_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18682*/          0, /*End of Scope*/
/* 18683*/        /*Scope*/ 28, /*->18712*/
/* 18684*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_min_32_acq_rel
/* 18686*/          OPC_Scope, 11, /*->18699*/ // 2 children in Scope
/* 18688*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18690*/            OPC_EmitMergeInputChains1_0,
/* 18691*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_32>><<P:Predicate_atomic_load_min_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOMIN_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18699*/          /*Scope*/ 11, /*->18711*/
/* 18700*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 18702*/            OPC_EmitMergeInputChains1_0,
/* 18703*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_32>><<P:Predicate_atomic_load_min_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOMIN_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18711*/          0, /*End of Scope*/
/* 18712*/        /*Scope*/ 28, /*->18741*/
/* 18713*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_min_32_seq_cst
/* 18715*/          OPC_Scope, 11, /*->18728*/ // 2 children in Scope
/* 18717*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18719*/            OPC_EmitMergeInputChains1_0,
/* 18720*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_32>><<P:Predicate_atomic_load_min_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOMIN_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18728*/          /*Scope*/ 11, /*->18740*/
/* 18729*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 18731*/            OPC_EmitMergeInputChains1_0,
/* 18732*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_32>><<P:Predicate_atomic_load_min_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOMIN_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18740*/          0, /*End of Scope*/
/* 18741*/        0, /*End of Scope*/
/* 18742*/      /*Scope*/ 21|128,1/*149*/, /*->18893*/
/* 18744*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_min_64
/* 18746*/        OPC_Scope, 28, /*->18776*/ // 5 children in Scope
/* 18748*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_min_64_monotonic
/* 18750*/          OPC_Scope, 11, /*->18763*/ // 2 children in Scope
/* 18752*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18754*/            OPC_EmitMergeInputChains1_0,
/* 18755*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_64>><<P:Predicate_atomic_load_min_64_monotonic>> - Complexity = 4
                      // Dst: (AMOMIN_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18763*/          /*Scope*/ 11, /*->18775*/
/* 18764*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 18766*/            OPC_EmitMergeInputChains1_0,
/* 18767*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_64>><<P:Predicate_atomic_load_min_64_monotonic>> - Complexity = 4
                      // Dst: (AMOMIN_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18775*/          0, /*End of Scope*/
/* 18776*/        /*Scope*/ 28, /*->18805*/
/* 18777*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_min_64_acquire
/* 18779*/          OPC_Scope, 11, /*->18792*/ // 2 children in Scope
/* 18781*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18783*/            OPC_EmitMergeInputChains1_0,
/* 18784*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_64>><<P:Predicate_atomic_load_min_64_acquire>> - Complexity = 4
                      // Dst: (AMOMIN_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18792*/          /*Scope*/ 11, /*->18804*/
/* 18793*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 18795*/            OPC_EmitMergeInputChains1_0,
/* 18796*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_64>><<P:Predicate_atomic_load_min_64_acquire>> - Complexity = 4
                      // Dst: (AMOMIN_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18804*/          0, /*End of Scope*/
/* 18805*/        /*Scope*/ 28, /*->18834*/
/* 18806*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_min_64_release
/* 18808*/          OPC_Scope, 11, /*->18821*/ // 2 children in Scope
/* 18810*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18812*/            OPC_EmitMergeInputChains1_0,
/* 18813*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_64>><<P:Predicate_atomic_load_min_64_release>> - Complexity = 4
                      // Dst: (AMOMIN_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18821*/          /*Scope*/ 11, /*->18833*/
/* 18822*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 18824*/            OPC_EmitMergeInputChains1_0,
/* 18825*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_64>><<P:Predicate_atomic_load_min_64_release>> - Complexity = 4
                      // Dst: (AMOMIN_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18833*/          0, /*End of Scope*/
/* 18834*/        /*Scope*/ 28, /*->18863*/
/* 18835*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_min_64_acq_rel
/* 18837*/          OPC_Scope, 11, /*->18850*/ // 2 children in Scope
/* 18839*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18841*/            OPC_EmitMergeInputChains1_0,
/* 18842*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_64>><<P:Predicate_atomic_load_min_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOMIN_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18850*/          /*Scope*/ 11, /*->18862*/
/* 18851*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 18853*/            OPC_EmitMergeInputChains1_0,
/* 18854*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_64>><<P:Predicate_atomic_load_min_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOMIN_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18862*/          0, /*End of Scope*/
/* 18863*/        /*Scope*/ 28, /*->18892*/
/* 18864*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_min_64_seq_cst
/* 18866*/          OPC_Scope, 11, /*->18879*/ // 2 children in Scope
/* 18868*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 18870*/            OPC_EmitMergeInputChains1_0,
/* 18871*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_64>><<P:Predicate_atomic_load_min_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOMIN_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18879*/          /*Scope*/ 11, /*->18891*/
/* 18880*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 18882*/            OPC_EmitMergeInputChains1_0,
/* 18883*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_min:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_min_64>><<P:Predicate_atomic_load_min_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOMIN_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 18891*/          0, /*End of Scope*/
/* 18892*/        0, /*End of Scope*/
/* 18893*/      0, /*End of Scope*/
/* 18894*/    /*SwitchType*/ 27|128,1/*155*/, MVT::i64,// ->19052
/* 18897*/      OPC_CheckChild1Type, MVT::i64,
/* 18899*/      OPC_RecordChild2, // #2 = $rs2
/* 18900*/      OPC_Scope, 74, /*->18976*/ // 2 children in Scope
/* 18902*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_min_32
/* 18904*/        OPC_Scope, 13, /*->18919*/ // 5 children in Scope
/* 18906*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_min_32_monotonic
/* 18908*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18910*/          OPC_EmitMergeInputChains1_0,
/* 18911*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_W), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_min:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_min_32>><<P:Predicate_atomic_load_min_32_monotonic>> - Complexity = 4
                    // Dst: (AMOMIN_W:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18919*/        /*Scope*/ 13, /*->18933*/
/* 18920*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_min_32_acquire
/* 18922*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18924*/          OPC_EmitMergeInputChains1_0,
/* 18925*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_min:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_min_32>><<P:Predicate_atomic_load_min_32_acquire>> - Complexity = 4
                    // Dst: (AMOMIN_W_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18933*/        /*Scope*/ 13, /*->18947*/
/* 18934*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_min_32_release
/* 18936*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18938*/          OPC_EmitMergeInputChains1_0,
/* 18939*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_min:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_min_32>><<P:Predicate_atomic_load_min_32_release>> - Complexity = 4
                    // Dst: (AMOMIN_W_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18947*/        /*Scope*/ 13, /*->18961*/
/* 18948*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_min_32_acq_rel
/* 18950*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18952*/          OPC_EmitMergeInputChains1_0,
/* 18953*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_min:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_min_32>><<P:Predicate_atomic_load_min_32_acq_rel>> - Complexity = 4
                    // Dst: (AMOMIN_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18961*/        /*Scope*/ 13, /*->18975*/
/* 18962*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_min_32_seq_cst
/* 18964*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18966*/          OPC_EmitMergeInputChains1_0,
/* 18967*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_min:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_min_32>><<P:Predicate_atomic_load_min_32_seq_cst>> - Complexity = 4
                    // Dst: (AMOMIN_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18975*/        0, /*End of Scope*/
/* 18976*/      /*Scope*/ 74, /*->19051*/
/* 18977*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_min_64
/* 18979*/        OPC_Scope, 13, /*->18994*/ // 5 children in Scope
/* 18981*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_min_64_monotonic
/* 18983*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18985*/          OPC_EmitMergeInputChains1_0,
/* 18986*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_D), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_min:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_min_64>><<P:Predicate_atomic_load_min_64_monotonic>> - Complexity = 4
                    // Dst: (AMOMIN_D:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 18994*/        /*Scope*/ 13, /*->19008*/
/* 18995*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_min_64_acquire
/* 18997*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 18999*/          OPC_EmitMergeInputChains1_0,
/* 19000*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_min:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_min_64>><<P:Predicate_atomic_load_min_64_acquire>> - Complexity = 4
                    // Dst: (AMOMIN_D_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19008*/        /*Scope*/ 13, /*->19022*/
/* 19009*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_min_64_release
/* 19011*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19013*/          OPC_EmitMergeInputChains1_0,
/* 19014*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_min:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_min_64>><<P:Predicate_atomic_load_min_64_release>> - Complexity = 4
                    // Dst: (AMOMIN_D_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19022*/        /*Scope*/ 13, /*->19036*/
/* 19023*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_min_64_acq_rel
/* 19025*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19027*/          OPC_EmitMergeInputChains1_0,
/* 19028*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_min:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_min_64>><<P:Predicate_atomic_load_min_64_acq_rel>> - Complexity = 4
                    // Dst: (AMOMIN_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19036*/        /*Scope*/ 13, /*->19050*/
/* 19037*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_min_64_seq_cst
/* 19039*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19041*/          OPC_EmitMergeInputChains1_0,
/* 19042*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMIN_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_min:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_min_64>><<P:Predicate_atomic_load_min_64_seq_cst>> - Complexity = 4
                    // Dst: (AMOMIN_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19050*/        0, /*End of Scope*/
/* 19051*/      0, /*End of Scope*/
/* 19052*/    0, // EndSwitchType
/* 19053*/  /*SwitchOpcode*/ 89|128,3/*473*/, TARGET_VAL(ISD::ATOMIC_LOAD_UMAX),// ->19530
/* 19057*/    OPC_RecordMemRef,
/* 19058*/    OPC_RecordNode, // #0 = 'atomic_load_umax' chained node
/* 19059*/    OPC_RecordChild1, // #1 = $rs1
/* 19060*/    OPC_SwitchType /*2 cases */, 51|128,2/*307*/, MVT::i32,// ->19371
/* 19064*/      OPC_CheckChild1Type, MVT::i32,
/* 19066*/      OPC_RecordChild2, // #2 = $rs2
/* 19067*/      OPC_Scope, 21|128,1/*149*/, /*->19219*/ // 2 children in Scope
/* 19070*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_umax_32
/* 19072*/        OPC_Scope, 28, /*->19102*/ // 5 children in Scope
/* 19074*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_umax_32_monotonic
/* 19076*/          OPC_Scope, 11, /*->19089*/ // 2 children in Scope
/* 19078*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19080*/            OPC_EmitMergeInputChains1_0,
/* 19081*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_32>><<P:Predicate_atomic_load_umax_32_monotonic>> - Complexity = 4
                      // Dst: (AMOMAXU_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19089*/          /*Scope*/ 11, /*->19101*/
/* 19090*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 19092*/            OPC_EmitMergeInputChains1_0,
/* 19093*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_32>><<P:Predicate_atomic_load_umax_32_monotonic>> - Complexity = 4
                      // Dst: (AMOMAXU_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19101*/          0, /*End of Scope*/
/* 19102*/        /*Scope*/ 28, /*->19131*/
/* 19103*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_umax_32_acquire
/* 19105*/          OPC_Scope, 11, /*->19118*/ // 2 children in Scope
/* 19107*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19109*/            OPC_EmitMergeInputChains1_0,
/* 19110*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_32>><<P:Predicate_atomic_load_umax_32_acquire>> - Complexity = 4
                      // Dst: (AMOMAXU_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19118*/          /*Scope*/ 11, /*->19130*/
/* 19119*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 19121*/            OPC_EmitMergeInputChains1_0,
/* 19122*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_32>><<P:Predicate_atomic_load_umax_32_acquire>> - Complexity = 4
                      // Dst: (AMOMAXU_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19130*/          0, /*End of Scope*/
/* 19131*/        /*Scope*/ 28, /*->19160*/
/* 19132*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_umax_32_release
/* 19134*/          OPC_Scope, 11, /*->19147*/ // 2 children in Scope
/* 19136*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19138*/            OPC_EmitMergeInputChains1_0,
/* 19139*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_32>><<P:Predicate_atomic_load_umax_32_release>> - Complexity = 4
                      // Dst: (AMOMAXU_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19147*/          /*Scope*/ 11, /*->19159*/
/* 19148*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 19150*/            OPC_EmitMergeInputChains1_0,
/* 19151*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_32>><<P:Predicate_atomic_load_umax_32_release>> - Complexity = 4
                      // Dst: (AMOMAXU_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19159*/          0, /*End of Scope*/
/* 19160*/        /*Scope*/ 28, /*->19189*/
/* 19161*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_umax_32_acq_rel
/* 19163*/          OPC_Scope, 11, /*->19176*/ // 2 children in Scope
/* 19165*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19167*/            OPC_EmitMergeInputChains1_0,
/* 19168*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_32>><<P:Predicate_atomic_load_umax_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOMAXU_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19176*/          /*Scope*/ 11, /*->19188*/
/* 19177*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 19179*/            OPC_EmitMergeInputChains1_0,
/* 19180*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_32>><<P:Predicate_atomic_load_umax_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOMAXU_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19188*/          0, /*End of Scope*/
/* 19189*/        /*Scope*/ 28, /*->19218*/
/* 19190*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_umax_32_seq_cst
/* 19192*/          OPC_Scope, 11, /*->19205*/ // 2 children in Scope
/* 19194*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19196*/            OPC_EmitMergeInputChains1_0,
/* 19197*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_32>><<P:Predicate_atomic_load_umax_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOMAXU_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19205*/          /*Scope*/ 11, /*->19217*/
/* 19206*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 19208*/            OPC_EmitMergeInputChains1_0,
/* 19209*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_32>><<P:Predicate_atomic_load_umax_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOMAXU_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19217*/          0, /*End of Scope*/
/* 19218*/        0, /*End of Scope*/
/* 19219*/      /*Scope*/ 21|128,1/*149*/, /*->19370*/
/* 19221*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_umax_64
/* 19223*/        OPC_Scope, 28, /*->19253*/ // 5 children in Scope
/* 19225*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_umax_64_monotonic
/* 19227*/          OPC_Scope, 11, /*->19240*/ // 2 children in Scope
/* 19229*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19231*/            OPC_EmitMergeInputChains1_0,
/* 19232*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_64>><<P:Predicate_atomic_load_umax_64_monotonic>> - Complexity = 4
                      // Dst: (AMOMAXU_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19240*/          /*Scope*/ 11, /*->19252*/
/* 19241*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 19243*/            OPC_EmitMergeInputChains1_0,
/* 19244*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_64>><<P:Predicate_atomic_load_umax_64_monotonic>> - Complexity = 4
                      // Dst: (AMOMAXU_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19252*/          0, /*End of Scope*/
/* 19253*/        /*Scope*/ 28, /*->19282*/
/* 19254*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_umax_64_acquire
/* 19256*/          OPC_Scope, 11, /*->19269*/ // 2 children in Scope
/* 19258*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19260*/            OPC_EmitMergeInputChains1_0,
/* 19261*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_64>><<P:Predicate_atomic_load_umax_64_acquire>> - Complexity = 4
                      // Dst: (AMOMAXU_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19269*/          /*Scope*/ 11, /*->19281*/
/* 19270*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 19272*/            OPC_EmitMergeInputChains1_0,
/* 19273*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_64>><<P:Predicate_atomic_load_umax_64_acquire>> - Complexity = 4
                      // Dst: (AMOMAXU_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19281*/          0, /*End of Scope*/
/* 19282*/        /*Scope*/ 28, /*->19311*/
/* 19283*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_umax_64_release
/* 19285*/          OPC_Scope, 11, /*->19298*/ // 2 children in Scope
/* 19287*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19289*/            OPC_EmitMergeInputChains1_0,
/* 19290*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_64>><<P:Predicate_atomic_load_umax_64_release>> - Complexity = 4
                      // Dst: (AMOMAXU_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19298*/          /*Scope*/ 11, /*->19310*/
/* 19299*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 19301*/            OPC_EmitMergeInputChains1_0,
/* 19302*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_64>><<P:Predicate_atomic_load_umax_64_release>> - Complexity = 4
                      // Dst: (AMOMAXU_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19310*/          0, /*End of Scope*/
/* 19311*/        /*Scope*/ 28, /*->19340*/
/* 19312*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_umax_64_acq_rel
/* 19314*/          OPC_Scope, 11, /*->19327*/ // 2 children in Scope
/* 19316*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19318*/            OPC_EmitMergeInputChains1_0,
/* 19319*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_64>><<P:Predicate_atomic_load_umax_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOMAXU_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19327*/          /*Scope*/ 11, /*->19339*/
/* 19328*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 19330*/            OPC_EmitMergeInputChains1_0,
/* 19331*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_64>><<P:Predicate_atomic_load_umax_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOMAXU_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19339*/          0, /*End of Scope*/
/* 19340*/        /*Scope*/ 28, /*->19369*/
/* 19341*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_umax_64_seq_cst
/* 19343*/          OPC_Scope, 11, /*->19356*/ // 2 children in Scope
/* 19345*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19347*/            OPC_EmitMergeInputChains1_0,
/* 19348*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_64>><<P:Predicate_atomic_load_umax_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOMAXU_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19356*/          /*Scope*/ 11, /*->19368*/
/* 19357*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 19359*/            OPC_EmitMergeInputChains1_0,
/* 19360*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umax:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umax_64>><<P:Predicate_atomic_load_umax_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOMAXU_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19368*/          0, /*End of Scope*/
/* 19369*/        0, /*End of Scope*/
/* 19370*/      0, /*End of Scope*/
/* 19371*/    /*SwitchType*/ 27|128,1/*155*/, MVT::i64,// ->19529
/* 19374*/      OPC_CheckChild1Type, MVT::i64,
/* 19376*/      OPC_RecordChild2, // #2 = $rs2
/* 19377*/      OPC_Scope, 74, /*->19453*/ // 2 children in Scope
/* 19379*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_umax_32
/* 19381*/        OPC_Scope, 13, /*->19396*/ // 5 children in Scope
/* 19383*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_umax_32_monotonic
/* 19385*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19387*/          OPC_EmitMergeInputChains1_0,
/* 19388*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_W), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umax:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umax_32>><<P:Predicate_atomic_load_umax_32_monotonic>> - Complexity = 4
                    // Dst: (AMOMAXU_W:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19396*/        /*Scope*/ 13, /*->19410*/
/* 19397*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_umax_32_acquire
/* 19399*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19401*/          OPC_EmitMergeInputChains1_0,
/* 19402*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umax:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umax_32>><<P:Predicate_atomic_load_umax_32_acquire>> - Complexity = 4
                    // Dst: (AMOMAXU_W_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19410*/        /*Scope*/ 13, /*->19424*/
/* 19411*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_umax_32_release
/* 19413*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19415*/          OPC_EmitMergeInputChains1_0,
/* 19416*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umax:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umax_32>><<P:Predicate_atomic_load_umax_32_release>> - Complexity = 4
                    // Dst: (AMOMAXU_W_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19424*/        /*Scope*/ 13, /*->19438*/
/* 19425*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_umax_32_acq_rel
/* 19427*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19429*/          OPC_EmitMergeInputChains1_0,
/* 19430*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umax:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umax_32>><<P:Predicate_atomic_load_umax_32_acq_rel>> - Complexity = 4
                    // Dst: (AMOMAXU_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19438*/        /*Scope*/ 13, /*->19452*/
/* 19439*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_umax_32_seq_cst
/* 19441*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19443*/          OPC_EmitMergeInputChains1_0,
/* 19444*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umax:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umax_32>><<P:Predicate_atomic_load_umax_32_seq_cst>> - Complexity = 4
                    // Dst: (AMOMAXU_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19452*/        0, /*End of Scope*/
/* 19453*/      /*Scope*/ 74, /*->19528*/
/* 19454*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_umax_64
/* 19456*/        OPC_Scope, 13, /*->19471*/ // 5 children in Scope
/* 19458*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_umax_64_monotonic
/* 19460*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19462*/          OPC_EmitMergeInputChains1_0,
/* 19463*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_D), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umax:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umax_64>><<P:Predicate_atomic_load_umax_64_monotonic>> - Complexity = 4
                    // Dst: (AMOMAXU_D:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19471*/        /*Scope*/ 13, /*->19485*/
/* 19472*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_umax_64_acquire
/* 19474*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19476*/          OPC_EmitMergeInputChains1_0,
/* 19477*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umax:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umax_64>><<P:Predicate_atomic_load_umax_64_acquire>> - Complexity = 4
                    // Dst: (AMOMAXU_D_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19485*/        /*Scope*/ 13, /*->19499*/
/* 19486*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_umax_64_release
/* 19488*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19490*/          OPC_EmitMergeInputChains1_0,
/* 19491*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umax:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umax_64>><<P:Predicate_atomic_load_umax_64_release>> - Complexity = 4
                    // Dst: (AMOMAXU_D_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19499*/        /*Scope*/ 13, /*->19513*/
/* 19500*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_umax_64_acq_rel
/* 19502*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19504*/          OPC_EmitMergeInputChains1_0,
/* 19505*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umax:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umax_64>><<P:Predicate_atomic_load_umax_64_acq_rel>> - Complexity = 4
                    // Dst: (AMOMAXU_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19513*/        /*Scope*/ 13, /*->19527*/
/* 19514*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_umax_64_seq_cst
/* 19516*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19518*/          OPC_EmitMergeInputChains1_0,
/* 19519*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMAXU_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umax:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umax_64>><<P:Predicate_atomic_load_umax_64_seq_cst>> - Complexity = 4
                    // Dst: (AMOMAXU_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19527*/        0, /*End of Scope*/
/* 19528*/      0, /*End of Scope*/
/* 19529*/    0, // EndSwitchType
/* 19530*/  /*SwitchOpcode*/ 89|128,3/*473*/, TARGET_VAL(ISD::ATOMIC_LOAD_UMIN),// ->20007
/* 19534*/    OPC_RecordMemRef,
/* 19535*/    OPC_RecordNode, // #0 = 'atomic_load_umin' chained node
/* 19536*/    OPC_RecordChild1, // #1 = $rs1
/* 19537*/    OPC_SwitchType /*2 cases */, 51|128,2/*307*/, MVT::i32,// ->19848
/* 19541*/      OPC_CheckChild1Type, MVT::i32,
/* 19543*/      OPC_RecordChild2, // #2 = $rs2
/* 19544*/      OPC_Scope, 21|128,1/*149*/, /*->19696*/ // 2 children in Scope
/* 19547*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_umin_32
/* 19549*/        OPC_Scope, 28, /*->19579*/ // 5 children in Scope
/* 19551*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_umin_32_monotonic
/* 19553*/          OPC_Scope, 11, /*->19566*/ // 2 children in Scope
/* 19555*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19557*/            OPC_EmitMergeInputChains1_0,
/* 19558*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_32>><<P:Predicate_atomic_load_umin_32_monotonic>> - Complexity = 4
                      // Dst: (AMOMINU_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19566*/          /*Scope*/ 11, /*->19578*/
/* 19567*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 19569*/            OPC_EmitMergeInputChains1_0,
/* 19570*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_32>><<P:Predicate_atomic_load_umin_32_monotonic>> - Complexity = 4
                      // Dst: (AMOMINU_W:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19578*/          0, /*End of Scope*/
/* 19579*/        /*Scope*/ 28, /*->19608*/
/* 19580*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_umin_32_acquire
/* 19582*/          OPC_Scope, 11, /*->19595*/ // 2 children in Scope
/* 19584*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19586*/            OPC_EmitMergeInputChains1_0,
/* 19587*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_32>><<P:Predicate_atomic_load_umin_32_acquire>> - Complexity = 4
                      // Dst: (AMOMINU_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19595*/          /*Scope*/ 11, /*->19607*/
/* 19596*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 19598*/            OPC_EmitMergeInputChains1_0,
/* 19599*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_32>><<P:Predicate_atomic_load_umin_32_acquire>> - Complexity = 4
                      // Dst: (AMOMINU_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19607*/          0, /*End of Scope*/
/* 19608*/        /*Scope*/ 28, /*->19637*/
/* 19609*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_umin_32_release
/* 19611*/          OPC_Scope, 11, /*->19624*/ // 2 children in Scope
/* 19613*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19615*/            OPC_EmitMergeInputChains1_0,
/* 19616*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_32>><<P:Predicate_atomic_load_umin_32_release>> - Complexity = 4
                      // Dst: (AMOMINU_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19624*/          /*Scope*/ 11, /*->19636*/
/* 19625*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 19627*/            OPC_EmitMergeInputChains1_0,
/* 19628*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_32>><<P:Predicate_atomic_load_umin_32_release>> - Complexity = 4
                      // Dst: (AMOMINU_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19636*/          0, /*End of Scope*/
/* 19637*/        /*Scope*/ 28, /*->19666*/
/* 19638*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_umin_32_acq_rel
/* 19640*/          OPC_Scope, 11, /*->19653*/ // 2 children in Scope
/* 19642*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19644*/            OPC_EmitMergeInputChains1_0,
/* 19645*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_32>><<P:Predicate_atomic_load_umin_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOMINU_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19653*/          /*Scope*/ 11, /*->19665*/
/* 19654*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 19656*/            OPC_EmitMergeInputChains1_0,
/* 19657*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_32>><<P:Predicate_atomic_load_umin_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOMINU_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19665*/          0, /*End of Scope*/
/* 19666*/        /*Scope*/ 28, /*->19695*/
/* 19667*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_umin_32_seq_cst
/* 19669*/          OPC_Scope, 11, /*->19682*/ // 2 children in Scope
/* 19671*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19673*/            OPC_EmitMergeInputChains1_0,
/* 19674*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_32>><<P:Predicate_atomic_load_umin_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOMINU_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19682*/          /*Scope*/ 11, /*->19694*/
/* 19683*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 19685*/            OPC_EmitMergeInputChains1_0,
/* 19686*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_32>><<P:Predicate_atomic_load_umin_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOMINU_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19694*/          0, /*End of Scope*/
/* 19695*/        0, /*End of Scope*/
/* 19696*/      /*Scope*/ 21|128,1/*149*/, /*->19847*/
/* 19698*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_umin_64
/* 19700*/        OPC_Scope, 28, /*->19730*/ // 5 children in Scope
/* 19702*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_umin_64_monotonic
/* 19704*/          OPC_Scope, 11, /*->19717*/ // 2 children in Scope
/* 19706*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19708*/            OPC_EmitMergeInputChains1_0,
/* 19709*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_64>><<P:Predicate_atomic_load_umin_64_monotonic>> - Complexity = 4
                      // Dst: (AMOMINU_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19717*/          /*Scope*/ 11, /*->19729*/
/* 19718*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 19720*/            OPC_EmitMergeInputChains1_0,
/* 19721*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_64>><<P:Predicate_atomic_load_umin_64_monotonic>> - Complexity = 4
                      // Dst: (AMOMINU_D:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19729*/          0, /*End of Scope*/
/* 19730*/        /*Scope*/ 28, /*->19759*/
/* 19731*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_umin_64_acquire
/* 19733*/          OPC_Scope, 11, /*->19746*/ // 2 children in Scope
/* 19735*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19737*/            OPC_EmitMergeInputChains1_0,
/* 19738*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_64>><<P:Predicate_atomic_load_umin_64_acquire>> - Complexity = 4
                      // Dst: (AMOMINU_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19746*/          /*Scope*/ 11, /*->19758*/
/* 19747*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 19749*/            OPC_EmitMergeInputChains1_0,
/* 19750*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_64>><<P:Predicate_atomic_load_umin_64_acquire>> - Complexity = 4
                      // Dst: (AMOMINU_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19758*/          0, /*End of Scope*/
/* 19759*/        /*Scope*/ 28, /*->19788*/
/* 19760*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_umin_64_release
/* 19762*/          OPC_Scope, 11, /*->19775*/ // 2 children in Scope
/* 19764*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19766*/            OPC_EmitMergeInputChains1_0,
/* 19767*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_64>><<P:Predicate_atomic_load_umin_64_release>> - Complexity = 4
                      // Dst: (AMOMINU_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19775*/          /*Scope*/ 11, /*->19787*/
/* 19776*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 19778*/            OPC_EmitMergeInputChains1_0,
/* 19779*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_64>><<P:Predicate_atomic_load_umin_64_release>> - Complexity = 4
                      // Dst: (AMOMINU_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19787*/          0, /*End of Scope*/
/* 19788*/        /*Scope*/ 28, /*->19817*/
/* 19789*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_umin_64_acq_rel
/* 19791*/          OPC_Scope, 11, /*->19804*/ // 2 children in Scope
/* 19793*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19795*/            OPC_EmitMergeInputChains1_0,
/* 19796*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_64>><<P:Predicate_atomic_load_umin_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOMINU_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19804*/          /*Scope*/ 11, /*->19816*/
/* 19805*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 19807*/            OPC_EmitMergeInputChains1_0,
/* 19808*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_64>><<P:Predicate_atomic_load_umin_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOMINU_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19816*/          0, /*End of Scope*/
/* 19817*/        /*Scope*/ 28, /*->19846*/
/* 19818*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_umin_64_seq_cst
/* 19820*/          OPC_Scope, 11, /*->19833*/ // 2 children in Scope
/* 19822*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 19824*/            OPC_EmitMergeInputChains1_0,
/* 19825*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_64>><<P:Predicate_atomic_load_umin_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOMINU_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19833*/          /*Scope*/ 11, /*->19845*/
/* 19834*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 19836*/            OPC_EmitMergeInputChains1_0,
/* 19837*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 2,
                      // Src: (atomic_load_umin:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)<<P:Predicate_atomic_load_umin_64>><<P:Predicate_atomic_load_umin_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOMINU_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 19845*/          0, /*End of Scope*/
/* 19846*/        0, /*End of Scope*/
/* 19847*/      0, /*End of Scope*/
/* 19848*/    /*SwitchType*/ 27|128,1/*155*/, MVT::i64,// ->20006
/* 19851*/      OPC_CheckChild1Type, MVT::i64,
/* 19853*/      OPC_RecordChild2, // #2 = $rs2
/* 19854*/      OPC_Scope, 74, /*->19930*/ // 2 children in Scope
/* 19856*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_umin_32
/* 19858*/        OPC_Scope, 13, /*->19873*/ // 5 children in Scope
/* 19860*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_umin_32_monotonic
/* 19862*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19864*/          OPC_EmitMergeInputChains1_0,
/* 19865*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_W), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umin:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umin_32>><<P:Predicate_atomic_load_umin_32_monotonic>> - Complexity = 4
                    // Dst: (AMOMINU_W:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19873*/        /*Scope*/ 13, /*->19887*/
/* 19874*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_umin_32_acquire
/* 19876*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19878*/          OPC_EmitMergeInputChains1_0,
/* 19879*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umin:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umin_32>><<P:Predicate_atomic_load_umin_32_acquire>> - Complexity = 4
                    // Dst: (AMOMINU_W_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19887*/        /*Scope*/ 13, /*->19901*/
/* 19888*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_umin_32_release
/* 19890*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19892*/          OPC_EmitMergeInputChains1_0,
/* 19893*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umin:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umin_32>><<P:Predicate_atomic_load_umin_32_release>> - Complexity = 4
                    // Dst: (AMOMINU_W_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19901*/        /*Scope*/ 13, /*->19915*/
/* 19902*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_umin_32_acq_rel
/* 19904*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19906*/          OPC_EmitMergeInputChains1_0,
/* 19907*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umin:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umin_32>><<P:Predicate_atomic_load_umin_32_acq_rel>> - Complexity = 4
                    // Dst: (AMOMINU_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19915*/        /*Scope*/ 13, /*->19929*/
/* 19916*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_umin_32_seq_cst
/* 19918*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19920*/          OPC_EmitMergeInputChains1_0,
/* 19921*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umin:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umin_32>><<P:Predicate_atomic_load_umin_32_seq_cst>> - Complexity = 4
                    // Dst: (AMOMINU_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19929*/        0, /*End of Scope*/
/* 19930*/      /*Scope*/ 74, /*->20005*/
/* 19931*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_umin_64
/* 19933*/        OPC_Scope, 13, /*->19948*/ // 5 children in Scope
/* 19935*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_umin_64_monotonic
/* 19937*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19939*/          OPC_EmitMergeInputChains1_0,
/* 19940*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_D), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umin:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umin_64>><<P:Predicate_atomic_load_umin_64_monotonic>> - Complexity = 4
                    // Dst: (AMOMINU_D:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19948*/        /*Scope*/ 13, /*->19962*/
/* 19949*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_umin_64_acquire
/* 19951*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19953*/          OPC_EmitMergeInputChains1_0,
/* 19954*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umin:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umin_64>><<P:Predicate_atomic_load_umin_64_acquire>> - Complexity = 4
                    // Dst: (AMOMINU_D_AQ:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19962*/        /*Scope*/ 13, /*->19976*/
/* 19963*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_umin_64_release
/* 19965*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19967*/          OPC_EmitMergeInputChains1_0,
/* 19968*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umin:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umin_64>><<P:Predicate_atomic_load_umin_64_release>> - Complexity = 4
                    // Dst: (AMOMINU_D_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19976*/        /*Scope*/ 13, /*->19990*/
/* 19977*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_umin_64_acq_rel
/* 19979*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19981*/          OPC_EmitMergeInputChains1_0,
/* 19982*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umin:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umin_64>><<P:Predicate_atomic_load_umin_64_acq_rel>> - Complexity = 4
                    // Dst: (AMOMINU_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 19990*/        /*Scope*/ 13, /*->20004*/
/* 19991*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_umin_64_seq_cst
/* 19993*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 19995*/          OPC_EmitMergeInputChains1_0,
/* 19996*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOMINU_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 2,
                    // Src: (atomic_load_umin:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)<<P:Predicate_atomic_load_umin_64>><<P:Predicate_atomic_load_umin_64_seq_cst>> - Complexity = 4
                    // Dst: (AMOMINU_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 20004*/        0, /*End of Scope*/
/* 20005*/      0, /*End of Scope*/
/* 20006*/    0, // EndSwitchType
/* 20007*/  /*SwitchOpcode*/ 111|128,4/*623*/, TARGET_VAL(ISD::ATOMIC_LOAD_NAND),// ->20634
/* 20011*/    OPC_RecordMemRef,
/* 20012*/    OPC_RecordNode, // #0 = 'atomic_load_nand' chained node
/* 20013*/    OPC_RecordChild1, // #1 = $addr
/* 20014*/    OPC_SwitchType /*2 cases */, 23|128,3/*407*/, MVT::i32,// ->20425
/* 20018*/      OPC_CheckChild1Type, MVT::i32,
/* 20020*/      OPC_RecordChild2, // #2 = $incr
/* 20021*/      OPC_Scope, 71|128,1/*199*/, /*->20223*/ // 2 children in Scope
/* 20024*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_nand_32
/* 20026*/        OPC_Scope, 38, /*->20066*/ // 5 children in Scope
/* 20028*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_nand_32_monotonic
/* 20030*/          OPC_Scope, 16, /*->20048*/ // 2 children in Scope
/* 20032*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20034*/            OPC_EmitMergeInputChains1_0,
/* 20035*/            OPC_EmitInteger, MVT::i32, 2,
/* 20038*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_32>><<P:Predicate_atomic_load_nand_32_monotonic>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 2:{ *:[i32] })
/* 20048*/          /*Scope*/ 16, /*->20065*/
/* 20049*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 20051*/            OPC_EmitMergeInputChains1_0,
/* 20052*/            OPC_EmitInteger, MVT::i32, 2,
/* 20055*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_32>><<P:Predicate_atomic_load_nand_32_monotonic>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 2:{ *:[i32] })
/* 20065*/          0, /*End of Scope*/
/* 20066*/        /*Scope*/ 38, /*->20105*/
/* 20067*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_nand_32_acquire
/* 20069*/          OPC_Scope, 16, /*->20087*/ // 2 children in Scope
/* 20071*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20073*/            OPC_EmitMergeInputChains1_0,
/* 20074*/            OPC_EmitInteger, MVT::i32, 4,
/* 20077*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_32>><<P:Predicate_atomic_load_nand_32_acquire>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 4:{ *:[i32] })
/* 20087*/          /*Scope*/ 16, /*->20104*/
/* 20088*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 20090*/            OPC_EmitMergeInputChains1_0,
/* 20091*/            OPC_EmitInteger, MVT::i32, 4,
/* 20094*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_32>><<P:Predicate_atomic_load_nand_32_acquire>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 4:{ *:[i32] })
/* 20104*/          0, /*End of Scope*/
/* 20105*/        /*Scope*/ 38, /*->20144*/
/* 20106*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_nand_32_release
/* 20108*/          OPC_Scope, 16, /*->20126*/ // 2 children in Scope
/* 20110*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20112*/            OPC_EmitMergeInputChains1_0,
/* 20113*/            OPC_EmitInteger, MVT::i32, 5,
/* 20116*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_32>><<P:Predicate_atomic_load_nand_32_release>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 5:{ *:[i32] })
/* 20126*/          /*Scope*/ 16, /*->20143*/
/* 20127*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 20129*/            OPC_EmitMergeInputChains1_0,
/* 20130*/            OPC_EmitInteger, MVT::i32, 5,
/* 20133*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_32>><<P:Predicate_atomic_load_nand_32_release>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 5:{ *:[i32] })
/* 20143*/          0, /*End of Scope*/
/* 20144*/        /*Scope*/ 38, /*->20183*/
/* 20145*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_nand_32_acq_rel
/* 20147*/          OPC_Scope, 16, /*->20165*/ // 2 children in Scope
/* 20149*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20151*/            OPC_EmitMergeInputChains1_0,
/* 20152*/            OPC_EmitInteger, MVT::i32, 6,
/* 20155*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_32>><<P:Predicate_atomic_load_nand_32_acq_rel>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 6:{ *:[i32] })
/* 20165*/          /*Scope*/ 16, /*->20182*/
/* 20166*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 20168*/            OPC_EmitMergeInputChains1_0,
/* 20169*/            OPC_EmitInteger, MVT::i32, 6,
/* 20172*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_32>><<P:Predicate_atomic_load_nand_32_acq_rel>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 6:{ *:[i32] })
/* 20182*/          0, /*End of Scope*/
/* 20183*/        /*Scope*/ 38, /*->20222*/
/* 20184*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_nand_32_seq_cst
/* 20186*/          OPC_Scope, 16, /*->20204*/ // 2 children in Scope
/* 20188*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20190*/            OPC_EmitMergeInputChains1_0,
/* 20191*/            OPC_EmitInteger, MVT::i32, 7,
/* 20194*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_32>><<P:Predicate_atomic_load_nand_32_seq_cst>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 7:{ *:[i32] })
/* 20204*/          /*Scope*/ 16, /*->20221*/
/* 20205*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 20207*/            OPC_EmitMergeInputChains1_0,
/* 20208*/            OPC_EmitInteger, MVT::i32, 7,
/* 20211*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_32>><<P:Predicate_atomic_load_nand_32_seq_cst>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 7:{ *:[i32] })
/* 20221*/          0, /*End of Scope*/
/* 20222*/        0, /*End of Scope*/
/* 20223*/      /*Scope*/ 71|128,1/*199*/, /*->20424*/
/* 20225*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_nand_64
/* 20227*/        OPC_Scope, 38, /*->20267*/ // 5 children in Scope
/* 20229*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_nand_64_monotonic
/* 20231*/          OPC_Scope, 16, /*->20249*/ // 2 children in Scope
/* 20233*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20235*/            OPC_EmitMergeInputChains1_0,
/* 20236*/            OPC_EmitInteger, MVT::i32, 2,
/* 20239*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_64>><<P:Predicate_atomic_load_nand_64_monotonic>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 2:{ *:[i32] })
/* 20249*/          /*Scope*/ 16, /*->20266*/
/* 20250*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 20252*/            OPC_EmitMergeInputChains1_0,
/* 20253*/            OPC_EmitInteger, MVT::i32, 2,
/* 20256*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_64>><<P:Predicate_atomic_load_nand_64_monotonic>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 2:{ *:[i32] })
/* 20266*/          0, /*End of Scope*/
/* 20267*/        /*Scope*/ 38, /*->20306*/
/* 20268*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_nand_64_acquire
/* 20270*/          OPC_Scope, 16, /*->20288*/ // 2 children in Scope
/* 20272*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20274*/            OPC_EmitMergeInputChains1_0,
/* 20275*/            OPC_EmitInteger, MVT::i32, 4,
/* 20278*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_64>><<P:Predicate_atomic_load_nand_64_acquire>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 4:{ *:[i32] })
/* 20288*/          /*Scope*/ 16, /*->20305*/
/* 20289*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 20291*/            OPC_EmitMergeInputChains1_0,
/* 20292*/            OPC_EmitInteger, MVT::i32, 4,
/* 20295*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_64>><<P:Predicate_atomic_load_nand_64_acquire>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 4:{ *:[i32] })
/* 20305*/          0, /*End of Scope*/
/* 20306*/        /*Scope*/ 38, /*->20345*/
/* 20307*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_nand_64_release
/* 20309*/          OPC_Scope, 16, /*->20327*/ // 2 children in Scope
/* 20311*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20313*/            OPC_EmitMergeInputChains1_0,
/* 20314*/            OPC_EmitInteger, MVT::i32, 5,
/* 20317*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_64>><<P:Predicate_atomic_load_nand_64_release>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 5:{ *:[i32] })
/* 20327*/          /*Scope*/ 16, /*->20344*/
/* 20328*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 20330*/            OPC_EmitMergeInputChains1_0,
/* 20331*/            OPC_EmitInteger, MVT::i32, 5,
/* 20334*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_64>><<P:Predicate_atomic_load_nand_64_release>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 5:{ *:[i32] })
/* 20344*/          0, /*End of Scope*/
/* 20345*/        /*Scope*/ 38, /*->20384*/
/* 20346*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_nand_64_acq_rel
/* 20348*/          OPC_Scope, 16, /*->20366*/ // 2 children in Scope
/* 20350*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20352*/            OPC_EmitMergeInputChains1_0,
/* 20353*/            OPC_EmitInteger, MVT::i32, 6,
/* 20356*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_64>><<P:Predicate_atomic_load_nand_64_acq_rel>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 6:{ *:[i32] })
/* 20366*/          /*Scope*/ 16, /*->20383*/
/* 20367*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 20369*/            OPC_EmitMergeInputChains1_0,
/* 20370*/            OPC_EmitInteger, MVT::i32, 6,
/* 20373*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_64>><<P:Predicate_atomic_load_nand_64_acq_rel>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 6:{ *:[i32] })
/* 20383*/          0, /*End of Scope*/
/* 20384*/        /*Scope*/ 38, /*->20423*/
/* 20385*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_nand_64_seq_cst
/* 20387*/          OPC_Scope, 16, /*->20405*/ // 2 children in Scope
/* 20389*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20391*/            OPC_EmitMergeInputChains1_0,
/* 20392*/            OPC_EmitInteger, MVT::i32, 7,
/* 20395*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_64>><<P:Predicate_atomic_load_nand_64_seq_cst>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 7:{ *:[i32] })
/* 20405*/          /*Scope*/ 16, /*->20422*/
/* 20406*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 20408*/            OPC_EmitMergeInputChains1_0,
/* 20409*/            OPC_EmitInteger, MVT::i32, 7,
/* 20412*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 3/*#Ops*/, 1, 2, 3,
                      // Src: (atomic_load_nand:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_nand_64>><<P:Predicate_atomic_load_nand_64_seq_cst>> - Complexity = 4
                      // Dst: (PseudoAtomicLoadNand64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr, 7:{ *:[i32] })
/* 20422*/          0, /*End of Scope*/
/* 20423*/        0, /*End of Scope*/
/* 20424*/      0, /*End of Scope*/
/* 20425*/    /*SwitchType*/ 77|128,1/*205*/, MVT::i64,// ->20633
/* 20428*/      OPC_CheckChild1Type, MVT::i64,
/* 20430*/      OPC_RecordChild2, // #2 = $incr
/* 20431*/      OPC_Scope, 99, /*->20532*/ // 2 children in Scope
/* 20433*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_nand_32
/* 20435*/        OPC_Scope, 18, /*->20455*/ // 5 children in Scope
/* 20437*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_nand_32_monotonic
/* 20439*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 20441*/          OPC_EmitMergeInputChains1_0,
/* 20442*/          OPC_EmitInteger, MVT::i64, 2,
/* 20445*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 3/*#Ops*/, 1, 2, 3,
                    // Src: (atomic_load_nand:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_nand_32>><<P:Predicate_atomic_load_nand_32_monotonic>> - Complexity = 4
                    // Dst: (PseudoAtomicLoadNand32:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, 2:{ *:[i64] })
/* 20455*/        /*Scope*/ 18, /*->20474*/
/* 20456*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_nand_32_acquire
/* 20458*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 20460*/          OPC_EmitMergeInputChains1_0,
/* 20461*/          OPC_EmitInteger, MVT::i64, 4,
/* 20464*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 3/*#Ops*/, 1, 2, 3,
                    // Src: (atomic_load_nand:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_nand_32>><<P:Predicate_atomic_load_nand_32_acquire>> - Complexity = 4
                    // Dst: (PseudoAtomicLoadNand32:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, 4:{ *:[i64] })
/* 20474*/        /*Scope*/ 18, /*->20493*/
/* 20475*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_nand_32_release
/* 20477*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 20479*/          OPC_EmitMergeInputChains1_0,
/* 20480*/          OPC_EmitInteger, MVT::i64, 5,
/* 20483*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 3/*#Ops*/, 1, 2, 3,
                    // Src: (atomic_load_nand:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_nand_32>><<P:Predicate_atomic_load_nand_32_release>> - Complexity = 4
                    // Dst: (PseudoAtomicLoadNand32:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, 5:{ *:[i64] })
/* 20493*/        /*Scope*/ 18, /*->20512*/
/* 20494*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_nand_32_acq_rel
/* 20496*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 20498*/          OPC_EmitMergeInputChains1_0,
/* 20499*/          OPC_EmitInteger, MVT::i64, 6,
/* 20502*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 3/*#Ops*/, 1, 2, 3,
                    // Src: (atomic_load_nand:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_nand_32>><<P:Predicate_atomic_load_nand_32_acq_rel>> - Complexity = 4
                    // Dst: (PseudoAtomicLoadNand32:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, 6:{ *:[i64] })
/* 20512*/        /*Scope*/ 18, /*->20531*/
/* 20513*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_nand_32_seq_cst
/* 20515*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 20517*/          OPC_EmitMergeInputChains1_0,
/* 20518*/          OPC_EmitInteger, MVT::i64, 7,
/* 20521*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 3/*#Ops*/, 1, 2, 3,
                    // Src: (atomic_load_nand:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_nand_32>><<P:Predicate_atomic_load_nand_32_seq_cst>> - Complexity = 4
                    // Dst: (PseudoAtomicLoadNand32:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, 7:{ *:[i64] })
/* 20531*/        0, /*End of Scope*/
/* 20532*/      /*Scope*/ 99, /*->20632*/
/* 20533*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_nand_64
/* 20535*/        OPC_Scope, 18, /*->20555*/ // 5 children in Scope
/* 20537*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_nand_64_monotonic
/* 20539*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 20541*/          OPC_EmitMergeInputChains1_0,
/* 20542*/          OPC_EmitInteger, MVT::i64, 2,
/* 20545*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 3/*#Ops*/, 1, 2, 3,
                    // Src: (atomic_load_nand:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_nand_64>><<P:Predicate_atomic_load_nand_64_monotonic>> - Complexity = 4
                    // Dst: (PseudoAtomicLoadNand64:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, 2:{ *:[i64] })
/* 20555*/        /*Scope*/ 18, /*->20574*/
/* 20556*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_nand_64_acquire
/* 20558*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 20560*/          OPC_EmitMergeInputChains1_0,
/* 20561*/          OPC_EmitInteger, MVT::i64, 4,
/* 20564*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 3/*#Ops*/, 1, 2, 3,
                    // Src: (atomic_load_nand:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_nand_64>><<P:Predicate_atomic_load_nand_64_acquire>> - Complexity = 4
                    // Dst: (PseudoAtomicLoadNand64:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, 4:{ *:[i64] })
/* 20574*/        /*Scope*/ 18, /*->20593*/
/* 20575*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_nand_64_release
/* 20577*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 20579*/          OPC_EmitMergeInputChains1_0,
/* 20580*/          OPC_EmitInteger, MVT::i64, 5,
/* 20583*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 3/*#Ops*/, 1, 2, 3,
                    // Src: (atomic_load_nand:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_nand_64>><<P:Predicate_atomic_load_nand_64_release>> - Complexity = 4
                    // Dst: (PseudoAtomicLoadNand64:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, 5:{ *:[i64] })
/* 20593*/        /*Scope*/ 18, /*->20612*/
/* 20594*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_nand_64_acq_rel
/* 20596*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 20598*/          OPC_EmitMergeInputChains1_0,
/* 20599*/          OPC_EmitInteger, MVT::i64, 6,
/* 20602*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 3/*#Ops*/, 1, 2, 3,
                    // Src: (atomic_load_nand:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_nand_64>><<P:Predicate_atomic_load_nand_64_acq_rel>> - Complexity = 4
                    // Dst: (PseudoAtomicLoadNand64:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, 6:{ *:[i64] })
/* 20612*/        /*Scope*/ 18, /*->20631*/
/* 20613*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_nand_64_seq_cst
/* 20615*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 20617*/          OPC_EmitMergeInputChains1_0,
/* 20618*/          OPC_EmitInteger, MVT::i64, 7,
/* 20621*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 3/*#Ops*/, 1, 2, 3,
                    // Src: (atomic_load_nand:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_nand_64>><<P:Predicate_atomic_load_nand_64_seq_cst>> - Complexity = 4
                    // Dst: (PseudoAtomicLoadNand64:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr, 7:{ *:[i64] })
/* 20631*/        0, /*End of Scope*/
/* 20632*/      0, /*End of Scope*/
/* 20633*/    0, // EndSwitchType
/* 20634*/  /*SwitchOpcode*/ 15|128,5/*655*/, TARGET_VAL(ISD::ATOMIC_CMP_SWAP),// ->21293
/* 20638*/    OPC_RecordMemRef,
/* 20639*/    OPC_RecordNode, // #0 = 'atomic_cmp_swap' chained node
/* 20640*/    OPC_RecordChild1, // #1 = $addr
/* 20641*/    OPC_SwitchType /*2 cases */, 44|128,3/*428*/, MVT::i32,// ->21073
/* 20645*/      OPC_CheckChild1Type, MVT::i32,
/* 20647*/      OPC_RecordChild2, // #2 = $cmp
/* 20648*/      OPC_RecordChild3, // #3 = $new
/* 20649*/      OPC_Scope, 81|128,1/*209*/, /*->20861*/ // 2 children in Scope
/* 20652*/        OPC_CheckPredicate, 10, // Predicate_atomic_cmp_swap_32
/* 20654*/        OPC_Scope, 40, /*->20696*/ // 5 children in Scope
/* 20656*/          OPC_CheckPredicate, 20, // Predicate_atomic_cmp_swap_32_monotonic
/* 20658*/          OPC_Scope, 17, /*->20677*/ // 2 children in Scope
/* 20660*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20662*/            OPC_EmitMergeInputChains1_0,
/* 20663*/            OPC_EmitInteger, MVT::i32, 2,
/* 20666*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_32>><<P:Predicate_atomic_cmp_swap_32_monotonic>> - Complexity = 4
                      // Dst: (PseudoCmpXchg32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 2:{ *:[i32] })
/* 20677*/          /*Scope*/ 17, /*->20695*/
/* 20678*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 20680*/            OPC_EmitMergeInputChains1_0,
/* 20681*/            OPC_EmitInteger, MVT::i32, 2,
/* 20684*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_32>><<P:Predicate_atomic_cmp_swap_32_monotonic>> - Complexity = 4
                      // Dst: (PseudoCmpXchg32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 2:{ *:[i32] })
/* 20695*/          0, /*End of Scope*/
/* 20696*/        /*Scope*/ 40, /*->20737*/
/* 20697*/          OPC_CheckPredicate, 21, // Predicate_atomic_cmp_swap_32_acquire
/* 20699*/          OPC_Scope, 17, /*->20718*/ // 2 children in Scope
/* 20701*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20703*/            OPC_EmitMergeInputChains1_0,
/* 20704*/            OPC_EmitInteger, MVT::i32, 4,
/* 20707*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_32>><<P:Predicate_atomic_cmp_swap_32_acquire>> - Complexity = 4
                      // Dst: (PseudoCmpXchg32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 4:{ *:[i32] })
/* 20718*/          /*Scope*/ 17, /*->20736*/
/* 20719*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 20721*/            OPC_EmitMergeInputChains1_0,
/* 20722*/            OPC_EmitInteger, MVT::i32, 4,
/* 20725*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_32>><<P:Predicate_atomic_cmp_swap_32_acquire>> - Complexity = 4
                      // Dst: (PseudoCmpXchg32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 4:{ *:[i32] })
/* 20736*/          0, /*End of Scope*/
/* 20737*/        /*Scope*/ 40, /*->20778*/
/* 20738*/          OPC_CheckPredicate, 22, // Predicate_atomic_cmp_swap_32_release
/* 20740*/          OPC_Scope, 17, /*->20759*/ // 2 children in Scope
/* 20742*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20744*/            OPC_EmitMergeInputChains1_0,
/* 20745*/            OPC_EmitInteger, MVT::i32, 5,
/* 20748*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_32>><<P:Predicate_atomic_cmp_swap_32_release>> - Complexity = 4
                      // Dst: (PseudoCmpXchg32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 5:{ *:[i32] })
/* 20759*/          /*Scope*/ 17, /*->20777*/
/* 20760*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 20762*/            OPC_EmitMergeInputChains1_0,
/* 20763*/            OPC_EmitInteger, MVT::i32, 5,
/* 20766*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_32>><<P:Predicate_atomic_cmp_swap_32_release>> - Complexity = 4
                      // Dst: (PseudoCmpXchg32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 5:{ *:[i32] })
/* 20777*/          0, /*End of Scope*/
/* 20778*/        /*Scope*/ 40, /*->20819*/
/* 20779*/          OPC_CheckPredicate, 23, // Predicate_atomic_cmp_swap_32_acq_rel
/* 20781*/          OPC_Scope, 17, /*->20800*/ // 2 children in Scope
/* 20783*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20785*/            OPC_EmitMergeInputChains1_0,
/* 20786*/            OPC_EmitInteger, MVT::i32, 6,
/* 20789*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_32>><<P:Predicate_atomic_cmp_swap_32_acq_rel>> - Complexity = 4
                      // Dst: (PseudoCmpXchg32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 6:{ *:[i32] })
/* 20800*/          /*Scope*/ 17, /*->20818*/
/* 20801*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 20803*/            OPC_EmitMergeInputChains1_0,
/* 20804*/            OPC_EmitInteger, MVT::i32, 6,
/* 20807*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_32>><<P:Predicate_atomic_cmp_swap_32_acq_rel>> - Complexity = 4
                      // Dst: (PseudoCmpXchg32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 6:{ *:[i32] })
/* 20818*/          0, /*End of Scope*/
/* 20819*/        /*Scope*/ 40, /*->20860*/
/* 20820*/          OPC_CheckPredicate, 24, // Predicate_atomic_cmp_swap_32_seq_cst
/* 20822*/          OPC_Scope, 17, /*->20841*/ // 2 children in Scope
/* 20824*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20826*/            OPC_EmitMergeInputChains1_0,
/* 20827*/            OPC_EmitInteger, MVT::i32, 7,
/* 20830*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_32>><<P:Predicate_atomic_cmp_swap_32_seq_cst>> - Complexity = 4
                      // Dst: (PseudoCmpXchg32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 7:{ *:[i32] })
/* 20841*/          /*Scope*/ 17, /*->20859*/
/* 20842*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 20844*/            OPC_EmitMergeInputChains1_0,
/* 20845*/            OPC_EmitInteger, MVT::i32, 7,
/* 20848*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_32>><<P:Predicate_atomic_cmp_swap_32_seq_cst>> - Complexity = 4
                      // Dst: (PseudoCmpXchg32:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 7:{ *:[i32] })
/* 20859*/          0, /*End of Scope*/
/* 20860*/        0, /*End of Scope*/
/* 20861*/      /*Scope*/ 81|128,1/*209*/, /*->21072*/
/* 20863*/        OPC_CheckPredicate, 14, // Predicate_atomic_cmp_swap_64
/* 20865*/        OPC_Scope, 40, /*->20907*/ // 5 children in Scope
/* 20867*/          OPC_CheckPredicate, 20, // Predicate_atomic_cmp_swap_64_monotonic
/* 20869*/          OPC_Scope, 17, /*->20888*/ // 2 children in Scope
/* 20871*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20873*/            OPC_EmitMergeInputChains1_0,
/* 20874*/            OPC_EmitInteger, MVT::i32, 2,
/* 20877*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_64>><<P:Predicate_atomic_cmp_swap_64_monotonic>> - Complexity = 4
                      // Dst: (PseudoCmpXchg64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 2:{ *:[i32] })
/* 20888*/          /*Scope*/ 17, /*->20906*/
/* 20889*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 20891*/            OPC_EmitMergeInputChains1_0,
/* 20892*/            OPC_EmitInteger, MVT::i32, 2,
/* 20895*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_64>><<P:Predicate_atomic_cmp_swap_64_monotonic>> - Complexity = 4
                      // Dst: (PseudoCmpXchg64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 2:{ *:[i32] })
/* 20906*/          0, /*End of Scope*/
/* 20907*/        /*Scope*/ 40, /*->20948*/
/* 20908*/          OPC_CheckPredicate, 21, // Predicate_atomic_cmp_swap_64_acquire
/* 20910*/          OPC_Scope, 17, /*->20929*/ // 2 children in Scope
/* 20912*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20914*/            OPC_EmitMergeInputChains1_0,
/* 20915*/            OPC_EmitInteger, MVT::i32, 4,
/* 20918*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_64>><<P:Predicate_atomic_cmp_swap_64_acquire>> - Complexity = 4
                      // Dst: (PseudoCmpXchg64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 4:{ *:[i32] })
/* 20929*/          /*Scope*/ 17, /*->20947*/
/* 20930*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 20932*/            OPC_EmitMergeInputChains1_0,
/* 20933*/            OPC_EmitInteger, MVT::i32, 4,
/* 20936*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_64>><<P:Predicate_atomic_cmp_swap_64_acquire>> - Complexity = 4
                      // Dst: (PseudoCmpXchg64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 4:{ *:[i32] })
/* 20947*/          0, /*End of Scope*/
/* 20948*/        /*Scope*/ 40, /*->20989*/
/* 20949*/          OPC_CheckPredicate, 22, // Predicate_atomic_cmp_swap_64_release
/* 20951*/          OPC_Scope, 17, /*->20970*/ // 2 children in Scope
/* 20953*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20955*/            OPC_EmitMergeInputChains1_0,
/* 20956*/            OPC_EmitInteger, MVT::i32, 5,
/* 20959*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_64>><<P:Predicate_atomic_cmp_swap_64_release>> - Complexity = 4
                      // Dst: (PseudoCmpXchg64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 5:{ *:[i32] })
/* 20970*/          /*Scope*/ 17, /*->20988*/
/* 20971*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 20973*/            OPC_EmitMergeInputChains1_0,
/* 20974*/            OPC_EmitInteger, MVT::i32, 5,
/* 20977*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_64>><<P:Predicate_atomic_cmp_swap_64_release>> - Complexity = 4
                      // Dst: (PseudoCmpXchg64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 5:{ *:[i32] })
/* 20988*/          0, /*End of Scope*/
/* 20989*/        /*Scope*/ 40, /*->21030*/
/* 20990*/          OPC_CheckPredicate, 23, // Predicate_atomic_cmp_swap_64_acq_rel
/* 20992*/          OPC_Scope, 17, /*->21011*/ // 2 children in Scope
/* 20994*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 20996*/            OPC_EmitMergeInputChains1_0,
/* 20997*/            OPC_EmitInteger, MVT::i32, 6,
/* 21000*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_64>><<P:Predicate_atomic_cmp_swap_64_acq_rel>> - Complexity = 4
                      // Dst: (PseudoCmpXchg64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 6:{ *:[i32] })
/* 21011*/          /*Scope*/ 17, /*->21029*/
/* 21012*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 21014*/            OPC_EmitMergeInputChains1_0,
/* 21015*/            OPC_EmitInteger, MVT::i32, 6,
/* 21018*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_64>><<P:Predicate_atomic_cmp_swap_64_acq_rel>> - Complexity = 4
                      // Dst: (PseudoCmpXchg64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 6:{ *:[i32] })
/* 21029*/          0, /*End of Scope*/
/* 21030*/        /*Scope*/ 40, /*->21071*/
/* 21031*/          OPC_CheckPredicate, 24, // Predicate_atomic_cmp_swap_64_seq_cst
/* 21033*/          OPC_Scope, 17, /*->21052*/ // 2 children in Scope
/* 21035*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 21037*/            OPC_EmitMergeInputChains1_0,
/* 21038*/            OPC_EmitInteger, MVT::i32, 7,
/* 21041*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_64>><<P:Predicate_atomic_cmp_swap_64_seq_cst>> - Complexity = 4
                      // Dst: (PseudoCmpXchg64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 7:{ *:[i32] })
/* 21052*/          /*Scope*/ 17, /*->21070*/
/* 21053*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 21055*/            OPC_EmitMergeInputChains1_0,
/* 21056*/            OPC_EmitInteger, MVT::i32, 7,
/* 21059*/            OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, MVT::i32, 4/*#Ops*/, 1, 2, 3, 4,
                      // Src: (atomic_cmp_swap:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new)<<P:Predicate_atomic_cmp_swap_64>><<P:Predicate_atomic_cmp_swap_64_seq_cst>> - Complexity = 4
                      // Dst: (PseudoCmpXchg64:{ *:[i32] }:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$cmp, GPR:{ *:[i32] }:$new, 7:{ *:[i32] })
/* 21070*/          0, /*End of Scope*/
/* 21071*/        0, /*End of Scope*/
/* 21072*/      0, /*End of Scope*/
/* 21073*/    /*SwitchType*/ 88|128,1/*216*/, MVT::i64,// ->21292
/* 21076*/      OPC_CheckChild1Type, MVT::i64,
/* 21078*/      OPC_RecordChild2, // #2 = $cmp
/* 21079*/      OPC_RecordChild3, // #3 = $new
/* 21080*/      OPC_Scope, 104, /*->21186*/ // 2 children in Scope
/* 21082*/        OPC_CheckPredicate, 10, // Predicate_atomic_cmp_swap_32
/* 21084*/        OPC_Scope, 19, /*->21105*/ // 5 children in Scope
/* 21086*/          OPC_CheckPredicate, 20, // Predicate_atomic_cmp_swap_32_monotonic
/* 21088*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21090*/          OPC_EmitMergeInputChains1_0,
/* 21091*/          OPC_EmitInteger, MVT::i64, 2,
/* 21094*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 4,
                    // Src: (atomic_cmp_swap:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new)<<P:Predicate_atomic_cmp_swap_32>><<P:Predicate_atomic_cmp_swap_32_monotonic>> - Complexity = 4
                    // Dst: (PseudoCmpXchg32:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new, 2:{ *:[i64] })
/* 21105*/        /*Scope*/ 19, /*->21125*/
/* 21106*/          OPC_CheckPredicate, 21, // Predicate_atomic_cmp_swap_32_acquire
/* 21108*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21110*/          OPC_EmitMergeInputChains1_0,
/* 21111*/          OPC_EmitInteger, MVT::i64, 4,
/* 21114*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 4,
                    // Src: (atomic_cmp_swap:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new)<<P:Predicate_atomic_cmp_swap_32>><<P:Predicate_atomic_cmp_swap_32_acquire>> - Complexity = 4
                    // Dst: (PseudoCmpXchg32:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new, 4:{ *:[i64] })
/* 21125*/        /*Scope*/ 19, /*->21145*/
/* 21126*/          OPC_CheckPredicate, 22, // Predicate_atomic_cmp_swap_32_release
/* 21128*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21130*/          OPC_EmitMergeInputChains1_0,
/* 21131*/          OPC_EmitInteger, MVT::i64, 5,
/* 21134*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 4,
                    // Src: (atomic_cmp_swap:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new)<<P:Predicate_atomic_cmp_swap_32>><<P:Predicate_atomic_cmp_swap_32_release>> - Complexity = 4
                    // Dst: (PseudoCmpXchg32:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new, 5:{ *:[i64] })
/* 21145*/        /*Scope*/ 19, /*->21165*/
/* 21146*/          OPC_CheckPredicate, 23, // Predicate_atomic_cmp_swap_32_acq_rel
/* 21148*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21150*/          OPC_EmitMergeInputChains1_0,
/* 21151*/          OPC_EmitInteger, MVT::i64, 6,
/* 21154*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 4,
                    // Src: (atomic_cmp_swap:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new)<<P:Predicate_atomic_cmp_swap_32>><<P:Predicate_atomic_cmp_swap_32_acq_rel>> - Complexity = 4
                    // Dst: (PseudoCmpXchg32:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new, 6:{ *:[i64] })
/* 21165*/        /*Scope*/ 19, /*->21185*/
/* 21166*/          OPC_CheckPredicate, 24, // Predicate_atomic_cmp_swap_32_seq_cst
/* 21168*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21170*/          OPC_EmitMergeInputChains1_0,
/* 21171*/          OPC_EmitInteger, MVT::i64, 7,
/* 21174*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 4,
                    // Src: (atomic_cmp_swap:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new)<<P:Predicate_atomic_cmp_swap_32>><<P:Predicate_atomic_cmp_swap_32_seq_cst>> - Complexity = 4
                    // Dst: (PseudoCmpXchg32:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new, 7:{ *:[i64] })
/* 21185*/        0, /*End of Scope*/
/* 21186*/      /*Scope*/ 104, /*->21291*/
/* 21187*/        OPC_CheckPredicate, 14, // Predicate_atomic_cmp_swap_64
/* 21189*/        OPC_Scope, 19, /*->21210*/ // 5 children in Scope
/* 21191*/          OPC_CheckPredicate, 20, // Predicate_atomic_cmp_swap_64_monotonic
/* 21193*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21195*/          OPC_EmitMergeInputChains1_0,
/* 21196*/          OPC_EmitInteger, MVT::i64, 2,
/* 21199*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 4,
                    // Src: (atomic_cmp_swap:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new)<<P:Predicate_atomic_cmp_swap_64>><<P:Predicate_atomic_cmp_swap_64_monotonic>> - Complexity = 4
                    // Dst: (PseudoCmpXchg64:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new, 2:{ *:[i64] })
/* 21210*/        /*Scope*/ 19, /*->21230*/
/* 21211*/          OPC_CheckPredicate, 21, // Predicate_atomic_cmp_swap_64_acquire
/* 21213*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21215*/          OPC_EmitMergeInputChains1_0,
/* 21216*/          OPC_EmitInteger, MVT::i64, 4,
/* 21219*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 4,
                    // Src: (atomic_cmp_swap:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new)<<P:Predicate_atomic_cmp_swap_64>><<P:Predicate_atomic_cmp_swap_64_acquire>> - Complexity = 4
                    // Dst: (PseudoCmpXchg64:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new, 4:{ *:[i64] })
/* 21230*/        /*Scope*/ 19, /*->21250*/
/* 21231*/          OPC_CheckPredicate, 22, // Predicate_atomic_cmp_swap_64_release
/* 21233*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21235*/          OPC_EmitMergeInputChains1_0,
/* 21236*/          OPC_EmitInteger, MVT::i64, 5,
/* 21239*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 4,
                    // Src: (atomic_cmp_swap:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new)<<P:Predicate_atomic_cmp_swap_64>><<P:Predicate_atomic_cmp_swap_64_release>> - Complexity = 4
                    // Dst: (PseudoCmpXchg64:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new, 5:{ *:[i64] })
/* 21250*/        /*Scope*/ 19, /*->21270*/
/* 21251*/          OPC_CheckPredicate, 23, // Predicate_atomic_cmp_swap_64_acq_rel
/* 21253*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21255*/          OPC_EmitMergeInputChains1_0,
/* 21256*/          OPC_EmitInteger, MVT::i64, 6,
/* 21259*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 4,
                    // Src: (atomic_cmp_swap:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new)<<P:Predicate_atomic_cmp_swap_64>><<P:Predicate_atomic_cmp_swap_64_acq_rel>> - Complexity = 4
                    // Dst: (PseudoCmpXchg64:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new, 6:{ *:[i64] })
/* 21270*/        /*Scope*/ 19, /*->21290*/
/* 21271*/          OPC_CheckPredicate, 24, // Predicate_atomic_cmp_swap_64_seq_cst
/* 21273*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21275*/          OPC_EmitMergeInputChains1_0,
/* 21276*/          OPC_EmitInteger, MVT::i64, 7,
/* 21279*/          OPC_MorphNodeTo2, TARGET_VAL(RISCV::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, MVT::i64, 4/*#Ops*/, 1, 2, 3, 4,
                    // Src: (atomic_cmp_swap:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new)<<P:Predicate_atomic_cmp_swap_64>><<P:Predicate_atomic_cmp_swap_64_seq_cst>> - Complexity = 4
                    // Dst: (PseudoCmpXchg64:{ *:[i64] }:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$cmp, GPR:{ *:[i64] }:$new, 7:{ *:[i64] })
/* 21290*/        0, /*End of Scope*/
/* 21291*/      0, /*End of Scope*/
/* 21292*/    0, // EndSwitchType
/* 21293*/  /*SwitchOpcode*/ 37|128,6/*805*/, TARGET_VAL(ISD::ATOMIC_LOAD_SUB),// ->22102
/* 21297*/    OPC_RecordMemRef,
/* 21298*/    OPC_RecordNode, // #0 = 'atomic_load_sub' chained node
/* 21299*/    OPC_RecordChild1, // #1 = $addr
/* 21300*/    OPC_SwitchType /*2 cases */, 15|128,4/*527*/, MVT::i32,// ->21831
/* 21304*/      OPC_CheckChild1Type, MVT::i32,
/* 21306*/      OPC_RecordChild2, // #2 = $incr
/* 21307*/      OPC_Scope, 3|128,2/*259*/, /*->21569*/ // 2 children in Scope
/* 21310*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_sub_32
/* 21312*/        OPC_Scope, 50, /*->21364*/ // 5 children in Scope
/* 21314*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_sub_32_monotonic
/* 21316*/          OPC_Scope, 22, /*->21340*/ // 2 children in Scope
/* 21318*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 21320*/            OPC_EmitMergeInputChains1_0,
/* 21321*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21324*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21332*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_32>><<P:Predicate_atomic_load_sub_32_monotonic>> - Complexity = 4
                      // Dst: (AMOADD_W:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21340*/          /*Scope*/ 22, /*->21363*/
/* 21341*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 21343*/            OPC_EmitMergeInputChains1_0,
/* 21344*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21347*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21355*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_32>><<P:Predicate_atomic_load_sub_32_monotonic>> - Complexity = 4
                      // Dst: (AMOADD_W:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21363*/          0, /*End of Scope*/
/* 21364*/        /*Scope*/ 50, /*->21415*/
/* 21365*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_sub_32_acquire
/* 21367*/          OPC_Scope, 22, /*->21391*/ // 2 children in Scope
/* 21369*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 21371*/            OPC_EmitMergeInputChains1_0,
/* 21372*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21375*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21383*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_32>><<P:Predicate_atomic_load_sub_32_acquire>> - Complexity = 4
                      // Dst: (AMOADD_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21391*/          /*Scope*/ 22, /*->21414*/
/* 21392*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 21394*/            OPC_EmitMergeInputChains1_0,
/* 21395*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21398*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21406*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_32>><<P:Predicate_atomic_load_sub_32_acquire>> - Complexity = 4
                      // Dst: (AMOADD_W_AQ:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21414*/          0, /*End of Scope*/
/* 21415*/        /*Scope*/ 50, /*->21466*/
/* 21416*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_sub_32_release
/* 21418*/          OPC_Scope, 22, /*->21442*/ // 2 children in Scope
/* 21420*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 21422*/            OPC_EmitMergeInputChains1_0,
/* 21423*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21426*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21434*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_32>><<P:Predicate_atomic_load_sub_32_release>> - Complexity = 4
                      // Dst: (AMOADD_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21442*/          /*Scope*/ 22, /*->21465*/
/* 21443*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 21445*/            OPC_EmitMergeInputChains1_0,
/* 21446*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21449*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21457*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_32>><<P:Predicate_atomic_load_sub_32_release>> - Complexity = 4
                      // Dst: (AMOADD_W_RL:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21465*/          0, /*End of Scope*/
/* 21466*/        /*Scope*/ 50, /*->21517*/
/* 21467*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_sub_32_acq_rel
/* 21469*/          OPC_Scope, 22, /*->21493*/ // 2 children in Scope
/* 21471*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 21473*/            OPC_EmitMergeInputChains1_0,
/* 21474*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21477*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21485*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_32>><<P:Predicate_atomic_load_sub_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOADD_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21493*/          /*Scope*/ 22, /*->21516*/
/* 21494*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 21496*/            OPC_EmitMergeInputChains1_0,
/* 21497*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21500*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21508*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_32>><<P:Predicate_atomic_load_sub_32_acq_rel>> - Complexity = 4
                      // Dst: (AMOADD_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21516*/          0, /*End of Scope*/
/* 21517*/        /*Scope*/ 50, /*->21568*/
/* 21518*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_sub_32_seq_cst
/* 21520*/          OPC_Scope, 22, /*->21544*/ // 2 children in Scope
/* 21522*/            OPC_CheckPatternPredicate, 17, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 21524*/            OPC_EmitMergeInputChains1_0,
/* 21525*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21528*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21536*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_32>><<P:Predicate_atomic_load_sub_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOADD_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21544*/          /*Scope*/ 22, /*->21567*/
/* 21545*/            OPC_CheckPatternPredicate, 18, // (Subtarget->hasStdExtA())
/* 21547*/            OPC_EmitMergeInputChains1_0,
/* 21548*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21551*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21559*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_32>><<P:Predicate_atomic_load_sub_32_seq_cst>> - Complexity = 4
                      // Dst: (AMOADD_W_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21567*/          0, /*End of Scope*/
/* 21568*/        0, /*End of Scope*/
/* 21569*/      /*Scope*/ 3|128,2/*259*/, /*->21830*/
/* 21571*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_sub_64
/* 21573*/        OPC_Scope, 50, /*->21625*/ // 5 children in Scope
/* 21575*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_sub_64_monotonic
/* 21577*/          OPC_Scope, 22, /*->21601*/ // 2 children in Scope
/* 21579*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 21581*/            OPC_EmitMergeInputChains1_0,
/* 21582*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21585*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21593*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_64>><<P:Predicate_atomic_load_sub_64_monotonic>> - Complexity = 4
                      // Dst: (AMOADD_D:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21601*/          /*Scope*/ 22, /*->21624*/
/* 21602*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 21604*/            OPC_EmitMergeInputChains1_0,
/* 21605*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21608*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21616*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_64>><<P:Predicate_atomic_load_sub_64_monotonic>> - Complexity = 4
                      // Dst: (AMOADD_D:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21624*/          0, /*End of Scope*/
/* 21625*/        /*Scope*/ 50, /*->21676*/
/* 21626*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_sub_64_acquire
/* 21628*/          OPC_Scope, 22, /*->21652*/ // 2 children in Scope
/* 21630*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 21632*/            OPC_EmitMergeInputChains1_0,
/* 21633*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21636*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21644*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_64>><<P:Predicate_atomic_load_sub_64_acquire>> - Complexity = 4
                      // Dst: (AMOADD_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21652*/          /*Scope*/ 22, /*->21675*/
/* 21653*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 21655*/            OPC_EmitMergeInputChains1_0,
/* 21656*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21659*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21667*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_64>><<P:Predicate_atomic_load_sub_64_acquire>> - Complexity = 4
                      // Dst: (AMOADD_D_AQ:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21675*/          0, /*End of Scope*/
/* 21676*/        /*Scope*/ 50, /*->21727*/
/* 21677*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_sub_64_release
/* 21679*/          OPC_Scope, 22, /*->21703*/ // 2 children in Scope
/* 21681*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 21683*/            OPC_EmitMergeInputChains1_0,
/* 21684*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21687*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21695*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_64>><<P:Predicate_atomic_load_sub_64_release>> - Complexity = 4
                      // Dst: (AMOADD_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21703*/          /*Scope*/ 22, /*->21726*/
/* 21704*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 21706*/            OPC_EmitMergeInputChains1_0,
/* 21707*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21710*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21718*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_64>><<P:Predicate_atomic_load_sub_64_release>> - Complexity = 4
                      // Dst: (AMOADD_D_RL:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21726*/          0, /*End of Scope*/
/* 21727*/        /*Scope*/ 50, /*->21778*/
/* 21728*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_sub_64_acq_rel
/* 21730*/          OPC_Scope, 22, /*->21754*/ // 2 children in Scope
/* 21732*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 21734*/            OPC_EmitMergeInputChains1_0,
/* 21735*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21738*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21746*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_64>><<P:Predicate_atomic_load_sub_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOADD_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21754*/          /*Scope*/ 22, /*->21777*/
/* 21755*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 21757*/            OPC_EmitMergeInputChains1_0,
/* 21758*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21761*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21769*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_64>><<P:Predicate_atomic_load_sub_64_acq_rel>> - Complexity = 4
                      // Dst: (AMOADD_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21777*/          0, /*End of Scope*/
/* 21778*/        /*Scope*/ 50, /*->21829*/
/* 21779*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_sub_64_seq_cst
/* 21781*/          OPC_Scope, 22, /*->21805*/ // 2 children in Scope
/* 21783*/            OPC_CheckPatternPredicate, 19, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 21785*/            OPC_EmitMergeInputChains1_0,
/* 21786*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21789*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21797*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_64>><<P:Predicate_atomic_load_sub_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOADD_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21805*/          /*Scope*/ 22, /*->21828*/
/* 21806*/            OPC_CheckPatternPredicate, 20, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit())
/* 21808*/            OPC_EmitMergeInputChains1_0,
/* 21809*/            OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 21812*/            OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                          MVT::i32, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21820*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                          MVT::i32, 2/*#Ops*/, 1, 4,
                      // Src: (atomic_load_sub:{ *:[i32] } GPR:{ *:[i32] }:$addr, GPR:{ *:[i32] }:$incr)<<P:Predicate_atomic_load_sub_64>><<P:Predicate_atomic_load_sub_64_seq_cst>> - Complexity = 4
                      // Dst: (AMOADD_D_AQ_RL:{ *:[i32] } GPR:{ *:[i32] }:$addr, (SUB:{ *:[i32] } X0:{ *:[i32] }, GPR:{ *:[i32] }:$incr))
/* 21828*/          0, /*End of Scope*/
/* 21829*/        0, /*End of Scope*/
/* 21830*/      0, /*End of Scope*/
/* 21831*/    /*SwitchType*/ 11|128,2/*267*/, MVT::i64,// ->22101
/* 21834*/      OPC_CheckChild1Type, MVT::i64,
/* 21836*/      OPC_RecordChild2, // #2 = $incr
/* 21837*/      OPC_Scope, 1|128,1/*129*/, /*->21969*/ // 2 children in Scope
/* 21840*/        OPC_CheckPredicate, 10, // Predicate_atomic_load_sub_32
/* 21842*/        OPC_Scope, 24, /*->21868*/ // 5 children in Scope
/* 21844*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_sub_32_monotonic
/* 21846*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21848*/          OPC_EmitMergeInputChains1_0,
/* 21849*/          OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 21852*/          OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                        MVT::i64, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21860*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 4,
                    // Src: (atomic_load_sub:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_sub_32>><<P:Predicate_atomic_load_sub_32_monotonic>> - Complexity = 4
                    // Dst: (AMOADD_W:{ *:[i64] } GPR:{ *:[i64] }:$addr, (SUB:{ *:[i64] } X0:{ *:[i64] }, GPR:{ *:[i64] }:$incr))
/* 21868*/        /*Scope*/ 24, /*->21893*/
/* 21869*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_sub_32_acquire
/* 21871*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21873*/          OPC_EmitMergeInputChains1_0,
/* 21874*/          OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 21877*/          OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                        MVT::i64, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21885*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 4,
                    // Src: (atomic_load_sub:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_sub_32>><<P:Predicate_atomic_load_sub_32_acquire>> - Complexity = 4
                    // Dst: (AMOADD_W_AQ:{ *:[i64] } GPR:{ *:[i64] }:$addr, (SUB:{ *:[i64] } X0:{ *:[i64] }, GPR:{ *:[i64] }:$incr))
/* 21893*/        /*Scope*/ 24, /*->21918*/
/* 21894*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_sub_32_release
/* 21896*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21898*/          OPC_EmitMergeInputChains1_0,
/* 21899*/          OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 21902*/          OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                        MVT::i64, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21910*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 4,
                    // Src: (atomic_load_sub:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_sub_32>><<P:Predicate_atomic_load_sub_32_release>> - Complexity = 4
                    // Dst: (AMOADD_W_RL:{ *:[i64] } GPR:{ *:[i64] }:$addr, (SUB:{ *:[i64] } X0:{ *:[i64] }, GPR:{ *:[i64] }:$incr))
/* 21918*/        /*Scope*/ 24, /*->21943*/
/* 21919*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_sub_32_acq_rel
/* 21921*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21923*/          OPC_EmitMergeInputChains1_0,
/* 21924*/          OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 21927*/          OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                        MVT::i64, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21935*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 4,
                    // Src: (atomic_load_sub:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_sub_32>><<P:Predicate_atomic_load_sub_32_acq_rel>> - Complexity = 4
                    // Dst: (AMOADD_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$addr, (SUB:{ *:[i64] } X0:{ *:[i64] }, GPR:{ *:[i64] }:$incr))
/* 21943*/        /*Scope*/ 24, /*->21968*/
/* 21944*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_sub_32_seq_cst
/* 21946*/          OPC_CheckPatternPredicate, 21, // (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21948*/          OPC_EmitMergeInputChains1_0,
/* 21949*/          OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 21952*/          OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                        MVT::i64, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21960*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_W_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 4,
                    // Src: (atomic_load_sub:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_sub_32>><<P:Predicate_atomic_load_sub_32_seq_cst>> - Complexity = 4
                    // Dst: (AMOADD_W_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$addr, (SUB:{ *:[i64] } X0:{ *:[i64] }, GPR:{ *:[i64] }:$incr))
/* 21968*/        0, /*End of Scope*/
/* 21969*/      /*Scope*/ 1|128,1/*129*/, /*->22100*/
/* 21971*/        OPC_CheckPredicate, 14, // Predicate_atomic_load_sub_64
/* 21973*/        OPC_Scope, 24, /*->21999*/ // 5 children in Scope
/* 21975*/          OPC_CheckPredicate, 20, // Predicate_atomic_load_sub_64_monotonic
/* 21977*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 21979*/          OPC_EmitMergeInputChains1_0,
/* 21980*/          OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 21983*/          OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                        MVT::i64, 2/*#Ops*/, 3, 2,  // Results = #4
/* 21991*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 4,
                    // Src: (atomic_load_sub:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_sub_64>><<P:Predicate_atomic_load_sub_64_monotonic>> - Complexity = 4
                    // Dst: (AMOADD_D:{ *:[i64] } GPR:{ *:[i64] }:$addr, (SUB:{ *:[i64] } X0:{ *:[i64] }, GPR:{ *:[i64] }:$incr))
/* 21999*/        /*Scope*/ 24, /*->22024*/
/* 22000*/          OPC_CheckPredicate, 21, // Predicate_atomic_load_sub_64_acquire
/* 22002*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22004*/          OPC_EmitMergeInputChains1_0,
/* 22005*/          OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 22008*/          OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                        MVT::i64, 2/*#Ops*/, 3, 2,  // Results = #4
/* 22016*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 4,
                    // Src: (atomic_load_sub:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_sub_64>><<P:Predicate_atomic_load_sub_64_acquire>> - Complexity = 4
                    // Dst: (AMOADD_D_AQ:{ *:[i64] } GPR:{ *:[i64] }:$addr, (SUB:{ *:[i64] } X0:{ *:[i64] }, GPR:{ *:[i64] }:$incr))
/* 22024*/        /*Scope*/ 24, /*->22049*/
/* 22025*/          OPC_CheckPredicate, 22, // Predicate_atomic_load_sub_64_release
/* 22027*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22029*/          OPC_EmitMergeInputChains1_0,
/* 22030*/          OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 22033*/          OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                        MVT::i64, 2/*#Ops*/, 3, 2,  // Results = #4
/* 22041*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 4,
                    // Src: (atomic_load_sub:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_sub_64>><<P:Predicate_atomic_load_sub_64_release>> - Complexity = 4
                    // Dst: (AMOADD_D_RL:{ *:[i64] } GPR:{ *:[i64] }:$addr, (SUB:{ *:[i64] } X0:{ *:[i64] }, GPR:{ *:[i64] }:$incr))
/* 22049*/        /*Scope*/ 24, /*->22074*/
/* 22050*/          OPC_CheckPredicate, 23, // Predicate_atomic_load_sub_64_acq_rel
/* 22052*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22054*/          OPC_EmitMergeInputChains1_0,
/* 22055*/          OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 22058*/          OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                        MVT::i64, 2/*#Ops*/, 3, 2,  // Results = #4
/* 22066*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 4,
                    // Src: (atomic_load_sub:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_sub_64>><<P:Predicate_atomic_load_sub_64_acq_rel>> - Complexity = 4
                    // Dst: (AMOADD_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$addr, (SUB:{ *:[i64] } X0:{ *:[i64] }, GPR:{ *:[i64] }:$incr))
/* 22074*/        /*Scope*/ 24, /*->22099*/
/* 22075*/          OPC_CheckPredicate, 24, // Predicate_atomic_load_sub_64_seq_cst
/* 22077*/          OPC_CheckPatternPredicate, 22, // (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22079*/          OPC_EmitMergeInputChains1_0,
/* 22080*/          OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 22083*/          OPC_EmitNode1, TARGET_VAL(RISCV::SUB), 0,
                        MVT::i64, 2/*#Ops*/, 3, 2,  // Results = #4
/* 22091*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::AMOADD_D_AQ_RL), 0|OPFL_Chain|OPFL_MemRefs,
                        MVT::i64, 2/*#Ops*/, 1, 4,
                    // Src: (atomic_load_sub:{ *:[i64] } GPR:{ *:[i64] }:$addr, GPR:{ *:[i64] }:$incr)<<P:Predicate_atomic_load_sub_64>><<P:Predicate_atomic_load_sub_64_seq_cst>> - Complexity = 4
                    // Dst: (AMOADD_D_AQ_RL:{ *:[i64] } GPR:{ *:[i64] }:$addr, (SUB:{ *:[i64] } X0:{ *:[i64] }, GPR:{ *:[i64] }:$incr))
/* 22099*/        0, /*End of Scope*/
/* 22100*/      0, /*End of Scope*/
/* 22101*/    0, // EndSwitchType
/* 22102*/  /*SwitchOpcode*/ 14, TARGET_VAL(ISD::BR),// ->22119
/* 22105*/    OPC_RecordNode, // #0 = 'br' chained node
/* 22106*/    OPC_RecordChild1, // #1 = $imm20
/* 22107*/    OPC_MoveChild1,
/* 22108*/    OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
/* 22111*/    OPC_MoveParent,
/* 22112*/    OPC_EmitMergeInputChains1_0,
/* 22113*/    OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoBR), 0|OPFL_Chain,
                  1/*#Ops*/, 1,
              // Src: (br (bb:{ *:[Other] }):$imm20) - Complexity = 3
              // Dst: (PseudoBR (bb:{ *:[Other] }):$imm20)
/* 22119*/  /*SwitchOpcode*/ 8, TARGET_VAL(RISCVISD::RET_FLAG),// ->22130
/* 22122*/    OPC_RecordNode, // #0 = 'riscv_ret_flag' chained node
/* 22123*/    OPC_CaptureGlueInput,
/* 22124*/    OPC_EmitMergeInputChains1_0,
/* 22125*/    OPC_MorphNodeTo0, TARGET_VAL(RISCV::PseudoRET), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic0,
                  0/*#Ops*/,
              // Src: (riscv_ret_flag) - Complexity = 3
              // Dst: (PseudoRET)
/* 22130*/  /*SwitchOpcode*/ 7, TARGET_VAL(ISD::TRAP),// ->22140
/* 22133*/    OPC_RecordNode, // #0 = 'trap' chained node
/* 22134*/    OPC_EmitMergeInputChains1_0,
/* 22135*/    OPC_MorphNodeTo0, TARGET_VAL(RISCV::UNIMP), 0|OPFL_Chain,
                  0/*#Ops*/,
              // Src: (trap) - Complexity = 3
              // Dst: (UNIMP)
/* 22140*/  /*SwitchOpcode*/ 7, TARGET_VAL(ISD::DEBUGTRAP),// ->22150
/* 22143*/    OPC_RecordNode, // #0 = 'debugtrap' chained node
/* 22144*/    OPC_EmitMergeInputChains1_0,
/* 22145*/    OPC_MorphNodeTo0, TARGET_VAL(RISCV::EBREAK), 0|OPFL_Chain,
                  0/*#Ops*/,
              // Src: (debugtrap) - Complexity = 3
              // Dst: (EBREAK)
/* 22150*/  /*SwitchOpcode*/ 40, TARGET_VAL(ISD::SUB),// ->22193
/* 22153*/    OPC_RecordChild0, // #0 = $rs1
/* 22154*/    OPC_RecordChild1, // #1 = $rs2
/* 22155*/    OPC_SwitchType /*2 cases */, 22, MVT::i32,// ->22180
/* 22158*/      OPC_Scope, 10, /*->22170*/ // 2 children in Scope
/* 22160*/        OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 22162*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SUB), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (sub:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (SUB:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22170*/      /*Scope*/ 8, /*->22179*/
/* 22171*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SUB), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (sub:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (SUB:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22179*/      0, /*End of Scope*/
/* 22180*/    /*SwitchType*/ 10, MVT::i64,// ->22192
/* 22182*/      OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 22184*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::SUB), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (sub:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (SUB:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 22192*/    0, // EndSwitchType
/* 22193*/  /*SwitchOpcode*/ 53, TARGET_VAL(RISCVISD::URET_FLAG),// ->22249
/* 22196*/    OPC_RecordNode, // #0 = 'riscv_uret_flag' chained node
/* 22197*/    OPC_CaptureGlueInput,
/* 22198*/    OPC_Scope, 16, /*->22216*/ // 3 children in Scope
/* 22200*/      OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 22202*/      OPC_EmitMergeInputChains1_0,
/* 22203*/      OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 22206*/      OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 22209*/      OPC_MorphNodeTo0, TARGET_VAL(RISCV::URET), 0|OPFL_Chain|OPFL_GlueInput,
                    2/*#Ops*/, 1, 2,
                // Src: (riscv_uret_flag) - Complexity = 3
                // Dst: (URET X0:{ *:[i32] }, X0:{ *:[i32] })
/* 22216*/    /*Scope*/ 16, /*->22233*/
/* 22217*/      OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 22219*/      OPC_EmitMergeInputChains1_0,
/* 22220*/      OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 22223*/      OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 22226*/      OPC_MorphNodeTo0, TARGET_VAL(RISCV::URET), 0|OPFL_Chain|OPFL_GlueInput,
                    2/*#Ops*/, 1, 2,
                // Src: (riscv_uret_flag) - Complexity = 3
                // Dst: (URET X0:{ *:[i64] }, X0:{ *:[i64] })
/* 22233*/    /*Scope*/ 14, /*->22248*/
/* 22234*/      OPC_EmitMergeInputChains1_0,
/* 22235*/      OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 22238*/      OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 22241*/      OPC_MorphNodeTo0, TARGET_VAL(RISCV::URET), 0|OPFL_Chain|OPFL_GlueInput,
                    2/*#Ops*/, 1, 2,
                // Src: (riscv_uret_flag) - Complexity = 3
                // Dst: (URET X0:{ *:[i32] }, X0:{ *:[i32] })
/* 22248*/    0, /*End of Scope*/
/* 22249*/  /*SwitchOpcode*/ 53, TARGET_VAL(RISCVISD::SRET_FLAG),// ->22305
/* 22252*/    OPC_RecordNode, // #0 = 'riscv_sret_flag' chained node
/* 22253*/    OPC_CaptureGlueInput,
/* 22254*/    OPC_Scope, 16, /*->22272*/ // 3 children in Scope
/* 22256*/      OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 22258*/      OPC_EmitMergeInputChains1_0,
/* 22259*/      OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 22262*/      OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 22265*/      OPC_MorphNodeTo0, TARGET_VAL(RISCV::SRET), 0|OPFL_Chain|OPFL_GlueInput,
                    2/*#Ops*/, 1, 2,
                // Src: (riscv_sret_flag) - Complexity = 3
                // Dst: (SRET X0:{ *:[i32] }, X0:{ *:[i32] })
/* 22272*/    /*Scope*/ 16, /*->22289*/
/* 22273*/      OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 22275*/      OPC_EmitMergeInputChains1_0,
/* 22276*/      OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 22279*/      OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 22282*/      OPC_MorphNodeTo0, TARGET_VAL(RISCV::SRET), 0|OPFL_Chain|OPFL_GlueInput,
                    2/*#Ops*/, 1, 2,
                // Src: (riscv_sret_flag) - Complexity = 3
                // Dst: (SRET X0:{ *:[i64] }, X0:{ *:[i64] })
/* 22289*/    /*Scope*/ 14, /*->22304*/
/* 22290*/      OPC_EmitMergeInputChains1_0,
/* 22291*/      OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 22294*/      OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 22297*/      OPC_MorphNodeTo0, TARGET_VAL(RISCV::SRET), 0|OPFL_Chain|OPFL_GlueInput,
                    2/*#Ops*/, 1, 2,
                // Src: (riscv_sret_flag) - Complexity = 3
                // Dst: (SRET X0:{ *:[i32] }, X0:{ *:[i32] })
/* 22304*/    0, /*End of Scope*/
/* 22305*/  /*SwitchOpcode*/ 53, TARGET_VAL(RISCVISD::MRET_FLAG),// ->22361
/* 22308*/    OPC_RecordNode, // #0 = 'riscv_mret_flag' chained node
/* 22309*/    OPC_CaptureGlueInput,
/* 22310*/    OPC_Scope, 16, /*->22328*/ // 3 children in Scope
/* 22312*/      OPC_CheckPatternPredicate, 6, // (MF->getSubtarget().checkFeatures("-64bit"))
/* 22314*/      OPC_EmitMergeInputChains1_0,
/* 22315*/      OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 22318*/      OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 22321*/      OPC_MorphNodeTo0, TARGET_VAL(RISCV::MRET), 0|OPFL_Chain|OPFL_GlueInput,
                    2/*#Ops*/, 1, 2,
                // Src: (riscv_mret_flag) - Complexity = 3
                // Dst: (MRET X0:{ *:[i32] }, X0:{ *:[i32] })
/* 22328*/    /*Scope*/ 16, /*->22345*/
/* 22329*/      OPC_CheckPatternPredicate, 7, // (MF->getSubtarget().checkFeatures("+64bit"))
/* 22331*/      OPC_EmitMergeInputChains1_0,
/* 22332*/      OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 22335*/      OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 22338*/      OPC_MorphNodeTo0, TARGET_VAL(RISCV::MRET), 0|OPFL_Chain|OPFL_GlueInput,
                    2/*#Ops*/, 1, 2,
                // Src: (riscv_mret_flag) - Complexity = 3
                // Dst: (MRET X0:{ *:[i64] }, X0:{ *:[i64] })
/* 22345*/    /*Scope*/ 14, /*->22360*/
/* 22346*/      OPC_EmitMergeInputChains1_0,
/* 22347*/      OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 22350*/      OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 22353*/      OPC_MorphNodeTo0, TARGET_VAL(RISCV::MRET), 0|OPFL_Chain|OPFL_GlueInput,
                    2/*#Ops*/, 1, 2,
                // Src: (riscv_mret_flag) - Complexity = 3
                // Dst: (MRET X0:{ *:[i32] }, X0:{ *:[i32] })
/* 22360*/    0, /*End of Scope*/
/* 22361*/  /*SwitchOpcode*/ 46, TARGET_VAL(RISCVISD::SLLW),// ->22410
/* 22364*/    OPC_RecordChild0, // #0 = $rs1
/* 22365*/    OPC_RecordChild1, // #1 = $rs2
/* 22366*/    OPC_SwitchType /*2 cases */, 26, MVT::i32,// ->22395
/* 22369*/      OPC_CheckChild1Type, MVT::i32,
/* 22371*/      OPC_Scope, 10, /*->22383*/ // 2 children in Scope
/* 22373*/        OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 22375*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLLW), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (riscv_sllw:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (SLLW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22383*/      /*Scope*/ 10, /*->22394*/
/* 22384*/        OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/* 22386*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLLW), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (riscv_sllw:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (SLLW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22394*/      0, /*End of Scope*/
/* 22395*/    /*SwitchType*/ 12, MVT::i64,// ->22409
/* 22397*/      OPC_CheckChild1Type, MVT::i64,
/* 22399*/      OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22401*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::SLLW), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (riscv_sllw:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (SLLW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 22409*/    0, // EndSwitchType
/* 22410*/  /*SwitchOpcode*/ 46, TARGET_VAL(RISCVISD::SRLW),// ->22459
/* 22413*/    OPC_RecordChild0, // #0 = $rs1
/* 22414*/    OPC_RecordChild1, // #1 = $rs2
/* 22415*/    OPC_SwitchType /*2 cases */, 26, MVT::i32,// ->22444
/* 22418*/      OPC_CheckChild1Type, MVT::i32,
/* 22420*/      OPC_Scope, 10, /*->22432*/ // 2 children in Scope
/* 22422*/        OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 22424*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRLW), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (riscv_srlw:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (SRLW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22432*/      /*Scope*/ 10, /*->22443*/
/* 22433*/        OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/* 22435*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRLW), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (riscv_srlw:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (SRLW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22443*/      0, /*End of Scope*/
/* 22444*/    /*SwitchType*/ 12, MVT::i64,// ->22458
/* 22446*/      OPC_CheckChild1Type, MVT::i64,
/* 22448*/      OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22450*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRLW), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (riscv_srlw:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (SRLW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 22458*/    0, // EndSwitchType
/* 22459*/  /*SwitchOpcode*/ 46, TARGET_VAL(RISCVISD::SRAW),// ->22508
/* 22462*/    OPC_RecordChild0, // #0 = $rs1
/* 22463*/    OPC_RecordChild1, // #1 = $rs2
/* 22464*/    OPC_SwitchType /*2 cases */, 26, MVT::i32,// ->22493
/* 22467*/      OPC_CheckChild1Type, MVT::i32,
/* 22469*/      OPC_Scope, 10, /*->22481*/ // 2 children in Scope
/* 22471*/        OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 22473*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRAW), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (riscv_sraw:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (SRAW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22481*/      /*Scope*/ 10, /*->22492*/
/* 22482*/        OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/* 22484*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRAW), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (riscv_sraw:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (SRAW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22492*/      0, /*End of Scope*/
/* 22493*/    /*SwitchType*/ 12, MVT::i64,// ->22507
/* 22495*/      OPC_CheckChild1Type, MVT::i64,
/* 22497*/      OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22499*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::SRAW), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (riscv_sraw:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (SRAW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 22507*/    0, // EndSwitchType
/* 22508*/  /*SwitchOpcode*/ 65, TARGET_VAL(ISD::READCYCLECOUNTER),// ->22576
/* 22511*/    OPC_RecordNode, // #0 = 'readcyclecounter' chained node
/* 22512*/    OPC_SwitchType /*2 cases */, 40, MVT::i32,// ->22555
/* 22515*/      OPC_Scope, 18, /*->22535*/ // 2 children in Scope
/* 22517*/        OPC_CheckPatternPredicate, 3, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 22519*/        OPC_EmitMergeInputChains1_0,
/* 22520*/        OPC_EmitInteger, MVT::i32, 0|128,24/*3072*/,
/* 22524*/        OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 22527*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::CSRRS), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2,
                  // Src: (readcyclecounter:{ *:[i32] }) - Complexity = 3
                  // Dst: (CSRRS:{ *:[i32] } 3072:{ *:[i32] }, X0:{ *:[i32] })
/* 22535*/      /*Scope*/ 18, /*->22554*/
/* 22536*/        OPC_CheckPatternPredicate, 4, // (Subtarget->is64Bit())
/* 22538*/        OPC_EmitMergeInputChains1_0,
/* 22539*/        OPC_EmitInteger, MVT::i32, 0|128,24/*3072*/,
/* 22543*/        OPC_EmitRegister, MVT::i32, RISCV::X0,
/* 22546*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::CSRRS), 0|OPFL_Chain,
                      MVT::i32, 2/*#Ops*/, 1, 2,
                  // Src: (readcyclecounter:{ *:[i32] }) - Complexity = 3
                  // Dst: (CSRRS:{ *:[i32] } 3072:{ *:[i32] }, X0:{ *:[i32] })
/* 22554*/      0, /*End of Scope*/
/* 22555*/    /*SwitchType*/ 18, MVT::i64,// ->22575
/* 22557*/      OPC_CheckPatternPredicate, 5, // (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22559*/      OPC_EmitMergeInputChains1_0,
/* 22560*/      OPC_EmitInteger, MVT::i64, 0|128,24/*3072*/,
/* 22564*/      OPC_EmitRegister, MVT::i64, RISCV::X0,
/* 22567*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::CSRRS), 0|OPFL_Chain,
                    MVT::i64, 2/*#Ops*/, 1, 2,
                // Src: (readcyclecounter:{ *:[i64] }) - Complexity = 3
                // Dst: (CSRRS:{ *:[i64] } 3072:{ *:[i64] }, X0:{ *:[i64] })
/* 22575*/    0, // EndSwitchType
/* 22576*/  /*SwitchOpcode*/ 42, TARGET_VAL(ISD::MUL),// ->22621
/* 22579*/    OPC_RecordChild0, // #0 = $rs1
/* 22580*/    OPC_RecordChild1, // #1 = $rs2
/* 22581*/    OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->22608
/* 22584*/      OPC_Scope, 10, /*->22596*/ // 2 children in Scope
/* 22586*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 22588*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::MUL), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (mul:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (MUL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22596*/      /*Scope*/ 10, /*->22607*/
/* 22597*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasStdExtM())
/* 22599*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::MUL), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (mul:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (MUL:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22607*/      0, /*End of Scope*/
/* 22608*/    /*SwitchType*/ 10, MVT::i64,// ->22620
/* 22610*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22612*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::MUL), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (mul:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (MUL:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 22620*/    0, // EndSwitchType
/* 22621*/  /*SwitchOpcode*/ 42, TARGET_VAL(ISD::MULHS),// ->22666
/* 22624*/    OPC_RecordChild0, // #0 = $rs1
/* 22625*/    OPC_RecordChild1, // #1 = $rs2
/* 22626*/    OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->22653
/* 22629*/      OPC_Scope, 10, /*->22641*/ // 2 children in Scope
/* 22631*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 22633*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::MULH), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (mulhs:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (MULH:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22641*/      /*Scope*/ 10, /*->22652*/
/* 22642*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasStdExtM())
/* 22644*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::MULH), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (mulhs:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (MULH:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22652*/      0, /*End of Scope*/
/* 22653*/    /*SwitchType*/ 10, MVT::i64,// ->22665
/* 22655*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22657*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::MULH), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (mulhs:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (MULH:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 22665*/    0, // EndSwitchType
/* 22666*/  /*SwitchOpcode*/ 42, TARGET_VAL(ISD::MULHU),// ->22711
/* 22669*/    OPC_RecordChild0, // #0 = $rs1
/* 22670*/    OPC_RecordChild1, // #1 = $rs2
/* 22671*/    OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->22698
/* 22674*/      OPC_Scope, 10, /*->22686*/ // 2 children in Scope
/* 22676*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 22678*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::MULHU), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (mulhu:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (MULHU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22686*/      /*Scope*/ 10, /*->22697*/
/* 22687*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasStdExtM())
/* 22689*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::MULHU), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (mulhu:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (MULHU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22697*/      0, /*End of Scope*/
/* 22698*/    /*SwitchType*/ 10, MVT::i64,// ->22710
/* 22700*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22702*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::MULHU), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (mulhu:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (MULHU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 22710*/    0, // EndSwitchType
/* 22711*/  /*SwitchOpcode*/ 42, TARGET_VAL(ISD::SDIV),// ->22756
/* 22714*/    OPC_RecordChild0, // #0 = $rs1
/* 22715*/    OPC_RecordChild1, // #1 = $rs2
/* 22716*/    OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->22743
/* 22719*/      OPC_Scope, 10, /*->22731*/ // 2 children in Scope
/* 22721*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 22723*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIV), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (sdiv:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (DIV:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22731*/      /*Scope*/ 10, /*->22742*/
/* 22732*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasStdExtM())
/* 22734*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIV), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (sdiv:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (DIV:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22742*/      0, /*End of Scope*/
/* 22743*/    /*SwitchType*/ 10, MVT::i64,// ->22755
/* 22745*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22747*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIV), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (sdiv:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (DIV:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 22755*/    0, // EndSwitchType
/* 22756*/  /*SwitchOpcode*/ 42, TARGET_VAL(ISD::UDIV),// ->22801
/* 22759*/    OPC_RecordChild0, // #0 = $rs1
/* 22760*/    OPC_RecordChild1, // #1 = $rs2
/* 22761*/    OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->22788
/* 22764*/      OPC_Scope, 10, /*->22776*/ // 2 children in Scope
/* 22766*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 22768*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (udiv:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22776*/      /*Scope*/ 10, /*->22787*/
/* 22777*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasStdExtM())
/* 22779*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (udiv:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (DIVU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22787*/      0, /*End of Scope*/
/* 22788*/    /*SwitchType*/ 10, MVT::i64,// ->22800
/* 22790*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22792*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVU), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (udiv:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (DIVU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 22800*/    0, // EndSwitchType
/* 22801*/  /*SwitchOpcode*/ 42, TARGET_VAL(ISD::UREM),// ->22846
/* 22804*/    OPC_RecordChild0, // #0 = $rs1
/* 22805*/    OPC_RecordChild1, // #1 = $rs2
/* 22806*/    OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->22833
/* 22809*/      OPC_Scope, 10, /*->22821*/ // 2 children in Scope
/* 22811*/        OPC_CheckPatternPredicate, 25, // (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 22813*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (urem:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22821*/      /*Scope*/ 10, /*->22832*/
/* 22822*/        OPC_CheckPatternPredicate, 26, // (Subtarget->hasStdExtM())
/* 22824*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (urem:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (REMU:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22832*/      0, /*End of Scope*/
/* 22833*/    /*SwitchType*/ 10, MVT::i64,// ->22845
/* 22835*/      OPC_CheckPatternPredicate, 27, // (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22837*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMU), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (urem:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (REMU:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 22845*/    0, // EndSwitchType
/* 22846*/  /*SwitchOpcode*/ 42, TARGET_VAL(RISCVISD::DIVW),// ->22891
/* 22849*/    OPC_RecordChild0, // #0 = $rs1
/* 22850*/    OPC_RecordChild1, // #1 = $rs2
/* 22851*/    OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->22878
/* 22854*/      OPC_Scope, 10, /*->22866*/ // 2 children in Scope
/* 22856*/        OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 22858*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVW), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (riscv_divw:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (DIVW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22866*/      /*Scope*/ 10, /*->22877*/
/* 22867*/        OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/* 22869*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVW), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (riscv_divw:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (DIVW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22877*/      0, /*End of Scope*/
/* 22878*/    /*SwitchType*/ 10, MVT::i64,// ->22890
/* 22880*/      OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22882*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVW), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (riscv_divw:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (DIVW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 22890*/    0, // EndSwitchType
/* 22891*/  /*SwitchOpcode*/ 42, TARGET_VAL(RISCVISD::DIVUW),// ->22936
/* 22894*/    OPC_RecordChild0, // #0 = $rs1
/* 22895*/    OPC_RecordChild1, // #1 = $rs2
/* 22896*/    OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->22923
/* 22899*/      OPC_Scope, 10, /*->22911*/ // 2 children in Scope
/* 22901*/        OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 22903*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVUW), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (riscv_divuw:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (DIVUW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22911*/      /*Scope*/ 10, /*->22922*/
/* 22912*/        OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/* 22914*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVUW), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (riscv_divuw:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (DIVUW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22922*/      0, /*End of Scope*/
/* 22923*/    /*SwitchType*/ 10, MVT::i64,// ->22935
/* 22925*/      OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22927*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::DIVUW), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (riscv_divuw:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (DIVUW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 22935*/    0, // EndSwitchType
/* 22936*/  /*SwitchOpcode*/ 42, TARGET_VAL(RISCVISD::REMUW),// ->22981
/* 22939*/    OPC_RecordChild0, // #0 = $rs1
/* 22940*/    OPC_RecordChild1, // #1 = $rs2
/* 22941*/    OPC_SwitchType /*2 cases */, 24, MVT::i32,// ->22968
/* 22944*/      OPC_Scope, 10, /*->22956*/ // 2 children in Scope
/* 22946*/        OPC_CheckPatternPredicate, 0, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 22948*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMUW), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (riscv_remuw:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (REMUW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22956*/      /*Scope*/ 10, /*->22967*/
/* 22957*/        OPC_CheckPatternPredicate, 1, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit())
/* 22959*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMUW), 0,
                      MVT::i32, 2/*#Ops*/, 0, 1,
                  // Src: (riscv_remuw:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2) - Complexity = 3
                  // Dst: (REMUW:{ *:[i32] } GPR:{ *:[i32] }:$rs1, GPR:{ *:[i32] }:$rs2)
/* 22967*/      0, /*End of Scope*/
/* 22968*/    /*SwitchType*/ 10, MVT::i64,// ->22980
/* 22970*/      OPC_CheckPatternPredicate, 2, // (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 22972*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::REMUW), 0,
                    MVT::i64, 2/*#Ops*/, 0, 1,
                // Src: (riscv_remuw:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2) - Complexity = 3
                // Dst: (REMUW:{ *:[i64] } GPR:{ *:[i64] }:$rs1, GPR:{ *:[i64] }:$rs2)
/* 22980*/    0, // EndSwitchType
/* 22981*/  /*SwitchOpcode*/ 35|128,1/*163*/, TARGET_VAL(ISD::BITCAST),// ->23148
/* 22985*/    OPC_RecordChild0, // #0 = $rs1
/* 22986*/    OPC_Scope, 39, /*->23027*/ // 4 children in Scope
/* 22988*/      OPC_CheckChild0Type, MVT::f32,
/* 22990*/      OPC_SwitchType /*2 cases */, 22, MVT::i32,// ->23015
/* 22993*/        OPC_Scope, 9, /*->23004*/ // 2 children in Scope
/* 22995*/          OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 22997*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_X_W), 0,
                        MVT::i32, 1/*#Ops*/, 0,
                    // Src: (bitconvert:{ *:[i32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FMV_X_W:{ *:[i32] } FPR32:{ *:[f32] }:$rs1)
/* 23004*/        /*Scope*/ 9, /*->23014*/
/* 23005*/          OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 23007*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_X_W), 0,
                        MVT::i32, 1/*#Ops*/, 0,
                    // Src: (bitconvert:{ *:[i32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FMV_X_W:{ *:[i32] } FPR32:{ *:[f32] }:$rs1)
/* 23014*/        0, /*End of Scope*/
/* 23015*/      /*SwitchType*/ 9, MVT::i64,// ->23026
/* 23017*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23019*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_X_W), 0,
                      MVT::i64, 1/*#Ops*/, 0,
                  // Src: (bitconvert:{ *:[i64] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                  // Dst: (FMV_X_W:{ *:[i64] } FPR32:{ *:[f32] }:$rs1)
/* 23026*/      0, // EndSwitchType
/* 23027*/    /*Scope*/ 39, /*->23067*/
/* 23028*/      OPC_CheckChild0Type, MVT::f64,
/* 23030*/      OPC_SwitchType /*2 cases */, 22, MVT::i32,// ->23055
/* 23033*/        OPC_Scope, 9, /*->23044*/ // 2 children in Scope
/* 23035*/          OPC_CheckPatternPredicate, 28, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23037*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_X_D), 0,
                        MVT::i32, 1/*#Ops*/, 0,
                    // Src: (bitconvert:{ *:[i32] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                    // Dst: (FMV_X_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs1)
/* 23044*/        /*Scope*/ 9, /*->23054*/
/* 23045*/          OPC_CheckPatternPredicate, 29, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit())
/* 23047*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_X_D), 0,
                        MVT::i32, 1/*#Ops*/, 0,
                    // Src: (bitconvert:{ *:[i32] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                    // Dst: (FMV_X_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs1)
/* 23054*/        0, /*End of Scope*/
/* 23055*/      /*SwitchType*/ 9, MVT::i64,// ->23066
/* 23057*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23059*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_X_D), 0,
                      MVT::i64, 1/*#Ops*/, 0,
                  // Src: (bitconvert:{ *:[i64] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                  // Dst: (FMV_X_D:{ *:[i64] } FPR64:{ *:[f64] }:$rs1)
/* 23066*/      0, // EndSwitchType
/* 23067*/    /*Scope*/ 52, /*->23120*/
/* 23068*/      OPC_CheckChild0Type, MVT::i32,
/* 23070*/      OPC_SwitchType /*2 cases */, 22, MVT::f32,// ->23095
/* 23073*/        OPC_Scope, 9, /*->23084*/ // 2 children in Scope
/* 23075*/          OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23077*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_W_X), 0,
                        MVT::f32, 1/*#Ops*/, 0,
                    // Src: (bitconvert:{ *:[f32] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                    // Dst: (FMV_W_X:{ *:[f32] } GPR:{ *:[i32] }:$rs1)
/* 23084*/        /*Scope*/ 9, /*->23094*/
/* 23085*/          OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 23087*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_W_X), 0,
                        MVT::f32, 1/*#Ops*/, 0,
                    // Src: (bitconvert:{ *:[f32] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                    // Dst: (FMV_W_X:{ *:[f32] } GPR:{ *:[i32] }:$rs1)
/* 23094*/        0, /*End of Scope*/
/* 23095*/      /*SwitchType*/ 22, MVT::f64,// ->23119
/* 23097*/        OPC_Scope, 9, /*->23108*/ // 2 children in Scope
/* 23099*/          OPC_CheckPatternPredicate, 28, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23101*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_D_X), 0,
                        MVT::f64, 1/*#Ops*/, 0,
                    // Src: (bitconvert:{ *:[f64] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                    // Dst: (FMV_D_X:{ *:[f64] } GPR:{ *:[i32] }:$rs1)
/* 23108*/        /*Scope*/ 9, /*->23118*/
/* 23109*/          OPC_CheckPatternPredicate, 29, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit())
/* 23111*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_D_X), 0,
                        MVT::f64, 1/*#Ops*/, 0,
                    // Src: (bitconvert:{ *:[f64] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                    // Dst: (FMV_D_X:{ *:[f64] } GPR:{ *:[i32] }:$rs1)
/* 23118*/        0, /*End of Scope*/
/* 23119*/      0, // EndSwitchType
/* 23120*/    /*Scope*/ 26, /*->23147*/
/* 23121*/      OPC_CheckChild0Type, MVT::i64,
/* 23123*/      OPC_SwitchType /*2 cases */, 9, MVT::f32,// ->23135
/* 23126*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23128*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_W_X), 0,
                      MVT::f32, 1/*#Ops*/, 0,
                  // Src: (bitconvert:{ *:[f32] } GPR:{ *:[i64] }:$rs1) - Complexity = 3
                  // Dst: (FMV_W_X:{ *:[f32] } GPR:{ *:[i64] }:$rs1)
/* 23135*/      /*SwitchType*/ 9, MVT::f64,// ->23146
/* 23137*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23139*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_D_X), 0,
                      MVT::f64, 1/*#Ops*/, 0,
                  // Src: (bitconvert:{ *:[f64] } GPR:{ *:[i64] }:$rs1) - Complexity = 3
                  // Dst: (FMV_D_X:{ *:[f64] } GPR:{ *:[i64] }:$rs1)
/* 23146*/      0, // EndSwitchType
/* 23147*/    0, /*End of Scope*/
/* 23148*/  /*SwitchOpcode*/ 97|128,1/*225*/, TARGET_VAL(ISD::FP_TO_SINT),// ->23377
/* 23152*/    OPC_RecordChild0, // #0 = $rs1
/* 23153*/    OPC_Scope, 124, /*->23279*/ // 2 children in Scope
/* 23155*/      OPC_CheckChild0Type, MVT::f32,
/* 23157*/      OPC_SwitchType /*2 cases */, 86, MVT::i32,// ->23246
/* 23160*/        OPC_Scope, 13, /*->23175*/ // 6 children in Scope
/* 23162*/          OPC_CheckPatternPredicate, 30, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23164*/          OPC_EmitInteger, MVT::i32, 1,
/* 23167*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_W_S), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_sint:{ *:[i32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_W_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, 1:{ *:[i32] })
/* 23175*/        /*Scope*/ 13, /*->23189*/
/* 23176*/          OPC_CheckPatternPredicate, 31, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit())
/* 23178*/          OPC_EmitInteger, MVT::i32, 1,
/* 23181*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_W_S), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_sint:{ *:[i32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_W_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, 1:{ *:[i32] })
/* 23189*/        /*Scope*/ 13, /*->23203*/
/* 23190*/          OPC_CheckPatternPredicate, 30, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23192*/          OPC_EmitInteger, MVT::i32, 1,
/* 23195*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_W_S), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_sint:{ *:[i32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_W_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, 1:{ *:[i32] })
/* 23203*/        /*Scope*/ 13, /*->23217*/
/* 23204*/          OPC_CheckPatternPredicate, 31, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit())
/* 23206*/          OPC_EmitInteger, MVT::i32, 1,
/* 23209*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_W_S), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_sint:{ *:[i32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_W_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, 1:{ *:[i32] })
/* 23217*/        /*Scope*/ 13, /*->23231*/
/* 23218*/          OPC_CheckPatternPredicate, 32, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23220*/          OPC_EmitInteger, MVT::i32, 1,
/* 23223*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_L_S), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_sint:{ *:[i32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_L_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, 1:{ *:[i32] })
/* 23231*/        /*Scope*/ 13, /*->23245*/
/* 23232*/          OPC_CheckPatternPredicate, 33, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit())
/* 23234*/          OPC_EmitInteger, MVT::i32, 1,
/* 23237*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_L_S), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_sint:{ *:[i32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_L_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, 1:{ *:[i32] })
/* 23245*/        0, /*End of Scope*/
/* 23246*/      /*SwitchType*/ 30, MVT::i64,// ->23278
/* 23248*/        OPC_Scope, 13, /*->23263*/ // 2 children in Scope
/* 23250*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23252*/          OPC_EmitInteger, MVT::i64, 1,
/* 23255*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_W_S), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_sint:{ *:[i64] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_W_S:{ *:[i64] } ?:{ *:[f32] }:$rs1, 1:{ *:[i64] })
/* 23263*/        /*Scope*/ 13, /*->23277*/
/* 23264*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23266*/          OPC_EmitInteger, MVT::i64, 1,
/* 23269*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_L_S), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_sint:{ *:[i64] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_L_S:{ *:[i64] } ?:{ *:[f32] }:$rs1, 1:{ *:[i64] })
/* 23277*/        0, /*End of Scope*/
/* 23278*/      0, // EndSwitchType
/* 23279*/    /*Scope*/ 96, /*->23376*/
/* 23280*/      OPC_CheckChild0Type, MVT::f64,
/* 23282*/      OPC_SwitchType /*2 cases */, 58, MVT::i32,// ->23343
/* 23285*/        OPC_Scope, 13, /*->23300*/ // 4 children in Scope
/* 23287*/          OPC_CheckPatternPredicate, 35, // (Subtarget->hasStdExtD()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23289*/          OPC_EmitInteger, MVT::i32, 1,
/* 23292*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_W_D), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_sint:{ *:[i32] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_W_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, 1:{ *:[i32] })
/* 23300*/        /*Scope*/ 13, /*->23314*/
/* 23301*/          OPC_CheckPatternPredicate, 36, // (Subtarget->hasStdExtD()) && (!Subtarget->is64Bit())
/* 23303*/          OPC_EmitInteger, MVT::i32, 1,
/* 23306*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_W_D), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_sint:{ *:[i32] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_W_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, 1:{ *:[i32] })
/* 23314*/        /*Scope*/ 13, /*->23328*/
/* 23315*/          OPC_CheckPatternPredicate, 28, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23317*/          OPC_EmitInteger, MVT::i32, 1,
/* 23320*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_L_D), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_sint:{ *:[i32] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_L_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, 1:{ *:[i32] })
/* 23328*/        /*Scope*/ 13, /*->23342*/
/* 23329*/          OPC_CheckPatternPredicate, 29, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit())
/* 23331*/          OPC_EmitInteger, MVT::i32, 1,
/* 23334*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_L_D), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_sint:{ *:[i32] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_L_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, 1:{ *:[i32] })
/* 23342*/        0, /*End of Scope*/
/* 23343*/      /*SwitchType*/ 30, MVT::i64,// ->23375
/* 23345*/        OPC_Scope, 13, /*->23360*/ // 2 children in Scope
/* 23347*/          OPC_CheckPatternPredicate, 37, // (Subtarget->hasStdExtD()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23349*/          OPC_EmitInteger, MVT::i64, 1,
/* 23352*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_W_D), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_sint:{ *:[i64] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_W_D:{ *:[i64] } FPR64:{ *:[f64] }:$rs1, 1:{ *:[i64] })
/* 23360*/        /*Scope*/ 13, /*->23374*/
/* 23361*/          OPC_CheckPatternPredicate, 23, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23363*/          OPC_EmitInteger, MVT::i64, 1,
/* 23366*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_L_D), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_sint:{ *:[i64] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_L_D:{ *:[i64] } FPR64:{ *:[f64] }:$rs1, 1:{ *:[i64] })
/* 23374*/        0, /*End of Scope*/
/* 23375*/      0, // EndSwitchType
/* 23376*/    0, /*End of Scope*/
/* 23377*/  /*SwitchOpcode*/ 97|128,1/*225*/, TARGET_VAL(ISD::FP_TO_UINT),// ->23606
/* 23381*/    OPC_RecordChild0, // #0 = $rs1
/* 23382*/    OPC_Scope, 124, /*->23508*/ // 2 children in Scope
/* 23384*/      OPC_CheckChild0Type, MVT::f32,
/* 23386*/      OPC_SwitchType /*2 cases */, 86, MVT::i32,// ->23475
/* 23389*/        OPC_Scope, 13, /*->23404*/ // 6 children in Scope
/* 23391*/          OPC_CheckPatternPredicate, 30, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23393*/          OPC_EmitInteger, MVT::i32, 1,
/* 23396*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_WU_S), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_uint:{ *:[i32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_WU_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, 1:{ *:[i32] })
/* 23404*/        /*Scope*/ 13, /*->23418*/
/* 23405*/          OPC_CheckPatternPredicate, 31, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit())
/* 23407*/          OPC_EmitInteger, MVT::i32, 1,
/* 23410*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_WU_S), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_uint:{ *:[i32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_WU_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, 1:{ *:[i32] })
/* 23418*/        /*Scope*/ 13, /*->23432*/
/* 23419*/          OPC_CheckPatternPredicate, 30, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23421*/          OPC_EmitInteger, MVT::i32, 1,
/* 23424*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_WU_S), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_uint:{ *:[i32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_WU_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, 1:{ *:[i32] })
/* 23432*/        /*Scope*/ 13, /*->23446*/
/* 23433*/          OPC_CheckPatternPredicate, 31, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit())
/* 23435*/          OPC_EmitInteger, MVT::i32, 1,
/* 23438*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_WU_S), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_uint:{ *:[i32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_WU_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, 1:{ *:[i32] })
/* 23446*/        /*Scope*/ 13, /*->23460*/
/* 23447*/          OPC_CheckPatternPredicate, 32, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23449*/          OPC_EmitInteger, MVT::i32, 1,
/* 23452*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_LU_S), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_uint:{ *:[i32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_LU_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, 1:{ *:[i32] })
/* 23460*/        /*Scope*/ 13, /*->23474*/
/* 23461*/          OPC_CheckPatternPredicate, 33, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit())
/* 23463*/          OPC_EmitInteger, MVT::i32, 1,
/* 23466*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_LU_S), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_uint:{ *:[i32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_LU_S:{ *:[i32] } ?:{ *:[f32] }:$rs1, 1:{ *:[i32] })
/* 23474*/        0, /*End of Scope*/
/* 23475*/      /*SwitchType*/ 30, MVT::i64,// ->23507
/* 23477*/        OPC_Scope, 13, /*->23492*/ // 2 children in Scope
/* 23479*/          OPC_CheckPatternPredicate, 34, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23481*/          OPC_EmitInteger, MVT::i64, 1,
/* 23484*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_WU_S), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_uint:{ *:[i64] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_WU_S:{ *:[i64] } ?:{ *:[f32] }:$rs1, 1:{ *:[i64] })
/* 23492*/        /*Scope*/ 13, /*->23506*/
/* 23493*/          OPC_CheckPatternPredicate, 24, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23495*/          OPC_EmitInteger, MVT::i64, 1,
/* 23498*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_LU_S), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_uint:{ *:[i64] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_LU_S:{ *:[i64] } ?:{ *:[f32] }:$rs1, 1:{ *:[i64] })
/* 23506*/        0, /*End of Scope*/
/* 23507*/      0, // EndSwitchType
/* 23508*/    /*Scope*/ 96, /*->23605*/
/* 23509*/      OPC_CheckChild0Type, MVT::f64,
/* 23511*/      OPC_SwitchType /*2 cases */, 58, MVT::i32,// ->23572
/* 23514*/        OPC_Scope, 13, /*->23529*/ // 4 children in Scope
/* 23516*/          OPC_CheckPatternPredicate, 35, // (Subtarget->hasStdExtD()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23518*/          OPC_EmitInteger, MVT::i32, 1,
/* 23521*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_WU_D), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_uint:{ *:[i32] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_WU_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, 1:{ *:[i32] })
/* 23529*/        /*Scope*/ 13, /*->23543*/
/* 23530*/          OPC_CheckPatternPredicate, 36, // (Subtarget->hasStdExtD()) && (!Subtarget->is64Bit())
/* 23532*/          OPC_EmitInteger, MVT::i32, 1,
/* 23535*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_WU_D), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_uint:{ *:[i32] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_WU_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, 1:{ *:[i32] })
/* 23543*/        /*Scope*/ 13, /*->23557*/
/* 23544*/          OPC_CheckPatternPredicate, 28, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23546*/          OPC_EmitInteger, MVT::i32, 1,
/* 23549*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_LU_D), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_uint:{ *:[i32] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_LU_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, 1:{ *:[i32] })
/* 23557*/        /*Scope*/ 13, /*->23571*/
/* 23558*/          OPC_CheckPatternPredicate, 29, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit())
/* 23560*/          OPC_EmitInteger, MVT::i32, 1,
/* 23563*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_LU_D), 0,
                        MVT::i32, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_uint:{ *:[i32] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_LU_D:{ *:[i32] } FPR64:{ *:[f64] }:$rs1, 1:{ *:[i32] })
/* 23571*/        0, /*End of Scope*/
/* 23572*/      /*SwitchType*/ 30, MVT::i64,// ->23604
/* 23574*/        OPC_Scope, 13, /*->23589*/ // 2 children in Scope
/* 23576*/          OPC_CheckPatternPredicate, 37, // (Subtarget->hasStdExtD()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23578*/          OPC_EmitInteger, MVT::i64, 1,
/* 23581*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_WU_D), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_uint:{ *:[i64] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_WU_D:{ *:[i64] } FPR64:{ *:[f64] }:$rs1, 1:{ *:[i64] })
/* 23589*/        /*Scope*/ 13, /*->23603*/
/* 23590*/          OPC_CheckPatternPredicate, 23, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23592*/          OPC_EmitInteger, MVT::i64, 1,
/* 23595*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_LU_D), 0,
                        MVT::i64, 2/*#Ops*/, 0, 1,
                    // Src: (fp_to_uint:{ *:[i64] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                    // Dst: (FCVT_LU_D:{ *:[i64] } FPR64:{ *:[f64] }:$rs1, 1:{ *:[i64] })
/* 23603*/        0, /*End of Scope*/
/* 23604*/      0, // EndSwitchType
/* 23605*/    0, /*End of Scope*/
/* 23606*/  /*SwitchOpcode*/ 10, TARGET_VAL(RISCVISD::FMV_X_ANYEXTW_RV64),// ->23619
/* 23609*/    OPC_RecordChild0, // #0 = $src
/* 23610*/    OPC_CheckPatternPredicate, 24, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23612*/    OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_X_W), 0,
                  MVT::i64, 1/*#Ops*/, 0,
              // Src: (riscv_fmv_x_anyextw_rv64:{ *:[i64] } FPR32:{ *:[f32] }:$src) - Complexity = 3
              // Dst: (FMV_X_W:{ *:[i64] } FPR32:{ *:[f32] }:$src)
/* 23619*/  /*SwitchOpcode*/ 25, TARGET_VAL(RISCVISD::SplitF64),// ->23647
/* 23622*/    OPC_RecordChild0, // #0 = $src
/* 23623*/    OPC_Scope, 10, /*->23635*/ // 2 children in Scope
/* 23625*/      OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23627*/      OPC_MorphNodeTo2, TARGET_VAL(RISCV::SplitF64Pseudo), 0,
                    MVT::i32, MVT::i32, 1/*#Ops*/, 0,
                // Src: (RISCVSplitF64:{ *:[i32] }:{ *:[i32] } FPR64:{ *:[f64] }:$src) - Complexity = 3
                // Dst: (SplitF64Pseudo:{ *:[i32] }:{ *:[i32] } FPR64:{ *:[f64] }:$src)
/* 23635*/    /*Scope*/ 10, /*->23646*/
/* 23636*/      OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 23638*/      OPC_MorphNodeTo2, TARGET_VAL(RISCV::SplitF64Pseudo), 0,
                    MVT::i32, MVT::i32, 1/*#Ops*/, 0,
                // Src: (RISCVSplitF64:{ *:[i32] }:{ *:[i32] } FPR64:{ *:[f64] }:$src) - Complexity = 3
                // Dst: (SplitF64Pseudo:{ *:[i32] }:{ *:[i32] } FPR64:{ *:[f64] }:$src)
/* 23646*/    0, /*End of Scope*/
/* 23647*/  /*SwitchOpcode*/ 42|128,3/*426*/, TARGET_VAL(ISD::UINT_TO_FP),// ->24077
/* 23651*/    OPC_Scope, 78|128,1/*206*/, /*->23860*/ // 2 children in Scope
/* 23654*/      OPC_MoveChild0,
/* 23655*/      OPC_Scope, 101, /*->23758*/ // 2 children in Scope
/* 23657*/        OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15/*4294967295*/,
/* 23663*/        OPC_RecordChild0, // #0 = $rs1
/* 23664*/        OPC_SwitchType /*2 cases */, 59, MVT::i32,// ->23726
/* 23667*/          OPC_MoveParent,
/* 23668*/          OPC_SwitchType /*2 cases */, 30, MVT::f32,// ->23701
/* 23671*/            OPC_Scope, 13, /*->23686*/ // 2 children in Scope
/* 23673*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23675*/              OPC_EmitInteger, MVT::i32, 7,
/* 23678*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_WU), 0,
                            MVT::f32, 2/*#Ops*/, 0, 1,
                        // Src: (uint_to_fp:{ *:[f32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] })) - Complexity = 11
                        // Dst: (FCVT_S_WU:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 23686*/            /*Scope*/ 13, /*->23700*/
/* 23687*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit())
/* 23689*/              OPC_EmitInteger, MVT::i32, 7,
/* 23692*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_WU), 0,
                            MVT::f32, 2/*#Ops*/, 0, 1,
                        // Src: (uint_to_fp:{ *:[f32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] })) - Complexity = 11
                        // Dst: (FCVT_S_WU:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 23700*/            0, /*End of Scope*/
/* 23701*/          /*SwitchType*/ 22, MVT::f64,// ->23725
/* 23703*/            OPC_Scope, 9, /*->23714*/ // 2 children in Scope
/* 23705*/              OPC_CheckPatternPredicate, 28, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23707*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_WU), 0,
                            MVT::f64, 1/*#Ops*/, 0,
                        // Src: (uint_to_fp:{ *:[f64] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] })) - Complexity = 11
                        // Dst: (FCVT_D_WU:{ *:[f64] } ?:{ *:[i32] }:$rs1)
/* 23714*/            /*Scope*/ 9, /*->23724*/
/* 23715*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit())
/* 23717*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_WU), 0,
                            MVT::f64, 1/*#Ops*/, 0,
                        // Src: (uint_to_fp:{ *:[f64] } (and:{ *:[i32] } GPR:{ *:[i32] }:$rs1, 4294967295:{ *:[i32] })) - Complexity = 11
                        // Dst: (FCVT_D_WU:{ *:[f64] } ?:{ *:[i32] }:$rs1)
/* 23724*/            0, /*End of Scope*/
/* 23725*/          0, // EndSwitchType
/* 23726*/        /*SwitchType*/ 29, MVT::i64,// ->23757
/* 23728*/          OPC_MoveParent,
/* 23729*/          OPC_SwitchType /*2 cases */, 13, MVT::f32,// ->23745
/* 23732*/            OPC_CheckPatternPredicate, 24, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23734*/            OPC_EmitInteger, MVT::i64, 7,
/* 23737*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_WU), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (uint_to_fp:{ *:[f32] } (and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 4294967295:{ *:[i64] })) - Complexity = 11
                      // Dst: (FCVT_S_WU:{ *:[f32] } ?:{ *:[i64] }:$rs1, 7:{ *:[i64] })
/* 23745*/          /*SwitchType*/ 9, MVT::f64,// ->23756
/* 23747*/            OPC_CheckPatternPredicate, 23, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23749*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_WU), 0,
                          MVT::f64, 1/*#Ops*/, 0,
                      // Src: (uint_to_fp:{ *:[f64] } (and:{ *:[i64] } GPR:{ *:[i64] }:$rs1, 4294967295:{ *:[i64] })) - Complexity = 11
                      // Dst: (FCVT_D_WU:{ *:[f64] } ?:{ *:[i64] }:$rs1)
/* 23756*/          0, // EndSwitchType
/* 23757*/        0, // EndSwitchType
/* 23758*/      /*Scope*/ 100, /*->23859*/
/* 23759*/        OPC_CheckOpcode, TARGET_VAL(ISD::AssertZext),
/* 23762*/        OPC_RecordChild0, // #0 = $rs1
/* 23763*/        OPC_CheckPredicate, 0, // Predicate_assertzexti32
/* 23765*/        OPC_SwitchType /*2 cases */, 59, MVT::i32,// ->23827
/* 23768*/          OPC_MoveParent,
/* 23769*/          OPC_SwitchType /*2 cases */, 30, MVT::f32,// ->23802
/* 23772*/            OPC_Scope, 13, /*->23787*/ // 2 children in Scope
/* 23774*/              OPC_CheckPatternPredicate, 32, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23776*/              OPC_EmitInteger, MVT::i32, 7,
/* 23779*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_WU), 0,
                            MVT::f32, 2/*#Ops*/, 0, 1,
                        // Src: (uint_to_fp:{ *:[f32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>) - Complexity = 7
                        // Dst: (FCVT_S_WU:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 23787*/            /*Scope*/ 13, /*->23801*/
/* 23788*/              OPC_CheckPatternPredicate, 33, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit())
/* 23790*/              OPC_EmitInteger, MVT::i32, 7,
/* 23793*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_WU), 0,
                            MVT::f32, 2/*#Ops*/, 0, 1,
                        // Src: (uint_to_fp:{ *:[f32] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>) - Complexity = 7
                        // Dst: (FCVT_S_WU:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 23801*/            0, /*End of Scope*/
/* 23802*/          /*SwitchType*/ 22, MVT::f64,// ->23826
/* 23804*/            OPC_Scope, 9, /*->23815*/ // 2 children in Scope
/* 23806*/              OPC_CheckPatternPredicate, 28, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23808*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_WU), 0,
                            MVT::f64, 1/*#Ops*/, 0,
                        // Src: (uint_to_fp:{ *:[f64] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>) - Complexity = 7
                        // Dst: (FCVT_D_WU:{ *:[f64] } ?:{ *:[i32] }:$rs1)
/* 23815*/            /*Scope*/ 9, /*->23825*/
/* 23816*/              OPC_CheckPatternPredicate, 29, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit())
/* 23818*/              OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_WU), 0,
                            MVT::f64, 1/*#Ops*/, 0,
                        // Src: (uint_to_fp:{ *:[f64] } (assertzext:{ *:[i32] } GPR:{ *:[i32] }:$rs1)<<P:Predicate_assertzexti32>>) - Complexity = 7
                        // Dst: (FCVT_D_WU:{ *:[f64] } ?:{ *:[i32] }:$rs1)
/* 23825*/            0, /*End of Scope*/
/* 23826*/          0, // EndSwitchType
/* 23827*/        /*SwitchType*/ 29, MVT::i64,// ->23858
/* 23829*/          OPC_MoveParent,
/* 23830*/          OPC_SwitchType /*2 cases */, 13, MVT::f32,// ->23846
/* 23833*/            OPC_CheckPatternPredicate, 24, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23835*/            OPC_EmitInteger, MVT::i64, 7,
/* 23838*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_WU), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (uint_to_fp:{ *:[f32] } (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_assertzexti32>>) - Complexity = 7
                      // Dst: (FCVT_S_WU:{ *:[f32] } ?:{ *:[i64] }:$rs1, 7:{ *:[i64] })
/* 23846*/          /*SwitchType*/ 9, MVT::f64,// ->23857
/* 23848*/            OPC_CheckPatternPredicate, 23, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 23850*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_WU), 0,
                          MVT::f64, 1/*#Ops*/, 0,
                      // Src: (uint_to_fp:{ *:[f64] } (assertzext:{ *:[i64] } GPR:{ *:[i64] }:$rs1)<<P:Predicate_assertzexti32>>) - Complexity = 7
                      // Dst: (FCVT_D_WU:{ *:[f64] } ?:{ *:[i64] }:$rs1)
/* 23857*/          0, // EndSwitchType
/* 23858*/        0, // EndSwitchType
/* 23859*/      0, /*End of Scope*/
/* 23860*/    /*Scope*/ 86|128,1/*214*/, /*->24076*/
/* 23862*/      OPC_RecordChild0, // #0 = $rs1
/* 23863*/      OPC_Scope, 16|128,1/*144*/, /*->24010*/ // 2 children in Scope
/* 23866*/        OPC_CheckChild0Type, MVT::i32,
/* 23868*/        OPC_SwitchType /*2 cases */, 86, MVT::f32,// ->23957
/* 23871*/          OPC_Scope, 13, /*->23886*/ // 6 children in Scope
/* 23873*/            OPC_CheckPatternPredicate, 30, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23875*/            OPC_EmitInteger, MVT::i32, 7,
/* 23878*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_WU), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (uint_to_fp:{ *:[f32] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_WU:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 23886*/          /*Scope*/ 13, /*->23900*/
/* 23887*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit())
/* 23889*/            OPC_EmitInteger, MVT::i32, 7,
/* 23892*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_WU), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (uint_to_fp:{ *:[f32] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_WU:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 23900*/          /*Scope*/ 13, /*->23914*/
/* 23901*/            OPC_CheckPatternPredicate, 30, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23903*/            OPC_EmitInteger, MVT::i32, 7,
/* 23906*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_WU), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (uint_to_fp:{ *:[f32] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_WU:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 23914*/          /*Scope*/ 13, /*->23928*/
/* 23915*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit())
/* 23917*/            OPC_EmitInteger, MVT::i32, 7,
/* 23920*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_WU), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (uint_to_fp:{ *:[f32] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_WU:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 23928*/          /*Scope*/ 13, /*->23942*/
/* 23929*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23931*/            OPC_EmitInteger, MVT::i32, 7,
/* 23934*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_LU), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (uint_to_fp:{ *:[f32] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_LU:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 23942*/          /*Scope*/ 13, /*->23956*/
/* 23943*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit())
/* 23945*/            OPC_EmitInteger, MVT::i32, 7,
/* 23948*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_LU), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (uint_to_fp:{ *:[f32] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_LU:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 23956*/          0, /*End of Scope*/
/* 23957*/        /*SwitchType*/ 50, MVT::f64,// ->24009
/* 23959*/          OPC_Scope, 9, /*->23970*/ // 4 children in Scope
/* 23961*/            OPC_CheckPatternPredicate, 35, // (Subtarget->hasStdExtD()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23963*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_WU), 0,
                          MVT::f64, 1/*#Ops*/, 0,
                      // Src: (uint_to_fp:{ *:[f64] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_D_WU:{ *:[f64] } GPR:{ *:[i32] }:$rs1)
/* 23970*/          /*Scope*/ 9, /*->23980*/
/* 23971*/            OPC_CheckPatternPredicate, 36, // (Subtarget->hasStdExtD()) && (!Subtarget->is64Bit())
/* 23973*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_WU), 0,
                          MVT::f64, 1/*#Ops*/, 0,
                      // Src: (uint_to_fp:{ *:[f64] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_D_WU:{ *:[f64] } GPR:{ *:[i32] }:$rs1)
/* 23980*/          /*Scope*/ 13, /*->23994*/
/* 23981*/            OPC_CheckPatternPredicate, 28, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 23983*/            OPC_EmitInteger, MVT::i32, 7,
/* 23986*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_LU), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1,
                      // Src: (uint_to_fp:{ *:[f64] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_D_LU:{ *:[f64] } GPR:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 23994*/          /*Scope*/ 13, /*->24008*/
/* 23995*/            OPC_CheckPatternPredicate, 29, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit())
/* 23997*/            OPC_EmitInteger, MVT::i32, 7,
/* 24000*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_LU), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1,
                      // Src: (uint_to_fp:{ *:[f64] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_D_LU:{ *:[f64] } GPR:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 24008*/          0, /*End of Scope*/
/* 24009*/        0, // EndSwitchType
/* 24010*/      /*Scope*/ 64, /*->24075*/
/* 24011*/        OPC_CheckChild0Type, MVT::i64,
/* 24013*/        OPC_SwitchType /*2 cases */, 30, MVT::f32,// ->24046
/* 24016*/          OPC_Scope, 13, /*->24031*/ // 2 children in Scope
/* 24018*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24020*/            OPC_EmitInteger, MVT::i64, 7,
/* 24023*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_WU), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (uint_to_fp:{ *:[f32] } GPR:{ *:[i64] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_WU:{ *:[f32] } ?:{ *:[i64] }:$rs1, 7:{ *:[i64] })
/* 24031*/          /*Scope*/ 13, /*->24045*/
/* 24032*/            OPC_CheckPatternPredicate, 24, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24034*/            OPC_EmitInteger, MVT::i64, 7,
/* 24037*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_LU), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (uint_to_fp:{ *:[f32] } GPR:{ *:[i64] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_LU:{ *:[f32] } ?:{ *:[i64] }:$rs1, 7:{ *:[i64] })
/* 24045*/          0, /*End of Scope*/
/* 24046*/        /*SwitchType*/ 26, MVT::f64,// ->24074
/* 24048*/          OPC_Scope, 9, /*->24059*/ // 2 children in Scope
/* 24050*/            OPC_CheckPatternPredicate, 37, // (Subtarget->hasStdExtD()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24052*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_WU), 0,
                          MVT::f64, 1/*#Ops*/, 0,
                      // Src: (uint_to_fp:{ *:[f64] } GPR:{ *:[i64] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_D_WU:{ *:[f64] } GPR:{ *:[i64] }:$rs1)
/* 24059*/          /*Scope*/ 13, /*->24073*/
/* 24060*/            OPC_CheckPatternPredicate, 23, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24062*/            OPC_EmitInteger, MVT::i64, 7,
/* 24065*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_LU), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1,
                      // Src: (uint_to_fp:{ *:[f64] } GPR:{ *:[i64] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_D_LU:{ *:[f64] } GPR:{ *:[i64] }:$rs1, 7:{ *:[i64] })
/* 24073*/          0, /*End of Scope*/
/* 24074*/        0, // EndSwitchType
/* 24075*/      0, /*End of Scope*/
/* 24076*/    0, /*End of Scope*/
/* 24077*/  /*SwitchOpcode*/ 92|128,3/*476*/, TARGET_VAL(ISD::FMA),// ->24557
/* 24081*/    OPC_Scope, 119, /*->24202*/ // 6 children in Scope
/* 24083*/      OPC_MoveChild0,
/* 24084*/      OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
/* 24087*/      OPC_RecordChild0, // #0 = $rs1
/* 24088*/      OPC_MoveParent,
/* 24089*/      OPC_RecordChild1, // #1 = $rs2
/* 24090*/      OPC_MoveChild2,
/* 24091*/      OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
/* 24094*/      OPC_RecordChild0, // #2 = $rs3
/* 24095*/      OPC_MoveParent,
/* 24096*/      OPC_SwitchType /*2 cases */, 50, MVT::f32,// ->24149
/* 24099*/        OPC_Scope, 15, /*->24116*/ // 3 children in Scope
/* 24101*/          OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 24103*/          OPC_EmitInteger, MVT::i32, 7,
/* 24106*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FNMADD_S), 0,
                        MVT::f32, 4/*#Ops*/, 0, 1, 2, 3,
                    // Src: (fma:{ *:[f32] } (fneg:{ *:[f32] } FPR32:{ *:[f32] }:$rs1), FPR32:{ *:[f32] }:$rs2, (fneg:{ *:[f32] } FPR32:{ *:[f32] }:$rs3)) - Complexity = 9
                    // Dst: (FNMADD_S:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs3, 7:{ *:[i32] })
/* 24116*/        /*Scope*/ 15, /*->24132*/
/* 24117*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24119*/          OPC_EmitInteger, MVT::i64, 7,
/* 24122*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FNMADD_S), 0,
                        MVT::f32, 4/*#Ops*/, 0, 1, 2, 3,
                    // Src: (fma:{ *:[f32] } (fneg:{ *:[f32] } FPR32:{ *:[f32] }:$rs1), FPR32:{ *:[f32] }:$rs2, (fneg:{ *:[f32] } FPR32:{ *:[f32] }:$rs3)) - Complexity = 9
                    // Dst: (FNMADD_S:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs3, 7:{ *:[i64] })
/* 24132*/        /*Scope*/ 15, /*->24148*/
/* 24133*/          OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 24135*/          OPC_EmitInteger, MVT::i32, 7,
/* 24138*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FNMADD_S), 0,
                        MVT::f32, 4/*#Ops*/, 0, 1, 2, 3,
                    // Src: (fma:{ *:[f32] } (fneg:{ *:[f32] } FPR32:{ *:[f32] }:$rs1), FPR32:{ *:[f32] }:$rs2, (fneg:{ *:[f32] } FPR32:{ *:[f32] }:$rs3)) - Complexity = 9
                    // Dst: (FNMADD_S:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs3, 7:{ *:[i32] })
/* 24148*/        0, /*End of Scope*/
/* 24149*/      /*SwitchType*/ 50, MVT::f64,// ->24201
/* 24151*/        OPC_Scope, 15, /*->24168*/ // 3 children in Scope
/* 24153*/          OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 24155*/          OPC_EmitInteger, MVT::i32, 7,
/* 24158*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FNMADD_D), 0,
                        MVT::f64, 4/*#Ops*/, 0, 1, 2, 3,
                    // Src: (fma:{ *:[f64] } (fneg:{ *:[f64] } FPR64:{ *:[f64] }:$rs1), FPR64:{ *:[f64] }:$rs2, (fneg:{ *:[f64] } FPR64:{ *:[f64] }:$rs3)) - Complexity = 9
                    // Dst: (FNMADD_D:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs3, 7:{ *:[i32] })
/* 24168*/        /*Scope*/ 15, /*->24184*/
/* 24169*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24171*/          OPC_EmitInteger, MVT::i64, 7,
/* 24174*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FNMADD_D), 0,
                        MVT::f64, 4/*#Ops*/, 0, 1, 2, 3,
                    // Src: (fma:{ *:[f64] } (fneg:{ *:[f64] } FPR64:{ *:[f64] }:$rs1), FPR64:{ *:[f64] }:$rs2, (fneg:{ *:[f64] } FPR64:{ *:[f64] }:$rs3)) - Complexity = 9
                    // Dst: (FNMADD_D:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs3, 7:{ *:[i64] })
/* 24184*/        /*Scope*/ 15, /*->24200*/
/* 24185*/          OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 24187*/          OPC_EmitInteger, MVT::i32, 7,
/* 24190*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FNMADD_D), 0,
                        MVT::f64, 4/*#Ops*/, 0, 1, 2, 3,
                    // Src: (fma:{ *:[f64] } (fneg:{ *:[f64] } FPR64:{ *:[f64] }:$rs1), FPR64:{ *:[f64] }:$rs2, (fneg:{ *:[f64] } FPR64:{ *:[f64] }:$rs3)) - Complexity = 9
                    // Dst: (FNMADD_D:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs3, 7:{ *:[i32] })
/* 24200*/        0, /*End of Scope*/
/* 24201*/      0, // EndSwitchType
/* 24202*/    /*Scope*/ 60, /*->24263*/
/* 24203*/      OPC_RecordChild0, // #0 = $rs1
/* 24204*/      OPC_RecordChild1, // #1 = $rs2
/* 24205*/      OPC_MoveChild2,
/* 24206*/      OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
/* 24209*/      OPC_RecordChild0, // #2 = $rs3
/* 24210*/      OPC_MoveParent,
/* 24211*/      OPC_CheckType, MVT::f32,
/* 24213*/      OPC_Scope, 15, /*->24230*/ // 3 children in Scope
/* 24215*/        OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 24217*/        OPC_EmitInteger, MVT::i32, 7,
/* 24220*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMSUB_S), 0,
                      MVT::f32, 4/*#Ops*/, 0, 1, 2, 3,
                  // Src: (fma:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, (fneg:{ *:[f32] } FPR32:{ *:[f32] }:$rs3)) - Complexity = 6
                  // Dst: (FMSUB_S:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs3, 7:{ *:[i32] })
/* 24230*/      /*Scope*/ 15, /*->24246*/
/* 24231*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24233*/        OPC_EmitInteger, MVT::i64, 7,
/* 24236*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMSUB_S), 0,
                      MVT::f32, 4/*#Ops*/, 0, 1, 2, 3,
                  // Src: (fma:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, (fneg:{ *:[f32] } FPR32:{ *:[f32] }:$rs3)) - Complexity = 6
                  // Dst: (FMSUB_S:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs3, 7:{ *:[i64] })
/* 24246*/      /*Scope*/ 15, /*->24262*/
/* 24247*/        OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 24249*/        OPC_EmitInteger, MVT::i32, 7,
/* 24252*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMSUB_S), 0,
                      MVT::f32, 4/*#Ops*/, 0, 1, 2, 3,
                  // Src: (fma:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, (fneg:{ *:[f32] } FPR32:{ *:[f32] }:$rs3)) - Complexity = 6
                  // Dst: (FMSUB_S:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs3, 7:{ *:[i32] })
/* 24262*/      0, /*End of Scope*/
/* 24263*/    /*Scope*/ 60, /*->24324*/
/* 24264*/      OPC_MoveChild0,
/* 24265*/      OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
/* 24268*/      OPC_RecordChild0, // #0 = $rs1
/* 24269*/      OPC_MoveParent,
/* 24270*/      OPC_RecordChild1, // #1 = $rs2
/* 24271*/      OPC_RecordChild2, // #2 = $rs3
/* 24272*/      OPC_CheckType, MVT::f32,
/* 24274*/      OPC_Scope, 15, /*->24291*/ // 3 children in Scope
/* 24276*/        OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 24278*/        OPC_EmitInteger, MVT::i32, 7,
/* 24281*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FNMSUB_S), 0,
                      MVT::f32, 4/*#Ops*/, 0, 1, 2, 3,
                  // Src: (fma:{ *:[f32] } (fneg:{ *:[f32] } FPR32:{ *:[f32] }:$rs1), FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs3) - Complexity = 6
                  // Dst: (FNMSUB_S:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs3, 7:{ *:[i32] })
/* 24291*/      /*Scope*/ 15, /*->24307*/
/* 24292*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24294*/        OPC_EmitInteger, MVT::i64, 7,
/* 24297*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FNMSUB_S), 0,
                      MVT::f32, 4/*#Ops*/, 0, 1, 2, 3,
                  // Src: (fma:{ *:[f32] } (fneg:{ *:[f32] } FPR32:{ *:[f32] }:$rs1), FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs3) - Complexity = 6
                  // Dst: (FNMSUB_S:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs3, 7:{ *:[i64] })
/* 24307*/      /*Scope*/ 15, /*->24323*/
/* 24308*/        OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 24310*/        OPC_EmitInteger, MVT::i32, 7,
/* 24313*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FNMSUB_S), 0,
                      MVT::f32, 4/*#Ops*/, 0, 1, 2, 3,
                  // Src: (fma:{ *:[f32] } (fneg:{ *:[f32] } FPR32:{ *:[f32] }:$rs1), FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs3) - Complexity = 6
                  // Dst: (FNMSUB_S:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs3, 7:{ *:[i32] })
/* 24323*/      0, /*End of Scope*/
/* 24324*/    /*Scope*/ 60, /*->24385*/
/* 24325*/      OPC_RecordChild0, // #0 = $rs1
/* 24326*/      OPC_RecordChild1, // #1 = $rs2
/* 24327*/      OPC_MoveChild2,
/* 24328*/      OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
/* 24331*/      OPC_RecordChild0, // #2 = $rs3
/* 24332*/      OPC_MoveParent,
/* 24333*/      OPC_CheckType, MVT::f64,
/* 24335*/      OPC_Scope, 15, /*->24352*/ // 3 children in Scope
/* 24337*/        OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 24339*/        OPC_EmitInteger, MVT::i32, 7,
/* 24342*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMSUB_D), 0,
                      MVT::f64, 4/*#Ops*/, 0, 1, 2, 3,
                  // Src: (fma:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, (fneg:{ *:[f64] } FPR64:{ *:[f64] }:$rs3)) - Complexity = 6
                  // Dst: (FMSUB_D:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs3, 7:{ *:[i32] })
/* 24352*/      /*Scope*/ 15, /*->24368*/
/* 24353*/        OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24355*/        OPC_EmitInteger, MVT::i64, 7,
/* 24358*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMSUB_D), 0,
                      MVT::f64, 4/*#Ops*/, 0, 1, 2, 3,
                  // Src: (fma:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, (fneg:{ *:[f64] } FPR64:{ *:[f64] }:$rs3)) - Complexity = 6
                  // Dst: (FMSUB_D:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs3, 7:{ *:[i64] })
/* 24368*/      /*Scope*/ 15, /*->24384*/
/* 24369*/        OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 24371*/        OPC_EmitInteger, MVT::i32, 7,
/* 24374*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMSUB_D), 0,
                      MVT::f64, 4/*#Ops*/, 0, 1, 2, 3,
                  // Src: (fma:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, (fneg:{ *:[f64] } FPR64:{ *:[f64] }:$rs3)) - Complexity = 6
                  // Dst: (FMSUB_D:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs3, 7:{ *:[i32] })
/* 24384*/      0, /*End of Scope*/
/* 24385*/    /*Scope*/ 60, /*->24446*/
/* 24386*/      OPC_MoveChild0,
/* 24387*/      OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
/* 24390*/      OPC_RecordChild0, // #0 = $rs1
/* 24391*/      OPC_MoveParent,
/* 24392*/      OPC_RecordChild1, // #1 = $rs2
/* 24393*/      OPC_RecordChild2, // #2 = $rs3
/* 24394*/      OPC_CheckType, MVT::f64,
/* 24396*/      OPC_Scope, 15, /*->24413*/ // 3 children in Scope
/* 24398*/        OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 24400*/        OPC_EmitInteger, MVT::i32, 7,
/* 24403*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FNMSUB_D), 0,
                      MVT::f64, 4/*#Ops*/, 0, 1, 2, 3,
                  // Src: (fma:{ *:[f64] } (fneg:{ *:[f64] } FPR64:{ *:[f64] }:$rs1), FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs3) - Complexity = 6
                  // Dst: (FNMSUB_D:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs3, 7:{ *:[i32] })
/* 24413*/      /*Scope*/ 15, /*->24429*/
/* 24414*/        OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24416*/        OPC_EmitInteger, MVT::i64, 7,
/* 24419*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FNMSUB_D), 0,
                      MVT::f64, 4/*#Ops*/, 0, 1, 2, 3,
                  // Src: (fma:{ *:[f64] } (fneg:{ *:[f64] } FPR64:{ *:[f64] }:$rs1), FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs3) - Complexity = 6
                  // Dst: (FNMSUB_D:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs3, 7:{ *:[i64] })
/* 24429*/      /*Scope*/ 15, /*->24445*/
/* 24430*/        OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 24432*/        OPC_EmitInteger, MVT::i32, 7,
/* 24435*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FNMSUB_D), 0,
                      MVT::f64, 4/*#Ops*/, 0, 1, 2, 3,
                  // Src: (fma:{ *:[f64] } (fneg:{ *:[f64] } FPR64:{ *:[f64] }:$rs1), FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs3) - Complexity = 6
                  // Dst: (FNMSUB_D:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs3, 7:{ *:[i32] })
/* 24445*/      0, /*End of Scope*/
/* 24446*/    /*Scope*/ 109, /*->24556*/
/* 24447*/      OPC_RecordChild0, // #0 = $rs1
/* 24448*/      OPC_RecordChild1, // #1 = $rs2
/* 24449*/      OPC_RecordChild2, // #2 = $rs3
/* 24450*/      OPC_SwitchType /*2 cases */, 50, MVT::f32,// ->24503
/* 24453*/        OPC_Scope, 15, /*->24470*/ // 3 children in Scope
/* 24455*/          OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 24457*/          OPC_EmitInteger, MVT::i32, 7,
/* 24460*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMADD_S), 0,
                        MVT::f32, 4/*#Ops*/, 0, 1, 2, 3,
                    // Src: (fma:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs3) - Complexity = 3
                    // Dst: (FMADD_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2, ?:{ *:[f32] }:$rs3, 7:{ *:[i32] })
/* 24470*/        /*Scope*/ 15, /*->24486*/
/* 24471*/          OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24473*/          OPC_EmitInteger, MVT::i64, 7,
/* 24476*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMADD_S), 0,
                        MVT::f32, 4/*#Ops*/, 0, 1, 2, 3,
                    // Src: (fma:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs3) - Complexity = 3
                    // Dst: (FMADD_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2, ?:{ *:[f32] }:$rs3, 7:{ *:[i64] })
/* 24486*/        /*Scope*/ 15, /*->24502*/
/* 24487*/          OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 24489*/          OPC_EmitInteger, MVT::i32, 7,
/* 24492*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMADD_S), 0,
                        MVT::f32, 4/*#Ops*/, 0, 1, 2, 3,
                    // Src: (fma:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2, FPR32:{ *:[f32] }:$rs3) - Complexity = 3
                    // Dst: (FMADD_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2, ?:{ *:[f32] }:$rs3, 7:{ *:[i32] })
/* 24502*/        0, /*End of Scope*/
/* 24503*/      /*SwitchType*/ 50, MVT::f64,// ->24555
/* 24505*/        OPC_Scope, 15, /*->24522*/ // 3 children in Scope
/* 24507*/          OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 24509*/          OPC_EmitInteger, MVT::i32, 7,
/* 24512*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMADD_D), 0,
                        MVT::f64, 4/*#Ops*/, 0, 1, 2, 3,
                    // Src: (fma:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs3) - Complexity = 3
                    // Dst: (FMADD_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2, ?:{ *:[f64] }:$rs3, 7:{ *:[i32] })
/* 24522*/        /*Scope*/ 15, /*->24538*/
/* 24523*/          OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24525*/          OPC_EmitInteger, MVT::i64, 7,
/* 24528*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMADD_D), 0,
                        MVT::f64, 4/*#Ops*/, 0, 1, 2, 3,
                    // Src: (fma:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs3) - Complexity = 3
                    // Dst: (FMADD_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2, ?:{ *:[f64] }:$rs3, 7:{ *:[i64] })
/* 24538*/        /*Scope*/ 15, /*->24554*/
/* 24539*/          OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 24541*/          OPC_EmitInteger, MVT::i32, 7,
/* 24544*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMADD_D), 0,
                        MVT::f64, 4/*#Ops*/, 0, 1, 2, 3,
                    // Src: (fma:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2, FPR64:{ *:[f64] }:$rs3) - Complexity = 3
                    // Dst: (FMADD_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2, ?:{ *:[f64] }:$rs3, 7:{ *:[i32] })
/* 24554*/        0, /*End of Scope*/
/* 24555*/      0, // EndSwitchType
/* 24556*/    0, /*End of Scope*/
/* 24557*/  /*SwitchOpcode*/ 40|128,1/*168*/, TARGET_VAL(ISD::FCOPYSIGN),// ->24729
/* 24561*/    OPC_RecordChild0, // #0 = $rs1
/* 24562*/    OPC_Scope, 37, /*->24601*/ // 2 children in Scope
/* 24564*/      OPC_MoveChild1,
/* 24565*/      OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
/* 24568*/      OPC_RecordChild0, // #1 = $rs2
/* 24569*/      OPC_SwitchType /*2 cases */, 13, MVT::f32,// ->24585
/* 24572*/        OPC_MoveParent,
/* 24573*/        OPC_CheckType, MVT::f32,
/* 24575*/        OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 24577*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSGNJN_S), 0,
                      MVT::f32, 2/*#Ops*/, 0, 1,
                  // Src: (fcopysign:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, (fneg:{ *:[f32] } FPR32:{ *:[f32] }:$rs2)) - Complexity = 6
                  // Dst: (FSGNJN_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 24585*/      /*SwitchType*/ 13, MVT::f64,// ->24600
/* 24587*/        OPC_MoveParent,
/* 24588*/        OPC_CheckType, MVT::f64,
/* 24590*/        OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 24592*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSGNJN_D), 0,
                      MVT::f64, 2/*#Ops*/, 0, 1,
                  // Src: (fcopysign:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, (fneg:{ *:[f64] } FPR64:{ *:[f64] }:$rs2)) - Complexity = 6
                  // Dst: (FSGNJN_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 24600*/      0, // EndSwitchType
/* 24601*/    /*Scope*/ 126, /*->24728*/
/* 24602*/      OPC_RecordChild1, // #1 = $rs2
/* 24603*/      OPC_Scope, 35, /*->24640*/ // 2 children in Scope
/* 24605*/        OPC_CheckChild1Type, MVT::f32,
/* 24607*/        OPC_SwitchType /*2 cases */, 10, MVT::f32,// ->24620
/* 24610*/          OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 24612*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSGNJ_S), 0,
                        MVT::f32, 2/*#Ops*/, 0, 1,
                    // Src: (fcopysign:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                    // Dst: (FSGNJ_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 24620*/        /*SwitchType*/ 17, MVT::f64,// ->24639
/* 24622*/          OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 24624*/          OPC_EmitNode1, TARGET_VAL(RISCV::FCVT_D_S), 0,
                        MVT::f64, 1/*#Ops*/, 1,  // Results = #2
/* 24631*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSGNJ_D), 0,
                        MVT::f64, 2/*#Ops*/, 0, 2,
                    // Src: (fcopysign:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                    // Dst: (FSGNJ_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, (FCVT_D_S:{ *:[f64] } ?:{ *:[f32] }:$rs2))
/* 24639*/        0, // EndSwitchType
/* 24640*/      /*Scope*/ 86, /*->24727*/
/* 24641*/        OPC_CheckChild1Type, MVT::f64,
/* 24643*/        OPC_SwitchType /*2 cases */, 10, MVT::f64,// ->24656
/* 24646*/          OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 24648*/          OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSGNJ_D), 0,
                        MVT::f64, 2/*#Ops*/, 0, 1,
                    // Src: (fcopysign:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                    // Dst: (FSGNJ_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 24656*/        /*SwitchType*/ 68, MVT::f32,// ->24726
/* 24658*/          OPC_Scope, 21, /*->24681*/ // 3 children in Scope
/* 24660*/            OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 24662*/            OPC_EmitInteger, MVT::i32, 7,
/* 24665*/            OPC_EmitNode1, TARGET_VAL(RISCV::FCVT_S_D), 0,
                          MVT::f32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 24673*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSGNJ_S), 0,
                          MVT::f32, 2/*#Ops*/, 0, 3,
                      // Src: (fcopysign:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                      // Dst: (FSGNJ_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, (FCVT_S_D:{ *:[f32] } ?:{ *:[f64] }:$rs2, 7:{ *:[i32] }))
/* 24681*/          /*Scope*/ 21, /*->24703*/
/* 24682*/            OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24684*/            OPC_EmitInteger, MVT::i64, 7,
/* 24687*/            OPC_EmitNode1, TARGET_VAL(RISCV::FCVT_S_D), 0,
                          MVT::f32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 24695*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSGNJ_S), 0,
                          MVT::f32, 2/*#Ops*/, 0, 3,
                      // Src: (fcopysign:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                      // Dst: (FSGNJ_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, (FCVT_S_D:{ *:[f32] } ?:{ *:[f64] }:$rs2, 7:{ *:[i64] }))
/* 24703*/          /*Scope*/ 21, /*->24725*/
/* 24704*/            OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 24706*/            OPC_EmitInteger, MVT::i32, 7,
/* 24709*/            OPC_EmitNode1, TARGET_VAL(RISCV::FCVT_S_D), 0,
                          MVT::f32, 2/*#Ops*/, 1, 2,  // Results = #3
/* 24717*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSGNJ_S), 0,
                          MVT::f32, 2/*#Ops*/, 0, 3,
                      // Src: (fcopysign:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                      // Dst: (FSGNJ_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, (FCVT_S_D:{ *:[f32] } ?:{ *:[f64] }:$rs2, 7:{ *:[i32] }))
/* 24725*/          0, /*End of Scope*/
/* 24726*/        0, // EndSwitchType
/* 24727*/      0, /*End of Scope*/
/* 24728*/    0, /*End of Scope*/
/* 24729*/  /*SwitchOpcode*/ 1|128,2/*257*/, TARGET_VAL(ISD::SINT_TO_FP),// ->24990
/* 24733*/    OPC_Scope, 38, /*->24773*/ // 2 children in Scope
/* 24735*/      OPC_MoveChild0,
/* 24736*/      OPC_CheckOpcode, TARGET_VAL(ISD::SIGN_EXTEND_INREG),
/* 24739*/      OPC_RecordChild0, // #0 = $rs1
/* 24740*/      OPC_MoveChild1,
/* 24741*/      OPC_CheckValueType, MVT::i32,
/* 24743*/      OPC_MoveParent,
/* 24744*/      OPC_MoveParent,
/* 24745*/      OPC_SwitchType /*2 cases */, 13, MVT::f32,// ->24761
/* 24748*/        OPC_CheckPatternPredicate, 24, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24750*/        OPC_EmitInteger, MVT::i64, 7,
/* 24753*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_W), 0,
                      MVT::f32, 2/*#Ops*/, 0, 1,
                  // Src: (sint_to_fp:{ *:[f32] } (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$rs1, i32:{ *:[Other] })) - Complexity = 6
                  // Dst: (FCVT_S_W:{ *:[f32] } ?:{ *:[i64] }:$rs1, 7:{ *:[i64] })
/* 24761*/      /*SwitchType*/ 9, MVT::f64,// ->24772
/* 24763*/        OPC_CheckPatternPredicate, 23, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24765*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_W), 0,
                      MVT::f64, 1/*#Ops*/, 0,
                  // Src: (sint_to_fp:{ *:[f64] } (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$rs1, i32:{ *:[Other] })) - Complexity = 6
                  // Dst: (FCVT_D_W:{ *:[f64] } ?:{ *:[i64] }:$rs1)
/* 24772*/      0, // EndSwitchType
/* 24773*/    /*Scope*/ 86|128,1/*214*/, /*->24989*/
/* 24775*/      OPC_RecordChild0, // #0 = $rs1
/* 24776*/      OPC_Scope, 16|128,1/*144*/, /*->24923*/ // 2 children in Scope
/* 24779*/        OPC_CheckChild0Type, MVT::i32,
/* 24781*/        OPC_SwitchType /*2 cases */, 86, MVT::f32,// ->24870
/* 24784*/          OPC_Scope, 13, /*->24799*/ // 6 children in Scope
/* 24786*/            OPC_CheckPatternPredicate, 30, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 24788*/            OPC_EmitInteger, MVT::i32, 7,
/* 24791*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_W), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (sint_to_fp:{ *:[f32] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_W:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 24799*/          /*Scope*/ 13, /*->24813*/
/* 24800*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit())
/* 24802*/            OPC_EmitInteger, MVT::i32, 7,
/* 24805*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_W), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (sint_to_fp:{ *:[f32] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_W:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 24813*/          /*Scope*/ 13, /*->24827*/
/* 24814*/            OPC_CheckPatternPredicate, 30, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 24816*/            OPC_EmitInteger, MVT::i32, 7,
/* 24819*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_W), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (sint_to_fp:{ *:[f32] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_W:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 24827*/          /*Scope*/ 13, /*->24841*/
/* 24828*/            OPC_CheckPatternPredicate, 31, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit())
/* 24830*/            OPC_EmitInteger, MVT::i32, 7,
/* 24833*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_W), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (sint_to_fp:{ *:[f32] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_W:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 24841*/          /*Scope*/ 13, /*->24855*/
/* 24842*/            OPC_CheckPatternPredicate, 32, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 24844*/            OPC_EmitInteger, MVT::i32, 7,
/* 24847*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_L), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (sint_to_fp:{ *:[f32] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_L:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 24855*/          /*Scope*/ 13, /*->24869*/
/* 24856*/            OPC_CheckPatternPredicate, 33, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit())
/* 24858*/            OPC_EmitInteger, MVT::i32, 7,
/* 24861*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_L), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (sint_to_fp:{ *:[f32] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_L:{ *:[f32] } ?:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 24869*/          0, /*End of Scope*/
/* 24870*/        /*SwitchType*/ 50, MVT::f64,// ->24922
/* 24872*/          OPC_Scope, 9, /*->24883*/ // 4 children in Scope
/* 24874*/            OPC_CheckPatternPredicate, 35, // (Subtarget->hasStdExtD()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 24876*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_W), 0,
                          MVT::f64, 1/*#Ops*/, 0,
                      // Src: (sint_to_fp:{ *:[f64] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_D_W:{ *:[f64] } GPR:{ *:[i32] }:$rs1)
/* 24883*/          /*Scope*/ 9, /*->24893*/
/* 24884*/            OPC_CheckPatternPredicate, 36, // (Subtarget->hasStdExtD()) && (!Subtarget->is64Bit())
/* 24886*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_W), 0,
                          MVT::f64, 1/*#Ops*/, 0,
                      // Src: (sint_to_fp:{ *:[f64] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_D_W:{ *:[f64] } GPR:{ *:[i32] }:$rs1)
/* 24893*/          /*Scope*/ 13, /*->24907*/
/* 24894*/            OPC_CheckPatternPredicate, 28, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 24896*/            OPC_EmitInteger, MVT::i32, 7,
/* 24899*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_L), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1,
                      // Src: (sint_to_fp:{ *:[f64] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_D_L:{ *:[f64] } GPR:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 24907*/          /*Scope*/ 13, /*->24921*/
/* 24908*/            OPC_CheckPatternPredicate, 29, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit())
/* 24910*/            OPC_EmitInteger, MVT::i32, 7,
/* 24913*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_L), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1,
                      // Src: (sint_to_fp:{ *:[f64] } GPR:{ *:[i32] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_D_L:{ *:[f64] } GPR:{ *:[i32] }:$rs1, 7:{ *:[i32] })
/* 24921*/          0, /*End of Scope*/
/* 24922*/        0, // EndSwitchType
/* 24923*/      /*Scope*/ 64, /*->24988*/
/* 24924*/        OPC_CheckChild0Type, MVT::i64,
/* 24926*/        OPC_SwitchType /*2 cases */, 30, MVT::f32,// ->24959
/* 24929*/          OPC_Scope, 13, /*->24944*/ // 2 children in Scope
/* 24931*/            OPC_CheckPatternPredicate, 34, // (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24933*/            OPC_EmitInteger, MVT::i64, 7,
/* 24936*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_W), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (sint_to_fp:{ *:[f32] } GPR:{ *:[i64] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_W:{ *:[f32] } ?:{ *:[i64] }:$rs1, 7:{ *:[i64] })
/* 24944*/          /*Scope*/ 13, /*->24958*/
/* 24945*/            OPC_CheckPatternPredicate, 24, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24947*/            OPC_EmitInteger, MVT::i64, 7,
/* 24950*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_L), 0,
                          MVT::f32, 2/*#Ops*/, 0, 1,
                      // Src: (sint_to_fp:{ *:[f32] } GPR:{ *:[i64] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_S_L:{ *:[f32] } ?:{ *:[i64] }:$rs1, 7:{ *:[i64] })
/* 24958*/          0, /*End of Scope*/
/* 24959*/        /*SwitchType*/ 26, MVT::f64,// ->24987
/* 24961*/          OPC_Scope, 9, /*->24972*/ // 2 children in Scope
/* 24963*/            OPC_CheckPatternPredicate, 37, // (Subtarget->hasStdExtD()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24965*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_W), 0,
                          MVT::f64, 1/*#Ops*/, 0,
                      // Src: (sint_to_fp:{ *:[f64] } GPR:{ *:[i64] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_D_W:{ *:[f64] } GPR:{ *:[i64] }:$rs1)
/* 24972*/          /*Scope*/ 13, /*->24986*/
/* 24973*/            OPC_CheckPatternPredicate, 23, // (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 24975*/            OPC_EmitInteger, MVT::i64, 7,
/* 24978*/            OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_L), 0,
                          MVT::f64, 2/*#Ops*/, 0, 1,
                      // Src: (sint_to_fp:{ *:[f64] } GPR:{ *:[i64] }:$rs1) - Complexity = 3
                      // Dst: (FCVT_D_L:{ *:[f64] } GPR:{ *:[i64] }:$rs1, 7:{ *:[i64] })
/* 24986*/          0, /*End of Scope*/
/* 24987*/        0, // EndSwitchType
/* 24988*/      0, /*End of Scope*/
/* 24989*/    0, /*End of Scope*/
/* 24990*/  /*SwitchOpcode*/ 27, TARGET_VAL(ISD::FNEG),// ->25020
/* 24993*/    OPC_RecordChild0, // #0 = $rs1
/* 24994*/    OPC_SwitchType /*2 cases */, 10, MVT::f32,// ->25007
/* 24997*/      OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 24999*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSGNJN_S), 0,
                    MVT::f32, 2/*#Ops*/, 0, 0,
                // Src: (fneg:{ *:[f32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                // Dst: (FSGNJN_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs1)
/* 25007*/    /*SwitchType*/ 10, MVT::f64,// ->25019
/* 25009*/      OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 25011*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSGNJN_D), 0,
                    MVT::f64, 2/*#Ops*/, 0, 0,
                // Src: (fneg:{ *:[f64] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                // Dst: (FSGNJN_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs1)
/* 25019*/    0, // EndSwitchType
/* 25020*/  /*SwitchOpcode*/ 27, TARGET_VAL(ISD::FABS),// ->25050
/* 25023*/    OPC_RecordChild0, // #0 = $rs1
/* 25024*/    OPC_SwitchType /*2 cases */, 10, MVT::f32,// ->25037
/* 25027*/      OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 25029*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSGNJX_S), 0,
                    MVT::f32, 2/*#Ops*/, 0, 0,
                // Src: (fabs:{ *:[f32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                // Dst: (FSGNJX_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs1)
/* 25037*/    /*SwitchType*/ 10, MVT::f64,// ->25049
/* 25039*/      OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 25041*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSGNJX_D), 0,
                    MVT::f64, 2/*#Ops*/, 0, 0,
                // Src: (fabs:{ *:[f64] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                // Dst: (FSGNJX_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs1)
/* 25049*/    0, // EndSwitchType
/* 25050*/  /*SwitchOpcode*/ 28, TARGET_VAL(ISD::FMINNUM),// ->25081
/* 25053*/    OPC_RecordChild0, // #0 = $rs1
/* 25054*/    OPC_RecordChild1, // #1 = $rs2
/* 25055*/    OPC_SwitchType /*2 cases */, 10, MVT::f32,// ->25068
/* 25058*/      OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 25060*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMIN_S), 0,
                    MVT::f32, 2/*#Ops*/, 0, 1,
                // Src: (fminnum:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                // Dst: (FMIN_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 25068*/    /*SwitchType*/ 10, MVT::f64,// ->25080
/* 25070*/      OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 25072*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMIN_D), 0,
                    MVT::f64, 2/*#Ops*/, 0, 1,
                // Src: (fminnum:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                // Dst: (FMIN_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 25080*/    0, // EndSwitchType
/* 25081*/  /*SwitchOpcode*/ 28, TARGET_VAL(ISD::FMAXNUM),// ->25112
/* 25084*/    OPC_RecordChild0, // #0 = $rs1
/* 25085*/    OPC_RecordChild1, // #1 = $rs2
/* 25086*/    OPC_SwitchType /*2 cases */, 10, MVT::f32,// ->25099
/* 25089*/      OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 25091*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMAX_S), 0,
                    MVT::f32, 2/*#Ops*/, 0, 1,
                // Src: (fmaxnum:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                // Dst: (FMAX_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2)
/* 25099*/    /*SwitchType*/ 10, MVT::f64,// ->25111
/* 25101*/      OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 25103*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMAX_D), 0,
                    MVT::f64, 2/*#Ops*/, 0, 1,
                // Src: (fmaxnum:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                // Dst: (FMAX_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2)
/* 25111*/    0, // EndSwitchType
/* 25112*/  /*SwitchOpcode*/ 10, TARGET_VAL(ISD::FP_EXTEND),// ->25125
/* 25115*/    OPC_RecordChild0, // #0 = $rs1
/* 25116*/    OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 25118*/    OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_D_S), 0,
                  MVT::f64, 1/*#Ops*/, 0,
              // Src: (fpextend:{ *:[f64] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
              // Dst: (FCVT_D_S:{ *:[f64] } FPR32:{ *:[f32] }:$rs1)
/* 25125*/  /*SwitchOpcode*/ 102, TARGET_VAL(ISD::FADD),// ->25230
/* 25128*/    OPC_RecordChild0, // #0 = $rs1
/* 25129*/    OPC_RecordChild1, // #1 = $rs2
/* 25130*/    OPC_SwitchType /*2 cases */, 47, MVT::f32,// ->25180
/* 25133*/      OPC_Scope, 14, /*->25149*/ // 3 children in Scope
/* 25135*/        OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 25137*/        OPC_EmitInteger, MVT::i32, 7,
/* 25140*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FADD_S), 0,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fadd:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                  // Dst: (FADD_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2, 7:{ *:[i32] })
/* 25149*/      /*Scope*/ 14, /*->25164*/
/* 25150*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 25152*/        OPC_EmitInteger, MVT::i64, 7,
/* 25155*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FADD_S), 0,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fadd:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                  // Dst: (FADD_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2, 7:{ *:[i64] })
/* 25164*/      /*Scope*/ 14, /*->25179*/
/* 25165*/        OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 25167*/        OPC_EmitInteger, MVT::i32, 7,
/* 25170*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FADD_S), 0,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fadd:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                  // Dst: (FADD_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2, 7:{ *:[i32] })
/* 25179*/      0, /*End of Scope*/
/* 25180*/    /*SwitchType*/ 47, MVT::f64,// ->25229
/* 25182*/      OPC_Scope, 14, /*->25198*/ // 3 children in Scope
/* 25184*/        OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 25186*/        OPC_EmitInteger, MVT::i32, 7,
/* 25189*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FADD_D), 0,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fadd:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                  // Dst: (FADD_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2, 7:{ *:[i32] })
/* 25198*/      /*Scope*/ 14, /*->25213*/
/* 25199*/        OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 25201*/        OPC_EmitInteger, MVT::i64, 7,
/* 25204*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FADD_D), 0,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fadd:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                  // Dst: (FADD_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2, 7:{ *:[i64] })
/* 25213*/      /*Scope*/ 14, /*->25228*/
/* 25214*/        OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 25216*/        OPC_EmitInteger, MVT::i32, 7,
/* 25219*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FADD_D), 0,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fadd:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                  // Dst: (FADD_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2, 7:{ *:[i32] })
/* 25228*/      0, /*End of Scope*/
/* 25229*/    0, // EndSwitchType
/* 25230*/  /*SwitchOpcode*/ 102, TARGET_VAL(ISD::FSUB),// ->25335
/* 25233*/    OPC_RecordChild0, // #0 = $rs1
/* 25234*/    OPC_RecordChild1, // #1 = $rs2
/* 25235*/    OPC_SwitchType /*2 cases */, 47, MVT::f32,// ->25285
/* 25238*/      OPC_Scope, 14, /*->25254*/ // 3 children in Scope
/* 25240*/        OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 25242*/        OPC_EmitInteger, MVT::i32, 7,
/* 25245*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSUB_S), 0,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fsub:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                  // Dst: (FSUB_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2, 7:{ *:[i32] })
/* 25254*/      /*Scope*/ 14, /*->25269*/
/* 25255*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 25257*/        OPC_EmitInteger, MVT::i64, 7,
/* 25260*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSUB_S), 0,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fsub:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                  // Dst: (FSUB_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2, 7:{ *:[i64] })
/* 25269*/      /*Scope*/ 14, /*->25284*/
/* 25270*/        OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 25272*/        OPC_EmitInteger, MVT::i32, 7,
/* 25275*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSUB_S), 0,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fsub:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                  // Dst: (FSUB_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2, 7:{ *:[i32] })
/* 25284*/      0, /*End of Scope*/
/* 25285*/    /*SwitchType*/ 47, MVT::f64,// ->25334
/* 25287*/      OPC_Scope, 14, /*->25303*/ // 3 children in Scope
/* 25289*/        OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 25291*/        OPC_EmitInteger, MVT::i32, 7,
/* 25294*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSUB_D), 0,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fsub:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                  // Dst: (FSUB_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2, 7:{ *:[i32] })
/* 25303*/      /*Scope*/ 14, /*->25318*/
/* 25304*/        OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 25306*/        OPC_EmitInteger, MVT::i64, 7,
/* 25309*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSUB_D), 0,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fsub:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                  // Dst: (FSUB_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2, 7:{ *:[i64] })
/* 25318*/      /*Scope*/ 14, /*->25333*/
/* 25319*/        OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 25321*/        OPC_EmitInteger, MVT::i32, 7,
/* 25324*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSUB_D), 0,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fsub:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                  // Dst: (FSUB_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2, 7:{ *:[i32] })
/* 25333*/      0, /*End of Scope*/
/* 25334*/    0, // EndSwitchType
/* 25335*/  /*SwitchOpcode*/ 102, TARGET_VAL(ISD::FMUL),// ->25440
/* 25338*/    OPC_RecordChild0, // #0 = $rs1
/* 25339*/    OPC_RecordChild1, // #1 = $rs2
/* 25340*/    OPC_SwitchType /*2 cases */, 47, MVT::f32,// ->25390
/* 25343*/      OPC_Scope, 14, /*->25359*/ // 3 children in Scope
/* 25345*/        OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 25347*/        OPC_EmitInteger, MVT::i32, 7,
/* 25350*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMUL_S), 0,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fmul:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                  // Dst: (FMUL_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2, 7:{ *:[i32] })
/* 25359*/      /*Scope*/ 14, /*->25374*/
/* 25360*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 25362*/        OPC_EmitInteger, MVT::i64, 7,
/* 25365*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMUL_S), 0,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fmul:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                  // Dst: (FMUL_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2, 7:{ *:[i64] })
/* 25374*/      /*Scope*/ 14, /*->25389*/
/* 25375*/        OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 25377*/        OPC_EmitInteger, MVT::i32, 7,
/* 25380*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMUL_S), 0,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fmul:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                  // Dst: (FMUL_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2, 7:{ *:[i32] })
/* 25389*/      0, /*End of Scope*/
/* 25390*/    /*SwitchType*/ 47, MVT::f64,// ->25439
/* 25392*/      OPC_Scope, 14, /*->25408*/ // 3 children in Scope
/* 25394*/        OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 25396*/        OPC_EmitInteger, MVT::i32, 7,
/* 25399*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMUL_D), 0,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fmul:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                  // Dst: (FMUL_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2, 7:{ *:[i32] })
/* 25408*/      /*Scope*/ 14, /*->25423*/
/* 25409*/        OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 25411*/        OPC_EmitInteger, MVT::i64, 7,
/* 25414*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMUL_D), 0,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fmul:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                  // Dst: (FMUL_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2, 7:{ *:[i64] })
/* 25423*/      /*Scope*/ 14, /*->25438*/
/* 25424*/        OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 25426*/        OPC_EmitInteger, MVT::i32, 7,
/* 25429*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMUL_D), 0,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fmul:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                  // Dst: (FMUL_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2, 7:{ *:[i32] })
/* 25438*/      0, /*End of Scope*/
/* 25439*/    0, // EndSwitchType
/* 25440*/  /*SwitchOpcode*/ 102, TARGET_VAL(ISD::FDIV),// ->25545
/* 25443*/    OPC_RecordChild0, // #0 = $rs1
/* 25444*/    OPC_RecordChild1, // #1 = $rs2
/* 25445*/    OPC_SwitchType /*2 cases */, 47, MVT::f32,// ->25495
/* 25448*/      OPC_Scope, 14, /*->25464*/ // 3 children in Scope
/* 25450*/        OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 25452*/        OPC_EmitInteger, MVT::i32, 7,
/* 25455*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FDIV_S), 0,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fdiv:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                  // Dst: (FDIV_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2, 7:{ *:[i32] })
/* 25464*/      /*Scope*/ 14, /*->25479*/
/* 25465*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 25467*/        OPC_EmitInteger, MVT::i64, 7,
/* 25470*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FDIV_S), 0,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fdiv:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                  // Dst: (FDIV_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2, 7:{ *:[i64] })
/* 25479*/      /*Scope*/ 14, /*->25494*/
/* 25480*/        OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 25482*/        OPC_EmitInteger, MVT::i32, 7,
/* 25485*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FDIV_S), 0,
                      MVT::f32, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fdiv:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, FPR32:{ *:[f32] }:$rs2) - Complexity = 3
                  // Dst: (FDIV_S:{ *:[f32] } ?:{ *:[f32] }:$rs1, ?:{ *:[f32] }:$rs2, 7:{ *:[i32] })
/* 25494*/      0, /*End of Scope*/
/* 25495*/    /*SwitchType*/ 47, MVT::f64,// ->25544
/* 25497*/      OPC_Scope, 14, /*->25513*/ // 3 children in Scope
/* 25499*/        OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 25501*/        OPC_EmitInteger, MVT::i32, 7,
/* 25504*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FDIV_D), 0,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fdiv:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                  // Dst: (FDIV_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2, 7:{ *:[i32] })
/* 25513*/      /*Scope*/ 14, /*->25528*/
/* 25514*/        OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 25516*/        OPC_EmitInteger, MVT::i64, 7,
/* 25519*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FDIV_D), 0,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fdiv:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                  // Dst: (FDIV_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2, 7:{ *:[i64] })
/* 25528*/      /*Scope*/ 14, /*->25543*/
/* 25529*/        OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 25531*/        OPC_EmitInteger, MVT::i32, 7,
/* 25534*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FDIV_D), 0,
                      MVT::f64, 3/*#Ops*/, 0, 1, 2,
                  // Src: (fdiv:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, FPR64:{ *:[f64] }:$rs2) - Complexity = 3
                  // Dst: (FDIV_D:{ *:[f64] } ?:{ *:[f64] }:$rs1, ?:{ *:[f64] }:$rs2, 7:{ *:[i32] })
/* 25543*/      0, /*End of Scope*/
/* 25544*/    0, // EndSwitchType
/* 25545*/  /*SwitchOpcode*/ 95, TARGET_VAL(ISD::FSQRT),// ->25643
/* 25548*/    OPC_RecordChild0, // #0 = $rs1
/* 25549*/    OPC_SwitchType /*2 cases */, 44, MVT::f32,// ->25596
/* 25552*/      OPC_Scope, 13, /*->25567*/ // 3 children in Scope
/* 25554*/        OPC_CheckPatternPredicate, 11, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 25556*/        OPC_EmitInteger, MVT::i32, 7,
/* 25559*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSQRT_S), 0,
                      MVT::f32, 2/*#Ops*/, 0, 1,
                  // Src: (fsqrt:{ *:[f32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                  // Dst: (FSQRT_S:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, 7:{ *:[i32] })
/* 25567*/      /*Scope*/ 13, /*->25581*/
/* 25568*/        OPC_CheckPatternPredicate, 15, // (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 25570*/        OPC_EmitInteger, MVT::i64, 7,
/* 25573*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSQRT_S), 0,
                      MVT::f32, 2/*#Ops*/, 0, 1,
                  // Src: (fsqrt:{ *:[f32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                  // Dst: (FSQRT_S:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, 7:{ *:[i64] })
/* 25581*/      /*Scope*/ 13, /*->25595*/
/* 25582*/        OPC_CheckPatternPredicate, 12, // (Subtarget->hasStdExtF())
/* 25584*/        OPC_EmitInteger, MVT::i32, 7,
/* 25587*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSQRT_S), 0,
                      MVT::f32, 2/*#Ops*/, 0, 1,
                  // Src: (fsqrt:{ *:[f32] } FPR32:{ *:[f32] }:$rs1) - Complexity = 3
                  // Dst: (FSQRT_S:{ *:[f32] } FPR32:{ *:[f32] }:$rs1, 7:{ *:[i32] })
/* 25595*/      0, /*End of Scope*/
/* 25596*/    /*SwitchType*/ 44, MVT::f64,// ->25642
/* 25598*/      OPC_Scope, 13, /*->25613*/ // 3 children in Scope
/* 25600*/        OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 25602*/        OPC_EmitInteger, MVT::i32, 7,
/* 25605*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSQRT_D), 0,
                      MVT::f64, 2/*#Ops*/, 0, 1,
                  // Src: (fsqrt:{ *:[f64] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                  // Dst: (FSQRT_D:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, 7:{ *:[i32] })
/* 25613*/      /*Scope*/ 13, /*->25627*/
/* 25614*/        OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 25616*/        OPC_EmitInteger, MVT::i64, 7,
/* 25619*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSQRT_D), 0,
                      MVT::f64, 2/*#Ops*/, 0, 1,
                  // Src: (fsqrt:{ *:[f64] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                  // Dst: (FSQRT_D:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, 7:{ *:[i64] })
/* 25627*/      /*Scope*/ 13, /*->25641*/
/* 25628*/        OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 25630*/        OPC_EmitInteger, MVT::i32, 7,
/* 25633*/        OPC_MorphNodeTo1, TARGET_VAL(RISCV::FSQRT_D), 0,
                      MVT::f64, 2/*#Ops*/, 0, 1,
                  // Src: (fsqrt:{ *:[f64] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                  // Dst: (FSQRT_D:{ *:[f64] } FPR64:{ *:[f64] }:$rs1, 7:{ *:[i32] })
/* 25641*/      0, /*End of Scope*/
/* 25642*/    0, // EndSwitchType
/* 25643*/  /*SwitchOpcode*/ 10, TARGET_VAL(RISCVISD::FMV_W_X_RV64),// ->25656
/* 25646*/    OPC_RecordChild0, // #0 = $src
/* 25647*/    OPC_CheckPatternPredicate, 24, // (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 25649*/    OPC_MorphNodeTo1, TARGET_VAL(RISCV::FMV_W_X), 0,
                  MVT::f32, 1/*#Ops*/, 0,
              // Src: (riscv_fmv_w_x_rv64:{ *:[f32] } GPR:{ *:[i64] }:$src) - Complexity = 3
              // Dst: (FMV_W_X:{ *:[f32] } GPR:{ *:[i64] }:$src)
/* 25656*/  /*SwitchOpcode*/ 45, TARGET_VAL(ISD::FP_ROUND),// ->25704
/* 25659*/    OPC_RecordChild0, // #0 = $rs1
/* 25660*/    OPC_Scope, 13, /*->25675*/ // 3 children in Scope
/* 25662*/      OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 25664*/      OPC_EmitInteger, MVT::i32, 7,
/* 25667*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_D), 0,
                    MVT::f32, 2/*#Ops*/, 0, 1,
                // Src: (fpround:{ *:[f32] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                // Dst: (FCVT_S_D:{ *:[f32] } FPR64:{ *:[f64] }:$rs1, 7:{ *:[i32] })
/* 25675*/    /*Scope*/ 13, /*->25689*/
/* 25676*/      OPC_CheckPatternPredicate, 16, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"))
/* 25678*/      OPC_EmitInteger, MVT::i64, 7,
/* 25681*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_D), 0,
                    MVT::f32, 2/*#Ops*/, 0, 1,
                // Src: (fpround:{ *:[f32] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                // Dst: (FCVT_S_D:{ *:[f32] } FPR64:{ *:[f64] }:$rs1, 7:{ *:[i64] })
/* 25689*/    /*Scope*/ 13, /*->25703*/
/* 25690*/      OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 25692*/      OPC_EmitInteger, MVT::i32, 7,
/* 25695*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::FCVT_S_D), 0,
                    MVT::f32, 2/*#Ops*/, 0, 1,
                // Src: (fpround:{ *:[f32] } FPR64:{ *:[f64] }:$rs1) - Complexity = 3
                // Dst: (FCVT_S_D:{ *:[f32] } FPR64:{ *:[f64] }:$rs1, 7:{ *:[i32] })
/* 25703*/    0, /*End of Scope*/
/* 25704*/  /*SwitchOpcode*/ 26, TARGET_VAL(RISCVISD::BuildPairF64),// ->25733
/* 25707*/    OPC_RecordChild0, // #0 = $src1
/* 25708*/    OPC_RecordChild1, // #1 = $src2
/* 25709*/    OPC_Scope, 10, /*->25721*/ // 2 children in Scope
/* 25711*/      OPC_CheckPatternPredicate, 13, // (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"))
/* 25713*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::BuildPairF64Pseudo), 0,
                    MVT::f64, 2/*#Ops*/, 0, 1,
                // Src: (RISCVBuildPairF64:{ *:[f64] } GPR:{ *:[i32] }:$src1, GPR:{ *:[i32] }:$src2) - Complexity = 3
                // Dst: (BuildPairF64Pseudo:{ *:[f64] } GPR:{ *:[i32] }:$src1, GPR:{ *:[i32] }:$src2)
/* 25721*/    /*Scope*/ 10, /*->25732*/
/* 25722*/      OPC_CheckPatternPredicate, 14, // (Subtarget->hasStdExtD())
/* 25724*/      OPC_MorphNodeTo1, TARGET_VAL(RISCV::BuildPairF64Pseudo), 0,
                    MVT::f64, 2/*#Ops*/, 0, 1,
                // Src: (RISCVBuildPairF64:{ *:[f64] } GPR:{ *:[i32] }:$src1, GPR:{ *:[i32] }:$src2) - Complexity = 3
                // Dst: (BuildPairF64Pseudo:{ *:[f64] } GPR:{ *:[i32] }:$src1, GPR:{ *:[i32] }:$src2)
/* 25732*/    0, /*End of Scope*/
/* 25733*/  0, // EndSwitchOpcode
    0
  }; // Total Array size is 25735 bytes

  // Opcode Histogram:
  // #OPC_Scope                                = 627
  // #OPC_RecordNode                           = 33
  // #OPC_RecordChild                          = 364
  // #OPC_RecordMemRef                         = 16
  // #OPC_CaptureGlueInput                     = 8
  // #OPC_MoveChild                            = 160
  // #OPC_MoveParent                           = 260
  // #OPC_CheckSame                            = 0
  // #OPC_CheckChildSame                       = 0
  // #OPC_CheckPatternPredicate                = 1223
  // #OPC_CheckPredicate                       = 721
  // #OPC_CheckOpcode                          = 128
  // #OPC_SwitchOpcode                         = 18
  // #OPC_CheckType                            = 77
  // #OPC_SwitchType                           = 146
  // #OPC_CheckChildType                       = 123
  // #OPC_CheckInteger                         = 0
  // #OPC_CheckChildInteger                    = 24
  // #OPC_CheckCondCode                        = 0
  // #OPC_CheckChild2CondCode                  = 68
  // #OPC_CheckValueType                       = 22
  // #OPC_CheckComplexPat                      = 256
  // #OPC_CheckAndImm                          = 15
  // #OPC_CheckOrImm                           = 0
  // #OPC_CheckImmAllOnesV                     = 0
  // #OPC_CheckImmAllZerosV                    = 0
  // #OPC_CheckFoldableChainNode               = 0
  // #OPC_EmitInteger                          = 406
  // #OPC_EmitStringInteger                    = 0
  // #OPC_EmitRegister                         = 66
  // #OPC_EmitConvertToTarget                  = 343
  // #OPC_EmitMergeInputChains                 = 894
  // #OPC_EmitCopyToReg                        = 0
  // #OPC_EmitNode                             = 94
  // #OPC_EmitNodeXForm                        = 9
  // #OPC_CompleteMatch                        = 0
  // #OPC_MorphNodeTo                          = 1338

  #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->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"));
  case 1: return (Subtarget->hasStdExtM()) && (Subtarget->is64Bit());
  case 2: return (Subtarget->hasStdExtM()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
  case 3: return (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"));
  case 4: return (Subtarget->is64Bit());
  case 5: return (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
  case 6: return (MF->getSubtarget().checkFeatures("-64bit"));
  case 7: return (MF->getSubtarget().checkFeatures("+64bit"));
  case 8: return (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"));
  case 9: return (!Subtarget->is64Bit());
  case 10: return (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
  case 11: return (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("-64bit"));
  case 12: return (Subtarget->hasStdExtF());
  case 13: return (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("-64bit"));
  case 14: return (Subtarget->hasStdExtD());
  case 15: return (Subtarget->hasStdExtF()) && (MF->getSubtarget().checkFeatures("+64bit"));
  case 16: return (Subtarget->hasStdExtD()) && (MF->getSubtarget().checkFeatures("+64bit"));
  case 17: return (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("-64bit"));
  case 18: return (Subtarget->hasStdExtA());
  case 19: return (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"));
  case 20: return (Subtarget->hasStdExtA()) && (Subtarget->is64Bit());
  case 21: return (Subtarget->hasStdExtA()) && (MF->getSubtarget().checkFeatures("+64bit"));
  case 22: return (Subtarget->hasStdExtA()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
  case 23: return (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
  case 24: return (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
  case 25: return (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("-64bit"));
  case 26: return (Subtarget->hasStdExtM());
  case 27: return (Subtarget->hasStdExtM()) && (MF->getSubtarget().checkFeatures("+64bit"));
  case 28: return (Subtarget->hasStdExtD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"));
  case 29: return (Subtarget->hasStdExtD()) && (Subtarget->is64Bit());
  case 30: return (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"));
  case 31: return (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit());
  case 32: return (Subtarget->hasStdExtF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"));
  case 33: return (Subtarget->hasStdExtF()) && (Subtarget->is64Bit());
  case 34: return (Subtarget->hasStdExtF()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
  case 35: return (Subtarget->hasStdExtD()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("-64bit"));
  case 36: return (Subtarget->hasStdExtD()) && (!Subtarget->is64Bit());
  case 37: return (Subtarget->hasStdExtD()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
  }
}
#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_assertzexti32
    // Predicate_assertsexti32
    SDNode *N = Node;
    (void)N;

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

  }
  case 1: {
    // Predicate_simm12
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isInt<12>(Imm);
  }
  case 2: {
    // Predicate_IsOrAdd
    SDNode *N = Node;
    (void)N;

  return isOrEquivalentToAdd(N);

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

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

  }
  case 5: {
    // Predicate_sextloadi8
    // Predicate_extloadi8
    // Predicate_zextloadi8
    // Predicate_truncstorei8
    // Predicate_atomic_store_8
    // Predicate_atomic_load_8
    SDNode *N = Node;
    (void)N;
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i8) return false;
return true;

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

  }
  case 7: {
    // Predicate_sextloadi16
    // Predicate_extloadi16
    // Predicate_zextloadi16
    // Predicate_truncstorei16
    // Predicate_atomic_store_16
    // Predicate_atomic_load_16
    SDNode *N = Node;
    (void)N;
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i16) return false;
return true;

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

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

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

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

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

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

  }
  case 14: {
    // Predicate_atomic_store_64
    // Predicate_atomic_load_64
    // Predicate_atomic_swap_64
    // Predicate_atomic_load_add_64
    // Predicate_atomic_load_and_64
    // Predicate_atomic_load_or_64
    // Predicate_atomic_load_xor_64
    // Predicate_atomic_load_max_64
    // Predicate_atomic_load_min_64
    // Predicate_atomic_load_umax_64
    // Predicate_atomic_load_umin_64
    // Predicate_atomic_load_nand_64
    // Predicate_atomic_cmp_swap_64
    // Predicate_atomic_load_sub_64
    SDNode *N = Node;
    (void)N;
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i64) return false;
return true;

  }
  case 15: {
    // Predicate_uimm5
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isUInt<5>(Imm);
  }
  case 16: {
    // Predicate_immbottomxlenset
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();

  if (Subtarget->is64Bit())
    return countTrailingOnes<uint64_t>(Imm) >= 6;
  return countTrailingOnes<uint64_t>(Imm) >= 5;

  }
  case 17: {
    // Predicate_uimmlog2xlen
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();

  if (Subtarget->is64Bit())
    return isUInt<6>(Imm);
  return isUInt<5>(Imm);

  }
  case 18: {
    // Predicate_simm32hi20
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isShiftedInt<20, 12>(Imm);
  }
  case 19: {
    // Predicate_simm32
    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
return isInt<32>(Imm);
  }
  case 20: {
    // Predicate_atomic_swap_32_monotonic
    // Predicate_atomic_swap_64_monotonic
    // Predicate_atomic_load_add_32_monotonic
    // Predicate_atomic_load_add_64_monotonic
    // Predicate_atomic_load_and_32_monotonic
    // Predicate_atomic_load_and_64_monotonic
    // Predicate_atomic_load_or_32_monotonic
    // Predicate_atomic_load_or_64_monotonic
    // Predicate_atomic_load_xor_32_monotonic
    // Predicate_atomic_load_xor_64_monotonic
    // Predicate_atomic_load_max_32_monotonic
    // Predicate_atomic_load_max_64_monotonic
    // Predicate_atomic_load_min_32_monotonic
    // Predicate_atomic_load_min_64_monotonic
    // Predicate_atomic_load_umax_32_monotonic
    // Predicate_atomic_load_umax_64_monotonic
    // Predicate_atomic_load_umin_32_monotonic
    // Predicate_atomic_load_umin_64_monotonic
    // Predicate_atomic_load_nand_32_monotonic
    // Predicate_atomic_load_nand_64_monotonic
    // Predicate_atomic_cmp_swap_32_monotonic
    // Predicate_atomic_cmp_swap_64_monotonic
    // Predicate_atomic_load_sub_32_monotonic
    // Predicate_atomic_load_sub_64_monotonic
    SDNode *N = Node;
    (void)N;
if (cast<AtomicSDNode>(N)->getOrdering() != AtomicOrdering::Monotonic) return false;
return true;

  }
  case 21: {
    // Predicate_atomic_swap_32_acquire
    // Predicate_atomic_swap_64_acquire
    // Predicate_atomic_load_add_32_acquire
    // Predicate_atomic_load_add_64_acquire
    // Predicate_atomic_load_and_32_acquire
    // Predicate_atomic_load_and_64_acquire
    // Predicate_atomic_load_or_32_acquire
    // Predicate_atomic_load_or_64_acquire
    // Predicate_atomic_load_xor_32_acquire
    // Predicate_atomic_load_xor_64_acquire
    // Predicate_atomic_load_max_32_acquire
    // Predicate_atomic_load_max_64_acquire
    // Predicate_atomic_load_min_32_acquire
    // Predicate_atomic_load_min_64_acquire
    // Predicate_atomic_load_umax_32_acquire
    // Predicate_atomic_load_umax_64_acquire
    // Predicate_atomic_load_umin_32_acquire
    // Predicate_atomic_load_umin_64_acquire
    // Predicate_atomic_load_nand_32_acquire
    // Predicate_atomic_load_nand_64_acquire
    // Predicate_atomic_cmp_swap_32_acquire
    // Predicate_atomic_cmp_swap_64_acquire
    // Predicate_atomic_load_sub_32_acquire
    // Predicate_atomic_load_sub_64_acquire
    SDNode *N = Node;
    (void)N;
if (cast<AtomicSDNode>(N)->getOrdering() != AtomicOrdering::Acquire) return false;
return true;

  }
  case 22: {
    // Predicate_atomic_swap_32_release
    // Predicate_atomic_swap_64_release
    // Predicate_atomic_load_add_32_release
    // Predicate_atomic_load_add_64_release
    // Predicate_atomic_load_and_32_release
    // Predicate_atomic_load_and_64_release
    // Predicate_atomic_load_or_32_release
    // Predicate_atomic_load_or_64_release
    // Predicate_atomic_load_xor_32_release
    // Predicate_atomic_load_xor_64_release
    // Predicate_atomic_load_max_32_release
    // Predicate_atomic_load_max_64_release
    // Predicate_atomic_load_min_32_release
    // Predicate_atomic_load_min_64_release
    // Predicate_atomic_load_umax_32_release
    // Predicate_atomic_load_umax_64_release
    // Predicate_atomic_load_umin_32_release
    // Predicate_atomic_load_umin_64_release
    // Predicate_atomic_load_nand_32_release
    // Predicate_atomic_load_nand_64_release
    // Predicate_atomic_cmp_swap_32_release
    // Predicate_atomic_cmp_swap_64_release
    // Predicate_atomic_load_sub_32_release
    // Predicate_atomic_load_sub_64_release
    SDNode *N = Node;
    (void)N;
if (cast<AtomicSDNode>(N)->getOrdering() != AtomicOrdering::Release) return false;
return true;

  }
  case 23: {
    // Predicate_atomic_swap_32_acq_rel
    // Predicate_atomic_swap_64_acq_rel
    // Predicate_atomic_load_add_32_acq_rel
    // Predicate_atomic_load_add_64_acq_rel
    // Predicate_atomic_load_and_32_acq_rel
    // Predicate_atomic_load_and_64_acq_rel
    // Predicate_atomic_load_or_32_acq_rel
    // Predicate_atomic_load_or_64_acq_rel
    // Predicate_atomic_load_xor_32_acq_rel
    // Predicate_atomic_load_xor_64_acq_rel
    // Predicate_atomic_load_max_32_acq_rel
    // Predicate_atomic_load_max_64_acq_rel
    // Predicate_atomic_load_min_32_acq_rel
    // Predicate_atomic_load_min_64_acq_rel
    // Predicate_atomic_load_umax_32_acq_rel
    // Predicate_atomic_load_umax_64_acq_rel
    // Predicate_atomic_load_umin_32_acq_rel
    // Predicate_atomic_load_umin_64_acq_rel
    // Predicate_atomic_load_nand_32_acq_rel
    // Predicate_atomic_load_nand_64_acq_rel
    // Predicate_atomic_cmp_swap_32_acq_rel
    // Predicate_atomic_cmp_swap_64_acq_rel
    // Predicate_atomic_load_sub_32_acq_rel
    // Predicate_atomic_load_sub_64_acq_rel
    SDNode *N = Node;
    (void)N;
if (cast<AtomicSDNode>(N)->getOrdering() != AtomicOrdering::AcquireRelease) return false;
return true;

  }
  case 24: {
    // Predicate_atomic_swap_32_seq_cst
    // Predicate_atomic_swap_64_seq_cst
    // Predicate_atomic_load_add_32_seq_cst
    // Predicate_atomic_load_add_64_seq_cst
    // Predicate_atomic_load_and_32_seq_cst
    // Predicate_atomic_load_and_64_seq_cst
    // Predicate_atomic_load_or_32_seq_cst
    // Predicate_atomic_load_or_64_seq_cst
    // Predicate_atomic_load_xor_32_seq_cst
    // Predicate_atomic_load_xor_64_seq_cst
    // Predicate_atomic_load_max_32_seq_cst
    // Predicate_atomic_load_max_64_seq_cst
    // Predicate_atomic_load_min_32_seq_cst
    // Predicate_atomic_load_min_64_seq_cst
    // Predicate_atomic_load_umax_32_seq_cst
    // Predicate_atomic_load_umax_64_seq_cst
    // Predicate_atomic_load_umin_32_seq_cst
    // Predicate_atomic_load_umin_64_seq_cst
    // Predicate_atomic_load_nand_32_seq_cst
    // Predicate_atomic_load_nand_64_seq_cst
    // Predicate_atomic_cmp_swap_32_seq_cst
    // Predicate_atomic_cmp_swap_64_seq_cst
    // Predicate_atomic_load_sub_32_seq_cst
    // Predicate_atomic_load_sub_64_seq_cst
    SDNode *N = Node;
    (void)N;
if (cast<AtomicSDNode>(N)->getOrdering() != AtomicOrdering::SequentiallyConsistent) return false;
return true;

  }
  }
}
#endif // GET_DAGISEL_BODY

#ifdef GET_DAGISEL_DECL
bool CheckComplexPattern(SDNode *Root, SDNode *Parent,
      SDValue N, unsigned PatternNo,
      SmallVectorImpl<std::pair<SDValue, SDNode*>> &Result) override;
#endif
#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
bool DAGISEL_CLASS_COLONCOLON CheckComplexPattern(SDNode *Root, SDNode *Parent,
      SDValue N, unsigned PatternNo,
      SmallVectorImpl<std::pair<SDValue, SDNode*>> &Result)
#if DAGISEL_INLINE
  override
#endif
 {
  unsigned NextRes = Result.size();
  switch (PatternNo) {
  default: llvm_unreachable("Invalid pattern # in table?");
  case 0:
    Result.resize(NextRes+1);
  return SelectAddrFI(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: {  // HI20
    ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());

  return CurDAG->getTargetConstant(((N->getZExtValue()+0x800) >> 12) & 0xfffff,
                                   SDLoc(N), N->getValueType(0));

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

  return CurDAG->getTargetConstant(SignExtend64<12>(N->getZExtValue()),
                                   SDLoc(N), N->getValueType(0));

  }
  }
}
#endif // GET_DAGISEL_BODY


#ifdef DAGISEL_INLINE
#undef DAGISEL_INLINE
#endif
#ifdef DAGISEL_CLASS_COLONCOLON
#undef DAGISEL_CLASS_COLONCOLON
#endif
#ifdef GET_DAGISEL_DECL
#undef GET_DAGISEL_DECL
#endif
#ifdef GET_DAGISEL_BODY
#undef GET_DAGISEL_BODY
#endif
